Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnsgar Radermacher2016-05-20 10:55:55 +0000
committerGerrit Code Review @ Eclipse.org2016-05-20 15:55:56 +0000
commitc1d2ca47d0d4facc38baaf798714ac6f7000103c (patch)
tree4da7897308ecf4287f08e043c0f03badf76bbbe0
parentbde957805529dafb170feca9b3741afa895b0f76 (diff)
downloadorg.eclipse.papyrus-c1d2ca47d0d4facc38baaf798714ac6f7000103c.tar.gz
org.eclipse.papyrus-c1d2ca47d0d4facc38baaf798714ac6f7000103c.tar.xz
org.eclipse.papyrus-c1d2ca47d0d4facc38baaf798714ac6f7000103c.zip
Bug 493339 - [State machine diagram] State machine diagram should provide connection handles to accelerate transition creation
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/custom-src/org/eclipse/papyrus/uml/diagram/statemachine/custom/edit/part/CustomStateEditPart.java11
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/custom-src/org/eclipse/papyrus/uml/diagram/statemachine/custom/edit/part/CustomStateMachineEditPart.java3
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/custom-src/org/eclipse/papyrus/uml/diagram/statemachine/custom/policies/CustomRegionComponentEditPolicy.java2
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/custom-src/org/eclipse/papyrus/uml/diagram/statemachine/custom/policies/CustomStateCreationEditPolicy.java120
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/custom-src/org/eclipse/papyrus/uml/diagram/statemachine/custom/policies/CustomStateMachineLayoutEditPolicy.java10
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/model/stateMachineDiagram.assistants141
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/plugin.xml4
7 files changed, 216 insertions, 75 deletions
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/custom-src/org/eclipse/papyrus/uml/diagram/statemachine/custom/edit/part/CustomStateEditPart.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/custom-src/org/eclipse/papyrus/uml/diagram/statemachine/custom/edit/part/CustomStateEditPart.java
index 78133c9bfdf..f6c43c6942f 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/custom-src/org/eclipse/papyrus/uml/diagram/statemachine/custom/edit/part/CustomStateEditPart.java
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/custom-src/org/eclipse/papyrus/uml/diagram/statemachine/custom/edit/part/CustomStateEditPart.java
@@ -11,7 +11,6 @@
*/
package org.eclipse.papyrus.uml.diagram.statemachine.custom.edit.part;
-import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;
import org.eclipse.gmf.runtime.notation.View;
import org.eclipse.papyrus.uml.diagram.statemachine.edit.parts.StateCompartmentEditPart;
import org.eclipse.papyrus.uml.diagram.statemachine.edit.parts.StateEditPart;
@@ -22,14 +21,6 @@ public class CustomStateEditPart extends StateEditPart {
super(view);
}
- @Override
- protected void createDefaultEditPolicies() {
- super.createDefaultEditPolicies();
- removeEditPolicy(EditPolicyRoles.CONNECTION_HANDLES_ROLE);
- removeEditPolicy(EditPolicyRoles.POPUPBAR_ROLE);
-
- }
-
/**
* @see org.eclipse.papyrus.uml.diagram.common.editparts.RoundedCompartmentEditPart#getDefaultCornerHeight()
*
@@ -61,7 +52,7 @@ public class CustomStateEditPart extends StateEditPart {
for (Object viewObj : stateView.getChildren()) {
if (viewObj instanceof View) {
View view = (View) viewObj;
- if (view.getType().equals("" + StateCompartmentEditPart.VISUAL_ID)) { //$NON-NLS-1$
+ if (view.getType().equals(StateCompartmentEditPart.VISUAL_ID)) {
return view;
}
}
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/custom-src/org/eclipse/papyrus/uml/diagram/statemachine/custom/edit/part/CustomStateMachineEditPart.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/custom-src/org/eclipse/papyrus/uml/diagram/statemachine/custom/edit/part/CustomStateMachineEditPart.java
index d3ab234e509..de872c88ebe 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/custom-src/org/eclipse/papyrus/uml/diagram/statemachine/custom/edit/part/CustomStateMachineEditPart.java
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/custom-src/org/eclipse/papyrus/uml/diagram/statemachine/custom/edit/part/CustomStateMachineEditPart.java
@@ -19,16 +19,13 @@ public class CustomStateMachineEditPart extends StateMachineEditPart {
public CustomStateMachineEditPart(View view) {
super(view);
- // TODO Auto-generated constructor stub
}
@Override
protected void createDefaultEditPolicies() {
- // TODO Auto-generated method stub
super.createDefaultEditPolicies();
removeEditPolicy(EditPolicyRoles.CONNECTION_HANDLES_ROLE);
removeEditPolicy(EditPolicyRoles.POPUPBAR_ROLE);
-
}
/**
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/custom-src/org/eclipse/papyrus/uml/diagram/statemachine/custom/policies/CustomRegionComponentEditPolicy.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/custom-src/org/eclipse/papyrus/uml/diagram/statemachine/custom/policies/CustomRegionComponentEditPolicy.java
index 211663b2e29..32552af8465 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/custom-src/org/eclipse/papyrus/uml/diagram/statemachine/custom/policies/CustomRegionComponentEditPolicy.java
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/custom-src/org/eclipse/papyrus/uml/diagram/statemachine/custom/policies/CustomRegionComponentEditPolicy.java
@@ -25,7 +25,7 @@ import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;
import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ComponentEditPolicy;
import org.eclipse.gmf.runtime.notation.View;
-import org.eclipse.papyrus.uml.diagram.common.commands.SemanticAdapter;
+import org.eclipse.papyrus.infra.gmfdiag.common.adapter.SemanticAdapter;
import org.eclipse.papyrus.uml.diagram.statemachine.custom.commands.CustomRegionDeleteCommand;
public class CustomRegionComponentEditPolicy extends ComponentEditPolicy {
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/custom-src/org/eclipse/papyrus/uml/diagram/statemachine/custom/policies/CustomStateCreationEditPolicy.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/custom-src/org/eclipse/papyrus/uml/diagram/statemachine/custom/policies/CustomStateCreationEditPolicy.java
index b9159f4bc66..59457119b63 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/custom-src/org/eclipse/papyrus/uml/diagram/statemachine/custom/policies/CustomStateCreationEditPolicy.java
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/custom-src/org/eclipse/papyrus/uml/diagram/statemachine/custom/policies/CustomStateCreationEditPolicy.java
@@ -32,7 +32,6 @@ import org.eclipse.gmf.runtime.common.core.command.CommandResult;
import org.eclipse.gmf.runtime.common.core.command.ICommand;
import org.eclipse.gmf.runtime.diagram.core.commands.SetPropertyCommand;
import org.eclipse.gmf.runtime.diagram.core.services.ViewService;
-import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;
import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;
import org.eclipse.gmf.runtime.diagram.ui.commands.SetBoundsCommand;
import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
@@ -55,7 +54,6 @@ import org.eclipse.papyrus.uml.diagram.statemachine.custom.commands.CustomFirstR
import org.eclipse.papyrus.uml.diagram.statemachine.custom.edit.part.CustomStateEditPart;
import org.eclipse.papyrus.uml.diagram.statemachine.custom.helpers.Zone;
import org.eclipse.papyrus.uml.diagram.statemachine.edit.parts.RegionEditPart;
-import org.eclipse.papyrus.uml.diagram.statemachine.edit.parts.StateCompartmentEditPart;
import org.eclipse.papyrus.uml.diagram.statemachine.providers.UMLElementTypes;
import org.eclipse.uml2.uml.Region;
import org.eclipse.uml2.uml.State;
@@ -71,10 +69,10 @@ public class CustomStateCreationEditPolicy extends SideAffixedNodesCreationEditP
public static final String VISIBILITY = "Visibility"; //$NON-NLS-1$
/**
- * Default location for new vertex, if called from popup-bar
+ * Default location for new vertex, if called from popup-bar
*/
public final static Rectangle defaultLocation = new Rectangle(20, 20, -1, -1);
-
+
/**
* No specific ZONE
*/
@@ -82,7 +80,7 @@ public class CustomStateCreationEditPolicy extends SideAffixedNodesCreationEditP
/**
* Vertical offset for region compartment within composite state (cannot be calculated from host figure, since
- * the region compartment has not been created when the position calculation is done.
+ * the region compartment has not been created when the position calculation is done.
*/
public final static int REGION_OFFSET = 20;
@@ -104,7 +102,7 @@ public class CustomStateCreationEditPolicy extends SideAffixedNodesCreationEditP
CreateUnspecifiedTypeRequest unspecReq = (CreateUnspecifiedTypeRequest) request;
for (Object elementTypeObj : unspecReq.getElementTypes()) {
IElementType elementType = (IElementType) elementTypeObj;
-
+
CreateRequest createRequest = unspecReq.getRequestForType(elementType);
Command cmd = getCustomCreateCommand(request, createRequest, ((IHintedType) elementType).getSemanticHint());
if (cmd != null) {
@@ -140,7 +138,7 @@ public class CustomStateCreationEditPolicy extends SideAffixedNodesCreationEditP
* adaptable and does not allow the use of the standard creation commands.
* This command is used only in composition with region creation in CustomStateCreationEditPolicy
*/
- public class CustomVertexCreateElementCommand extends AbstractTransactionalCommand {
+ public static class CustomVertexCreateElementCommand extends AbstractTransactionalCommand {
IAdaptable adaptable;
@@ -158,10 +156,10 @@ public class CustomStateCreationEditPolicy extends SideAffixedNodesCreationEditP
}
protected void doConfigure(Vertex newElement, IProgressMonitor monitor, IAdaptable info, View regionView) throws ExecutionException {
-
+
String semanticHint = viewDescriptor.getSemanticHint();
createElementRequest = new CreateElementRequest(getEditingDomain(), regionView, UMLElementTypes.getElementType(semanticHint));
-
+
IElementType elementType = createElementRequest.getElementType();
ConfigureRequest configureRequest = new ConfigureRequest(getEditingDomain(), newElement, elementType);
configureRequest.setClientContext(createElementRequest.getClientContext());
@@ -181,21 +179,21 @@ public class CustomStateCreationEditPolicy extends SideAffixedNodesCreationEditP
IElementType elementType = UMLElementTypes.getElementType(viewDescriptor.getSemanticHint());
Vertex newVertex = (Vertex)
UMLFactory.eINSTANCE.create((EClass) UMLElementTypes.getElement(elementType));
-
+
Region region = (Region) regionView.getElement();
region.getSubvertices().add(newVertex);
doConfigure(newVertex, monitor, info, regionView);
View view =
- ViewService.getInstance().createView(
- viewDescriptor.getViewKind(),
- new SemanticAdapter(newVertex, null),
- compartment,
- viewDescriptor.getSemanticHint(),
- viewDescriptor.getIndex(),
- viewDescriptor.isPersisted(),
- viewDescriptor.getPreferencesHint());
+ ViewService.getInstance().createView(
+ viewDescriptor.getViewKind(),
+ new SemanticAdapter(newVertex, null),
+ compartment,
+ viewDescriptor.getSemanticHint(),
+ viewDescriptor.getIndex(),
+ viewDescriptor.isPersisted(),
+ viewDescriptor.getPreferencesHint());
Assert.isNotNull(view, "failed to create a view"); //$NON-NLS-1$
viewDescriptor.setView(view);
@@ -207,11 +205,23 @@ public class CustomStateCreationEditPolicy extends SideAffixedNodesCreationEditP
TransactionalEditingDomain editingDomain = ((IGraphicalEditPart) getHost()).getEditingDomain();
CompositeTransactionalCommand cc = new CompositeTransactionalCommand(editingDomain, DiagramUIMessages.AddCommand_Label);
- if (semanticHint.equals(((IHintedType) UMLElementTypes.Region_Shape).getSemanticHint())) {
+ // starting point is the state node on which mouse was moving
+ View stateView = (View) getHost().getModel();
+ View stateCompartmentView = CustomStateEditPart.getStateCompartmentView(stateView);
- // starting point is the state node on which mouse was moving
- View stateView = (View) getHost().getModel();
- View stateCompartmentView = CustomStateEditPart.getStateCompartmentView(stateView);
+ View existingRegionView = null;
+ // State already has a region
+ if (!stateCompartmentView.getChildren().isEmpty()) {
+ // treat specific case of popup assistant on state, but command is effectively for one of its regions
+ if (stateCompartmentView.getChildren().size() == 1) {
+ existingRegionView = (View) stateCompartmentView.getChildren().get(0);
+ } else {
+ // let super class handle it
+ return null;
+ }
+ }
+
+ if (semanticHint.equals(((IHintedType) UMLElementTypes.Region_Shape).getSemanticHint())) {
// get and adaptable for it, to pass on to commands
IAdaptable adaptableForStateCompartmentView = new SemanticAdapter(null, stateCompartmentView);
@@ -234,41 +244,45 @@ public class CustomStateCreationEditPolicy extends SideAffixedNodesCreationEditP
|| semanticHint.equals(((IHintedType) UMLElementTypes.Pseudostate_TerminateShape).getSemanticHint())
|| semanticHint.equals(((IHintedType) UMLElementTypes.State_Shape).getSemanticHint())
|| semanticHint.equals(((IHintedType) UMLElementTypes.FinalState_Shape).getSemanticHint())) {
-
- // starting point is the state node on which mouse was moving
- View stateView = (View) getHost().getModel();
-
- View stateCompartmentView = ViewUtil.getChildBySemanticHint(stateView, String.valueOf(StateCompartmentEditPart.VISUAL_ID));
- // transfer the request to the super method to deal with regular Entry/ExitPoint creation
- if (!stateCompartmentView.getChildren().isEmpty()) {
- return super.getCommand(request);
- }
+
// get an adaptable for it, to pass on to commands
IAdaptable adaptableForStateCompartmentView = new SemanticAdapter(null, stateCompartmentView);
- CustomFirstRegionInCompositeStateCreateElementCommand createNewRegion = new CustomFirstRegionInCompositeStateCreateElementCommand(adaptableForStateCompartmentView, null, ((IGraphicalEditPart) getHost()).getDiagramPreferencesHint(),
- editingDomain, DiagramUIMessages.CreateCommand_Label, dropLocation);
- EList<Region> regions = ((State) stateView.getElement()).getRegions();
- if (!regions.isEmpty()) {
- // the view does not contain any region, but the model has already at least one. Use the first
- // existing region.
- createNewRegion.useExistingRegion(regions.get(0));
+ ViewDescriptor viewDescriptor;
+ if (existingRegionView == null) {
+ CustomFirstRegionInCompositeStateCreateElementCommand createNewRegion = new CustomFirstRegionInCompositeStateCreateElementCommand(adaptableForStateCompartmentView, null, ((IGraphicalEditPart) getHost()).getDiagramPreferencesHint(),
+ editingDomain, DiagramUIMessages.CreateCommand_Label, dropLocation);
+ EList<Region> regions = ((State) stateView.getElement()).getRegions();
+ if (!regions.isEmpty()) {
+ // the view does not contain any region, but the model has already at least one. Use the first
+ // existing region.
+ createNewRegion.useExistingRegion(regions.get(0));
+ }
+
+ SetPropertyCommand showCompartment = new SetPropertyCommand(editingDomain, adaptableForStateCompartmentView, NOTATION_VIEW_VISIBLE, VISIBILITY, true);
+
+ viewDescriptor = new ViewDescriptor(
+ (IAdaptable) createNewRegion.getCommandResult().getReturnValue(),
+ Node.class,
+ semanticHint,
+ ((IGraphicalEditPart) getHost()).getDiagramPreferencesHint());
+ CustomVertexCreateElementCommand createVertex = new CustomVertexCreateElementCommand(editingDomain, viewDescriptor, (IAdaptable) createNewRegion.getCommandResult().getReturnValue(), DiagramUIMessages.CreateCommand_Label);
+
+ cc.compose(showCompartment);
+ cc.compose(createNewRegion);
+ cc.compose(createVertex);
+ }
+ else {
+ // region view exists, only create vertex within
+ viewDescriptor = new ViewDescriptor(
+ null, Node.class, semanticHint,
+ ((IGraphicalEditPart) getHost()).getDiagramPreferencesHint());
+ IAdaptable adapter = new SemanticAdapter(null, existingRegionView);
+ CustomVertexCreateElementCommand createVertex =
+ new CustomVertexCreateElementCommand(editingDomain, viewDescriptor, adapter, DiagramUIMessages.CreateCommand_Label);
+ cc.compose(createVertex);
}
-
- SetPropertyCommand showCompartment = new SetPropertyCommand(editingDomain, adaptableForStateCompartmentView, NOTATION_VIEW_VISIBLE, VISIBILITY, true);
-
- ViewDescriptor viewDescriptor = new ViewDescriptor(
- (IAdaptable) createNewRegion.getCommandResult().getReturnValue(),
- Node.class,
- semanticHint,
- ((IGraphicalEditPart) getHost()).getDiagramPreferencesHint());
- CustomVertexCreateElementCommand createVertex =
- new CustomVertexCreateElementCommand(editingDomain, viewDescriptor, (IAdaptable) createNewRegion.getCommandResult().getReturnValue(), DiagramUIMessages.CreateCommand_Label);
- cc.compose(showCompartment);
- cc.compose(createNewRegion);
- cc.compose(createVertex);
-
if (request instanceof CreateRequest) {
CreateRequest req = (CreateRequest) request;
@@ -282,7 +296,7 @@ public class CustomStateCreationEditPolicy extends SideAffixedNodesCreationEditP
// take this into account.
getHostFigure().translateToRelative(requestedLocation);
Rectangle proposedBounds = new Rectangle(requestedLocation.x, requestedLocation.y - REGION_OFFSET, -1, -1);
-
+
// Convert the calculated preferred bounds as relative to parent location
Rectangle creationBounds;
if (request instanceof CreateUnspecifiedTypeRequest) {
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/custom-src/org/eclipse/papyrus/uml/diagram/statemachine/custom/policies/CustomStateMachineLayoutEditPolicy.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/custom-src/org/eclipse/papyrus/uml/diagram/statemachine/custom/policies/CustomStateMachineLayoutEditPolicy.java
index b5a418cf2bb..dc596501f4c 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/custom-src/org/eclipse/papyrus/uml/diagram/statemachine/custom/policies/CustomStateMachineLayoutEditPolicy.java
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/custom-src/org/eclipse/papyrus/uml/diagram/statemachine/custom/policies/CustomStateMachineLayoutEditPolicy.java
@@ -11,8 +11,6 @@
*/
package org.eclipse.papyrus.uml.diagram.statemachine.custom.policies;
-import java.util.Iterator;
-
import org.eclipse.draw2d.PositionConstants;
import org.eclipse.draw2d.geometry.Dimension;
import org.eclipse.draw2d.geometry.Point;
@@ -30,7 +28,7 @@ import org.eclipse.gmf.runtime.diagram.ui.commands.SetBoundsCommand;
import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramUIMessages;
import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewAndElementRequest;
-import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;
+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest.ViewDescriptor;
import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;
import org.eclipse.gmf.runtime.notation.View;
import org.eclipse.papyrus.uml.diagram.common.editpolicies.BorderItemResizableEditPolicy;
@@ -65,7 +63,6 @@ public class CustomStateMachineLayoutEditPolicy extends LayoutEditPolicy {
@Override
public Command getCommand(Request request) {
- // TODO Auto-generated method stub
return super.getCommand(request);
}
@@ -78,7 +75,6 @@ public class CustomStateMachineLayoutEditPolicy extends LayoutEditPolicy {
TransactionalEditingDomain editingDomain = ((IGraphicalEditPart) getHost()).getEditingDomain();
CompositeTransactionalCommand cc = new CompositeTransactionalCommand(editingDomain, DiagramUIMessages.AddCommand_Label);
- Iterator<?> iter = req.getViewDescriptors().iterator();
// Retrieve parent location
Point parentLoc = getHostFigure().getBounds().getLocation().getCopy();
@@ -95,9 +91,7 @@ public class CustomStateMachineLayoutEditPolicy extends LayoutEditPolicy {
// Convert the calculated preferred bounds as relative to parent location
Rectangle creationBounds = preferredBounds.getTranslated(parentLoc.getNegated());
- while (iter.hasNext()) {
-
- CreateViewRequest.ViewDescriptor viewDescriptor = (CreateViewRequest.ViewDescriptor) iter.next();
+ for (ViewDescriptor viewDescriptor : req.getViewDescriptors()) {
cc.compose(new SetBoundsCommand(editingDomain, DiagramUIMessages.SetLocationCommand_Label_Resize, viewDescriptor, creationBounds));
}
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/model/stateMachineDiagram.assistants b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/model/stateMachineDiagram.assistants
new file mode 100644
index 00000000000..ffbd57757cb
--- /dev/null
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/model/stateMachineDiagram.assistants
@@ -0,0 +1,141 @@
+<?xml version="1.0" encoding="ASCII"?>
+<assistant:ModelingAssistantProvider xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:assistant="http://www.eclipse.org/Papyrus/2014/diagram/assistant" xmlns:filters="http://www.eclipse.org/Papyrus/2014/common/filters" name="PapyrusUMLStateMachineDiagram">
+ <ownedFilter xsi:type="assistant:ElementTypeFilter" name="Package" elementTypeID="org.eclipse.papyrus.umldi.Package_StateMachineDiagram"/>
+ <ownedFilter xsi:type="assistant:ElementTypeFilter" name="StateMachine" elementTypeID="org.eclipse.papyrus.umldi.StateMachine_Shape"/>
+ <ownedFilter xsi:type="assistant:ElementTypeFilter" name="State" elementTypeID="org.eclipse.papyrus.umldi.State_Shape"/>
+ <ownedFilter xsi:type="assistant:AssistedElementTypeFilter"/>
+ <ownedFilter xsi:type="assistant:ElementTypeFilter" name="Region" elementTypeID="org.eclipse.papyrus.umldi.Region_Shape"/>
+ <ownedFilter xsi:type="assistant:ElementTypeFilter" name="FinalState" elementTypeID="org.eclipse.papyrus.umldi.FinalState_Shape"/>
+ <ownedFilter xsi:type="assistant:ElementTypeFilter" name="Pseudostate_Initial" elementTypeID="org.eclipse.papyrus.umldi.Pseudostate_InitialShape"/>
+ <ownedFilter xsi:type="assistant:ElementTypeFilter" name="Pseudostate_Join" elementTypeID="org.eclipse.papyrus.umldi.Pseudostate_JoinShape"/>
+ <ownedFilter xsi:type="assistant:ElementTypeFilter" name="Pseudostate_Fork" elementTypeID="org.eclipse.papyrus.umldi.Pseudostate_ForkShape"/>
+ <ownedFilter xsi:type="assistant:ElementTypeFilter" name="Pseudostate_Choice" elementTypeID="org.eclipse.papyrus.umldi.Pseudostate_ChoiceShape"/>
+ <ownedFilter xsi:type="assistant:ElementTypeFilter" name="Pseudostate_Junction" elementTypeID="org.eclipse.papyrus.umldi.Pseudostate_JunctionShape"/>
+ <ownedFilter xsi:type="assistant:ElementTypeFilter" name="Pseudostate_ShallowHistory" elementTypeID="org.eclipse.papyrus.umldi.Pseudostate_ShallowHistoryShape"/>
+ <ownedFilter xsi:type="assistant:ElementTypeFilter" name="Pseudostate_DeepHistory" elementTypeID="org.eclipse.papyrus.umldi.Pseudostate_DeepHistoryShape"/>
+ <ownedFilter xsi:type="assistant:ElementTypeFilter" name="Pseudostate_Terminate" elementTypeID="org.eclipse.papyrus.umldi.Pseudostate_TerminateShape"/>
+ <ownedFilter xsi:type="assistant:ElementTypeFilter" name="Pseudostate_EntryPoint" elementTypeID="org.eclipse.papyrus.umldi.Pseudostate_EntryPointShape"/>
+ <ownedFilter xsi:type="assistant:ElementTypeFilter" name="Pseudostate_ExitPoint" elementTypeID="org.eclipse.papyrus.umldi.Pseudostate_ExitPointShape"/>
+ <ownedFilter xsi:type="assistant:ElementTypeFilter" name="ConnectionPointReference" elementTypeID="org.eclipse.papyrus.umldi.ConnectionPointReference_Shape"/>
+ <ownedFilter xsi:type="assistant:ElementTypeFilter" name="Comment" elementTypeID="org.eclipse.papyrus.umldi.Comment_Shape"/>
+ <ownedFilter xsi:type="assistant:ElementTypeFilter" name="Constraint" elementTypeID="org.eclipse.papyrus.umldi.Constraint_Shape"/>
+ <popupAssistant elementTypeID="org.eclipse.papyrus.umldi.StateMachine_Shape" filter="//@ownedFilter.0"/>
+ <popupAssistant elementTypeID="org.eclipse.papyrus.umldi.Region_Shape" filter="//@popupAssistant.1/@ownedFilter">
+ <ownedFilter xsi:type="filters:CompoundFilter" filter="//@popupAssistant.1/@ownedFilter/@ownedFilter.0 //@ownedFilter.3">
+ <ownedFilter xsi:type="filters:CompoundFilter" name="" filter="//@ownedFilter.1 //@ownedFilter.2" operator="or"/>
+ </ownedFilter>
+ </popupAssistant>
+ <popupAssistant elementTypeID="org.eclipse.papyrus.umldi.FinalState_Shape" filter="//@popupAssistant.2/@ownedFilter">
+ <ownedFilter xsi:type="filters:CompoundFilter" filter="//@ownedFilter.4 //@ownedFilter.3"/>
+ </popupAssistant>
+ <popupAssistant elementTypeID="org.eclipse.papyrus.umldi.State_Shape" filter="//@popupAssistant.3/@ownedFilter">
+ <ownedFilter xsi:type="filters:CompoundFilter" name="StateAnd" filter="//@ownedFilter.3 //@popupAssistant.3/@ownedFilter/@ownedFilter.0">
+ <ownedFilter xsi:type="filters:CompoundFilter" name="StateOr" filter="//@ownedFilter.4 //@ownedFilter.2 //@ownedFilter.1" operator="or"/>
+ </ownedFilter>
+ </popupAssistant>
+ <popupAssistant elementTypeID="org.eclipse.papyrus.umldi.Pseudostate_InitialShape" filter="//@popupAssistant.4/@ownedFilter">
+ <ownedFilter xsi:type="filters:CompoundFilter" name="" filter="//@ownedFilter.4 //@ownedFilter.3"/>
+ </popupAssistant>
+ <popupAssistant elementTypeID="org.eclipse.papyrus.umldi.Pseudostate_JoinShape" filter="//@popupAssistant.5/@ownedFilter">
+ <ownedFilter xsi:type="filters:CompoundFilter" filter="//@ownedFilter.4 //@ownedFilter.3"/>
+ </popupAssistant>
+ <popupAssistant elementTypeID="org.eclipse.papyrus.umldi.Pseudostate_ForkShape" filter="//@popupAssistant.6/@ownedFilter">
+ <ownedFilter xsi:type="filters:CompoundFilter" filter="//@ownedFilter.4 //@ownedFilter.3"/>
+ </popupAssistant>
+ <popupAssistant elementTypeID="org.eclipse.papyrus.umldi.Pseudostate_ChoiceShape" filter="//@popupAssistant.7/@ownedFilter">
+ <ownedFilter xsi:type="filters:CompoundFilter" filter="//@ownedFilter.4 //@ownedFilter.3"/>
+ </popupAssistant>
+ <popupAssistant elementTypeID="org.eclipse.papyrus.umldi.Pseudostate_JunctionShape" filter="//@popupAssistant.8/@ownedFilter">
+ <ownedFilter xsi:type="filters:CompoundFilter" filter="//@ownedFilter.4 //@ownedFilter.3"/>
+ </popupAssistant>
+ <popupAssistant elementTypeID="org.eclipse.papyrus.umldi.Pseudostate_ShallowHistoryShape" filter="//@popupAssistant.9/@ownedFilter">
+ <ownedFilter xsi:type="filters:CompoundFilter" filter="//@ownedFilter.4 //@ownedFilter.3"/>
+ </popupAssistant>
+ <popupAssistant elementTypeID="org.eclipse.papyrus.umldi.Pseudostate_DeepHistoryShape" filter="//@popupAssistant.10/@ownedFilter">
+ <ownedFilter xsi:type="filters:CompoundFilter" filter="//@ownedFilter.4 //@ownedFilter.3"/>
+ </popupAssistant>
+ <popupAssistant elementTypeID="org.eclipse.papyrus.umldi.Pseudostate_TerminateShape" filter="//@popupAssistant.11/@ownedFilter">
+ <ownedFilter xsi:type="filters:CompoundFilter" filter="//@ownedFilter.4 //@ownedFilter.3"/>
+ </popupAssistant>
+ <popupAssistant elementTypeID="org.eclipse.papyrus.umldi.Pseudostate_EntryPointShape" filter="//@popupAssistant.12/@ownedFilter">
+ <ownedFilter xsi:type="filters:CompoundFilter" name="EntryPointAnd" filter="//@popupAssistant.12/@ownedFilter/@ownedFilter.0 //@ownedFilter.3">
+ <ownedFilter xsi:type="filters:CompoundFilter" name="EntryPointOr" filter="//@ownedFilter.1 //@ownedFilter.4 //@ownedFilter.2" operator="or"/>
+ </ownedFilter>
+ </popupAssistant>
+ <popupAssistant elementTypeID="org.eclipse.papyrus.umldi.Pseudostate_ExitPointShape" filter="//@popupAssistant.13/@ownedFilter">
+ <ownedFilter xsi:type="filters:CompoundFilter" name="ExitPointAnd" filter="//@popupAssistant.13/@ownedFilter/@ownedFilter.0 //@ownedFilter.3">
+ <ownedFilter xsi:type="filters:CompoundFilter" name="ExitPointOr" filter="//@ownedFilter.1 //@ownedFilter.4 //@ownedFilter.2" operator="or"/>
+ </ownedFilter>
+ </popupAssistant>
+ <popupAssistant elementTypeID="org.eclipse.papyrus.umldi.ConnectionPointReference_Shape" filter="//@popupAssistant.14/@ownedFilter">
+ <ownedFilter xsi:type="filters:CompoundFilter" filter="//@ownedFilter.2 //@ownedFilter.3"/>
+ </popupAssistant>
+ <popupAssistant elementTypeID="org.eclipse.papyrus.umldi.Comment_Shape" filter="//@popupAssistant.15/@ownedFilter">
+ <ownedFilter xsi:type="filters:CompoundFilter" filter="//@ownedFilter.4 //@ownedFilter.3"/>
+ </popupAssistant>
+ <popupAssistant elementTypeID="org.eclipse.papyrus.umldi.Constraint_Shape" filter="//@popupAssistant.16/@ownedFilter">
+ <ownedFilter xsi:type="filters:CompoundFilter" filter="//@ownedFilter.4 //@ownedFilter.3"/>
+ </popupAssistant>
+ <popupAssistant elementTypeID="org.eclipse.papyrus.umldi.Transition_InternalTransitionLabel" filter="//@ownedFilter.3"/>
+ <connectionAssistant elementTypeID="org.eclipse.papyrus.umldi.Transition_Edge" sourceFilter="//@connectionAssistant.0/@ownedSourceFilter" targetFilter="//@connectionAssistant.0/@ownedTargetFilter">
+ <ownedSourceFilter xsi:type="filters:CompoundFilter" filter="//@connectionAssistant.0/@ownedSourceFilter/@ownedFilter.0 //@ownedFilter.3">
+ <ownedFilter xsi:type="filters:CompoundFilter" filter="//@ownedFilter.5 //@ownedFilter.2 //@ownedFilter.6 //@ownedFilter.7 //@ownedFilter.8 //@ownedFilter.9 //@ownedFilter.10 //@ownedFilter.11 //@ownedFilter.12 //@ownedFilter.13 //@ownedFilter.14 //@ownedFilter.15 //@ownedFilter.16" operator="or"/>
+ </ownedSourceFilter>
+ <ownedTargetFilter xsi:type="filters:CompoundFilter" filter="//@connectionAssistant.0/@ownedTargetFilter/@ownedFilter.0 //@ownedFilter.3">
+ <ownedFilter xsi:type="filters:CompoundFilter" filter="//@ownedFilter.5 //@ownedFilter.2 //@ownedFilter.6 //@ownedFilter.7 //@ownedFilter.8 //@ownedFilter.9 //@ownedFilter.10 //@ownedFilter.11 //@ownedFilter.12 //@ownedFilter.13 //@ownedFilter.14 //@ownedFilter.15 //@ownedFilter.16" operator="or"/>
+ </ownedTargetFilter>
+ </connectionAssistant>
+ <connectionAssistant elementTypeID="org.eclipse.papyrus.umldi.Generalization_Edge" sourceFilter="//@connectionAssistant.1/@ownedSourceFilter" targetFilter="//@connectionAssistant.1/@ownedTargetFilter">
+ <ownedSourceFilter xsi:type="filters:CompoundFilter" filter="//@ownedFilter.1 //@ownedFilter.3"/>
+ <ownedTargetFilter xsi:type="filters:CompoundFilter" filter="//@ownedFilter.1 //@ownedFilter.3"/>
+ </connectionAssistant>
+ <connectionAssistant elementTypeID="org.eclipse.papyrus.umldi.Comment_AnnotatedElementEdge" sourceFilter="//@connectionAssistant.2/@ownedSourceFilter" targetFilter="//@connectionAssistant.2/@ownedTargetFilter">
+ <ownedSourceFilter xsi:type="filters:CompoundFilter" filter="//@ownedFilter.17 //@ownedFilter.3"/>
+ <ownedTargetFilter xsi:type="filters:CompoundFilter" filter="//@connectionAssistant.2/@ownedTargetFilter/@ownedFilter.0 //@ownedFilter.3">
+ <ownedFilter xsi:type="filters:CompoundFilter" filter="//@ownedFilter.1 //@ownedFilter.4 //@ownedFilter.5 //@ownedFilter.2 //@ownedFilter.6 //@ownedFilter.7 //@ownedFilter.8 //@ownedFilter.9 //@ownedFilter.10 //@ownedFilter.11 //@ownedFilter.12 //@ownedFilter.13 //@ownedFilter.14 //@ownedFilter.15 //@ownedFilter.16 //@ownedFilter.17 //@ownedFilter.18" operator="or"/>
+ </ownedTargetFilter>
+ </connectionAssistant>
+ <connectionAssistant elementTypeID="org.eclipse.papyrus.umldi.Constraint_ConstrainedElementEdge" sourceFilter="//@connectionAssistant.3/@ownedSourceFilter" targetFilter="//@connectionAssistant.3/@ownedTargetFilter">
+ <ownedSourceFilter xsi:type="filters:CompoundFilter" filter="//@ownedFilter.18 //@ownedFilter.3"/>
+ <ownedTargetFilter xsi:type="filters:CompoundFilter" filter="//@connectionAssistant.3/@ownedTargetFilter/@ownedFilter.0 //@ownedFilter.3">
+ <ownedFilter xsi:type="filters:CompoundFilter" filter="//@ownedFilter.1 //@ownedFilter.4 //@ownedFilter.5 //@ownedFilter.2 //@ownedFilter.6 //@ownedFilter.7 //@ownedFilter.8 //@ownedFilter.9 //@ownedFilter.10 //@ownedFilter.11 //@ownedFilter.12 //@ownedFilter.13 //@ownedFilter.14 //@ownedFilter.15 //@ownedFilter.16 //@ownedFilter.17 //@ownedFilter.18" operator="or"/>
+ </ownedTargetFilter>
+ </connectionAssistant>
+ <connectionAssistant elementTypeID="org.eclipse.papyrus.umldi.Constraint_ContextEdge" sourceFilter="//@connectionAssistant.4/@ownedSourceFilter" targetFilter="//@connectionAssistant.4/@ownedTargetFilter">
+ <ownedSourceFilter xsi:type="filters:CompoundFilter" filter="//@ownedFilter.18 //@ownedFilter.3"/>
+ <ownedTargetFilter xsi:type="filters:CompoundFilter" filter="//@connectionAssistant.4/@ownedTargetFilter/@ownedFilter.0 //@ownedFilter.3">
+ <ownedFilter xsi:type="filters:CompoundFilter" filter="//@ownedFilter.1 //@ownedFilter.4 //@ownedFilter.5 //@ownedFilter.2" operator="or"/>
+ </ownedTargetFilter>
+ </connectionAssistant>
+ <elementTypeID>org.eclipse.papyrus.umldi.StateMachine_Shape</elementTypeID>
+ <elementTypeID>org.eclipse.papyrus.umldi.Region_Shape</elementTypeID>
+ <elementTypeID>org.eclipse.papyrus.umldi.FinalState_Shape</elementTypeID>
+ <elementTypeID>org.eclipse.papyrus.umldi.State_Shape</elementTypeID>
+ <elementTypeID>org.eclipse.papyrus.umldi.Pseudostate_InitialShape</elementTypeID>
+ <elementTypeID>org.eclipse.papyrus.umldi.Pseudostate_JoinShape</elementTypeID>
+ <elementTypeID>org.eclipse.papyrus.umldi.Pseudostate_ForkShape</elementTypeID>
+ <elementTypeID>org.eclipse.papyrus.umldi.Pseudostate_ChoiceShape</elementTypeID>
+ <elementTypeID>org.eclipse.papyrus.umldi.Pseudostate_JunctionShape</elementTypeID>
+ <elementTypeID>org.eclipse.papyrus.umldi.Pseudostate_ShallowHistoryShape</elementTypeID>
+ <elementTypeID>org.eclipse.papyrus.umldi.Pseudostate_DeepHistoryShape</elementTypeID>
+ <elementTypeID>org.eclipse.papyrus.umldi.Pseudostate_TerminateShape</elementTypeID>
+ <elementTypeID>org.eclipse.papyrus.umldi.Pseudostate_EntryPointShape</elementTypeID>
+ <elementTypeID>org.eclipse.papyrus.umldi.Pseudostate_ExitPointShape</elementTypeID>
+ <elementTypeID>org.eclipse.papyrus.umldi.ConnectionPointReference_Shape</elementTypeID>
+ <elementTypeID>org.eclipse.papyrus.umldi.Comment_Shape</elementTypeID>
+ <elementTypeID>org.eclipse.papyrus.umldi.Constraint_Shape</elementTypeID>
+ <elementTypeID>org.eclipse.papyrus.umldi.Transition_InternalTransitionLabel</elementTypeID>
+ <elementTypeID>org.eclipse.papyrus.umldi.Behavior_EntryBehaviorLabel</elementTypeID>
+ <elementTypeID>org.eclipse.papyrus.umldi.Behavior_DoActivityBehaviorLabel</elementTypeID>
+ <elementTypeID>org.eclipse.papyrus.umldi.Behavior_ExitBehaviorLabel</elementTypeID>
+ <elementTypeID>org.eclipse.papyrus.umldi.Transition_Edge</elementTypeID>
+ <elementTypeID>org.eclipse.papyrus.umldi.Generalization_Edge</elementTypeID>
+ <elementTypeID>org.eclipse.papyrus.umldi.Comment_AnnotatedElementEdge</elementTypeID>
+ <elementTypeID>org.eclipse.papyrus.umldi.Constraint_ConstrainedElementEdge</elementTypeID>
+ <elementTypeID>org.eclipse.papyrus.umldi.Constraint_ContextEdge</elementTypeID>
+ <relationshipTypeID>org.eclipse.papyrus.umldi.Transition_Edge</relationshipTypeID>
+ <relationshipTypeID>org.eclipse.papyrus.umldi.Generalization_Edge</relationshipTypeID>
+ <relationshipTypeID>org.eclipse.papyrus.umldi.Comment_AnnotatedElementEdge</relationshipTypeID>
+ <relationshipTypeID>org.eclipse.papyrus.umldi.Constraint_ConstrainedElementEdge</relationshipTypeID>
+ <relationshipTypeID>org.eclipse.papyrus.umldi.Constraint_ContextEdge</relationshipTypeID>
+</assistant:ModelingAssistantProvider>
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/plugin.xml b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/plugin.xml
index 660e57b0141..a4576830599 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/plugin.xml
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.statemachine/plugin.xml
@@ -858,4 +858,8 @@
</binding>
</extension>
+<extension point="org.eclipse.papyrus.infra.gmfdiag.assistant.modelProviders">
+ <modelProvider uri="model/stateMachineDiagram.assistants"/>
+</extension>
+
</plugin>

Back to the top