HEMERA-2124: Implemented DataInputAssociation and DataOutputAssociation
diff --git a/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/ModelHandler.java b/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/ModelHandler.java
index 1d92979..d94f2b3 100644
--- a/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/ModelHandler.java
+++ b/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/ModelHandler.java
@@ -16,18 +16,23 @@
import java.util.ArrayList;
import java.util.List;
+import org.eclipse.bpmn2.Activity;
import org.eclipse.bpmn2.Artifact;
import org.eclipse.bpmn2.Association;
import org.eclipse.bpmn2.BaseElement;
import org.eclipse.bpmn2.Bpmn2Package;
+import org.eclipse.bpmn2.CatchEvent;
import org.eclipse.bpmn2.Choreography;
import org.eclipse.bpmn2.ChoreographyTask;
import org.eclipse.bpmn2.Collaboration;
import org.eclipse.bpmn2.ConditionalEventDefinition;
import org.eclipse.bpmn2.ConversationLink;
import org.eclipse.bpmn2.ConversationNode;
+import org.eclipse.bpmn2.DataAssociation;
import org.eclipse.bpmn2.DataInput;
+import org.eclipse.bpmn2.DataInputAssociation;
import org.eclipse.bpmn2.DataOutput;
+import org.eclipse.bpmn2.DataOutputAssociation;
import org.eclipse.bpmn2.Definitions;
import org.eclipse.bpmn2.DocumentRoot;
import org.eclipse.bpmn2.EndEvent;
@@ -47,6 +52,7 @@
import org.eclipse.bpmn2.SequenceFlow;
import org.eclipse.bpmn2.StartEvent;
import org.eclipse.bpmn2.SubProcess;
+import org.eclipse.bpmn2.ThrowEvent;
import org.eclipse.bpmn2.di.BPMNDiagram;
import org.eclipse.bpmn2.di.BPMNEdge;
import org.eclipse.bpmn2.di.BPMNPlane;
@@ -646,6 +652,32 @@
association.setTargetRef(target);
return association;
}
+
+ public DataAssociation createDataAssociation(BaseElement source, BaseElement target) {
+ DataAssociation dataAssocation = null;
+ if (source instanceof ItemAwareElement) {
+ dataAssocation = create(DataInputAssociation.class);
+ dataAssocation.getSourceRef().add((ItemAwareElement) source);
+ if (target instanceof Activity) {
+ Activity activity = (Activity) target;
+ activity.getDataInputAssociations().add((DataInputAssociation) dataAssocation);
+ } else if (target instanceof ThrowEvent) {
+ ThrowEvent throwEvent = (ThrowEvent) target;
+ throwEvent.getDataInputAssociation().add((DataInputAssociation) dataAssocation);
+ }
+ } else if (target instanceof ItemAwareElement) {
+ dataAssocation = create(DataOutputAssociation.class);
+ dataAssocation.setTargetRef((ItemAwareElement) target);
+ if (source instanceof Activity) {
+ Activity activity = (Activity) source;
+ activity.getDataOutputAssociations().add((DataOutputAssociation) dataAssocation);
+ } else if (source instanceof CatchEvent) {
+ CatchEvent throwEvent = (CatchEvent) source;
+ throwEvent.getDataOutputAssociation().add((DataOutputAssociation) dataAssocation);
+ }
+ }
+ return dataAssocation;
+ }
private Collaboration getCollaboration() {
final List<RootElement> rootElements = getDefinitions().getRootElements();
diff --git a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/diagram/BPMNFeatureProvider.java b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/diagram/BPMNFeatureProvider.java
index 6af581e..2169dfd 100644
--- a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/diagram/BPMNFeatureProvider.java
+++ b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/diagram/BPMNFeatureProvider.java
@@ -76,8 +76,7 @@
import org.eclipse.bpmn2.modeler.ui.features.event.definitions.TerminateEventDefinitionFeatureContainer;
import org.eclipse.bpmn2.modeler.ui.features.event.definitions.TimerEventDefinitionContainer;
import org.eclipse.bpmn2.modeler.ui.features.flow.AssociationFeatureContainer;
-import org.eclipse.bpmn2.modeler.ui.features.flow.DataInputAssociationFeatureContainer;
-import org.eclipse.bpmn2.modeler.ui.features.flow.DataOutputAssociationFeatureContainer;
+import org.eclipse.bpmn2.modeler.ui.features.flow.DataAssociationFeatureContainer;
import org.eclipse.bpmn2.modeler.ui.features.flow.MessageFlowFeatureContainer;
import org.eclipse.bpmn2.modeler.ui.features.flow.SequenceFlowFeatureContainer;
import org.eclipse.bpmn2.modeler.ui.features.gateway.ComplexGatewayFeatureContainer;
@@ -190,8 +189,7 @@
containers.add(new AssociationFeatureContainer());
containers.add(new ConversationFeatureContainer());
containers.add(new ConversationLinkFeatureContainer());
- containers.add(new DataInputAssociationFeatureContainer());
- containers.add(new DataOutputAssociationFeatureContainer());
+ containers.add(new DataAssociationFeatureContainer());
containers.add(new SubChoreographyFeatureContainer());
containers.add(new CallChoreographyFeatureContainer());
containers.add(new ParticipantFeatureContainer());
diff --git a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/flow/DataAssociationFeatureContainer.java b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/flow/DataAssociationFeatureContainer.java
new file mode 100644
index 0000000..1efbd04
--- /dev/null
+++ b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/flow/DataAssociationFeatureContainer.java
@@ -0,0 +1,296 @@
+package org.eclipse.bpmn2.modeler.ui.features.flow;
+
+import java.io.IOException;
+
+import org.eclipse.bpmn2.Activity;
+import org.eclipse.bpmn2.BaseElement;
+import org.eclipse.bpmn2.Bpmn2Package;
+import org.eclipse.bpmn2.CatchEvent;
+import org.eclipse.bpmn2.DataAssociation;
+import org.eclipse.bpmn2.DataInputAssociation;
+import org.eclipse.bpmn2.DataOutputAssociation;
+import org.eclipse.bpmn2.ItemAwareElement;
+import org.eclipse.bpmn2.ThrowEvent;
+import org.eclipse.bpmn2.di.BPMNEdge;
+import org.eclipse.bpmn2.modeler.core.ModelHandler;
+import org.eclipse.bpmn2.modeler.core.features.BaseElementConnectionFeatureContainer;
+import org.eclipse.bpmn2.modeler.core.features.flow.AbstractAddFlowFeature;
+import org.eclipse.bpmn2.modeler.core.features.flow.AbstractCreateFlowFeature;
+import org.eclipse.bpmn2.modeler.core.features.flow.AbstractReconnectFlowFeature;
+import org.eclipse.bpmn2.modeler.core.utils.AnchorUtil;
+import org.eclipse.bpmn2.modeler.core.utils.BusinessObjectUtil;
+import org.eclipse.bpmn2.modeler.core.utils.StyleUtil;
+import org.eclipse.bpmn2.modeler.ui.ImageProvider;
+import org.eclipse.dd.di.DiagramElement;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.graphiti.features.IAddFeature;
+import org.eclipse.graphiti.features.ICreateConnectionFeature;
+import org.eclipse.graphiti.features.IFeatureProvider;
+import org.eclipse.graphiti.features.IReconnectionFeature;
+import org.eclipse.graphiti.features.context.ICreateConnectionContext;
+import org.eclipse.graphiti.features.context.IReconnectionContext;
+import org.eclipse.graphiti.features.context.impl.ReconnectionContext;
+import org.eclipse.graphiti.mm.algorithms.Polyline;
+import org.eclipse.graphiti.mm.algorithms.styles.LineStyle;
+import org.eclipse.graphiti.mm.pictograms.Anchor;
+import org.eclipse.graphiti.mm.pictograms.AnchorContainer;
+import org.eclipse.graphiti.mm.pictograms.Connection;
+import org.eclipse.graphiti.mm.pictograms.ConnectionDecorator;
+import org.eclipse.graphiti.mm.pictograms.Shape;
+import org.eclipse.graphiti.services.Graphiti;
+import org.eclipse.graphiti.services.IGaService;
+import org.eclipse.graphiti.services.IPeService;
+
+
+public class DataAssociationFeatureContainer extends BaseElementConnectionFeatureContainer {
+
+ @Override
+ public boolean canApplyTo(Object o) {
+ return super.canApplyTo(o) && o instanceof DataAssociation;
+ }
+
+ public class AddDataAssocationFeature extends AbstractAddFlowFeature<DataAssociation> {
+
+ public AddDataAssocationFeature(IFeatureProvider fp) {
+ super(fp);
+ }
+
+ @Override
+ protected Polyline createConnectionLine(Connection connection) {
+ IPeService peService = Graphiti.getPeService();
+ IGaService gaService = Graphiti.getGaService();
+ BaseElement be = BusinessObjectUtil.getFirstBaseElement(connection);
+
+ Polyline connectionLine = super.createConnectionLine(connection);
+ connectionLine.setLineStyle(LineStyle.DOT);
+
+ ConnectionDecorator endDecorator = peService.createConnectionDecorator(connection, false, 1.0, true);
+
+ int w = 5;
+ int l = 10;
+
+ Polyline arrowhead = gaService.createPolyline(endDecorator, new int[] { -l, w, 0, 0, -l, -w });
+ StyleUtil.applyStyle(arrowhead, be);
+
+ return connectionLine;
+ }
+
+ @Override
+ protected Class< ? extends BaseElement> getBoClass() {
+ return DataAssociation.class;
+ }
+
+ }
+
+ public class CreateDataAssociationFeature extends AbstractCreateFlowFeature<DataAssociation, BaseElement, BaseElement> {
+
+ public CreateDataAssociationFeature(IFeatureProvider fp) {
+ super(fp, "Data Association", "Associate item aware elements like data objects with activities and events");
+ }
+
+ @Override
+ public boolean canCreate(ICreateConnectionContext context) {
+ BaseElement sourceBo = getSourceBo(context);
+ BaseElement targetBo = getTargetBo(context);
+ if (sourceBo instanceof ItemAwareElement) {
+ if (targetBo instanceof Activity || targetBo instanceof ThrowEvent) {
+ return true;
+ }
+ } else if (targetBo instanceof ItemAwareElement) {
+ if (sourceBo instanceof Activity || sourceBo instanceof CatchEvent) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ protected String getStencilImageId() {
+ return ImageProvider.IMG_16_ASSOCIATION;
+ }
+
+ @Override
+ protected Class<BaseElement> getSourceClass() {
+ return BaseElement.class;
+ }
+
+ @Override
+ protected Class<BaseElement> getTargetClass() {
+ return BaseElement.class;
+ }
+
+ @Override
+ protected BaseElement getSourceBo(ICreateConnectionContext context) {
+ Anchor anchor = context.getSourceAnchor();
+ if (anchor != null && anchor.getParent() instanceof Shape) {
+ Shape shape = (Shape) anchor.getParent();
+ Connection conn = AnchorUtil.getConnectionPointOwner(shape);
+ if (conn!=null) {
+ return BusinessObjectUtil.getFirstElementOfType(conn, getTargetClass());
+ }
+ return BusinessObjectUtil.getFirstElementOfType(shape, getTargetClass());
+ }
+ return null;
+ }
+
+ @Override
+ protected BaseElement getTargetBo(ICreateConnectionContext context) {
+ Anchor anchor = context.getTargetAnchor();
+ if (anchor != null && anchor.getParent() instanceof Shape) {
+ Shape shape = (Shape) anchor.getParent();
+ Connection conn = AnchorUtil.getConnectionPointOwner(shape);
+ if (conn!=null) {
+ return BusinessObjectUtil.getFirstElementOfType(conn, getTargetClass());
+ }
+ return BusinessObjectUtil.getFirstElementOfType(shape, getTargetClass());
+ }
+ return null;
+ }
+
+ @Override
+ public DataAssociation createBusinessObject(ICreateConnectionContext context) {
+ DataAssociation bo = null;
+ try {
+ ModelHandler mh = ModelHandler.getInstance(getDiagram());
+ BaseElement source = getSourceBo(context);
+ BaseElement target = getTargetBo(context);
+ bo = mh.createDataAssociation(source, target);
+ putBusinessObject(context, bo);
+
+ } catch (IOException e) {
+ }
+ return bo;
+ }
+
+ @Override
+ public String getCreateName() {
+ return "Data Association";
+ }
+
+ @Override
+ public EClass getBusinessObjectClass() {
+ return Bpmn2Package.eINSTANCE.getDataAssociation();
+ }
+ }
+
+ public static class ReconnectDataAssociationFeature extends AbstractReconnectFlowFeature {
+
+ public ReconnectDataAssociationFeature(IFeatureProvider fp) {
+ super(fp);
+ }
+
+ @Override
+ public boolean canReconnect(IReconnectionContext context) {
+ DataAssociation dataAssociation = BusinessObjectUtil.getFirstElementOfType(context.getConnection(), DataAssociation.class);
+ BaseElement targetElement = BusinessObjectUtil.getFirstElementOfType(context.getTargetPictogramElement(), BaseElement.class);
+ if (dataAssociation instanceof DataInputAssociation) {
+ if (context.getReconnectType().equals(ReconnectionContext.RECONNECT_SOURCE)) {
+ if (targetElement instanceof ItemAwareElement) {
+ return true;
+ }
+ }
+ if (context.getReconnectType().equals(ReconnectionContext.RECONNECT_TARGET)) {
+ if (targetElement instanceof Activity || targetElement instanceof ThrowEvent) {
+ return true;
+ }
+ }
+ return false;
+ }
+ if (dataAssociation instanceof DataOutputAssociation) {
+ if (context.getReconnectType().equals(ReconnectionContext.RECONNECT_SOURCE)) {
+ if (targetElement instanceof Activity || targetElement instanceof CatchEvent) {
+ return true;
+ }
+ }
+ if (context.getReconnectType().equals(ReconnectionContext.RECONNECT_TARGET)) {
+ if (targetElement instanceof ItemAwareElement) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ @Override
+ protected Class<? extends EObject> getTargetClass() {
+ return BaseElement.class;
+ }
+
+ @Override
+ protected Class<? extends EObject> getSourceClass() {
+ return BaseElement.class;
+ }
+
+ @Override
+ public void postReconnect(IReconnectionContext context) {
+ Anchor oldAnchor = context.getOldAnchor();
+ AnchorContainer oldAnchorContainer = oldAnchor.getParent();
+ AnchorUtil.deleteConnectionPointIfPossible(getFeatureProvider(), (Shape) oldAnchorContainer);
+
+ BPMNEdge edge = BusinessObjectUtil.getFirstElementOfType(context.getConnection(), BPMNEdge.class);
+ DiagramElement de = BusinessObjectUtil.getFirstElementOfType(context.getTargetPictogramElement(), DiagramElement.class);
+ if (context.getReconnectType().equals(ReconnectionContext.RECONNECT_TARGET)) {
+ edge.setTargetElement(de);
+ }
+ else {
+ edge.setSourceElement(de);
+ }
+
+ DataAssociation dataAssociation = BusinessObjectUtil.getFirstElementOfType(context.getConnection(), DataAssociation.class);
+ BaseElement targetElement = BusinessObjectUtil.getFirstElementOfType(context.getTargetPictogramElement(), BaseElement.class);
+ if (dataAssociation instanceof DataInputAssociation) {
+ if (context.getReconnectType().equals(ReconnectionContext.RECONNECT_SOURCE)) {
+ if (targetElement instanceof ItemAwareElement) {
+ dataAssociation.getSourceRef().clear();
+ dataAssociation.getSourceRef().add((ItemAwareElement) targetElement);
+ }
+ return;
+ }
+ if (context.getReconnectType().equals(ReconnectionContext.RECONNECT_TARGET)) {
+ if (targetElement instanceof Activity) {
+ Activity activity = (Activity) targetElement;
+ activity.getDataInputAssociations().add((DataInputAssociation) dataAssociation);
+ } else if (targetElement instanceof ThrowEvent) {
+ ThrowEvent throwEvent = (ThrowEvent) targetElement;
+ throwEvent.getDataInputAssociation().add((DataInputAssociation) dataAssociation);
+ }
+ return;
+ }
+ }
+ if (dataAssociation instanceof DataOutputAssociation) {
+ if (context.getReconnectType().equals(ReconnectionContext.RECONNECT_SOURCE)) {
+ if (targetElement instanceof Activity) {
+ Activity activity = (Activity) targetElement;
+ activity.getDataOutputAssociations().add((DataOutputAssociation) dataAssociation);
+ } else if (targetElement instanceof CatchEvent) {
+ CatchEvent throwEvent = (CatchEvent) targetElement;
+ throwEvent.getDataOutputAssociation().add((DataOutputAssociation) dataAssociation);
+ }
+ return;
+ }
+ if (context.getReconnectType().equals(ReconnectionContext.RECONNECT_TARGET)) {
+ if (targetElement instanceof ItemAwareElement) {
+ dataAssociation.setTargetRef((ItemAwareElement) targetElement);
+ }
+ }
+ }
+ }
+ }
+
+ @Override
+ public IAddFeature getAddFeature(IFeatureProvider fp) {
+ return new AddDataAssocationFeature(fp);
+ }
+
+ @Override
+ public ICreateConnectionFeature getCreateConnectionFeature(IFeatureProvider fp) {
+ return new CreateDataAssociationFeature(fp);
+ }
+
+ @Override
+ public IReconnectionFeature getReconnectionFeature(IFeatureProvider fp) {
+ return new ReconnectDataAssociationFeature(fp);
+ }
+
+}
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
deleted file mode 100644
index 38a2d28..0000000
--- a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/flow/DataInputAssociationFeatureContainer.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2011 Red Hat, Inc.
- * All rights reserved.
- * This program is made available under the terms of the
- * Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Red Hat, Inc. - initial API and implementation
- *
- * @author Innar Made
- ******************************************************************************/
-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.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;
-import org.eclipse.graphiti.mm.pictograms.ConnectionDecorator;
-import org.eclipse.graphiti.services.Graphiti;
-import org.eclipse.graphiti.services.IGaService;
-import org.eclipse.graphiti.services.IPeService;
-
-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) {
-
- @Override
- protected Polyline createConnectionLine(Connection connection) {
- IPeService peService = Graphiti.getPeService();
- IGaService gaService = Graphiti.getGaService();
- BaseElement be = BusinessObjectUtil.getFirstBaseElement(connection);
-
- Polyline connectionLine = super.createConnectionLine(connection);
- connectionLine.setLineStyle(LineStyle.DOT);
-
- ConnectionDecorator endDecorator = peService.createConnectionDecorator(connection, false, 1.0, true);
-
- int w = 5;
- int l = 10;
-
- Polyline arrowhead = gaService.createPolyline(endDecorator, new int[] { -l, w, 0, 0, -l, -w });
- StyleUtil.applyStyle(arrowhead, be);
-
- return connectionLine;
- }
-
- @Override
- protected Class<? extends BaseElement> getBoClass() {
- return DataInputAssociation.class;
- }
- };
- }
-
- @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);
-
- } 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
diff --git a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/flow/DataOutputAssociationFeatureContainer.java b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/flow/DataOutputAssociationFeatureContainer.java
deleted file mode 100644
index 56a5272..0000000
--- a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/flow/DataOutputAssociationFeatureContainer.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2011 Red Hat, Inc.
- * All rights reserved.
- * This program is made available under the terms of the
- * Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Red Hat, Inc. - initial API and implementation
- *
- * @author Innar Made
- ******************************************************************************/
-package org.eclipse.bpmn2.modeler.ui.features.flow;
-
-import org.eclipse.bpmn2.BaseElement;
-import org.eclipse.bpmn2.DataOutputAssociation;
-import org.eclipse.bpmn2.modeler.core.features.BaseElementConnectionFeatureContainer;
-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.graphiti.features.IAddFeature;
-import org.eclipse.graphiti.features.ICreateConnectionFeature;
-import org.eclipse.graphiti.features.IFeatureProvider;
-import org.eclipse.graphiti.mm.algorithms.Polyline;
-import org.eclipse.graphiti.mm.algorithms.styles.LineStyle;
-import org.eclipse.graphiti.mm.pictograms.Connection;
-import org.eclipse.graphiti.mm.pictograms.ConnectionDecorator;
-import org.eclipse.graphiti.services.Graphiti;
-import org.eclipse.graphiti.services.IGaService;
-import org.eclipse.graphiti.services.IPeService;
-
-public class DataOutputAssociationFeatureContainer extends BaseElementConnectionFeatureContainer {
-
- @Override
- public boolean canApplyTo(Object o) {
- return super.canApplyTo(o) && o instanceof DataOutputAssociation;
- }
-
- @Override
- public IAddFeature getAddFeature(IFeatureProvider fp) {
- return new AbstractAddFlowFeature<DataOutputAssociation>(fp) {
-
- @Override
- protected Polyline createConnectionLine(Connection connection) {
- IPeService peService = Graphiti.getPeService();
- IGaService gaService = Graphiti.getGaService();
- BaseElement be = BusinessObjectUtil.getFirstBaseElement(connection);
-
- Polyline connectionLine = super.createConnectionLine(connection);
- connectionLine.setLineStyle(LineStyle.DOT);
-
- ConnectionDecorator endDecorator = peService.createConnectionDecorator(connection, false, 1.0, true);
-
- int w = 5;
- int l = 10;
-
- Polyline arrowhead = gaService.createPolyline(endDecorator, new int[] { -l, w, 0, 0, -l, -w });
- StyleUtil.applyStyle(arrowhead, be);
-
- return connectionLine;
- }
-
- @Override
- protected Class<? extends BaseElement> getBoClass() {
- return DataOutputAssociation.class;
- }
- };
- }
-
- @Override
- public ICreateConnectionFeature getCreateConnectionFeature(IFeatureProvider fp) {
- return null;
- }
-}
\ No newline at end of file
diff --git a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/flow/MessageFlowFeatureContainer.java b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/flow/MessageFlowFeatureContainer.java
index 13dcc6a..5003f63 100644
--- a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/flow/MessageFlowFeatureContainer.java
+++ b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/flow/MessageFlowFeatureContainer.java
@@ -22,7 +22,6 @@
import org.eclipse.bpmn2.modeler.core.Activator;
import org.eclipse.bpmn2.modeler.core.ModelHandler;
import org.eclipse.bpmn2.modeler.core.features.BaseElementConnectionFeatureContainer;
-import org.eclipse.bpmn2.modeler.core.features.MultiUpdateFeature;
import org.eclipse.bpmn2.modeler.core.features.UpdateBaseElementNameFeature;
import org.eclipse.bpmn2.modeler.core.features.flow.AbstractAddFlowFeature;
import org.eclipse.bpmn2.modeler.core.features.flow.AbstractCreateFlowFeature;
@@ -39,8 +38,6 @@
import org.eclipse.graphiti.features.IReconnectionFeature;
import org.eclipse.graphiti.features.IUpdateFeature;
import org.eclipse.graphiti.features.context.ICreateConnectionContext;
-import org.eclipse.graphiti.features.context.ICreateContext;
-import org.eclipse.graphiti.features.context.impl.AddConnectionContext;
import org.eclipse.graphiti.mm.algorithms.Ellipse;
import org.eclipse.graphiti.mm.algorithms.Polyline;
import org.eclipse.graphiti.mm.algorithms.styles.LineStyle;