Просмотр исходного кода

Added name Label for Exit Points

Andreas Mülder 14 лет назад
Родитель
Сommit
de1b9a2c01
15 измененных файлов с 167 добавлено и 187 удалено
  1. 9 2
      plugins/org.yakindu.sct.ui.editor/plugin.xml
  2. 0 109
      plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/editparts/AbstractStateEditPart.java
  3. 10 8
      plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/editparts/EntryBorderItemEditPart.java
  4. 51 0
      plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/editparts/BorderedShapeEditPart.java
  5. 1 30
      plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/editparts/EntryEditPart.java
  6. 14 13
      plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/editparts/ExitEditPart.java
  7. 2 2
      plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/editparts/EntryLabelEditPart.java
  8. 62 7
      plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/editparts/StateEditPart.java
  9. 2 2
      plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/factories/EntryViewFactory.java
  10. 2 2
      plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/factories/EntryBorderItemViewFactory.java
  11. 1 0
      plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/factories/StateViewFactory.java
  12. 1 1
      plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/propertysheets/NamePropertySection.java
  13. 3 2
      plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/providers/SemanticHints.java
  14. 4 4
      plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/providers/StatechartDiagramEditPartProvider.java
  15. 5 5
      plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/providers/StatechartDiagramViewProvider.java

+ 9 - 2
plugins/org.yakindu.sct.ui.editor/plugin.xml

@@ -482,8 +482,8 @@
          <propertySection
          <propertySection
             id="property.section.domain.state" 
             id="property.section.domain.state" 
             tab="property.tab.domain"
             tab="property.tab.domain"
-            class="org.yakindu.sct.ui.editor.propertysheets.StatePropertySection"
-            filter="org.yakindu.sct.ui.editor.StatePropertySectionFilter">
+            class="org.yakindu.sct.ui.editor.propertysheets.StatePropertySection">
+           <input type="org.yakindu.sct.ui.editor.editparts.StateEditPart"/>
          </propertySection>
          </propertySection>
         <!-- Statechart model section -->         
         <!-- Statechart model section -->         
          <propertySection
          <propertySection
@@ -507,6 +507,13 @@
             tab="property.tab.domain"
             tab="property.tab.domain"
             class="org.yakindu.sct.ui.editor.propertysheets.EntryPropertySection">
             class="org.yakindu.sct.ui.editor.propertysheets.EntryPropertySection">
             <input type="org.yakindu.sct.ui.editor.editparts.EntryEditPart"/>
             <input type="org.yakindu.sct.ui.editor.editparts.EntryEditPart"/>
+         </propertySection>
+            <!-- Exit model section -->         
+         <propertySection
+            id="property.section.domain.exit" 
+            tab="property.tab.domain"
+            class="org.yakindu.sct.ui.editor.propertysheets.NamePropertySection">
+            <input type="org.yakindu.sct.ui.editor.editparts.ExitEditPart"/>
          </propertySection>
          </propertySection>
             <!-- Region model section -->         
             <!-- Region model section -->         
          <propertySection
          <propertySection

+ 0 - 109
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/editparts/AbstractStateEditPart.java

