瀏覽代碼

Merge pull request #151 from Yakindu/Bugfix_148

#148 : use 'real' transition figure for feedback instead of generic
Andreas Mülder 9 年之前
父節點
當前提交
a9550cce93

+ 9 - 2
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/editparts/BorderedShapeEditPart.java

@@ -12,6 +12,7 @@ package org.yakindu.sct.ui.editor.editparts;
 
 import org.eclipse.draw2d.IFigure;
 import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.gef.EditPolicy;
 import org.eclipse.gef.Request;
 import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;
 import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;
@@ -19,6 +20,7 @@ import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
 import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;
 import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;
 import org.eclipse.gmf.runtime.notation.View;
+import org.yakindu.sct.ui.editor.policies.FeedbackGraphicalNodeEditPolicy;
 
 /**
  * 
@@ -38,8 +40,7 @@ public class BorderedShapeEditPart extends AbstractBorderedShapeEditPart {
 		return null;
 	}
 
-	protected void addBorderItem(IFigure borderItemContainer,
-			IBorderItemEditPart borderItemEditPart) {
+	protected void addBorderItem(IFigure borderItemContainer, IBorderItemEditPart borderItemEditPart) {
 		if (primaryChildEditPart == null) {
 			primaryChildEditPart = borderItemEditPart;
 		}
@@ -58,4 +59,10 @@ public class BorderedShapeEditPart extends AbstractBorderedShapeEditPart {
 		primaryChildEditPart.performRequest(request);
 	}
 
+	@Override
+	protected void createDefaultEditPolicies() {
+		super.createDefaultEditPolicies();
+		installEditPolicy(EditPolicy.GRAPHICAL_NODE_ROLE, new FeedbackGraphicalNodeEditPolicy());
+	}
+
 }

+ 60 - 57
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/editparts/ChoiceEditPart.java

@@ -1,57 +1,60 @@
-/**
- * Copyright (c) 2010 committers of YAKINDU and others.
- * All rights reserved. This program and the accompanying materials
- * are 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:
- * 	committers of YAKINDU - initial API and implementation
- * 
- */
-package org.yakindu.sct.ui.editor.editparts;
-
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.geometry.Dimension;
-import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;
-import org.eclipse.gmf.runtime.notation.View;
-import org.yakindu.base.gmf.runtime.editparts.FixedSizeShapeNodeEditPart;
-import org.yakindu.sct.ui.editor.editor.figures.ChoiceFigure;
-import org.yakindu.sct.ui.editor.editor.figures.utils.MapModeUtils;
-import org.yakindu.sct.ui.editor.policies.EnlargeContainerEditPolicy;
-
-/**
- * 
- * @author andreas muelder - Initial contribution and API
- * 
- */
-public class ChoiceEditPart extends FixedSizeShapeNodeEditPart {
-
-	public ChoiceEditPart(View view) {
-		super(view);
-	}
-
-	@Override
-	protected void createDefaultEditPolicies() {
-		super.createDefaultEditPolicies();
-		installEditPolicy(EnlargeContainerEditPolicy.ROLE, new EnlargeContainerEditPolicy());
-	}
-
-	@Override
-	protected NodeFigure createNodeFigure() {
-		NodeFigure figure = super.createNodeFigure();
-		figure.setBackgroundColor(org.eclipse.draw2d.ColorConstants.white);
-		figure.setForegroundColor(org.eclipse.draw2d.ColorConstants.black);
-		return figure;
-	}
-
-	@Override
-	public Dimension getDefaultSize() {
-		return MapModeUtils.getMappedDimensions(getMapMode(), MapModeUtils.DEFAULT_SMALL_NODE_DIMENSION);
-	}
-
-	@Override
-	public IFigure createPrimaryShape() {
-		return new ChoiceFigure();
-	}
-
-}
+/**
+ * Copyright (c) 2010 committers of YAKINDU and others.
+ * All rights reserved. This program and the accompanying materials
+ * are 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:
+ * 	committers of YAKINDU - initial API and implementation
+ * 
+ */
+package org.yakindu.sct.ui.editor.editparts;
+
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.geometry.Dimension;
+import org.eclipse.gef.EditPolicy;
+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;
+import org.eclipse.gmf.runtime.notation.View;
+import org.yakindu.base.gmf.runtime.editparts.FixedSizeShapeNodeEditPart;
+import org.yakindu.sct.ui.editor.editor.figures.ChoiceFigure;
+import org.yakindu.sct.ui.editor.editor.figures.utils.MapModeUtils;
+import org.yakindu.sct.ui.editor.policies.EnlargeContainerEditPolicy;
+import org.yakindu.sct.ui.editor.policies.FeedbackGraphicalNodeEditPolicy;
+
+/**
+ * 
+ * @author andreas muelder - Initial contribution and API
+ * 
+ */
+public class ChoiceEditPart extends FixedSizeShapeNodeEditPart {
+
+	public ChoiceEditPart(View view) {
+		super(view);
+	}
+
+	@Override
+	protected void createDefaultEditPolicies() {
+		super.createDefaultEditPolicies();
+		installEditPolicy(EnlargeContainerEditPolicy.ROLE, new EnlargeContainerEditPolicy());
+		installEditPolicy(EditPolicy.GRAPHICAL_NODE_ROLE, new FeedbackGraphicalNodeEditPolicy());
+	}
+
+	@Override
+	protected NodeFigure createNodeFigure() {
+		NodeFigure figure = super.createNodeFigure();
+		figure.setBackgroundColor(org.eclipse.draw2d.ColorConstants.white);
+		figure.setForegroundColor(org.eclipse.draw2d.ColorConstants.black);
+		return figure;
+	}
+
+	@Override
+	public Dimension getDefaultSize() {
+		return MapModeUtils.getMappedDimensions(getMapMode(), MapModeUtils.DEFAULT_SMALL_NODE_DIMENSION);
+	}
+
+	@Override
+	public IFigure createPrimaryShape() {
+		return new ChoiceFigure();
+	}
+
+}

