WIP HEMERA-2124
diff --git a/org.eclipse.bpmn2.modeler.ui/plugin.xml b/org.eclipse.bpmn2.modeler.ui/plugin.xml
index 175d48a..f321400 100644
--- a/org.eclipse.bpmn2.modeler.ui/plugin.xml
+++ b/org.eclipse.bpmn2.modeler.ui/plugin.xml
@@ -432,6 +432,7 @@
<!-- connections -->
<enable object="SequenceFlow"/>
<enable object="Association"/>
+ <enable object="DataAssociation"/>
<!-- events -->
<enable object="StartEvent"/>
diff --git a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/data/AbstractDataFeatureContainer.java b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/data/AbstractDataFeatureContainer.java
index ec9347e..21c6fef 100644
--- a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/data/AbstractDataFeatureContainer.java
+++ b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/data/AbstractDataFeatureContainer.java
@@ -25,6 +25,7 @@
import org.eclipse.graphiti.features.IMoveShapeFeature;
import org.eclipse.graphiti.features.IResizeShapeFeature;
import org.eclipse.graphiti.features.IUpdateFeature;
+import org.eclipse.graphiti.features.context.IMoveShapeContext;
import org.eclipse.graphiti.features.context.IResizeShapeContext;
import org.eclipse.graphiti.features.impl.DefaultMoveShapeFeature;
import org.eclipse.graphiti.features.impl.DefaultResizeShapeFeature;
@@ -54,7 +55,12 @@
@Override
public IMoveShapeFeature getMoveFeature(IFeatureProvider fp) {
- return new DefaultMoveBPMNShapeFeature(fp);
+ return new DefaultMoveBPMNShapeFeature(fp) {
+ @Override
+ public boolean canMoveShape(IMoveShapeContext context) {
+ return true;
+ }
+ };
}
@Override
diff --git a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/flow/DataInputAssociationFeatureContainer.java b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/flow/DataInputAssociationFeatureContainer.java
index cd7953d..38a2d28 100644
--- a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/flow/DataInputAssociationFeatureContainer.java
+++ b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/flow/DataInputAssociationFeatureContainer.java
@@ -12,15 +12,22 @@
******************************************************************************/
package org.eclipse.bpmn2.modeler.ui.features.flow;
+import java.io.IOException;
+
+import org.eclipse.bpmn2.Association;
import org.eclipse.bpmn2.BaseElement;
+import org.eclipse.bpmn2.Bpmn2Package;
import org.eclipse.bpmn2.DataInputAssociation;
-import org.eclipse.bpmn2.modeler.core.features.BaseElementConnectionFeatureContainer;
+import org.eclipse.bpmn2.ItemAwareElement;
+import org.eclipse.bpmn2.modeler.core.ModelHandler;
import org.eclipse.bpmn2.modeler.core.features.flow.AbstractAddFlowFeature;
import org.eclipse.bpmn2.modeler.core.utils.BusinessObjectUtil;
import org.eclipse.bpmn2.modeler.core.utils.StyleUtil;
+import org.eclipse.emf.ecore.EClass;
import org.eclipse.graphiti.features.IAddFeature;
import org.eclipse.graphiti.features.ICreateConnectionFeature;
import org.eclipse.graphiti.features.IFeatureProvider;
+import org.eclipse.graphiti.features.context.ICreateConnectionContext;
import org.eclipse.graphiti.mm.algorithms.Polyline;
import org.eclipse.graphiti.mm.algorithms.styles.LineStyle;
import org.eclipse.graphiti.mm.pictograms.Connection;
@@ -29,13 +36,13 @@
import org.eclipse.graphiti.services.IGaService;
import org.eclipse.graphiti.services.IPeService;
-public class DataInputAssociationFeatureContainer extends BaseElementConnectionFeatureContainer {
+public class DataInputAssociationFeatureContainer extends AssociationFeatureContainer {
@Override
public boolean canApplyTo(Object o) {
return super.canApplyTo(o) && o instanceof DataInputAssociation;
}
-
+
@Override
public IAddFeature getAddFeature(IFeatureProvider fp) {
return new AbstractAddFlowFeature<DataInputAssociation>(fp) {
@@ -66,9 +73,47 @@
}
};
}
+
+ @Override
+ public ICreateConnectionFeature getCreateConnectionFeature(IFeatureProvider fp) {
+ return new CreateAssociationFeature(fp) {
+ @Override
+ public Association createBusinessObject(ICreateConnectionContext context) {
+ Association bo = null;
+ try {
+ ModelHandler mh = ModelHandler.getInstance(getDiagram());
+ BaseElement source = getSourceBo(context);
+ BaseElement target = getTargetBo(context);
+ bo = mh.createAssociation(source, target);
+ putBusinessObject(context, bo);
- @Override
- public ICreateConnectionFeature getCreateConnectionFeature(IFeatureProvider fp) {
- return null;
- }
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ return bo;
+ }
+
+ @Override
+ public boolean canCreate(ICreateConnectionContext context) {
+ BaseElement sourceBo = getSourceBo(context);
+ BaseElement targetBo = getTargetBo(context);
+
+ return sourceBo instanceof ItemAwareElement || targetBo instanceof ItemAwareElement;
+ }
+
+
+
+ @Override
+ public String getCreateName() {
+ return "Data Association";
+ }
+
+ @Override
+ public EClass getBusinessObjectClass() {
+ return Bpmn2Package.eINSTANCE.getDataAssociation();
+ }
+ };
+ }
+
}
\ No newline at end of file