/** * Copyright 2010 JBoss Inc * * 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.drools.eclipse.flow.common.editor.editpart.work; import org.drools.eclipse.flow.common.view.property.EditBeanDialog; import org.drools.process.core.Work; import org.drools.process.core.WorkDefinition; import org.drools.process.core.WorkEditor; import org.drools.process.core.impl.WorkImpl; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; /** * Custom Work editor for human tasks. * * @author <a href="mailto:kris_verlaenen@hotmail.com">Kris Verlaenen</a> */ public class HumanTaskCustomEditor extends EditBeanDialog<Work> implements WorkEditor { private Text nameText; private Text actorText; private Text commentText; private Text priorityText; private Button skippableButton; private Text contentText; public HumanTaskCustomEditor(Shell parentShell) { super(parentShell, "Human Task Editor"); setBlockOnOpen(true); } protected Point getInitialSize() { return new Point(400, 400); } protected Control createDialogArea(Composite parent) { Composite composite = (Composite) super.createDialogArea(parent); GridLayout gridLayout = new GridLayout(); gridLayout.numColumns = 2; composite.setLayout(gridLayout); Work work = (Work) getValue(); Label nameLabel = new Label(composite, SWT.NONE); nameLabel.setText("Name: "); nameText = new Text(composite, SWT.NONE); GridData gridData = new GridData(); gridData.grabExcessHorizontalSpace = true; gridData.horizontalAlignment = GridData.FILL; nameText.setLayoutData(gridData); String name = (String) work.getParameter("TaskName"); nameText.setText(name == null ? "" : name); Label label = new Label(composite, SWT.NONE); label.setText("Actor(s): "); actorText = new Text(composite, SWT.NONE); gridData = new GridData(); gridData.grabExcessHorizontalSpace = true; gridData.horizontalAlignment = GridData.FILL; actorText.setLayoutData(gridData); String value = (String) work.getParameter("ActorId"); actorText.setText(value == null ? "" : value); label = new Label(composite, SWT.NONE); label.setText("Comment: "); commentText = new Text(composite, SWT.MULTI); gridData = new GridData(); gridData.grabExcessHorizontalSpace = true; gridData.grabExcessVerticalSpace = true; gridData.horizontalAlignment = GridData.FILL; gridData.verticalAlignment = GridData.FILL; commentText.setLayoutData(gridData); value = (String) work.getParameter("Comment"); commentText.setText(value == null ? "" : value.toString()); label = new Label(composite, SWT.NONE); label.setText("Priority: "); priorityText = new Text(composite, SWT.NONE); gridData = new GridData(); gridData.grabExcessHorizontalSpace = true; gridData.horizontalAlignment = GridData.FILL; priorityText.setLayoutData(gridData); value = (String) work.getParameter("Priority"); priorityText.setText(value == null ? "" : value); skippableButton = new Button(composite, SWT.CHECK | SWT.LEFT); skippableButton.setText("Skippable"); value = (String) work.getParameter("Skippable"); skippableButton.setSelection("true".equals(value)); gridData = new GridData(); gridData.horizontalSpan = 2; skippableButton.setLayoutData(gridData); label = new Label(composite, SWT.NONE); label.setText("Content: "); contentText = new Text(composite, SWT.MULTI); gridData = new GridData(); gridData.grabExcessHorizontalSpace = true; gridData.grabExcessVerticalSpace = true; gridData.horizontalAlignment = GridData.FILL; gridData.verticalAlignment = GridData.FILL; contentText.setLayoutData(gridData); value = (String) work.getParameter("Content"); contentText.setText(value == null ? "" : value.toString()); return composite; } protected Work updateValue(Work value) { Work work = new WorkImpl(); work.setName("Human Task"); work.setParameter("TaskName", nameText.getText()); work.setParameter("ActorId", actorText.getText()); work.setParameter("Comment", commentText.getText()); work.setParameter("Priority", priorityText.getText()); work.setParameter("Skippable", skippableButton.getSelection() + ""); work.setParameter("Content", contentText.getText()); work.setParameterDefinitions(((Work) value).getParameterDefinitions()); return work; } public Work getWork() { return (Work) getValue(); } public void setWork(Work work) { setValue(work); } public void setWorkDefinition(WorkDefinition workDefinition) { } public boolean show() { int result = open(); return result == OK; } }