package autotest.tko;
import autotest.common.JsonRpcCallback;
import autotest.common.ui.TabView;
import autotest.tko.PreconfigSelector.PreconfigHandler;
import autotest.tko.TableView.TableSwitchListener;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONValue;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
import java.util.Map;
public abstract class DynamicGraphingFrontend extends GraphingFrontend
implements ClickHandler, PreconfigHandler {
protected PreconfigSelector preconfig;
protected Button graphButton = new Button("Graph");
protected Plot plot;
private TabView parent;
public DynamicGraphingFrontend(final TabView parent, Plot plot, String preconfigType) {
this.parent = parent;
this.plot = plot;
plot.setDrilldownTrigger();
preconfig = new PreconfigSelector(preconfigType, this);
graphButton.addClickHandler(this);
}
@Override
public void onClick(ClickEvent event) {
if (event.getSource() != graphButton) {
super.onClick(event);
return;
}
parent.updateHistory();
plot.setVisible(false);
embeddingLink.setVisible(false);
graphButton.setEnabled(false);
JSONObject params = buildParams();
if (params == null) {
graphButton.setEnabled(true);
return;
}
plot.refresh(params, new JsonRpcCallback() {
@Override
public void onSuccess(JSONValue result) {
plot.setVisible(true);
embeddingLink.setVisible(true);
graphButton.setEnabled(true);
}
@Override
public void onError(JSONObject errorObject) {
super.onError(errorObject);
graphButton.setEnabled(true);
}
});
}
protected abstract JSONObject buildParams();
@Override
public void refresh() {
// Nothing to refresh
}
protected void commonInitialization() {
table.setWidget(table.getRowCount(), 1, graphButton);
table.setWidget(table.getRowCount(), 0, plot);
table.getFlexCellFormatter().setColSpan(table.getRowCount() - 1, 0, 3);
table.setWidget(table.getRowCount(), 2, embeddingLink);
table.getFlexCellFormatter().setHorizontalAlignment(
table.getRowCount() - 1, 2, HasHorizontalAlignment.ALIGN_RIGHT);
plot.setVisible(false);
embeddingLink.setVisible(false);
initWidget(table);
}
public void handlePreconfig(Map<String, String> preconfigParameters) {
handleHistoryArguments(preconfigParameters);
}
@Override
protected void setListener(TableSwitchListener listener) {
super.setListener(listener);
plot.setListener(listener);
}
}