+ 56 - 53
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/editparts/FinalStateEditPart.java

@@ -1,53 +1,56 @@
-/**
- * Copyright (c) 2010 committers of YAKINDU and others.
- * All rights reserved. This program and the accompanying materials
- * are 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:
- * 	committers of YAKINDU - initial API and implementation
- * 
- */
-package org.yakindu.sct.ui.editor.editparts;
-
-import org.eclipse.draw2d.Ellipse;
-import org.eclipse.draw2d.geometry.Dimension;
-import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;
-import org.eclipse.gmf.runtime.diagram.ui.handles.ConnectionHandle.HandleDirection;
-import org.eclipse.gmf.runtime.notation.View;
-import org.yakindu.base.gmf.runtime.editparts.EllipseFixedSizeShapeNodeEditPart;
-import org.yakindu.base.gmf.runtime.editpolicies.OneWayConnectionHandlesEditPolicy;
-import org.yakindu.sct.ui.editor.editor.figures.FinalStateFigure;
-import org.yakindu.sct.ui.editor.editor.figures.utils.MapModeUtils;
-import org.yakindu.sct.ui.editor.policies.EnlargeContainerEditPolicy;
-
-/**
- * 
- * @author andreas muelder - Initial contribution and API
- * 
- */
-public class FinalStateEditPart extends EllipseFixedSizeShapeNodeEditPart {
-
-	public FinalStateEditPart(View view) {
-		super(view);
-	}
-
-	@Override
-	protected void createDefaultEditPolicies() {
-		super.createDefaultEditPolicies();
-		installEditPolicy(EditPolicyRoles.CONNECTION_HANDLES_ROLE, new OneWayConnectionHandlesEditPolicy(
-				HandleDirection.INCOMING));
-		installEditPolicy(EnlargeContainerEditPolicy.ROLE, new EnlargeContainerEditPolicy());
-	}
-
-	@Override
-	public Dimension getDefaultSize() {
-		return MapModeUtils.getMappedDimensions(getMapMode(), MapModeUtils.DEFAULT_SMALL_NODE_DIMENSION);
-	}
-
-	@Override
-	public Ellipse createPrimaryShape() {
-		return new FinalStateFigure(getMapMode());
-	}
-
-}
+/**
+ * Copyright (c) 2010 committers of YAKINDU and others.
+ * All rights reserved. This program and the accompanying materials
+ * are 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:
+ * 	committers of YAKINDU - initial API and implementation
+ * 
+ */
+package org.yakindu.sct.ui.editor.editparts;
+
+import org.eclipse.draw2d.Ellipse;
+import org.eclipse.draw2d.geometry.Dimension;
+import org.eclipse.gef.EditPolicy;
+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;
+import org.eclipse.gmf.runtime.diagram.ui.handles.ConnectionHandle.HandleDirection;
+import org.eclipse.gmf.runtime.notation.View;
+import org.yakindu.base.gmf.runtime.editparts.EllipseFixedSizeShapeNodeEditPart;
+import org.yakindu.base.gmf.runtime.editpolicies.OneWayConnectionHandlesEditPolicy;
+import org.yakindu.sct.ui.editor.editor.figures.FinalStateFigure;
+import org.yakindu.sct.ui.editor.editor.figures.utils.MapModeUtils;
+import org.yakindu.sct.ui.editor.policies.EnlargeContainerEditPolicy;
+import org.yakindu.sct.ui.editor.policies.FeedbackGraphicalNodeEditPolicy;
+
+/**
+ * 
+ * @author andreas muelder - Initial contribution and API
+ * 
+ */
+public class FinalStateEditPart extends EllipseFixedSizeShapeNodeEditPart {
+
+	public FinalStateEditPart(View view) {
+		super(view);
+	}
+
+	@Override
+	protected void createDefaultEditPolicies() {
+		super.createDefaultEditPolicies();
+		installEditPolicy(EditPolicyRoles.CONNECTION_HANDLES_ROLE, new OneWayConnectionHandlesEditPolicy(
+				HandleDirection.INCOMING));
+		installEditPolicy(EnlargeContainerEditPolicy.ROLE, new EnlargeContainerEditPolicy());
+		installEditPolicy(EditPolicy.GRAPHICAL_NODE_ROLE, new FeedbackGraphicalNodeEditPolicy());
+	}
+
+	@Override
+	public Dimension getDefaultSize() {
+		return MapModeUtils.getMappedDimensions(getMapMode(), MapModeUtils.DEFAULT_SMALL_NODE_DIMENSION);
+	}
+
+	@Override
+	public Ellipse createPrimaryShape() {
+		return new FinalStateFigure(getMapMode());
+	}
+
+}

