stash changes
diff --git a/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/adapters/InsertionAdapter.java b/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/adapters/InsertionAdapter.java
index 96609a0..fead7e2 100644
--- a/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/adapters/InsertionAdapter.java
+++ b/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/adapters/InsertionAdapter.java
@@ -214,7 +214,7 @@
}
TransactionalEditingDomainImpl domain = (TransactionalEditingDomainImpl)
TransactionUtil.getEditingDomain(resource);
- if (domain.getActiveTransaction().isActive())
+ if (domain.getActiveTransaction()!=null && domain.getActiveTransaction().isActive())
return null;
return domain;
}
diff --git a/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/clad/AbstractListComposite.java b/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/clad/AbstractListComposite.java
index bca83cd..f971add 100644
--- a/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/clad/AbstractListComposite.java
+++ b/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/clad/AbstractListComposite.java
@@ -23,18 +23,15 @@
import org.eclipse.bpmn2.modeler.core.utils.ModelUtil;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.util.EList;
-import org.eclipse.emf.common.util.TreeIterator;
import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.ecore.util.BasicFeatureMap;
-import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.util.FeatureMap;
import org.eclipse.emf.ecore.util.FeatureMap.Entry;
import org.eclipse.emf.edit.provider.INotifyChangedListener;
import org.eclipse.emf.transaction.RecordingCommand;
-import org.eclipse.emf.transaction.ResourceSetChangeEvent;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.ToolBarManager;
import org.eclipse.jface.resource.ImageDescriptor;
@@ -45,28 +42,16 @@
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.SashForm;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Cursor;
-import org.eclipse.swt.layout.FillLayout;
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.Display;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.ToolBar;
import org.eclipse.ui.forms.events.ExpansionEvent;
import org.eclipse.ui.forms.events.IExpansionListener;
import org.eclipse.ui.forms.widgets.ExpandableComposite;
import org.eclipse.ui.forms.widgets.Section;
-import org.eclipse.ui.menus.CommandContributionItem;
-import org.eclipse.ui.menus.CommandContributionItemParameter;
import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
/**
@@ -772,4 +757,12 @@
}
return false;
}
+
+ public void setVisible (boolean visible) {
+ super.setVisible(visible);
+ Object data = getLayoutData();
+ if (data instanceof GridData) {
+ ((GridData)data).exclude = !visible;
+ }
+ }
}
diff --git a/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/dialogs/BooleanObjectEditor.java b/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/dialogs/BooleanObjectEditor.java
index bfcaf60..4f1ccd7 100644
--- a/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/dialogs/BooleanObjectEditor.java
+++ b/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/dialogs/BooleanObjectEditor.java
@@ -108,4 +108,11 @@
button.setSelection((Boolean) object.eGet(feature));
}
}
+
+ public void setVisible(boolean visible) {
+ super.setVisible(visible);
+ button.setVisible(visible);
+ GridData data = (GridData)button.getLayoutData();
+ data.exclude = !visible;
+ }
}
diff --git a/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/dialogs/ComboObjectEditor.java b/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/dialogs/ComboObjectEditor.java
index 9e05de9..2e32dcd 100644
--- a/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/dialogs/ComboObjectEditor.java
+++ b/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/dialogs/ComboObjectEditor.java
@@ -57,9 +57,11 @@
public class ComboObjectEditor extends MultivalueObjectEditor {
protected ComboViewer comboViewer;
+ private Composite buttons = null;
private boolean ignoreComboSelections;
private boolean keyPressed = false;
private Button editButton = null;
+ private Button createButton = null;
/**
* @param parent
@@ -129,14 +131,14 @@
});
}
- Composite buttons = null;
+ buttons = null;
if (canEdit || canCreateNew) {
buttons = getToolkit().createComposite(composite);
buttons.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1));
buttons.setLayout(new FillLayout(SWT.HORIZONTAL));
if (canCreateNew) {
- Button createButton = getToolkit().createButton(buttons, null, SWT.PUSH);
+ createButton = getToolkit().createButton(buttons, null, SWT.PUSH);
createButton.setImage( Activator.getDefault().getImage(IConstants.ICON_ADD_20));
createButton.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
@@ -306,4 +308,16 @@
}
}
}
+
+ public void setVisible(boolean visible) {
+ super.setVisible(visible);
+ comboViewer.getCombo().setVisible(visible);
+ GridData data = (GridData)comboViewer.getCombo().getLayoutData();
+ data.exclude = !visible;
+ if (buttons!=null) {
+ buttons.setVisible(visible);
+ data = (GridData)buttons.getLayoutData();
+ data.exclude = !visible;
+ }
+ }
}
diff --git a/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/dialogs/FeatureListObjectEditor.java b/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/dialogs/FeatureListObjectEditor.java
index 93777c0..687558d 100644
--- a/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/dialogs/FeatureListObjectEditor.java
+++ b/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/dialogs/FeatureListObjectEditor.java
@@ -53,6 +53,7 @@
Text text;
List<EObject> references;
+ Composite buttons;
Button editButton;
/**
@@ -81,7 +82,7 @@
boolean canCreateNew = ModelUtil.canCreateNew(object,feature);
if (canEdit || canCreateNew) {
- Composite buttons = getToolkit().createComposite(composite);
+ buttons = getToolkit().createComposite(composite);
buttons.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1));
buttons.setLayout(new FillLayout(SWT.HORIZONTAL));
@@ -178,4 +179,16 @@
updateTextField();
}
}
+
+ public void setVisible(boolean visible) {
+ super.setVisible(visible);
+ text.setVisible(visible);
+ GridData data = (GridData)text.getLayoutData();
+ data.exclude = !visible;
+ if (buttons!=null) {
+ buttons.setVisible(visible);
+ data = (GridData)buttons.getLayoutData();
+ data.exclude = !visible;
+ }
+ }
}
diff --git a/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/dialogs/IntObjectEditor.java b/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/dialogs/IntObjectEditor.java
index 64b86d4..9a08861 100644
--- a/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/dialogs/IntObjectEditor.java
+++ b/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/dialogs/IntObjectEditor.java
@@ -158,4 +158,11 @@
updateText();
}
}
+
+ public void setVisible(boolean visible) {
+ super.setVisible(visible);
+ text.setVisible(visible);
+ GridData data = (GridData)text.getLayoutData();
+ data.exclude = !visible;
+ }
}
diff --git a/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/dialogs/ObjectEditor.java b/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/dialogs/ObjectEditor.java
index 5224d9a..8d7c5b3 100644
--- a/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/dialogs/ObjectEditor.java
+++ b/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/dialogs/ObjectEditor.java
@@ -207,4 +207,14 @@
public void notifyChanged(Notification notification) {
updateLabelDecorator();
}
+
+ public void setVisible(boolean visible) {
+ label.setVisible(visible);
+ GridData data = (GridData)label.getLayoutData();
+ data.exclude = !visible;
+ }
+
+ public boolean isVisible() {
+ return label.isVisible();
+ }
}
diff --git a/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/dialogs/TextObjectEditor.java b/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/dialogs/TextObjectEditor.java
index d87e423..87c082c 100644
--- a/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/dialogs/TextObjectEditor.java
+++ b/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/dialogs/TextObjectEditor.java
@@ -164,4 +164,11 @@
updateText();
}
}
+
+ public void setVisible(boolean visible) {
+ super.setVisible(visible);
+ text.setVisible(visible);
+ GridData data = (GridData)text.getLayoutData();
+ data.exclude = !visible;
+ }
}
diff --git a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/tasks/ActivityDetailComposite.java b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/tasks/ActivityDetailComposite.java
index b5b2544..328e7f7 100644
--- a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/tasks/ActivityDetailComposite.java
+++ b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/tasks/ActivityDetailComposite.java
@@ -173,7 +173,7 @@
if (loopCharacteristics != null) {
loopCharacteristicsComposite = PropertiesCompositeFactory.createDetailComposite(
- loopCharacteristics.eClass().getInstanceClass(), this, SWT.NONE);
+ loopCharacteristics.eClass().getInstanceClass(), composite, SWT.NONE);
loopCharacteristicsComposite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 3, 1));
loopCharacteristicsComposite.setBusinessObject(loopCharacteristics);
loopCharacteristicsComposite.setTitle(loopCharacteristics instanceof StandardLoopCharacteristics ?
diff --git a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/tasks/DataAssociationDetailComposite.java b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/tasks/DataAssociationDetailComposite.java
index 1002d40..119fb26 100644
--- a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/tasks/DataAssociationDetailComposite.java
+++ b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/tasks/DataAssociationDetailComposite.java
@@ -593,10 +593,6 @@
if (!updatingWidgets && transformation==null) {
transformation = FACTORY.createFormalExpression();
InsertionAdapter.add(association, PACKAGE.getDataAssociation_Transformation(), transformation);
-// transformation = modelHandler.createStandby(
-// association,
-// PACKAGE.getDataAssociation_Transformation(),
-// FormalExpression.class);
}
if (transformationDetailsComposite==null) {
transformationDetailsComposite = PropertiesCompositeFactory.createDetailComposite(
@@ -604,7 +600,6 @@
}
transformationDetailsComposite.setBusinessObject(transformation);
transformationDetailsComposite.setTitle("Transformation");
-// transformationDetailsComposite.redrawPage();
}
else {
@@ -676,7 +671,6 @@
}
expressionDetailsComposite.setBusinessObject(expression);//association.getexpression());
expressionDetailsComposite.setTitle("Expression");
-// expressionDetailsComposite.redrawPage();
}
else {
if (expressionComposite!=null) {
@@ -716,10 +710,6 @@
if (!updatingWidgets && transformation==null) {
transformation = FACTORY.createFormalExpression();
InsertionAdapter.add(association, PACKAGE.getDataAssociation_Transformation(), transformation);
-// transformation = modelHandler.createStandby(
-// association,
-// PACKAGE.getDataAssociation_Transformation(),
-// FormalExpression.class);
}
if (transformationDetailsComposite==null) {
@@ -728,7 +718,6 @@
}
transformationDetailsComposite.setBusinessObject(transformation);//association.getTransformation());
transformationDetailsComposite.setTitle("Transformation");
-// transformationDetailsComposite.redrawPage();
if (assignmentsTable!=null)
assignmentsTable.dispose();
diff --git a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/tasks/MultiInstanceLoopCharacteristicsDetailComposite.java b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/tasks/MultiInstanceLoopCharacteristicsDetailComposite.java
index cfbbc51..03658ce 100644
--- a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/tasks/MultiInstanceLoopCharacteristicsDetailComposite.java
+++ b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/tasks/MultiInstanceLoopCharacteristicsDetailComposite.java
@@ -2,49 +2,192 @@
import org.eclipse.bpmn2.Bpmn2Package;
import org.eclipse.bpmn2.DataInput;
+import org.eclipse.bpmn2.MultiInstanceBehavior;
import org.eclipse.bpmn2.MultiInstanceLoopCharacteristics;
import org.eclipse.bpmn2.modeler.core.merrimac.clad.AbstractBpmn2PropertySection;
import org.eclipse.bpmn2.modeler.core.merrimac.clad.AbstractDetailComposite;
+import org.eclipse.bpmn2.modeler.core.merrimac.clad.AbstractListComposite;
import org.eclipse.bpmn2.modeler.core.merrimac.clad.DefaultDetailComposite;
+import org.eclipse.bpmn2.modeler.core.merrimac.clad.DefaultDetailComposite.AbstractPropertiesProvider;
+import org.eclipse.bpmn2.modeler.core.merrimac.dialogs.ComboObjectEditor;
import org.eclipse.bpmn2.modeler.core.merrimac.dialogs.FeatureEditingDialog;
import org.eclipse.bpmn2.modeler.core.merrimac.dialogs.ObjectEditingDialog;
+import org.eclipse.bpmn2.modeler.core.merrimac.dialogs.ObjectEditor;
import org.eclipse.bpmn2.modeler.core.merrimac.dialogs.TextAndButtonObjectEditor;
import org.eclipse.bpmn2.modeler.core.utils.ModelUtil;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.transaction.RecordingCommand;
import org.eclipse.emf.transaction.TransactionalEditingDomain;
import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
-public class MultiInstanceLoopCharacteristicsDetailComposite extends
- DefaultDetailComposite {
+public class MultiInstanceLoopCharacteristicsDetailComposite extends DefaultDetailComposite {
- public MultiInstanceLoopCharacteristicsDetailComposite(Composite parent,
- int style) {
+ ObjectEditor noneBehaviorEditor;
+ ObjectEditor oneBehaviorEditor;
+ AbstractListComposite complexBehaviorList;
+
+ public MultiInstanceLoopCharacteristicsDetailComposite(Composite parent, int style) {
super(parent, style);
}
- public MultiInstanceLoopCharacteristicsDetailComposite(
- AbstractBpmn2PropertySection section) {
+ public MultiInstanceLoopCharacteristicsDetailComposite(AbstractBpmn2PropertySection section) {
super(section);
}
+
+ @Override
+ public AbstractPropertiesProvider getPropertiesProvider(EObject object) {
+ if (propertiesProvider==null) {
+ propertiesProvider = new AbstractPropertiesProvider(object) {
+ String[] properties = new String[] {
+ "anyAttribute",
+ "isSequential", // attr
+ "inputDataItem", // ref
+ "outputDataItem", // ref
+ "completionCondition", // ref
+ "loopCardinality", // ref
+ "loopDataInputRef", // ref
+ "loopDataOutputRef", // ref
+ "behavior", // attr
+ "noneBehaviorEventRef", // ref
+ "oneBehaviorEventRef", // ref
+ "complexBehaviorDefinition", // list
+ };
+
+ @Override
+ public String[] getProperties() {
+ return properties;
+ }
+ };
+ }
+ return propertiesProvider;
+ }
public void createBindings(EObject be) {
- final MultiInstanceLoopCharacteristics lc = (MultiInstanceLoopCharacteristics)be;
+ super.createBindings(be);
+ }
+
+ protected void bindAttribute(Composite parent, EObject object, EAttribute attribute, String label) {
+ if (attribute.getName().equals("behavior")) {
+ ObjectEditor editor = new ComboObjectEditor(this,object,attribute) {
- final EStructuralFeature inputFeature = Bpmn2Package.eINSTANCE.getMultiInstanceLoopCharacteristics_InputDataItem();
- DataIoObjectEditor inputDataItemEditor = new DataIoObjectEditor(be,inputFeature);
- inputDataItemEditor.createControl("Input Paramter");
-
- final EStructuralFeature outputFeature = Bpmn2Package.eINSTANCE.getMultiInstanceLoopCharacteristics_OutputDataItem();
- DataIoObjectEditor outputDataItemEditor = new DataIoObjectEditor(be,outputFeature);
- outputDataItemEditor.createControl("Output Paramter");
+ @Override
+ protected boolean updateObject(Object result) {
+ MultiInstanceLoopCharacteristics lc = (MultiInstanceLoopCharacteristics)object;
+ boolean update = super.updateObject(result);
+ if (update) {
+ switch (lc.getBehavior()) {
+ case ALL:
+ if (noneBehaviorEditor!=null) {
+ noneBehaviorEditor.setVisible(false);
+ }
+ if (oneBehaviorEditor!=null) {
+ oneBehaviorEditor.setVisible(false);
+ }
+ if (complexBehaviorList!=null) {
+ complexBehaviorList.setVisible(false);
+ }
+ break;
+ case NONE:
+ if (noneBehaviorEditor!=null) {
+ noneBehaviorEditor.setVisible(true);
+ }
+ if (oneBehaviorEditor!=null) {
+ oneBehaviorEditor.setVisible(false);
+ }
+ if (complexBehaviorList!=null) {
+ complexBehaviorList.setVisible(false);
+ }
+ break;
+ case ONE:
+ if (noneBehaviorEditor!=null) {
+ noneBehaviorEditor.setVisible(false);
+ }
+ if (oneBehaviorEditor!=null) {
+ oneBehaviorEditor.setVisible(true);
+ }
+ if (complexBehaviorList!=null) {
+ complexBehaviorList.setVisible(false);
+ }
+ break;
+ case COMPLEX:
+ if (noneBehaviorEditor!=null) {
+ noneBehaviorEditor.setVisible(false);
+ }
+ if (oneBehaviorEditor!=null) {
+ oneBehaviorEditor.setVisible(false);
+ }
+ if (complexBehaviorList!=null) {
+ complexBehaviorList.setVisible(true);
+ }
+ break;
+ }
+ redrawPage();
+ }
+ return update;
+ }
+ };
+ editor.createControl(parent,label);
+ }
+ else
+ super.bindAttribute(parent, object, attribute, label);
+ }
+
+ protected void bindReference(Composite parent, EObject object, EReference reference) {
+ MultiInstanceLoopCharacteristics lc = (MultiInstanceLoopCharacteristics)object;
+ EStructuralFeature f;
+
+ if (reference.getName().equals("inputDataItem")) {
+ f = Bpmn2Package.eINSTANCE.getMultiInstanceLoopCharacteristics_InputDataItem();
+ if (isModelObjectEnabled(lc.eClass(), f)) {
+ DataIoObjectEditor inputDataItemEditor = new DataIoObjectEditor(lc,f);
+ inputDataItemEditor.createControl(getAttributesParent(), "Input Paramter");
+ }
+ }
+ else if (reference.getName().equals("outputDataItem")) {
+ f = Bpmn2Package.eINSTANCE.getMultiInstanceLoopCharacteristics_OutputDataItem();
+ if (isModelObjectEnabled(lc.eClass(), f)) {
+ DataIoObjectEditor outputDataItemEditor = new DataIoObjectEditor(lc,f);
+ outputDataItemEditor.createControl(getAttributesParent(), "Output Paramter");
+ }
+ }
+ else if (reference.getName().equals("noneBehaviorEventRef")) {
+ String displayName = ModelUtil.getLabel(object, reference);
+ noneBehaviorEditor = new ComboObjectEditor(this,object,reference);
+ noneBehaviorEditor.createControl(parent,displayName);
+ noneBehaviorEditor.setVisible( lc.getBehavior() == MultiInstanceBehavior.NONE );
+
+ }
+ else if (reference.getName().equals("oneBehaviorEventRef")) {
+ String displayName = ModelUtil.getLabel(object, reference);
+ oneBehaviorEditor = new ComboObjectEditor(this,object,reference);
+ oneBehaviorEditor.createControl(parent,displayName);
+ oneBehaviorEditor.setVisible( lc.getBehavior() == MultiInstanceBehavior.ONE );
+ }
+ else
+ super.bindReference(parent, object, reference);
+ }
+
+ protected AbstractListComposite bindList(EObject object, EStructuralFeature feature, EClass listItemClass) {
+ MultiInstanceLoopCharacteristics lc = (MultiInstanceLoopCharacteristics)object;
+ if (feature.getName().equals("complexBehaviorDefinition")) {
+ complexBehaviorList = super.bindList(object, feature, listItemClass);
+ complexBehaviorList.setVisible( lc.getBehavior() == MultiInstanceBehavior.COMPLEX );
+ return complexBehaviorList;
+ }
+ else
+ return super.bindList(object, feature, listItemClass);
}
private class DataIoObjectEditor extends TextAndButtonObjectEditor {
- public DataIoObjectEditor(EObject object, EStructuralFeature feature) {
+ public DataIoObjectEditor(MultiInstanceLoopCharacteristics object, EStructuralFeature feature) {
super(MultiInstanceLoopCharacteristicsDetailComposite.this, object, feature);
}
diff --git a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/tasks/StandardLoopCharacteristicsDetailComposite.java b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/tasks/StandardLoopCharacteristicsDetailComposite.java
index 0c10e42..349dc0c 100644
--- a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/tasks/StandardLoopCharacteristicsDetailComposite.java
+++ b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/tasks/StandardLoopCharacteristicsDetailComposite.java
@@ -2,8 +2,11 @@
import org.eclipse.bpmn2.Expression;
import org.eclipse.bpmn2.StandardLoopCharacteristics;
+import org.eclipse.bpmn2.modeler.core.adapters.InsertionAdapter;
import org.eclipse.bpmn2.modeler.core.merrimac.clad.AbstractBpmn2PropertySection;
+import org.eclipse.bpmn2.modeler.core.merrimac.clad.AbstractDetailComposite;
import org.eclipse.bpmn2.modeler.core.merrimac.clad.DefaultDetailComposite;
+import org.eclipse.bpmn2.modeler.core.merrimac.clad.PropertiesCompositeFactory;
import org.eclipse.bpmn2.modeler.core.utils.ModelUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.transaction.RecordingCommand;
@@ -15,102 +18,56 @@
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
-public class StandardLoopCharacteristicsDetailComposite extends
- DefaultDetailComposite {
+public class StandardLoopCharacteristicsDetailComposite extends DefaultDetailComposite {
- private Button addRemoveLoopConditionExpressionButton;
- private Button addRemoveLoopMaximumExpressionButton;
-
- public StandardLoopCharacteristicsDetailComposite(Composite parent,
- int style) {
+ AbstractDetailComposite loopConditionComposite = null;
+ AbstractDetailComposite loopMaximumComposite = null;
+
+ public StandardLoopCharacteristicsDetailComposite(Composite parent, int style) {
super(parent, style);
}
- public StandardLoopCharacteristicsDetailComposite(
- AbstractBpmn2PropertySection section) {
+ public StandardLoopCharacteristicsDetailComposite(AbstractBpmn2PropertySection section) {
super(section);
}
@Override
- public void cleanBindings() {
+ protected void cleanBindings() {
super.cleanBindings();
- addRemoveLoopConditionExpressionButton = null;
- addRemoveLoopMaximumExpressionButton = null;
+ loopConditionComposite = null;
+ loopMaximumComposite = null;
}
+ public Composite getAttributesParent() {
+ return super.getAttributesParent();
+ }
+
public void createBindings(EObject be) {
+ getAttributesParent();
+
bindAttribute(be,"testBefore");
if (be instanceof StandardLoopCharacteristics) {
- final StandardLoopCharacteristics standardLoop = (StandardLoopCharacteristics) be;
-
- addRemoveLoopConditionExpressionButton = new Button(this, SWT.PUSH);
- addRemoveLoopConditionExpressionButton.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false, 3, 1));
- addRemoveLoopConditionExpressionButton.addSelectionListener(new SelectionAdapter() {
-
- public void widgetSelected(SelectionEvent e) {
- @SuppressWarnings("restriction")
- TransactionalEditingDomain domain = getDiagramEditor().getEditingDomain();
- domain.getCommandStack().execute(new RecordingCommand(domain) {
- @Override
- protected void doExecute() {
- if (standardLoop.getLoopCondition() !=null)
- standardLoop.setLoopCondition(null);
- else {
- Expression exp = FACTORY.createFormalExpression();
- standardLoop.setLoopCondition(exp);
- ModelUtil.setID(exp);
- }
- setBusinessObject(standardLoop);
- }
- });
- }
- });
-
- addRemoveLoopMaximumExpressionButton = new Button(this, SWT.PUSH);
- addRemoveLoopMaximumExpressionButton.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false, 3, 1));
- addRemoveLoopMaximumExpressionButton.addSelectionListener(new SelectionAdapter() {
-
- public void widgetSelected(SelectionEvent e) {
- @SuppressWarnings("restriction")
- TransactionalEditingDomain domain = getDiagramEditor().getEditingDomain();
- domain.getCommandStack().execute(new RecordingCommand(domain) {
- @Override
- protected void doExecute() {
- if (standardLoop.getLoopMaximum() !=null)
- standardLoop.setLoopMaximum(null);
- else {
- Expression exp = FACTORY.createFormalExpression();
- standardLoop.setLoopMaximum(exp);
- ModelUtil.setID(exp);
- }
- setBusinessObject(standardLoop);
- }
- });
- }
- });
-
- Expression loopexp = (Expression) standardLoop.getLoopCondition();
- Expression maxexp = (Expression) standardLoop.getLoopMaximum();
-
- if (loopexp != null) {
- addRemoveLoopConditionExpressionButton.setText("Remove Loop Condition");
- this.businessObject = loopexp;
- super.createBindings(loopexp);
+ final StandardLoopCharacteristics lc = (StandardLoopCharacteristics) be;
+
+ Expression loopConditionExpression = lc.getLoopCondition();
+ if (loopConditionExpression==null) {
+ loopConditionExpression = FACTORY.createFormalExpression();
+ InsertionAdapter.add(lc, PACKAGE.getStandardLoopCharacteristics_LoopCondition(), loopConditionExpression);
}
- else {
- addRemoveLoopConditionExpressionButton.setText("Add Loop Condition");
+ loopConditionComposite = PropertiesCompositeFactory.createDetailComposite(Expression.class, getAttributesParent(), SWT.NONE);
+ loopConditionComposite.setBusinessObject(loopConditionExpression);
+ loopConditionComposite.setTitle("Loop Condition");
+
+ Expression loopMaximumExpression = lc.getLoopMaximum();
+ if (loopMaximumExpression==null) {
+ loopMaximumExpression = FACTORY.createFormalExpression();
+ InsertionAdapter.add(lc, PACKAGE.getStandardLoopCharacteristics_LoopMaximum(), loopMaximumExpression);
}
-
- if (maxexp != null) {
- addRemoveLoopMaximumExpressionButton.setText("Remove Loop Maximum");
- this.businessObject = maxexp;
- super.createBindings(maxexp);
- }
- else {
- addRemoveLoopMaximumExpressionButton.setText("Add Loop Maximum");
- }
+ loopMaximumComposite = PropertiesCompositeFactory.createDetailComposite(Expression.class, getAttributesParent(), SWT.NONE);
+ loopMaximumComposite.setBusinessObject(loopMaximumExpression);
+ loopMaximumComposite.setTitle("Loop Maximum");
}
}
}
diff --git a/pom.xml b/pom.xml
index 85db620..d2872bf 100644
--- a/pom.xml
+++ b/pom.xml
@@ -79,7 +79,7 @@
<repository>
<id>eclipse-bpmn2</id>
<!-- TODO: change this when BPMN2 metamodel finds a permanent home -->
- <url>https://hudson.eclipse.org/hudson/job/bpmn2-nightly/ws/org.eclipse.bpmn2.site/target/site/</url>
+ <url>https://hudson.eclipse.org/hudson/job/bpmn2-nightly/lastSuccessfulBuild/artifact/org.eclipse.bpmn2.site/target/site/</url>
<layout>p2</layout>
<snapshots>
<enabled>true</enabled>