package org.aperteworkflow.editor.processeditor; import java.util.Map; import org.aperteworkflow.editor.domain.ProcessConfig; import org.aperteworkflow.editor.json.ProcessConfigJSONHandler; import org.aperteworkflow.editor.stepeditor.JavaScriptHelper; import org.aperteworkflow.editor.vaadin.GenericEditorApplication; import pl.net.bluesoft.rnd.util.i18n.I18NSource; import com.vaadin.terminal.ParameterHandler; import com.vaadin.ui.Window; /** * @author kdowbecki@bluesoft.net.pl */ public class ProcessEditorApplication extends GenericEditorApplication implements ParameterHandler { private static final String CALLBACK_URL_PARAM_NAME = "callbackUrl"; private static final String PROCESS_CONFIG_PARAM_NAME = "processConfig"; private ProcessConfig processConfig; private String callbackUrl; private String jsonProcessConfig; private Window mainWindow; private ProcessEditorPanel processEditorPanel; private JavaScriptHelper mainWindowJavaScriptHelper; @Override public void init() { super.init(); I18NSource messages = I18NSource.ThreadUtil.getThreadI18nSource(); mainWindow = new Window(messages.getMessage("process.editor.title")); mainWindow.addParameterHandler(this); mainWindowJavaScriptHelper = new JavaScriptHelper(mainWindow); mainWindowJavaScriptHelper.preventWindowClosing(); setMainWindow(mainWindow); } @Override public void handleParameters(Map<String, String[]> parameters) { if (parameters.isEmpty()) { return; } String callbackUrl = getStringParameterByName(CALLBACK_URL_PARAM_NAME, parameters); if (callbackUrl == null) { return; } this.callbackUrl = callbackUrl; jsonProcessConfig = getStringParameterByName(PROCESS_CONFIG_PARAM_NAME, parameters); refreshApplication(); } /** * Reinitialize the application from the last received configuration */ private void refreshApplication() { mainWindow.removeAllComponents(); processConfig = ProcessConfigJSONHandler.getInstance().toObject(jsonProcessConfig); processEditorPanel = new ProcessEditorPanel(); processEditorPanel.setProcessConfig(processConfig); processEditorPanel.loadData(); mainWindow.addComponent(processEditorPanel); } /** * Save and callback the signavio editor */ public void saveAndCallback() { processEditorPanel.saveData(); String json = ProcessConfigJSONHandler.getInstance().toJSON(processConfig); mainWindowJavaScriptHelper.postAndRedirectProcess(callbackUrl, json); } }