+ 5 - 2
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/editparts/StateEditPart.java

@@ -44,6 +44,7 @@ import org.yakindu.sct.ui.editor.editor.figures.utils.GridDataFactory;
 import org.yakindu.sct.ui.editor.editor.figures.utils.MapModeUtils;
 import org.yakindu.sct.ui.editor.partitioning.DiagramPartitioningUtil;
 import org.yakindu.sct.ui.editor.policies.EnlargeContainerEditPolicy;
+import org.yakindu.sct.ui.editor.policies.FeedbackGraphicalNodeEditPolicy;
 import org.yakindu.sct.ui.editor.policies.PreferredSizeHandlerEditPolicy;
 import org.yakindu.sct.ui.editor.preferences.StatechartColorConstants;
 import org.yakindu.sct.ui.editor.providers.SemanticHints;
@@ -100,8 +101,9 @@ public class StateEditPart extends ShapeNodeEditPart implements IPrimaryEditPart
 			// StateFigure is drawed smaller (Blurshadow size)
 			public Rectangle getHandleBounds() {
 				Insets insets = new Insets(0, 0, StateFigure.BLUR_SHADOW_WIDTH, StateFigure.BLUR_SHADOW_WIDTH);
-				return new Rectangle(getBounds().x + insets.left, getBounds().y + insets.top, getBounds().width
-						- (insets.right + insets.left), getBounds().height - (insets.bottom + insets.top));
+				return new Rectangle(getBounds().x + insets.left, getBounds().y + insets.top,
+						getBounds().width - (insets.right + insets.left),
+						getBounds().height - (insets.bottom + insets.top));
 			}
 
 		};
