/* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.activiti.explorer.ui.process;
import org.activiti.engine.form.StartFormData;
import org.activiti.explorer.ExplorerApp;
import org.activiti.explorer.Messages;
import org.activiti.explorer.ui.AbstractPage;
import org.activiti.explorer.ui.form.FormPropertiesEventListener;
import org.activiti.explorer.ui.form.FormPropertiesForm;
import org.activiti.explorer.ui.form.FormPropertiesForm.FormPropertiesEvent;
import org.activiti.explorer.ui.process.listener.ConvertProcessDefinitionToModelClickListener;
import org.activiti.explorer.ui.process.listener.StartProcessInstanceClickListener;
import com.vaadin.ui.Button;
/**
* Panel showing process definition detail.
*
* @author Frederik Heremans
* @author Joram Barrez
*/
public class ProcessDefinitionDetailPanel extends AbstractProcessDefinitionDetailPanel {
private static final long serialVersionUID = 1L;
protected Button startProcessInstanceButton;
protected Button editProcessDefinitionButton;
protected FormPropertiesForm processDefinitionStartForm;
public ProcessDefinitionDetailPanel(String processDefinitionId, ProcessDefinitionPage processDefinitionPage) {
super(processDefinitionId, processDefinitionPage);
}
protected void initActions(AbstractPage parentPage) {
ProcessDefinitionPage processDefinitionPage = (ProcessDefinitionPage) parentPage;
startProcessInstanceButton = new Button(i18nManager.getMessage(Messages.PROCESS_START));
startProcessInstanceButton.addListener(new StartProcessInstanceClickListener(processDefinition, processDefinitionPage));
editProcessDefinitionButton = new Button(i18nManager.getMessage(Messages.PROCESS_CONVERT));
editProcessDefinitionButton.addListener(new ConvertProcessDefinitionToModelClickListener(processDefinition));
if(processDefinition.getDiagramResourceName() == null) {
editProcessDefinitionButton.setEnabled(false);
}
// Clear toolbar and add 'start' button
processDefinitionPage.getToolBar().removeAllButtons();
processDefinitionPage.getToolBar().addButton(startProcessInstanceButton);
processDefinitionPage.getToolBar().addButton(editProcessDefinitionButton);
}
public void showProcessStartForm(StartFormData startFormData) {
if(processDefinitionStartForm == null) {
processDefinitionStartForm = new FormPropertiesForm();
processDefinitionStartForm.setSubmitButtonCaption("Start process");
processDefinitionStartForm.setCancelButtonCaption("Cancel");
// When form is submitted/cancelled, show the info again
processDefinitionStartForm.addListener(new FormPropertiesEventListener() {
private static final long serialVersionUID = 1L;
protected void handleFormSubmit(FormPropertiesEvent event) {
formService.submitStartFormData(processDefinition.getId(), event.getFormProperties());
// Show notification
ExplorerApp.get().getMainWindow().showNotification("Process '" +
getProcessDisplayName(processDefinition) + "' started successfully");
initProcessDefinitionInfo();
}
protected void handleFormCancel(FormPropertiesEvent event) {
initProcessDefinitionInfo();
}
});
}
processDefinitionStartForm.setFormProperties(startFormData.getFormProperties());
startProcessInstanceButton.setEnabled(false);
detailContainer.removeAllComponents();
detailContainer.addComponent(processDefinitionStartForm);
}
@Override
public void initProcessDefinitionInfo() {
super.initProcessDefinitionInfo();
if (startProcessInstanceButton != null) {
startProcessInstanceButton.setEnabled(true);
}
}
}