Przeglądaj źródła

Direct Edit on Entry nodes, change entry kind bug fixed

Andreas Mülder 14 lat temu
rodzic
commit
9d7acb3d2c

+ 19 - 1
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/editparts/EntryBorderItemEditPart.java

@@ -12,9 +12,12 @@ package org.yakindu.sct.ui.editor.editparts;
 
 import org.eclipse.draw2d.StackLayout;
 import org.eclipse.gef.EditPart;
+import org.eclipse.gef.EditPolicy;
 import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderItemEditPart;
+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;
 import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;
 import org.eclipse.gmf.runtime.notation.View;
+
 /**
  * 
  * @author andreas muelder
@@ -26,6 +29,14 @@ public class EntryBorderItemEditPart extends AbstractBorderItemEditPart {
 		super(view);
 	}
 
+	@Override
+	protected void createDefaultEditPolicies() {
+		super.createDefaultEditPolicies();
+		removeEditPolicy(EditPolicyRoles.SORT_FILTER_ROLE);
+		removeEditPolicy(EditPolicyRoles.CONNECTION_HANDLES_ROLE);
+		removeEditPolicy(EditPolicy.CONTAINER_ROLE);
+		removeEditPolicy(EditPolicy.COMPONENT_ROLE);
+	}
 	@Override
 	protected NodeFigure createNodeFigure() {
 		NodeFigure figure = new NodeFigure();
@@ -44,9 +55,16 @@ public class EntryBorderItemEditPart extends AbstractBorderItemEditPart {
 	@Override
 	protected void removeChildVisual(EditPart childEditPart) {
 		if (childEditPart instanceof EntryLabelEditPart) {
-			getFigure().remove(((EntryLabelEditPart) childEditPart).getFigure());
+			getFigure()
+					.remove(((EntryLabelEditPart) childEditPart).getFigure());
 		} else
 			super.removeChildVisual(childEditPart);
 	}
 
+	public EditPart getPrimaryChildEditPart() {
+		if (getChildren().size() > 0)
+			return (EditPart) getChildren().get(0);
+		return null;
+	}
+
 }

+ 13 - 4
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/editparts/EntryEditPart.java

@@ -15,8 +15,10 @@ import org.eclipse.draw2d.IFigure;
 import org.eclipse.draw2d.StackLayout;
 import org.eclipse.draw2d.geometry.Rectangle;
 import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.gef.Request;
 import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;
 import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
 import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;
 import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;
 import org.eclipse.gmf.runtime.diagram.ui.handles.ConnectionHandle.HandleDirection;
@@ -40,6 +42,7 @@ import de.itemis.gmf.runtime.commons.editpolicies.OneWayConnectionHandlesEditPol
  */
 public class EntryEditPart extends AbstractBorderedShapeEditPart {
 
+	private IGraphicalEditPart primaryChildEditPart;
 
 	public EntryEditPart(View view) {
 		super(view);
@@ -78,7 +81,7 @@ public class EntryEditPart extends AbstractBorderedShapeEditPart {
 				notification.getFeature())) {
 			// TODO: We have to remove the old figure, this does not work
 			// currently because the connections get broken then.
-			getNodeFigure().add(getPrimaryShape());
+			getMainFigure().add(getPrimaryShape());
 		}
 		super.handleNotificationEvent(notification);
 	}
@@ -88,12 +91,12 @@ public class EntryEditPart extends AbstractBorderedShapeEditPart {
 		return (Node) super.getNotationView();
 	}
 
-	public IFigure getMainFigure() {
-		return getFigure();
-	}
 
 	protected void addBorderItem(IFigure borderItemContainer,
 			IBorderItemEditPart borderItemEditPart) {
+		if (primaryChildEditPart == null) {
+			primaryChildEditPart = borderItemEditPart;
+		}
 		BorderItemLocator locator = new BorderItemLocator(getMainFigure()) {
 			protected Rectangle getParentBorder() {
 				Rectangle bounds = getParentFigure().getBounds().getCopy();
@@ -112,4 +115,10 @@ public class EntryEditPart extends AbstractBorderedShapeEditPart {
 		figure.add(getPrimaryShape());
 		return figure;
 	}
+
+	@Override
+	protected void performDirectEditRequest(Request request) {
+		primaryChildEditPart.performRequest(request);
+	}
+
 }

+ 6 - 0
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/editparts/StateNameEditPart.java

@@ -1,6 +1,7 @@
 package org.yakindu.sct.ui.editor.editparts;
 
 import org.eclipse.draw2d.IFigure;
+import org.eclipse.gef.Request;
 import org.eclipse.gmf.runtime.notation.View;
 import org.yakindu.sct.model.sgraph.SGraphPackage;
 import org.yakindu.sct.ui.editor.DiagramActivator;
@@ -28,5 +29,10 @@ public class StateNameEditPart extends TextAwareLabelEditPart {
 		// Figure is set from parent addChild
 		return null;
 	}
+	
+	@Override
+	protected void performDirectEditRequest(Request request) {
+		super.performDirectEditRequest(request);
+	}
 
 }