@@ -125,6 +127,7 @@ public class StateEditPart extends ShapeNodeEditPart implements IPrimaryEditPart
 		removeEditPolicy(EditPolicyRoles.CREATION_ROLE);
 		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new PreferredSizeHandlerEditPolicy());
 		installEditPolicy(EnlargeContainerEditPolicy.ROLE, new EnlargeContainerEditPolicy());
+		installEditPolicy(EditPolicy.GRAPHICAL_NODE_ROLE, new FeedbackGraphicalNodeEditPolicy());
 	}
 
 	@Override

+ 62 - 60
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/editparts/SynchronizationEditPart.java

@@ -1,60 +1,62 @@
-/**
- * Copyright (c) 2011 committers of YAKINDU and others.
- * All rights reserved. This program and the accompanying materials
- * are 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:
- * 	committers of YAKINDU - initial API and implementation
- * 
- */
-package org.yakindu.sct.ui.editor.editparts;
-
-import org.eclipse.draw2d.ColorConstants;
-import org.eclipse.draw2d.StackLayout;
-import org.eclipse.gef.EditPolicy;
-import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeNodeEditPart;
-import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;
-import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;
-import org.eclipse.gmf.runtime.notation.View;
-import org.yakindu.base.gmf.runtime.editpolicies.BarResizeEditPolicy;
-import org.yakindu.sct.ui.editor.editor.figures.SynchronizationFigure;
-import org.yakindu.sct.ui.editor.policies.EnlargeContainerEditPolicy;
-
-/**
- * 
- * @author andreas muelder - Initial contribution and API
- * 
- */
-public class SynchronizationEditPart extends ShapeNodeEditPart {
-
-	private static final int DEFAULT_WIDTH = 8;
-	private static final int DEFAULT_HEIGHT = 32;
-
-	public SynchronizationEditPart(View view) {
-		super(view);
-	}
-
-	@Override
-	protected void createDefaultEditPolicies() {
-		super.createDefaultEditPolicies();
-		installEditPolicy(EnlargeContainerEditPolicy.ROLE, new EnlargeContainerEditPolicy());
-	}
-
-	@Override
-	protected NodeFigure createNodeFigure() {
-		final DefaultSizeNodeFigure nodeFigure = new DefaultSizeNodeFigure(getMapMode().DPtoLP(DEFAULT_WIDTH),
-				getMapMode().DPtoLP(DEFAULT_HEIGHT));
-		nodeFigure.setLayoutManager(new StackLayout());
-		nodeFigure.add(new SynchronizationFigure(getMapMode()));
-		nodeFigure.setForegroundColor(ColorConstants.black);
-		nodeFigure.setBackgroundColor(ColorConstants.black);
-		return nodeFigure;
-	}
-
-	@Override
-	public EditPolicy getPrimaryDragEditPolicy() {
-		return new BarResizeEditPolicy();
-	}
-
-}
+/**
+ * Copyright (c) 2011 committers of YAKINDU and others.
+ * All rights reserved. This program and the accompanying materials
+ * are 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:
+ * 	committers of YAKINDU - initial API and implementation
+ * 
+ */
+package org.yakindu.sct.ui.editor.editparts;
+
+import org.eclipse.draw2d.ColorConstants;
+import org.eclipse.draw2d.StackLayout;
+import org.eclipse.gef.EditPolicy;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeNodeEditPart;
+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;
+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;
+import org.eclipse.gmf.runtime.notation.View;
+import org.yakindu.base.gmf.runtime.editpolicies.BarResizeEditPolicy;
+import org.yakindu.sct.ui.editor.editor.figures.SynchronizationFigure;
+import org.yakindu.sct.ui.editor.policies.EnlargeContainerEditPolicy;
+import org.yakindu.sct.ui.editor.policies.FeedbackGraphicalNodeEditPolicy;
+
+/**
+ * 
+ * @author andreas muelder - Initial contribution and API
+ * 
+ */
+public class SynchronizationEditPart extends ShapeNodeEditPart {
+
+	private static final int DEFAULT_WIDTH = 8;
+	private static final int DEFAULT_HEIGHT = 32;
+
+	public SynchronizationEditPart(View view) {
+		super(view);
+	}
+
+	@Override
+	protected void createDefaultEditPolicies() {
+		super.createDefaultEditPolicies();
+		installEditPolicy(EnlargeContainerEditPolicy.ROLE, new EnlargeContainerEditPolicy());
+		installEditPolicy(EditPolicy.GRAPHICAL_NODE_ROLE, new FeedbackGraphicalNodeEditPolicy());
+	}
+
+	@Override
+	protected NodeFigure createNodeFigure() {
+		final DefaultSizeNodeFigure nodeFigure = new DefaultSizeNodeFigure(getMapMode().DPtoLP(DEFAULT_WIDTH),
+				getMapMode().DPtoLP(DEFAULT_HEIGHT));
+		nodeFigure.setLayoutManager(new StackLayout());
+		nodeFigure.add(new SynchronizationFigure(getMapMode()));
+		nodeFigure.setForegroundColor(ColorConstants.black);
+		nodeFigure.setBackgroundColor(ColorConstants.black);
+		return nodeFigure;
+	}
+
+	@Override
+	public EditPolicy getPrimaryDragEditPolicy() {
+		return new BarResizeEditPolicy();
+	}
+
+}

