Przeglądaj źródła

Creation of Notes inside of State Figure Compartments disables

Andreas Mülder 13 lat temu
rodzic
commit
687ae98106

+ 1 - 14
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/editparts/StateEditPart.java

@@ -25,12 +25,9 @@ import org.eclipse.gef.EditPart;
 import org.eclipse.gef.EditPolicy;
 import org.eclipse.gef.GraphicalEditPart;
 import org.eclipse.gef.Request;
-import org.eclipse.gef.commands.Command;
-import org.eclipse.gef.commands.UnexecutableCommand;
 import org.eclipse.gef.requests.GroupRequest;
 import org.eclipse.gmf.runtime.diagram.ui.editparts.IPrimaryEditPart;
 import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeNodeEditPart;
-import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;
 import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;
 import org.eclipse.gmf.runtime.diagram.ui.editpolicies.NonResizableEditPolicyEx;
 import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableEditPolicyEx;
@@ -129,17 +126,7 @@ public class StateEditPart extends ShapeNodeEditPart implements
 	@Override
 	protected void createDefaultEditPolicies() {
 		super.createDefaultEditPolicies();
-		// installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,
-		// new RelationshipSemanticEditPolicy());
-		// We don't want to allow creation for parent editpart on a State
-		installEditPolicy(EditPolicyRoles.CREATION_ROLE,
-				new CreationEditPolicy() {
-					@Override
-					protected Command getCreateElementAndViewCommand(
-							CreateViewAndElementRequest request) {
-						return UnexecutableCommand.INSTANCE;
-					}
-				});
+		removeEditPolicy(EditPolicyRoles.CREATION_ROLE);
 
 		if (isCollapsed()) {
 			installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

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

@@ -23,8 +23,8 @@ import org.eclipse.gmf.runtime.notation.BooleanValueStyle;
 import org.eclipse.gmf.runtime.notation.NotationPackage;
 import org.eclipse.gmf.runtime.notation.View;
 import org.yakindu.sct.model.sgraph.SGraphPackage;
-import org.yakindu.sct.ui.editor.policies.CompartmentCreationEditPolicy;
 import org.yakindu.sct.ui.editor.policies.StateCompartmentCanonicalEditPolicy;
+import org.yakindu.sct.ui.editor.policies.StateCompartmentCreationEditPolicy;
 
 import de.itemis.gmf.runtime.commons.editpolicies.CompartmentLayoutEditPolicy;
 
@@ -59,7 +59,7 @@ public class StateFigureCompartmentEditPart extends
 	protected void createDefaultEditPolicies() {
 		super.createDefaultEditPolicies();
 		installEditPolicy(EditPolicyRoles.CREATION_ROLE,
-				new CompartmentCreationEditPolicy());
+				new StateCompartmentCreationEditPolicy());
 		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,
 				new StateCompartmentCanonicalEditPolicy());
 		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+ 43 - 0
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/policies/StateCompartmentCreationEditPolicy.java

@@ -0,0 +1,43 @@
+/**
+ * Copyright (c) 2012 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 java.util.List;
+
+import org.eclipse.gef.commands.Command;
+import org.eclipse.gef.commands.UnexecutableCommand;
+import org.eclipse.gmf.runtime.diagram.core.util.ViewType;
+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;
+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest.ViewDescriptor;
+
+/**
+ * 
+ * @author andreas muelder - Initial contribution and API
+ * 
+ */
+public class StateCompartmentCreationEditPolicy extends
+		CompartmentCreationEditPolicy {
+
+	@Override
+	protected Command getCreateCommand(CreateViewRequest request) {
+		List<? extends ViewDescriptor> viewDescriptors = request
+				.getViewDescriptors();
+		for (ViewDescriptor viewDescriptor : viewDescriptors) {
+			String semanticHint = viewDescriptor.getSemanticHint();
+			if (ViewType.NOTE.equals(semanticHint)
+					|| ViewType.NOTEATTACHMENT.equals(semanticHint)
+					|| ViewType.TEXT.equals(semanticHint)) {
+				return UnexecutableCommand.INSTANCE;
+			}
+		}
+		return super.getCreateCommand(request);
+	}
+}