@@ -1,109 +0,0 @@
-/**
- * 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.IFigure;
-import org.eclipse.draw2d.StackLayout;
-import org.eclipse.draw2d.geometry.Dimension;
-import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.ecore.EStructuralFeature;
-import org.eclipse.gef.EditPart;
-import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeNodeEditPart;
-import org.eclipse.gmf.runtime.draw2d.ui.figures.FigureUtilities;
-import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;
-import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;
-import org.eclipse.gmf.runtime.notation.NotationPackage;
-import org.eclipse.gmf.runtime.notation.View;
-import org.yakindu.sct.model.sgraph.State;
-import org.yakindu.sct.ui.editor.editor.figures.StateFigure;
-import org.yakindu.sct.ui.editor.editor.figures.utils.MapModeUtils;
-import org.yakindu.sct.ui.editor.preferences.StatechartColorConstants;
-
-/**
- * Base class for {@link StateEditPart}s and {@link SubmachineStateEditPart}s
- * 
- * @author andreas muelder - Initial contribution and API
- * 
- */
-public abstract class AbstractStateEditPart extends ShapeNodeEditPart {
-
-	public AbstractStateEditPart(View view) {
-		super(view);
-	}
-
-	@Override
-	protected NodeFigure createNodeFigure() {
-		final NodeFigure figure = new DefaultSizeNodeFigure(getDefaultSize());
-		figure.setLayoutManager(new StackLayout());
-		figure.setMinimumSize(MapModeUtils
-				.getDefaultSizeDimension(getMapMode()));
-		figure.add(createPrimaryShape());
-		return figure;
-	}
-
-	protected Dimension getDefaultSize() {
-		return MapModeUtils.getDefaultSizeDimension(getMapMode());
-	}
-
-	public StateFigure createPrimaryShape() {
-		return new StateFigure(getMapMode());
-	}
-
-	public StateFigure getPrimaryShape() {
-		return (StateFigure) getFigure().getChildren().get(0);
-	}
-
-	@Override
-	protected void addChildVisual(EditPart childEditPart, int index) {
-		if (childEditPart instanceof StateNameEditPart) {
-			((StateNameEditPart) childEditPart).setLabel(getPrimaryShape()
-					.getNameFigure());
-		} else if (childEditPart instanceof StateTextCompartmentEditPart) {
-			IFigure pane = getPrimaryShape().getTextCompartmentPane();
-			IFigure compartmentFigure = ((StateTextCompartmentEditPart) childEditPart)
-					.getFigure();
-			pane.add(compartmentFigure);
-		} else {
-			super.addChildVisual(childEditPart, index);
-		}
-	}
-
-	/**
-	 * Returns the default background color for states
-	 */
-	@Override
-	public Object getPreferredValue(EStructuralFeature feature) {
-		if (feature == NotationPackage.eINSTANCE.getLineStyle_LineColor()) {
-			return FigureUtilities
-					.RGBToInteger(StatechartColorConstants.STATE_LINE_COLOR
-							.getRGB());
-		} else if (feature == NotationPackage.eINSTANCE
-				.getFillStyle_FillColor()) {
-			return FigureUtilities
-					.RGBToInteger(StatechartColorConstants.STATE_BG_COLOR
-							.getRGB());
-		}
-		return super.getPreferredValue(feature);
-	}
-
-	@Override
-	public State resolveSemanticElement() {
-		return (State) super.resolveSemanticElement();
-	}
-
-	@Override
-	protected void handleNotificationEvent(Notification notification) {
-		if (notification.getFeature() == NotationPackage.Literals.DRAWER_STYLE__COLLAPSED) {
-			refreshVisuals();
-		}
-		super.handleNotificationEvent(notification);
-	}
-}

+ 10 - 8
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/editparts/EntryBorderItemEditPart.java

@@ -20,12 +20,12 @@ import org.eclipse.gmf.runtime.notation.View;
 
 
 /**
 /**
  * 
  * 
- * @author andreas muelder
+ * @author andreas muelder - Initial contribution and API
  * 
  * 
  */
  */
