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.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.jpdl.model.EsbElement;
public class EsbConfigurationComposite {
public static EsbConfigurationComposite create(TabbedPropertySheetWidgetFactory widgetFactory, Composite parent) {
EsbConfigurationComposite result = new EsbConfigurationComposite();
result.widgetFactory = widgetFactory;
result.parent = parent;
result.create();
return result;
}
private TabbedPropertySheetWidgetFactory widgetFactory;
private Composite parent;
private EsbElement esbElement;
private CTabFolder actionTabFolder;
private CTabItem outputTabItem;
private Composite outputTabControl;
private EsbGeneralConfigurationComposite esbGeneralConfigurationComposite;
private EsbInputOutputConfigurationComposite esbInputConfigurationComposite;
private EsbInputOutputConfigurationComposite esbOutputConfigurationComposite;
public void setEsbElement(EsbElement esbElement) {
if (this.esbElement == esbElement) return;
unhookListeners();
clearControls();
this.esbElement = esbElement;
if (esbElement != null) {
updateControls();
hookListeners();
}
}
public EsbElement getEsbElement() {
return esbElement;
}
private void unhookListeners() {
}
private void hookListeners() {
}
private void clearControls() {
esbGeneralConfigurationComposite.setEsbElement(null);
esbInputConfigurationComposite.setEsbElement(null);
if (outputTabItem != null) {
esbOutputConfigurationComposite.setEsbElement(null);
outputTabItem.dispose();
}
}
private void updateControls() {
esbGeneralConfigurationComposite.setEsbElement(esbElement);
esbInputConfigurationComposite.setEsbElement(esbElement);
if (!esbElement.isOneWay()) {
createOutputTabItem();
esbOutputConfigurationComposite.setEsbElement(esbElement);
}
}
private void create() {
actionTabFolder = widgetFactory.createTabFolder(parent, SWT.TOP | SWT.BORDER);
actionTabFolder.setLayoutData(createEsbNodeTabFolderLayoutData());
createGeneralTabItem();
createInputTabItem();
actionTabFolder.setSelection(0);
}
private void createGeneralTabItem() {
CTabItem generalTabItem = widgetFactory.createTabItem(actionTabFolder, SWT.NORMAL);
generalTabItem.setText("General");
Composite generalTabControl = widgetFactory.createFlatFormComposite(actionTabFolder);
esbGeneralConfigurationComposite =
EsbGeneralConfigurationComposite.create(widgetFactory, generalTabControl);
generalTabItem.setControl(generalTabControl);
}
private void createInputTabItem() {
CTabItem inputTabItem = widgetFactory.createTabItem(actionTabFolder, SWT.NORMAL);
inputTabItem.setText("Input");
Composite inputTabControl = widgetFactory.createFlatFormComposite(actionTabFolder);
esbInputConfigurationComposite =
EsbInputOutputConfigurationComposite.create(
widgetFactory,
inputTabControl,
EsbInputOutputConfigurationComposite.INPUT_CONFIGURATION);
inputTabItem.setControl(inputTabControl);
}
private void createOutputTabItem() {
outputTabItem = widgetFactory.createTabItem(actionTabFolder, SWT.NORMAL);
outputTabItem.setText("Output");
if (outputTabControl == null) {
outputTabControl = widgetFactory.createFlatFormComposite(actionTabFolder);
esbOutputConfigurationComposite =
EsbInputOutputConfigurationComposite.create(
widgetFactory,
outputTabControl,
EsbInputOutputConfigurationComposite.OUTPUT_CONFIGURATION);
}
outputTabItem.setControl(outputTabControl);
}
private FormData createEsbNodeTabFolderLayoutData() {
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;
}
}