+ 50 - 0
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/policies/FeedbackGraphicalNodeEditPolicy.java

@@ -0,0 +1,50 @@
+/**
+ * Copyright (c) 2015 committers of YAKINDU and others.
+ * All rights reserved. This program and the accompanying materials
+ * are 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:
+ * 	committers of YAKINDU - initial API and implementation
+ * 
+ */
+package org.yakindu.sct.ui.editor.policies;
+
+import org.eclipse.draw2d.Connection;
+import org.eclipse.gef.Request;
+import org.eclipse.gef.RootEditPart;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramRootEditPart;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.GraphicalNodeEditPolicy;
+import org.eclipse.gmf.runtime.draw2d.ui.mapmode.IMapMode;
+import org.eclipse.gmf.runtime.draw2d.ui.mapmode.MapModeUtil;
+import org.yakindu.sct.ui.editor.editor.figures.TransitionFigure;
+
+/**
+ * 
+ * @author andreas muelder - Initial contribution and API
+ * 
+ */
+public class FeedbackGraphicalNodeEditPolicy extends GraphicalNodeEditPolicy {
+
+	@Override
+	protected Connection createDummyConnection(Request req) {
+		return new TransitionFigure(getMapMode());
+	}
+
+	protected IMapMode getMapMode() {
+		RootEditPart root = getHost().getRoot();
+		if (root instanceof DiagramRootEditPart) {
+			DiagramRootEditPart dgrmRoot = (DiagramRootEditPart) root;
+			return dgrmRoot.getMapMode();
+		}
+
+		return MapModeUtil.getMapMode();
+	}
+
+	@Override
+	public IGraphicalEditPart getHost() {
+		return (IGraphicalEditPart) super.getHost();
+	}
+
+}