-public class EntryBorderItemEditPart extends AbstractBorderItemEditPart {
+public class BorderItemEditPart extends AbstractBorderItemEditPart {
 
 
-	public EntryBorderItemEditPart(View view) {
+	public BorderItemEditPart(View view) {
 		super(view);
 		super(view);
 	}
 	}
 
 
@@ -37,6 +37,7 @@ public class EntryBorderItemEditPart extends AbstractBorderItemEditPart {
 		removeEditPolicy(EditPolicy.CONTAINER_ROLE);
 		removeEditPolicy(EditPolicy.CONTAINER_ROLE);
 		removeEditPolicy(EditPolicy.COMPONENT_ROLE);
 		removeEditPolicy(EditPolicy.COMPONENT_ROLE);
 	}
 	}
+
 	@Override
 	@Override
 	protected NodeFigure createNodeFigure() {
 	protected NodeFigure createNodeFigure() {
 		NodeFigure figure = new NodeFigure();
 		NodeFigure figure = new NodeFigure();
@@ -46,17 +47,18 @@ public class EntryBorderItemEditPart extends AbstractBorderItemEditPart {
 
 
 	@Override
 	@Override
 	protected void addChildVisual(EditPart childEditPart, int index) {
 	protected void addChildVisual(EditPart childEditPart, int index) {
-		if (childEditPart instanceof EntryLabelEditPart) {
-			getFigure().add(((EntryLabelEditPart) childEditPart).getFigure());
+		if (childEditPart instanceof NamedElementLabelEditPart) {
+			getFigure().add(
+					((NamedElementLabelEditPart) childEditPart).getFigure());
 		} else
 		} else
 			super.addChildVisual(childEditPart, index);
 			super.addChildVisual(childEditPart, index);
 	}
 	}
 
 
 	@Override
 	@Override
 	protected void removeChildVisual(EditPart childEditPart) {
 	protected void removeChildVisual(EditPart childEditPart) {
-		if (childEditPart instanceof EntryLabelEditPart) {
-			getFigure()
-					.remove(((EntryLabelEditPart) childEditPart).getFigure());
+		if (childEditPart instanceof NamedElementLabelEditPart) {
+			getFigure().remove(
+					((NamedElementLabelEditPart) childEditPart).getFigure());
 		} else
 		} else
 			super.removeChildVisual(childEditPart);
 			super.removeChildVisual(childEditPart);
 	}
 	}

+ 51 - 0
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/editparts/BorderedShapeEditPart.java

@@ -0,0 +1,51 @@
+package org.yakindu.sct.ui.editor.editparts;
+
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.geometry.Rectangle;
+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.figures.BorderItemLocator;
+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;
+import org.eclipse.gmf.runtime.notation.View;
+
+/**
+ * 
+ * @author andreas muelder - Initial contribution and API
+ * 
+ */
+public class BorderedShapeEditPart extends AbstractBorderedShapeEditPart {
+
+	private IGraphicalEditPart primaryChildEditPart;
+
+	public BorderedShapeEditPart(View view) {
+		super(view);
+	}
+
+	@Override
+	protected NodeFigure createMainFigure() {
+		return null;
+	}
+
+	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();
+				bounds.expand(5, 5);
+				return bounds;
+			}
+		};
+		borderItemContainer.add(borderItemEditPart.getFigure(), locator);
+	}
+
+	@Override
+	protected void performDirectEditRequest(Request request) {
+		primaryChildEditPart.performRequest(request);
+	}
+
+}

+ 1 - 30
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/editparts/EntryEditPart.java

@@ -11,18 +11,11 @@
 package org.yakindu.sct.ui.editor.editparts;
 package org.yakindu.sct.ui.editor.editparts;
 
 
 import org.eclipse.draw2d.Ellipse;
 import org.eclipse.draw2d.Ellipse;
-import org.eclipse.draw2d.IFigure;
 import org.eclipse.draw2d.StackLayout;
 import org.eclipse.draw2d.StackLayout;
-import org.eclipse.draw2d.geometry.Rectangle;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.gef.EditPolicy;
 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;
-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.editpolicies.EditPolicyRoles;
 import org.eclipse.gmf.runtime.diagram.ui.editpolicies.NonResizableEditPolicyEx;
 import org.eclipse.gmf.runtime.diagram.ui.editpolicies.NonResizableEditPolicyEx;
-import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;
 import org.eclipse.gmf.runtime.diagram.ui.handles.ConnectionHandle.HandleDirection;
 import org.eclipse.gmf.runtime.diagram.ui.handles.ConnectionHandle.HandleDirection;
 import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;
 import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;
 import org.eclipse.gmf.runtime.notation.Node;
 import org.eclipse.gmf.runtime.notation.Node;
@@ -43,9 +36,7 @@ import de.itemis.gmf.runtime.commons.figures.EllipseAnchorDefaultSizeNodeFigure;
  * 
  * 
  * @author andreas muelder
  * @author andreas muelder
  */
  */
-public class EntryEditPart extends AbstractBorderedShapeEditPart {
-
-	private IGraphicalEditPart primaryChildEditPart;
+public class EntryEditPart extends BorderedShapeEditPart {
 
 
 	public EntryEditPart(View view) {
 	public EntryEditPart(View view) {
 		super(view);
 		super(view);
@@ -98,21 +89,6 @@ public class EntryEditPart extends AbstractBorderedShapeEditPart {
 		return (Node) super.getNotationView();
 		return (Node) super.getNotationView();
 	}
 	}
 
 
-	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();
-				bounds.expand(15, 15);
-				return bounds;
-			}
-		};
-		borderItemContainer.add(borderItemEditPart.getFigure(), locator);
-	}
-
 	@Override
 	@Override
 	protected NodeFigure createMainFigure() {
 	protected NodeFigure createMainFigure() {
 		final NodeFigure figure = new EllipseAnchorDefaultSizeNodeFigure(
 		final NodeFigure figure = new EllipseAnchorDefaultSizeNodeFigure(
@@ -122,9 +98,4 @@ public class EntryEditPart extends AbstractBorderedShapeEditPart {
 		return figure;
 		return figure;
 	}
 	}
 
 
-	@Override
-	protected void performDirectEditRequest(Request request) {
-		primaryChildEditPart.performRequest(request);
-	}
-
 }
 }

+ 14 - 13
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/editparts/ExitEditPart.java

@@ -10,23 +10,25 @@
  */
  */
 package org.yakindu.sct.ui.editor.editparts;
 package org.yakindu.sct.ui.editor.editparts;
 
 
-import org.eclipse.draw2d.Ellipse;
-import org.eclipse.draw2d.geometry.Dimension;
+import org.eclipse.draw2d.StackLayout;
+import org.eclipse.gef.EditPolicy;
 import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;
 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.handles.ConnectionHandle.HandleDirection;
 import org.eclipse.gmf.runtime.diagram.ui.handles.ConnectionHandle.HandleDirection;
+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;
 import org.eclipse.gmf.runtime.notation.View;
 import org.eclipse.gmf.runtime.notation.View;
 import org.yakindu.sct.ui.editor.editor.figures.ExitFigure;
 import org.yakindu.sct.ui.editor.editor.figures.ExitFigure;
 import org.yakindu.sct.ui.editor.editor.figures.utils.MapModeUtils;
 import org.yakindu.sct.ui.editor.editor.figures.utils.MapModeUtils;
 
 
-import de.itemis.gmf.runtime.commons.editparts.EllipseFixedSizeShapeNodeEditPart;
 import de.itemis.gmf.runtime.commons.editpolicies.OneWayConnectionHandlesEditPolicy;
 import de.itemis.gmf.runtime.commons.editpolicies.OneWayConnectionHandlesEditPolicy;
+import de.itemis.gmf.runtime.commons.figures.EllipseAnchorDefaultSizeNodeFigure;
 
 
 /**
 /**
  * 
  * 
- * @author andreas muelder
+ * @author andreas muelder - Initial contribution and API
  * 
  * 
  */
  */
-public class ExitEditPart extends EllipseFixedSizeShapeNodeEditPart {
+public class ExitEditPart extends BorderedShapeEditPart {
 
 
 	public ExitEditPart(View view) {
 	public ExitEditPart(View view) {
 		super(view);
 		super(view);
@@ -37,17 +39,16 @@ public class ExitEditPart extends EllipseFixedSizeShapeNodeEditPart {
 		super.createDefaultEditPolicies();
 		super.createDefaultEditPolicies();
 		installEditPolicy(EditPolicyRoles.CONNECTION_HANDLES_ROLE,
 		installEditPolicy(EditPolicyRoles.CONNECTION_HANDLES_ROLE,
 				new OneWayConnectionHandlesEditPolicy(HandleDirection.INCOMING));
 				new OneWayConnectionHandlesEditPolicy(HandleDirection.INCOMING));
+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,
+				new NonResizableEditPolicyEx());
 	}
 	}
 
 
 	@Override
 	@Override
-	public Dimension getDefaultSize() {
-		return MapModeUtils.getMappedDimensions(getMapMode(),
+	protected NodeFigure createMainFigure() {
+		final NodeFigure figure = new EllipseAnchorDefaultSizeNodeFigure(
 				MapModeUtils.DEFAULT_SMALL_NODE_DIMENSION);
 				MapModeUtils.DEFAULT_SMALL_NODE_DIMENSION);
+		figure.setLayoutManager(new StackLayout());
+		figure.add(new ExitFigure(getMapMode()));
+		return figure;
 	}
 	}
-
-	@Override
-	public Ellipse getPrimaryShape() {
-		return new ExitFigure(getMapMode());
-	}
-
 }
 }

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

@@ -21,9 +21,9 @@ import de.itemis.gmf.runtime.commons.editparts.TextAwareLabelEditPart;
  * @author andreas muelder
  * @author andreas muelder
  * 
  * 
  */
  */
-public class EntryLabelEditPart extends TextAwareLabelEditPart {
+public class NamedElementLabelEditPart extends TextAwareLabelEditPart {
 
 
-	public EntryLabelEditPart(View view) {
+	public NamedElementLabelEditPart(View view) {
 		super(view, SGraphPackage.Literals.NAMED_ELEMENT__NAME,
 		super(view, SGraphPackage.Literals.NAMED_ELEMENT__NAME,
 				DiagramActivator.PLUGIN_ID);
 				DiagramActivator.PLUGIN_ID);
 	}
 	}

+ 62 - 7
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/editparts/StateEditPart.java

@@ -15,10 +15,13 @@ import java.util.List;
 
 
 import org.eclipse.draw2d.GridData;
 import org.eclipse.draw2d.GridData;
 import org.eclipse.draw2d.IFigure;
 import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.StackLayout;
 import org.eclipse.draw2d.geometry.Dimension;
 import org.eclipse.draw2d.geometry.Dimension;
 import org.eclipse.draw2d.geometry.Insets;
 import org.eclipse.draw2d.geometry.Insets;
 import org.eclipse.draw2d.geometry.Point;
 import org.eclipse.draw2d.geometry.Point;
 import org.eclipse.draw2d.geometry.Rectangle;
 import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EStructuralFeature;
 import org.eclipse.gef.EditPart;
 import org.eclipse.gef.EditPart;
 import org.eclipse.gef.EditPolicy;
 import org.eclipse.gef.EditPolicy;
 import org.eclipse.gef.GraphicalEditPart;
 import org.eclipse.gef.GraphicalEditPart;
@@ -27,21 +30,27 @@ import org.eclipse.gef.commands.Command;
 import org.eclipse.gef.commands.UnexecutableCommand;
 import org.eclipse.gef.commands.UnexecutableCommand;
 import org.eclipse.gef.requests.GroupRequest;
 import org.eclipse.gef.requests.GroupRequest;
 import org.eclipse.gmf.runtime.diagram.ui.editparts.IPrimaryEditPart;
 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.CreationEditPolicy;
 import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;
 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.NonResizableEditPolicyEx;
 import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableEditPolicyEx;
 import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableEditPolicyEx;
 import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewAndElementRequest;
 import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewAndElementRequest;
 import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;
 import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;
+import org.eclipse.gmf.runtime.draw2d.ui.figures.FigureUtilities;
+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;
 import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;
 import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;
 import org.eclipse.gmf.runtime.notation.Compartment;
 import org.eclipse.gmf.runtime.notation.Compartment;
 import org.eclipse.gmf.runtime.notation.Node;
 import org.eclipse.gmf.runtime.notation.Node;
 import org.eclipse.gmf.runtime.notation.NotationPackage;
 import org.eclipse.gmf.runtime.notation.NotationPackage;
 import org.eclipse.gmf.runtime.notation.View;
 import org.eclipse.gmf.runtime.notation.View;
+import org.yakindu.sct.model.sgraph.State;
 import org.yakindu.sct.ui.editor.editor.figures.StateFigure;
 import org.yakindu.sct.ui.editor.editor.figures.StateFigure;
 import org.yakindu.sct.ui.editor.editor.figures.utils.GridDataFactory;
 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.pictogram.PictogramEditPolicy;
 import org.yakindu.sct.ui.editor.pictogram.PictogramEditPolicy;
 import org.yakindu.sct.ui.editor.pictogram.SubchartPictogram;
 import org.yakindu.sct.ui.editor.pictogram.SubchartPictogram;
+import org.yakindu.sct.ui.editor.preferences.StatechartColorConstants;
 
 
 /**
 /**
  * The EditPart for the State.
  * The EditPart for the State.
@@ -52,7 +61,7 @@ import org.yakindu.sct.ui.editor.pictogram.SubchartPictogram;
  * @author markus muehlbrandt
  * @author markus muehlbrandt
  * 
  * 
  */
  */
-public class StateEditPart extends AbstractStateEditPart implements
+public class StateEditPart extends ShapeNodeEditPart implements
 		IPrimaryEditPart {
 		IPrimaryEditPart {
 
 
 	private EditPart figureCompartmentEditPart;
 	private EditPart figureCompartmentEditPart;
@@ -91,6 +100,18 @@ public class StateEditPart extends AbstractStateEditPart implements
 	}
 	}
 
 
 	@Override
 	@Override
+	protected NodeFigure createNodeFigure() {
+		NodeFigure figure = new DefaultSizeNodeFigure(getDefaultSize());
+		figure.setLayoutManager(new StackLayout());
+		figure.setMinimumSize(getDefaultSize());
+		figure.add(createPrimaryShape());
+		return figure;
+	}
+
+	private Dimension getDefaultSize() {
+		return MapModeUtils.getDefaultSizeDimension(getMapMode());
+	}
+
 	public StateFigure createPrimaryShape() {
 	public StateFigure createPrimaryShape() {
 		return new StateFigure(getMapMode());
 		return new StateFigure(getMapMode());
 	}
 	}
@@ -249,12 +270,15 @@ public class StateEditPart extends AbstractStateEditPart implements
 			IFigure compartmentFigure = ((StateFigureCompartmentEditPart) childEditPart)
 			IFigure compartmentFigure = ((StateFigureCompartmentEditPart) childEditPart)
 					.getFigure();
 					.getFigure();
 			pane.add(compartmentFigure);
 			pane.add(compartmentFigure);
-		} 
-//		else if (childEditPart instanceof SubmachineStateNameEditPart) {
-//			((SubmachineStateNameEditPart) childEditPart)
-//					.setLabel(getPrimaryShape().getNameFigure());
-//		} 
-		else {
+		} else if (childEditPart instanceof StateNameEditPart) {
+			((StateNameEditPart) childEditPart).setLabel(getPrimaryShape()
+					.getNameFigure());
+		} else if (childEditPart instanceof StateTextCompartmentEditPart) {
+			IFigure pane = getPrimaryShape().getTextCompartmentPane();
+			IFigure compartmentFigure = ((StateTextCompartmentEditPart) childEditPart)
+					.getFigure();
+			pane.add(compartmentFigure);
+		} else {
 			super.addChildVisual(childEditPart, index);
 			super.addChildVisual(childEditPart, index);
 		}
 		}
 	}
 	}
