package org.jbpm.gd.jpdl.properties; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.CTabFolder; import org.eclipse.swt.custom.CTabItem; import org.eclipse.swt.events.FocusEvent; import org.eclipse.swt.events.FocusListener; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.layout.FormAttachment; import org.eclipse.swt.layout.FormData; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory; import org.jbpm.gd.common.properties.NamedElementConfigurationComposite; import org.jbpm.gd.jpdl.model.Swimlane; public class SwimlaneConfigurationComposite implements SelectionListener, FocusListener { public static SwimlaneConfigurationComposite create(TabbedPropertySheetWidgetFactory widgetFactory, Composite parent) { SwimlaneConfigurationComposite result = new SwimlaneConfigurationComposite(); result.widgetFactory = widgetFactory; result.parent = parent; result.create(); return result; } CTabFolder swimlaneInfoTabFolder; CTabItem assignmentTabItem; NamedElementConfigurationComposite generalConfigurationComposite; AssignmentConfigurationComposite assignmentConfigurationComposite; private TabbedPropertySheetWidgetFactory widgetFactory; private Composite parent; private Swimlane swimlane; private SwimlaneConfigurationComposite() {} public void setSwimlane(Swimlane swimlane) { if (this.swimlane == swimlane) return; unhookListeners(); this.swimlane = swimlane; clearControls(); if (swimlane != null) { updateControls(); hookListeners(); } } private void hookListeners() { } private void unhookListeners() { } private void clearControls() { generalConfigurationComposite.setNamedElement(null); assignmentConfigurationComposite.setAssignable(null); } private void updateControls() { generalConfigurationComposite.setNamedElement(swimlane); assignmentConfigurationComposite.setAssignable(swimlane); } private void create() { swimlaneInfoTabFolder = widgetFactory.createTabFolder(parent, SWT.TOP | SWT.BORDER); swimlaneInfoTabFolder.setLayoutData(createTaskInfoTabFolderLayoutData()); createGeneralTabItem(); createAssignmentTabItem(); swimlaneInfoTabFolder.setSelection(0); } private void createAssignmentTabItem() { CTabItem assignmentTabItem = widgetFactory.createTabItem(swimlaneInfoTabFolder, SWT.NORMAL); assignmentTabItem.setText("Assignment"); Composite assignmentTabControl = widgetFactory.createFlatFormComposite(swimlaneInfoTabFolder); assignmentConfigurationComposite = AssignmentConfigurationComposite.create(widgetFactory, assignmentTabControl); assignmentTabItem.setControl(assignmentTabControl); } private void createGeneralTabItem() { CTabItem generalTabItem = widgetFactory.createTabItem(swimlaneInfoTabFolder, SWT.NORMAL); generalTabItem.setText("General"); Composite generalTabControl = widgetFactory.createFlatFormComposite(swimlaneInfoTabFolder); generalConfigurationComposite = NamedElementConfigurationComposite.create(widgetFactory, generalTabControl); generalTabItem.setControl(generalTabControl); } private FormData createTaskInfoTabFolderLayoutData() { FormData result = new FormData(); result.left = new FormAttachment(0, 0); result.right = new FormAttachment(100, 0); result.top = new FormAttachment(0, 0); result.bottom = new FormAttachment(100, 0); return result; } public void widgetDefaultSelected(SelectionEvent e) { } public void widgetSelected(SelectionEvent e) { } public void focusGained(FocusEvent e) { } public void focusLost(FocusEvent e) { } }