package org.aplikator.client.local.command;
import org.aplikator.client.local.Aplikator;
import org.aplikator.client.local.wizards.WizardSupport;
import org.aplikator.client.local.wizards.WizardSupportCallbacks;
import org.aplikator.client.shared.data.ClientContext;
import org.aplikator.client.shared.descriptor.FunctionDTO;
import org.aplikator.client.shared.descriptor.WizardPageDTO;
import org.aplikator.client.shared.rpc.AplikatorErrorCallback;
import org.aplikator.client.shared.rpc.AplikatorService;
import org.jboss.errai.common.client.api.RemoteCallback;
import org.jboss.errai.enterprise.client.jaxrs.api.RestClient;
import org.jboss.errai.ui.nav.client.local.Page;
import org.jboss.errai.ui.nav.client.local.PageShown;
import org.jboss.errai.ui.nav.client.local.PageState;
import com.google.gwt.user.client.History;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.SimplePanel;
@Page(path = "execute/{functionID}")
public class ExecuteFunction extends Composite implements WizardSupportCallbacks {
@PageState
private String functionID;
private SimplePanel dummy = new SimplePanel();
private FunctionDTO function;
private WizardSupport wizardSupport;
public ExecuteFunction() {
initWidget(dummy);
}
@PageShown
public void start() {
if (function == null) {
RestClient.create(AplikatorService.class,
new RemoteCallback<FunctionDTO>() {
@Override
public void callback(FunctionDTO response) {
ExecuteFunction.this.function = response;
drawPanel();
}
},
new AplikatorErrorCallback("aplikator.function.error")
).getFunction(functionID);
} else {
drawPanel();
}
}
private void drawPanel() {
ClientContext clientContext = new ClientContext();
clientContext.setUser(Aplikator.application.getUsername());
clientContext.setLocale(Aplikator.application.getLocale());
this.wizardSupport = new WizardSupport(function, clientContext, this);
this.wizardSupport.changePageRequest(true);
History.back();
}
@Override
public void wizardPageCallback(WizardPageDTO response, boolean forw) {
}
@Override
public void runBeforeFunctionCallback() {
}
@Override
public void runAfterFunctionCallback() {
}
}