@@ -277,4 +301,35 @@ public class StateEditPart extends AbstractStateEditPart implements
 		removeListenerFilter("FigureCompartmentView");
 		removeListenerFilter("FigureCompartmentView");
 	}
 	}
 
 
+	/**
+	 * Returns the default background color for states
+	 */
+	@Override
+	public Object getPreferredValue(EStructuralFeature feature) {
+		if (feature == NotationPackage.eINSTANCE.getLineStyle_LineColor()) {
+			return FigureUtilities
+					.RGBToInteger(StatechartColorConstants.STATE_LINE_COLOR
+							.getRGB());
+		} else if (feature == NotationPackage.eINSTANCE
+				.getFillStyle_FillColor()) {
+			return FigureUtilities
+					.RGBToInteger(StatechartColorConstants.STATE_BG_COLOR
+							.getRGB());
+		}
+		return super.getPreferredValue(feature);
+	}
+
+	@Override
+	public State resolveSemanticElement() {
+		return (State) super.resolveSemanticElement();
+	}
+
+	@Override
+	protected void handleNotificationEvent(Notification notification) {
+		if (notification.getFeature() == NotationPackage.Literals.DRAWER_STYLE__COLLAPSED) {
+			refreshVisuals();
+		}
+		super.handleNotificationEvent(notification);
+	}
+
 }
 }

