package org.aplikator.client.local.widgets; 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.gwtbootstrap3.client.ui.Button; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; public class FunctionButtonWidget extends Button implements WizardSupportCallbacks { private WizardSupport wizardSupport; final FormWidget containingForm; public FunctionButtonWidget(final FunctionDTO function, final FormWidget containingForm) { this.containingForm = containingForm; ClientContext clientContext = new ClientContext(); clientContext.setUser(Aplikator.application.getUsername()); clientContext.setLocale(Aplikator.application.getLocale()); clientContext.setCurrentRecord(containingForm.getOriginal()); clientContext.setView(containingForm.getView()); this.wizardSupport = new WizardSupport(function, clientContext, this); if (containingForm != null) { containingForm.registerFunctionButton(this); } this.setText(function.getLocalizedName()); this.addStyleName("functionButton"); this.addClickHandler(new ClickHandler() { public void onClick(ClickEvent event) { if (containingForm != null) { wizardSupport.getClientContext().setCurrentRecord(containingForm.getOriginal()); } wizardSupport.changePageRequest(true); } }); } @Override public void wizardPageCallback(WizardPageDTO response, boolean forw) { } @Override public void runBeforeFunctionCallback() { this.setEnabled(false); } @Override public void runAfterFunctionCallback() { this.setEnabled(true); if (containingForm != null) { this.containingForm.refreshRecord(); } } }