diff options
author | Remi Schnekenburger | 2014-11-19 15:14:47 +0000 |
---|---|---|
committer | Gerrit Code Review @ Eclipse.org | 2014-11-19 15:14:47 +0000 |
commit | 93485a41d40bc27bf60c09714f9b68ca871f9531 (patch) | |
tree | 19c07a3c94e57d4f1312086cbdac4f55d8a542c5 /plugins | |
parent | 79acd916737d71925836a4fc9dbdacc502cb0f62 (diff) | |
parent | 94b7c5cb09e659469d967dcfba07d8f048dc0bfc (diff) | |
download | org.eclipse.papyrus-93485a41d40bc27bf60c09714f9b68ca871f9531.tar.gz org.eclipse.papyrus-93485a41d40bc27bf60c09714f9b68ca871f9531.tar.xz org.eclipse.papyrus-93485a41d40bc27bf60c09714f9b68ca871f9531.zip |
Merge "Bug 448948 - [Activity Diagram] Output pin arrow does not disappear after it has been connected to an input pin" into streams/1.0-maintenance
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.activity/custom-src/org/eclipse/papyrus/uml/diagram/activity/edit/part/AbstractPinEditPart.java | 54 |
1 files changed, 38 insertions, 16 deletions
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.activity/custom-src/org/eclipse/papyrus/uml/diagram/activity/edit/part/AbstractPinEditPart.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.activity/custom-src/org/eclipse/papyrus/uml/diagram/activity/edit/part/AbstractPinEditPart.java index b53aee018c2..3c6590568c2 100644 --- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.activity/custom-src/org/eclipse/papyrus/uml/diagram/activity/edit/part/AbstractPinEditPart.java +++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.activity/custom-src/org/eclipse/papyrus/uml/diagram/activity/edit/part/AbstractPinEditPart.java @@ -47,7 +47,7 @@ public abstract class AbstractPinEditPart extends BorderedBorderItemEditPart { }
/**
- * undraw the pin arrow
+ * Undraw the pin arrow
*
* @param connection
* <code>ConnectionEditPart</code> being added as child.
@@ -61,12 +61,24 @@ public abstract class AbstractPinEditPart extends BorderedBorderItemEditPart { }
/**
+ * Draw the pin arrow
+ *
+ */
+ private void drawPinArrow() {
+ PinFigure pinFigure = getPrimaryShape();
+ AbstractPointListShape arrow = pinFigure.getOptionalArrowFigure();
+ int side = getBorderItemLocator().getCurrentSideOfParent();
+ int direction = ActivityFigureDrawer.getOppositeDirection(side);
+ ActivityFigureDrawer.redrawPinArrow(arrow, getMapMode(), getSize(), direction);
+ }
+
+ /**
* redraw the pin arrow if current connection doesnt set
*
* @param connection
* <code>ConnectionEditPart</code> being added as child.
*/
- private void redrawPinArrow(List connections) {
+ private void redrawPinArrow(List<?> connections) {
this.redrawPinArrow(null, connections);
}
@@ -76,21 +88,32 @@ public abstract class AbstractPinEditPart extends BorderedBorderItemEditPart { * @param connection
* <code>ConnectionEditPart</code> being added as child.
*/
- private void redrawPinArrow(ConnectionEditPart connection, List connections) {
- boolean hasActivityEdge = false;
- for (Object connect : connections) {
- if (!connection.equals(connect) && isConnectionSupported((ConnectionEditPart) connect)) {
- hasActivityEdge = true;
- break;
+ private void redrawPinArrow(ConnectionEditPart connection, List<?> connections) {
+ if (isHasActiveEdge(connection, connections)) {
+ undrawPinArrow(connection);
+ return;
+ }
+ drawPinArrow();
+ }
+
+ private boolean isHasActiveEdge(ConnectionEditPart connection, List<?> connections) {
+ if (connection == null && (connections == null || connections.isEmpty())) {
+ return false;
+ }
+ if (connection == null) {
+ for (Object next : connections) {
+ if (isConnectionSupported((ConnectionEditPart) next)) {
+ return true;
+ }
}
+ return false;
}
- if (!hasActivityEdge) {
- PinFigure pinFigure = getPrimaryShape();
- AbstractPointListShape arrow = pinFigure.getOptionalArrowFigure();
- int side = getBorderItemLocator().getCurrentSideOfParent();
- int direction = ActivityFigureDrawer.getOppositeDirection(side);
- ActivityFigureDrawer.redrawPinArrow(arrow, getMapMode(), getSize(), direction);
+ for (Object next : connections) {
+ if (!connection.equals(next) && isConnectionSupported((ConnectionEditPart) next)) {
+ return true;
+ }
}
+ return false;
}
/**
@@ -141,7 +164,6 @@ public abstract class AbstractPinEditPart extends BorderedBorderItemEditPart { public void activate() {
super.activate();
// redraw the pin arrow if no connection
- redrawPinArrow(getTargetConnections());
- redrawPinArrow(getSourceConnections());
+ redrawPinArrow(getTargetConnections().isEmpty() ? getSourceConnections() : getTargetConnections());
}
}
|