+ 2 - 2
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/factories/EntryViewFactory.java

@@ -22,7 +22,7 @@ import org.yakindu.sct.ui.editor.providers.SemanticHints;
  * @author andreas muelder
  * @author andreas muelder
  * 
  * 
  */
  */
-public class EntryViewFactory extends AbstractShapeViewFactory {
+public class BorderItemContainerViewFactory extends AbstractShapeViewFactory {
 
 
 	@Override
 	@Override
 	protected void decorateView(View containerView, View view,
 	protected void decorateView(View containerView, View view,
@@ -37,7 +37,7 @@ public class EntryViewFactory extends AbstractShapeViewFactory {
 			eObjectAdapter = new EObjectAdapter(eObject);
 			eObjectAdapter = new EObjectAdapter(eObject);
 		}
 		}
 		getViewService().createNode(eObjectAdapter, view,
 		getViewService().createNode(eObjectAdapter, view,
-				SemanticHints.ENTRY_BORDER_ITEM, ViewUtil.APPEND, true,
+				SemanticHints.BORDER_ITEM_LABEL_CONTAINER, ViewUtil.APPEND, true,
 				getPreferencesHint());
 				getPreferencesHint());
 
 
 	}
 	}

+ 2 - 2
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/factories/EntryBorderItemViewFactory.java

@@ -19,7 +19,7 @@ import org.yakindu.sct.ui.editor.providers.SemanticHints;
  * @author andreas muelder
  * @author andreas muelder
  * 
  * 
  */
  */
-public class EntryBorderItemViewFactory extends AbstractShapeViewFactory {
+public class BorderItemLabelViewFactory extends AbstractShapeViewFactory {
 
 
 	@Override
 	@Override
 	protected void decorateView(View containerView, View view,
 	protected void decorateView(View containerView, View view,
@@ -28,6 +28,6 @@ public class EntryBorderItemViewFactory extends AbstractShapeViewFactory {
 		super.decorateView(containerView, view, semanticAdapter, semanticHint, index,
 		super.decorateView(containerView, view, semanticAdapter, semanticHint, index,
 				persisted);
 				persisted);
 		
 		
-		FactoryUtils.createLabel(view, SemanticHints.ENTRY_LABEL);
+		FactoryUtils.createLabel(view, SemanticHints.BORDER_ITEM_LABEL);
 	}
 	}
 }
 }

+ 1 - 0
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/factories/StateViewFactory.java

@@ -78,6 +78,7 @@ public class StateViewFactory extends AbstractShapeViewFactory {
 
 
 	@Override
 	@Override
 	protected List<Style> createStyles(View view) {
 	protected List<Style> createStyles(View view) {
+		@SuppressWarnings("unchecked")
 		List<Style> styles = super.createStyles(view);
 		List<Style> styles = super.createStyles(view);
 		styles.add(NotationFactory.eINSTANCE.createFontStyle());
 		styles.add(NotationFactory.eINSTANCE.createFontStyle());
 		return styles;
 		return styles;

+ 1 - 1
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/propertysheets/NamePropertySection.java

@@ -15,7 +15,7 @@ import de.itemis.gmf.runtime.commons.properties.descriptors.TextPropertyDescript
  * @author andreas muelder
  * @author andreas muelder
  * 
  * 
  */
  */
-public abstract class NamePropertySection extends AbstractEditorPropertySection {
+public class NamePropertySection extends AbstractEditorPropertySection {
 
 
 	@Override
 	@Override
 	protected void createPropertyDescriptors(
 	protected void createPropertyDescriptors(

+ 3 - 2
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/providers/SemanticHints.java

@@ -45,12 +45,13 @@ public interface SemanticHints {
 	String SHALLOWHISTORY = "ShallowHistory";
 	String SHALLOWHISTORY = "ShallowHistory";
 
 
 	String ENTRY = "Entry";
 	String ENTRY = "Entry";
-	String ENTRY_BORDER_ITEM = "EntryBorderItem";
-	String ENTRY_LABEL = "EntryLabel";
 
 
 	String FINALSTATE = "FinalState";
 	String FINALSTATE = "FinalState";
 	String EXIT = "Exit";
 	String EXIT = "Exit";
 
 
+	String BORDER_ITEM_LABEL_CONTAINER = "BorderItemLabelContainer";
+	String BORDER_ITEM_LABEL = "BorderItemLabel";
+
 	String JOIN = "Join";
 	String JOIN = "Join";
 
 
 	String JUNCTION = "Junction";
 	String JUNCTION = "Junction";

+ 4 - 4
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/providers/StatechartDiagramEditPartProvider.java

@@ -18,9 +18,9 @@ import org.eclipse.gmf.runtime.diagram.ui.services.editpart.AbstractEditPartProv
 import org.eclipse.gmf.runtime.notation.View;
 import org.eclipse.gmf.runtime.notation.View;
 import org.yakindu.sct.ui.editor.editor.StatechartDiagramEditor;
 import org.yakindu.sct.ui.editor.editor.StatechartDiagramEditor;
 import org.yakindu.sct.ui.editor.editparts.ChoiceEditPart;
 import org.yakindu.sct.ui.editor.editparts.ChoiceEditPart;
-import org.yakindu.sct.ui.editor.editparts.EntryBorderItemEditPart;
+import org.yakindu.sct.ui.editor.editparts.BorderItemEditPart;
 import org.yakindu.sct.ui.editor.editparts.EntryEditPart;
 import org.yakindu.sct.ui.editor.editparts.EntryEditPart;
-import org.yakindu.sct.ui.editor.editparts.EntryLabelEditPart;
+import org.yakindu.sct.ui.editor.editparts.NamedElementLabelEditPart;
 import org.yakindu.sct.ui.editor.editparts.ExitEditPart;
 import org.yakindu.sct.ui.editor.editparts.ExitEditPart;
 import org.yakindu.sct.ui.editor.editparts.FinalStateEditPart;
 import org.yakindu.sct.ui.editor.editparts.FinalStateEditPart;
 import org.yakindu.sct.ui.editor.editparts.JunctionEditPart;
 import org.yakindu.sct.ui.editor.editparts.JunctionEditPart;
@@ -64,8 +64,8 @@ public class StatechartDiagramEditPartProvider extends AbstractEditPartProvider
 		editParts.put(CHOICE, ChoiceEditPart.class);
 		editParts.put(CHOICE, ChoiceEditPart.class);
 		editParts.put(FINALSTATE, FinalStateEditPart.class);
 		editParts.put(FINALSTATE, FinalStateEditPart.class);
 		editParts.put(ENTRY, EntryEditPart.class);
 		editParts.put(ENTRY, EntryEditPart.class);
-		editParts.put(ENTRY_LABEL, EntryLabelEditPart.class);
-		editParts.put(ENTRY_BORDER_ITEM, EntryBorderItemEditPart.class);
+		editParts.put(BORDER_ITEM_LABEL, NamedElementLabelEditPart.class);
+		editParts.put(BORDER_ITEM_LABEL_CONTAINER, BorderItemEditPart.class);
 		editParts.put(SHALLOWHISTORY, EntryEditPart.class);
 		editParts.put(SHALLOWHISTORY, EntryEditPart.class);
 		editParts.put(DEEPHISTORY, EntryEditPart.class);
 		editParts.put(DEEPHISTORY, EntryEditPart.class);
 		editParts.put(JUNCTION, JunctionEditPart.class);
 		editParts.put(JUNCTION, JunctionEditPart.class);

+ 5 - 5
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/providers/StatechartDiagramViewProvider.java

@@ -20,8 +20,8 @@ import org.eclipse.gmf.runtime.diagram.ui.view.factories.optimal.CompartmentView
 import org.eclipse.gmf.runtime.diagram.ui.view.factories.optimal.ShapeViewFactory;
 import org.eclipse.gmf.runtime.diagram.ui.view.factories.optimal.ShapeViewFactory;
 import org.eclipse.gmf.runtime.notation.View;
 import org.eclipse.gmf.runtime.notation.View;
 import org.yakindu.sct.ui.editor.editor.StatechartDiagramEditor;
 import org.yakindu.sct.ui.editor.editor.StatechartDiagramEditor;
-import org.yakindu.sct.ui.editor.factories.EntryBorderItemViewFactory;
-import org.yakindu.sct.ui.editor.factories.EntryViewFactory;
+import org.yakindu.sct.ui.editor.factories.BorderItemLabelViewFactory;
+import org.yakindu.sct.ui.editor.factories.BorderItemContainerViewFactory;
 import org.yakindu.sct.ui.editor.factories.RegionViewFactory;
 import org.yakindu.sct.ui.editor.factories.RegionViewFactory;
 import org.yakindu.sct.ui.editor.factories.StateTextCompartmentViewFactory;
 import org.yakindu.sct.ui.editor.factories.StateTextCompartmentViewFactory;
 import org.yakindu.sct.ui.editor.factories.StateViewFactory;
 import org.yakindu.sct.ui.editor.factories.StateViewFactory;
@@ -63,12 +63,12 @@ public class StatechartDiagramViewProvider extends AbstractViewProvider
 				.put(STATE_TEXT_COMPARTMENT_EXPRESSION, ShapeViewFactory.class);
 				.put(STATE_TEXT_COMPARTMENT_EXPRESSION, ShapeViewFactory.class);
 		factories.put(TRANSITION, TransitionViewFactory.class);
 		factories.put(TRANSITION, TransitionViewFactory.class);
 		factories.put(CHOICE, ShapeViewFactory.class);
 		factories.put(CHOICE, ShapeViewFactory.class);
-		factories.put(ENTRY, EntryViewFactory.class);
-		factories.put(ENTRY_BORDER_ITEM, EntryBorderItemViewFactory.class);
+		factories.put(ENTRY, BorderItemContainerViewFactory.class);
+		factories.put(EXIT, BorderItemContainerViewFactory.class);
+		factories.put(BORDER_ITEM_LABEL_CONTAINER,BorderItemLabelViewFactory.class);
 		factories.put(SHALLOWHISTORY, ShapeViewFactory.class);
 		factories.put(SHALLOWHISTORY, ShapeViewFactory.class);
 		factories.put(DEEPHISTORY, ShapeViewFactory.class);
 		factories.put(DEEPHISTORY, ShapeViewFactory.class);
 		factories.put(FINALSTATE, ShapeViewFactory.class);
 		factories.put(FINALSTATE, ShapeViewFactory.class);
-		factories.put(EXIT, ShapeViewFactory.class);
 		factories.put(JUNCTION, ShapeViewFactory.class);
 		factories.put(JUNCTION, ShapeViewFactory.class);
 		factories.put(SYNCHRONIZATION, ShapeViewFactory.class);
 		factories.put(SYNCHRONIZATION, ShapeViewFactory.class);
 	}
 	}