package autotest.tko;
import autotest.common.JsonRpcCallback;
import autotest.common.JsonRpcProxy;
import autotest.common.StaticDataRepository;
import autotest.common.Utils;
import autotest.common.ui.ExtendedListBox;
import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ChangeHandler;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONString;
import com.google.gwt.json.client.JSONValue;
import com.google.gwt.user.client.ui.Composite;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class PreconfigSelector extends Composite {
public static final String NO_PRECONFIG = "----------";
public static interface PreconfigHandler {
public void handlePreconfig(Map<String, String> preconfigParameters);
}
private ExtendedListBox selector = new ExtendedListBox();
private JsonRpcProxy rpcProxy = JsonRpcProxy.getProxy();
private String preconfigType;
private PreconfigHandler listener;
public PreconfigSelector(final String preconfigType, final PreconfigHandler listener) {
this.preconfigType = preconfigType;
this.listener = listener;
initializePreconfigList(preconfigType);
selector.addChangeHandler(new ChangeHandler() {
public void onChange(ChangeEvent event) {
loadSelectedPreconfig();
}
});
initWidget(selector);
}
private void initializePreconfigList(final String preconfigType) {
selector.addItem(NO_PRECONFIG);
StaticDataRepository staticData = StaticDataRepository.getRepository();
JSONObject preconfigs = staticData.getData("preconfigs").isObject();
Set<String> keys = preconfigs.get(preconfigType).isObject().keySet();
for (String key : keys) {
selector.addItem(key);
}
}
private void loadSelectedPreconfig() {
String name = selector.getSelectedValue();
if (name.equals(NO_PRECONFIG)) {
return;
}
selector.setSelectedIndex(0);
JSONObject params = new JSONObject();
params.put("name", new JSONString(name));
params.put("type", new JSONString(preconfigType));
rpcProxy.rpcCall("get_preconfig", params, new JsonRpcCallback() {
@Override
public void onSuccess(JSONValue result) {
JSONObject config = result.isObject();
Map<String, String> map = new HashMap<String, String>();
for (String key : config.keySet()) {
map.put(key, Utils.jsonToString(config.get(key)));
}
listener.handlePreconfig(map);
}
});
}
}