diff --git a/domain_specific_language/graphical/examples-graphical/.project b/domain_specific_language/graphical/examples-graphical/.project new file mode 100644 index 0000000000000000000000000000000000000000..c2a42168baabda9d0d78e2ca109b6df76cb922ba --- /dev/null +++ b/domain_specific_language/graphical/examples-graphical/.project @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>examples-graphical</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.xtext.ui.shared.xtextBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.sirius.nature.modelingproject</nature> + <nature>org.eclipse.xtext.ui.shared.xtextNature</nature> + </natures> +</projectDescription> diff --git a/domain_specific_language/graphical/examples-graphical/garagedoor.statemachine b/domain_specific_language/graphical/examples-graphical/garagedoor.statemachine new file mode 100644 index 0000000000000000000000000000000000000000..7e44c6fd1941ac4b5bb590516b2ae01299c04221 --- /dev/null +++ b/domain_specific_language/graphical/examples-graphical/garagedoor.statemachine @@ -0,0 +1,49 @@ +<?xml version="1.0" encoding="UTF-8"?> +<statemachine:StateMachine xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:statemachine="http://www.swt.org/most/statemachine" name="Garage Door"> + <states name="Closed"/> + <states name="Open"/> + <states name="Opening"/> + <states name="Closing"/> + <finalstates name="final"/> + <initialstate name="initial"/> + <transitions from="//@initialstate" to="//@states.0"/> + <transitions from="//@states.0" to="//@states.2"> + <trigger content="openDoor"/> + <action content="motor.upwards"/> + </transitions> + <transitions from="//@states.2" to="//@states.1"> + <guard content="stopper"/> + <action content="motor.stop"/> + </transitions> + <transitions from="//@states.1" to="//@states.3"> + <trigger content="closeDoor"/> + <action content="motor.downwards"/> + </transitions> + <transitions from="//@states.3" to="//@states.0"> + <guard content="stopper"/> + <action content="motor.stop"/> + </transitions> + <transitions from="//@states.3" to="//@states.2"> + <trigger content="openDoor"/> + <action content="motor.upwards"/> + </transitions> + <transitions from="//@states.2" to="//@states.3"> + <trigger content="closeDoor"/> + <action content="motor.downwards"/> + </transitions> + <transitions from="//@states.0" to="//@finalstates.0"> + <guard content="shutdown"/> + </transitions> + <transitions from="//@states.0" to="//@states.0"> + <trigger content="closeDoor"/> + </transitions> + <transitions from="//@states.3" to="//@states.3"> + <trigger content="closeDoor"/> + </transitions> + <transitions from="//@states.1" to="//@states.1"> + <trigger content="openDoor"/> + </transitions> + <transitions from="//@states.2" to="//@states.2"> + <trigger content="openDoor"/> + </transitions> +</statemachine:StateMachine> diff --git a/domain_specific_language/graphical/examples-graphical/representations.aird b/domain_specific_language/graphical/examples-graphical/representations.aird new file mode 100644 index 0000000000000000000000000000000000000000..7e2a339f433a646c4db8985a2f3e0e16d8a636aa --- /dev/null +++ b/domain_specific_language/graphical/examples-graphical/representations.aird @@ -0,0 +1,1345 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:description="http://www.eclipse.org/sirius/description/1.1.0" xmlns:description_1="http://www.eclipse.org/sirius/diagram/description/1.1.0" xmlns:diagram="http://www.eclipse.org/sirius/diagram/1.1.0" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.3/notation" xmlns:statemachine="http://www.swt.org/most/statemachine" xmlns:style="http://www.eclipse.org/sirius/diagram/description/style/1.1.0" xmlns:viewpoint="http://www.eclipse.org/sirius/1.1.0" xsi:schemaLocation="http://www.eclipse.org/sirius/description/1.1.0 http://www.eclipse.org/sirius/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/style/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description/style"> + <viewpoint:DAnalysis uid="_5tKpMDi-Eeye8b2tisBcrw" selectedViews="_oLtYsGmrEe2AsN_q_tUe-Q" version="15.2.0.202303281325"> + <semanticResources>garagedoor.statemachine</semanticResources> + <semanticResources>switch.statemachine</semanticResources> + <ownedViews xmi:type="viewpoint:DView" uid="_gqxQ0DjAEeyN-qrgse1YLA"> + <viewpoint xmi:type="description:Viewpoint" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']"/> + <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_ipQWwDjAEeyN-qrgse1YLA" name="garagedoor" repPath="#_io_4EDjAEeyN-qrgse1YLA" changeId="1718630191745"> + <description xmi:type="description_1:DiagramDescription" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']"/> + <target xmi:type="statemachine:StateMachine" href="garagedoor.statemachine#Garage Door"/> + </ownedRepresentationDescriptors> + <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_2azhQDyHEeytPeWyzOo0bw" name="switch" repPath="#_2axsEDyHEeytPeWyzOo0bw" changeId="1718630191745"> + <description xmi:type="description_1:DiagramDescription" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']"/> + <target xmi:type="statemachine:StateMachine" href="switch.statemachine#Switch"/> + </ownedRepresentationDescriptors> + </ownedViews> + <ownedViews xmi:type="viewpoint:DView" uid="_oLtYsGmrEe2AsN_q_tUe-Q"> + <viewpoint xmi:type="description:Viewpoint" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']"/> + <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_ydkZYCysEe-4er9RFtOKtQ" name="garagedoor" repPath="#_ydRecCysEe-4er9RFtOKtQ" changeId="1718630934966"> + <description xmi:type="description_1:DiagramDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']"/> + <target xmi:type="statemachine:StateMachine" href="garagedoor.statemachine#/"/> + </ownedRepresentationDescriptors> + <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_lETcwCytEe-4er9RFtOKtQ" name="switch" repPath="#_lERnkCytEe-4er9RFtOKtQ" changeId="1718631032652"> + <description xmi:type="description_1:DiagramDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']"/> + <target xmi:type="statemachine:StateMachine" href="switch.statemachine#Switch"/> + </ownedRepresentationDescriptors> + </ownedViews> + </viewpoint:DAnalysis> + <diagram:DSemanticDiagram uid="_io_4EDjAEeyN-qrgse1YLA"> + <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_iprNgDjAEeyN-qrgse1YLA" source="GMF_DIAGRAMS"> + <data xmi:type="notation:Diagram" xmi:id="_iprNgTjAEeyN-qrgse1YLA" type="Sirius" element="_io_4EDjAEeyN-qrgse1YLA" measurementUnit="Pixel"> + <children xmi:type="notation:Node" xmi:id="_lU7S0DjAEeyN-qrgse1YLA" type="2003" element="_yIYsUDjCEeyN-qrgse1YLA"> + <children xmi:type="notation:Node" xmi:id="_lU9IADjAEeyN-qrgse1YLA" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_lU-WIDjAEeyN-qrgse1YLA" type="7004"> + <styles xmi:type="notation:SortingStyle" xmi:id="_lU-WITjAEeyN-qrgse1YLA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_lU-WIjjAEeyN-qrgse1YLA"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_lU7S0TjAEeyN-qrgse1YLA" fontName="Segoe UI" fontHeight="12" bold="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lU7S0jjAEeyN-qrgse1YLA" x="319" y="276"/> + </children> + <children xmi:type="notation:Node" xmi:id="_lU-9MDjAEeyN-qrgse1YLA" type="2003" element="_yIZTYzjCEeyN-qrgse1YLA"> + <children xmi:type="notation:Node" xmi:id="_lU-9MzjAEeyN-qrgse1YLA" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_lU-9NDjAEeyN-qrgse1YLA" type="7004"> + <styles xmi:type="notation:SortingStyle" xmi:id="_lU-9NTjAEeyN-qrgse1YLA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_lU-9NjjAEeyN-qrgse1YLA"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_lU-9MTjAEeyN-qrgse1YLA" fontName="Segoe UI" fontHeight="12" bold="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lU-9MjjAEeyN-qrgse1YLA" x="864" y="276"/> + </children> + <children xmi:type="notation:Node" xmi:id="_lU_kQDjAEeyN-qrgse1YLA" type="2003" element="_yIZ6cjjCEeyN-qrgse1YLA"> + <children xmi:type="notation:Node" xmi:id="_lU_kQzjAEeyN-qrgse1YLA" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_lU_kRDjAEeyN-qrgse1YLA" type="7004"> + <styles xmi:type="notation:SortingStyle" xmi:id="_lU_kRTjAEeyN-qrgse1YLA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_lU_kRjjAEeyN-qrgse1YLA"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_lU_kQTjAEeyN-qrgse1YLA" fontName="Segoe UI" fontHeight="12" bold="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lU_kQjjAEeyN-qrgse1YLA" x="583" y="162"/> + </children> + <children xmi:type="notation:Node" xmi:id="_lU_kRzjAEeyN-qrgse1YLA" type="2003" element="_yIZ6dzjCEeyN-qrgse1YLA"> + <children xmi:type="notation:Node" xmi:id="_lVALUDjAEeyN-qrgse1YLA" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_lVALUTjAEeyN-qrgse1YLA" type="7004"> + <styles xmi:type="notation:SortingStyle" xmi:id="_lVALUjjAEeyN-qrgse1YLA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_lVALUzjAEeyN-qrgse1YLA"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_lU_kSDjAEeyN-qrgse1YLA" fontName="Segoe UI" fontHeight="12" bold="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lU_kSTjAEeyN-qrgse1YLA" x="588" y="378"/> + </children> + <children xmi:type="notation:Node" xmi:id="_wfK9sDjAEeyN-qrgse1YLA" type="2001" element="_werOcDjAEeyN-qrgse1YLA"> + <children xmi:type="notation:Node" xmi:id="_wfLkwDjAEeyN-qrgse1YLA" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_wfLkwTjAEeyN-qrgse1YLA" x="-4" y="-29"/> + </children> + <children xmi:type="notation:Node" xmi:id="_0QyOIDjAEeyN-qrgse1YLA" type="3002" element="_0QWwUDjAEeyN-qrgse1YLA"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_0QyOITjAEeyN-qrgse1YLA" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0QyOIjjAEeyN-qrgse1YLA"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_wfK9sTjAEeyN-qrgse1YLA" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wfK9sjjAEeyN-qrgse1YLA" x="312" y="42" width="40" height="40"/> + </children> + <children xmi:type="notation:Node" xmi:id="_hsv1wDjBEeyN-qrgse1YLA" type="2001" element="_hsCEETjBEeyN-qrgse1YLA"> + <children xmi:type="notation:Node" xmi:id="_hsv1wzjBEeyN-qrgse1YLA" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_hsv1xDjBEeyN-qrgse1YLA" x="1" y="41"/> + </children> + <children xmi:type="notation:Node" xmi:id="_82fqQDjBEeyN-qrgse1YLA" type="3002" element="_82BJITjBEeyN-qrgse1YLA"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_82fqQTjBEeyN-qrgse1YLA" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_82fqQjjBEeyN-qrgse1YLA"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_hsv1wTjBEeyN-qrgse1YLA" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hsv1wjjBEeyN-qrgse1YLA" x="312" y="450" width="40" height="40"/> + </children> + <children xmi:type="notation:Node" xmi:id="_gzLxcDvrEeyeeflsfjx5ZA" type="2002" element="_gzKjWzvrEeyeeflsfjx5ZA"> + <children xmi:type="notation:Node" xmi:id="_gzLxczvrEeyeeflsfjx5ZA" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_gzLxdDvrEeyeeflsfjx5ZA" type="7001"> + <styles xmi:type="notation:SortingStyle" xmi:id="_gzLxdTvrEeyeeflsfjx5ZA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_gzLxdjvrEeyeeflsfjx5ZA"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_gzLxcTvrEeyeeflsfjx5ZA" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gzLxcjvrEeyeeflsfjx5ZA" x="468" y="36"/> + </children> + <styles xmi:type="notation:DiagramStyle" xmi:id="_iprNgjjAEeyN-qrgse1YLA"/> + <edges xmi:type="notation:Edge" xmi:id="_WdvUwjjDEeyN-qrgse1YLA" type="4001" element="_WbLI8DjDEeyN-qrgse1YLA" source="_lU7S0DjAEeyN-qrgse1YLA" target="_lU_kQDjAEeyN-qrgse1YLA"> + <children xmi:type="notation:Node" xmi:id="_Wdv70DjDEeyN-qrgse1YLA" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Wdv70TjDEeyN-qrgse1YLA" x="33" y="-17"/> + </children> + <children xmi:type="notation:Node" xmi:id="_Wdv70jjDEeyN-qrgse1YLA" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Wdv70zjDEeyN-qrgse1YLA" x="-12"/> + </children> + <children xmi:type="notation:Node" xmi:id="_Wdv71DjDEeyN-qrgse1YLA" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Wdv71TjDEeyN-qrgse1YLA" x="8" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_WdvUwzjDEeyN-qrgse1YLA" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_WdvUxDjDEeyN-qrgse1YLA" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_WdvUxTjDEeyN-qrgse1YLA" points="[-1, -25, -274, 89]$[-1, -114, -274, 0]$[232, -114, -41, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Wdv71jjDEeyN-qrgse1YLA" id="(0.5,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Wdv71zjDEeyN-qrgse1YLA" id="(0.5,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_WdyYHjjDEeyN-qrgse1YLA" type="4001" element="_WbMXEjjDEeyN-qrgse1YLA" source="_lU7S0DjAEeyN-qrgse1YLA" target="_hsv1wDjBEeyN-qrgse1YLA"> + <children xmi:type="notation:Node" xmi:id="_Wdy_IDjDEeyN-qrgse1YLA" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Wdy_ITjDEeyN-qrgse1YLA" x="4" y="52"/> + </children> + <children xmi:type="notation:Node" xmi:id="_Wdy_IjjDEeyN-qrgse1YLA" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Wdy_IzjDEeyN-qrgse1YLA" x="13"/> + </children> + <children xmi:type="notation:Node" xmi:id="_Wdy_JDjDEeyN-qrgse1YLA" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Wdy_JTjDEeyN-qrgse1YLA" x="15"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_WdyYHzjDEeyN-qrgse1YLA" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_WdyYIDjDEeyN-qrgse1YLA" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_WdyYITjDEeyN-qrgse1YLA" points="[-20, 26, -1, -143]$[-20, 149, -1, -20]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Wdy_JjjDEeyN-qrgse1YLA" id="(0.5,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Wdy_JzjDEeyN-qrgse1YLA" id="(0.5,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_Wdy_KDjDEeyN-qrgse1YLA" type="4001" element="_WbMXFzjDEeyN-qrgse1YLA" source="_lU7S0DjAEeyN-qrgse1YLA" target="_lU7S0DjAEeyN-qrgse1YLA"> + <children xmi:type="notation:Node" xmi:id="_Wdy_LDjDEeyN-qrgse1YLA" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Wdy_LTjDEeyN-qrgse1YLA" x="28" y="24"/> + </children> + <children xmi:type="notation:Node" xmi:id="_Wdy_LjjDEeyN-qrgse1YLA" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Wdy_LzjDEeyN-qrgse1YLA" x="-1" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_Wdy_MDjDEeyN-qrgse1YLA" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Wdy_MTjDEeyN-qrgse1YLA" x="1" y="20"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_Wdy_KTjDEeyN-qrgse1YLA" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_Wdy_KjjDEeyN-qrgse1YLA" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Wdy_KzjDEeyN-qrgse1YLA" points="[-32, 11, -32, 11]$[-123, 11, -123, 11]$[-123, -13, -123, -13]$[-32, -13, -32, -13]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WdzmMDjDEeyN-qrgse1YLA" id="(0.5,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WdzmMTjDEeyN-qrgse1YLA" id="(0.5,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_WdoAADjDEeyN-qrgse1YLA" type="4001" element="_WbG3gDjDEeyN-qrgse1YLA" source="_wfK9sDjAEeyN-qrgse1YLA" target="_lU7S0DjAEeyN-qrgse1YLA"> + <children xmi:type="notation:Node" xmi:id="_WdpOIDjDEeyN-qrgse1YLA" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WdpOITjDEeyN-qrgse1YLA" x="-15" y="23"/> + </children> + <children xmi:type="notation:Node" xmi:id="_WdpOIjjDEeyN-qrgse1YLA" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WdpOIzjDEeyN-qrgse1YLA" x="9"/> + </children> + <children xmi:type="notation:Node" xmi:id="_WdpOJDjDEeyN-qrgse1YLA" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WdpOJTjDEeyN-qrgse1YLA" x="-41"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_WdoAATjDEeyN-qrgse1YLA" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_WdoAAjjDEeyN-qrgse1YLA" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_WdoAAzjDEeyN-qrgse1YLA" points="[-2, 20, -21, -219]$[-2, 214, -21, -25]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WdvUwDjDEeyN-qrgse1YLA" id="(0.5,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WdvUwTjDEeyN-qrgse1YLA" id="(0.5,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_WdxJ8jjDEeyN-qrgse1YLA" type="4001" element="_WbLwAjjDEeyN-qrgse1YLA" source="_lU_kRzjAEeyN-qrgse1YLA" target="_lU7S0DjAEeyN-qrgse1YLA"> + <children xmi:type="notation:Node" xmi:id="_WdxJ9jjDEeyN-qrgse1YLA" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WdxJ9zjDEeyN-qrgse1YLA" x="-47" y="15"/> + </children> + <children xmi:type="notation:Node" xmi:id="_WdxJ-DjDEeyN-qrgse1YLA" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WdxxADjDEeyN-qrgse1YLA" x="-11" y="11"/> + </children> + <children xmi:type="notation:Node" xmi:id="_WdxxATjDEeyN-qrgse1YLA" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WdxxAjjDEeyN-qrgse1YLA" x="-41" y="86"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_WdxJ8zjDEeyN-qrgse1YLA" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_WdxJ9DjDEeyN-qrgse1YLA" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_WdxJ9TjDEeyN-qrgse1YLA" points="[-35, 26, 237, 128]$[-273, 29, -1, 131]$[-273, -76, -1, 26]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WdxxAzjDEeyN-qrgse1YLA" id="(0.5,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WdxxBDjDEeyN-qrgse1YLA" id="(0.5,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_Wdwi6DjDEeyN-qrgse1YLA" type="4001" element="_WbLI-jjDEeyN-qrgse1YLA" source="_lU-9MDjAEeyN-qrgse1YLA" target="_lU_kRzjAEeyN-qrgse1YLA"> + <children xmi:type="notation:Node" xmi:id="_Wdwi7DjDEeyN-qrgse1YLA" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Wdwi7TjDEeyN-qrgse1YLA" x="42" y="16"/> + </children> + <children xmi:type="notation:Node" xmi:id="_Wdwi7jjDEeyN-qrgse1YLA" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Wdwi7zjDEeyN-qrgse1YLA" x="25" y="91"/> + </children> + <children xmi:type="notation:Node" xmi:id="_Wdwi8DjDEeyN-qrgse1YLA" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Wdwi8TjDEeyN-qrgse1YLA" x="9" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_Wdwi6TjDEeyN-qrgse1YLA" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_Wdwi6jjDEeyN-qrgse1YLA" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Wdwi6zjDEeyN-qrgse1YLA" points="[-1, 26, 266, -76]$[-1, 107, 266, 5]$[-231, 107, 36, 5]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WdxJ8DjDEeyN-qrgse1YLA" id="(0.5,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WdxJ8TjDEeyN-qrgse1YLA" id="(0.5,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_WdzmPjjDEeyN-qrgse1YLA" type="4001" element="_WbMXITjDEeyN-qrgse1YLA" source="_lU-9MDjAEeyN-qrgse1YLA" target="_lU-9MDjAEeyN-qrgse1YLA"> + <children xmi:type="notation:Node" xmi:id="_WdzmQjjDEeyN-qrgse1YLA" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WdzmQzjDEeyN-qrgse1YLA" x="-28" y="12"/> + </children> + <children xmi:type="notation:Node" xmi:id="_WdzmRDjDEeyN-qrgse1YLA" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WdzmRTjDEeyN-qrgse1YLA" x="19" y="20"/> + </children> + <children xmi:type="notation:Node" xmi:id="_WdzmRjjDEeyN-qrgse1YLA" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WdzmRzjDEeyN-qrgse1YLA" x="2" y="-10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_WdzmPzjDEeyN-qrgse1YLA" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_WdzmQDjDEeyN-qrgse1YLA" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_WdzmQTjDEeyN-qrgse1YLA" points="[26, -13, 26, -13]$[88, -13, 88, -13]$[88, 11, 88, 11]$[26, 11, 26, 11]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WdzmSDjDEeyN-qrgse1YLA" id="(0.5,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WdzmSTjDEeyN-qrgse1YLA" id="(0.5,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_Wdv72DjDEeyN-qrgse1YLA" type="4001" element="_WbLI9TjDEeyN-qrgse1YLA" source="_lU_kQDjAEeyN-qrgse1YLA" target="_lU-9MDjAEeyN-qrgse1YLA"> + <children xmi:type="notation:Node" xmi:id="_Wdwi4DjDEeyN-qrgse1YLA" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Wdwi4TjDEeyN-qrgse1YLA" x="-52" y="-17"/> + </children> + <children xmi:type="notation:Node" xmi:id="_Wdwi4jjDEeyN-qrgse1YLA" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Wdwi4zjDEeyN-qrgse1YLA" x="-10" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_Wdwi5DjDEeyN-qrgse1YLA" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Wdwi5TjDEeyN-qrgse1YLA" x="18"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_Wdv72TjDEeyN-qrgse1YLA" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_Wdv72jjDEeyN-qrgse1YLA" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Wdv72zjDEeyN-qrgse1YLA" points="[41, 0, -225, -114]$[267, 0, 1, -114]$[267, 89, 1, -25]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Wdwi5jjDEeyN-qrgse1YLA" id="(0.5,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Wdwi5zjDEeyN-qrgse1YLA" id="(0.5,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_WdyYEjjDEeyN-qrgse1YLA" type="4001" element="_WbLwDDjDEeyN-qrgse1YLA" source="_lU_kQDjAEeyN-qrgse1YLA" target="_lU_kRzjAEeyN-qrgse1YLA"> + <children xmi:type="notation:Node" xmi:id="_WdyYFjjDEeyN-qrgse1YLA" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WdyYFzjDEeyN-qrgse1YLA" x="6" y="-95"/> + </children> + <children xmi:type="notation:Node" xmi:id="_WdyYGDjDEeyN-qrgse1YLA" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WdyYGTjDEeyN-qrgse1YLA" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_WdyYGjjDEeyN-qrgse1YLA" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WdyYGzjDEeyN-qrgse1YLA" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_WdyYEzjDEeyN-qrgse1YLA" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_WdyYFDjDEeyN-qrgse1YLA" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_WdyYFTjDEeyN-qrgse1YLA" points="[12, 26, 13, -190]$[12, 191, 13, -25]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WdyYHDjDEeyN-qrgse1YLA" id="(0.5,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WdyYHTjDEeyN-qrgse1YLA" id="(0.5,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_Wd0NQDjDEeyN-qrgse1YLA" type="4001" element="_WbM-JDjDEeyN-qrgse1YLA" source="_lU_kQDjAEeyN-qrgse1YLA" target="_lU_kQDjAEeyN-qrgse1YLA"> + <children xmi:type="notation:Node" xmi:id="_Wd0NRDjDEeyN-qrgse1YLA" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Wd0NRTjDEeyN-qrgse1YLA" x="1" y="22"/> + </children> + <children xmi:type="notation:Node" xmi:id="_Wd0NRjjDEeyN-qrgse1YLA" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Wd0NRzjDEeyN-qrgse1YLA" x="8"/> + </children> + <children xmi:type="notation:Node" xmi:id="_Wd0NSDjDEeyN-qrgse1YLA" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Wd0NSTjDEeyN-qrgse1YLA" x="-3" y="-10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_Wd0NQTjDEeyN-qrgse1YLA" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_Wd0NQjjDEeyN-qrgse1YLA" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Wd0NQzjDEeyN-qrgse1YLA" points="[24, -25, 24, -25]$[24, -55, 24, -55]$[-24, -55, -24, -55]$[-24, -25, -24, -25]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Wd0NSjjDEeyN-qrgse1YLA" id="(0.5,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Wd0NSzjDEeyN-qrgse1YLA" id="(0.5,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_WdxxBTjDEeyN-qrgse1YLA" type="4001" element="_WbLwBzjDEeyN-qrgse1YLA" source="_lU_kRzjAEeyN-qrgse1YLA" target="_lU_kQDjAEeyN-qrgse1YLA"> + <children xmi:type="notation:Node" xmi:id="_WdxxCTjDEeyN-qrgse1YLA" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WdxxCjjDEeyN-qrgse1YLA" x="-5" y="-86"/> + </children> + <children xmi:type="notation:Node" xmi:id="_WdxxCzjDEeyN-qrgse1YLA" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WdxxDDjDEeyN-qrgse1YLA" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_WdxxDTjDEeyN-qrgse1YLA" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WdxxDjjDEeyN-qrgse1YLA" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_WdxxBjjDEeyN-qrgse1YLA" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_WdxxBzjDEeyN-qrgse1YLA" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_WdxxCDjDEeyN-qrgse1YLA" points="[0, -25, -1, 191]$[0, -190, -1, 26]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WdyYEDjDEeyN-qrgse1YLA" id="(0.5,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WdyYETjDEeyN-qrgse1YLA" id="(0.5,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_WdzmMjjDEeyN-qrgse1YLA" type="4001" element="_WbMXHDjDEeyN-qrgse1YLA" source="_lU_kRzjAEeyN-qrgse1YLA" target="_lU_kRzjAEeyN-qrgse1YLA"> + <children xmi:type="notation:Node" xmi:id="_WdzmNjjDEeyN-qrgse1YLA" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WdzmNzjDEeyN-qrgse1YLA" x="4" y="-19"/> + </children> + <children xmi:type="notation:Node" xmi:id="_WdzmODjDEeyN-qrgse1YLA" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WdzmOTjDEeyN-qrgse1YLA" x="2"/> + </children> + <children xmi:type="notation:Node" xmi:id="_WdzmOjjDEeyN-qrgse1YLA" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WdzmOzjDEeyN-qrgse1YLA" x="-5" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_WdzmMzjDEeyN-qrgse1YLA" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_WdzmNDjDEeyN-qrgse1YLA" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_WdzmNTjDEeyN-qrgse1YLA" points="[25, 26, 25, 26]$[25, 59, 25, 59]$[-17, 59, -17, 59]$[-17, 26, -17, 26]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WdzmPDjDEeyN-qrgse1YLA" id="(0.5,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WdzmPTjDEeyN-qrgse1YLA" id="(0.5,0.5)"/> + </edges> + </data> + </ownedAnnotationEntries> + <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_ip86UDjAEeyN-qrgse1YLA" source="DANNOTATION_CUSTOMIZATION_KEY"> + <data xmi:type="diagram:ComputedStyleDescriptionRegistry" uid="_ip86UTjAEeyN-qrgse1YLA"/> + </ownedAnnotationEntries> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_werOcDjAEeyN-qrgse1YLA" name="initial" outgoingEdges="_WbG3gDjDEeyN-qrgse1YLA" width="4" height="4"> + <target xmi:type="statemachine:InitialState" href="garagedoor.statemachine#initial"/> + <semanticElements xmi:type="statemachine:InitialState" href="garagedoor.statemachine#initial"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Dot" uid="_0QWwUDjAEeyN-qrgse1YLA" labelSize="12" showIcon="false" backgroundColor="0,0,0"> + <description xmi:type="style:DotDescription" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@nodeMappings[name='Initial%20State']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@nodeMappings[name='Initial%20State']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_hsCEETjBEeyN-qrgse1YLA" name="final" incomingEdges="_WbMXEjjDEeyN-qrgse1YLA" width="4" height="4"> + <target xmi:type="statemachine:FinalState" href="garagedoor.statemachine#final"/> + <semanticElements xmi:type="statemachine:FinalState" href="garagedoor.statemachine#final"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Dot" uid="_82BJITjBEeyN-qrgse1YLA" labelSize="12" showIcon="false" borderSize="10" borderSizeComputationExpression="10" backgroundColor="255,255,255"> + <description xmi:type="style:DotDescription" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@nodeMappings[name='Final%20State']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@nodeMappings[name='Final%20State']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_yIYsUDjCEeyN-qrgse1YLA" name="Closed" outgoingEdges="_WbLI8DjDEeyN-qrgse1YLA _WbMXEjjDEeyN-qrgse1YLA _WbMXFzjDEeyN-qrgse1YLA" incomingEdges="_WbG3gDjDEeyN-qrgse1YLA _WbLwAjjDEeyN-qrgse1YLA _WbMXFzjDEeyN-qrgse1YLA"> + <target xmi:type="statemachine:NormalState" href="garagedoor.statemachine#Closed"/> + <semanticElements xmi:type="statemachine:NormalState" href="garagedoor.statemachine#Closed"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_yIYsUTjCEeyN-qrgse1YLA" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" backgroundColor="255,245,181" foregroundColor="255,245,181"> + <labelFormat>bold</labelFormat> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_yIZTYzjCEeyN-qrgse1YLA" name="Open" outgoingEdges="_WbLI-jjDEeyN-qrgse1YLA _WbMXITjDEeyN-qrgse1YLA" incomingEdges="_WbLI9TjDEeyN-qrgse1YLA _WbMXITjDEeyN-qrgse1YLA"> + <target xmi:type="statemachine:NormalState" href="garagedoor.statemachine#Open"/> + <semanticElements xmi:type="statemachine:NormalState" href="garagedoor.statemachine#Open"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_yIZTZDjCEeyN-qrgse1YLA" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" backgroundColor="255,245,181" foregroundColor="255,245,181"> + <labelFormat>bold</labelFormat> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_yIZ6cjjCEeyN-qrgse1YLA" name="Opening" outgoingEdges="_WbLI9TjDEeyN-qrgse1YLA _WbLwDDjDEeyN-qrgse1YLA _WbM-JDjDEeyN-qrgse1YLA" incomingEdges="_WbLI8DjDEeyN-qrgse1YLA _WbLwBzjDEeyN-qrgse1YLA _WbM-JDjDEeyN-qrgse1YLA"> + <target xmi:type="statemachine:NormalState" href="garagedoor.statemachine#Opening"/> + <semanticElements xmi:type="statemachine:NormalState" href="garagedoor.statemachine#Opening"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_yIZ6czjCEeyN-qrgse1YLA" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" backgroundColor="255,245,181" foregroundColor="255,245,181"> + <labelFormat>bold</labelFormat> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_yIZ6dzjCEeyN-qrgse1YLA" name="Closing" outgoingEdges="_WbLwAjjDEeyN-qrgse1YLA _WbLwBzjDEeyN-qrgse1YLA _WbMXHDjDEeyN-qrgse1YLA" incomingEdges="_WbLI-jjDEeyN-qrgse1YLA _WbLwDDjDEeyN-qrgse1YLA _WbMXHDjDEeyN-qrgse1YLA"> + <target xmi:type="statemachine:NormalState" href="garagedoor.statemachine#Closing"/> + <semanticElements xmi:type="statemachine:NormalState" href="garagedoor.statemachine#Closing"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_yIahgDjCEeyN-qrgse1YLA" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" backgroundColor="255,245,181" foregroundColor="255,245,181"> + <labelFormat>bold</labelFormat> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_WbG3gDjDEeyN-qrgse1YLA" sourceNode="_werOcDjAEeyN-qrgse1YLA" targetNode="_yIYsUDjCEeyN-qrgse1YLA"> + <target xmi:type="statemachine:Transition" href="garagedoor.statemachine#//@transitions.0"/> + <semanticElements xmi:type="statemachine:Transition" href="garagedoor.statemachine#//@transitions.0"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_WbKh4DjDEeyN-qrgse1YLA" targetArrow="InputFillClosedArrow" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_WbKh4TjDEeyN-qrgse1YLA" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_WbLI8DjDEeyN-qrgse1YLA" name="openDoor / motor.upwards" sourceNode="_yIYsUDjCEeyN-qrgse1YLA" targetNode="_yIZ6cjjCEeyN-qrgse1YLA"> + <target xmi:type="statemachine:Transition" href="garagedoor.statemachine#//@transitions.1"/> + <semanticElements xmi:type="statemachine:Transition" href="garagedoor.statemachine#//@transitions.1"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_WbLI8TjDEeyN-qrgse1YLA" targetArrow="InputFillClosedArrow" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_WbLI8jjDEeyN-qrgse1YLA" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_WbLI9TjDEeyN-qrgse1YLA" name=" [stopper] / motor.stop" sourceNode="_yIZ6cjjCEeyN-qrgse1YLA" targetNode="_yIZTYzjCEeyN-qrgse1YLA"> + <target xmi:type="statemachine:Transition" href="garagedoor.statemachine#//@transitions.2"/> + <semanticElements xmi:type="statemachine:Transition" href="garagedoor.statemachine#//@transitions.2"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_WbLI9jjDEeyN-qrgse1YLA" targetArrow="InputFillClosedArrow" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_WbLI9zjDEeyN-qrgse1YLA" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_WbLI-jjDEeyN-qrgse1YLA" name="closeDoor / motor.downwards" sourceNode="_yIZTYzjCEeyN-qrgse1YLA" targetNode="_yIZ6dzjCEeyN-qrgse1YLA"> + <target xmi:type="statemachine:Transition" href="garagedoor.statemachine#//@transitions.3"/> + <semanticElements xmi:type="statemachine:Transition" href="garagedoor.statemachine#//@transitions.3"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_WbLI-zjDEeyN-qrgse1YLA" targetArrow="InputFillClosedArrow" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_WbLI_DjDEeyN-qrgse1YLA" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_WbLwAjjDEeyN-qrgse1YLA" name=" [stopper] / motor.stop" sourceNode="_yIZ6dzjCEeyN-qrgse1YLA" targetNode="_yIYsUDjCEeyN-qrgse1YLA"> + <target xmi:type="statemachine:Transition" href="garagedoor.statemachine#//@transitions.4"/> + <semanticElements xmi:type="statemachine:Transition" href="garagedoor.statemachine#//@transitions.4"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_WbLwAzjDEeyN-qrgse1YLA" targetArrow="InputFillClosedArrow" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_WbLwBDjDEeyN-qrgse1YLA" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_WbLwBzjDEeyN-qrgse1YLA" name="openDoor / motor.upwards" sourceNode="_yIZ6dzjCEeyN-qrgse1YLA" targetNode="_yIZ6cjjCEeyN-qrgse1YLA"> + <target xmi:type="statemachine:Transition" href="garagedoor.statemachine#//@transitions.5"/> + <semanticElements xmi:type="statemachine:Transition" href="garagedoor.statemachine#//@transitions.5"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_WbLwCDjDEeyN-qrgse1YLA" targetArrow="InputFillClosedArrow" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_WbLwCTjDEeyN-qrgse1YLA" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_WbLwDDjDEeyN-qrgse1YLA" name="closeDoor / motor.downwards" sourceNode="_yIZ6cjjCEeyN-qrgse1YLA" targetNode="_yIZ6dzjCEeyN-qrgse1YLA"> + <target xmi:type="statemachine:Transition" href="garagedoor.statemachine#//@transitions.6"/> + <semanticElements xmi:type="statemachine:Transition" href="garagedoor.statemachine#//@transitions.6"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_WbLwDTjDEeyN-qrgse1YLA" targetArrow="InputFillClosedArrow" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_WbLwDjjDEeyN-qrgse1YLA" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_WbMXEjjDEeyN-qrgse1YLA" name=" [shutdown]" sourceNode="_yIYsUDjCEeyN-qrgse1YLA" targetNode="_hsCEETjBEeyN-qrgse1YLA"> + <target xmi:type="statemachine:Transition" href="garagedoor.statemachine#//@transitions.7"/> + <semanticElements xmi:type="statemachine:Transition" href="garagedoor.statemachine#//@transitions.7"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_WbMXEzjDEeyN-qrgse1YLA" targetArrow="InputFillClosedArrow" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_WbMXFDjDEeyN-qrgse1YLA" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_WbMXFzjDEeyN-qrgse1YLA" name="closeDoor" sourceNode="_yIYsUDjCEeyN-qrgse1YLA" targetNode="_yIYsUDjCEeyN-qrgse1YLA"> + <target xmi:type="statemachine:Transition" href="garagedoor.statemachine#//@transitions.8"/> + <semanticElements xmi:type="statemachine:Transition" href="garagedoor.statemachine#//@transitions.8"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_WbMXGDjDEeyN-qrgse1YLA" targetArrow="InputFillClosedArrow" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_WbMXGTjDEeyN-qrgse1YLA" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_WbMXHDjDEeyN-qrgse1YLA" name="closeDoor" sourceNode="_yIZ6dzjCEeyN-qrgse1YLA" targetNode="_yIZ6dzjCEeyN-qrgse1YLA"> + <target xmi:type="statemachine:Transition" href="garagedoor.statemachine#//@transitions.9"/> + <semanticElements xmi:type="statemachine:Transition" href="garagedoor.statemachine#//@transitions.9"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_WbMXHTjDEeyN-qrgse1YLA" targetArrow="InputFillClosedArrow" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_WbMXHjjDEeyN-qrgse1YLA" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_WbMXITjDEeyN-qrgse1YLA" name="openDoor" sourceNode="_yIZTYzjCEeyN-qrgse1YLA" targetNode="_yIZTYzjCEeyN-qrgse1YLA"> + <target xmi:type="statemachine:Transition" href="garagedoor.statemachine#//@transitions.10"/> + <semanticElements xmi:type="statemachine:Transition" href="garagedoor.statemachine#//@transitions.10"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_WbM-IDjDEeyN-qrgse1YLA" targetArrow="InputFillClosedArrow" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_WbM-ITjDEeyN-qrgse1YLA" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_WbM-JDjDEeyN-qrgse1YLA" name="openDoor" sourceNode="_yIZ6cjjCEeyN-qrgse1YLA" targetNode="_yIZ6cjjCEeyN-qrgse1YLA"> + <target xmi:type="statemachine:Transition" href="garagedoor.statemachine#//@transitions.11"/> + <semanticElements xmi:type="statemachine:Transition" href="garagedoor.statemachine#//@transitions.11"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_WbM-JTjDEeyN-qrgse1YLA" targetArrow="InputFillClosedArrow" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_WbM-JjjDEeyN-qrgse1YLA" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_gzKjWzvrEeyeeflsfjx5ZA" name="State Machine: Garage Door" height="4"> + <target xmi:type="statemachine:StateMachine" href="garagedoor.statemachine#Garage Door"/> + <semanticElements xmi:type="statemachine:StateMachine" href="garagedoor.statemachine#Garage Door"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_gzKjXDvrEeyeeflsfjx5ZA" labelSize="12" showIcon="false" borderColor="255,255,255" backgroundStyle="Liquid" foregroundColor="255,255,255"> + <labelFormat>bold</labelFormat> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='State%20Machine%20Label']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='State%20Machine%20Label']"/> + </ownedDiagramElements> + <description xmi:type="description_1:DiagramDescription" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']"/> + <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_ipJCADjAEeyN-qrgse1YLA"/> + <activatedLayers xmi:type="description_1:Layer" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer"/> + <target xmi:type="statemachine:StateMachine" href="garagedoor.statemachine#Garage Door"/> + </diagram:DSemanticDiagram> + <diagram:DSemanticDiagram uid="_2axsEDyHEeytPeWyzOo0bw"> + <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_2a5A0DyHEeytPeWyzOo0bw" source="GMF_DIAGRAMS"> + <data xmi:type="notation:Diagram" xmi:id="_2a5A0TyHEeytPeWyzOo0bw" type="Sirius" element="_2axsEDyHEeytPeWyzOo0bw" measurementUnit="Pixel"> + <children xmi:type="notation:Node" xmi:id="_2a_HcDyHEeytPeWyzOo0bw" type="2001" element="_2a5n4DyHEeytPeWyzOo0bw"> + <children xmi:type="notation:Node" xmi:id="_2bA8oDyHEeytPeWyzOo0bw" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_2bA8oTyHEeytPeWyzOo0bw" x="-4" y="41"/> + </children> + <children xmi:type="notation:Node" xmi:id="_2bJfgzyHEeytPeWyzOo0bw" type="3002" element="_2a6O8DyHEeytPeWyzOo0bw"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_2bJfhDyHEeytPeWyzOo0bw" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2bJfhTyHEeytPeWyzOo0bw"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_2a_HcTyHEeytPeWyzOo0bw" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2a_HcjyHEeytPeWyzOo0bw" x="306" y="360" width="40" height="40"/> + </children> + <children xmi:type="notation:Node" xmi:id="_2bGcMDyHEeytPeWyzOo0bw" type="2003" element="_2a62ATyHEeytPeWyzOo0bw"> + <children xmi:type="notation:Node" xmi:id="_2bHDQDyHEeytPeWyzOo0bw" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_2bHqUDyHEeytPeWyzOo0bw" type="7004"> + <children xmi:type="notation:Node" xmi:id="_2bKGkDyHEeytPeWyzOo0bw" type="3010" element="_2a7dFDyHEeytPeWyzOo0bw"> + <styles xmi:type="notation:FontStyle" xmi:id="_2bKGkTyHEeytPeWyzOo0bw" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_2bKGkjyHEeytPeWyzOo0bw"/> + </children> + <styles xmi:type="notation:SortingStyle" xmi:id="_2bHqUTyHEeytPeWyzOo0bw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_2bHqUjyHEeytPeWyzOo0bw"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_2bGcMTyHEeytPeWyzOo0bw" fontName="Segoe UI" fontHeight="12" bold="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2bGcMjyHEeytPeWyzOo0bw" x="432" y="156"/> + </children> + <children xmi:type="notation:Node" xmi:id="_2bHqUzyHEeytPeWyzOo0bw" type="2003" element="_2a7dETyHEeytPeWyzOo0bw"> + <children xmi:type="notation:Node" xmi:id="_2bIRYDyHEeytPeWyzOo0bw" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_2bIRYTyHEeytPeWyzOo0bw" type="7004"> + <children xmi:type="notation:Node" xmi:id="_2bKtoDyHEeytPeWyzOo0bw" type="3010" element="_2a8EIDyHEeytPeWyzOo0bw"> + <styles xmi:type="notation:FontStyle" xmi:id="_2bKtoTyHEeytPeWyzOo0bw" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_2bKtojyHEeytPeWyzOo0bw"/> + </children> + <styles xmi:type="notation:SortingStyle" xmi:id="_2bIRYjyHEeytPeWyzOo0bw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_2bIRYzyHEeytPeWyzOo0bw"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_2bHqVDyHEeytPeWyzOo0bw" fontName="Segoe UI" fontHeight="12" bold="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2bHqVTyHEeytPeWyzOo0bw" x="438" y="342"/> + </children> + <children xmi:type="notation:Node" xmi:id="_2bI4cDyHEeytPeWyzOo0bw" type="2002" element="_2a8EIjyHEeytPeWyzOo0bw"> + <children xmi:type="notation:Node" xmi:id="_2bI4czyHEeytPeWyzOo0bw" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_2bJfgDyHEeytPeWyzOo0bw" type="7001"> + <styles xmi:type="notation:SortingStyle" xmi:id="_2bJfgTyHEeytPeWyzOo0bw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_2bJfgjyHEeytPeWyzOo0bw"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_2bI4cTyHEeytPeWyzOo0bw" fontName="Segoe UI" fontHeight="12" bold="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2bI4cjyHEeytPeWyzOo0bw" x="423" y="72"/> + </children> + <styles xmi:type="notation:DiagramStyle" xmi:id="_2a5A0jyHEeytPeWyzOo0bw"/> + <edges xmi:type="notation:Edge" xmi:id="_2bKtozyHEeytPeWyzOo0bw" type="4001" element="_2a8rMDyHEeytPeWyzOo0bw" source="_2a_HcDyHEeytPeWyzOo0bw" target="_2bHqUzyHEeytPeWyzOo0bw"> + <children xmi:type="notation:Node" xmi:id="_2bKtpzyHEeytPeWyzOo0bw" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2bKtqDyHEeytPeWyzOo0bw" x="-43" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_2bLUsDyHEeytPeWyzOo0bw" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2bLUsTyHEeytPeWyzOo0bw" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_2bLUsjyHEeytPeWyzOo0bw" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2bLUszyHEeytPeWyzOo0bw" x="-45" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_2bKtpDyHEeytPeWyzOo0bw" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_2bKtpTyHEeytPeWyzOo0bw" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_2bKtpjyHEeytPeWyzOo0bw" points="[20, 20, -177, -31]$[112, 20, -85, -31]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2bNJ4DyHEeytPeWyzOo0bw" id="(0.5,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2bNJ4TyHEeytPeWyzOo0bw" id="(0.5059523809523809,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_2bNw_DyHEeytPeWyzOo0bw" type="4001" element="_2a9SQjyHEeytPeWyzOo0bw" source="_2bGcMDyHEeytPeWyzOo0bw" target="_2bHqUzyHEeytPeWyzOo0bw"> + <children xmi:type="notation:Node" xmi:id="_2bOYADyHEeytPeWyzOo0bw" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2bOYATyHEeytPeWyzOo0bw" x="-11" y="21"/> + </children> + <children xmi:type="notation:Node" xmi:id="_2bOYAjyHEeytPeWyzOo0bw" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2bOYAzyHEeytPeWyzOo0bw" x="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_2bOYBDyHEeytPeWyzOo0bw" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2bOYBTyHEeytPeWyzOo0bw" x="-29"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_2bNw_TyHEeytPeWyzOo0bw" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_2bNw_jyHEeytPeWyzOo0bw" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_2bNw_zyHEeytPeWyzOo0bw" points="[-43, 69, -37, -186]$[-43, 186, -37, -69]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2bOYBjyHEeytPeWyzOo0bw" id="(0.5052083333333334,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2bOYBzyHEeytPeWyzOo0bw" id="(0.5059523809523809,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_2bNw8DyHEeytPeWyzOo0bw" type="4001" element="_2a8rNTyHEeytPeWyzOo0bw" source="_2bHqUzyHEeytPeWyzOo0bw" target="_2bGcMDyHEeytPeWyzOo0bw"> + <children xmi:type="notation:Node" xmi:id="_2bNw9DyHEeytPeWyzOo0bw" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2bNw9TyHEeytPeWyzOo0bw" x="12" y="21"/> + </children> + <children xmi:type="notation:Node" xmi:id="_2bNw9jyHEeytPeWyzOo0bw" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2bNw9zyHEeytPeWyzOo0bw" x="28"/> + </children> + <children xmi:type="notation:Node" xmi:id="_2bNw-DyHEeytPeWyzOo0bw" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2bNw-TyHEeytPeWyzOo0bw" x="-10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_2bNw8TyHEeytPeWyzOo0bw" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_2bNw8jyHEeytPeWyzOo0bw" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_2bNw8zyHEeytPeWyzOo0bw" points="[34, -69, 28, 186]$[34, -186, 28, 69]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2bNw-jyHEeytPeWyzOo0bw" id="(0.5059523809523809,1.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2bNw-zyHEeytPeWyzOo0bw" id="(0.5052083333333334,0.0)"/> + </edges> + </data> + </ownedAnnotationEntries> + <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_2a9SRzyHEeytPeWyzOo0bw" source="DANNOTATION_CUSTOMIZATION_KEY"> + <data xmi:type="diagram:ComputedStyleDescriptionRegistry" uid="_2a9SSDyHEeytPeWyzOo0bw"/> + </ownedAnnotationEntries> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_2a5n4DyHEeytPeWyzOo0bw" name="initial" outgoingEdges="_2a8rMDyHEeytPeWyzOo0bw" width="4" height="4"> + <target xmi:type="statemachine:InitialState" href="switch.statemachine#initial"/> + <semanticElements xmi:type="statemachine:InitialState" href="switch.statemachine#initial"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Dot" uid="_2a6O8DyHEeytPeWyzOo0bw" labelSize="12" showIcon="false" backgroundColor="0,0,0"> + <description xmi:type="style:DotDescription" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@nodeMappings[name='Initial%20State']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@nodeMappings[name='Initial%20State']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_2a62ATyHEeytPeWyzOo0bw" name="on" outgoingEdges="_2a9SQjyHEeytPeWyzOo0bw" incomingEdges="_2a8rNTyHEeytPeWyzOo0bw"> + <target xmi:type="statemachine:NormalState" href="switch.statemachine#on"/> + <semanticElements xmi:type="statemachine:NormalState" href="switch.statemachine#on"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_2a62AjyHEeytPeWyzOo0bw" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" backgroundColor="255,245,181" foregroundColor="255,245,181"> + <labelFormat>bold</labelFormat> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']"/> + <ownedElements xmi:type="diagram:DNodeListElement" uid="_2a7dFDyHEeytPeWyzOo0bw" name="do/ do_something"> + <target xmi:type="statemachine:Action" href="switch.statemachine#//@states.0/@do_"/> + <semanticElements xmi:type="statemachine:Action" href="switch.statemachine#//@states.0/@do_"/> + <ownedStyle xmi:type="diagram:Square" uid="_2a7dFTyHEeytPeWyzOo0bw" labelSize="12" showIcon="false" labelAlignment="LEFT" labelPosition="node" color="255,245,181"> + <description xmi:type="style:SquareDescription" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']/@subNodeMappings[name='Do%20Activity']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']/@subNodeMappings[name='Do%20Activity']"/> + </ownedElements> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_2a7dETyHEeytPeWyzOo0bw" name="off" outgoingEdges="_2a8rNTyHEeytPeWyzOo0bw" incomingEdges="_2a8rMDyHEeytPeWyzOo0bw _2a9SQjyHEeytPeWyzOo0bw"> + <target xmi:type="statemachine:NormalState" href="switch.statemachine#off"/> + <semanticElements xmi:type="statemachine:NormalState" href="switch.statemachine#off"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_2a7dEjyHEeytPeWyzOo0bw" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" backgroundColor="255,245,181" foregroundColor="255,245,181"> + <labelFormat>bold</labelFormat> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']"/> + <ownedElements xmi:type="diagram:DNodeListElement" uid="_2a8EIDyHEeytPeWyzOo0bw" name="do/ do_nothing"> + <target xmi:type="statemachine:Action" href="switch.statemachine#//@states.1/@do_"/> + <semanticElements xmi:type="statemachine:Action" href="switch.statemachine#//@states.1/@do_"/> + <ownedStyle xmi:type="diagram:Square" uid="_2a8EITyHEeytPeWyzOo0bw" labelSize="12" showIcon="false" labelAlignment="LEFT" labelPosition="node" color="255,245,181"> + <description xmi:type="style:SquareDescription" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']/@subNodeMappings[name='Do%20Activity']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']/@subNodeMappings[name='Do%20Activity']"/> + </ownedElements> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_2a8EIjyHEeytPeWyzOo0bw" name="State Machine: Switch" height="4"> + <target xmi:type="statemachine:StateMachine" href="switch.statemachine#Switch"/> + <semanticElements xmi:type="statemachine:StateMachine" href="switch.statemachine#Switch"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_2a8EIzyHEeytPeWyzOo0bw" labelSize="12" showIcon="false" borderColor="255,255,255" backgroundStyle="Liquid" foregroundColor="255,255,255"> + <labelFormat>bold</labelFormat> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='State%20Machine%20Label']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='State%20Machine%20Label']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_2a8rMDyHEeytPeWyzOo0bw" sourceNode="_2a5n4DyHEeytPeWyzOo0bw" targetNode="_2a7dETyHEeytPeWyzOo0bw"> + <target xmi:type="statemachine:Transition" href="switch.statemachine#//@transitions.0"/> + <semanticElements xmi:type="statemachine:Transition" href="switch.statemachine#//@transitions.0"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_2a8rMTyHEeytPeWyzOo0bw" targetArrow="InputFillClosedArrow" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_2a8rMjyHEeytPeWyzOo0bw" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_2a8rNTyHEeytPeWyzOo0bw" name="flip" sourceNode="_2a7dETyHEeytPeWyzOo0bw" targetNode="_2a62ATyHEeytPeWyzOo0bw"> + <target xmi:type="statemachine:Transition" href="switch.statemachine#//@transitions.1"/> + <semanticElements xmi:type="statemachine:Transition" href="switch.statemachine#//@transitions.1"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_2a8rNjyHEeytPeWyzOo0bw" targetArrow="InputFillClosedArrow" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_2a8rNzyHEeytPeWyzOo0bw" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_2a9SQjyHEeytPeWyzOo0bw" name="flip" sourceNode="_2a62ATyHEeytPeWyzOo0bw" targetNode="_2a7dETyHEeytPeWyzOo0bw"> + <target xmi:type="statemachine:Transition" href="switch.statemachine#//@transitions.2"/> + <semanticElements xmi:type="statemachine:Transition" href="switch.statemachine#//@transitions.2"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_2a9SQzyHEeytPeWyzOo0bw" targetArrow="InputFillClosedArrow" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_2a9SRDyHEeytPeWyzOo0bw" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']"/> + </ownedDiagramElements> + <description xmi:type="description_1:DiagramDescription" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']"/> + <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_2ayTIDyHEeytPeWyzOo0bw"/> + <activatedLayers xmi:type="description_1:Layer" href="platform:/resource/swt.most.statemachine.gDSL/description/gDSL.odesign#//@ownedViewpoints[name='DSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer"/> + <target xmi:type="statemachine:StateMachine" href="switch.statemachine#Switch"/> + </diagram:DSemanticDiagram> + <diagram:DSemanticDiagram uid="_ydRecCysEe-4er9RFtOKtQ"> + <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_yd5JgCysEe-4er9RFtOKtQ" source="GMF_DIAGRAMS"> + <data xmi:type="notation:Diagram" xmi:id="_yd5wkCysEe-4er9RFtOKtQ" type="Sirius" element="_ydRecCysEe-4er9RFtOKtQ" measurementUnit="Pixel"> + <children xmi:type="notation:Node" xmi:id="_ygS9QCysEe-4er9RFtOKtQ" type="2001" element="_yfV7ACysEe-4er9RFtOKtQ"> + <children xmi:type="notation:Node" xmi:id="_ygcuQCysEe-4er9RFtOKtQ" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_ygcuQSysEe-4er9RFtOKtQ" x="-14" y="-33"/> + </children> + <children xmi:type="notation:Node" xmi:id="_ygvpMCysEe-4er9RFtOKtQ" type="3002" element="_yfaMcCysEe-4er9RFtOKtQ"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_ygvpMSysEe-4er9RFtOKtQ" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ygvpMiysEe-4er9RFtOKtQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_ygS9QSysEe-4er9RFtOKtQ" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ygS9QiysEe-4er9RFtOKtQ" x="49" y="224" width="30" height="30"/> + </children> + <children xmi:type="notation:Node" xmi:id="_ygntYCysEe-4er9RFtOKtQ" type="2001" element="_yfed4CysEe-4er9RFtOKtQ"> + <children xmi:type="notation:Node" xmi:id="_ygoUcCysEe-4er9RFtOKtQ" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_ygoUcSysEe-4er9RFtOKtQ" x="-8" y="-33"/> + </children> + <children xmi:type="notation:Node" xmi:id="_ygwQQCysEe-4er9RFtOKtQ" type="3002" element="_yffE8CysEe-4er9RFtOKtQ"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_ygwQQSysEe-4er9RFtOKtQ" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ygwQQiysEe-4er9RFtOKtQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_ygntYSysEe-4er9RFtOKtQ" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ygntYiysEe-4er9RFtOKtQ" x="78" y="294" width="30" height="30"/> + </children> + <children xmi:type="notation:Node" xmi:id="_ygqJoCysEe-4er9RFtOKtQ" type="2003" element="_yffsACysEe-4er9RFtOKtQ"> + <children xmi:type="notation:Node" xmi:id="_ygqwsCysEe-4er9RFtOKtQ" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_ygrXwCysEe-4er9RFtOKtQ" type="7004"> + <styles xmi:type="notation:SortingStyle" xmi:id="_ygrXwSysEe-4er9RFtOKtQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_ygrXwiysEe-4er9RFtOKtQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_ygqJoSysEe-4er9RFtOKtQ" fontName="Segoe UI" fontHeight="12" bold="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ygqJoiysEe-4er9RFtOKtQ" x="196" y="343"/> + </children> + <children xmi:type="notation:Node" xmi:id="_ygr-0CysEe-4er9RFtOKtQ" type="2003" element="_yfg6ICysEe-4er9RFtOKtQ"> + <children xmi:type="notation:Node" xmi:id="_ygsl4CysEe-4er9RFtOKtQ" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_ygsl4SysEe-4er9RFtOKtQ" type="7004"> + <styles xmi:type="notation:SortingStyle" xmi:id="_ygsl4iysEe-4er9RFtOKtQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_ygsl4yysEe-4er9RFtOKtQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_ygr-0SysEe-4er9RFtOKtQ" fontName="Segoe UI" fontHeight="12" bold="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ygr-0iysEe-4er9RFtOKtQ" x="777" y="336"/> + </children> + <children xmi:type="notation:Node" xmi:id="_ygsl5CysEe-4er9RFtOKtQ" type="2003" element="_yfhhMSysEe-4er9RFtOKtQ"> + <children xmi:type="notation:Node" xmi:id="_ygtM8CysEe-4er9RFtOKtQ" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_ygtM8SysEe-4er9RFtOKtQ" type="7004"> + <styles xmi:type="notation:SortingStyle" xmi:id="_ygtM8iysEe-4er9RFtOKtQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_ygtM8yysEe-4er9RFtOKtQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_ygsl5SysEe-4er9RFtOKtQ" fontName="Segoe UI" fontHeight="12" bold="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ygsl5iysEe-4er9RFtOKtQ" x="441" y="161" width="150"/> + </children> + <children xmi:type="notation:Node" xmi:id="_ygtM9CysEe-4er9RFtOKtQ" type="2003" element="_yfivUSysEe-4er9RFtOKtQ"> + <children xmi:type="notation:Node" xmi:id="_ygtM9yysEe-4er9RFtOKtQ" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_ygt0ACysEe-4er9RFtOKtQ" type="7004"> + <styles xmi:type="notation:SortingStyle" xmi:id="_ygt0ASysEe-4er9RFtOKtQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_ygt0AiysEe-4er9RFtOKtQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_ygtM9SysEe-4er9RFtOKtQ" fontName="Segoe UI" fontHeight="12" bold="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ygtM9iysEe-4er9RFtOKtQ" x="448" y="539" width="150"/> + </children> + <children xmi:type="notation:Node" xmi:id="_ygt0AyysEe-4er9RFtOKtQ" type="2003" element="_yfkkgCysEe-4er9RFtOKtQ"> + <children xmi:type="notation:Node" xmi:id="_ygt0BiysEe-4er9RFtOKtQ" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_ygubECysEe-4er9RFtOKtQ" type="7004"> + <styles xmi:type="notation:SortingStyle" xmi:id="_ygubESysEe-4er9RFtOKtQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_ygubEiysEe-4er9RFtOKtQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_ygt0BCysEe-4er9RFtOKtQ" fontName="Segoe UI" fontHeight="10" bold="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ygt0BSysEe-4er9RFtOKtQ" x="21" y="54" width="311" height="40"/> + </children> + <styles xmi:type="notation:DiagramStyle" xmi:id="_yd5wkSysEe-4er9RFtOKtQ"/> + <edges xmi:type="notation:Edge" xmi:id="_yg9roCysEe-4er9RFtOKtQ" type="4001" element="_yfym8CysEe-4er9RFtOKtQ" source="_ygS9QCysEe-4er9RFtOKtQ" target="_ygqJoCysEe-4er9RFtOKtQ"> + <children xmi:type="notation:Node" xmi:id="_yg-5wCysEe-4er9RFtOKtQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yg-5wSysEe-4er9RFtOKtQ" x="-9" y="-87"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yhAH4CysEe-4er9RFtOKtQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yhAH4SysEe-4er9RFtOKtQ" x="-18" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yhAu8CysEe-4er9RFtOKtQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yhAu8SysEe-4er9RFtOKtQ" x="-99" y="-89"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_yg9roSysEe-4er9RFtOKtQ" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_yg9roiysEe-4er9RFtOKtQ" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_yg9royysEe-4er9RFtOKtQ" points="[-4, 15, -175, -116]$[-4, 146, -175, 15]$[132, 146, -39, 15]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yhIDsCysEe-4er9RFtOKtQ" id="(0.5,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yhIDsSysEe-4er9RFtOKtQ" id="(0.5,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_yhIDsiysEe-4er9RFtOKtQ" type="4001" element="_yf5UoCysEe-4er9RFtOKtQ" source="_ygqJoCysEe-4er9RFtOKtQ" target="_ygsl5CysEe-4er9RFtOKtQ"> + <children xmi:type="notation:Node" xmi:id="_yhIqwCysEe-4er9RFtOKtQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yhIqwSysEe-4er9RFtOKtQ" x="59" y="-17"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yhIqwiysEe-4er9RFtOKtQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yhIqwyysEe-4er9RFtOKtQ" x="-13"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yhIqxCysEe-4er9RFtOKtQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yhIqxSysEe-4er9RFtOKtQ" x="28" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_yhIDsyysEe-4er9RFtOKtQ" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_yhIDtCysEe-4er9RFtOKtQ" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_yhIDtSysEe-4er9RFtOKtQ" points="[-1, -27, -257, 155]$[-1, -182, -257, 0]$[206, -182, -50, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yhJR0CysEe-4er9RFtOKtQ" id="(0.5,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yhJR0SysEe-4er9RFtOKtQ" id="(0.33783783783783783,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_yhJR0iysEe-4er9RFtOKtQ" type="4001" element="_yf57sCysEe-4er9RFtOKtQ" source="_ygsl5CysEe-4er9RFtOKtQ" target="_ygr-0CysEe-4er9RFtOKtQ"> + <children xmi:type="notation:Node" xmi:id="_yhJR1iysEe-4er9RFtOKtQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yhJR1yysEe-4er9RFtOKtQ" x="-51" y="-17"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yhJR2CysEe-4er9RFtOKtQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yhJR2SysEe-4er9RFtOKtQ" x="-8" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yhJR2iysEe-4er9RFtOKtQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yhJR2yysEe-4er9RFtOKtQ" x="7"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_yhJR0yysEe-4er9RFtOKtQ" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_yhJR1CysEe-4er9RFtOKtQ" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_yhJR1SysEe-4er9RFtOKtQ" points="[98, 0, -219, -175]$[318, 0, 1, -175]$[318, 148, 1, -27]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yhJ44CysEe-4er9RFtOKtQ" id="(0.33783783783783783,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yhJ44SysEe-4er9RFtOKtQ" id="(0.5,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_yhJ44iysEe-4er9RFtOKtQ" type="4001" element="_yf6iwiysEe-4er9RFtOKtQ" source="_ygr-0CysEe-4er9RFtOKtQ" target="_ygtM9CysEe-4er9RFtOKtQ"> + <children xmi:type="notation:Node" xmi:id="_yhKf8CysEe-4er9RFtOKtQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yhKf8SysEe-4er9RFtOKtQ" x="55" y="-17"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yhKf8iysEe-4er9RFtOKtQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yhKf8yysEe-4er9RFtOKtQ" x="-56" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yhKf9CysEe-4er9RFtOKtQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yhKf9SysEe-4er9RFtOKtQ" x="-97" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_yhJ44yysEe-4er9RFtOKtQ" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_yhJ45CysEe-4er9RFtOKtQ" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_yhJ45SysEe-4er9RFtOKtQ" points="[-2, 28, 315, -175]$[-2, 203, 315, 0]$[-212, 203, 105, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yhLHACysEe-4er9RFtOKtQ" id="(0.5,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yhLHASysEe-4er9RFtOKtQ" id="(0.2939189189189189,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_yhLHAiysEe-4er9RFtOKtQ" type="4001" element="_yf7J1CysEe-4er9RFtOKtQ" source="_ygtM9CysEe-4er9RFtOKtQ" target="_ygqJoCysEe-4er9RFtOKtQ"> + <children xmi:type="notation:Node" xmi:id="_yhLHBiysEe-4er9RFtOKtQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yhLHByysEe-4er9RFtOKtQ" x="-86" y="-17"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yhLHCCysEe-4er9RFtOKtQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yhLHCSysEe-4er9RFtOKtQ" x="-39" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yhLHCiysEe-4er9RFtOKtQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yhLHCyysEe-4er9RFtOKtQ" x="-21"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_yhLHAyysEe-4er9RFtOKtQ" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_yhLHBCysEe-4er9RFtOKtQ" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_yhLHBSysEe-4er9RFtOKtQ" points="[-43, 0, 213, 196]$[-255, 0, 1, 196]$[-255, -168, 1, 28]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yhLuECysEe-4er9RFtOKtQ" id="(0.2939189189189189,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yhLuESysEe-4er9RFtOKtQ" id="(0.5,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_yhLuEiysEe-4er9RFtOKtQ" type="4001" element="_yf8X8CysEe-4er9RFtOKtQ" source="_ygtM9CysEe-4er9RFtOKtQ" target="_ygsl5CysEe-4er9RFtOKtQ"> + <children xmi:type="notation:Node" xmi:id="_yhLuFiysEe-4er9RFtOKtQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yhLuFyysEe-4er9RFtOKtQ" x="-22" y="-108"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yhMVICysEe-4er9RFtOKtQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yhMVISysEe-4er9RFtOKtQ" x="-6"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yhMVIiysEe-4er9RFtOKtQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yhMVIyysEe-4er9RFtOKtQ" x="-10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_yhLuEyysEe-4er9RFtOKtQ" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_yhLuFCysEe-4er9RFtOKtQ" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_yhLuFSysEe-4er9RFtOKtQ" points="[6, -27, 6, 351]$[6, -350, 6, 28]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yhM8MCysEe-4er9RFtOKtQ" id="(0.2939189189189189,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yhM8MSysEe-4er9RFtOKtQ" id="(0.33783783783783783,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_yhM8MiysEe-4er9RFtOKtQ" type="4001" element="_yf8_ACysEe-4er9RFtOKtQ" source="_ygsl5CysEe-4er9RFtOKtQ" target="_ygtM9CysEe-4er9RFtOKtQ"> + <children xmi:type="notation:Node" xmi:id="_yhM8NiysEe-4er9RFtOKtQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yhM8NyysEe-4er9RFtOKtQ" x="23" y="-116"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yhM8OCysEe-4er9RFtOKtQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yhM8OSysEe-4er9RFtOKtQ" x="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yhM8OiysEe-4er9RFtOKtQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yhM8OyysEe-4er9RFtOKtQ" x="-176" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_yhM8MyysEe-4er9RFtOKtQ" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_yhM8NCysEe-4er9RFtOKtQ" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_yhM8NSysEe-4er9RFtOKtQ" points="[23, 28, 23, -350]$[23, 351, 23, -27]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yhOKUCysEe-4er9RFtOKtQ" id="(0.33783783783783783,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yhOKUSysEe-4er9RFtOKtQ" id="(0.2939189189189189,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_yhOKUiysEe-4er9RFtOKtQ" type="4001" element="_yf9mECysEe-4er9RFtOKtQ" source="_ygqJoCysEe-4er9RFtOKtQ" target="_ygntYCysEe-4er9RFtOKtQ"> + <children xmi:type="notation:Node" xmi:id="_yhOKViysEe-4er9RFtOKtQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yhOKVyysEe-4er9RFtOKtQ" x="-27" y="18"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yhOxYCysEe-4er9RFtOKtQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yhOxYSysEe-4er9RFtOKtQ" x="13" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yhOxYiysEe-4er9RFtOKtQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yhOxYyysEe-4er9RFtOKtQ" x="7"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_yhOKUyysEe-4er9RFtOKtQ" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_yhOKVCysEe-4er9RFtOKtQ" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_yhOKVSysEe-4er9RFtOKtQ" points="[-39, 1, 103, 62]$[-143, 1, -1, 62]$[-143, -46, -1, 15]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yhOxZCysEe-4er9RFtOKtQ" id="(0.5,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yhPYcCysEe-4er9RFtOKtQ" id="(0.5,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_yhPYcSysEe-4er9RFtOKtQ" type="4001" element="_yf-NIiysEe-4er9RFtOKtQ" source="_ygqJoCysEe-4er9RFtOKtQ" target="_ygqJoCysEe-4er9RFtOKtQ"> + <children xmi:type="notation:Node" xmi:id="_yhPYdSysEe-4er9RFtOKtQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yhPYdiysEe-4er9RFtOKtQ" x="-2" y="21"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yhPYdyysEe-4er9RFtOKtQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yhPYeCysEe-4er9RFtOKtQ" x="1" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yhPYeSysEe-4er9RFtOKtQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yhPYeiysEe-4er9RFtOKtQ" x="-4" y="-4"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_yhPYciysEe-4er9RFtOKtQ" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_yhPYcyysEe-4er9RFtOKtQ" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_yhPYdCysEe-4er9RFtOKtQ" points="[39, -13, 39, -13]$[73, -13, 73, -13]$[73, -41, 73, -41]$[20, -41, 20, -41]$[20, -27, 20, -27]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yhP_gCysEe-4er9RFtOKtQ" id="(0.5,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yhP_gSysEe-4er9RFtOKtQ" id="(0.5,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_yhP_giysEe-4er9RFtOKtQ" type="4001" element="_yf-0MiysEe-4er9RFtOKtQ" source="_ygtM9CysEe-4er9RFtOKtQ" target="_ygtM9CysEe-4er9RFtOKtQ"> + <children xmi:type="notation:Node" xmi:id="_yhP_hiysEe-4er9RFtOKtQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yhP_hyysEe-4er9RFtOKtQ" x="-4" y="-17"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yhQmkCysEe-4er9RFtOKtQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yhQmkSysEe-4er9RFtOKtQ" x="-6"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yhQmkiysEe-4er9RFtOKtQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yhQmkyysEe-4er9RFtOKtQ" x="-2" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_yhP_gyysEe-4er9RFtOKtQ" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_yhP_hCysEe-4er9RFtOKtQ" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_yhP_hSysEe-4er9RFtOKtQ" points="[62, 28, 62, 28]$[62, 57, 62, 57]$[-8, 57, -8, 57]$[-8, 28, -8, 28]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yhQmlCysEe-4er9RFtOKtQ" id="(0.2939189189189189,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yhQmlSysEe-4er9RFtOKtQ" id="(0.2939189189189189,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_yhRNoCysEe-4er9RFtOKtQ" type="4001" element="_yf_bQiysEe-4er9RFtOKtQ" source="_ygr-0CysEe-4er9RFtOKtQ" target="_ygr-0CysEe-4er9RFtOKtQ"> + <children xmi:type="notation:Node" xmi:id="_yhRNpCysEe-4er9RFtOKtQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yhRNpSysEe-4er9RFtOKtQ" x="-1" y="-49"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yhRNpiysEe-4er9RFtOKtQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yhRNpyysEe-4er9RFtOKtQ" x="25" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yhR0sCysEe-4er9RFtOKtQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yhR0sSysEe-4er9RFtOKtQ" x="2" y="-10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_yhRNoSysEe-4er9RFtOKtQ" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_yhRNoiysEe-4er9RFtOKtQ" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_yhRNoyysEe-4er9RFtOKtQ" points="[32, -13, 32, -13]$[74, -13, 74, -13]$[74, 15, 74, 15]$[32, 15, 32, 15]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yhSbwCysEe-4er9RFtOKtQ" id="(0.5,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yhSbwSysEe-4er9RFtOKtQ" id="(0.5,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_yhSbwiysEe-4er9RFtOKtQ" type="4001" element="_ygBQcCysEe-4er9RFtOKtQ" source="_ygsl5CysEe-4er9RFtOKtQ" target="_ygsl5CysEe-4er9RFtOKtQ"> + <children xmi:type="notation:Node" xmi:id="_yhSbxiysEe-4er9RFtOKtQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yhSbxyysEe-4er9RFtOKtQ" x="-7" y="21"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yhSbyCysEe-4er9RFtOKtQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yhSbySysEe-4er9RFtOKtQ" x="2"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yhTC0CysEe-4er9RFtOKtQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yhTC0SysEe-4er9RFtOKtQ" x="-3" y="-51"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_yhSbwyysEe-4er9RFtOKtQ" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_yhSbxCysEe-4er9RFtOKtQ" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_yhSbxSysEe-4er9RFtOKtQ" points="[48, -27, 48, -27]$[48, -55, 48, -55]$[-15, -55, -15, -55]$[-15, -27, -15, -27]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yhTC0iysEe-4er9RFtOKtQ" id="(0.33783783783783783,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yhTC0yysEe-4er9RFtOKtQ" id="(0.33783783783783783,0.5)"/> + </edges> + </data> + </ownedAnnotationEntries> + <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_ygDFoCysEe-4er9RFtOKtQ" source="DANNOTATION_CUSTOMIZATION_KEY"> + <data xmi:type="diagram:ComputedStyleDescriptionRegistry" uid="_ygDFoSysEe-4er9RFtOKtQ"/> + </ownedAnnotationEntries> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_yfV7ACysEe-4er9RFtOKtQ" name="initial" outgoingEdges="_yfym8CysEe-4er9RFtOKtQ" width="3" height="3"> + <target xmi:type="statemachine:InitialState" href="garagedoor.statemachine#initial"/> + <semanticElements xmi:type="statemachine:InitialState" href="garagedoor.statemachine#initial"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Dot" uid="_yfaMcCysEe-4er9RFtOKtQ" labelSize="12" showIcon="false" backgroundColor="0,0,0"> + <description xmi:type="style:DotDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@nodeMappings[name='Initial%20State']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@nodeMappings[name='Initial%20State']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_yfed4CysEe-4er9RFtOKtQ" name="final" incomingEdges="_yf9mECysEe-4er9RFtOKtQ" width="3" height="3"> + <target xmi:type="statemachine:FinalState" href="garagedoor.statemachine#final"/> + <semanticElements xmi:type="statemachine:FinalState" href="garagedoor.statemachine#final"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Dot" uid="_yffE8CysEe-4er9RFtOKtQ" labelSize="12" showIcon="false" backgroundColor="209,209,209"> + <description xmi:type="style:DotDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@nodeMappings[name='Final%20State']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@nodeMappings[name='Final%20State']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_yffsACysEe-4er9RFtOKtQ" name="Closed" outgoingEdges="_yf5UoCysEe-4er9RFtOKtQ _yf9mECysEe-4er9RFtOKtQ _yf-NIiysEe-4er9RFtOKtQ" incomingEdges="_yfym8CysEe-4er9RFtOKtQ _yf7J1CysEe-4er9RFtOKtQ _yf-NIiysEe-4er9RFtOKtQ"> + <target xmi:type="statemachine:NormalState" href="garagedoor.statemachine#Closed"/> + <semanticElements xmi:type="statemachine:NormalState" href="garagedoor.statemachine#Closed"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_yffsASysEe-4er9RFtOKtQ" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" backgroundColor="255,245,181" foregroundColor="255,245,181"> + <labelFormat>bold</labelFormat> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_yfg6ICysEe-4er9RFtOKtQ" name="Open" outgoingEdges="_yf6iwiysEe-4er9RFtOKtQ _yf_bQiysEe-4er9RFtOKtQ" incomingEdges="_yf57sCysEe-4er9RFtOKtQ _yf_bQiysEe-4er9RFtOKtQ"> + <target xmi:type="statemachine:NormalState" href="garagedoor.statemachine#Open"/> + <semanticElements xmi:type="statemachine:NormalState" href="garagedoor.statemachine#Open"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_yfg6ISysEe-4er9RFtOKtQ" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" backgroundColor="255,245,181" foregroundColor="255,245,181"> + <labelFormat>bold</labelFormat> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_yfhhMSysEe-4er9RFtOKtQ" name="Opening" outgoingEdges="_yf57sCysEe-4er9RFtOKtQ _yf8_ACysEe-4er9RFtOKtQ _ygBQcCysEe-4er9RFtOKtQ" incomingEdges="_yf5UoCysEe-4er9RFtOKtQ _yf8X8CysEe-4er9RFtOKtQ _ygBQcCysEe-4er9RFtOKtQ"> + <target xmi:type="statemachine:NormalState" href="garagedoor.statemachine#Opening"/> + <semanticElements xmi:type="statemachine:NormalState" href="garagedoor.statemachine#Opening"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_yfiIQCysEe-4er9RFtOKtQ" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" backgroundColor="255,245,181" foregroundColor="255,245,181"> + <labelFormat>bold</labelFormat> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_yfivUSysEe-4er9RFtOKtQ" name="Closing" outgoingEdges="_yf7J1CysEe-4er9RFtOKtQ _yf8X8CysEe-4er9RFtOKtQ _yf-0MiysEe-4er9RFtOKtQ" incomingEdges="_yf6iwiysEe-4er9RFtOKtQ _yf8_ACysEe-4er9RFtOKtQ _yf-0MiysEe-4er9RFtOKtQ"> + <target xmi:type="statemachine:NormalState" href="garagedoor.statemachine#Closing"/> + <semanticElements xmi:type="statemachine:NormalState" href="garagedoor.statemachine#Closing"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_yfjWYCysEe-4er9RFtOKtQ" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" backgroundColor="255,245,181" foregroundColor="255,245,181"> + <labelFormat>bold</labelFormat> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_yfkkgCysEe-4er9RFtOKtQ" name="State Machine: Garage Door" height="4"> + <target xmi:type="statemachine:StateMachine" href="garagedoor.statemachine#Garage Door"/> + <semanticElements xmi:type="statemachine:StateMachine" href="garagedoor.statemachine#Garage Door"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_yfsgUCysEe-4er9RFtOKtQ" labelSize="10" showIcon="false" borderColor="209,209,209" backgroundStyle="Liquid" backgroundColor="209,209,209"> + <labelFormat>bold</labelFormat> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='State%20Machine%20Label']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='State%20Machine%20Label']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_yfym8CysEe-4er9RFtOKtQ" sourceNode="_yfV7ACysEe-4er9RFtOKtQ" targetNode="_yffsACysEe-4er9RFtOKtQ"> + <target xmi:type="statemachine:Transition" href="garagedoor.statemachine#//@transitions.0"/> + <semanticElements xmi:type="statemachine:Transition" href="garagedoor.statemachine#//@transitions.0"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_yfzOACysEe-4er9RFtOKtQ" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_yfzOASysEe-4er9RFtOKtQ" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_yf5UoCysEe-4er9RFtOKtQ" name="openDoor / motor.upwards" sourceNode="_yffsACysEe-4er9RFtOKtQ" targetNode="_yfhhMSysEe-4er9RFtOKtQ"> + <target xmi:type="statemachine:Transition" href="garagedoor.statemachine#//@transitions.1"/> + <semanticElements xmi:type="statemachine:Transition" href="garagedoor.statemachine#//@transitions.1"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_yf5UoSysEe-4er9RFtOKtQ" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_yf5UoiysEe-4er9RFtOKtQ" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_yf57sCysEe-4er9RFtOKtQ" name=" [stopper] / motor.stop" sourceNode="_yfhhMSysEe-4er9RFtOKtQ" targetNode="_yfg6ICysEe-4er9RFtOKtQ"> + <target xmi:type="statemachine:Transition" href="garagedoor.statemachine#//@transitions.2"/> + <semanticElements xmi:type="statemachine:Transition" href="garagedoor.statemachine#//@transitions.2"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_yf57sSysEe-4er9RFtOKtQ" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_yf57siysEe-4er9RFtOKtQ" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_yf6iwiysEe-4er9RFtOKtQ" name="closeDoor / motor.downwards" sourceNode="_yfg6ICysEe-4er9RFtOKtQ" targetNode="_yfivUSysEe-4er9RFtOKtQ"> + <target xmi:type="statemachine:Transition" href="garagedoor.statemachine#//@transitions.3"/> + <semanticElements xmi:type="statemachine:Transition" href="garagedoor.statemachine#//@transitions.3"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_yf7J0CysEe-4er9RFtOKtQ" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_yf7J0SysEe-4er9RFtOKtQ" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_yf7J1CysEe-4er9RFtOKtQ" name=" [stopper] / motor.stop" sourceNode="_yfivUSysEe-4er9RFtOKtQ" targetNode="_yffsACysEe-4er9RFtOKtQ"> + <target xmi:type="statemachine:Transition" href="garagedoor.statemachine#//@transitions.4"/> + <semanticElements xmi:type="statemachine:Transition" href="garagedoor.statemachine#//@transitions.4"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_yf7w4CysEe-4er9RFtOKtQ" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_yf7w4SysEe-4er9RFtOKtQ" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_yf8X8CysEe-4er9RFtOKtQ" name="openDoor / motor.upwards" sourceNode="_yfivUSysEe-4er9RFtOKtQ" targetNode="_yfhhMSysEe-4er9RFtOKtQ"> + <target xmi:type="statemachine:Transition" href="garagedoor.statemachine#//@transitions.5"/> + <semanticElements xmi:type="statemachine:Transition" href="garagedoor.statemachine#//@transitions.5"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_yf8X8SysEe-4er9RFtOKtQ" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_yf8X8iysEe-4er9RFtOKtQ" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_yf8_ACysEe-4er9RFtOKtQ" name="closeDoor / motor.downwards" sourceNode="_yfhhMSysEe-4er9RFtOKtQ" targetNode="_yfivUSysEe-4er9RFtOKtQ"> + <target xmi:type="statemachine:Transition" href="garagedoor.statemachine#//@transitions.6"/> + <semanticElements xmi:type="statemachine:Transition" href="garagedoor.statemachine#//@transitions.6"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_yf8_ASysEe-4er9RFtOKtQ" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_yf8_AiysEe-4er9RFtOKtQ" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_yf9mECysEe-4er9RFtOKtQ" name=" [shutdown]" sourceNode="_yffsACysEe-4er9RFtOKtQ" targetNode="_yfed4CysEe-4er9RFtOKtQ"> + <target xmi:type="statemachine:Transition" href="garagedoor.statemachine#//@transitions.7"/> + <semanticElements xmi:type="statemachine:Transition" href="garagedoor.statemachine#//@transitions.7"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_yf9mESysEe-4er9RFtOKtQ" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_yf9mEiysEe-4er9RFtOKtQ" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_yf-NIiysEe-4er9RFtOKtQ" name="closeDoor" sourceNode="_yffsACysEe-4er9RFtOKtQ" targetNode="_yffsACysEe-4er9RFtOKtQ"> + <target xmi:type="statemachine:Transition" href="garagedoor.statemachine#//@transitions.8"/> + <semanticElements xmi:type="statemachine:Transition" href="garagedoor.statemachine#//@transitions.8"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_yf-NIyysEe-4er9RFtOKtQ" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_yf-NJCysEe-4er9RFtOKtQ" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_yf-0MiysEe-4er9RFtOKtQ" name="closeDoor" sourceNode="_yfivUSysEe-4er9RFtOKtQ" targetNode="_yfivUSysEe-4er9RFtOKtQ"> + <target xmi:type="statemachine:Transition" href="garagedoor.statemachine#//@transitions.9"/> + <semanticElements xmi:type="statemachine:Transition" href="garagedoor.statemachine#//@transitions.9"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_yf-0MyysEe-4er9RFtOKtQ" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_yf-0NCysEe-4er9RFtOKtQ" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_yf_bQiysEe-4er9RFtOKtQ" name="openDoor" sourceNode="_yfg6ICysEe-4er9RFtOKtQ" targetNode="_yfg6ICysEe-4er9RFtOKtQ"> + <target xmi:type="statemachine:Transition" href="garagedoor.statemachine#//@transitions.10"/> + <semanticElements xmi:type="statemachine:Transition" href="garagedoor.statemachine#//@transitions.10"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_ygACUCysEe-4er9RFtOKtQ" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_ygACUSysEe-4er9RFtOKtQ" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_ygBQcCysEe-4er9RFtOKtQ" name="openDoor" sourceNode="_yfhhMSysEe-4er9RFtOKtQ" targetNode="_yfhhMSysEe-4er9RFtOKtQ"> + <target xmi:type="statemachine:Transition" href="garagedoor.statemachine#//@transitions.11"/> + <semanticElements xmi:type="statemachine:Transition" href="garagedoor.statemachine#//@transitions.11"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_ygB3gCysEe-4er9RFtOKtQ" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_ygB3gSysEe-4er9RFtOKtQ" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']"/> + </ownedDiagramElements> + <description xmi:type="description_1:DiagramDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']"/> + <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_ydW-ACysEe-4er9RFtOKtQ"/> + <activatedLayers xmi:type="description_1:Layer" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer"/> + <target xmi:type="statemachine:StateMachine" href="garagedoor.statemachine#Garage Door"/> + </diagram:DSemanticDiagram> + <diagram:DSemanticDiagram uid="_lERnkCytEe-4er9RFtOKtQ"> + <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_lEUq4CytEe-4er9RFtOKtQ" source="GMF_DIAGRAMS"> + <data xmi:type="notation:Diagram" xmi:id="_lEUq4SytEe-4er9RFtOKtQ" type="Sirius" element="_lERnkCytEe-4er9RFtOKtQ" measurementUnit="Pixel"> + <children xmi:type="notation:Node" xmi:id="_lEcmsCytEe-4er9RFtOKtQ" type="2001" element="_lEVR8CytEe-4er9RFtOKtQ"> + <children xmi:type="notation:Node" xmi:id="_lEdNwCytEe-4er9RFtOKtQ" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_lEdNwSytEe-4er9RFtOKtQ" x="-14" y="-33"/> + </children> + <children xmi:type="notation:Node" xmi:id="_lEgRECytEe-4er9RFtOKtQ" type="3002" element="_lEVR8SytEe-4er9RFtOKtQ"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_lEgRESytEe-4er9RFtOKtQ" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lEgREiytEe-4er9RFtOKtQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_lEcmsSytEe-4er9RFtOKtQ" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lEcmsiytEe-4er9RFtOKtQ" x="581" y="150" width="30" height="30"/> + </children> + <children xmi:type="notation:Node" xmi:id="_lEeb4CytEe-4er9RFtOKtQ" type="2003" element="_lEV5ACytEe-4er9RFtOKtQ"> + <children xmi:type="notation:Node" xmi:id="_lEeb4yytEe-4er9RFtOKtQ" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_lEfC8CytEe-4er9RFtOKtQ" type="7004"> + <children xmi:type="notation:Node" xmi:id="_lEg4ICytEe-4er9RFtOKtQ" type="3010" element="_lEWgESytEe-4er9RFtOKtQ"> + <styles xmi:type="notation:FontStyle" xmi:id="_lEg4ISytEe-4er9RFtOKtQ" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_lEg4IiytEe-4er9RFtOKtQ"/> + </children> + <styles xmi:type="notation:SortingStyle" xmi:id="_lEfC8SytEe-4er9RFtOKtQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_lEfC8iytEe-4er9RFtOKtQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_lEeb4SytEe-4er9RFtOKtQ" fontName="Segoe UI" fontHeight="12" bold="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lEeb4iytEe-4er9RFtOKtQ" x="287" y="364"/> + </children> + <children xmi:type="notation:Node" xmi:id="_lEfC8yytEe-4er9RFtOKtQ" type="2003" element="_lEV5AyytEe-4er9RFtOKtQ"> + <children xmi:type="notation:Node" xmi:id="_lEfC9iytEe-4er9RFtOKtQ" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_lEfC9yytEe-4er9RFtOKtQ" type="7004"> + <children xmi:type="notation:Node" xmi:id="_lEhfMCytEe-4er9RFtOKtQ" type="3010" element="_lEXuMCytEe-4er9RFtOKtQ"> + <styles xmi:type="notation:FontStyle" xmi:id="_lEhfMSytEe-4er9RFtOKtQ" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_lEhfMiytEe-4er9RFtOKtQ"/> + </children> + <styles xmi:type="notation:SortingStyle" xmi:id="_lEfC-CytEe-4er9RFtOKtQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_lEfC-SytEe-4er9RFtOKtQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_lEfC9CytEe-4er9RFtOKtQ" fontName="Segoe UI" fontHeight="12" bold="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lEfC9SytEe-4er9RFtOKtQ" x="302" y="126" width="221"/> + </children> + <children xmi:type="notation:Node" xmi:id="_lEfqACytEe-4er9RFtOKtQ" type="2003" element="_lEYVQCytEe-4er9RFtOKtQ"> + <children xmi:type="notation:Node" xmi:id="_lEfqAyytEe-4er9RFtOKtQ" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_lEfqBCytEe-4er9RFtOKtQ" type="7004"> + <styles xmi:type="notation:SortingStyle" xmi:id="_lEfqBSytEe-4er9RFtOKtQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_lEfqBiytEe-4er9RFtOKtQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_lEfqASytEe-4er9RFtOKtQ" fontName="Segoe UI" fontHeight="10" bold="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lEfqAiytEe-4er9RFtOKtQ" x="36" y="84" height="40"/> + </children> + <styles xmi:type="notation:DiagramStyle" xmi:id="_lEUq4iytEe-4er9RFtOKtQ"/> + <edges xmi:type="notation:Edge" xmi:id="_lEhfMyytEe-4er9RFtOKtQ" type="4001" element="_lEY8UCytEe-4er9RFtOKtQ" source="_lEcmsCytEe-4er9RFtOKtQ" target="_lEfC8yytEe-4er9RFtOKtQ"> + <children xmi:type="notation:Node" xmi:id="_lEiGQCytEe-4er9RFtOKtQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lEiGQSytEe-4er9RFtOKtQ" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_lEiGQiytEe-4er9RFtOKtQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lEiGQyytEe-4er9RFtOKtQ" x="-4" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_lEiGRCytEe-4er9RFtOKtQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lEiGRSytEe-4er9RFtOKtQ" x="-13" y="-10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_lEhfNCytEe-4er9RFtOKtQ" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_lEhfNSytEe-4er9RFtOKtQ" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_lEhfNiytEe-4er9RFtOKtQ" points="[-15, 15, 176, -38]$[-75, 15, 116, -38]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_lEitUCytEe-4er9RFtOKtQ" id="(0.5,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_lEitUSytEe-4er9RFtOKtQ" id="(0.4703196347031963,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_lEitUiytEe-4er9RFtOKtQ" type="4001" element="_lEZjYCytEe-4er9RFtOKtQ" source="_lEfC8yytEe-4er9RFtOKtQ" target="_lEeb4CytEe-4er9RFtOKtQ"> + <children xmi:type="notation:Node" xmi:id="_lEjUYCytEe-4er9RFtOKtQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lEjUYSytEe-4er9RFtOKtQ" x="7" y="-39"/> + </children> + <children xmi:type="notation:Node" xmi:id="_lEjUYiytEe-4er9RFtOKtQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lEjUYyytEe-4er9RFtOKtQ" x="-3" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_lEjUZCytEe-4er9RFtOKtQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lEjUZSytEe-4er9RFtOKtQ" x="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_lEitUyytEe-4er9RFtOKtQ" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_lEitVCytEe-4er9RFtOKtQ" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_lEitVSytEe-4er9RFtOKtQ" points="[30, 39, 30, -199]$[30, 200, 30, -38]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_lEjUZiytEe-4er9RFtOKtQ" id="(0.4657534246575342,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_lEj7cCytEe-4er9RFtOKtQ" id="(0.5,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_lEj7cSytEe-4er9RFtOKtQ" type="4001" element="_lEaKcCytEe-4er9RFtOKtQ" source="_lEeb4CytEe-4er9RFtOKtQ" target="_lEfC8yytEe-4er9RFtOKtQ"> + <children xmi:type="notation:Node" xmi:id="_lEj7dSytEe-4er9RFtOKtQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lEj7diytEe-4er9RFtOKtQ" x="1" y="-24"/> + </children> + <children xmi:type="notation:Node" xmi:id="_lEj7dyytEe-4er9RFtOKtQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lEj7eCytEe-4er9RFtOKtQ" x="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_lEj7eSytEe-4er9RFtOKtQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lEj7eiytEe-4er9RFtOKtQ" x="-2" y="-4"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_lEj7ciytEe-4er9RFtOKtQ" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_lEj7cyytEe-4er9RFtOKtQ" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_lEj7dCytEe-4er9RFtOKtQ" points="[-40, -38, -40, 200]$[-40, -199, -40, 39]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_lEkigCytEe-4er9RFtOKtQ" id="(0.5,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_lEkigSytEe-4er9RFtOKtQ" id="(0.4657534246575342,0.5)"/> + </edges> + </data> + </ownedAnnotationEntries> + <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_lEbYkCytEe-4er9RFtOKtQ" source="DANNOTATION_CUSTOMIZATION_KEY"> + <data xmi:type="diagram:ComputedStyleDescriptionRegistry" uid="_lEbYkSytEe-4er9RFtOKtQ"/> + </ownedAnnotationEntries> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_lEVR8CytEe-4er9RFtOKtQ" name="initial" outgoingEdges="_lEY8UCytEe-4er9RFtOKtQ" width="3" height="3"> + <target xmi:type="statemachine:InitialState" href="switch.statemachine#initial"/> + <semanticElements xmi:type="statemachine:InitialState" href="switch.statemachine#initial"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Dot" uid="_lEVR8SytEe-4er9RFtOKtQ" labelSize="12" showIcon="false" backgroundColor="0,0,0"> + <description xmi:type="style:DotDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@nodeMappings[name='Initial%20State']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@nodeMappings[name='Initial%20State']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_lEV5ACytEe-4er9RFtOKtQ" name="on" outgoingEdges="_lEaKcCytEe-4er9RFtOKtQ" incomingEdges="_lEZjYCytEe-4er9RFtOKtQ"> + <target xmi:type="statemachine:NormalState" href="switch.statemachine#on"/> + <semanticElements xmi:type="statemachine:NormalState" href="switch.statemachine#on"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_lEV5ASytEe-4er9RFtOKtQ" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" backgroundColor="255,245,181" foregroundColor="255,245,181"> + <labelFormat>bold</labelFormat> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']"/> + <ownedElements xmi:type="diagram:DNodeListElement" uid="_lEWgESytEe-4er9RFtOKtQ" name="do/ do_something"> + <target xmi:type="statemachine:Action" href="switch.statemachine#//@states.0/@do_"/> + <semanticElements xmi:type="statemachine:Action" href="switch.statemachine#//@states.0/@do_"/> + <ownedStyle xmi:type="diagram:Square" uid="_lEXHICytEe-4er9RFtOKtQ" labelSize="12" showIcon="false" labelAlignment="LEFT" labelPosition="node" color="255,245,181"> + <description xmi:type="style:SquareDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']/@subNodeMappings[name='Do%20Activity']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']/@subNodeMappings[name='Do%20Activity']"/> + </ownedElements> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_lEV5AyytEe-4er9RFtOKtQ" name="off" outgoingEdges="_lEZjYCytEe-4er9RFtOKtQ" incomingEdges="_lEY8UCytEe-4er9RFtOKtQ _lEaKcCytEe-4er9RFtOKtQ"> + <target xmi:type="statemachine:NormalState" href="switch.statemachine#off"/> + <semanticElements xmi:type="statemachine:NormalState" href="switch.statemachine#off"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_lEV5BCytEe-4er9RFtOKtQ" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" backgroundColor="255,245,181" foregroundColor="255,245,181"> + <labelFormat>bold</labelFormat> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']"/> + <ownedElements xmi:type="diagram:DNodeListElement" uid="_lEXuMCytEe-4er9RFtOKtQ" name="do/ do_nothing"> + <target xmi:type="statemachine:Action" href="switch.statemachine#//@states.1/@do_"/> + <semanticElements xmi:type="statemachine:Action" href="switch.statemachine#//@states.1/@do_"/> + <ownedStyle xmi:type="diagram:Square" uid="_lEXuMSytEe-4er9RFtOKtQ" labelSize="12" showIcon="false" labelAlignment="LEFT" labelPosition="node" color="255,245,181"> + <description xmi:type="style:SquareDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']/@subNodeMappings[name='Do%20Activity']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']/@subNodeMappings[name='Do%20Activity']"/> + </ownedElements> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_lEYVQCytEe-4er9RFtOKtQ" name="State Machine: Switch" height="4"> + <target xmi:type="statemachine:StateMachine" href="switch.statemachine#Switch"/> + <semanticElements xmi:type="statemachine:StateMachine" href="switch.statemachine#Switch"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_lEYVQSytEe-4er9RFtOKtQ" labelSize="10" showIcon="false" borderColor="209,209,209" backgroundStyle="Liquid" backgroundColor="209,209,209"> + <labelFormat>bold</labelFormat> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='State%20Machine%20Label']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='State%20Machine%20Label']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_lEY8UCytEe-4er9RFtOKtQ" sourceNode="_lEVR8CytEe-4er9RFtOKtQ" targetNode="_lEV5AyytEe-4er9RFtOKtQ"> + <target xmi:type="statemachine:Transition" href="switch.statemachine#//@transitions.0"/> + <semanticElements xmi:type="statemachine:Transition" href="switch.statemachine#//@transitions.0"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_lEY8USytEe-4er9RFtOKtQ" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_lEY8UiytEe-4er9RFtOKtQ" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_lEZjYCytEe-4er9RFtOKtQ" name="flip" sourceNode="_lEV5AyytEe-4er9RFtOKtQ" targetNode="_lEV5ACytEe-4er9RFtOKtQ"> + <target xmi:type="statemachine:Transition" href="switch.statemachine#//@transitions.1"/> + <semanticElements xmi:type="statemachine:Transition" href="switch.statemachine#//@transitions.1"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_lEZjYSytEe-4er9RFtOKtQ" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_lEZjYiytEe-4er9RFtOKtQ" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_lEaKcCytEe-4er9RFtOKtQ" name="flip" sourceNode="_lEV5ACytEe-4er9RFtOKtQ" targetNode="_lEV5AyytEe-4er9RFtOKtQ"> + <target xmi:type="statemachine:Transition" href="switch.statemachine#//@transitions.2"/> + <semanticElements xmi:type="statemachine:Transition" href="switch.statemachine#//@transitions.2"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_lEaKcSytEe-4er9RFtOKtQ" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_lEaKciytEe-4er9RFtOKtQ" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']"/> + </ownedDiagramElements> + <description xmi:type="description_1:DiagramDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']"/> + <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_lESOoCytEe-4er9RFtOKtQ"/> + <activatedLayers xmi:type="description_1:Layer" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer"/> + <target xmi:type="statemachine:StateMachine" href="switch.statemachine#Switch"/> + </diagram:DSemanticDiagram> +</xmi:XMI> diff --git a/domain_specific_language/graphical/examples-graphical/switch.statemachine b/domain_specific_language/graphical/examples-graphical/switch.statemachine new file mode 100644 index 0000000000000000000000000000000000000000..adbc574168f4eaff22326088d182925254a1c84e --- /dev/null +++ b/domain_specific_language/graphical/examples-graphical/switch.statemachine @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<statemachine:StateMachine xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:statemachine="http://www.swt.org/most/statemachine" name="Switch"> + <states name="on"> + <do_ content="do_something"/> + </states> + <states name="off"> + <do_ content="do_nothing"/> + </states> + <initialstate name="initial"/> + <transitions from="initial" to="off"/> + <transitions from="off" to="on"> + <trigger content="flip"/> + </transitions> + <transitions from="on" to="off"> + <trigger content="flip"/> + </transitions> +</statemachine:StateMachine> diff --git a/domain_specific_language/graphical/swt.most.petrinet.sirius/.classpath b/domain_specific_language/graphical/swt.most.petrinet.sirius/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..39810b7d6c9a484a6a57381a7dabe4abf230ae84 --- /dev/null +++ b/domain_specific_language/graphical/swt.most.petrinet.sirius/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/domain_specific_language/graphical/swt.most.petrinet.sirius/.gitignore b/domain_specific_language/graphical/swt.most.petrinet.sirius/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..ae3c1726048cd06b9a143e0376ed46dd9b9a8d53 --- /dev/null +++ b/domain_specific_language/graphical/swt.most.petrinet.sirius/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/domain_specific_language/graphical/swt.most.petrinet.sirius/.project b/domain_specific_language/graphical/swt.most.petrinet.sirius/.project new file mode 100644 index 0000000000000000000000000000000000000000..f634706b0c66f86ca217aa9e3711d126ef9f04b4 --- /dev/null +++ b/domain_specific_language/graphical/swt.most.petrinet.sirius/.project @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>swt.most.sirius.petrinet</name> + <comment></comment> + <projects></projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments></arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments></arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.SchemaBuilder</name> + <arguments></arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.pde.PluginNature</nature> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/domain_specific_language/graphical/swt.most.petrinet.sirius/.settings/org.eclipse.core.resources.prefs b/domain_specific_language/graphical/swt.most.petrinet.sirius/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000000000000000000000000000000000000..99f26c0203a7844de00dbfc56e6a35d8ed3c022c --- /dev/null +++ b/domain_specific_language/graphical/swt.most.petrinet.sirius/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/<project>=UTF-8 diff --git a/domain_specific_language/graphical/swt.most.petrinet.sirius/META-INF/MANIFEST.MF b/domain_specific_language/graphical/swt.most.petrinet.sirius/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..9cfaac3a12a72a40f48cb2eb60db71c06ef93f9f --- /dev/null +++ b/domain_specific_language/graphical/swt.most.petrinet.sirius/META-INF/MANIFEST.MF @@ -0,0 +1,16 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %pluginName +Bundle-SymbolicName: swt.most.sirius.petrinet;singleton:=true +Bundle-Version: 1.0.0.qualifier +Bundle-Activator: swt.most.sirius.petrinet.Activator +Bundle-Localization: plugin +Require-Bundle: org.eclipse.ui, + org.eclipse.core.runtime, + org.eclipse.core.resources, + org.eclipse.sirius, + org.eclipse.sirius.common.acceleo.aql +Bundle-ActivationPolicy: lazy +Bundle-RequiredExecutionEnvironment: JavaSE-11 +Bundle-Vendor: %providerName +Automatic-Module-Name: swt.most.sirius.petrinet diff --git a/domain_specific_language/graphical/swt.most.petrinet.sirius/build.properties b/domain_specific_language/graphical/swt.most.petrinet.sirius/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..1ab7df2cb6e75b94c2d79c15e09b3aa2b753fa11 --- /dev/null +++ b/domain_specific_language/graphical/swt.most.petrinet.sirius/build.properties @@ -0,0 +1,7 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + .,\ + description/,\ + plugin.properties,\ + plugin.xml diff --git a/domain_specific_language/graphical/swt.most.petrinet.sirius/description/petrinet.odesign b/domain_specific_language/graphical/swt.most.petrinet.sirius/description/petrinet.odesign new file mode 100644 index 0000000000000000000000000000000000000000..cc81b6d935fe811b0a5f62c5b47737c523acd0de --- /dev/null +++ b/domain_specific_language/graphical/swt.most.petrinet.sirius/description/petrinet.odesign @@ -0,0 +1,52 @@ +<?xml version="1.0" encoding="UTF-8"?> +<description:Group xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:description="http://www.eclipse.org/sirius/description/1.1.0" xmlns:description_1="http://www.eclipse.org/sirius/diagram/description/1.1.0" xmlns:style="http://www.eclipse.org/sirius/diagram/description/style/1.1.0" name="petrinet" version="12.0.0.2017041100"> + <ownedViewpoints name="Viewer" modelFileExtension="petrinet"> + <ownedRepresentations xsi:type="description_1:DiagramDescription" name="Petrinet Viewer" domainClass="petrinet::PetriNet" enablePopupBars="true"> + <metamodel href="http://www.example.org/petrinet#/"/> + <defaultLayer name="Default"> + <nodeMappings name="Place" semanticCandidatesExpression="feature:elements" domainClass="petrinet::Place"> + <borderedNodeMappings name="Token" semanticCandidatesExpression="feature:token" domainClass="petrinet::Token"> + <style xsi:type="style:DotDescription" labelSize="12" showIcon="false" labelExpression="''" labelAlignment="LEFT" sizeComputationExpression="2" labelPosition="node"> + <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <forbiddenSides>WEST</forbiddenSides> + <forbiddenSides>SOUTH</forbiddenSides> + <forbiddenSides>NORTH</forbiddenSides> + <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + </style> + </borderedNodeMappings> + <style xsi:type="style:DotDescription" borderSizeComputationExpression="1" labelSize="12" showIcon="false" labelExpression="feature:identifier" strokeSizeComputationExpression="3"> + <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_yellow']"/> + </style> + </nodeMappings> + <nodeMappings name="Transition" semanticCandidatesExpression="feature:elements" domainClass="petrinet::Transition"> + <style xsi:type="style:SquareDescription" borderSizeComputationExpression="1" labelSize="12" showIcon="false" labelExpression="feature:identifier" width="2" height="6"> + <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <color xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_orange']"/> + </style> + </nodeMappings> + <edgeMappings name="IncomingArc" sourceMapping="//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']" targetMapping="//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Transition']" targetFinderExpression="feature:target" sourceFinderExpression="feature:source" domainClass="petrinet::IncomingArc" useDomainElement="true"> + <style sizeComputationExpression="2" routingStyle="manhattan"> + <strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <centerLabelStyleDescription labelSize="12"> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + </centerLabelStyleDescription> + </style> + </edgeMappings> + <edgeMappings name="OutgoingArc" sourceMapping="//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Transition']" targetMapping="//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']" targetFinderExpression="feature:target" sourceFinderExpression="feature:source" domainClass="petrinet::OutgoingArc" useDomainElement="true"> + <style sizeComputationExpression="2" routingStyle="manhattan"> + <strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <centerLabelStyleDescription labelSize="12"> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + </centerLabelStyleDescription> + </style> + </edgeMappings> + </defaultLayer> + <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_gray']"/> + </ownedRepresentations> + <ownedJavaExtensions qualifiedClassName="swt.most.sirius.petrinet.Services"/> + </ownedViewpoints> +</description:Group> diff --git a/domain_specific_language/graphical/swt.most.petrinet.sirius/plugin.properties b/domain_specific_language/graphical/swt.most.petrinet.sirius/plugin.properties new file mode 100644 index 0000000000000000000000000000000000000000..6ed75806c30feea3f5e7c380c5a86bb66ebac483 --- /dev/null +++ b/domain_specific_language/graphical/swt.most.petrinet.sirius/plugin.properties @@ -0,0 +1,3 @@ +pluginName = swt.most.sirius.petrinet +providerName = Eclipse Modeling Project +viewpointName = MyViewpoint diff --git a/domain_specific_language/graphical/swt.most.petrinet.sirius/plugin.xml b/domain_specific_language/graphical/swt.most.petrinet.sirius/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..1ba8bc649eb4079293ea0bfda6dcfc2ff542ea41 --- /dev/null +++ b/domain_specific_language/graphical/swt.most.petrinet.sirius/plugin.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.0"?> +<plugin> + <extension point="org.eclipse.sirius.componentization"> + <component class="swt.most.sirius.petrinet.Activator" + id="swt.most.sirius.petrinet" + name="petrinet"> + </component> + </extension> +</plugin> diff --git a/domain_specific_language/graphical/swt.most.petrinet.sirius/src/swt/most/sirius/petrinet/Activator.java b/domain_specific_language/graphical/swt.most.petrinet.sirius/src/swt/most/sirius/petrinet/Activator.java new file mode 100644 index 0000000000000000000000000000000000000000..a8dc249d0bf3d39897fa2ab9a7257058ffb04249 --- /dev/null +++ b/domain_specific_language/graphical/swt.most.petrinet.sirius/src/swt/most/sirius/petrinet/Activator.java @@ -0,0 +1,66 @@ +package swt.most.sirius.petrinet; + +import java.util.HashSet; +import java.util.Set; + +import org.eclipse.sirius.business.api.componentization.ViewpointRegistry; +import org.eclipse.sirius.viewpoint.description.Viewpoint; +import org.eclipse.ui.plugin.AbstractUIPlugin; +import org.osgi.framework.BundleContext; + +/** + * The activator class controls the plug-in life cycle + */ +public class Activator extends AbstractUIPlugin { + // The plug-in ID + public static final String PLUGIN_ID = "swt.most.sirius.petrinet"; + + // The shared instance + private static Activator plugin; + + private static Set<Viewpoint> viewpoints; + + /** + * The constructor + */ + public Activator() { + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext) + */ + public void start(BundleContext context) throws Exception { + super.start(context); + plugin = this; + viewpoints = new HashSet<Viewpoint>(); + viewpoints.addAll(ViewpointRegistry.getInstance().registerFromPlugin(PLUGIN_ID + "/description/petrinet.odesign")); + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext) + */ + public void stop(BundleContext context) throws Exception { + plugin = null; + if (viewpoints != null) { + for (final Viewpoint viewpoint: viewpoints) { + ViewpointRegistry.getInstance().disposeFromPlugin(viewpoint); + } + viewpoints.clear(); + viewpoints = null; + } + super.stop(context); + } + + /** + * Returns the shared instance + * + * @return the shared instance + */ + public static Activator getDefault() { + return plugin; + } +} diff --git a/domain_specific_language/graphical/swt.most.petrinet.sirius/src/swt/most/sirius/petrinet/Services.java b/domain_specific_language/graphical/swt.most.petrinet.sirius/src/swt/most/sirius/petrinet/Services.java new file mode 100644 index 0000000000000000000000000000000000000000..dd45d8dcb756f566c91dd74dabda227e3ef01eb2 --- /dev/null +++ b/domain_specific_language/graphical/swt.most.petrinet.sirius/src/swt/most/sirius/petrinet/Services.java @@ -0,0 +1,17 @@ +package swt.most.sirius.petrinet; + +import org.eclipse.emf.ecore.EObject; + +/** + * The services class used by VSM. + */ +public class Services { + + /** + * See http://help.eclipse.org/neon/index.jsp?topic=%2Forg.eclipse.sirius.doc%2Fdoc%2Findex.html&cp=24 for documentation on how to write service methods. + */ + public EObject myService(EObject self, String arg) { + // TODO Auto-generated code + return self; + } +} diff --git a/domain_specific_language/graphical/swt.most.statemachine.sirius/.classpath b/domain_specific_language/graphical/swt.most.statemachine.sirius/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..39810b7d6c9a484a6a57381a7dabe4abf230ae84 --- /dev/null +++ b/domain_specific_language/graphical/swt.most.statemachine.sirius/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/domain_specific_language/graphical/swt.most.statemachine.sirius/.gitignore b/domain_specific_language/graphical/swt.most.statemachine.sirius/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..ae3c1726048cd06b9a143e0376ed46dd9b9a8d53 --- /dev/null +++ b/domain_specific_language/graphical/swt.most.statemachine.sirius/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/domain_specific_language/graphical/swt.most.statemachine.sirius/.project b/domain_specific_language/graphical/swt.most.statemachine.sirius/.project new file mode 100644 index 0000000000000000000000000000000000000000..eb60f9eb711238b927daca662c881fb71c6ce044 --- /dev/null +++ b/domain_specific_language/graphical/swt.most.statemachine.sirius/.project @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>swt.most.sirius.statemachine</name> + <comment></comment> + <projects></projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments></arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments></arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.SchemaBuilder</name> + <arguments></arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.pde.PluginNature</nature> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/domain_specific_language/graphical/swt.most.statemachine.sirius/.settings/org.eclipse.core.resources.prefs b/domain_specific_language/graphical/swt.most.statemachine.sirius/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000000000000000000000000000000000000..99f26c0203a7844de00dbfc56e6a35d8ed3c022c --- /dev/null +++ b/domain_specific_language/graphical/swt.most.statemachine.sirius/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/<project>=UTF-8 diff --git a/domain_specific_language/graphical/swt.most.statemachine.sirius/META-INF/MANIFEST.MF b/domain_specific_language/graphical/swt.most.statemachine.sirius/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..f0489cfb3542b95cfde9b8d2c08d57e3e0e0c920 --- /dev/null +++ b/domain_specific_language/graphical/swt.most.statemachine.sirius/META-INF/MANIFEST.MF @@ -0,0 +1,16 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %pluginName +Bundle-SymbolicName: swt.most.sirius.statemachine;singleton:=true +Bundle-Version: 1.0.0.qualifier +Bundle-Activator: swt.most.sirius.statemachine.Activator +Bundle-Localization: plugin +Require-Bundle: org.eclipse.ui, + org.eclipse.core.runtime, + org.eclipse.core.resources, + org.eclipse.sirius, + org.eclipse.sirius.common.acceleo.aql +Bundle-ActivationPolicy: lazy +Bundle-RequiredExecutionEnvironment: JavaSE-11 +Bundle-Vendor: %providerName +Automatic-Module-Name: swt.most.sirius.statemachine diff --git a/domain_specific_language/graphical/swt.most.statemachine.sirius/build.properties b/domain_specific_language/graphical/swt.most.statemachine.sirius/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..1ab7df2cb6e75b94c2d79c15e09b3aa2b753fa11 --- /dev/null +++ b/domain_specific_language/graphical/swt.most.statemachine.sirius/build.properties @@ -0,0 +1,7 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + .,\ + description/,\ + plugin.properties,\ + plugin.xml diff --git a/domain_specific_language/graphical/swt.most.statemachine.sirius/description/statemachine.odesign b/domain_specific_language/graphical/swt.most.statemachine.sirius/description/statemachine.odesign new file mode 100644 index 0000000000000000000000000000000000000000..508c2f84e792316e9408f311e820dd23a371269c --- /dev/null +++ b/domain_specific_language/graphical/swt.most.statemachine.sirius/description/statemachine.odesign @@ -0,0 +1,292 @@ +<?xml version="1.0" encoding="UTF-8"?> +<description:Group xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:description="http://www.eclipse.org/sirius/description/1.1.0" xmlns:description_1="http://www.eclipse.org/sirius/diagram/description/1.1.0" xmlns:style="http://www.eclipse.org/sirius/diagram/description/style/1.1.0" xmlns:tool="http://www.eclipse.org/sirius/diagram/description/tool/1.1.0" xmlns:tool_1="http://www.eclipse.org/sirius/description/tool/1.1.0" name="statemachine" version="12.0.0.2017041100"> + <ownedViewpoints endUserDocumentation="Graphical editors for the models used in the exercise in the MOST course (TU Dresden, Computer Science)." name="gDSL" modelFileExtension="statemachine"> + <ownedRepresentations xsi:type="description_1:DiagramDescription" endUserDocumentation="This is an example graphical editor for state machines. Can be used for state machine models defined in the exercise of the MOST course (TU Dresden, Computer Science)." name="StateMachine" showOnStartup="true" domainClass="statemachine::StateMachine" preconditionExpression="var:self" enablePopupBars="true"> + <metamodel href="http://www.swt.org/most/statemachine#/"/> + <defaultLayer name="Default" label="Default View"> + <nodeMappings name="Initial State" deletionDescription="//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@toolSections.3/@subSections[name='Deletion']/@ownedTools[name='Delete%20Element%20with%20Transitions']" labelDirectEdit="//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@toolSections.3/@subSections[name='Label%20Edit']/@ownedTools[name='Initial%20State%20LE']" semanticCandidatesExpression="feature:initialstate" domainClass="statemachine::InitialState"> + <style xsi:type="style:DotDescription" labelSize="12" showIcon="false"> + <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + </style> + </nodeMappings> + <nodeMappings name="Final State" deletionDescription="//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@toolSections.3/@subSections[name='Deletion']/@ownedTools[name='Delete%20Element%20with%20Transitions']" labelDirectEdit="//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@toolSections.3/@subSections[name='Label%20Edit']/@ownedTools[name='Final%20State%20LE']" semanticCandidatesExpression="feature:finalstates" domainClass="statemachine::FinalState"> + <style xsi:type="style:DotDescription" labelSize="12" showIcon="false"> + <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_gray']"/> + </style> + </nodeMappings> + <edgeMappings name="Transition" labelDirectEdit="//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@toolSections.3/@subSections[name='Label%20Edit']/@ownedTools[name='Transition%20LE']" semanticCandidatesExpression="feature:transitions" sourceMapping="//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@nodeMappings[name='Initial%20State'] //@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']" targetMapping="//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State'] //@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@nodeMappings[name='Final%20State']" targetFinderExpression="feature:to" sourceFinderExpression="feature:from" domainClass="statemachine::Transition" useDomainElement="true"> + <style sizeComputationExpression="2" routingStyle="manhattan"> + <strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <centerLabelStyleDescription showIcon="false" labelExpression="aql: if(self.trigger <> null then self.trigger.content else '' endif + if(self.guard <> null) then ' ['+ self.guard.content+']' else '' endif + if(self.action <> null)' / ' + self.action.content else '' endif "> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + </centerLabelStyleDescription> + </style> + </edgeMappings> + <containerMappings name="Normal State" deletionDescription="//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@toolSections.3/@subSections[name='Deletion']/@ownedTools[name='Delete%20Element%20with%20Transitions']" labelDirectEdit="//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@toolSections.3/@subSections[name='Label%20Edit']/@ownedTools[name='Normal%20State%20LE']" semanticCandidatesExpression="feature:states" domainClass="statemachine::NormalState" childrenPresentation="List"> + <subNodeMappings name="Entry Activity" labelDirectEdit="//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@toolSections.3/@subSections[name='Label%20Edit']/@ownedTools[name='Activity%20LE']" semanticCandidatesExpression="feature:entry_" domainClass="statemachine::Action"> + <style xsi:type="style:SquareDescription" labelSize="12" showIcon="false" labelExpression="aql:'entry/ ' + self.content" labelAlignment="LEFT" labelPosition="node" resizeKind="NSEW"> + <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <color xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_yellow']"/> + </style> + </subNodeMappings> + <subNodeMappings name="Do Activity" labelDirectEdit="//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@toolSections.3/@subSections[name='Label%20Edit']/@ownedTools[name='Activity%20LE']" semanticCandidatesExpression="feature:do_" domainClass="statemachine::Action"> + <style xsi:type="style:SquareDescription" labelSize="12" showIcon="false" labelExpression="aql:'do/ ' + self.content" labelAlignment="LEFT" labelPosition="node" resizeKind="NSEW"> + <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <color xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_yellow']"/> + </style> + </subNodeMappings> + <subNodeMappings name="Exit Activity" labelDirectEdit="//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@toolSections.3/@subSections[name='Label%20Edit']/@ownedTools[name='Activity%20LE']" semanticCandidatesExpression="feature:exit_" domainClass="statemachine::Action"> + <style xsi:type="style:SquareDescription" labelSize="12" showIcon="false" labelExpression="aql:'exit/ ' + self.content" labelAlignment="LEFT" labelPosition="node" resizeKind="NSEW"> + <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <color xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_yellow']"/> + </style> + </subNodeMappings> + <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="12" showIcon="false" roundedCorner="true" backgroundStyle="Liquid"> + <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <labelFormat>bold</labelFormat> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_yellow']"/> + <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_yellow']"/> + </style> + </containerMappings> + <containerMappings name="State Machine Label" deletionDescription="//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@toolSections.3/@subSections[name='Deletion']/@ownedTools[name='No%20Model%20Delete']" labelDirectEdit="//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@toolSections.3/@subSections[name='Label%20Edit']/@ownedTools[name='State%20Machine%20LE']" semanticCandidatesExpression="aql:self" domainClass="statemachine::StateMachine" childrenPresentation="List"> + <style xsi:type="style:FlatContainerStyleDescription" labelSize="10" showIcon="false" labelExpression="aql:'State Machine: ' + self.name" roundedCorner="true" heightComputationExpression="4" backgroundStyle="Liquid"> + <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_gray']"/> + <labelFormat>bold</labelFormat> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_gray']"/> + <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_gray']"/> + </style> + </containerMappings> + <toolSections name="Element Creation" label="Elements"> + <ownedTools xsi:type="tool:NodeCreationDescription" name="Initial State" precondition="aql:self.initialstate == null" nodeMappings="//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@nodeMappings[name='Initial%20State']"> + <variable name="container"/> + <viewVariable name="containerView"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="aql:self"> + <subModelOperations xsi:type="tool_1:CreateInstance" typeName="statemachine::InitialState" referenceName="initialstate"> + <subModelOperations xsi:type="tool_1:SetValue" featureName="name" valueExpression="aql:'I_initial'"/> + </subModelOperations> + </firstModelOperations> + </initialOperation> + </ownedTools> + <ownedTools xsi:type="tool:ContainerCreationDescription" name="State" containerMappings="//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']"> + <variable name="container"/> + <viewVariable name="containerView"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="aql:self"> + <subModelOperations xsi:type="tool_1:CreateInstance" typeName="statemachine::NormalState" referenceName="states"> + <subModelOperations xsi:type="tool_1:SetValue" featureName="name" valueExpression="aql:'State' + container.states->size()"/> + </subModelOperations> + </firstModelOperations> + </initialOperation> + </ownedTools> + <ownedTools xsi:type="tool:NodeCreationDescription" name="Final State" nodeMappings="//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@nodeMappings[name='Final%20State']"> + <variable name="container"/> + <viewVariable name="containerView"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="aql:self"> + <subModelOperations xsi:type="tool_1:CreateInstance" typeName="statemachine::FinalState" referenceName="finalstates"> + <subModelOperations xsi:type="tool_1:SetValue" featureName="name" valueExpression="aql:'F_final'+container.finalstates->size()"/> + </subModelOperations> + </firstModelOperations> + </initialOperation> + </ownedTools> + </toolSections> + <toolSections name="Activities Creation" label="Activities"> + <ownedTools xsi:type="tool:NodeCreationDescription" name="Entry" precondition="aql:container.entry_ == null" nodeMappings="//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']/@subNodeMappings[name='Entry%20Activity']"> + <variable name="container"/> + <viewVariable name="containerView"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="aql:self"> + <subModelOperations xsi:type="tool_1:CreateInstance" typeName="statemachine::Action" referenceName="entry_"> + <subModelOperations xsi:type="tool_1:SetValue" featureName="content" valueExpression="aql:'activity'"/> + </subModelOperations> + </firstModelOperations> + </initialOperation> + </ownedTools> + <ownedTools xsi:type="tool:NodeCreationDescription" name="Do" precondition="aql:container.do_ == null" forceRefresh="true" nodeMappings="//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']/@subNodeMappings[name='Do%20Activity']"> + <variable name="container"/> + <viewVariable name="containerView"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="aql:self"> + <subModelOperations xsi:type="tool_1:CreateInstance" typeName="statemachine::Action" referenceName="do_"> + <subModelOperations xsi:type="tool_1:SetValue" featureName="content" valueExpression="aql:'activity'"/> + </subModelOperations> + </firstModelOperations> + </initialOperation> + </ownedTools> + <ownedTools xsi:type="tool:NodeCreationDescription" name="Exit" precondition="aql:container.exit_ == null" nodeMappings="//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']/@subNodeMappings[name='Exit%20Activity']"> + <variable name="container"/> + <viewVariable name="containerView"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="aql:self"> + <subModelOperations xsi:type="tool_1:CreateInstance" typeName="statemachine::Action" referenceName="exit_"> + <subModelOperations xsi:type="tool_1:SetValue" featureName="content" valueExpression="aql:'activity'"/> + </subModelOperations> + </firstModelOperations> + </initialOperation> + </ownedTools> + </toolSections> + <toolSections name="Relationship Creation" label="Relationships"> + <ownedTools xsi:type="tool:EdgeCreationDescription" name="Transition" edgeMappings="//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']"> + <sourceVariable name="source"/> + <targetVariable name="target"/> + <sourceViewVariable name="sourceView"/> + <targetViewVariable name="targetView"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="aql:source.eContainer()"> + <subModelOperations xsi:type="tool_1:CreateInstance" typeName="statemachine::Transition" referenceName="transitions"> + <subModelOperations xsi:type="tool_1:SetValue" featureName="from" valueExpression="var:source"/> + <subModelOperations xsi:type="tool_1:SetValue" featureName="to" valueExpression="var:target"/> + </subModelOperations> + </firstModelOperations> + </initialOperation> + </ownedTools> + </toolSections> + <toolSections name="Edit Tools"> + <subSections documentation="For most elements we use the default delete functionality" name="Deletion"> + <ownedTools xsi:type="tool:DeleteElementDescription" documentation="Only there to forbid the deletion of the model itself.
For all other elements we use the default delete functionality" name="No Model Delete"> + <element name="element"/> + <elementView name="elementView"/> + <containerView name="containerView"/> + <initialOperation/> + </ownedTools> + <ownedTools xsi:type="tool:DeleteElementDescription" name="Delete Element with Transitions"> + <element name="element"/> + <elementView name="elementView"/> + <containerView name="containerView"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="aql:self.eContainer()"> + <subModelOperations xsi:type="tool_1:For" expression="aql:self.transitions"> + <subModelOperations xsi:type="tool_1:If" conditionExpression="aql: (i.from == element) or (i.to == element)"> + <subModelOperations xsi:type="tool_1:ChangeContext" browseExpression="var:i"> + <subModelOperations xsi:type="tool_1:RemoveElement"/> + </subModelOperations> + </subModelOperations> + </subModelOperations> + <subModelOperations xsi:type="tool_1:ChangeContext" browseExpression="var:element"> + <subModelOperations xsi:type="tool_1:RemoveElement"/> + </subModelOperations> + </firstModelOperations> + </initialOperation> + </ownedTools> + </subSections> + <subSections name="Label Edit"> + <ownedTools xsi:type="tool:DirectEditLabel" name="State Machine LE" inputLabelExpression="aql:self.identifier"> + <mask mask="{0}"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="aql:self"> + <subModelOperations xsi:type="tool_1:SetValue" featureName="identifier" valueExpression="var:0"/> + </firstModelOperations> + </initialOperation> + </ownedTools> + <ownedTools xsi:type="tool:DirectEditLabel" name="Normal State LE" inputLabelExpression="aql:self.name"> + <mask mask="{0}"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="aql:self"> + <subModelOperations xsi:type="tool_1:SetValue" featureName="name" valueExpression="var:0"/> + </firstModelOperations> + </initialOperation> + </ownedTools> + <ownedTools xsi:type="tool:DirectEditLabel" name="Initial State LE" inputLabelExpression="aql:self.name"> + <mask mask="{0}"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="aql:self"> + <subModelOperations xsi:type="tool_1:If" conditionExpression="aql: arg0.startsWith('I_')"> + <subModelOperations xsi:type="tool_1:SetValue" featureName="name" valueExpression="var:0"/> + </subModelOperations> + <subModelOperations xsi:type="tool_1:If" conditionExpression="aql: not arg0.startsWith('I_')"> + <subModelOperations xsi:type="tool_1:SetValue" featureName="name" valueExpression="aql: 'I_' + arg0"/> + </subModelOperations> + </firstModelOperations> + </initialOperation> + </ownedTools> + <ownedTools xsi:type="tool:DirectEditLabel" name="Final State LE" inputLabelExpression="aql:self.name"> + <mask mask="{0}"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="aql:self"> + <subModelOperations xsi:type="tool_1:If" conditionExpression="aql: arg0.startsWith('F_')"> + <subModelOperations xsi:type="tool_1:SetValue" featureName="name" valueExpression="var:0"/> + </subModelOperations> + <subModelOperations xsi:type="tool_1:If" conditionExpression="aql: not arg0.startsWith('F_')"> + <subModelOperations xsi:type="tool_1:SetValue" featureName="name" valueExpression="aql: 'F_' + arg0"/> + </subModelOperations> + </firstModelOperations> + </initialOperation> + </ownedTools> + <ownedTools xsi:type="tool:DirectEditLabel" name="Activity LE" inputLabelExpression="feature:content"> + <mask mask="{0}"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="aql:self"> + <subModelOperations xsi:type="tool_1:SetValue" featureName="content" valueExpression="var:0"/> + </firstModelOperations> + </initialOperation> + </ownedTools> + <ownedTools xsi:type="tool:DirectEditLabel" name="Transition LE" inputLabelExpression="aql: self.trigger.content + ' [ '+ self.guard.content + ' ] ' + '/ ' + self.action.content"> + <mask mask="{0}[{1}] /{2}"/> + <initialOperation> + <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="aql:self"> + <subModelOperations xsi:type="tool_1:If" conditionExpression="aql: (arg0 == null) or (arg0.trim().size() == 0)"> + <subModelOperations xsi:type="tool_1:Unset" featureName="trigger"/> + </subModelOperations> + <subModelOperations xsi:type="tool_1:If" conditionExpression="aql: (arg1 == null) or (arg1.trim().size() == 0)"> + <subModelOperations xsi:type="tool_1:Unset" featureName="guard"/> + </subModelOperations> + <subModelOperations xsi:type="tool_1:If" conditionExpression="aql: (arg2 == null) or (arg2.trim().size() == 0)"> + <subModelOperations xsi:type="tool_1:Unset" featureName="action"/> + </subModelOperations> + <subModelOperations xsi:type="tool_1:If" conditionExpression="aql: (arg0 <> null) and (arg0.trim().size() <> 0)"> + <subModelOperations xsi:type="tool_1:If" conditionExpression="aql:self.trigger <> null "> + <subModelOperations xsi:type="tool_1:ChangeContext" browseExpression="feature:trigger"> + <subModelOperations xsi:type="tool_1:SetValue" featureName="content" valueExpression="aql:arg0.trim()"/> + </subModelOperations> + </subModelOperations> + <subModelOperations xsi:type="tool_1:If" conditionExpression="aql:self.trigger == null "> + <subModelOperations xsi:type="tool_1:CreateInstance" typeName="statemachine::Trigger" referenceName="trigger"> + <subModelOperations xsi:type="tool_1:SetValue" featureName="content" valueExpression="aql:arg0.trim()"/> + </subModelOperations> + </subModelOperations> + </subModelOperations> + <subModelOperations xsi:type="tool_1:If" conditionExpression="aql: (arg1 <> null) and (arg1.trim().size() <> 0)"> + <subModelOperations xsi:type="tool_1:If" conditionExpression="aql:self.guard <> null "> + <subModelOperations xsi:type="tool_1:ChangeContext" browseExpression="feature:guard"> + <subModelOperations xsi:type="tool_1:SetValue" featureName="content" valueExpression="aql:arg1.trim()"/> + </subModelOperations> + </subModelOperations> + <subModelOperations xsi:type="tool_1:If" conditionExpression="aql:self.guard == null "> + <subModelOperations xsi:type="tool_1:CreateInstance" typeName="statemachine::Guard" referenceName="guard"> + <subModelOperations xsi:type="tool_1:SetValue" featureName="content" valueExpression="aql:arg1.trim()"/> + </subModelOperations> + </subModelOperations> + </subModelOperations> + <subModelOperations xsi:type="tool_1:If" conditionExpression="aql: (arg2 <> null) and (arg2.trim().size() <> 0)"> + <subModelOperations xsi:type="tool_1:If" conditionExpression="aql:self.action <> null "> + <subModelOperations xsi:type="tool_1:ChangeContext" browseExpression="feature:action"> + <subModelOperations xsi:type="tool_1:SetValue" featureName="content" valueExpression="aql:arg2.trim()"/> + </subModelOperations> + </subModelOperations> + <subModelOperations xsi:type="tool_1:If" conditionExpression="aql:self.action == null "> + <subModelOperations xsi:type="tool_1:CreateInstance" typeName="statemachine::Action" referenceName="action"> + <subModelOperations xsi:type="tool_1:SetValue" featureName="content" valueExpression="aql:arg2.trim()"/> + </subModelOperations> + </subModelOperations> + </subModelOperations> + </firstModelOperations> + </initialOperation> + </ownedTools> + </subSections> + </toolSections> + </defaultLayer> + <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_gray']"/> + </ownedRepresentations> + <ownedJavaExtensions qualifiedClassName="swt.most.sirius.statemachine.Services"/> + </ownedViewpoints> +</description:Group> diff --git a/domain_specific_language/graphical/swt.most.statemachine.sirius/plugin.properties b/domain_specific_language/graphical/swt.most.statemachine.sirius/plugin.properties new file mode 100644 index 0000000000000000000000000000000000000000..70e2607d0a1de2eb6b87f6273ba60f1e98aa2abc --- /dev/null +++ b/domain_specific_language/graphical/swt.most.statemachine.sirius/plugin.properties @@ -0,0 +1,3 @@ +pluginName = swt.most.sirius.statemachine +providerName = Eclipse Modeling Project +viewpointName = MyViewpoint diff --git a/domain_specific_language/graphical/swt.most.statemachine.sirius/plugin.xml b/domain_specific_language/graphical/swt.most.statemachine.sirius/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..21792387f047e3de90da72a51f18b768e86361b0 --- /dev/null +++ b/domain_specific_language/graphical/swt.most.statemachine.sirius/plugin.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.0"?> +<plugin> + <extension point="org.eclipse.sirius.componentization"> + <component class="swt.most.sirius.statemachine.Activator" + id="swt.most.sirius.statemachine" + name="statemachine"> + </component> + </extension> +</plugin> diff --git a/domain_specific_language/graphical/swt.most.statemachine.sirius/src/swt/most/sirius/statemachine/Activator.java b/domain_specific_language/graphical/swt.most.statemachine.sirius/src/swt/most/sirius/statemachine/Activator.java new file mode 100644 index 0000000000000000000000000000000000000000..eed533c5707cad19bb01262a1d82fe27b8dc4cff --- /dev/null +++ b/domain_specific_language/graphical/swt.most.statemachine.sirius/src/swt/most/sirius/statemachine/Activator.java @@ -0,0 +1,66 @@ +package swt.most.sirius.statemachine; + +import java.util.HashSet; +import java.util.Set; + +import org.eclipse.sirius.business.api.componentization.ViewpointRegistry; +import org.eclipse.sirius.viewpoint.description.Viewpoint; +import org.eclipse.ui.plugin.AbstractUIPlugin; +import org.osgi.framework.BundleContext; + +/** + * The activator class controls the plug-in life cycle + */ +public class Activator extends AbstractUIPlugin { + // The plug-in ID + public static final String PLUGIN_ID = "swt.most.sirius.statemachine"; + + // The shared instance + private static Activator plugin; + + private static Set<Viewpoint> viewpoints; + + /** + * The constructor + */ + public Activator() { + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext) + */ + public void start(BundleContext context) throws Exception { + super.start(context); + plugin = this; + viewpoints = new HashSet<Viewpoint>(); + viewpoints.addAll(ViewpointRegistry.getInstance().registerFromPlugin(PLUGIN_ID + "/description/statemachine.odesign")); + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext) + */ + public void stop(BundleContext context) throws Exception { + plugin = null; + if (viewpoints != null) { + for (final Viewpoint viewpoint: viewpoints) { + ViewpointRegistry.getInstance().disposeFromPlugin(viewpoint); + } + viewpoints.clear(); + viewpoints = null; + } + super.stop(context); + } + + /** + * Returns the shared instance + * + * @return the shared instance + */ + public static Activator getDefault() { + return plugin; + } +} diff --git a/domain_specific_language/graphical/swt.most.statemachine.sirius/src/swt/most/sirius/statemachine/Services.java b/domain_specific_language/graphical/swt.most.statemachine.sirius/src/swt/most/sirius/statemachine/Services.java new file mode 100644 index 0000000000000000000000000000000000000000..4d22d4227822de056385e00fcc3466fe6d884fa8 --- /dev/null +++ b/domain_specific_language/graphical/swt.most.statemachine.sirius/src/swt/most/sirius/statemachine/Services.java @@ -0,0 +1,17 @@ +package swt.most.sirius.statemachine; + +import org.eclipse.emf.ecore.EObject; + +/** + * The services class used by VSM. + */ +public class Services { + + /** + * See http://help.eclipse.org/neon/index.jsp?topic=%2Forg.eclipse.sirius.doc%2Fdoc%2Findex.html&cp=24 for documentation on how to write service methods. + */ + public EObject myService(EObject self, String arg) { + // TODO Auto-generated code + return self; + } +} diff --git a/domain_specific_language/textual/runtime/examples-xtext/.project b/domain_specific_language/textual/runtime/examples-xtext/.project new file mode 100644 index 0000000000000000000000000000000000000000..421660760d02000efd25e5017a75e494d5e3d778 --- /dev/null +++ b/domain_specific_language/textual/runtime/examples-xtext/.project @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>examples-xtext</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.xtext.ui.shared.xtextBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.xtext.ui.shared.xtextNature</nature> + </natures> +</projectDescription> diff --git a/domain_specific_language/textual/runtime/examples-xtext/garagedoor.statemachine b/domain_specific_language/textual/runtime/examples-xtext/garagedoor.statemachine new file mode 100644 index 0000000000000000000000000000000000000000..7a304189ad16a9717e98349f504e302bb2271eab --- /dev/null +++ b/domain_specific_language/textual/runtime/examples-xtext/garagedoor.statemachine @@ -0,0 +1,33 @@ +StateMachine "Garage Door"{ + + start I_initial + end F_final + + state Open + state Opening + state Closed + state Closing + + I_initial --> Closed + Closed --> F_final + + Closed - openDoor / motor.upwards -> Opening + Opening - stopper /motor.stop-> Open + Open - closeDoor / motor.downwards -> Closing + Closing - stopper /motor.stop -> Closed + + Opening - closeDoor / motor.downwards -> Closing + Closing - openDoor / motor.upwards -> Opening + + + Open - openDoor-> Open + Opening - openDoor -> Opening + + Closed - closeDoor -> Closed + Closing - closeDoor-> Closing + + //Error + //F_final --> Closed + //Closed --> I_initial + +} \ No newline at end of file diff --git a/domain_specific_language/textual/runtime/examples-xtext/switch.statemachine b/domain_specific_language/textual/runtime/examples-xtext/switch.statemachine new file mode 100644 index 0000000000000000000000000000000000000000..88eaecf775abf4323323d293f33068366a725bf3 --- /dev/null +++ b/domain_specific_language/textual/runtime/examples-xtext/switch.statemachine @@ -0,0 +1,10 @@ +StateMachine Switch{ + + start I_initial + state on{ do: do_something } + state off{ do: do_nothing } + + I_initial --> off + off - flip -> on + on - flip -> off +} \ No newline at end of file diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/.classpath b/domain_specific_language/textual/swt.most.statemachine.xtext/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..4e12da8fbda9296c7f887bacc83d00c948fdfe7b --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/.classpath @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> + <classpathentry kind="src" path="swt.most.xtext.statemachine/src"/> + <classpathentry kind="src" path="swt.most.xtext.statemachine/src-gen"/> + <classpathentry kind="src" path="swt.most.xtext.statemachine/xtend-gen"/> + <classpathentry kind="src" path="swt.most.xtext.statemachine.ide/src"/> + <classpathentry kind="src" path="swt.most.xtext.statemachine.ide/src-gen"/> + <classpathentry kind="src" path="swt.most.xtext.statemachine.tests/src-gen"/> + <classpathentry kind="src" path="swt.most.xtext.statemachine.tests/xtend-gen"/> + <classpathentry kind="src" path="swt.most.xtext.statemachine.ui/src"/> + <classpathentry kind="src" path="swt.most.xtext.statemachine.ui/src-gen"/> + <classpathentry kind="src" path="swt.most.xtext.statemachine.ui.tests/src-gen"/> + <classpathentry kind="lib" path="swt.most.xtext.statemachine/.antlr-generator-3.2.0-patch.jar"/> + <classpathentry kind="output" path="swt.most.xtext.statemachine/bin"/> +</classpath> diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/.project b/domain_specific_language/textual/swt.most.statemachine.xtext/.project new file mode 100644 index 0000000000000000000000000000000000000000..14671007c67750ac258034caaeb1d5d3c7e47b47 --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/.project @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>swt.most.xtext.statemachine</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.xtext.ui.shared.xtextBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + <nature>org.eclipse.xtext.ui.shared.xtextNature</nature> + </natures> +</projectDescription> diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/.classpath b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..7994b693843c3539027c7d53e955031340c68cf2 --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/.classpath @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="src" path="src-gen"/> + <classpathentry kind="src" path="xtend-gen"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-21"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/.project b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/.project new file mode 100644 index 0000000000000000000000000000000000000000..3a5c187bd9ba803aa99c4554ff50c5c106108dbf --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/.project @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>swt.most.statemachine.xtext.ide</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.xtext.ui.shared.xtextBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.SchemaBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.xtext.ui.shared.xtextNature</nature> + <nature>org.eclipse.jdt.core.javanature</nature> + <nature>org.eclipse.pde.PluginNature</nature> + </natures> +</projectDescription> diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/.settings/org.eclipse.core.resources.prefs b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000000000000000000000000000000000000..99f26c0203a7844de00dbfc56e6a35d8ed3c022c --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/<project>=UTF-8 diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/.settings/org.eclipse.jdt.core.prefs b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000000000000000000000000000000000000..3a79233b1335743cc32ed3638c1a2d0c1f52d303 --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,10 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=21 +org.eclipse.jdt.core.compiler.compliance=21 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=21 diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/META-INF/MANIFEST.MF b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..c67d6059f513cf3725224f044bdfb880802fed3c --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/META-INF/MANIFEST.MF @@ -0,0 +1,16 @@ +Manifest-Version: 1.0 +Automatic-Module-Name: swt.most.statemachine.xtext.ide +Bundle-ManifestVersion: 2 +Bundle-Name: swt.most.statemachine.xtext.ide +Bundle-Vendor: My Company +Bundle-Version: 1.0.0.qualifier +Bundle-SymbolicName: swt.most.statemachine.xtext.ide; singleton:=true +Bundle-ActivationPolicy: lazy +Require-Bundle: swt.most.statemachine.xtext, + swt.most.statemachine, + org.eclipse.xtext.ide, + org.eclipse.xtext.xbase.ide, + org.antlr.runtime;bundle-version="[3.2.0,3.2.1)" +Bundle-RequiredExecutionEnvironment: JavaSE-21 +Export-Package: swt.most.statemachine.xtext.ide.contentassist.antlr, + swt.most.statemachine.xtext.ide.contentassist.antlr.internal diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/bin/META-INF/services/org.eclipse.xtext.ISetup b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/bin/META-INF/services/org.eclipse.xtext.ISetup new file mode 100644 index 0000000000000000000000000000000000000000..34f9d12eaee5910599fef7d1d585b837658ef273 --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/bin/META-INF/services/org.eclipse.xtext.ISetup @@ -0,0 +1 @@ +swt.most.statemachine.xtext.ide.ParserIdeSetup diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/bin/swt/most/statemachine/xtext/ide/AbstractParserIdeModule.class b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/bin/swt/most/statemachine/xtext/ide/AbstractParserIdeModule.class new file mode 100644 index 0000000000000000000000000000000000000000..81ebcb02af551e548fca96baf762687c95d9238a Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/bin/swt/most/statemachine/xtext/ide/AbstractParserIdeModule.class differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/bin/swt/most/statemachine/xtext/ide/ParserIdeModule.class b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/bin/swt/most/statemachine/xtext/ide/ParserIdeModule.class new file mode 100644 index 0000000000000000000000000000000000000000..99c38bc0c4df78be9a4b6f37dd95ecc0fca99289 Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/bin/swt/most/statemachine/xtext/ide/ParserIdeModule.class differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/bin/swt/most/statemachine/xtext/ide/ParserIdeSetup.class b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/bin/swt/most/statemachine/xtext/ide/ParserIdeSetup.class new file mode 100644 index 0000000000000000000000000000000000000000..21a6ae48ae09386828a2130bbbd680fdcd744195 Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/bin/swt/most/statemachine/xtext/ide/ParserIdeSetup.class differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/bin/swt/most/statemachine/xtext/ide/contentassist/antlr/ParserParser$NameMappings.class b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/bin/swt/most/statemachine/xtext/ide/contentassist/antlr/ParserParser$NameMappings.class new file mode 100644 index 0000000000000000000000000000000000000000..f90105a184a15e9bb23dad1ac34f95298e48eaee Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/bin/swt/most/statemachine/xtext/ide/contentassist/antlr/ParserParser$NameMappings.class differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/bin/swt/most/statemachine/xtext/ide/contentassist/antlr/ParserParser.class b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/bin/swt/most/statemachine/xtext/ide/contentassist/antlr/ParserParser.class new file mode 100644 index 0000000000000000000000000000000000000000..0dcd667581d0bc509f10045ba53b7ddb3ca81657 Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/bin/swt/most/statemachine/xtext/ide/contentassist/antlr/ParserParser.class differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/bin/swt/most/statemachine/xtext/ide/contentassist/antlr/PartialParserContentAssistParser.class b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/bin/swt/most/statemachine/xtext/ide/contentassist/antlr/PartialParserContentAssistParser.class new file mode 100644 index 0000000000000000000000000000000000000000..298e47d63fefe556cd7738518d450697e4fe31a7 Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/bin/swt/most/statemachine/xtext/ide/contentassist/antlr/PartialParserContentAssistParser.class differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/bin/swt/most/statemachine/xtext/ide/contentassist/antlr/internal/InternalParser.g b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/bin/swt/most/statemachine/xtext/ide/contentassist/antlr/internal/InternalParser.g new file mode 100644 index 0000000000000000000000000000000000000000..2991bbc88c13fdb67d1c920ad4c7894b37a68785 --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/bin/swt/most/statemachine/xtext/ide/contentassist/antlr/internal/InternalParser.g @@ -0,0 +1,1969 @@ +/* + * generated by Xtext 2.35.0 + */ +grammar InternalParser; + +options { + superClass=AbstractInternalContentAssistParser; +} + +@lexer::header { +package swt.most.statemachine.xtext.ide.contentassist.antlr.internal; + +// Hack: Use our own Lexer superclass by means of import. +// Currently there is no other way to specify the superclass for the lexer. +import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.Lexer; +} + +@parser::header { +package swt.most.statemachine.xtext.ide.contentassist.antlr.internal; + +import java.io.InputStream; +import org.eclipse.xtext.*; +import org.eclipse.xtext.parser.*; +import org.eclipse.xtext.parser.impl.*; +import org.eclipse.emf.ecore.util.EcoreUtil; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.xtext.parser.antlr.XtextTokenStream; +import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens; +import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser; +import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.DFA; +import swt.most.statemachine.xtext.services.ParserGrammarAccess; + +} +@parser::members { + private ParserGrammarAccess grammarAccess; + + public void setGrammarAccess(ParserGrammarAccess grammarAccess) { + this.grammarAccess = grammarAccess; + } + + @Override + protected Grammar getGrammar() { + return grammarAccess.getGrammar(); + } + + @Override + protected String getValueForTokenName(String tokenName) { + return tokenName; + } +} + +// Entry rule entryRuleStateMachine +entryRuleStateMachine +: +{ before(grammarAccess.getStateMachineRule()); } + ruleStateMachine +{ after(grammarAccess.getStateMachineRule()); } + EOF +; + +// Rule StateMachine +ruleStateMachine + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getStateMachineAccess().getGroup()); } + (rule__StateMachine__Group__0) + { after(grammarAccess.getStateMachineAccess().getGroup()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +// Entry rule entryRuleNormalState +entryRuleNormalState +: +{ before(grammarAccess.getNormalStateRule()); } + ruleNormalState +{ after(grammarAccess.getNormalStateRule()); } + EOF +; + +// Rule NormalState +ruleNormalState + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getNormalStateAccess().getGroup()); } + (rule__NormalState__Group__0) + { after(grammarAccess.getNormalStateAccess().getGroup()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +// Entry rule entryRuleFinalState +entryRuleFinalState +: +{ before(grammarAccess.getFinalStateRule()); } + ruleFinalState +{ after(grammarAccess.getFinalStateRule()); } + EOF +; + +// Rule FinalState +ruleFinalState + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getFinalStateAccess().getGroup()); } + (rule__FinalState__Group__0) + { after(grammarAccess.getFinalStateAccess().getGroup()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +// Entry rule entryRuleInitialState +entryRuleInitialState +: +{ before(grammarAccess.getInitialStateRule()); } + ruleInitialState +{ after(grammarAccess.getInitialStateRule()); } + EOF +; + +// Rule InitialState +ruleInitialState + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getInitialStateAccess().getGroup()); } + (rule__InitialState__Group__0) + { after(grammarAccess.getInitialStateAccess().getGroup()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +// Entry rule entryRuleTransition +entryRuleTransition +: +{ before(grammarAccess.getTransitionRule()); } + ruleTransition +{ after(grammarAccess.getTransitionRule()); } + EOF +; + +// Rule Transition +ruleTransition + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getTransitionAccess().getGroup()); } + (rule__Transition__Group__0) + { after(grammarAccess.getTransitionAccess().getGroup()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +// Entry rule entryRuleAction +entryRuleAction +: +{ before(grammarAccess.getActionRule()); } + ruleAction +{ after(grammarAccess.getActionRule()); } + EOF +; + +// Rule Action +ruleAction + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getActionAccess().getGroup()); } + (rule__Action__Group__0) + { after(grammarAccess.getActionAccess().getGroup()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +// Entry rule entryRuleTrigger +entryRuleTrigger +: +{ before(grammarAccess.getTriggerRule()); } + ruleTrigger +{ after(grammarAccess.getTriggerRule()); } + EOF +; + +// Rule Trigger +ruleTrigger + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getTriggerAccess().getGroup()); } + (rule__Trigger__Group__0) + { after(grammarAccess.getTriggerAccess().getGroup()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +// Entry rule entryRuleGuard +entryRuleGuard +: +{ before(grammarAccess.getGuardRule()); } + ruleGuard +{ after(grammarAccess.getGuardRule()); } + EOF +; + +// Rule Guard +ruleGuard + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getGuardAccess().getGroup()); } + (rule__Guard__Group__0) + { after(grammarAccess.getGuardAccess().getGroup()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +// Entry rule entryRuleActivityContent +entryRuleActivityContent +: +{ before(grammarAccess.getActivityContentRule()); } + ruleActivityContent +{ after(grammarAccess.getActivityContentRule()); } + EOF +; + +// Rule ActivityContent +ruleActivityContent + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getActivityContentAccess().getAlternatives()); } + (rule__ActivityContent__Alternatives) + { after(grammarAccess.getActivityContentAccess().getAlternatives()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +// Entry rule entryRuleEString +entryRuleEString +: +{ before(grammarAccess.getEStringRule()); } + ruleEString +{ after(grammarAccess.getEStringRule()); } + EOF +; + +// Rule EString +ruleEString + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getEStringAccess().getAlternatives()); } + (rule__EString__Alternatives) + { after(grammarAccess.getEStringAccess().getAlternatives()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__StateMachine__Alternatives_5 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getStateMachineAccess().getStatesAssignment_5_0()); } + (rule__StateMachine__StatesAssignment_5_0) + { after(grammarAccess.getStateMachineAccess().getStatesAssignment_5_0()); } + ) + | + ( + { before(grammarAccess.getStateMachineAccess().getFinalstatesAssignment_5_1()); } + (rule__StateMachine__FinalstatesAssignment_5_1) + { after(grammarAccess.getStateMachineAccess().getFinalstatesAssignment_5_1()); } + ) + | + ( + { before(grammarAccess.getStateMachineAccess().getTransitionsAssignment_5_2()); } + (rule__StateMachine__TransitionsAssignment_5_2) + { after(grammarAccess.getStateMachineAccess().getTransitionsAssignment_5_2()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__ActivityContent__Alternatives + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getActivityContentAccess().getSTRINGTerminalRuleCall_0()); } + RULE_STRING + { after(grammarAccess.getActivityContentAccess().getSTRINGTerminalRuleCall_0()); } + ) + | + ( + { before(grammarAccess.getActivityContentAccess().getIDTerminalRuleCall_1()); } + RULE_ID + { after(grammarAccess.getActivityContentAccess().getIDTerminalRuleCall_1()); } + ) + | + ( + { before(grammarAccess.getActivityContentAccess().getCALLTerminalRuleCall_2()); } + RULE_CALL + { after(grammarAccess.getActivityContentAccess().getCALLTerminalRuleCall_2()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__EString__Alternatives + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getEStringAccess().getSTRINGTerminalRuleCall_0()); } + RULE_STRING + { after(grammarAccess.getEStringAccess().getSTRINGTerminalRuleCall_0()); } + ) + | + ( + { before(grammarAccess.getEStringAccess().getIDTerminalRuleCall_1()); } + RULE_ID + { after(grammarAccess.getEStringAccess().getIDTerminalRuleCall_1()); } + ) + | + ( + { before(grammarAccess.getEStringAccess().getINITIALSTATENAMETerminalRuleCall_2()); } + RULE_INITIALSTATENAME + { after(grammarAccess.getEStringAccess().getINITIALSTATENAMETerminalRuleCall_2()); } + ) + | + ( + { before(grammarAccess.getEStringAccess().getFINALSTATENAMETerminalRuleCall_3()); } + RULE_FINALSTATENAME + { after(grammarAccess.getEStringAccess().getFINALSTATENAMETerminalRuleCall_3()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__StateMachine__Group__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__StateMachine__Group__0__Impl + rule__StateMachine__Group__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__StateMachine__Group__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getStateMachineAccess().getStateMachineAction_0()); } + () + { after(grammarAccess.getStateMachineAccess().getStateMachineAction_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__StateMachine__Group__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__StateMachine__Group__1__Impl + rule__StateMachine__Group__2 +; +finally { + restoreStackSize(stackSize); +} + +rule__StateMachine__Group__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getStateMachineAccess().getStateMachineKeyword_1()); } + 'StateMachine' + { after(grammarAccess.getStateMachineAccess().getStateMachineKeyword_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__StateMachine__Group__2 + @init { + int stackSize = keepStackSize(); + } +: + rule__StateMachine__Group__2__Impl + rule__StateMachine__Group__3 +; +finally { + restoreStackSize(stackSize); +} + +rule__StateMachine__Group__2__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getStateMachineAccess().getNameAssignment_2()); } + (rule__StateMachine__NameAssignment_2) + { after(grammarAccess.getStateMachineAccess().getNameAssignment_2()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__StateMachine__Group__3 + @init { + int stackSize = keepStackSize(); + } +: + rule__StateMachine__Group__3__Impl + rule__StateMachine__Group__4 +; +finally { + restoreStackSize(stackSize); +} + +rule__StateMachine__Group__3__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getStateMachineAccess().getLeftCurlyBracketKeyword_3()); } + '{' + { after(grammarAccess.getStateMachineAccess().getLeftCurlyBracketKeyword_3()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__StateMachine__Group__4 + @init { + int stackSize = keepStackSize(); + } +: + rule__StateMachine__Group__4__Impl + rule__StateMachine__Group__5 +; +finally { + restoreStackSize(stackSize); +} + +rule__StateMachine__Group__4__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getStateMachineAccess().getInitialstateAssignment_4()); } + (rule__StateMachine__InitialstateAssignment_4) + { after(grammarAccess.getStateMachineAccess().getInitialstateAssignment_4()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__StateMachine__Group__5 + @init { + int stackSize = keepStackSize(); + } +: + rule__StateMachine__Group__5__Impl + rule__StateMachine__Group__6 +; +finally { + restoreStackSize(stackSize); +} + +rule__StateMachine__Group__5__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getStateMachineAccess().getAlternatives_5()); } + (rule__StateMachine__Alternatives_5)* + { after(grammarAccess.getStateMachineAccess().getAlternatives_5()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__StateMachine__Group__6 + @init { + int stackSize = keepStackSize(); + } +: + rule__StateMachine__Group__6__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__StateMachine__Group__6__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getStateMachineAccess().getRightCurlyBracketKeyword_6()); } + '}' + { after(grammarAccess.getStateMachineAccess().getRightCurlyBracketKeyword_6()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__NormalState__Group__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__NormalState__Group__0__Impl + rule__NormalState__Group__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Group__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getNormalStateAccess().getNormalStateAction_0()); } + () + { after(grammarAccess.getNormalStateAccess().getNormalStateAction_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Group__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__NormalState__Group__1__Impl + rule__NormalState__Group__2 +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Group__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getNormalStateAccess().getStateKeyword_1()); } + 'state' + { after(grammarAccess.getNormalStateAccess().getStateKeyword_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Group__2 + @init { + int stackSize = keepStackSize(); + } +: + rule__NormalState__Group__2__Impl + rule__NormalState__Group__3 +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Group__2__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getNormalStateAccess().getNameAssignment_2()); } + (rule__NormalState__NameAssignment_2) + { after(grammarAccess.getNormalStateAccess().getNameAssignment_2()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Group__3 + @init { + int stackSize = keepStackSize(); + } +: + rule__NormalState__Group__3__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Group__3__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getNormalStateAccess().getGroup_3()); } + (rule__NormalState__Group_3__0)? + { after(grammarAccess.getNormalStateAccess().getGroup_3()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__NormalState__Group_3__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__NormalState__Group_3__0__Impl + rule__NormalState__Group_3__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Group_3__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getNormalStateAccess().getLeftCurlyBracketKeyword_3_0()); } + '{' + { after(grammarAccess.getNormalStateAccess().getLeftCurlyBracketKeyword_3_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Group_3__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__NormalState__Group_3__1__Impl + rule__NormalState__Group_3__2 +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Group_3__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getNormalStateAccess().getGroup_3_1()); } + (rule__NormalState__Group_3_1__0)? + { after(grammarAccess.getNormalStateAccess().getGroup_3_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Group_3__2 + @init { + int stackSize = keepStackSize(); + } +: + rule__NormalState__Group_3__2__Impl + rule__NormalState__Group_3__3 +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Group_3__2__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getNormalStateAccess().getGroup_3_2()); } + (rule__NormalState__Group_3_2__0)? + { after(grammarAccess.getNormalStateAccess().getGroup_3_2()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Group_3__3 + @init { + int stackSize = keepStackSize(); + } +: + rule__NormalState__Group_3__3__Impl + rule__NormalState__Group_3__4 +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Group_3__3__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getNormalStateAccess().getGroup_3_3()); } + (rule__NormalState__Group_3_3__0)? + { after(grammarAccess.getNormalStateAccess().getGroup_3_3()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Group_3__4 + @init { + int stackSize = keepStackSize(); + } +: + rule__NormalState__Group_3__4__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Group_3__4__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getNormalStateAccess().getRightCurlyBracketKeyword_3_4()); } + '}' + { after(grammarAccess.getNormalStateAccess().getRightCurlyBracketKeyword_3_4()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__NormalState__Group_3_1__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__NormalState__Group_3_1__0__Impl + rule__NormalState__Group_3_1__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Group_3_1__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getNormalStateAccess().getEntryKeyword_3_1_0()); } + 'entry:' + { after(grammarAccess.getNormalStateAccess().getEntryKeyword_3_1_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Group_3_1__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__NormalState__Group_3_1__1__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Group_3_1__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getNormalStateAccess().getEntry_Assignment_3_1_1()); } + (rule__NormalState__Entry_Assignment_3_1_1) + { after(grammarAccess.getNormalStateAccess().getEntry_Assignment_3_1_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__NormalState__Group_3_2__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__NormalState__Group_3_2__0__Impl + rule__NormalState__Group_3_2__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Group_3_2__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getNormalStateAccess().getDoKeyword_3_2_0()); } + 'do:' + { after(grammarAccess.getNormalStateAccess().getDoKeyword_3_2_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Group_3_2__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__NormalState__Group_3_2__1__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Group_3_2__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getNormalStateAccess().getDo_Assignment_3_2_1()); } + (rule__NormalState__Do_Assignment_3_2_1) + { after(grammarAccess.getNormalStateAccess().getDo_Assignment_3_2_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__NormalState__Group_3_3__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__NormalState__Group_3_3__0__Impl + rule__NormalState__Group_3_3__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Group_3_3__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getNormalStateAccess().getExitKeyword_3_3_0()); } + 'exit:' + { after(grammarAccess.getNormalStateAccess().getExitKeyword_3_3_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Group_3_3__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__NormalState__Group_3_3__1__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Group_3_3__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getNormalStateAccess().getExit_Assignment_3_3_1()); } + (rule__NormalState__Exit_Assignment_3_3_1) + { after(grammarAccess.getNormalStateAccess().getExit_Assignment_3_3_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__FinalState__Group__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__FinalState__Group__0__Impl + rule__FinalState__Group__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__FinalState__Group__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getFinalStateAccess().getFinalStateAction_0()); } + () + { after(grammarAccess.getFinalStateAccess().getFinalStateAction_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__FinalState__Group__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__FinalState__Group__1__Impl + rule__FinalState__Group__2 +; +finally { + restoreStackSize(stackSize); +} + +rule__FinalState__Group__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getFinalStateAccess().getEndKeyword_1()); } + 'end' + { after(grammarAccess.getFinalStateAccess().getEndKeyword_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__FinalState__Group__2 + @init { + int stackSize = keepStackSize(); + } +: + rule__FinalState__Group__2__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__FinalState__Group__2__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getFinalStateAccess().getNameAssignment_2()); } + (rule__FinalState__NameAssignment_2) + { after(grammarAccess.getFinalStateAccess().getNameAssignment_2()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__InitialState__Group__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__InitialState__Group__0__Impl + rule__InitialState__Group__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__InitialState__Group__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getInitialStateAccess().getInitialStateAction_0()); } + () + { after(grammarAccess.getInitialStateAccess().getInitialStateAction_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__InitialState__Group__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__InitialState__Group__1__Impl + rule__InitialState__Group__2 +; +finally { + restoreStackSize(stackSize); +} + +rule__InitialState__Group__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getInitialStateAccess().getStartKeyword_1()); } + 'start' + { after(grammarAccess.getInitialStateAccess().getStartKeyword_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__InitialState__Group__2 + @init { + int stackSize = keepStackSize(); + } +: + rule__InitialState__Group__2__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__InitialState__Group__2__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getInitialStateAccess().getNameAssignment_2()); } + (rule__InitialState__NameAssignment_2) + { after(grammarAccess.getInitialStateAccess().getNameAssignment_2()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__Transition__Group__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__Transition__Group__0__Impl + rule__Transition__Group__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__Group__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getTransitionAccess().getTransitionAction_0()); } + () + { after(grammarAccess.getTransitionAccess().getTransitionAction_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__Group__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__Transition__Group__1__Impl + rule__Transition__Group__2 +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__Group__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getTransitionAccess().getFromAssignment_1()); } + (rule__Transition__FromAssignment_1) + { after(grammarAccess.getTransitionAccess().getFromAssignment_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__Group__2 + @init { + int stackSize = keepStackSize(); + } +: + rule__Transition__Group__2__Impl + rule__Transition__Group__3 +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__Group__2__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getTransitionAccess().getHyphenMinusKeyword_2()); } + '-' + { after(grammarAccess.getTransitionAccess().getHyphenMinusKeyword_2()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__Group__3 + @init { + int stackSize = keepStackSize(); + } +: + rule__Transition__Group__3__Impl + rule__Transition__Group__4 +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__Group__3__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getTransitionAccess().getTriggerAssignment_3()); } + (rule__Transition__TriggerAssignment_3)? + { after(grammarAccess.getTransitionAccess().getTriggerAssignment_3()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__Group__4 + @init { + int stackSize = keepStackSize(); + } +: + rule__Transition__Group__4__Impl + rule__Transition__Group__5 +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__Group__4__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getTransitionAccess().getGroup_4()); } + (rule__Transition__Group_4__0)? + { after(grammarAccess.getTransitionAccess().getGroup_4()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__Group__5 + @init { + int stackSize = keepStackSize(); + } +: + rule__Transition__Group__5__Impl + rule__Transition__Group__6 +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__Group__5__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getTransitionAccess().getGroup_5()); } + (rule__Transition__Group_5__0)? + { after(grammarAccess.getTransitionAccess().getGroup_5()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__Group__6 + @init { + int stackSize = keepStackSize(); + } +: + rule__Transition__Group__6__Impl + rule__Transition__Group__7 +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__Group__6__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getTransitionAccess().getHyphenMinusGreaterThanSignKeyword_6()); } + '->' + { after(grammarAccess.getTransitionAccess().getHyphenMinusGreaterThanSignKeyword_6()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__Group__7 + @init { + int stackSize = keepStackSize(); + } +: + rule__Transition__Group__7__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__Group__7__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getTransitionAccess().getToAssignment_7()); } + (rule__Transition__ToAssignment_7) + { after(grammarAccess.getTransitionAccess().getToAssignment_7()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__Transition__Group_4__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__Transition__Group_4__0__Impl + rule__Transition__Group_4__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__Group_4__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getTransitionAccess().getLeftSquareBracketKeyword_4_0()); } + '[' + { after(grammarAccess.getTransitionAccess().getLeftSquareBracketKeyword_4_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__Group_4__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__Transition__Group_4__1__Impl + rule__Transition__Group_4__2 +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__Group_4__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getTransitionAccess().getGuardAssignment_4_1()); } + (rule__Transition__GuardAssignment_4_1) + { after(grammarAccess.getTransitionAccess().getGuardAssignment_4_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__Group_4__2 + @init { + int stackSize = keepStackSize(); + } +: + rule__Transition__Group_4__2__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__Group_4__2__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getTransitionAccess().getRightSquareBracketKeyword_4_2()); } + ']' + { after(grammarAccess.getTransitionAccess().getRightSquareBracketKeyword_4_2()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__Transition__Group_5__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__Transition__Group_5__0__Impl + rule__Transition__Group_5__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__Group_5__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getTransitionAccess().getSolidusKeyword_5_0()); } + '/' + { after(grammarAccess.getTransitionAccess().getSolidusKeyword_5_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__Group_5__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__Transition__Group_5__1__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__Group_5__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getTransitionAccess().getActionAssignment_5_1()); } + (rule__Transition__ActionAssignment_5_1) + { after(grammarAccess.getTransitionAccess().getActionAssignment_5_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__Action__Group__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__Action__Group__0__Impl + rule__Action__Group__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__Action__Group__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getActionAccess().getActionAction_0()); } + () + { after(grammarAccess.getActionAccess().getActionAction_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__Action__Group__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__Action__Group__1__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__Action__Group__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getActionAccess().getContentAssignment_1()); } + (rule__Action__ContentAssignment_1) + { after(grammarAccess.getActionAccess().getContentAssignment_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__Trigger__Group__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__Trigger__Group__0__Impl + rule__Trigger__Group__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__Trigger__Group__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getTriggerAccess().getTriggerAction_0()); } + () + { after(grammarAccess.getTriggerAccess().getTriggerAction_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__Trigger__Group__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__Trigger__Group__1__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__Trigger__Group__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getTriggerAccess().getContentAssignment_1()); } + (rule__Trigger__ContentAssignment_1) + { after(grammarAccess.getTriggerAccess().getContentAssignment_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__Guard__Group__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__Guard__Group__0__Impl + rule__Guard__Group__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__Guard__Group__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getGuardAccess().getGuardAction_0()); } + () + { after(grammarAccess.getGuardAccess().getGuardAction_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__Guard__Group__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__Guard__Group__1__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__Guard__Group__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getGuardAccess().getContentAssignment_1()); } + (rule__Guard__ContentAssignment_1) + { after(grammarAccess.getGuardAccess().getContentAssignment_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__StateMachine__NameAssignment_2 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getStateMachineAccess().getNameEStringParserRuleCall_2_0()); } + ruleEString + { after(grammarAccess.getStateMachineAccess().getNameEStringParserRuleCall_2_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__StateMachine__InitialstateAssignment_4 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getStateMachineAccess().getInitialstateInitialStateParserRuleCall_4_0()); } + ruleInitialState + { after(grammarAccess.getStateMachineAccess().getInitialstateInitialStateParserRuleCall_4_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__StateMachine__StatesAssignment_5_0 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getStateMachineAccess().getStatesNormalStateParserRuleCall_5_0_0()); } + ruleNormalState + { after(grammarAccess.getStateMachineAccess().getStatesNormalStateParserRuleCall_5_0_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__StateMachine__FinalstatesAssignment_5_1 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getStateMachineAccess().getFinalstatesFinalStateParserRuleCall_5_1_0()); } + ruleFinalState + { after(grammarAccess.getStateMachineAccess().getFinalstatesFinalStateParserRuleCall_5_1_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__StateMachine__TransitionsAssignment_5_2 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getStateMachineAccess().getTransitionsTransitionParserRuleCall_5_2_0()); } + ruleTransition + { after(grammarAccess.getStateMachineAccess().getTransitionsTransitionParserRuleCall_5_2_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__NameAssignment_2 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getNormalStateAccess().getNameEStringParserRuleCall_2_0()); } + ruleEString + { after(grammarAccess.getNormalStateAccess().getNameEStringParserRuleCall_2_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Entry_Assignment_3_1_1 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getNormalStateAccess().getEntry_ActionParserRuleCall_3_1_1_0()); } + ruleAction + { after(grammarAccess.getNormalStateAccess().getEntry_ActionParserRuleCall_3_1_1_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Do_Assignment_3_2_1 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getNormalStateAccess().getDo_ActionParserRuleCall_3_2_1_0()); } + ruleAction + { after(grammarAccess.getNormalStateAccess().getDo_ActionParserRuleCall_3_2_1_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Exit_Assignment_3_3_1 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getNormalStateAccess().getExit_ActionParserRuleCall_3_3_1_0()); } + ruleAction + { after(grammarAccess.getNormalStateAccess().getExit_ActionParserRuleCall_3_3_1_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__FinalState__NameAssignment_2 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getFinalStateAccess().getNameFINALSTATENAMETerminalRuleCall_2_0()); } + RULE_FINALSTATENAME + { after(grammarAccess.getFinalStateAccess().getNameFINALSTATENAMETerminalRuleCall_2_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__InitialState__NameAssignment_2 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getInitialStateAccess().getNameINITIALSTATENAMETerminalRuleCall_2_0()); } + RULE_INITIALSTATENAME + { after(grammarAccess.getInitialStateAccess().getNameINITIALSTATENAMETerminalRuleCall_2_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__FromAssignment_1 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getTransitionAccess().getFromStateCrossReference_1_0()); } + ( + { before(grammarAccess.getTransitionAccess().getFromStateEStringParserRuleCall_1_0_1()); } + ruleEString + { after(grammarAccess.getTransitionAccess().getFromStateEStringParserRuleCall_1_0_1()); } + ) + { after(grammarAccess.getTransitionAccess().getFromStateCrossReference_1_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__TriggerAssignment_3 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getTransitionAccess().getTriggerTriggerParserRuleCall_3_0()); } + ruleTrigger + { after(grammarAccess.getTransitionAccess().getTriggerTriggerParserRuleCall_3_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__GuardAssignment_4_1 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getTransitionAccess().getGuardGuardParserRuleCall_4_1_0()); } + ruleGuard + { after(grammarAccess.getTransitionAccess().getGuardGuardParserRuleCall_4_1_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__ActionAssignment_5_1 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getTransitionAccess().getActionActionParserRuleCall_5_1_0()); } + ruleAction + { after(grammarAccess.getTransitionAccess().getActionActionParserRuleCall_5_1_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__ToAssignment_7 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getTransitionAccess().getToStateCrossReference_7_0()); } + ( + { before(grammarAccess.getTransitionAccess().getToStateEStringParserRuleCall_7_0_1()); } + ruleEString + { after(grammarAccess.getTransitionAccess().getToStateEStringParserRuleCall_7_0_1()); } + ) + { after(grammarAccess.getTransitionAccess().getToStateCrossReference_7_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__Action__ContentAssignment_1 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getActionAccess().getContentActivityContentParserRuleCall_1_0()); } + ruleActivityContent + { after(grammarAccess.getActionAccess().getContentActivityContentParserRuleCall_1_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__Trigger__ContentAssignment_1 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getTriggerAccess().getContentActivityContentParserRuleCall_1_0()); } + ruleActivityContent + { after(grammarAccess.getTriggerAccess().getContentActivityContentParserRuleCall_1_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__Guard__ContentAssignment_1 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getGuardAccess().getContentEStringParserRuleCall_1_0()); } + ruleEString + { after(grammarAccess.getGuardAccess().getContentEStringParserRuleCall_1_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +RULE_INITIALSTATENAME : 'I_' (RULE_INT|RULE_STRING|RULE_ID)+; + +RULE_FINALSTATENAME : 'F_' (RULE_INT|RULE_STRING|RULE_ID)+; + +RULE_CALL : RULE_ID ('.' RULE_ID)+; + +RULE_ID : '^'? ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*; + +fragment RULE_INT : ('0'..'9')+; + +RULE_STRING : ('"' ('\\' .|~(('\\'|'"')))* '"'|'\'' ('\\' .|~(('\\'|'\'')))* '\''); + +RULE_ML_COMMENT : '/*' ( options {greedy=false;} : . )*'*/'; + +RULE_SL_COMMENT : '//' ~(('\n'|'\r'))* ('\r'? '\n')?; + +RULE_WS : (' '|'\t'|'\r'|'\n')+; + +RULE_ANY_OTHER : .; diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/bin/swt/most/statemachine/xtext/ide/contentassist/antlr/internal/InternalParser.tokens b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/bin/swt/most/statemachine/xtext/ide/contentassist/antlr/internal/InternalParser.tokens new file mode 100644 index 0000000000000000000000000000000000000000..144c9a537a7addcf550e90b5df4aefbbd88cede2 --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/bin/swt/most/statemachine/xtext/ide/contentassist/antlr/internal/InternalParser.tokens @@ -0,0 +1,38 @@ +'-'=23 +'->'=24 +'/'=27 +'StateMachine'=14 +'['=25 +']'=26 +'do:'=19 +'end'=21 +'entry:'=18 +'exit:'=20 +'start'=22 +'state'=17 +'{'=15 +'}'=16 +RULE_ANY_OTHER=13 +RULE_CALL=6 +RULE_FINALSTATENAME=8 +RULE_ID=5 +RULE_INITIALSTATENAME=7 +RULE_INT=9 +RULE_ML_COMMENT=10 +RULE_SL_COMMENT=11 +RULE_STRING=4 +RULE_WS=12 +T__14=14 +T__15=15 +T__16=16 +T__17=17 +T__18=18 +T__19=19 +T__20=20 +T__21=21 +T__22=22 +T__23=23 +T__24=24 +T__25=25 +T__26=26 +T__27=27 diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/bin/swt/most/statemachine/xtext/ide/contentassist/antlr/internal/InternalParserLexer$DFA15.class b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/bin/swt/most/statemachine/xtext/ide/contentassist/antlr/internal/InternalParserLexer$DFA15.class new file mode 100644 index 0000000000000000000000000000000000000000..e19c55da31d079f71660bb533c5851ed60df53dd Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/bin/swt/most/statemachine/xtext/ide/contentassist/antlr/internal/InternalParserLexer$DFA15.class differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/bin/swt/most/statemachine/xtext/ide/contentassist/antlr/internal/InternalParserLexer.class b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/bin/swt/most/statemachine/xtext/ide/contentassist/antlr/internal/InternalParserLexer.class new file mode 100644 index 0000000000000000000000000000000000000000..5dc00ce86da529bb93bf21aeb9ef6997753b1401 Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/bin/swt/most/statemachine/xtext/ide/contentassist/antlr/internal/InternalParserLexer.class differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/bin/swt/most/statemachine/xtext/ide/contentassist/antlr/internal/InternalParserParser.class b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/bin/swt/most/statemachine/xtext/ide/contentassist/antlr/internal/InternalParserParser.class new file mode 100644 index 0000000000000000000000000000000000000000..8db67359375275a27d6af43f1ff8369d6f58eb17 Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/bin/swt/most/statemachine/xtext/ide/contentassist/antlr/internal/InternalParserParser.class differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/build.properties b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..5c6bbf99f082bb19d8aa4ec89f7902c3e8936171 --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/build.properties @@ -0,0 +1,6 @@ +source.. = src/,\ + src-gen/,\ + xtend-gen/ +bin.includes = .,\ + META-INF/ +bin.excludes = **/*.xtend diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/src-gen/META-INF/services/org.eclipse.xtext.ISetup b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/src-gen/META-INF/services/org.eclipse.xtext.ISetup new file mode 100644 index 0000000000000000000000000000000000000000..34f9d12eaee5910599fef7d1d585b837658ef273 --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/src-gen/META-INF/services/org.eclipse.xtext.ISetup @@ -0,0 +1 @@ +swt.most.statemachine.xtext.ide.ParserIdeSetup diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/src-gen/swt/most/statemachine/xtext/ide/AbstractParserIdeModule.java b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/src-gen/swt/most/statemachine/xtext/ide/AbstractParserIdeModule.java new file mode 100644 index 0000000000000000000000000000000000000000..c02654ceee60ea2cf47720484b88c1c24087225c --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/src-gen/swt/most/statemachine/xtext/ide/AbstractParserIdeModule.java @@ -0,0 +1,60 @@ +/* + * generated by Xtext 2.35.0 + */ +package swt.most.statemachine.xtext.ide; + +import com.google.inject.Binder; +import com.google.inject.name.Names; +import org.eclipse.xtext.ide.DefaultIdeModule; +import org.eclipse.xtext.ide.LexerIdeBindings; +import org.eclipse.xtext.ide.editor.contentassist.FQNPrefixMatcher; +import org.eclipse.xtext.ide.editor.contentassist.IPrefixMatcher; +import org.eclipse.xtext.ide.editor.contentassist.IProposalConflictHelper; +import org.eclipse.xtext.ide.editor.contentassist.antlr.AntlrProposalConflictHelper; +import org.eclipse.xtext.ide.editor.contentassist.antlr.IContentAssistParser; +import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.Lexer; +import org.eclipse.xtext.ide.refactoring.IRenameStrategy2; +import org.eclipse.xtext.ide.server.rename.IRenameService2; +import org.eclipse.xtext.ide.server.rename.RenameService2; +import swt.most.statemachine.xtext.ide.contentassist.antlr.ParserParser; +import swt.most.statemachine.xtext.ide.contentassist.antlr.internal.InternalParserLexer; + +/** + * Manual modifications go to {@link ParserIdeModule}. + */ +@SuppressWarnings("all") +public abstract class AbstractParserIdeModule extends DefaultIdeModule { + + // contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2 + public void configureContentAssistLexer(Binder binder) { + binder.bind(Lexer.class) + .annotatedWith(Names.named(LexerIdeBindings.CONTENT_ASSIST)) + .to(InternalParserLexer.class); + } + + // contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2 + public Class<? extends IContentAssistParser> bindIContentAssistParser() { + return ParserParser.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2 + public Class<? extends IProposalConflictHelper> bindIProposalConflictHelper() { + return AntlrProposalConflictHelper.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.exporting.QualifiedNamesFragment2 + public Class<? extends IPrefixMatcher> bindIPrefixMatcher() { + return FQNPrefixMatcher.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.ui.refactoring.RefactorElementNameFragment2 + public Class<? extends IRenameService2> bindIRenameService2() { + return RenameService2.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.ui.refactoring.RefactorElementNameFragment2 + public Class<? extends IRenameStrategy2> bindIRenameStrategy2() { + return IRenameStrategy2.DefaultImpl.class; + } + +} diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/src-gen/swt/most/statemachine/xtext/ide/contentassist/antlr/ParserParser.java b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/src-gen/swt/most/statemachine/xtext/ide/contentassist/antlr/ParserParser.java new file mode 100644 index 0000000000000000000000000000000000000000..8bb3855811e2c78d13527f0032bdfa1c082481d1 --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/src-gen/swt/most/statemachine/xtext/ide/contentassist/antlr/ParserParser.java @@ -0,0 +1,112 @@ +/* + * generated by Xtext 2.35.0 + */ +package swt.most.statemachine.xtext.ide.contentassist.antlr; + +import com.google.common.collect.ImmutableMap; +import com.google.inject.Inject; +import com.google.inject.Singleton; +import java.util.Map; +import org.eclipse.xtext.AbstractElement; +import org.eclipse.xtext.ide.editor.contentassist.antlr.AbstractContentAssistParser; +import swt.most.statemachine.xtext.ide.contentassist.antlr.internal.InternalParserParser; +import swt.most.statemachine.xtext.services.ParserGrammarAccess; + +public class ParserParser extends AbstractContentAssistParser { + + @Singleton + public static final class NameMappings { + + private final Map<AbstractElement, String> mappings; + + @Inject + public NameMappings(ParserGrammarAccess grammarAccess) { + ImmutableMap.Builder<AbstractElement, String> builder = ImmutableMap.builder(); + init(builder, grammarAccess); + this.mappings = builder.build(); + } + + public String getRuleName(AbstractElement element) { + return mappings.get(element); + } + + private static void init(ImmutableMap.Builder<AbstractElement, String> builder, ParserGrammarAccess grammarAccess) { + builder.put(grammarAccess.getStateMachineAccess().getAlternatives_5(), "rule__StateMachine__Alternatives_5"); + builder.put(grammarAccess.getStateAccess().getAlternatives(), "rule__State__Alternatives"); + builder.put(grammarAccess.getActivityContentAccess().getAlternatives(), "rule__ActivityContent__Alternatives"); + builder.put(grammarAccess.getEStringAccess().getAlternatives(), "rule__EString__Alternatives"); + builder.put(grammarAccess.getStateMachineAccess().getGroup(), "rule__StateMachine__Group__0"); + builder.put(grammarAccess.getNormalStateAccess().getGroup(), "rule__NormalState__Group__0"); + builder.put(grammarAccess.getNormalStateAccess().getGroup_3(), "rule__NormalState__Group_3__0"); + builder.put(grammarAccess.getNormalStateAccess().getGroup_3_1(), "rule__NormalState__Group_3_1__0"); + builder.put(grammarAccess.getNormalStateAccess().getGroup_3_2(), "rule__NormalState__Group_3_2__0"); + builder.put(grammarAccess.getNormalStateAccess().getGroup_3_3(), "rule__NormalState__Group_3_3__0"); + builder.put(grammarAccess.getFinalStateAccess().getGroup(), "rule__FinalState__Group__0"); + builder.put(grammarAccess.getInitialStateAccess().getGroup(), "rule__InitialState__Group__0"); + builder.put(grammarAccess.getTransitionAccess().getGroup(), "rule__Transition__Group__0"); + builder.put(grammarAccess.getTransitionAccess().getGroup_4(), "rule__Transition__Group_4__0"); + builder.put(grammarAccess.getTransitionAccess().getGroup_5(), "rule__Transition__Group_5__0"); + builder.put(grammarAccess.getActionAccess().getGroup(), "rule__Action__Group__0"); + builder.put(grammarAccess.getTriggerAccess().getGroup(), "rule__Trigger__Group__0"); + builder.put(grammarAccess.getGuardAccess().getGroup(), "rule__Guard__Group__0"); + builder.put(grammarAccess.getStateMachineAccess().getNameAssignment_2(), "rule__StateMachine__NameAssignment_2"); + builder.put(grammarAccess.getStateMachineAccess().getInitialstateAssignment_4(), "rule__StateMachine__InitialstateAssignment_4"); + builder.put(grammarAccess.getStateMachineAccess().getStatesAssignment_5_0(), "rule__StateMachine__StatesAssignment_5_0"); + builder.put(grammarAccess.getStateMachineAccess().getFinalstatesAssignment_5_1(), "rule__StateMachine__FinalstatesAssignment_5_1"); + builder.put(grammarAccess.getStateMachineAccess().getTransitionsAssignment_5_2(), "rule__StateMachine__TransitionsAssignment_5_2"); + builder.put(grammarAccess.getNormalStateAccess().getNameAssignment_2(), "rule__NormalState__NameAssignment_2"); + builder.put(grammarAccess.getNormalStateAccess().getEntry_Assignment_3_1_1(), "rule__NormalState__Entry_Assignment_3_1_1"); + builder.put(grammarAccess.getNormalStateAccess().getDo_Assignment_3_2_1(), "rule__NormalState__Do_Assignment_3_2_1"); + builder.put(grammarAccess.getNormalStateAccess().getExit_Assignment_3_3_1(), "rule__NormalState__Exit_Assignment_3_3_1"); + builder.put(grammarAccess.getFinalStateAccess().getNameAssignment_2(), "rule__FinalState__NameAssignment_2"); + builder.put(grammarAccess.getInitialStateAccess().getNameAssignment_2(), "rule__InitialState__NameAssignment_2"); + builder.put(grammarAccess.getTransitionAccess().getFromAssignment_1(), "rule__Transition__FromAssignment_1"); + builder.put(grammarAccess.getTransitionAccess().getTriggerAssignment_3(), "rule__Transition__TriggerAssignment_3"); + builder.put(grammarAccess.getTransitionAccess().getGuardAssignment_4_1(), "rule__Transition__GuardAssignment_4_1"); + builder.put(grammarAccess.getTransitionAccess().getActionAssignment_5_1(), "rule__Transition__ActionAssignment_5_1"); + builder.put(grammarAccess.getTransitionAccess().getToAssignment_7(), "rule__Transition__ToAssignment_7"); + builder.put(grammarAccess.getActionAccess().getContentAssignment_1(), "rule__Action__ContentAssignment_1"); + builder.put(grammarAccess.getTriggerAccess().getContentAssignment_1(), "rule__Trigger__ContentAssignment_1"); + builder.put(grammarAccess.getGuardAccess().getContentAssignment_1(), "rule__Guard__ContentAssignment_1"); + } + } + + @Inject + private NameMappings nameMappings; + + @Inject + private ParserGrammarAccess grammarAccess; + + @Override + protected InternalParserParser createParser() { + InternalParserParser result = new InternalParserParser(null); + result.setGrammarAccess(grammarAccess); + return result; + } + + @Override + protected String getRuleName(AbstractElement element) { + return nameMappings.getRuleName(element); + } + + @Override + protected String[] getInitialHiddenTokens() { + return new String[] { "RULE_WS", "RULE_ML_COMMENT", "RULE_SL_COMMENT" }; + } + + public ParserGrammarAccess getGrammarAccess() { + return this.grammarAccess; + } + + public void setGrammarAccess(ParserGrammarAccess grammarAccess) { + this.grammarAccess = grammarAccess; + } + + public NameMappings getNameMappings() { + return nameMappings; + } + + public void setNameMappings(NameMappings nameMappings) { + this.nameMappings = nameMappings; + } +} diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/src-gen/swt/most/statemachine/xtext/ide/contentassist/antlr/PartialParserContentAssistParser.java b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/src-gen/swt/most/statemachine/xtext/ide/contentassist/antlr/PartialParserContentAssistParser.java new file mode 100644 index 0000000000000000000000000000000000000000..9229e6f79245e8929e47059f5ef2813463a63ebb --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/src-gen/swt/most/statemachine/xtext/ide/contentassist/antlr/PartialParserContentAssistParser.java @@ -0,0 +1,33 @@ +/* + * generated by Xtext 2.35.0 + */ +package swt.most.statemachine.xtext.ide.contentassist.antlr; + +import java.util.Collection; +import java.util.Collections; +import org.eclipse.xtext.AbstractRule; +import org.eclipse.xtext.ide.editor.contentassist.antlr.FollowElement; +import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser; +import org.eclipse.xtext.util.PolymorphicDispatcher; + +public class PartialParserContentAssistParser extends ParserParser { + + private AbstractRule rule; + + @Override + public void initializeFor(AbstractRule rule) { + this.rule = rule; + } + + @Override + protected Collection<FollowElement> getFollowElements(AbstractInternalContentAssistParser parser) { + if (rule == null || rule.eIsProxy()) + return Collections.emptyList(); + String methodName = "entryRule" + rule.getName(); + PolymorphicDispatcher<Collection<FollowElement>> dispatcher = + new PolymorphicDispatcher<Collection<FollowElement>>(methodName, 0, 0, Collections.singletonList(parser)); + dispatcher.invoke(); + return parser.getFollowElements(); + } + +} diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/src-gen/swt/most/statemachine/xtext/ide/contentassist/antlr/internal/InternalParser.g b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/src-gen/swt/most/statemachine/xtext/ide/contentassist/antlr/internal/InternalParser.g new file mode 100644 index 0000000000000000000000000000000000000000..2991bbc88c13fdb67d1c920ad4c7894b37a68785 --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/src-gen/swt/most/statemachine/xtext/ide/contentassist/antlr/internal/InternalParser.g @@ -0,0 +1,1969 @@ +/* + * generated by Xtext 2.35.0 + */ +grammar InternalParser; + +options { + superClass=AbstractInternalContentAssistParser; +} + +@lexer::header { +package swt.most.statemachine.xtext.ide.contentassist.antlr.internal; + +// Hack: Use our own Lexer superclass by means of import. +// Currently there is no other way to specify the superclass for the lexer. +import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.Lexer; +} + +@parser::header { +package swt.most.statemachine.xtext.ide.contentassist.antlr.internal; + +import java.io.InputStream; +import org.eclipse.xtext.*; +import org.eclipse.xtext.parser.*; +import org.eclipse.xtext.parser.impl.*; +import org.eclipse.emf.ecore.util.EcoreUtil; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.xtext.parser.antlr.XtextTokenStream; +import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens; +import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser; +import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.DFA; +import swt.most.statemachine.xtext.services.ParserGrammarAccess; + +} +@parser::members { + private ParserGrammarAccess grammarAccess; + + public void setGrammarAccess(ParserGrammarAccess grammarAccess) { + this.grammarAccess = grammarAccess; + } + + @Override + protected Grammar getGrammar() { + return grammarAccess.getGrammar(); + } + + @Override + protected String getValueForTokenName(String tokenName) { + return tokenName; + } +} + +// Entry rule entryRuleStateMachine +entryRuleStateMachine +: +{ before(grammarAccess.getStateMachineRule()); } + ruleStateMachine +{ after(grammarAccess.getStateMachineRule()); } + EOF +; + +// Rule StateMachine +ruleStateMachine + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getStateMachineAccess().getGroup()); } + (rule__StateMachine__Group__0) + { after(grammarAccess.getStateMachineAccess().getGroup()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +// Entry rule entryRuleNormalState +entryRuleNormalState +: +{ before(grammarAccess.getNormalStateRule()); } + ruleNormalState +{ after(grammarAccess.getNormalStateRule()); } + EOF +; + +// Rule NormalState +ruleNormalState + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getNormalStateAccess().getGroup()); } + (rule__NormalState__Group__0) + { after(grammarAccess.getNormalStateAccess().getGroup()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +// Entry rule entryRuleFinalState +entryRuleFinalState +: +{ before(grammarAccess.getFinalStateRule()); } + ruleFinalState +{ after(grammarAccess.getFinalStateRule()); } + EOF +; + +// Rule FinalState +ruleFinalState + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getFinalStateAccess().getGroup()); } + (rule__FinalState__Group__0) + { after(grammarAccess.getFinalStateAccess().getGroup()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +// Entry rule entryRuleInitialState +entryRuleInitialState +: +{ before(grammarAccess.getInitialStateRule()); } + ruleInitialState +{ after(grammarAccess.getInitialStateRule()); } + EOF +; + +// Rule InitialState +ruleInitialState + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getInitialStateAccess().getGroup()); } + (rule__InitialState__Group__0) + { after(grammarAccess.getInitialStateAccess().getGroup()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +// Entry rule entryRuleTransition +entryRuleTransition +: +{ before(grammarAccess.getTransitionRule()); } + ruleTransition +{ after(grammarAccess.getTransitionRule()); } + EOF +; + +// Rule Transition +ruleTransition + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getTransitionAccess().getGroup()); } + (rule__Transition__Group__0) + { after(grammarAccess.getTransitionAccess().getGroup()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +// Entry rule entryRuleAction +entryRuleAction +: +{ before(grammarAccess.getActionRule()); } + ruleAction +{ after(grammarAccess.getActionRule()); } + EOF +; + +// Rule Action +ruleAction + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getActionAccess().getGroup()); } + (rule__Action__Group__0) + { after(grammarAccess.getActionAccess().getGroup()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +// Entry rule entryRuleTrigger +entryRuleTrigger +: +{ before(grammarAccess.getTriggerRule()); } + ruleTrigger +{ after(grammarAccess.getTriggerRule()); } + EOF +; + +// Rule Trigger +ruleTrigger + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getTriggerAccess().getGroup()); } + (rule__Trigger__Group__0) + { after(grammarAccess.getTriggerAccess().getGroup()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +// Entry rule entryRuleGuard +entryRuleGuard +: +{ before(grammarAccess.getGuardRule()); } + ruleGuard +{ after(grammarAccess.getGuardRule()); } + EOF +; + +// Rule Guard +ruleGuard + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getGuardAccess().getGroup()); } + (rule__Guard__Group__0) + { after(grammarAccess.getGuardAccess().getGroup()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +// Entry rule entryRuleActivityContent +entryRuleActivityContent +: +{ before(grammarAccess.getActivityContentRule()); } + ruleActivityContent +{ after(grammarAccess.getActivityContentRule()); } + EOF +; + +// Rule ActivityContent +ruleActivityContent + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getActivityContentAccess().getAlternatives()); } + (rule__ActivityContent__Alternatives) + { after(grammarAccess.getActivityContentAccess().getAlternatives()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +// Entry rule entryRuleEString +entryRuleEString +: +{ before(grammarAccess.getEStringRule()); } + ruleEString +{ after(grammarAccess.getEStringRule()); } + EOF +; + +// Rule EString +ruleEString + @init { + int stackSize = keepStackSize(); + } + : + ( + { before(grammarAccess.getEStringAccess().getAlternatives()); } + (rule__EString__Alternatives) + { after(grammarAccess.getEStringAccess().getAlternatives()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__StateMachine__Alternatives_5 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getStateMachineAccess().getStatesAssignment_5_0()); } + (rule__StateMachine__StatesAssignment_5_0) + { after(grammarAccess.getStateMachineAccess().getStatesAssignment_5_0()); } + ) + | + ( + { before(grammarAccess.getStateMachineAccess().getFinalstatesAssignment_5_1()); } + (rule__StateMachine__FinalstatesAssignment_5_1) + { after(grammarAccess.getStateMachineAccess().getFinalstatesAssignment_5_1()); } + ) + | + ( + { before(grammarAccess.getStateMachineAccess().getTransitionsAssignment_5_2()); } + (rule__StateMachine__TransitionsAssignment_5_2) + { after(grammarAccess.getStateMachineAccess().getTransitionsAssignment_5_2()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__ActivityContent__Alternatives + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getActivityContentAccess().getSTRINGTerminalRuleCall_0()); } + RULE_STRING + { after(grammarAccess.getActivityContentAccess().getSTRINGTerminalRuleCall_0()); } + ) + | + ( + { before(grammarAccess.getActivityContentAccess().getIDTerminalRuleCall_1()); } + RULE_ID + { after(grammarAccess.getActivityContentAccess().getIDTerminalRuleCall_1()); } + ) + | + ( + { before(grammarAccess.getActivityContentAccess().getCALLTerminalRuleCall_2()); } + RULE_CALL + { after(grammarAccess.getActivityContentAccess().getCALLTerminalRuleCall_2()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__EString__Alternatives + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getEStringAccess().getSTRINGTerminalRuleCall_0()); } + RULE_STRING + { after(grammarAccess.getEStringAccess().getSTRINGTerminalRuleCall_0()); } + ) + | + ( + { before(grammarAccess.getEStringAccess().getIDTerminalRuleCall_1()); } + RULE_ID + { after(grammarAccess.getEStringAccess().getIDTerminalRuleCall_1()); } + ) + | + ( + { before(grammarAccess.getEStringAccess().getINITIALSTATENAMETerminalRuleCall_2()); } + RULE_INITIALSTATENAME + { after(grammarAccess.getEStringAccess().getINITIALSTATENAMETerminalRuleCall_2()); } + ) + | + ( + { before(grammarAccess.getEStringAccess().getFINALSTATENAMETerminalRuleCall_3()); } + RULE_FINALSTATENAME + { after(grammarAccess.getEStringAccess().getFINALSTATENAMETerminalRuleCall_3()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__StateMachine__Group__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__StateMachine__Group__0__Impl + rule__StateMachine__Group__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__StateMachine__Group__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getStateMachineAccess().getStateMachineAction_0()); } + () + { after(grammarAccess.getStateMachineAccess().getStateMachineAction_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__StateMachine__Group__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__StateMachine__Group__1__Impl + rule__StateMachine__Group__2 +; +finally { + restoreStackSize(stackSize); +} + +rule__StateMachine__Group__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getStateMachineAccess().getStateMachineKeyword_1()); } + 'StateMachine' + { after(grammarAccess.getStateMachineAccess().getStateMachineKeyword_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__StateMachine__Group__2 + @init { + int stackSize = keepStackSize(); + } +: + rule__StateMachine__Group__2__Impl + rule__StateMachine__Group__3 +; +finally { + restoreStackSize(stackSize); +} + +rule__StateMachine__Group__2__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getStateMachineAccess().getNameAssignment_2()); } + (rule__StateMachine__NameAssignment_2) + { after(grammarAccess.getStateMachineAccess().getNameAssignment_2()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__StateMachine__Group__3 + @init { + int stackSize = keepStackSize(); + } +: + rule__StateMachine__Group__3__Impl + rule__StateMachine__Group__4 +; +finally { + restoreStackSize(stackSize); +} + +rule__StateMachine__Group__3__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getStateMachineAccess().getLeftCurlyBracketKeyword_3()); } + '{' + { after(grammarAccess.getStateMachineAccess().getLeftCurlyBracketKeyword_3()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__StateMachine__Group__4 + @init { + int stackSize = keepStackSize(); + } +: + rule__StateMachine__Group__4__Impl + rule__StateMachine__Group__5 +; +finally { + restoreStackSize(stackSize); +} + +rule__StateMachine__Group__4__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getStateMachineAccess().getInitialstateAssignment_4()); } + (rule__StateMachine__InitialstateAssignment_4) + { after(grammarAccess.getStateMachineAccess().getInitialstateAssignment_4()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__StateMachine__Group__5 + @init { + int stackSize = keepStackSize(); + } +: + rule__StateMachine__Group__5__Impl + rule__StateMachine__Group__6 +; +finally { + restoreStackSize(stackSize); +} + +rule__StateMachine__Group__5__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getStateMachineAccess().getAlternatives_5()); } + (rule__StateMachine__Alternatives_5)* + { after(grammarAccess.getStateMachineAccess().getAlternatives_5()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__StateMachine__Group__6 + @init { + int stackSize = keepStackSize(); + } +: + rule__StateMachine__Group__6__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__StateMachine__Group__6__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getStateMachineAccess().getRightCurlyBracketKeyword_6()); } + '}' + { after(grammarAccess.getStateMachineAccess().getRightCurlyBracketKeyword_6()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__NormalState__Group__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__NormalState__Group__0__Impl + rule__NormalState__Group__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Group__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getNormalStateAccess().getNormalStateAction_0()); } + () + { after(grammarAccess.getNormalStateAccess().getNormalStateAction_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Group__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__NormalState__Group__1__Impl + rule__NormalState__Group__2 +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Group__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getNormalStateAccess().getStateKeyword_1()); } + 'state' + { after(grammarAccess.getNormalStateAccess().getStateKeyword_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Group__2 + @init { + int stackSize = keepStackSize(); + } +: + rule__NormalState__Group__2__Impl + rule__NormalState__Group__3 +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Group__2__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getNormalStateAccess().getNameAssignment_2()); } + (rule__NormalState__NameAssignment_2) + { after(grammarAccess.getNormalStateAccess().getNameAssignment_2()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Group__3 + @init { + int stackSize = keepStackSize(); + } +: + rule__NormalState__Group__3__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Group__3__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getNormalStateAccess().getGroup_3()); } + (rule__NormalState__Group_3__0)? + { after(grammarAccess.getNormalStateAccess().getGroup_3()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__NormalState__Group_3__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__NormalState__Group_3__0__Impl + rule__NormalState__Group_3__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Group_3__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getNormalStateAccess().getLeftCurlyBracketKeyword_3_0()); } + '{' + { after(grammarAccess.getNormalStateAccess().getLeftCurlyBracketKeyword_3_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Group_3__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__NormalState__Group_3__1__Impl + rule__NormalState__Group_3__2 +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Group_3__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getNormalStateAccess().getGroup_3_1()); } + (rule__NormalState__Group_3_1__0)? + { after(grammarAccess.getNormalStateAccess().getGroup_3_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Group_3__2 + @init { + int stackSize = keepStackSize(); + } +: + rule__NormalState__Group_3__2__Impl + rule__NormalState__Group_3__3 +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Group_3__2__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getNormalStateAccess().getGroup_3_2()); } + (rule__NormalState__Group_3_2__0)? + { after(grammarAccess.getNormalStateAccess().getGroup_3_2()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Group_3__3 + @init { + int stackSize = keepStackSize(); + } +: + rule__NormalState__Group_3__3__Impl + rule__NormalState__Group_3__4 +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Group_3__3__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getNormalStateAccess().getGroup_3_3()); } + (rule__NormalState__Group_3_3__0)? + { after(grammarAccess.getNormalStateAccess().getGroup_3_3()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Group_3__4 + @init { + int stackSize = keepStackSize(); + } +: + rule__NormalState__Group_3__4__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Group_3__4__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getNormalStateAccess().getRightCurlyBracketKeyword_3_4()); } + '}' + { after(grammarAccess.getNormalStateAccess().getRightCurlyBracketKeyword_3_4()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__NormalState__Group_3_1__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__NormalState__Group_3_1__0__Impl + rule__NormalState__Group_3_1__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Group_3_1__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getNormalStateAccess().getEntryKeyword_3_1_0()); } + 'entry:' + { after(grammarAccess.getNormalStateAccess().getEntryKeyword_3_1_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Group_3_1__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__NormalState__Group_3_1__1__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Group_3_1__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getNormalStateAccess().getEntry_Assignment_3_1_1()); } + (rule__NormalState__Entry_Assignment_3_1_1) + { after(grammarAccess.getNormalStateAccess().getEntry_Assignment_3_1_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__NormalState__Group_3_2__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__NormalState__Group_3_2__0__Impl + rule__NormalState__Group_3_2__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Group_3_2__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getNormalStateAccess().getDoKeyword_3_2_0()); } + 'do:' + { after(grammarAccess.getNormalStateAccess().getDoKeyword_3_2_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Group_3_2__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__NormalState__Group_3_2__1__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Group_3_2__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getNormalStateAccess().getDo_Assignment_3_2_1()); } + (rule__NormalState__Do_Assignment_3_2_1) + { after(grammarAccess.getNormalStateAccess().getDo_Assignment_3_2_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__NormalState__Group_3_3__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__NormalState__Group_3_3__0__Impl + rule__NormalState__Group_3_3__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Group_3_3__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getNormalStateAccess().getExitKeyword_3_3_0()); } + 'exit:' + { after(grammarAccess.getNormalStateAccess().getExitKeyword_3_3_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Group_3_3__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__NormalState__Group_3_3__1__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Group_3_3__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getNormalStateAccess().getExit_Assignment_3_3_1()); } + (rule__NormalState__Exit_Assignment_3_3_1) + { after(grammarAccess.getNormalStateAccess().getExit_Assignment_3_3_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__FinalState__Group__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__FinalState__Group__0__Impl + rule__FinalState__Group__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__FinalState__Group__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getFinalStateAccess().getFinalStateAction_0()); } + () + { after(grammarAccess.getFinalStateAccess().getFinalStateAction_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__FinalState__Group__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__FinalState__Group__1__Impl + rule__FinalState__Group__2 +; +finally { + restoreStackSize(stackSize); +} + +rule__FinalState__Group__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getFinalStateAccess().getEndKeyword_1()); } + 'end' + { after(grammarAccess.getFinalStateAccess().getEndKeyword_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__FinalState__Group__2 + @init { + int stackSize = keepStackSize(); + } +: + rule__FinalState__Group__2__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__FinalState__Group__2__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getFinalStateAccess().getNameAssignment_2()); } + (rule__FinalState__NameAssignment_2) + { after(grammarAccess.getFinalStateAccess().getNameAssignment_2()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__InitialState__Group__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__InitialState__Group__0__Impl + rule__InitialState__Group__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__InitialState__Group__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getInitialStateAccess().getInitialStateAction_0()); } + () + { after(grammarAccess.getInitialStateAccess().getInitialStateAction_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__InitialState__Group__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__InitialState__Group__1__Impl + rule__InitialState__Group__2 +; +finally { + restoreStackSize(stackSize); +} + +rule__InitialState__Group__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getInitialStateAccess().getStartKeyword_1()); } + 'start' + { after(grammarAccess.getInitialStateAccess().getStartKeyword_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__InitialState__Group__2 + @init { + int stackSize = keepStackSize(); + } +: + rule__InitialState__Group__2__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__InitialState__Group__2__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getInitialStateAccess().getNameAssignment_2()); } + (rule__InitialState__NameAssignment_2) + { after(grammarAccess.getInitialStateAccess().getNameAssignment_2()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__Transition__Group__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__Transition__Group__0__Impl + rule__Transition__Group__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__Group__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getTransitionAccess().getTransitionAction_0()); } + () + { after(grammarAccess.getTransitionAccess().getTransitionAction_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__Group__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__Transition__Group__1__Impl + rule__Transition__Group__2 +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__Group__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getTransitionAccess().getFromAssignment_1()); } + (rule__Transition__FromAssignment_1) + { after(grammarAccess.getTransitionAccess().getFromAssignment_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__Group__2 + @init { + int stackSize = keepStackSize(); + } +: + rule__Transition__Group__2__Impl + rule__Transition__Group__3 +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__Group__2__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getTransitionAccess().getHyphenMinusKeyword_2()); } + '-' + { after(grammarAccess.getTransitionAccess().getHyphenMinusKeyword_2()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__Group__3 + @init { + int stackSize = keepStackSize(); + } +: + rule__Transition__Group__3__Impl + rule__Transition__Group__4 +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__Group__3__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getTransitionAccess().getTriggerAssignment_3()); } + (rule__Transition__TriggerAssignment_3)? + { after(grammarAccess.getTransitionAccess().getTriggerAssignment_3()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__Group__4 + @init { + int stackSize = keepStackSize(); + } +: + rule__Transition__Group__4__Impl + rule__Transition__Group__5 +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__Group__4__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getTransitionAccess().getGroup_4()); } + (rule__Transition__Group_4__0)? + { after(grammarAccess.getTransitionAccess().getGroup_4()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__Group__5 + @init { + int stackSize = keepStackSize(); + } +: + rule__Transition__Group__5__Impl + rule__Transition__Group__6 +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__Group__5__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getTransitionAccess().getGroup_5()); } + (rule__Transition__Group_5__0)? + { after(grammarAccess.getTransitionAccess().getGroup_5()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__Group__6 + @init { + int stackSize = keepStackSize(); + } +: + rule__Transition__Group__6__Impl + rule__Transition__Group__7 +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__Group__6__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getTransitionAccess().getHyphenMinusGreaterThanSignKeyword_6()); } + '->' + { after(grammarAccess.getTransitionAccess().getHyphenMinusGreaterThanSignKeyword_6()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__Group__7 + @init { + int stackSize = keepStackSize(); + } +: + rule__Transition__Group__7__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__Group__7__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getTransitionAccess().getToAssignment_7()); } + (rule__Transition__ToAssignment_7) + { after(grammarAccess.getTransitionAccess().getToAssignment_7()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__Transition__Group_4__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__Transition__Group_4__0__Impl + rule__Transition__Group_4__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__Group_4__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getTransitionAccess().getLeftSquareBracketKeyword_4_0()); } + '[' + { after(grammarAccess.getTransitionAccess().getLeftSquareBracketKeyword_4_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__Group_4__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__Transition__Group_4__1__Impl + rule__Transition__Group_4__2 +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__Group_4__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getTransitionAccess().getGuardAssignment_4_1()); } + (rule__Transition__GuardAssignment_4_1) + { after(grammarAccess.getTransitionAccess().getGuardAssignment_4_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__Group_4__2 + @init { + int stackSize = keepStackSize(); + } +: + rule__Transition__Group_4__2__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__Group_4__2__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getTransitionAccess().getRightSquareBracketKeyword_4_2()); } + ']' + { after(grammarAccess.getTransitionAccess().getRightSquareBracketKeyword_4_2()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__Transition__Group_5__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__Transition__Group_5__0__Impl + rule__Transition__Group_5__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__Group_5__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getTransitionAccess().getSolidusKeyword_5_0()); } + '/' + { after(grammarAccess.getTransitionAccess().getSolidusKeyword_5_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__Group_5__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__Transition__Group_5__1__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__Group_5__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getTransitionAccess().getActionAssignment_5_1()); } + (rule__Transition__ActionAssignment_5_1) + { after(grammarAccess.getTransitionAccess().getActionAssignment_5_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__Action__Group__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__Action__Group__0__Impl + rule__Action__Group__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__Action__Group__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getActionAccess().getActionAction_0()); } + () + { after(grammarAccess.getActionAccess().getActionAction_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__Action__Group__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__Action__Group__1__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__Action__Group__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getActionAccess().getContentAssignment_1()); } + (rule__Action__ContentAssignment_1) + { after(grammarAccess.getActionAccess().getContentAssignment_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__Trigger__Group__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__Trigger__Group__0__Impl + rule__Trigger__Group__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__Trigger__Group__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getTriggerAccess().getTriggerAction_0()); } + () + { after(grammarAccess.getTriggerAccess().getTriggerAction_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__Trigger__Group__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__Trigger__Group__1__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__Trigger__Group__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getTriggerAccess().getContentAssignment_1()); } + (rule__Trigger__ContentAssignment_1) + { after(grammarAccess.getTriggerAccess().getContentAssignment_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__Guard__Group__0 + @init { + int stackSize = keepStackSize(); + } +: + rule__Guard__Group__0__Impl + rule__Guard__Group__1 +; +finally { + restoreStackSize(stackSize); +} + +rule__Guard__Group__0__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getGuardAccess().getGuardAction_0()); } + () + { after(grammarAccess.getGuardAccess().getGuardAction_0()); } +) +; +finally { + restoreStackSize(stackSize); +} + +rule__Guard__Group__1 + @init { + int stackSize = keepStackSize(); + } +: + rule__Guard__Group__1__Impl +; +finally { + restoreStackSize(stackSize); +} + +rule__Guard__Group__1__Impl + @init { + int stackSize = keepStackSize(); + } +: +( + { before(grammarAccess.getGuardAccess().getContentAssignment_1()); } + (rule__Guard__ContentAssignment_1) + { after(grammarAccess.getGuardAccess().getContentAssignment_1()); } +) +; +finally { + restoreStackSize(stackSize); +} + + +rule__StateMachine__NameAssignment_2 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getStateMachineAccess().getNameEStringParserRuleCall_2_0()); } + ruleEString + { after(grammarAccess.getStateMachineAccess().getNameEStringParserRuleCall_2_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__StateMachine__InitialstateAssignment_4 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getStateMachineAccess().getInitialstateInitialStateParserRuleCall_4_0()); } + ruleInitialState + { after(grammarAccess.getStateMachineAccess().getInitialstateInitialStateParserRuleCall_4_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__StateMachine__StatesAssignment_5_0 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getStateMachineAccess().getStatesNormalStateParserRuleCall_5_0_0()); } + ruleNormalState + { after(grammarAccess.getStateMachineAccess().getStatesNormalStateParserRuleCall_5_0_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__StateMachine__FinalstatesAssignment_5_1 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getStateMachineAccess().getFinalstatesFinalStateParserRuleCall_5_1_0()); } + ruleFinalState + { after(grammarAccess.getStateMachineAccess().getFinalstatesFinalStateParserRuleCall_5_1_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__StateMachine__TransitionsAssignment_5_2 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getStateMachineAccess().getTransitionsTransitionParserRuleCall_5_2_0()); } + ruleTransition + { after(grammarAccess.getStateMachineAccess().getTransitionsTransitionParserRuleCall_5_2_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__NameAssignment_2 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getNormalStateAccess().getNameEStringParserRuleCall_2_0()); } + ruleEString + { after(grammarAccess.getNormalStateAccess().getNameEStringParserRuleCall_2_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Entry_Assignment_3_1_1 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getNormalStateAccess().getEntry_ActionParserRuleCall_3_1_1_0()); } + ruleAction + { after(grammarAccess.getNormalStateAccess().getEntry_ActionParserRuleCall_3_1_1_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Do_Assignment_3_2_1 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getNormalStateAccess().getDo_ActionParserRuleCall_3_2_1_0()); } + ruleAction + { after(grammarAccess.getNormalStateAccess().getDo_ActionParserRuleCall_3_2_1_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__NormalState__Exit_Assignment_3_3_1 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getNormalStateAccess().getExit_ActionParserRuleCall_3_3_1_0()); } + ruleAction + { after(grammarAccess.getNormalStateAccess().getExit_ActionParserRuleCall_3_3_1_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__FinalState__NameAssignment_2 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getFinalStateAccess().getNameFINALSTATENAMETerminalRuleCall_2_0()); } + RULE_FINALSTATENAME + { after(grammarAccess.getFinalStateAccess().getNameFINALSTATENAMETerminalRuleCall_2_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__InitialState__NameAssignment_2 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getInitialStateAccess().getNameINITIALSTATENAMETerminalRuleCall_2_0()); } + RULE_INITIALSTATENAME + { after(grammarAccess.getInitialStateAccess().getNameINITIALSTATENAMETerminalRuleCall_2_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__FromAssignment_1 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getTransitionAccess().getFromStateCrossReference_1_0()); } + ( + { before(grammarAccess.getTransitionAccess().getFromStateEStringParserRuleCall_1_0_1()); } + ruleEString + { after(grammarAccess.getTransitionAccess().getFromStateEStringParserRuleCall_1_0_1()); } + ) + { after(grammarAccess.getTransitionAccess().getFromStateCrossReference_1_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__TriggerAssignment_3 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getTransitionAccess().getTriggerTriggerParserRuleCall_3_0()); } + ruleTrigger + { after(grammarAccess.getTransitionAccess().getTriggerTriggerParserRuleCall_3_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__GuardAssignment_4_1 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getTransitionAccess().getGuardGuardParserRuleCall_4_1_0()); } + ruleGuard + { after(grammarAccess.getTransitionAccess().getGuardGuardParserRuleCall_4_1_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__ActionAssignment_5_1 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getTransitionAccess().getActionActionParserRuleCall_5_1_0()); } + ruleAction + { after(grammarAccess.getTransitionAccess().getActionActionParserRuleCall_5_1_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__Transition__ToAssignment_7 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getTransitionAccess().getToStateCrossReference_7_0()); } + ( + { before(grammarAccess.getTransitionAccess().getToStateEStringParserRuleCall_7_0_1()); } + ruleEString + { after(grammarAccess.getTransitionAccess().getToStateEStringParserRuleCall_7_0_1()); } + ) + { after(grammarAccess.getTransitionAccess().getToStateCrossReference_7_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__Action__ContentAssignment_1 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getActionAccess().getContentActivityContentParserRuleCall_1_0()); } + ruleActivityContent + { after(grammarAccess.getActionAccess().getContentActivityContentParserRuleCall_1_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__Trigger__ContentAssignment_1 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getTriggerAccess().getContentActivityContentParserRuleCall_1_0()); } + ruleActivityContent + { after(grammarAccess.getTriggerAccess().getContentActivityContentParserRuleCall_1_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +rule__Guard__ContentAssignment_1 + @init { + int stackSize = keepStackSize(); + } +: + ( + { before(grammarAccess.getGuardAccess().getContentEStringParserRuleCall_1_0()); } + ruleEString + { after(grammarAccess.getGuardAccess().getContentEStringParserRuleCall_1_0()); } + ) +; +finally { + restoreStackSize(stackSize); +} + +RULE_INITIALSTATENAME : 'I_' (RULE_INT|RULE_STRING|RULE_ID)+; + +RULE_FINALSTATENAME : 'F_' (RULE_INT|RULE_STRING|RULE_ID)+; + +RULE_CALL : RULE_ID ('.' RULE_ID)+; + +RULE_ID : '^'? ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*; + +fragment RULE_INT : ('0'..'9')+; + +RULE_STRING : ('"' ('\\' .|~(('\\'|'"')))* '"'|'\'' ('\\' .|~(('\\'|'\'')))* '\''); + +RULE_ML_COMMENT : '/*' ( options {greedy=false;} : . )*'*/'; + +RULE_SL_COMMENT : '//' ~(('\n'|'\r'))* ('\r'? '\n')?; + +RULE_WS : (' '|'\t'|'\r'|'\n')+; + +RULE_ANY_OTHER : .; diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/src-gen/swt/most/statemachine/xtext/ide/contentassist/antlr/internal/InternalParser.tokens b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/src-gen/swt/most/statemachine/xtext/ide/contentassist/antlr/internal/InternalParser.tokens new file mode 100644 index 0000000000000000000000000000000000000000..144c9a537a7addcf550e90b5df4aefbbd88cede2 --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/src-gen/swt/most/statemachine/xtext/ide/contentassist/antlr/internal/InternalParser.tokens @@ -0,0 +1,38 @@ +'-'=23 +'->'=24 +'/'=27 +'StateMachine'=14 +'['=25 +']'=26 +'do:'=19 +'end'=21 +'entry:'=18 +'exit:'=20 +'start'=22 +'state'=17 +'{'=15 +'}'=16 +RULE_ANY_OTHER=13 +RULE_CALL=6 +RULE_FINALSTATENAME=8 +RULE_ID=5 +RULE_INITIALSTATENAME=7 +RULE_INT=9 +RULE_ML_COMMENT=10 +RULE_SL_COMMENT=11 +RULE_STRING=4 +RULE_WS=12 +T__14=14 +T__15=15 +T__16=16 +T__17=17 +T__18=18 +T__19=19 +T__20=20 +T__21=21 +T__22=22 +T__23=23 +T__24=24 +T__25=25 +T__26=26 +T__27=27 diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/src-gen/swt/most/statemachine/xtext/ide/contentassist/antlr/internal/InternalParserLexer.java b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/src-gen/swt/most/statemachine/xtext/ide/contentassist/antlr/internal/InternalParserLexer.java new file mode 100644 index 0000000000000000000000000000000000000000..097ad7c22cf20a46ad62e5c438e939c5b057b79a --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/src-gen/swt/most/statemachine/xtext/ide/contentassist/antlr/internal/InternalParserLexer.java @@ -0,0 +1,1541 @@ +package swt.most.statemachine.xtext.ide.contentassist.antlr.internal; + +// Hack: Use our own Lexer superclass by means of import. +// Currently there is no other way to specify the superclass for the lexer. +import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.Lexer; + + +import org.antlr.runtime.*; +import java.util.Stack; +import java.util.List; +import java.util.ArrayList; + +@SuppressWarnings("all") +public class InternalParserLexer extends Lexer { + public static final int RULE_STRING=4; + public static final int RULE_INITIALSTATENAME=7; + public static final int RULE_SL_COMMENT=11; + public static final int T__19=19; + public static final int T__15=15; + public static final int T__16=16; + public static final int T__17=17; + public static final int T__18=18; + public static final int T__14=14; + public static final int EOF=-1; + public static final int RULE_CALL=6; + public static final int RULE_ID=5; + public static final int RULE_WS=12; + public static final int RULE_ANY_OTHER=13; + public static final int T__26=26; + public static final int T__27=27; + public static final int RULE_FINALSTATENAME=8; + public static final int RULE_INT=9; + public static final int T__22=22; + public static final int RULE_ML_COMMENT=10; + public static final int T__23=23; + public static final int T__24=24; + public static final int T__25=25; + public static final int T__20=20; + public static final int T__21=21; + + // delegates + // delegators + + public InternalParserLexer() {;} + public InternalParserLexer(CharStream input) { + this(input, new RecognizerSharedState()); + } + public InternalParserLexer(CharStream input, RecognizerSharedState state) { + super(input,state); + + } + public String getGrammarFileName() { return "InternalParser.g"; } + + // $ANTLR start "T__14" + public final void mT__14() throws RecognitionException { + try { + int _type = T__14; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalParser.g:11:7: ( 'StateMachine' ) + // InternalParser.g:11:9: 'StateMachine' + { + match("StateMachine"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__14" + + // $ANTLR start "T__15" + public final void mT__15() throws RecognitionException { + try { + int _type = T__15; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalParser.g:12:7: ( '{' ) + // InternalParser.g:12:9: '{' + { + match('{'); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__15" + + // $ANTLR start "T__16" + public final void mT__16() throws RecognitionException { + try { + int _type = T__16; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalParser.g:13:7: ( '}' ) + // InternalParser.g:13:9: '}' + { + match('}'); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__16" + + // $ANTLR start "T__17" + public final void mT__17() throws RecognitionException { + try { + int _type = T__17; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalParser.g:14:7: ( 'state' ) + // InternalParser.g:14:9: 'state' + { + match("state"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__17" + + // $ANTLR start "T__18" + public final void mT__18() throws RecognitionException { + try { + int _type = T__18; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalParser.g:15:7: ( 'entry:' ) + // InternalParser.g:15:9: 'entry:' + { + match("entry:"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__18" + + // $ANTLR start "T__19" + public final void mT__19() throws RecognitionException { + try { + int _type = T__19; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalParser.g:16:7: ( 'do:' ) + // InternalParser.g:16:9: 'do:' + { + match("do:"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__19" + + // $ANTLR start "T__20" + public final void mT__20() throws RecognitionException { + try { + int _type = T__20; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalParser.g:17:7: ( 'exit:' ) + // InternalParser.g:17:9: 'exit:' + { + match("exit:"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__20" + + // $ANTLR start "T__21" + public final void mT__21() throws RecognitionException { + try { + int _type = T__21; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalParser.g:18:7: ( 'end' ) + // InternalParser.g:18:9: 'end' + { + match("end"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__21" + + // $ANTLR start "T__22" + public final void mT__22() throws RecognitionException { + try { + int _type = T__22; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalParser.g:19:7: ( 'start' ) + // InternalParser.g:19:9: 'start' + { + match("start"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__22" + + // $ANTLR start "T__23" + public final void mT__23() throws RecognitionException { + try { + int _type = T__23; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalParser.g:20:7: ( '-' ) + // InternalParser.g:20:9: '-' + { + match('-'); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__23" + + // $ANTLR start "T__24" + public final void mT__24() throws RecognitionException { + try { + int _type = T__24; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalParser.g:21:7: ( '->' ) + // InternalParser.g:21:9: '->' + { + match("->"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__24" + + // $ANTLR start "T__25" + public final void mT__25() throws RecognitionException { + try { + int _type = T__25; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalParser.g:22:7: ( '[' ) + // InternalParser.g:22:9: '[' + { + match('['); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__25" + + // $ANTLR start "T__26" + public final void mT__26() throws RecognitionException { + try { + int _type = T__26; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalParser.g:23:7: ( ']' ) + // InternalParser.g:23:9: ']' + { + match(']'); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__26" + + // $ANTLR start "T__27" + public final void mT__27() throws RecognitionException { + try { + int _type = T__27; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalParser.g:24:7: ( '/' ) + // InternalParser.g:24:9: '/' + { + match('/'); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__27" + + // $ANTLR start "RULE_INITIALSTATENAME" + public final void mRULE_INITIALSTATENAME() throws RecognitionException { + try { + int _type = RULE_INITIALSTATENAME; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalParser.g:1951:23: ( 'I_' ( RULE_INT | RULE_STRING | RULE_ID )+ ) + // InternalParser.g:1951:25: 'I_' ( RULE_INT | RULE_STRING | RULE_ID )+ + { + match("I_"); + + // InternalParser.g:1951:30: ( RULE_INT | RULE_STRING | RULE_ID )+ + int cnt1=0; + loop1: + do { + int alt1=4; + switch ( input.LA(1) ) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + alt1=1; + } + break; + case '\"': + case '\'': + { + alt1=2; + } + break; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case '^': + case '_': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': + { + alt1=3; + } + break; + + } + + switch (alt1) { + case 1 : + // InternalParser.g:1951:31: RULE_INT + { + mRULE_INT(); + + } + break; + case 2 : + // InternalParser.g:1951:40: RULE_STRING + { + mRULE_STRING(); + + } + break; + case 3 : + // InternalParser.g:1951:52: RULE_ID + { + mRULE_ID(); + + } + break; + + default : + if ( cnt1 >= 1 ) break loop1; + EarlyExitException eee = + new EarlyExitException(1, input); + throw eee; + } + cnt1++; + } while (true); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "RULE_INITIALSTATENAME" + + // $ANTLR start "RULE_FINALSTATENAME" + public final void mRULE_FINALSTATENAME() throws RecognitionException { + try { + int _type = RULE_FINALSTATENAME; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalParser.g:1953:21: ( 'F_' ( RULE_INT | RULE_STRING | RULE_ID )+ ) + // InternalParser.g:1953:23: 'F_' ( RULE_INT | RULE_STRING | RULE_ID )+ + { + match("F_"); + + // InternalParser.g:1953:28: ( RULE_INT | RULE_STRING | RULE_ID )+ + int cnt2=0; + loop2: + do { + int alt2=4; + switch ( input.LA(1) ) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + alt2=1; + } + break; + case '\"': + case '\'': + { + alt2=2; + } + break; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case '^': + case '_': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': + { + alt2=3; + } + break; + + } + + switch (alt2) { + case 1 : + // InternalParser.g:1953:29: RULE_INT + { + mRULE_INT(); + + } + break; + case 2 : + // InternalParser.g:1953:38: RULE_STRING + { + mRULE_STRING(); + + } + break; + case 3 : + // InternalParser.g:1953:50: RULE_ID + { + mRULE_ID(); + + } + break; + + default : + if ( cnt2 >= 1 ) break loop2; + EarlyExitException eee = + new EarlyExitException(2, input); + throw eee; + } + cnt2++; + } while (true); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "RULE_FINALSTATENAME" + + // $ANTLR start "RULE_CALL" + public final void mRULE_CALL() throws RecognitionException { + try { + int _type = RULE_CALL; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalParser.g:1955:11: ( RULE_ID ( '.' RULE_ID )+ ) + // InternalParser.g:1955:13: RULE_ID ( '.' RULE_ID )+ + { + mRULE_ID(); + // InternalParser.g:1955:21: ( '.' RULE_ID )+ + int cnt3=0; + loop3: + do { + int alt3=2; + int LA3_0 = input.LA(1); + + if ( (LA3_0=='.') ) { + alt3=1; + } + + + switch (alt3) { + case 1 : + // InternalParser.g:1955:22: '.' RULE_ID + { + match('.'); + mRULE_ID(); + + } + break; + + default : + if ( cnt3 >= 1 ) break loop3; + EarlyExitException eee = + new EarlyExitException(3, input); + throw eee; + } + cnt3++; + } while (true); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "RULE_CALL" + + // $ANTLR start "RULE_ID" + public final void mRULE_ID() throws RecognitionException { + try { + int _type = RULE_ID; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalParser.g:1957:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* ) + // InternalParser.g:1957:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* + { + // InternalParser.g:1957:11: ( '^' )? + int alt4=2; + int LA4_0 = input.LA(1); + + if ( (LA4_0=='^') ) { + alt4=1; + } + switch (alt4) { + case 1 : + // InternalParser.g:1957:11: '^' + { + match('^'); + + } + break; + + } + + if ( (input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + // InternalParser.g:1957:40: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* + loop5: + do { + int alt5=2; + int LA5_0 = input.LA(1); + + if ( ((LA5_0>='0' && LA5_0<='9')||(LA5_0>='A' && LA5_0<='Z')||LA5_0=='_'||(LA5_0>='a' && LA5_0<='z')) ) { + alt5=1; + } + + + switch (alt5) { + case 1 : + // InternalParser.g: + { + if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + + } + break; + + default : + break loop5; + } + } while (true); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "RULE_ID" + + // $ANTLR start "RULE_INT" + public final void mRULE_INT() throws RecognitionException { + try { + // InternalParser.g:1959:19: ( ( '0' .. '9' )+ ) + // InternalParser.g:1959:21: ( '0' .. '9' )+ + { + // InternalParser.g:1959:21: ( '0' .. '9' )+ + int cnt6=0; + loop6: + do { + int alt6=2; + int LA6_0 = input.LA(1); + + if ( ((LA6_0>='0' && LA6_0<='9')) ) { + alt6=1; + } + + + switch (alt6) { + case 1 : + // InternalParser.g:1959:22: '0' .. '9' + { + matchRange('0','9'); + + } + break; + + default : + if ( cnt6 >= 1 ) break loop6; + EarlyExitException eee = + new EarlyExitException(6, input); + throw eee; + } + cnt6++; + } while (true); + + + } + + } + finally { + } + } + // $ANTLR end "RULE_INT" + + // $ANTLR start "RULE_STRING" + public final void mRULE_STRING() throws RecognitionException { + try { + int _type = RULE_STRING; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalParser.g:1961:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) ) + // InternalParser.g:1961:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) + { + // InternalParser.g:1961:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) + int alt9=2; + int LA9_0 = input.LA(1); + + if ( (LA9_0=='\"') ) { + alt9=1; + } + else if ( (LA9_0=='\'') ) { + alt9=2; + } + else { + NoViableAltException nvae = + new NoViableAltException("", 9, 0, input); + + throw nvae; + } + switch (alt9) { + case 1 : + // InternalParser.g:1961:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' + { + match('\"'); + // InternalParser.g:1961:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* + loop7: + do { + int alt7=3; + int LA7_0 = input.LA(1); + + if ( (LA7_0=='\\') ) { + alt7=1; + } + else if ( ((LA7_0>='\u0000' && LA7_0<='!')||(LA7_0>='#' && LA7_0<='[')||(LA7_0>=']' && LA7_0<='\uFFFF')) ) { + alt7=2; + } + + + switch (alt7) { + case 1 : + // InternalParser.g:1961:21: '\\\\' . + { + match('\\'); + matchAny(); + + } + break; + case 2 : + // InternalParser.g:1961:28: ~ ( ( '\\\\' | '\"' ) ) + { + if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + + } + break; + + default : + break loop7; + } + } while (true); + + match('\"'); + + } + break; + case 2 : + // InternalParser.g:1961:48: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' + { + match('\''); + // InternalParser.g:1961:53: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* + loop8: + do { + int alt8=3; + int LA8_0 = input.LA(1); + + if ( (LA8_0=='\\') ) { + alt8=1; + } + else if ( ((LA8_0>='\u0000' && LA8_0<='&')||(LA8_0>='(' && LA8_0<='[')||(LA8_0>=']' && LA8_0<='\uFFFF')) ) { + alt8=2; + } + + + switch (alt8) { + case 1 : + // InternalParser.g:1961:54: '\\\\' . + { + match('\\'); + matchAny(); + + } + break; + case 2 : + // InternalParser.g:1961:61: ~ ( ( '\\\\' | '\\'' ) ) + { + if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + + } + break; + + default : + break loop8; + } + } while (true); + + match('\''); + + } + break; + + } + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "RULE_STRING" + + // $ANTLR start "RULE_ML_COMMENT" + public final void mRULE_ML_COMMENT() throws RecognitionException { + try { + int _type = RULE_ML_COMMENT; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalParser.g:1963:17: ( '/*' ( options {greedy=false; } : . )* '*/' ) + // InternalParser.g:1963:19: '/*' ( options {greedy=false; } : . )* '*/' + { + match("/*"); + + // InternalParser.g:1963:24: ( options {greedy=false; } : . )* + loop10: + do { + int alt10=2; + int LA10_0 = input.LA(1); + + if ( (LA10_0=='*') ) { + int LA10_1 = input.LA(2); + + if ( (LA10_1=='/') ) { + alt10=2; + } + else if ( ((LA10_1>='\u0000' && LA10_1<='.')||(LA10_1>='0' && LA10_1<='\uFFFF')) ) { + alt10=1; + } + + + } + else if ( ((LA10_0>='\u0000' && LA10_0<=')')||(LA10_0>='+' && LA10_0<='\uFFFF')) ) { + alt10=1; + } + + + switch (alt10) { + case 1 : + // InternalParser.g:1963:52: . + { + matchAny(); + + } + break; + + default : + break loop10; + } + } while (true); + + match("*/"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "RULE_ML_COMMENT" + + // $ANTLR start "RULE_SL_COMMENT" + public final void mRULE_SL_COMMENT() throws RecognitionException { + try { + int _type = RULE_SL_COMMENT; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalParser.g:1965:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? ) + // InternalParser.g:1965:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? + { + match("//"); + + // InternalParser.g:1965:24: (~ ( ( '\\n' | '\\r' ) ) )* + loop11: + do { + int alt11=2; + int LA11_0 = input.LA(1); + + if ( ((LA11_0>='\u0000' && LA11_0<='\t')||(LA11_0>='\u000B' && LA11_0<='\f')||(LA11_0>='\u000E' && LA11_0<='\uFFFF')) ) { + alt11=1; + } + + + switch (alt11) { + case 1 : + // InternalParser.g:1965:24: ~ ( ( '\\n' | '\\r' ) ) + { + if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFF') ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + + } + break; + + default : + break loop11; + } + } while (true); + + // InternalParser.g:1965:40: ( ( '\\r' )? '\\n' )? + int alt13=2; + int LA13_0 = input.LA(1); + + if ( (LA13_0=='\n'||LA13_0=='\r') ) { + alt13=1; + } + switch (alt13) { + case 1 : + // InternalParser.g:1965:41: ( '\\r' )? '\\n' + { + // InternalParser.g:1965:41: ( '\\r' )? + int alt12=2; + int LA12_0 = input.LA(1); + + if ( (LA12_0=='\r') ) { + alt12=1; + } + switch (alt12) { + case 1 : + // InternalParser.g:1965:41: '\\r' + { + match('\r'); + + } + break; + + } + + match('\n'); + + } + break; + + } + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "RULE_SL_COMMENT" + + // $ANTLR start "RULE_WS" + public final void mRULE_WS() throws RecognitionException { + try { + int _type = RULE_WS; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalParser.g:1967:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ ) + // InternalParser.g:1967:11: ( ' ' | '\\t' | '\\r' | '\\n' )+ + { + // InternalParser.g:1967:11: ( ' ' | '\\t' | '\\r' | '\\n' )+ + int cnt14=0; + loop14: + do { + int alt14=2; + int LA14_0 = input.LA(1); + + if ( ((LA14_0>='\t' && LA14_0<='\n')||LA14_0=='\r'||LA14_0==' ') ) { + alt14=1; + } + + + switch (alt14) { + case 1 : + // InternalParser.g: + { + if ( (input.LA(1)>='\t' && input.LA(1)<='\n')||input.LA(1)=='\r'||input.LA(1)==' ' ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + + } + break; + + default : + if ( cnt14 >= 1 ) break loop14; + EarlyExitException eee = + new EarlyExitException(14, input); + throw eee; + } + cnt14++; + } while (true); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "RULE_WS" + + // $ANTLR start "RULE_ANY_OTHER" + public final void mRULE_ANY_OTHER() throws RecognitionException { + try { + int _type = RULE_ANY_OTHER; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalParser.g:1969:16: ( . ) + // InternalParser.g:1969:18: . + { + matchAny(); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "RULE_ANY_OTHER" + + public void mTokens() throws RecognitionException { + // InternalParser.g:1:8: ( T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | RULE_INITIALSTATENAME | RULE_FINALSTATENAME | RULE_CALL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER ) + int alt15=23; + alt15 = dfa15.predict(input); + switch (alt15) { + case 1 : + // InternalParser.g:1:10: T__14 + { + mT__14(); + + } + break; + case 2 : + // InternalParser.g:1:16: T__15 + { + mT__15(); + + } + break; + case 3 : + // InternalParser.g:1:22: T__16 + { + mT__16(); + + } + break; + case 4 : + // InternalParser.g:1:28: T__17 + { + mT__17(); + + } + break; + case 5 : + // InternalParser.g:1:34: T__18 + { + mT__18(); + + } + break; + case 6 : + // InternalParser.g:1:40: T__19 + { + mT__19(); + + } + break; + case 7 : + // InternalParser.g:1:46: T__20 + { + mT__20(); + + } + break; + case 8 : + // InternalParser.g:1:52: T__21 + { + mT__21(); + + } + break; + case 9 : + // InternalParser.g:1:58: T__22 + { + mT__22(); + + } + break; + case 10 : + // InternalParser.g:1:64: T__23 + { + mT__23(); + + } + break; + case 11 : + // InternalParser.g:1:70: T__24 + { + mT__24(); + + } + break; + case 12 : + // InternalParser.g:1:76: T__25 + { + mT__25(); + + } + break; + case 13 : + // InternalParser.g:1:82: T__26 + { + mT__26(); + + } + break; + case 14 : + // InternalParser.g:1:88: T__27 + { + mT__27(); + + } + break; + case 15 : + // InternalParser.g:1:94: RULE_INITIALSTATENAME + { + mRULE_INITIALSTATENAME(); + + } + break; + case 16 : + // InternalParser.g:1:116: RULE_FINALSTATENAME + { + mRULE_FINALSTATENAME(); + + } + break; + case 17 : + // InternalParser.g:1:136: RULE_CALL + { + mRULE_CALL(); + + } + break; + case 18 : + // InternalParser.g:1:146: RULE_ID + { + mRULE_ID(); + + } + break; + case 19 : + // InternalParser.g:1:154: RULE_STRING + { + mRULE_STRING(); + + } + break; + case 20 : + // InternalParser.g:1:166: RULE_ML_COMMENT + { + mRULE_ML_COMMENT(); + + } + break; + case 21 : + // InternalParser.g:1:182: RULE_SL_COMMENT + { + mRULE_SL_COMMENT(); + + } + break; + case 22 : + // InternalParser.g:1:198: RULE_WS + { + mRULE_WS(); + + } + break; + case 23 : + // InternalParser.g:1:206: RULE_ANY_OTHER + { + mRULE_ANY_OTHER(); + + } + break; + + } + + } + + + protected DFA15 dfa15 = new DFA15(this); + static final String DFA15_eotS = + "\1\uffff\1\25\2\uffff\3\25\1\36\2\uffff\1\43\2\25\1\22\1\25\2\22\2\uffff\2\25\4\uffff\4\25\7\uffff\3\25\2\uffff\3\25\1\71\1\25\1\uffff\2\61\1\uffff\1\63\1\uffff\1\63\4\25\1\uffff\1\25\2\61\2\63\1\25\1\105\1\106\1\25\1\uffff\1\25\3\uffff\5\25\1\116\1\uffff"; + static final String DFA15_eofS = + "\117\uffff"; + static final String DFA15_minS = + "\1\0\1\56\2\uffff\3\56\1\76\2\uffff\1\52\2\56\1\101\1\56\2\0\2\uffff\2\56\4\uffff\4\56\7\uffff\2\42\1\56\2\uffff\5\56\1\uffff\2\56\1\uffff\1\56\1\uffff\5\56\1\uffff\11\56\1\uffff\1\56\3\uffff\6\56\1\uffff"; + static final String DFA15_maxS = + "\1\uffff\1\172\2\uffff\3\172\1\76\2\uffff\1\57\4\172\2\uffff\2\uffff\2\172\4\uffff\4\172\7\uffff\3\172\2\uffff\5\172\1\uffff\2\172\1\uffff\1\172\1\uffff\5\172\1\uffff\11\172\1\uffff\1\172\3\uffff\6\172\1\uffff"; + static final String DFA15_acceptS = + "\2\uffff\1\2\1\3\4\uffff\1\14\1\15\7\uffff\1\26\1\27\2\uffff\1\22\1\21\1\2\1\3\4\uffff\1\13\1\12\1\14\1\15\1\24\1\25\1\16\3\uffff\1\23\1\26\5\uffff\1\6\2\uffff\1\17\1\uffff\1\20\5\uffff\1\10\11\uffff\1\7\1\uffff\1\4\1\11\1\5\6\uffff\1\1"; + static final String DFA15_specialS = + "\1\0\16\uffff\1\1\1\2\76\uffff}>"; + static final String[] DFA15_transitionS = { + "\11\22\2\21\2\22\1\21\22\22\1\21\1\22\1\17\4\22\1\20\5\22\1\7\1\22\1\12\21\22\5\16\1\14\2\16\1\13\11\16\1\1\7\16\1\10\1\22\1\11\1\15\1\16\1\22\3\16\1\6\1\5\15\16\1\4\7\16\1\2\1\22\1\3\uff82\22", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\23\24\1\23\6\24", + "", + "", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\23\24\1\31\6\24", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\15\24\1\32\11\24\1\33\2\24", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\16\24\1\34\13\24", + "\1\35", + "", + "", + "\1\41\4\uffff\1\42", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\44\1\uffff\32\24", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\45\1\uffff\32\24", + "\32\46\4\uffff\1\46\1\uffff\32\46", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\32\24", + "\0\47", + "\0\47", + "", + "", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\1\51\31\24", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\32\24", + "", + "", + "", + "", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\1\52\31\24", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\3\24\1\54\17\24\1\53\6\24", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\10\24\1\55\21\24", + "\1\26\1\uffff\12\24\1\56\6\uffff\32\24\4\uffff\1\24\1\uffff\32\24", + "", + "", + "", + "", + "", + "", + "", + "\1\61\4\uffff\1\61\6\uffff\1\26\1\uffff\12\57\7\uffff\32\60\3\uffff\1\61\1\60\1\uffff\32\60", + "\1\63\4\uffff\1\63\6\uffff\1\26\1\uffff\12\62\7\uffff\32\64\3\uffff\1\63\1\64\1\uffff\32\64", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\32\24", + "", + "", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\23\24\1\65\6\24", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\21\24\1\67\1\24\1\66\6\24", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\21\24\1\70\10\24", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\32\24", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\23\24\1\72\6\24", + "", + "\1\26\1\uffff\12\57\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60", + "\1\26\1\uffff\12\73\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74", + "", + "\1\26\1\uffff\12\62\7\uffff\32\64\4\uffff\1\64\1\uffff\32\64", + "", + "\1\26\1\uffff\12\75\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\4\24\1\77\25\24", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\4\24\1\100\25\24", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\23\24\1\101\6\24", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\30\24\1\102\1\24", + "", + "\1\26\1\uffff\12\24\1\103\6\uffff\32\24\4\uffff\1\24\1\uffff\32\24", + "\1\26\1\uffff\12\73\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74", + "\1\26\1\uffff\12\73\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74", + "\1\26\1\uffff\12\75\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76", + "\1\26\1\uffff\12\75\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76", + "\1\26\1\uffff\12\24\7\uffff\14\24\1\104\15\24\4\uffff\1\24\1\uffff\32\24", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\32\24", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\32\24", + "\1\26\1\uffff\12\24\1\107\6\uffff\32\24\4\uffff\1\24\1\uffff\32\24", + "", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\1\110\31\24", + "", + "", + "", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\2\24\1\111\27\24", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\7\24\1\112\22\24", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\10\24\1\113\21\24", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\15\24\1\114\14\24", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\4\24\1\115\25\24", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\32\24", + "" + }; + + static final short[] DFA15_eot = DFA.unpackEncodedString(DFA15_eotS); + static final short[] DFA15_eof = DFA.unpackEncodedString(DFA15_eofS); + static final char[] DFA15_min = DFA.unpackEncodedStringToUnsignedChars(DFA15_minS); + static final char[] DFA15_max = DFA.unpackEncodedStringToUnsignedChars(DFA15_maxS); + static final short[] DFA15_accept = DFA.unpackEncodedString(DFA15_acceptS); + static final short[] DFA15_special = DFA.unpackEncodedString(DFA15_specialS); + static final short[][] DFA15_transition; + + static { + int numStates = DFA15_transitionS.length; + DFA15_transition = new short[numStates][]; + for (int i=0; i<numStates; i++) { + DFA15_transition[i] = DFA.unpackEncodedString(DFA15_transitionS[i]); + } + } + + class DFA15 extends DFA { + + public DFA15(BaseRecognizer recognizer) { + this.recognizer = recognizer; + this.decisionNumber = 15; + this.eot = DFA15_eot; + this.eof = DFA15_eof; + this.min = DFA15_min; + this.max = DFA15_max; + this.accept = DFA15_accept; + this.special = DFA15_special; + this.transition = DFA15_transition; + } + public String getDescription() { + return "1:1: Tokens : ( T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | RULE_INITIALSTATENAME | RULE_FINALSTATENAME | RULE_CALL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );"; + } + public int specialStateTransition(int s, IntStream _input) throws NoViableAltException { + IntStream input = _input; + int _s = s; + switch ( s ) { + case 0 : + int LA15_0 = input.LA(1); + + s = -1; + if ( (LA15_0=='S') ) {s = 1;} + + else if ( (LA15_0=='{') ) {s = 2;} + + else if ( (LA15_0=='}') ) {s = 3;} + + else if ( (LA15_0=='s') ) {s = 4;} + + else if ( (LA15_0=='e') ) {s = 5;} + + else if ( (LA15_0=='d') ) {s = 6;} + + else if ( (LA15_0=='-') ) {s = 7;} + + else if ( (LA15_0=='[') ) {s = 8;} + + else if ( (LA15_0==']') ) {s = 9;} + + else if ( (LA15_0=='/') ) {s = 10;} + + else if ( (LA15_0=='I') ) {s = 11;} + + else if ( (LA15_0=='F') ) {s = 12;} + + else if ( (LA15_0=='^') ) {s = 13;} + + else if ( ((LA15_0>='A' && LA15_0<='E')||(LA15_0>='G' && LA15_0<='H')||(LA15_0>='J' && LA15_0<='R')||(LA15_0>='T' && LA15_0<='Z')||LA15_0=='_'||(LA15_0>='a' && LA15_0<='c')||(LA15_0>='f' && LA15_0<='r')||(LA15_0>='t' && LA15_0<='z')) ) {s = 14;} + + else if ( (LA15_0=='\"') ) {s = 15;} + + else if ( (LA15_0=='\'') ) {s = 16;} + + else if ( ((LA15_0>='\t' && LA15_0<='\n')||LA15_0=='\r'||LA15_0==' ') ) {s = 17;} + + else if ( ((LA15_0>='\u0000' && LA15_0<='\b')||(LA15_0>='\u000B' && LA15_0<='\f')||(LA15_0>='\u000E' && LA15_0<='\u001F')||LA15_0=='!'||(LA15_0>='#' && LA15_0<='&')||(LA15_0>='(' && LA15_0<=',')||LA15_0=='.'||(LA15_0>='0' && LA15_0<='@')||LA15_0=='\\'||LA15_0=='`'||LA15_0=='|'||(LA15_0>='~' && LA15_0<='\uFFFF')) ) {s = 18;} + + if ( s>=0 ) return s; + break; + case 1 : + int LA15_15 = input.LA(1); + + s = -1; + if ( ((LA15_15>='\u0000' && LA15_15<='\uFFFF')) ) {s = 39;} + + else s = 18; + + if ( s>=0 ) return s; + break; + case 2 : + int LA15_16 = input.LA(1); + + s = -1; + if ( ((LA15_16>='\u0000' && LA15_16<='\uFFFF')) ) {s = 39;} + + else s = 18; + + if ( s>=0 ) return s; + break; + } + NoViableAltException nvae = + new NoViableAltException(getDescription(), 15, _s, input); + error(nvae); + throw nvae; + } + } + + +} \ No newline at end of file diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/src-gen/swt/most/statemachine/xtext/ide/contentassist/antlr/internal/InternalParserParser.java b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/src-gen/swt/most/statemachine/xtext/ide/contentassist/antlr/internal/InternalParserParser.java new file mode 100644 index 0000000000000000000000000000000000000000..39f49e9c6959679d2843dc73de10073fb9240c75 --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/src-gen/swt/most/statemachine/xtext/ide/contentassist/antlr/internal/InternalParserParser.java @@ -0,0 +1,5786 @@ +package swt.most.statemachine.xtext.ide.contentassist.antlr.internal; + +import java.io.InputStream; +import org.eclipse.xtext.*; +import org.eclipse.xtext.parser.*; +import org.eclipse.xtext.parser.impl.*; +import org.eclipse.emf.ecore.util.EcoreUtil; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.xtext.parser.antlr.XtextTokenStream; +import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens; +import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser; +import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.DFA; +import swt.most.statemachine.xtext.services.ParserGrammarAccess; + + + +import org.antlr.runtime.*; +import java.util.Stack; +import java.util.List; +import java.util.ArrayList; + +@SuppressWarnings("all") +public class InternalParserParser extends AbstractInternalContentAssistParser { + public static final String[] tokenNames = new String[] { + "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_STRING", "RULE_ID", "RULE_CALL", "RULE_INITIALSTATENAME", "RULE_FINALSTATENAME", "RULE_INT", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'StateMachine'", "'{'", "'}'", "'state'", "'entry:'", "'do:'", "'exit:'", "'end'", "'start'", "'-'", "'->'", "'['", "']'", "'/'" + }; + public static final int RULE_STRING=4; + public static final int RULE_INITIALSTATENAME=7; + public static final int RULE_SL_COMMENT=11; + public static final int T__19=19; + public static final int T__15=15; + public static final int T__16=16; + public static final int T__17=17; + public static final int T__18=18; + public static final int T__14=14; + public static final int EOF=-1; + public static final int RULE_CALL=6; + public static final int RULE_ID=5; + public static final int RULE_WS=12; + public static final int RULE_ANY_OTHER=13; + public static final int T__26=26; + public static final int T__27=27; + public static final int RULE_FINALSTATENAME=8; + public static final int RULE_INT=9; + public static final int T__22=22; + public static final int RULE_ML_COMMENT=10; + public static final int T__23=23; + public static final int T__24=24; + public static final int T__25=25; + public static final int T__20=20; + public static final int T__21=21; + + // delegates + // delegators + + + public InternalParserParser(TokenStream input) { + this(input, new RecognizerSharedState()); + } + public InternalParserParser(TokenStream input, RecognizerSharedState state) { + super(input, state); + + } + + + public String[] getTokenNames() { return InternalParserParser.tokenNames; } + public String getGrammarFileName() { return "InternalParser.g"; } + + + private ParserGrammarAccess grammarAccess; + + public void setGrammarAccess(ParserGrammarAccess grammarAccess) { + this.grammarAccess = grammarAccess; + } + + @Override + protected Grammar getGrammar() { + return grammarAccess.getGrammar(); + } + + @Override + protected String getValueForTokenName(String tokenName) { + return tokenName; + } + + + + // $ANTLR start "entryRuleStateMachine" + // InternalParser.g:53:1: entryRuleStateMachine : ruleStateMachine EOF ; + public final void entryRuleStateMachine() throws RecognitionException { + try { + // InternalParser.g:54:1: ( ruleStateMachine EOF ) + // InternalParser.g:55:1: ruleStateMachine EOF + { + before(grammarAccess.getStateMachineRule()); + pushFollow(FOLLOW_1); + ruleStateMachine(); + + state._fsp--; + + after(grammarAccess.getStateMachineRule()); + match(input,EOF,FOLLOW_2); + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "entryRuleStateMachine" + + + // $ANTLR start "ruleStateMachine" + // InternalParser.g:62:1: ruleStateMachine : ( ( rule__StateMachine__Group__0 ) ) ; + public final void ruleStateMachine() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:66:2: ( ( ( rule__StateMachine__Group__0 ) ) ) + // InternalParser.g:67:2: ( ( rule__StateMachine__Group__0 ) ) + { + // InternalParser.g:67:2: ( ( rule__StateMachine__Group__0 ) ) + // InternalParser.g:68:3: ( rule__StateMachine__Group__0 ) + { + before(grammarAccess.getStateMachineAccess().getGroup()); + // InternalParser.g:69:3: ( rule__StateMachine__Group__0 ) + // InternalParser.g:69:4: rule__StateMachine__Group__0 + { + pushFollow(FOLLOW_2); + rule__StateMachine__Group__0(); + + state._fsp--; + + + } + + after(grammarAccess.getStateMachineAccess().getGroup()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "ruleStateMachine" + + + // $ANTLR start "entryRuleNormalState" + // InternalParser.g:78:1: entryRuleNormalState : ruleNormalState EOF ; + public final void entryRuleNormalState() throws RecognitionException { + try { + // InternalParser.g:79:1: ( ruleNormalState EOF ) + // InternalParser.g:80:1: ruleNormalState EOF + { + before(grammarAccess.getNormalStateRule()); + pushFollow(FOLLOW_1); + ruleNormalState(); + + state._fsp--; + + after(grammarAccess.getNormalStateRule()); + match(input,EOF,FOLLOW_2); + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "entryRuleNormalState" + + + // $ANTLR start "ruleNormalState" + // InternalParser.g:87:1: ruleNormalState : ( ( rule__NormalState__Group__0 ) ) ; + public final void ruleNormalState() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:91:2: ( ( ( rule__NormalState__Group__0 ) ) ) + // InternalParser.g:92:2: ( ( rule__NormalState__Group__0 ) ) + { + // InternalParser.g:92:2: ( ( rule__NormalState__Group__0 ) ) + // InternalParser.g:93:3: ( rule__NormalState__Group__0 ) + { + before(grammarAccess.getNormalStateAccess().getGroup()); + // InternalParser.g:94:3: ( rule__NormalState__Group__0 ) + // InternalParser.g:94:4: rule__NormalState__Group__0 + { + pushFollow(FOLLOW_2); + rule__NormalState__Group__0(); + + state._fsp--; + + + } + + after(grammarAccess.getNormalStateAccess().getGroup()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "ruleNormalState" + + + // $ANTLR start "entryRuleFinalState" + // InternalParser.g:103:1: entryRuleFinalState : ruleFinalState EOF ; + public final void entryRuleFinalState() throws RecognitionException { + try { + // InternalParser.g:104:1: ( ruleFinalState EOF ) + // InternalParser.g:105:1: ruleFinalState EOF + { + before(grammarAccess.getFinalStateRule()); + pushFollow(FOLLOW_1); + ruleFinalState(); + + state._fsp--; + + after(grammarAccess.getFinalStateRule()); + match(input,EOF,FOLLOW_2); + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "entryRuleFinalState" + + + // $ANTLR start "ruleFinalState" + // InternalParser.g:112:1: ruleFinalState : ( ( rule__FinalState__Group__0 ) ) ; + public final void ruleFinalState() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:116:2: ( ( ( rule__FinalState__Group__0 ) ) ) + // InternalParser.g:117:2: ( ( rule__FinalState__Group__0 ) ) + { + // InternalParser.g:117:2: ( ( rule__FinalState__Group__0 ) ) + // InternalParser.g:118:3: ( rule__FinalState__Group__0 ) + { + before(grammarAccess.getFinalStateAccess().getGroup()); + // InternalParser.g:119:3: ( rule__FinalState__Group__0 ) + // InternalParser.g:119:4: rule__FinalState__Group__0 + { + pushFollow(FOLLOW_2); + rule__FinalState__Group__0(); + + state._fsp--; + + + } + + after(grammarAccess.getFinalStateAccess().getGroup()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "ruleFinalState" + + + // $ANTLR start "entryRuleInitialState" + // InternalParser.g:128:1: entryRuleInitialState : ruleInitialState EOF ; + public final void entryRuleInitialState() throws RecognitionException { + try { + // InternalParser.g:129:1: ( ruleInitialState EOF ) + // InternalParser.g:130:1: ruleInitialState EOF + { + before(grammarAccess.getInitialStateRule()); + pushFollow(FOLLOW_1); + ruleInitialState(); + + state._fsp--; + + after(grammarAccess.getInitialStateRule()); + match(input,EOF,FOLLOW_2); + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "entryRuleInitialState" + + + // $ANTLR start "ruleInitialState" + // InternalParser.g:137:1: ruleInitialState : ( ( rule__InitialState__Group__0 ) ) ; + public final void ruleInitialState() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:141:2: ( ( ( rule__InitialState__Group__0 ) ) ) + // InternalParser.g:142:2: ( ( rule__InitialState__Group__0 ) ) + { + // InternalParser.g:142:2: ( ( rule__InitialState__Group__0 ) ) + // InternalParser.g:143:3: ( rule__InitialState__Group__0 ) + { + before(grammarAccess.getInitialStateAccess().getGroup()); + // InternalParser.g:144:3: ( rule__InitialState__Group__0 ) + // InternalParser.g:144:4: rule__InitialState__Group__0 + { + pushFollow(FOLLOW_2); + rule__InitialState__Group__0(); + + state._fsp--; + + + } + + after(grammarAccess.getInitialStateAccess().getGroup()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "ruleInitialState" + + + // $ANTLR start "entryRuleTransition" + // InternalParser.g:153:1: entryRuleTransition : ruleTransition EOF ; + public final void entryRuleTransition() throws RecognitionException { + try { + // InternalParser.g:154:1: ( ruleTransition EOF ) + // InternalParser.g:155:1: ruleTransition EOF + { + before(grammarAccess.getTransitionRule()); + pushFollow(FOLLOW_1); + ruleTransition(); + + state._fsp--; + + after(grammarAccess.getTransitionRule()); + match(input,EOF,FOLLOW_2); + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "entryRuleTransition" + + + // $ANTLR start "ruleTransition" + // InternalParser.g:162:1: ruleTransition : ( ( rule__Transition__Group__0 ) ) ; + public final void ruleTransition() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:166:2: ( ( ( rule__Transition__Group__0 ) ) ) + // InternalParser.g:167:2: ( ( rule__Transition__Group__0 ) ) + { + // InternalParser.g:167:2: ( ( rule__Transition__Group__0 ) ) + // InternalParser.g:168:3: ( rule__Transition__Group__0 ) + { + before(grammarAccess.getTransitionAccess().getGroup()); + // InternalParser.g:169:3: ( rule__Transition__Group__0 ) + // InternalParser.g:169:4: rule__Transition__Group__0 + { + pushFollow(FOLLOW_2); + rule__Transition__Group__0(); + + state._fsp--; + + + } + + after(grammarAccess.getTransitionAccess().getGroup()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "ruleTransition" + + + // $ANTLR start "entryRuleAction" + // InternalParser.g:178:1: entryRuleAction : ruleAction EOF ; + public final void entryRuleAction() throws RecognitionException { + try { + // InternalParser.g:179:1: ( ruleAction EOF ) + // InternalParser.g:180:1: ruleAction EOF + { + before(grammarAccess.getActionRule()); + pushFollow(FOLLOW_1); + ruleAction(); + + state._fsp--; + + after(grammarAccess.getActionRule()); + match(input,EOF,FOLLOW_2); + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "entryRuleAction" + + + // $ANTLR start "ruleAction" + // InternalParser.g:187:1: ruleAction : ( ( rule__Action__Group__0 ) ) ; + public final void ruleAction() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:191:2: ( ( ( rule__Action__Group__0 ) ) ) + // InternalParser.g:192:2: ( ( rule__Action__Group__0 ) ) + { + // InternalParser.g:192:2: ( ( rule__Action__Group__0 ) ) + // InternalParser.g:193:3: ( rule__Action__Group__0 ) + { + before(grammarAccess.getActionAccess().getGroup()); + // InternalParser.g:194:3: ( rule__Action__Group__0 ) + // InternalParser.g:194:4: rule__Action__Group__0 + { + pushFollow(FOLLOW_2); + rule__Action__Group__0(); + + state._fsp--; + + + } + + after(grammarAccess.getActionAccess().getGroup()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "ruleAction" + + + // $ANTLR start "entryRuleTrigger" + // InternalParser.g:203:1: entryRuleTrigger : ruleTrigger EOF ; + public final void entryRuleTrigger() throws RecognitionException { + try { + // InternalParser.g:204:1: ( ruleTrigger EOF ) + // InternalParser.g:205:1: ruleTrigger EOF + { + before(grammarAccess.getTriggerRule()); + pushFollow(FOLLOW_1); + ruleTrigger(); + + state._fsp--; + + after(grammarAccess.getTriggerRule()); + match(input,EOF,FOLLOW_2); + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "entryRuleTrigger" + + + // $ANTLR start "ruleTrigger" + // InternalParser.g:212:1: ruleTrigger : ( ( rule__Trigger__Group__0 ) ) ; + public final void ruleTrigger() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:216:2: ( ( ( rule__Trigger__Group__0 ) ) ) + // InternalParser.g:217:2: ( ( rule__Trigger__Group__0 ) ) + { + // InternalParser.g:217:2: ( ( rule__Trigger__Group__0 ) ) + // InternalParser.g:218:3: ( rule__Trigger__Group__0 ) + { + before(grammarAccess.getTriggerAccess().getGroup()); + // InternalParser.g:219:3: ( rule__Trigger__Group__0 ) + // InternalParser.g:219:4: rule__Trigger__Group__0 + { + pushFollow(FOLLOW_2); + rule__Trigger__Group__0(); + + state._fsp--; + + + } + + after(grammarAccess.getTriggerAccess().getGroup()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "ruleTrigger" + + + // $ANTLR start "entryRuleGuard" + // InternalParser.g:228:1: entryRuleGuard : ruleGuard EOF ; + public final void entryRuleGuard() throws RecognitionException { + try { + // InternalParser.g:229:1: ( ruleGuard EOF ) + // InternalParser.g:230:1: ruleGuard EOF + { + before(grammarAccess.getGuardRule()); + pushFollow(FOLLOW_1); + ruleGuard(); + + state._fsp--; + + after(grammarAccess.getGuardRule()); + match(input,EOF,FOLLOW_2); + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "entryRuleGuard" + + + // $ANTLR start "ruleGuard" + // InternalParser.g:237:1: ruleGuard : ( ( rule__Guard__Group__0 ) ) ; + public final void ruleGuard() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:241:2: ( ( ( rule__Guard__Group__0 ) ) ) + // InternalParser.g:242:2: ( ( rule__Guard__Group__0 ) ) + { + // InternalParser.g:242:2: ( ( rule__Guard__Group__0 ) ) + // InternalParser.g:243:3: ( rule__Guard__Group__0 ) + { + before(grammarAccess.getGuardAccess().getGroup()); + // InternalParser.g:244:3: ( rule__Guard__Group__0 ) + // InternalParser.g:244:4: rule__Guard__Group__0 + { + pushFollow(FOLLOW_2); + rule__Guard__Group__0(); + + state._fsp--; + + + } + + after(grammarAccess.getGuardAccess().getGroup()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "ruleGuard" + + + // $ANTLR start "entryRuleActivityContent" + // InternalParser.g:253:1: entryRuleActivityContent : ruleActivityContent EOF ; + public final void entryRuleActivityContent() throws RecognitionException { + try { + // InternalParser.g:254:1: ( ruleActivityContent EOF ) + // InternalParser.g:255:1: ruleActivityContent EOF + { + before(grammarAccess.getActivityContentRule()); + pushFollow(FOLLOW_1); + ruleActivityContent(); + + state._fsp--; + + after(grammarAccess.getActivityContentRule()); + match(input,EOF,FOLLOW_2); + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "entryRuleActivityContent" + + + // $ANTLR start "ruleActivityContent" + // InternalParser.g:262:1: ruleActivityContent : ( ( rule__ActivityContent__Alternatives ) ) ; + public final void ruleActivityContent() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:266:2: ( ( ( rule__ActivityContent__Alternatives ) ) ) + // InternalParser.g:267:2: ( ( rule__ActivityContent__Alternatives ) ) + { + // InternalParser.g:267:2: ( ( rule__ActivityContent__Alternatives ) ) + // InternalParser.g:268:3: ( rule__ActivityContent__Alternatives ) + { + before(grammarAccess.getActivityContentAccess().getAlternatives()); + // InternalParser.g:269:3: ( rule__ActivityContent__Alternatives ) + // InternalParser.g:269:4: rule__ActivityContent__Alternatives + { + pushFollow(FOLLOW_2); + rule__ActivityContent__Alternatives(); + + state._fsp--; + + + } + + after(grammarAccess.getActivityContentAccess().getAlternatives()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "ruleActivityContent" + + + // $ANTLR start "entryRuleEString" + // InternalParser.g:278:1: entryRuleEString : ruleEString EOF ; + public final void entryRuleEString() throws RecognitionException { + try { + // InternalParser.g:279:1: ( ruleEString EOF ) + // InternalParser.g:280:1: ruleEString EOF + { + before(grammarAccess.getEStringRule()); + pushFollow(FOLLOW_1); + ruleEString(); + + state._fsp--; + + after(grammarAccess.getEStringRule()); + match(input,EOF,FOLLOW_2); + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + } + return ; + } + // $ANTLR end "entryRuleEString" + + + // $ANTLR start "ruleEString" + // InternalParser.g:287:1: ruleEString : ( ( rule__EString__Alternatives ) ) ; + public final void ruleEString() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:291:2: ( ( ( rule__EString__Alternatives ) ) ) + // InternalParser.g:292:2: ( ( rule__EString__Alternatives ) ) + { + // InternalParser.g:292:2: ( ( rule__EString__Alternatives ) ) + // InternalParser.g:293:3: ( rule__EString__Alternatives ) + { + before(grammarAccess.getEStringAccess().getAlternatives()); + // InternalParser.g:294:3: ( rule__EString__Alternatives ) + // InternalParser.g:294:4: rule__EString__Alternatives + { + pushFollow(FOLLOW_2); + rule__EString__Alternatives(); + + state._fsp--; + + + } + + after(grammarAccess.getEStringAccess().getAlternatives()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "ruleEString" + + + // $ANTLR start "rule__StateMachine__Alternatives_5" + // InternalParser.g:302:1: rule__StateMachine__Alternatives_5 : ( ( ( rule__StateMachine__StatesAssignment_5_0 ) ) | ( ( rule__StateMachine__FinalstatesAssignment_5_1 ) ) | ( ( rule__StateMachine__TransitionsAssignment_5_2 ) ) ); + public final void rule__StateMachine__Alternatives_5() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:306:1: ( ( ( rule__StateMachine__StatesAssignment_5_0 ) ) | ( ( rule__StateMachine__FinalstatesAssignment_5_1 ) ) | ( ( rule__StateMachine__TransitionsAssignment_5_2 ) ) ) + int alt1=3; + switch ( input.LA(1) ) { + case 17: + { + alt1=1; + } + break; + case 21: + { + alt1=2; + } + break; + case RULE_STRING: + case RULE_ID: + case RULE_INITIALSTATENAME: + case RULE_FINALSTATENAME: + { + alt1=3; + } + break; + default: + NoViableAltException nvae = + new NoViableAltException("", 1, 0, input); + + throw nvae; + } + + switch (alt1) { + case 1 : + // InternalParser.g:307:2: ( ( rule__StateMachine__StatesAssignment_5_0 ) ) + { + // InternalParser.g:307:2: ( ( rule__StateMachine__StatesAssignment_5_0 ) ) + // InternalParser.g:308:3: ( rule__StateMachine__StatesAssignment_5_0 ) + { + before(grammarAccess.getStateMachineAccess().getStatesAssignment_5_0()); + // InternalParser.g:309:3: ( rule__StateMachine__StatesAssignment_5_0 ) + // InternalParser.g:309:4: rule__StateMachine__StatesAssignment_5_0 + { + pushFollow(FOLLOW_2); + rule__StateMachine__StatesAssignment_5_0(); + + state._fsp--; + + + } + + after(grammarAccess.getStateMachineAccess().getStatesAssignment_5_0()); + + } + + + } + break; + case 2 : + // InternalParser.g:313:2: ( ( rule__StateMachine__FinalstatesAssignment_5_1 ) ) + { + // InternalParser.g:313:2: ( ( rule__StateMachine__FinalstatesAssignment_5_1 ) ) + // InternalParser.g:314:3: ( rule__StateMachine__FinalstatesAssignment_5_1 ) + { + before(grammarAccess.getStateMachineAccess().getFinalstatesAssignment_5_1()); + // InternalParser.g:315:3: ( rule__StateMachine__FinalstatesAssignment_5_1 ) + // InternalParser.g:315:4: rule__StateMachine__FinalstatesAssignment_5_1 + { + pushFollow(FOLLOW_2); + rule__StateMachine__FinalstatesAssignment_5_1(); + + state._fsp--; + + + } + + after(grammarAccess.getStateMachineAccess().getFinalstatesAssignment_5_1()); + + } + + + } + break; + case 3 : + // InternalParser.g:319:2: ( ( rule__StateMachine__TransitionsAssignment_5_2 ) ) + { + // InternalParser.g:319:2: ( ( rule__StateMachine__TransitionsAssignment_5_2 ) ) + // InternalParser.g:320:3: ( rule__StateMachine__TransitionsAssignment_5_2 ) + { + before(grammarAccess.getStateMachineAccess().getTransitionsAssignment_5_2()); + // InternalParser.g:321:3: ( rule__StateMachine__TransitionsAssignment_5_2 ) + // InternalParser.g:321:4: rule__StateMachine__TransitionsAssignment_5_2 + { + pushFollow(FOLLOW_2); + rule__StateMachine__TransitionsAssignment_5_2(); + + state._fsp--; + + + } + + after(grammarAccess.getStateMachineAccess().getTransitionsAssignment_5_2()); + + } + + + } + break; + + } + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__StateMachine__Alternatives_5" + + + // $ANTLR start "rule__ActivityContent__Alternatives" + // InternalParser.g:329:1: rule__ActivityContent__Alternatives : ( ( RULE_STRING ) | ( RULE_ID ) | ( RULE_CALL ) ); + public final void rule__ActivityContent__Alternatives() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:333:1: ( ( RULE_STRING ) | ( RULE_ID ) | ( RULE_CALL ) ) + int alt2=3; + switch ( input.LA(1) ) { + case RULE_STRING: + { + alt2=1; + } + break; + case RULE_ID: + { + alt2=2; + } + break; + case RULE_CALL: + { + alt2=3; + } + break; + default: + NoViableAltException nvae = + new NoViableAltException("", 2, 0, input); + + throw nvae; + } + + switch (alt2) { + case 1 : + // InternalParser.g:334:2: ( RULE_STRING ) + { + // InternalParser.g:334:2: ( RULE_STRING ) + // InternalParser.g:335:3: RULE_STRING + { + before(grammarAccess.getActivityContentAccess().getSTRINGTerminalRuleCall_0()); + match(input,RULE_STRING,FOLLOW_2); + after(grammarAccess.getActivityContentAccess().getSTRINGTerminalRuleCall_0()); + + } + + + } + break; + case 2 : + // InternalParser.g:340:2: ( RULE_ID ) + { + // InternalParser.g:340:2: ( RULE_ID ) + // InternalParser.g:341:3: RULE_ID + { + before(grammarAccess.getActivityContentAccess().getIDTerminalRuleCall_1()); + match(input,RULE_ID,FOLLOW_2); + after(grammarAccess.getActivityContentAccess().getIDTerminalRuleCall_1()); + + } + + + } + break; + case 3 : + // InternalParser.g:346:2: ( RULE_CALL ) + { + // InternalParser.g:346:2: ( RULE_CALL ) + // InternalParser.g:347:3: RULE_CALL + { + before(grammarAccess.getActivityContentAccess().getCALLTerminalRuleCall_2()); + match(input,RULE_CALL,FOLLOW_2); + after(grammarAccess.getActivityContentAccess().getCALLTerminalRuleCall_2()); + + } + + + } + break; + + } + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__ActivityContent__Alternatives" + + + // $ANTLR start "rule__EString__Alternatives" + // InternalParser.g:356:1: rule__EString__Alternatives : ( ( RULE_STRING ) | ( RULE_ID ) | ( RULE_INITIALSTATENAME ) | ( RULE_FINALSTATENAME ) ); + public final void rule__EString__Alternatives() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:360:1: ( ( RULE_STRING ) | ( RULE_ID ) | ( RULE_INITIALSTATENAME ) | ( RULE_FINALSTATENAME ) ) + int alt3=4; + switch ( input.LA(1) ) { + case RULE_STRING: + { + alt3=1; + } + break; + case RULE_ID: + { + alt3=2; + } + break; + case RULE_INITIALSTATENAME: + { + alt3=3; + } + break; + case RULE_FINALSTATENAME: + { + alt3=4; + } + break; + default: + NoViableAltException nvae = + new NoViableAltException("", 3, 0, input); + + throw nvae; + } + + switch (alt3) { + case 1 : + // InternalParser.g:361:2: ( RULE_STRING ) + { + // InternalParser.g:361:2: ( RULE_STRING ) + // InternalParser.g:362:3: RULE_STRING + { + before(grammarAccess.getEStringAccess().getSTRINGTerminalRuleCall_0()); + match(input,RULE_STRING,FOLLOW_2); + after(grammarAccess.getEStringAccess().getSTRINGTerminalRuleCall_0()); + + } + + + } + break; + case 2 : + // InternalParser.g:367:2: ( RULE_ID ) + { + // InternalParser.g:367:2: ( RULE_ID ) + // InternalParser.g:368:3: RULE_ID + { + before(grammarAccess.getEStringAccess().getIDTerminalRuleCall_1()); + match(input,RULE_ID,FOLLOW_2); + after(grammarAccess.getEStringAccess().getIDTerminalRuleCall_1()); + + } + + + } + break; + case 3 : + // InternalParser.g:373:2: ( RULE_INITIALSTATENAME ) + { + // InternalParser.g:373:2: ( RULE_INITIALSTATENAME ) + // InternalParser.g:374:3: RULE_INITIALSTATENAME + { + before(grammarAccess.getEStringAccess().getINITIALSTATENAMETerminalRuleCall_2()); + match(input,RULE_INITIALSTATENAME,FOLLOW_2); + after(grammarAccess.getEStringAccess().getINITIALSTATENAMETerminalRuleCall_2()); + + } + + + } + break; + case 4 : + // InternalParser.g:379:2: ( RULE_FINALSTATENAME ) + { + // InternalParser.g:379:2: ( RULE_FINALSTATENAME ) + // InternalParser.g:380:3: RULE_FINALSTATENAME + { + before(grammarAccess.getEStringAccess().getFINALSTATENAMETerminalRuleCall_3()); + match(input,RULE_FINALSTATENAME,FOLLOW_2); + after(grammarAccess.getEStringAccess().getFINALSTATENAMETerminalRuleCall_3()); + + } + + + } + break; + + } + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__EString__Alternatives" + + + // $ANTLR start "rule__StateMachine__Group__0" + // InternalParser.g:389:1: rule__StateMachine__Group__0 : rule__StateMachine__Group__0__Impl rule__StateMachine__Group__1 ; + public final void rule__StateMachine__Group__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:393:1: ( rule__StateMachine__Group__0__Impl rule__StateMachine__Group__1 ) + // InternalParser.g:394:2: rule__StateMachine__Group__0__Impl rule__StateMachine__Group__1 + { + pushFollow(FOLLOW_3); + rule__StateMachine__Group__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__StateMachine__Group__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__StateMachine__Group__0" + + + // $ANTLR start "rule__StateMachine__Group__0__Impl" + // InternalParser.g:401:1: rule__StateMachine__Group__0__Impl : ( () ) ; + public final void rule__StateMachine__Group__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:405:1: ( ( () ) ) + // InternalParser.g:406:1: ( () ) + { + // InternalParser.g:406:1: ( () ) + // InternalParser.g:407:2: () + { + before(grammarAccess.getStateMachineAccess().getStateMachineAction_0()); + // InternalParser.g:408:2: () + // InternalParser.g:408:3: + { + } + + after(grammarAccess.getStateMachineAccess().getStateMachineAction_0()); + + } + + + } + + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__StateMachine__Group__0__Impl" + + + // $ANTLR start "rule__StateMachine__Group__1" + // InternalParser.g:416:1: rule__StateMachine__Group__1 : rule__StateMachine__Group__1__Impl rule__StateMachine__Group__2 ; + public final void rule__StateMachine__Group__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:420:1: ( rule__StateMachine__Group__1__Impl rule__StateMachine__Group__2 ) + // InternalParser.g:421:2: rule__StateMachine__Group__1__Impl rule__StateMachine__Group__2 + { + pushFollow(FOLLOW_4); + rule__StateMachine__Group__1__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__StateMachine__Group__2(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__StateMachine__Group__1" + + + // $ANTLR start "rule__StateMachine__Group__1__Impl" + // InternalParser.g:428:1: rule__StateMachine__Group__1__Impl : ( 'StateMachine' ) ; + public final void rule__StateMachine__Group__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:432:1: ( ( 'StateMachine' ) ) + // InternalParser.g:433:1: ( 'StateMachine' ) + { + // InternalParser.g:433:1: ( 'StateMachine' ) + // InternalParser.g:434:2: 'StateMachine' + { + before(grammarAccess.getStateMachineAccess().getStateMachineKeyword_1()); + match(input,14,FOLLOW_2); + after(grammarAccess.getStateMachineAccess().getStateMachineKeyword_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__StateMachine__Group__1__Impl" + + + // $ANTLR start "rule__StateMachine__Group__2" + // InternalParser.g:443:1: rule__StateMachine__Group__2 : rule__StateMachine__Group__2__Impl rule__StateMachine__Group__3 ; + public final void rule__StateMachine__Group__2() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:447:1: ( rule__StateMachine__Group__2__Impl rule__StateMachine__Group__3 ) + // InternalParser.g:448:2: rule__StateMachine__Group__2__Impl rule__StateMachine__Group__3 + { + pushFollow(FOLLOW_5); + rule__StateMachine__Group__2__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__StateMachine__Group__3(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__StateMachine__Group__2" + + + // $ANTLR start "rule__StateMachine__Group__2__Impl" + // InternalParser.g:455:1: rule__StateMachine__Group__2__Impl : ( ( rule__StateMachine__NameAssignment_2 ) ) ; + public final void rule__StateMachine__Group__2__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:459:1: ( ( ( rule__StateMachine__NameAssignment_2 ) ) ) + // InternalParser.g:460:1: ( ( rule__StateMachine__NameAssignment_2 ) ) + { + // InternalParser.g:460:1: ( ( rule__StateMachine__NameAssignment_2 ) ) + // InternalParser.g:461:2: ( rule__StateMachine__NameAssignment_2 ) + { + before(grammarAccess.getStateMachineAccess().getNameAssignment_2()); + // InternalParser.g:462:2: ( rule__StateMachine__NameAssignment_2 ) + // InternalParser.g:462:3: rule__StateMachine__NameAssignment_2 + { + pushFollow(FOLLOW_2); + rule__StateMachine__NameAssignment_2(); + + state._fsp--; + + + } + + after(grammarAccess.getStateMachineAccess().getNameAssignment_2()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__StateMachine__Group__2__Impl" + + + // $ANTLR start "rule__StateMachine__Group__3" + // InternalParser.g:470:1: rule__StateMachine__Group__3 : rule__StateMachine__Group__3__Impl rule__StateMachine__Group__4 ; + public final void rule__StateMachine__Group__3() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:474:1: ( rule__StateMachine__Group__3__Impl rule__StateMachine__Group__4 ) + // InternalParser.g:475:2: rule__StateMachine__Group__3__Impl rule__StateMachine__Group__4 + { + pushFollow(FOLLOW_6); + rule__StateMachine__Group__3__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__StateMachine__Group__4(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__StateMachine__Group__3" + + + // $ANTLR start "rule__StateMachine__Group__3__Impl" + // InternalParser.g:482:1: rule__StateMachine__Group__3__Impl : ( '{' ) ; + public final void rule__StateMachine__Group__3__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:486:1: ( ( '{' ) ) + // InternalParser.g:487:1: ( '{' ) + { + // InternalParser.g:487:1: ( '{' ) + // InternalParser.g:488:2: '{' + { + before(grammarAccess.getStateMachineAccess().getLeftCurlyBracketKeyword_3()); + match(input,15,FOLLOW_2); + after(grammarAccess.getStateMachineAccess().getLeftCurlyBracketKeyword_3()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__StateMachine__Group__3__Impl" + + + // $ANTLR start "rule__StateMachine__Group__4" + // InternalParser.g:497:1: rule__StateMachine__Group__4 : rule__StateMachine__Group__4__Impl rule__StateMachine__Group__5 ; + public final void rule__StateMachine__Group__4() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:501:1: ( rule__StateMachine__Group__4__Impl rule__StateMachine__Group__5 ) + // InternalParser.g:502:2: rule__StateMachine__Group__4__Impl rule__StateMachine__Group__5 + { + pushFollow(FOLLOW_7); + rule__StateMachine__Group__4__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__StateMachine__Group__5(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__StateMachine__Group__4" + + + // $ANTLR start "rule__StateMachine__Group__4__Impl" + // InternalParser.g:509:1: rule__StateMachine__Group__4__Impl : ( ( rule__StateMachine__InitialstateAssignment_4 ) ) ; + public final void rule__StateMachine__Group__4__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:513:1: ( ( ( rule__StateMachine__InitialstateAssignment_4 ) ) ) + // InternalParser.g:514:1: ( ( rule__StateMachine__InitialstateAssignment_4 ) ) + { + // InternalParser.g:514:1: ( ( rule__StateMachine__InitialstateAssignment_4 ) ) + // InternalParser.g:515:2: ( rule__StateMachine__InitialstateAssignment_4 ) + { + before(grammarAccess.getStateMachineAccess().getInitialstateAssignment_4()); + // InternalParser.g:516:2: ( rule__StateMachine__InitialstateAssignment_4 ) + // InternalParser.g:516:3: rule__StateMachine__InitialstateAssignment_4 + { + pushFollow(FOLLOW_2); + rule__StateMachine__InitialstateAssignment_4(); + + state._fsp--; + + + } + + after(grammarAccess.getStateMachineAccess().getInitialstateAssignment_4()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__StateMachine__Group__4__Impl" + + + // $ANTLR start "rule__StateMachine__Group__5" + // InternalParser.g:524:1: rule__StateMachine__Group__5 : rule__StateMachine__Group__5__Impl rule__StateMachine__Group__6 ; + public final void rule__StateMachine__Group__5() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:528:1: ( rule__StateMachine__Group__5__Impl rule__StateMachine__Group__6 ) + // InternalParser.g:529:2: rule__StateMachine__Group__5__Impl rule__StateMachine__Group__6 + { + pushFollow(FOLLOW_7); + rule__StateMachine__Group__5__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__StateMachine__Group__6(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__StateMachine__Group__5" + + + // $ANTLR start "rule__StateMachine__Group__5__Impl" + // InternalParser.g:536:1: rule__StateMachine__Group__5__Impl : ( ( rule__StateMachine__Alternatives_5 )* ) ; + public final void rule__StateMachine__Group__5__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:540:1: ( ( ( rule__StateMachine__Alternatives_5 )* ) ) + // InternalParser.g:541:1: ( ( rule__StateMachine__Alternatives_5 )* ) + { + // InternalParser.g:541:1: ( ( rule__StateMachine__Alternatives_5 )* ) + // InternalParser.g:542:2: ( rule__StateMachine__Alternatives_5 )* + { + before(grammarAccess.getStateMachineAccess().getAlternatives_5()); + // InternalParser.g:543:2: ( rule__StateMachine__Alternatives_5 )* + loop4: + do { + int alt4=2; + int LA4_0 = input.LA(1); + + if ( ((LA4_0>=RULE_STRING && LA4_0<=RULE_ID)||(LA4_0>=RULE_INITIALSTATENAME && LA4_0<=RULE_FINALSTATENAME)||LA4_0==17||LA4_0==21) ) { + alt4=1; + } + + + switch (alt4) { + case 1 : + // InternalParser.g:543:3: rule__StateMachine__Alternatives_5 + { + pushFollow(FOLLOW_8); + rule__StateMachine__Alternatives_5(); + + state._fsp--; + + + } + break; + + default : + break loop4; + } + } while (true); + + after(grammarAccess.getStateMachineAccess().getAlternatives_5()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__StateMachine__Group__5__Impl" + + + // $ANTLR start "rule__StateMachine__Group__6" + // InternalParser.g:551:1: rule__StateMachine__Group__6 : rule__StateMachine__Group__6__Impl ; + public final void rule__StateMachine__Group__6() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:555:1: ( rule__StateMachine__Group__6__Impl ) + // InternalParser.g:556:2: rule__StateMachine__Group__6__Impl + { + pushFollow(FOLLOW_2); + rule__StateMachine__Group__6__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__StateMachine__Group__6" + + + // $ANTLR start "rule__StateMachine__Group__6__Impl" + // InternalParser.g:562:1: rule__StateMachine__Group__6__Impl : ( '}' ) ; + public final void rule__StateMachine__Group__6__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:566:1: ( ( '}' ) ) + // InternalParser.g:567:1: ( '}' ) + { + // InternalParser.g:567:1: ( '}' ) + // InternalParser.g:568:2: '}' + { + before(grammarAccess.getStateMachineAccess().getRightCurlyBracketKeyword_6()); + match(input,16,FOLLOW_2); + after(grammarAccess.getStateMachineAccess().getRightCurlyBracketKeyword_6()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__StateMachine__Group__6__Impl" + + + // $ANTLR start "rule__NormalState__Group__0" + // InternalParser.g:578:1: rule__NormalState__Group__0 : rule__NormalState__Group__0__Impl rule__NormalState__Group__1 ; + public final void rule__NormalState__Group__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:582:1: ( rule__NormalState__Group__0__Impl rule__NormalState__Group__1 ) + // InternalParser.g:583:2: rule__NormalState__Group__0__Impl rule__NormalState__Group__1 + { + pushFollow(FOLLOW_9); + rule__NormalState__Group__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__NormalState__Group__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__NormalState__Group__0" + + + // $ANTLR start "rule__NormalState__Group__0__Impl" + // InternalParser.g:590:1: rule__NormalState__Group__0__Impl : ( () ) ; + public final void rule__NormalState__Group__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:594:1: ( ( () ) ) + // InternalParser.g:595:1: ( () ) + { + // InternalParser.g:595:1: ( () ) + // InternalParser.g:596:2: () + { + before(grammarAccess.getNormalStateAccess().getNormalStateAction_0()); + // InternalParser.g:597:2: () + // InternalParser.g:597:3: + { + } + + after(grammarAccess.getNormalStateAccess().getNormalStateAction_0()); + + } + + + } + + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__NormalState__Group__0__Impl" + + + // $ANTLR start "rule__NormalState__Group__1" + // InternalParser.g:605:1: rule__NormalState__Group__1 : rule__NormalState__Group__1__Impl rule__NormalState__Group__2 ; + public final void rule__NormalState__Group__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:609:1: ( rule__NormalState__Group__1__Impl rule__NormalState__Group__2 ) + // InternalParser.g:610:2: rule__NormalState__Group__1__Impl rule__NormalState__Group__2 + { + pushFollow(FOLLOW_4); + rule__NormalState__Group__1__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__NormalState__Group__2(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__NormalState__Group__1" + + + // $ANTLR start "rule__NormalState__Group__1__Impl" + // InternalParser.g:617:1: rule__NormalState__Group__1__Impl : ( 'state' ) ; + public final void rule__NormalState__Group__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:621:1: ( ( 'state' ) ) + // InternalParser.g:622:1: ( 'state' ) + { + // InternalParser.g:622:1: ( 'state' ) + // InternalParser.g:623:2: 'state' + { + before(grammarAccess.getNormalStateAccess().getStateKeyword_1()); + match(input,17,FOLLOW_2); + after(grammarAccess.getNormalStateAccess().getStateKeyword_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__NormalState__Group__1__Impl" + + + // $ANTLR start "rule__NormalState__Group__2" + // InternalParser.g:632:1: rule__NormalState__Group__2 : rule__NormalState__Group__2__Impl rule__NormalState__Group__3 ; + public final void rule__NormalState__Group__2() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:636:1: ( rule__NormalState__Group__2__Impl rule__NormalState__Group__3 ) + // InternalParser.g:637:2: rule__NormalState__Group__2__Impl rule__NormalState__Group__3 + { + pushFollow(FOLLOW_5); + rule__NormalState__Group__2__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__NormalState__Group__3(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__NormalState__Group__2" + + + // $ANTLR start "rule__NormalState__Group__2__Impl" + // InternalParser.g:644:1: rule__NormalState__Group__2__Impl : ( ( rule__NormalState__NameAssignment_2 ) ) ; + public final void rule__NormalState__Group__2__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:648:1: ( ( ( rule__NormalState__NameAssignment_2 ) ) ) + // InternalParser.g:649:1: ( ( rule__NormalState__NameAssignment_2 ) ) + { + // InternalParser.g:649:1: ( ( rule__NormalState__NameAssignment_2 ) ) + // InternalParser.g:650:2: ( rule__NormalState__NameAssignment_2 ) + { + before(grammarAccess.getNormalStateAccess().getNameAssignment_2()); + // InternalParser.g:651:2: ( rule__NormalState__NameAssignment_2 ) + // InternalParser.g:651:3: rule__NormalState__NameAssignment_2 + { + pushFollow(FOLLOW_2); + rule__NormalState__NameAssignment_2(); + + state._fsp--; + + + } + + after(grammarAccess.getNormalStateAccess().getNameAssignment_2()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__NormalState__Group__2__Impl" + + + // $ANTLR start "rule__NormalState__Group__3" + // InternalParser.g:659:1: rule__NormalState__Group__3 : rule__NormalState__Group__3__Impl ; + public final void rule__NormalState__Group__3() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:663:1: ( rule__NormalState__Group__3__Impl ) + // InternalParser.g:664:2: rule__NormalState__Group__3__Impl + { + pushFollow(FOLLOW_2); + rule__NormalState__Group__3__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__NormalState__Group__3" + + + // $ANTLR start "rule__NormalState__Group__3__Impl" + // InternalParser.g:670:1: rule__NormalState__Group__3__Impl : ( ( rule__NormalState__Group_3__0 )? ) ; + public final void rule__NormalState__Group__3__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:674:1: ( ( ( rule__NormalState__Group_3__0 )? ) ) + // InternalParser.g:675:1: ( ( rule__NormalState__Group_3__0 )? ) + { + // InternalParser.g:675:1: ( ( rule__NormalState__Group_3__0 )? ) + // InternalParser.g:676:2: ( rule__NormalState__Group_3__0 )? + { + before(grammarAccess.getNormalStateAccess().getGroup_3()); + // InternalParser.g:677:2: ( rule__NormalState__Group_3__0 )? + int alt5=2; + int LA5_0 = input.LA(1); + + if ( (LA5_0==15) ) { + alt5=1; + } + switch (alt5) { + case 1 : + // InternalParser.g:677:3: rule__NormalState__Group_3__0 + { + pushFollow(FOLLOW_2); + rule__NormalState__Group_3__0(); + + state._fsp--; + + + } + break; + + } + + after(grammarAccess.getNormalStateAccess().getGroup_3()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__NormalState__Group__3__Impl" + + + // $ANTLR start "rule__NormalState__Group_3__0" + // InternalParser.g:686:1: rule__NormalState__Group_3__0 : rule__NormalState__Group_3__0__Impl rule__NormalState__Group_3__1 ; + public final void rule__NormalState__Group_3__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:690:1: ( rule__NormalState__Group_3__0__Impl rule__NormalState__Group_3__1 ) + // InternalParser.g:691:2: rule__NormalState__Group_3__0__Impl rule__NormalState__Group_3__1 + { + pushFollow(FOLLOW_10); + rule__NormalState__Group_3__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__NormalState__Group_3__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__NormalState__Group_3__0" + + + // $ANTLR start "rule__NormalState__Group_3__0__Impl" + // InternalParser.g:698:1: rule__NormalState__Group_3__0__Impl : ( '{' ) ; + public final void rule__NormalState__Group_3__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:702:1: ( ( '{' ) ) + // InternalParser.g:703:1: ( '{' ) + { + // InternalParser.g:703:1: ( '{' ) + // InternalParser.g:704:2: '{' + { + before(grammarAccess.getNormalStateAccess().getLeftCurlyBracketKeyword_3_0()); + match(input,15,FOLLOW_2); + after(grammarAccess.getNormalStateAccess().getLeftCurlyBracketKeyword_3_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__NormalState__Group_3__0__Impl" + + + // $ANTLR start "rule__NormalState__Group_3__1" + // InternalParser.g:713:1: rule__NormalState__Group_3__1 : rule__NormalState__Group_3__1__Impl rule__NormalState__Group_3__2 ; + public final void rule__NormalState__Group_3__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:717:1: ( rule__NormalState__Group_3__1__Impl rule__NormalState__Group_3__2 ) + // InternalParser.g:718:2: rule__NormalState__Group_3__1__Impl rule__NormalState__Group_3__2 + { + pushFollow(FOLLOW_10); + rule__NormalState__Group_3__1__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__NormalState__Group_3__2(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__NormalState__Group_3__1" + + + // $ANTLR start "rule__NormalState__Group_3__1__Impl" + // InternalParser.g:725:1: rule__NormalState__Group_3__1__Impl : ( ( rule__NormalState__Group_3_1__0 )? ) ; + public final void rule__NormalState__Group_3__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:729:1: ( ( ( rule__NormalState__Group_3_1__0 )? ) ) + // InternalParser.g:730:1: ( ( rule__NormalState__Group_3_1__0 )? ) + { + // InternalParser.g:730:1: ( ( rule__NormalState__Group_3_1__0 )? ) + // InternalParser.g:731:2: ( rule__NormalState__Group_3_1__0 )? + { + before(grammarAccess.getNormalStateAccess().getGroup_3_1()); + // InternalParser.g:732:2: ( rule__NormalState__Group_3_1__0 )? + int alt6=2; + int LA6_0 = input.LA(1); + + if ( (LA6_0==18) ) { + alt6=1; + } + switch (alt6) { + case 1 : + // InternalParser.g:732:3: rule__NormalState__Group_3_1__0 + { + pushFollow(FOLLOW_2); + rule__NormalState__Group_3_1__0(); + + state._fsp--; + + + } + break; + + } + + after(grammarAccess.getNormalStateAccess().getGroup_3_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__NormalState__Group_3__1__Impl" + + + // $ANTLR start "rule__NormalState__Group_3__2" + // InternalParser.g:740:1: rule__NormalState__Group_3__2 : rule__NormalState__Group_3__2__Impl rule__NormalState__Group_3__3 ; + public final void rule__NormalState__Group_3__2() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:744:1: ( rule__NormalState__Group_3__2__Impl rule__NormalState__Group_3__3 ) + // InternalParser.g:745:2: rule__NormalState__Group_3__2__Impl rule__NormalState__Group_3__3 + { + pushFollow(FOLLOW_10); + rule__NormalState__Group_3__2__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__NormalState__Group_3__3(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__NormalState__Group_3__2" + + + // $ANTLR start "rule__NormalState__Group_3__2__Impl" + // InternalParser.g:752:1: rule__NormalState__Group_3__2__Impl : ( ( rule__NormalState__Group_3_2__0 )? ) ; + public final void rule__NormalState__Group_3__2__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:756:1: ( ( ( rule__NormalState__Group_3_2__0 )? ) ) + // InternalParser.g:757:1: ( ( rule__NormalState__Group_3_2__0 )? ) + { + // InternalParser.g:757:1: ( ( rule__NormalState__Group_3_2__0 )? ) + // InternalParser.g:758:2: ( rule__NormalState__Group_3_2__0 )? + { + before(grammarAccess.getNormalStateAccess().getGroup_3_2()); + // InternalParser.g:759:2: ( rule__NormalState__Group_3_2__0 )? + int alt7=2; + int LA7_0 = input.LA(1); + + if ( (LA7_0==19) ) { + alt7=1; + } + switch (alt7) { + case 1 : + // InternalParser.g:759:3: rule__NormalState__Group_3_2__0 + { + pushFollow(FOLLOW_2); + rule__NormalState__Group_3_2__0(); + + state._fsp--; + + + } + break; + + } + + after(grammarAccess.getNormalStateAccess().getGroup_3_2()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__NormalState__Group_3__2__Impl" + + + // $ANTLR start "rule__NormalState__Group_3__3" + // InternalParser.g:767:1: rule__NormalState__Group_3__3 : rule__NormalState__Group_3__3__Impl rule__NormalState__Group_3__4 ; + public final void rule__NormalState__Group_3__3() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:771:1: ( rule__NormalState__Group_3__3__Impl rule__NormalState__Group_3__4 ) + // InternalParser.g:772:2: rule__NormalState__Group_3__3__Impl rule__NormalState__Group_3__4 + { + pushFollow(FOLLOW_10); + rule__NormalState__Group_3__3__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__NormalState__Group_3__4(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__NormalState__Group_3__3" + + + // $ANTLR start "rule__NormalState__Group_3__3__Impl" + // InternalParser.g:779:1: rule__NormalState__Group_3__3__Impl : ( ( rule__NormalState__Group_3_3__0 )? ) ; + public final void rule__NormalState__Group_3__3__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:783:1: ( ( ( rule__NormalState__Group_3_3__0 )? ) ) + // InternalParser.g:784:1: ( ( rule__NormalState__Group_3_3__0 )? ) + { + // InternalParser.g:784:1: ( ( rule__NormalState__Group_3_3__0 )? ) + // InternalParser.g:785:2: ( rule__NormalState__Group_3_3__0 )? + { + before(grammarAccess.getNormalStateAccess().getGroup_3_3()); + // InternalParser.g:786:2: ( rule__NormalState__Group_3_3__0 )? + int alt8=2; + int LA8_0 = input.LA(1); + + if ( (LA8_0==20) ) { + alt8=1; + } + switch (alt8) { + case 1 : + // InternalParser.g:786:3: rule__NormalState__Group_3_3__0 + { + pushFollow(FOLLOW_2); + rule__NormalState__Group_3_3__0(); + + state._fsp--; + + + } + break; + + } + + after(grammarAccess.getNormalStateAccess().getGroup_3_3()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__NormalState__Group_3__3__Impl" + + + // $ANTLR start "rule__NormalState__Group_3__4" + // InternalParser.g:794:1: rule__NormalState__Group_3__4 : rule__NormalState__Group_3__4__Impl ; + public final void rule__NormalState__Group_3__4() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:798:1: ( rule__NormalState__Group_3__4__Impl ) + // InternalParser.g:799:2: rule__NormalState__Group_3__4__Impl + { + pushFollow(FOLLOW_2); + rule__NormalState__Group_3__4__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__NormalState__Group_3__4" + + + // $ANTLR start "rule__NormalState__Group_3__4__Impl" + // InternalParser.g:805:1: rule__NormalState__Group_3__4__Impl : ( '}' ) ; + public final void rule__NormalState__Group_3__4__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:809:1: ( ( '}' ) ) + // InternalParser.g:810:1: ( '}' ) + { + // InternalParser.g:810:1: ( '}' ) + // InternalParser.g:811:2: '}' + { + before(grammarAccess.getNormalStateAccess().getRightCurlyBracketKeyword_3_4()); + match(input,16,FOLLOW_2); + after(grammarAccess.getNormalStateAccess().getRightCurlyBracketKeyword_3_4()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__NormalState__Group_3__4__Impl" + + + // $ANTLR start "rule__NormalState__Group_3_1__0" + // InternalParser.g:821:1: rule__NormalState__Group_3_1__0 : rule__NormalState__Group_3_1__0__Impl rule__NormalState__Group_3_1__1 ; + public final void rule__NormalState__Group_3_1__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:825:1: ( rule__NormalState__Group_3_1__0__Impl rule__NormalState__Group_3_1__1 ) + // InternalParser.g:826:2: rule__NormalState__Group_3_1__0__Impl rule__NormalState__Group_3_1__1 + { + pushFollow(FOLLOW_11); + rule__NormalState__Group_3_1__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__NormalState__Group_3_1__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__NormalState__Group_3_1__0" + + + // $ANTLR start "rule__NormalState__Group_3_1__0__Impl" + // InternalParser.g:833:1: rule__NormalState__Group_3_1__0__Impl : ( 'entry:' ) ; + public final void rule__NormalState__Group_3_1__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:837:1: ( ( 'entry:' ) ) + // InternalParser.g:838:1: ( 'entry:' ) + { + // InternalParser.g:838:1: ( 'entry:' ) + // InternalParser.g:839:2: 'entry:' + { + before(grammarAccess.getNormalStateAccess().getEntryKeyword_3_1_0()); + match(input,18,FOLLOW_2); + after(grammarAccess.getNormalStateAccess().getEntryKeyword_3_1_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__NormalState__Group_3_1__0__Impl" + + + // $ANTLR start "rule__NormalState__Group_3_1__1" + // InternalParser.g:848:1: rule__NormalState__Group_3_1__1 : rule__NormalState__Group_3_1__1__Impl ; + public final void rule__NormalState__Group_3_1__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:852:1: ( rule__NormalState__Group_3_1__1__Impl ) + // InternalParser.g:853:2: rule__NormalState__Group_3_1__1__Impl + { + pushFollow(FOLLOW_2); + rule__NormalState__Group_3_1__1__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__NormalState__Group_3_1__1" + + + // $ANTLR start "rule__NormalState__Group_3_1__1__Impl" + // InternalParser.g:859:1: rule__NormalState__Group_3_1__1__Impl : ( ( rule__NormalState__Entry_Assignment_3_1_1 ) ) ; + public final void rule__NormalState__Group_3_1__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:863:1: ( ( ( rule__NormalState__Entry_Assignment_3_1_1 ) ) ) + // InternalParser.g:864:1: ( ( rule__NormalState__Entry_Assignment_3_1_1 ) ) + { + // InternalParser.g:864:1: ( ( rule__NormalState__Entry_Assignment_3_1_1 ) ) + // InternalParser.g:865:2: ( rule__NormalState__Entry_Assignment_3_1_1 ) + { + before(grammarAccess.getNormalStateAccess().getEntry_Assignment_3_1_1()); + // InternalParser.g:866:2: ( rule__NormalState__Entry_Assignment_3_1_1 ) + // InternalParser.g:866:3: rule__NormalState__Entry_Assignment_3_1_1 + { + pushFollow(FOLLOW_2); + rule__NormalState__Entry_Assignment_3_1_1(); + + state._fsp--; + + + } + + after(grammarAccess.getNormalStateAccess().getEntry_Assignment_3_1_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__NormalState__Group_3_1__1__Impl" + + + // $ANTLR start "rule__NormalState__Group_3_2__0" + // InternalParser.g:875:1: rule__NormalState__Group_3_2__0 : rule__NormalState__Group_3_2__0__Impl rule__NormalState__Group_3_2__1 ; + public final void rule__NormalState__Group_3_2__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:879:1: ( rule__NormalState__Group_3_2__0__Impl rule__NormalState__Group_3_2__1 ) + // InternalParser.g:880:2: rule__NormalState__Group_3_2__0__Impl rule__NormalState__Group_3_2__1 + { + pushFollow(FOLLOW_11); + rule__NormalState__Group_3_2__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__NormalState__Group_3_2__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__NormalState__Group_3_2__0" + + + // $ANTLR start "rule__NormalState__Group_3_2__0__Impl" + // InternalParser.g:887:1: rule__NormalState__Group_3_2__0__Impl : ( 'do:' ) ; + public final void rule__NormalState__Group_3_2__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:891:1: ( ( 'do:' ) ) + // InternalParser.g:892:1: ( 'do:' ) + { + // InternalParser.g:892:1: ( 'do:' ) + // InternalParser.g:893:2: 'do:' + { + before(grammarAccess.getNormalStateAccess().getDoKeyword_3_2_0()); + match(input,19,FOLLOW_2); + after(grammarAccess.getNormalStateAccess().getDoKeyword_3_2_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__NormalState__Group_3_2__0__Impl" + + + // $ANTLR start "rule__NormalState__Group_3_2__1" + // InternalParser.g:902:1: rule__NormalState__Group_3_2__1 : rule__NormalState__Group_3_2__1__Impl ; + public final void rule__NormalState__Group_3_2__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:906:1: ( rule__NormalState__Group_3_2__1__Impl ) + // InternalParser.g:907:2: rule__NormalState__Group_3_2__1__Impl + { + pushFollow(FOLLOW_2); + rule__NormalState__Group_3_2__1__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__NormalState__Group_3_2__1" + + + // $ANTLR start "rule__NormalState__Group_3_2__1__Impl" + // InternalParser.g:913:1: rule__NormalState__Group_3_2__1__Impl : ( ( rule__NormalState__Do_Assignment_3_2_1 ) ) ; + public final void rule__NormalState__Group_3_2__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:917:1: ( ( ( rule__NormalState__Do_Assignment_3_2_1 ) ) ) + // InternalParser.g:918:1: ( ( rule__NormalState__Do_Assignment_3_2_1 ) ) + { + // InternalParser.g:918:1: ( ( rule__NormalState__Do_Assignment_3_2_1 ) ) + // InternalParser.g:919:2: ( rule__NormalState__Do_Assignment_3_2_1 ) + { + before(grammarAccess.getNormalStateAccess().getDo_Assignment_3_2_1()); + // InternalParser.g:920:2: ( rule__NormalState__Do_Assignment_3_2_1 ) + // InternalParser.g:920:3: rule__NormalState__Do_Assignment_3_2_1 + { + pushFollow(FOLLOW_2); + rule__NormalState__Do_Assignment_3_2_1(); + + state._fsp--; + + + } + + after(grammarAccess.getNormalStateAccess().getDo_Assignment_3_2_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__NormalState__Group_3_2__1__Impl" + + + // $ANTLR start "rule__NormalState__Group_3_3__0" + // InternalParser.g:929:1: rule__NormalState__Group_3_3__0 : rule__NormalState__Group_3_3__0__Impl rule__NormalState__Group_3_3__1 ; + public final void rule__NormalState__Group_3_3__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:933:1: ( rule__NormalState__Group_3_3__0__Impl rule__NormalState__Group_3_3__1 ) + // InternalParser.g:934:2: rule__NormalState__Group_3_3__0__Impl rule__NormalState__Group_3_3__1 + { + pushFollow(FOLLOW_11); + rule__NormalState__Group_3_3__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__NormalState__Group_3_3__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__NormalState__Group_3_3__0" + + + // $ANTLR start "rule__NormalState__Group_3_3__0__Impl" + // InternalParser.g:941:1: rule__NormalState__Group_3_3__0__Impl : ( 'exit:' ) ; + public final void rule__NormalState__Group_3_3__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:945:1: ( ( 'exit:' ) ) + // InternalParser.g:946:1: ( 'exit:' ) + { + // InternalParser.g:946:1: ( 'exit:' ) + // InternalParser.g:947:2: 'exit:' + { + before(grammarAccess.getNormalStateAccess().getExitKeyword_3_3_0()); + match(input,20,FOLLOW_2); + after(grammarAccess.getNormalStateAccess().getExitKeyword_3_3_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__NormalState__Group_3_3__0__Impl" + + + // $ANTLR start "rule__NormalState__Group_3_3__1" + // InternalParser.g:956:1: rule__NormalState__Group_3_3__1 : rule__NormalState__Group_3_3__1__Impl ; + public final void rule__NormalState__Group_3_3__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:960:1: ( rule__NormalState__Group_3_3__1__Impl ) + // InternalParser.g:961:2: rule__NormalState__Group_3_3__1__Impl + { + pushFollow(FOLLOW_2); + rule__NormalState__Group_3_3__1__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__NormalState__Group_3_3__1" + + + // $ANTLR start "rule__NormalState__Group_3_3__1__Impl" + // InternalParser.g:967:1: rule__NormalState__Group_3_3__1__Impl : ( ( rule__NormalState__Exit_Assignment_3_3_1 ) ) ; + public final void rule__NormalState__Group_3_3__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:971:1: ( ( ( rule__NormalState__Exit_Assignment_3_3_1 ) ) ) + // InternalParser.g:972:1: ( ( rule__NormalState__Exit_Assignment_3_3_1 ) ) + { + // InternalParser.g:972:1: ( ( rule__NormalState__Exit_Assignment_3_3_1 ) ) + // InternalParser.g:973:2: ( rule__NormalState__Exit_Assignment_3_3_1 ) + { + before(grammarAccess.getNormalStateAccess().getExit_Assignment_3_3_1()); + // InternalParser.g:974:2: ( rule__NormalState__Exit_Assignment_3_3_1 ) + // InternalParser.g:974:3: rule__NormalState__Exit_Assignment_3_3_1 + { + pushFollow(FOLLOW_2); + rule__NormalState__Exit_Assignment_3_3_1(); + + state._fsp--; + + + } + + after(grammarAccess.getNormalStateAccess().getExit_Assignment_3_3_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__NormalState__Group_3_3__1__Impl" + + + // $ANTLR start "rule__FinalState__Group__0" + // InternalParser.g:983:1: rule__FinalState__Group__0 : rule__FinalState__Group__0__Impl rule__FinalState__Group__1 ; + public final void rule__FinalState__Group__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:987:1: ( rule__FinalState__Group__0__Impl rule__FinalState__Group__1 ) + // InternalParser.g:988:2: rule__FinalState__Group__0__Impl rule__FinalState__Group__1 + { + pushFollow(FOLLOW_12); + rule__FinalState__Group__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__FinalState__Group__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__FinalState__Group__0" + + + // $ANTLR start "rule__FinalState__Group__0__Impl" + // InternalParser.g:995:1: rule__FinalState__Group__0__Impl : ( () ) ; + public final void rule__FinalState__Group__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:999:1: ( ( () ) ) + // InternalParser.g:1000:1: ( () ) + { + // InternalParser.g:1000:1: ( () ) + // InternalParser.g:1001:2: () + { + before(grammarAccess.getFinalStateAccess().getFinalStateAction_0()); + // InternalParser.g:1002:2: () + // InternalParser.g:1002:3: + { + } + + after(grammarAccess.getFinalStateAccess().getFinalStateAction_0()); + + } + + + } + + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__FinalState__Group__0__Impl" + + + // $ANTLR start "rule__FinalState__Group__1" + // InternalParser.g:1010:1: rule__FinalState__Group__1 : rule__FinalState__Group__1__Impl rule__FinalState__Group__2 ; + public final void rule__FinalState__Group__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1014:1: ( rule__FinalState__Group__1__Impl rule__FinalState__Group__2 ) + // InternalParser.g:1015:2: rule__FinalState__Group__1__Impl rule__FinalState__Group__2 + { + pushFollow(FOLLOW_13); + rule__FinalState__Group__1__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__FinalState__Group__2(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__FinalState__Group__1" + + + // $ANTLR start "rule__FinalState__Group__1__Impl" + // InternalParser.g:1022:1: rule__FinalState__Group__1__Impl : ( 'end' ) ; + public final void rule__FinalState__Group__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1026:1: ( ( 'end' ) ) + // InternalParser.g:1027:1: ( 'end' ) + { + // InternalParser.g:1027:1: ( 'end' ) + // InternalParser.g:1028:2: 'end' + { + before(grammarAccess.getFinalStateAccess().getEndKeyword_1()); + match(input,21,FOLLOW_2); + after(grammarAccess.getFinalStateAccess().getEndKeyword_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__FinalState__Group__1__Impl" + + + // $ANTLR start "rule__FinalState__Group__2" + // InternalParser.g:1037:1: rule__FinalState__Group__2 : rule__FinalState__Group__2__Impl ; + public final void rule__FinalState__Group__2() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1041:1: ( rule__FinalState__Group__2__Impl ) + // InternalParser.g:1042:2: rule__FinalState__Group__2__Impl + { + pushFollow(FOLLOW_2); + rule__FinalState__Group__2__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__FinalState__Group__2" + + + // $ANTLR start "rule__FinalState__Group__2__Impl" + // InternalParser.g:1048:1: rule__FinalState__Group__2__Impl : ( ( rule__FinalState__NameAssignment_2 ) ) ; + public final void rule__FinalState__Group__2__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1052:1: ( ( ( rule__FinalState__NameAssignment_2 ) ) ) + // InternalParser.g:1053:1: ( ( rule__FinalState__NameAssignment_2 ) ) + { + // InternalParser.g:1053:1: ( ( rule__FinalState__NameAssignment_2 ) ) + // InternalParser.g:1054:2: ( rule__FinalState__NameAssignment_2 ) + { + before(grammarAccess.getFinalStateAccess().getNameAssignment_2()); + // InternalParser.g:1055:2: ( rule__FinalState__NameAssignment_2 ) + // InternalParser.g:1055:3: rule__FinalState__NameAssignment_2 + { + pushFollow(FOLLOW_2); + rule__FinalState__NameAssignment_2(); + + state._fsp--; + + + } + + after(grammarAccess.getFinalStateAccess().getNameAssignment_2()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__FinalState__Group__2__Impl" + + + // $ANTLR start "rule__InitialState__Group__0" + // InternalParser.g:1064:1: rule__InitialState__Group__0 : rule__InitialState__Group__0__Impl rule__InitialState__Group__1 ; + public final void rule__InitialState__Group__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1068:1: ( rule__InitialState__Group__0__Impl rule__InitialState__Group__1 ) + // InternalParser.g:1069:2: rule__InitialState__Group__0__Impl rule__InitialState__Group__1 + { + pushFollow(FOLLOW_6); + rule__InitialState__Group__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__InitialState__Group__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__InitialState__Group__0" + + + // $ANTLR start "rule__InitialState__Group__0__Impl" + // InternalParser.g:1076:1: rule__InitialState__Group__0__Impl : ( () ) ; + public final void rule__InitialState__Group__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1080:1: ( ( () ) ) + // InternalParser.g:1081:1: ( () ) + { + // InternalParser.g:1081:1: ( () ) + // InternalParser.g:1082:2: () + { + before(grammarAccess.getInitialStateAccess().getInitialStateAction_0()); + // InternalParser.g:1083:2: () + // InternalParser.g:1083:3: + { + } + + after(grammarAccess.getInitialStateAccess().getInitialStateAction_0()); + + } + + + } + + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__InitialState__Group__0__Impl" + + + // $ANTLR start "rule__InitialState__Group__1" + // InternalParser.g:1091:1: rule__InitialState__Group__1 : rule__InitialState__Group__1__Impl rule__InitialState__Group__2 ; + public final void rule__InitialState__Group__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1095:1: ( rule__InitialState__Group__1__Impl rule__InitialState__Group__2 ) + // InternalParser.g:1096:2: rule__InitialState__Group__1__Impl rule__InitialState__Group__2 + { + pushFollow(FOLLOW_14); + rule__InitialState__Group__1__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__InitialState__Group__2(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__InitialState__Group__1" + + + // $ANTLR start "rule__InitialState__Group__1__Impl" + // InternalParser.g:1103:1: rule__InitialState__Group__1__Impl : ( 'start' ) ; + public final void rule__InitialState__Group__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1107:1: ( ( 'start' ) ) + // InternalParser.g:1108:1: ( 'start' ) + { + // InternalParser.g:1108:1: ( 'start' ) + // InternalParser.g:1109:2: 'start' + { + before(grammarAccess.getInitialStateAccess().getStartKeyword_1()); + match(input,22,FOLLOW_2); + after(grammarAccess.getInitialStateAccess().getStartKeyword_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__InitialState__Group__1__Impl" + + + // $ANTLR start "rule__InitialState__Group__2" + // InternalParser.g:1118:1: rule__InitialState__Group__2 : rule__InitialState__Group__2__Impl ; + public final void rule__InitialState__Group__2() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1122:1: ( rule__InitialState__Group__2__Impl ) + // InternalParser.g:1123:2: rule__InitialState__Group__2__Impl + { + pushFollow(FOLLOW_2); + rule__InitialState__Group__2__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__InitialState__Group__2" + + + // $ANTLR start "rule__InitialState__Group__2__Impl" + // InternalParser.g:1129:1: rule__InitialState__Group__2__Impl : ( ( rule__InitialState__NameAssignment_2 ) ) ; + public final void rule__InitialState__Group__2__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1133:1: ( ( ( rule__InitialState__NameAssignment_2 ) ) ) + // InternalParser.g:1134:1: ( ( rule__InitialState__NameAssignment_2 ) ) + { + // InternalParser.g:1134:1: ( ( rule__InitialState__NameAssignment_2 ) ) + // InternalParser.g:1135:2: ( rule__InitialState__NameAssignment_2 ) + { + before(grammarAccess.getInitialStateAccess().getNameAssignment_2()); + // InternalParser.g:1136:2: ( rule__InitialState__NameAssignment_2 ) + // InternalParser.g:1136:3: rule__InitialState__NameAssignment_2 + { + pushFollow(FOLLOW_2); + rule__InitialState__NameAssignment_2(); + + state._fsp--; + + + } + + after(grammarAccess.getInitialStateAccess().getNameAssignment_2()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__InitialState__Group__2__Impl" + + + // $ANTLR start "rule__Transition__Group__0" + // InternalParser.g:1145:1: rule__Transition__Group__0 : rule__Transition__Group__0__Impl rule__Transition__Group__1 ; + public final void rule__Transition__Group__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1149:1: ( rule__Transition__Group__0__Impl rule__Transition__Group__1 ) + // InternalParser.g:1150:2: rule__Transition__Group__0__Impl rule__Transition__Group__1 + { + pushFollow(FOLLOW_15); + rule__Transition__Group__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__Transition__Group__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__Transition__Group__0" + + + // $ANTLR start "rule__Transition__Group__0__Impl" + // InternalParser.g:1157:1: rule__Transition__Group__0__Impl : ( () ) ; + public final void rule__Transition__Group__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1161:1: ( ( () ) ) + // InternalParser.g:1162:1: ( () ) + { + // InternalParser.g:1162:1: ( () ) + // InternalParser.g:1163:2: () + { + before(grammarAccess.getTransitionAccess().getTransitionAction_0()); + // InternalParser.g:1164:2: () + // InternalParser.g:1164:3: + { + } + + after(grammarAccess.getTransitionAccess().getTransitionAction_0()); + + } + + + } + + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__Transition__Group__0__Impl" + + + // $ANTLR start "rule__Transition__Group__1" + // InternalParser.g:1172:1: rule__Transition__Group__1 : rule__Transition__Group__1__Impl rule__Transition__Group__2 ; + public final void rule__Transition__Group__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1176:1: ( rule__Transition__Group__1__Impl rule__Transition__Group__2 ) + // InternalParser.g:1177:2: rule__Transition__Group__1__Impl rule__Transition__Group__2 + { + pushFollow(FOLLOW_16); + rule__Transition__Group__1__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__Transition__Group__2(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__Transition__Group__1" + + + // $ANTLR start "rule__Transition__Group__1__Impl" + // InternalParser.g:1184:1: rule__Transition__Group__1__Impl : ( ( rule__Transition__FromAssignment_1 ) ) ; + public final void rule__Transition__Group__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1188:1: ( ( ( rule__Transition__FromAssignment_1 ) ) ) + // InternalParser.g:1189:1: ( ( rule__Transition__FromAssignment_1 ) ) + { + // InternalParser.g:1189:1: ( ( rule__Transition__FromAssignment_1 ) ) + // InternalParser.g:1190:2: ( rule__Transition__FromAssignment_1 ) + { + before(grammarAccess.getTransitionAccess().getFromAssignment_1()); + // InternalParser.g:1191:2: ( rule__Transition__FromAssignment_1 ) + // InternalParser.g:1191:3: rule__Transition__FromAssignment_1 + { + pushFollow(FOLLOW_2); + rule__Transition__FromAssignment_1(); + + state._fsp--; + + + } + + after(grammarAccess.getTransitionAccess().getFromAssignment_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__Transition__Group__1__Impl" + + + // $ANTLR start "rule__Transition__Group__2" + // InternalParser.g:1199:1: rule__Transition__Group__2 : rule__Transition__Group__2__Impl rule__Transition__Group__3 ; + public final void rule__Transition__Group__2() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1203:1: ( rule__Transition__Group__2__Impl rule__Transition__Group__3 ) + // InternalParser.g:1204:2: rule__Transition__Group__2__Impl rule__Transition__Group__3 + { + pushFollow(FOLLOW_17); + rule__Transition__Group__2__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__Transition__Group__3(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__Transition__Group__2" + + + // $ANTLR start "rule__Transition__Group__2__Impl" + // InternalParser.g:1211:1: rule__Transition__Group__2__Impl : ( '-' ) ; + public final void rule__Transition__Group__2__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1215:1: ( ( '-' ) ) + // InternalParser.g:1216:1: ( '-' ) + { + // InternalParser.g:1216:1: ( '-' ) + // InternalParser.g:1217:2: '-' + { + before(grammarAccess.getTransitionAccess().getHyphenMinusKeyword_2()); + match(input,23,FOLLOW_2); + after(grammarAccess.getTransitionAccess().getHyphenMinusKeyword_2()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__Transition__Group__2__Impl" + + + // $ANTLR start "rule__Transition__Group__3" + // InternalParser.g:1226:1: rule__Transition__Group__3 : rule__Transition__Group__3__Impl rule__Transition__Group__4 ; + public final void rule__Transition__Group__3() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1230:1: ( rule__Transition__Group__3__Impl rule__Transition__Group__4 ) + // InternalParser.g:1231:2: rule__Transition__Group__3__Impl rule__Transition__Group__4 + { + pushFollow(FOLLOW_17); + rule__Transition__Group__3__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__Transition__Group__4(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__Transition__Group__3" + + + // $ANTLR start "rule__Transition__Group__3__Impl" + // InternalParser.g:1238:1: rule__Transition__Group__3__Impl : ( ( rule__Transition__TriggerAssignment_3 )? ) ; + public final void rule__Transition__Group__3__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1242:1: ( ( ( rule__Transition__TriggerAssignment_3 )? ) ) + // InternalParser.g:1243:1: ( ( rule__Transition__TriggerAssignment_3 )? ) + { + // InternalParser.g:1243:1: ( ( rule__Transition__TriggerAssignment_3 )? ) + // InternalParser.g:1244:2: ( rule__Transition__TriggerAssignment_3 )? + { + before(grammarAccess.getTransitionAccess().getTriggerAssignment_3()); + // InternalParser.g:1245:2: ( rule__Transition__TriggerAssignment_3 )? + int alt9=2; + int LA9_0 = input.LA(1); + + if ( ((LA9_0>=RULE_STRING && LA9_0<=RULE_CALL)) ) { + alt9=1; + } + switch (alt9) { + case 1 : + // InternalParser.g:1245:3: rule__Transition__TriggerAssignment_3 + { + pushFollow(FOLLOW_2); + rule__Transition__TriggerAssignment_3(); + + state._fsp--; + + + } + break; + + } + + after(grammarAccess.getTransitionAccess().getTriggerAssignment_3()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__Transition__Group__3__Impl" + + + // $ANTLR start "rule__Transition__Group__4" + // InternalParser.g:1253:1: rule__Transition__Group__4 : rule__Transition__Group__4__Impl rule__Transition__Group__5 ; + public final void rule__Transition__Group__4() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1257:1: ( rule__Transition__Group__4__Impl rule__Transition__Group__5 ) + // InternalParser.g:1258:2: rule__Transition__Group__4__Impl rule__Transition__Group__5 + { + pushFollow(FOLLOW_17); + rule__Transition__Group__4__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__Transition__Group__5(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__Transition__Group__4" + + + // $ANTLR start "rule__Transition__Group__4__Impl" + // InternalParser.g:1265:1: rule__Transition__Group__4__Impl : ( ( rule__Transition__Group_4__0 )? ) ; + public final void rule__Transition__Group__4__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1269:1: ( ( ( rule__Transition__Group_4__0 )? ) ) + // InternalParser.g:1270:1: ( ( rule__Transition__Group_4__0 )? ) + { + // InternalParser.g:1270:1: ( ( rule__Transition__Group_4__0 )? ) + // InternalParser.g:1271:2: ( rule__Transition__Group_4__0 )? + { + before(grammarAccess.getTransitionAccess().getGroup_4()); + // InternalParser.g:1272:2: ( rule__Transition__Group_4__0 )? + int alt10=2; + int LA10_0 = input.LA(1); + + if ( (LA10_0==25) ) { + alt10=1; + } + switch (alt10) { + case 1 : + // InternalParser.g:1272:3: rule__Transition__Group_4__0 + { + pushFollow(FOLLOW_2); + rule__Transition__Group_4__0(); + + state._fsp--; + + + } + break; + + } + + after(grammarAccess.getTransitionAccess().getGroup_4()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__Transition__Group__4__Impl" + + + // $ANTLR start "rule__Transition__Group__5" + // InternalParser.g:1280:1: rule__Transition__Group__5 : rule__Transition__Group__5__Impl rule__Transition__Group__6 ; + public final void rule__Transition__Group__5() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1284:1: ( rule__Transition__Group__5__Impl rule__Transition__Group__6 ) + // InternalParser.g:1285:2: rule__Transition__Group__5__Impl rule__Transition__Group__6 + { + pushFollow(FOLLOW_17); + rule__Transition__Group__5__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__Transition__Group__6(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__Transition__Group__5" + + + // $ANTLR start "rule__Transition__Group__5__Impl" + // InternalParser.g:1292:1: rule__Transition__Group__5__Impl : ( ( rule__Transition__Group_5__0 )? ) ; + public final void rule__Transition__Group__5__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1296:1: ( ( ( rule__Transition__Group_5__0 )? ) ) + // InternalParser.g:1297:1: ( ( rule__Transition__Group_5__0 )? ) + { + // InternalParser.g:1297:1: ( ( rule__Transition__Group_5__0 )? ) + // InternalParser.g:1298:2: ( rule__Transition__Group_5__0 )? + { + before(grammarAccess.getTransitionAccess().getGroup_5()); + // InternalParser.g:1299:2: ( rule__Transition__Group_5__0 )? + int alt11=2; + int LA11_0 = input.LA(1); + + if ( (LA11_0==27) ) { + alt11=1; + } + switch (alt11) { + case 1 : + // InternalParser.g:1299:3: rule__Transition__Group_5__0 + { + pushFollow(FOLLOW_2); + rule__Transition__Group_5__0(); + + state._fsp--; + + + } + break; + + } + + after(grammarAccess.getTransitionAccess().getGroup_5()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__Transition__Group__5__Impl" + + + // $ANTLR start "rule__Transition__Group__6" + // InternalParser.g:1307:1: rule__Transition__Group__6 : rule__Transition__Group__6__Impl rule__Transition__Group__7 ; + public final void rule__Transition__Group__6() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1311:1: ( rule__Transition__Group__6__Impl rule__Transition__Group__7 ) + // InternalParser.g:1312:2: rule__Transition__Group__6__Impl rule__Transition__Group__7 + { + pushFollow(FOLLOW_4); + rule__Transition__Group__6__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__Transition__Group__7(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__Transition__Group__6" + + + // $ANTLR start "rule__Transition__Group__6__Impl" + // InternalParser.g:1319:1: rule__Transition__Group__6__Impl : ( '->' ) ; + public final void rule__Transition__Group__6__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1323:1: ( ( '->' ) ) + // InternalParser.g:1324:1: ( '->' ) + { + // InternalParser.g:1324:1: ( '->' ) + // InternalParser.g:1325:2: '->' + { + before(grammarAccess.getTransitionAccess().getHyphenMinusGreaterThanSignKeyword_6()); + match(input,24,FOLLOW_2); + after(grammarAccess.getTransitionAccess().getHyphenMinusGreaterThanSignKeyword_6()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__Transition__Group__6__Impl" + + + // $ANTLR start "rule__Transition__Group__7" + // InternalParser.g:1334:1: rule__Transition__Group__7 : rule__Transition__Group__7__Impl ; + public final void rule__Transition__Group__7() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1338:1: ( rule__Transition__Group__7__Impl ) + // InternalParser.g:1339:2: rule__Transition__Group__7__Impl + { + pushFollow(FOLLOW_2); + rule__Transition__Group__7__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__Transition__Group__7" + + + // $ANTLR start "rule__Transition__Group__7__Impl" + // InternalParser.g:1345:1: rule__Transition__Group__7__Impl : ( ( rule__Transition__ToAssignment_7 ) ) ; + public final void rule__Transition__Group__7__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1349:1: ( ( ( rule__Transition__ToAssignment_7 ) ) ) + // InternalParser.g:1350:1: ( ( rule__Transition__ToAssignment_7 ) ) + { + // InternalParser.g:1350:1: ( ( rule__Transition__ToAssignment_7 ) ) + // InternalParser.g:1351:2: ( rule__Transition__ToAssignment_7 ) + { + before(grammarAccess.getTransitionAccess().getToAssignment_7()); + // InternalParser.g:1352:2: ( rule__Transition__ToAssignment_7 ) + // InternalParser.g:1352:3: rule__Transition__ToAssignment_7 + { + pushFollow(FOLLOW_2); + rule__Transition__ToAssignment_7(); + + state._fsp--; + + + } + + after(grammarAccess.getTransitionAccess().getToAssignment_7()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__Transition__Group__7__Impl" + + + // $ANTLR start "rule__Transition__Group_4__0" + // InternalParser.g:1361:1: rule__Transition__Group_4__0 : rule__Transition__Group_4__0__Impl rule__Transition__Group_4__1 ; + public final void rule__Transition__Group_4__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1365:1: ( rule__Transition__Group_4__0__Impl rule__Transition__Group_4__1 ) + // InternalParser.g:1366:2: rule__Transition__Group_4__0__Impl rule__Transition__Group_4__1 + { + pushFollow(FOLLOW_4); + rule__Transition__Group_4__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__Transition__Group_4__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__Transition__Group_4__0" + + + // $ANTLR start "rule__Transition__Group_4__0__Impl" + // InternalParser.g:1373:1: rule__Transition__Group_4__0__Impl : ( '[' ) ; + public final void rule__Transition__Group_4__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1377:1: ( ( '[' ) ) + // InternalParser.g:1378:1: ( '[' ) + { + // InternalParser.g:1378:1: ( '[' ) + // InternalParser.g:1379:2: '[' + { + before(grammarAccess.getTransitionAccess().getLeftSquareBracketKeyword_4_0()); + match(input,25,FOLLOW_2); + after(grammarAccess.getTransitionAccess().getLeftSquareBracketKeyword_4_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__Transition__Group_4__0__Impl" + + + // $ANTLR start "rule__Transition__Group_4__1" + // InternalParser.g:1388:1: rule__Transition__Group_4__1 : rule__Transition__Group_4__1__Impl rule__Transition__Group_4__2 ; + public final void rule__Transition__Group_4__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1392:1: ( rule__Transition__Group_4__1__Impl rule__Transition__Group_4__2 ) + // InternalParser.g:1393:2: rule__Transition__Group_4__1__Impl rule__Transition__Group_4__2 + { + pushFollow(FOLLOW_18); + rule__Transition__Group_4__1__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__Transition__Group_4__2(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__Transition__Group_4__1" + + + // $ANTLR start "rule__Transition__Group_4__1__Impl" + // InternalParser.g:1400:1: rule__Transition__Group_4__1__Impl : ( ( rule__Transition__GuardAssignment_4_1 ) ) ; + public final void rule__Transition__Group_4__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1404:1: ( ( ( rule__Transition__GuardAssignment_4_1 ) ) ) + // InternalParser.g:1405:1: ( ( rule__Transition__GuardAssignment_4_1 ) ) + { + // InternalParser.g:1405:1: ( ( rule__Transition__GuardAssignment_4_1 ) ) + // InternalParser.g:1406:2: ( rule__Transition__GuardAssignment_4_1 ) + { + before(grammarAccess.getTransitionAccess().getGuardAssignment_4_1()); + // InternalParser.g:1407:2: ( rule__Transition__GuardAssignment_4_1 ) + // InternalParser.g:1407:3: rule__Transition__GuardAssignment_4_1 + { + pushFollow(FOLLOW_2); + rule__Transition__GuardAssignment_4_1(); + + state._fsp--; + + + } + + after(grammarAccess.getTransitionAccess().getGuardAssignment_4_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__Transition__Group_4__1__Impl" + + + // $ANTLR start "rule__Transition__Group_4__2" + // InternalParser.g:1415:1: rule__Transition__Group_4__2 : rule__Transition__Group_4__2__Impl ; + public final void rule__Transition__Group_4__2() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1419:1: ( rule__Transition__Group_4__2__Impl ) + // InternalParser.g:1420:2: rule__Transition__Group_4__2__Impl + { + pushFollow(FOLLOW_2); + rule__Transition__Group_4__2__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__Transition__Group_4__2" + + + // $ANTLR start "rule__Transition__Group_4__2__Impl" + // InternalParser.g:1426:1: rule__Transition__Group_4__2__Impl : ( ']' ) ; + public final void rule__Transition__Group_4__2__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1430:1: ( ( ']' ) ) + // InternalParser.g:1431:1: ( ']' ) + { + // InternalParser.g:1431:1: ( ']' ) + // InternalParser.g:1432:2: ']' + { + before(grammarAccess.getTransitionAccess().getRightSquareBracketKeyword_4_2()); + match(input,26,FOLLOW_2); + after(grammarAccess.getTransitionAccess().getRightSquareBracketKeyword_4_2()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__Transition__Group_4__2__Impl" + + + // $ANTLR start "rule__Transition__Group_5__0" + // InternalParser.g:1442:1: rule__Transition__Group_5__0 : rule__Transition__Group_5__0__Impl rule__Transition__Group_5__1 ; + public final void rule__Transition__Group_5__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1446:1: ( rule__Transition__Group_5__0__Impl rule__Transition__Group_5__1 ) + // InternalParser.g:1447:2: rule__Transition__Group_5__0__Impl rule__Transition__Group_5__1 + { + pushFollow(FOLLOW_11); + rule__Transition__Group_5__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__Transition__Group_5__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__Transition__Group_5__0" + + + // $ANTLR start "rule__Transition__Group_5__0__Impl" + // InternalParser.g:1454:1: rule__Transition__Group_5__0__Impl : ( '/' ) ; + public final void rule__Transition__Group_5__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1458:1: ( ( '/' ) ) + // InternalParser.g:1459:1: ( '/' ) + { + // InternalParser.g:1459:1: ( '/' ) + // InternalParser.g:1460:2: '/' + { + before(grammarAccess.getTransitionAccess().getSolidusKeyword_5_0()); + match(input,27,FOLLOW_2); + after(grammarAccess.getTransitionAccess().getSolidusKeyword_5_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__Transition__Group_5__0__Impl" + + + // $ANTLR start "rule__Transition__Group_5__1" + // InternalParser.g:1469:1: rule__Transition__Group_5__1 : rule__Transition__Group_5__1__Impl ; + public final void rule__Transition__Group_5__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1473:1: ( rule__Transition__Group_5__1__Impl ) + // InternalParser.g:1474:2: rule__Transition__Group_5__1__Impl + { + pushFollow(FOLLOW_2); + rule__Transition__Group_5__1__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__Transition__Group_5__1" + + + // $ANTLR start "rule__Transition__Group_5__1__Impl" + // InternalParser.g:1480:1: rule__Transition__Group_5__1__Impl : ( ( rule__Transition__ActionAssignment_5_1 ) ) ; + public final void rule__Transition__Group_5__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1484:1: ( ( ( rule__Transition__ActionAssignment_5_1 ) ) ) + // InternalParser.g:1485:1: ( ( rule__Transition__ActionAssignment_5_1 ) ) + { + // InternalParser.g:1485:1: ( ( rule__Transition__ActionAssignment_5_1 ) ) + // InternalParser.g:1486:2: ( rule__Transition__ActionAssignment_5_1 ) + { + before(grammarAccess.getTransitionAccess().getActionAssignment_5_1()); + // InternalParser.g:1487:2: ( rule__Transition__ActionAssignment_5_1 ) + // InternalParser.g:1487:3: rule__Transition__ActionAssignment_5_1 + { + pushFollow(FOLLOW_2); + rule__Transition__ActionAssignment_5_1(); + + state._fsp--; + + + } + + after(grammarAccess.getTransitionAccess().getActionAssignment_5_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__Transition__Group_5__1__Impl" + + + // $ANTLR start "rule__Action__Group__0" + // InternalParser.g:1496:1: rule__Action__Group__0 : rule__Action__Group__0__Impl rule__Action__Group__1 ; + public final void rule__Action__Group__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1500:1: ( rule__Action__Group__0__Impl rule__Action__Group__1 ) + // InternalParser.g:1501:2: rule__Action__Group__0__Impl rule__Action__Group__1 + { + pushFollow(FOLLOW_11); + rule__Action__Group__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__Action__Group__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__Action__Group__0" + + + // $ANTLR start "rule__Action__Group__0__Impl" + // InternalParser.g:1508:1: rule__Action__Group__0__Impl : ( () ) ; + public final void rule__Action__Group__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1512:1: ( ( () ) ) + // InternalParser.g:1513:1: ( () ) + { + // InternalParser.g:1513:1: ( () ) + // InternalParser.g:1514:2: () + { + before(grammarAccess.getActionAccess().getActionAction_0()); + // InternalParser.g:1515:2: () + // InternalParser.g:1515:3: + { + } + + after(grammarAccess.getActionAccess().getActionAction_0()); + + } + + + } + + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__Action__Group__0__Impl" + + + // $ANTLR start "rule__Action__Group__1" + // InternalParser.g:1523:1: rule__Action__Group__1 : rule__Action__Group__1__Impl ; + public final void rule__Action__Group__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1527:1: ( rule__Action__Group__1__Impl ) + // InternalParser.g:1528:2: rule__Action__Group__1__Impl + { + pushFollow(FOLLOW_2); + rule__Action__Group__1__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__Action__Group__1" + + + // $ANTLR start "rule__Action__Group__1__Impl" + // InternalParser.g:1534:1: rule__Action__Group__1__Impl : ( ( rule__Action__ContentAssignment_1 ) ) ; + public final void rule__Action__Group__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1538:1: ( ( ( rule__Action__ContentAssignment_1 ) ) ) + // InternalParser.g:1539:1: ( ( rule__Action__ContentAssignment_1 ) ) + { + // InternalParser.g:1539:1: ( ( rule__Action__ContentAssignment_1 ) ) + // InternalParser.g:1540:2: ( rule__Action__ContentAssignment_1 ) + { + before(grammarAccess.getActionAccess().getContentAssignment_1()); + // InternalParser.g:1541:2: ( rule__Action__ContentAssignment_1 ) + // InternalParser.g:1541:3: rule__Action__ContentAssignment_1 + { + pushFollow(FOLLOW_2); + rule__Action__ContentAssignment_1(); + + state._fsp--; + + + } + + after(grammarAccess.getActionAccess().getContentAssignment_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__Action__Group__1__Impl" + + + // $ANTLR start "rule__Trigger__Group__0" + // InternalParser.g:1550:1: rule__Trigger__Group__0 : rule__Trigger__Group__0__Impl rule__Trigger__Group__1 ; + public final void rule__Trigger__Group__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1554:1: ( rule__Trigger__Group__0__Impl rule__Trigger__Group__1 ) + // InternalParser.g:1555:2: rule__Trigger__Group__0__Impl rule__Trigger__Group__1 + { + pushFollow(FOLLOW_11); + rule__Trigger__Group__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__Trigger__Group__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__Trigger__Group__0" + + + // $ANTLR start "rule__Trigger__Group__0__Impl" + // InternalParser.g:1562:1: rule__Trigger__Group__0__Impl : ( () ) ; + public final void rule__Trigger__Group__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1566:1: ( ( () ) ) + // InternalParser.g:1567:1: ( () ) + { + // InternalParser.g:1567:1: ( () ) + // InternalParser.g:1568:2: () + { + before(grammarAccess.getTriggerAccess().getTriggerAction_0()); + // InternalParser.g:1569:2: () + // InternalParser.g:1569:3: + { + } + + after(grammarAccess.getTriggerAccess().getTriggerAction_0()); + + } + + + } + + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__Trigger__Group__0__Impl" + + + // $ANTLR start "rule__Trigger__Group__1" + // InternalParser.g:1577:1: rule__Trigger__Group__1 : rule__Trigger__Group__1__Impl ; + public final void rule__Trigger__Group__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1581:1: ( rule__Trigger__Group__1__Impl ) + // InternalParser.g:1582:2: rule__Trigger__Group__1__Impl + { + pushFollow(FOLLOW_2); + rule__Trigger__Group__1__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__Trigger__Group__1" + + + // $ANTLR start "rule__Trigger__Group__1__Impl" + // InternalParser.g:1588:1: rule__Trigger__Group__1__Impl : ( ( rule__Trigger__ContentAssignment_1 ) ) ; + public final void rule__Trigger__Group__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1592:1: ( ( ( rule__Trigger__ContentAssignment_1 ) ) ) + // InternalParser.g:1593:1: ( ( rule__Trigger__ContentAssignment_1 ) ) + { + // InternalParser.g:1593:1: ( ( rule__Trigger__ContentAssignment_1 ) ) + // InternalParser.g:1594:2: ( rule__Trigger__ContentAssignment_1 ) + { + before(grammarAccess.getTriggerAccess().getContentAssignment_1()); + // InternalParser.g:1595:2: ( rule__Trigger__ContentAssignment_1 ) + // InternalParser.g:1595:3: rule__Trigger__ContentAssignment_1 + { + pushFollow(FOLLOW_2); + rule__Trigger__ContentAssignment_1(); + + state._fsp--; + + + } + + after(grammarAccess.getTriggerAccess().getContentAssignment_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__Trigger__Group__1__Impl" + + + // $ANTLR start "rule__Guard__Group__0" + // InternalParser.g:1604:1: rule__Guard__Group__0 : rule__Guard__Group__0__Impl rule__Guard__Group__1 ; + public final void rule__Guard__Group__0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1608:1: ( rule__Guard__Group__0__Impl rule__Guard__Group__1 ) + // InternalParser.g:1609:2: rule__Guard__Group__0__Impl rule__Guard__Group__1 + { + pushFollow(FOLLOW_4); + rule__Guard__Group__0__Impl(); + + state._fsp--; + + pushFollow(FOLLOW_2); + rule__Guard__Group__1(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__Guard__Group__0" + + + // $ANTLR start "rule__Guard__Group__0__Impl" + // InternalParser.g:1616:1: rule__Guard__Group__0__Impl : ( () ) ; + public final void rule__Guard__Group__0__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1620:1: ( ( () ) ) + // InternalParser.g:1621:1: ( () ) + { + // InternalParser.g:1621:1: ( () ) + // InternalParser.g:1622:2: () + { + before(grammarAccess.getGuardAccess().getGuardAction_0()); + // InternalParser.g:1623:2: () + // InternalParser.g:1623:3: + { + } + + after(grammarAccess.getGuardAccess().getGuardAction_0()); + + } + + + } + + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__Guard__Group__0__Impl" + + + // $ANTLR start "rule__Guard__Group__1" + // InternalParser.g:1631:1: rule__Guard__Group__1 : rule__Guard__Group__1__Impl ; + public final void rule__Guard__Group__1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1635:1: ( rule__Guard__Group__1__Impl ) + // InternalParser.g:1636:2: rule__Guard__Group__1__Impl + { + pushFollow(FOLLOW_2); + rule__Guard__Group__1__Impl(); + + state._fsp--; + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__Guard__Group__1" + + + // $ANTLR start "rule__Guard__Group__1__Impl" + // InternalParser.g:1642:1: rule__Guard__Group__1__Impl : ( ( rule__Guard__ContentAssignment_1 ) ) ; + public final void rule__Guard__Group__1__Impl() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1646:1: ( ( ( rule__Guard__ContentAssignment_1 ) ) ) + // InternalParser.g:1647:1: ( ( rule__Guard__ContentAssignment_1 ) ) + { + // InternalParser.g:1647:1: ( ( rule__Guard__ContentAssignment_1 ) ) + // InternalParser.g:1648:2: ( rule__Guard__ContentAssignment_1 ) + { + before(grammarAccess.getGuardAccess().getContentAssignment_1()); + // InternalParser.g:1649:2: ( rule__Guard__ContentAssignment_1 ) + // InternalParser.g:1649:3: rule__Guard__ContentAssignment_1 + { + pushFollow(FOLLOW_2); + rule__Guard__ContentAssignment_1(); + + state._fsp--; + + + } + + after(grammarAccess.getGuardAccess().getContentAssignment_1()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__Guard__Group__1__Impl" + + + // $ANTLR start "rule__StateMachine__NameAssignment_2" + // InternalParser.g:1658:1: rule__StateMachine__NameAssignment_2 : ( ruleEString ) ; + public final void rule__StateMachine__NameAssignment_2() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1662:1: ( ( ruleEString ) ) + // InternalParser.g:1663:2: ( ruleEString ) + { + // InternalParser.g:1663:2: ( ruleEString ) + // InternalParser.g:1664:3: ruleEString + { + before(grammarAccess.getStateMachineAccess().getNameEStringParserRuleCall_2_0()); + pushFollow(FOLLOW_2); + ruleEString(); + + state._fsp--; + + after(grammarAccess.getStateMachineAccess().getNameEStringParserRuleCall_2_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__StateMachine__NameAssignment_2" + + + // $ANTLR start "rule__StateMachine__InitialstateAssignment_4" + // InternalParser.g:1673:1: rule__StateMachine__InitialstateAssignment_4 : ( ruleInitialState ) ; + public final void rule__StateMachine__InitialstateAssignment_4() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1677:1: ( ( ruleInitialState ) ) + // InternalParser.g:1678:2: ( ruleInitialState ) + { + // InternalParser.g:1678:2: ( ruleInitialState ) + // InternalParser.g:1679:3: ruleInitialState + { + before(grammarAccess.getStateMachineAccess().getInitialstateInitialStateParserRuleCall_4_0()); + pushFollow(FOLLOW_2); + ruleInitialState(); + + state._fsp--; + + after(grammarAccess.getStateMachineAccess().getInitialstateInitialStateParserRuleCall_4_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__StateMachine__InitialstateAssignment_4" + + + // $ANTLR start "rule__StateMachine__StatesAssignment_5_0" + // InternalParser.g:1688:1: rule__StateMachine__StatesAssignment_5_0 : ( ruleNormalState ) ; + public final void rule__StateMachine__StatesAssignment_5_0() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1692:1: ( ( ruleNormalState ) ) + // InternalParser.g:1693:2: ( ruleNormalState ) + { + // InternalParser.g:1693:2: ( ruleNormalState ) + // InternalParser.g:1694:3: ruleNormalState + { + before(grammarAccess.getStateMachineAccess().getStatesNormalStateParserRuleCall_5_0_0()); + pushFollow(FOLLOW_2); + ruleNormalState(); + + state._fsp--; + + after(grammarAccess.getStateMachineAccess().getStatesNormalStateParserRuleCall_5_0_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__StateMachine__StatesAssignment_5_0" + + + // $ANTLR start "rule__StateMachine__FinalstatesAssignment_5_1" + // InternalParser.g:1703:1: rule__StateMachine__FinalstatesAssignment_5_1 : ( ruleFinalState ) ; + public final void rule__StateMachine__FinalstatesAssignment_5_1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1707:1: ( ( ruleFinalState ) ) + // InternalParser.g:1708:2: ( ruleFinalState ) + { + // InternalParser.g:1708:2: ( ruleFinalState ) + // InternalParser.g:1709:3: ruleFinalState + { + before(grammarAccess.getStateMachineAccess().getFinalstatesFinalStateParserRuleCall_5_1_0()); + pushFollow(FOLLOW_2); + ruleFinalState(); + + state._fsp--; + + after(grammarAccess.getStateMachineAccess().getFinalstatesFinalStateParserRuleCall_5_1_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__StateMachine__FinalstatesAssignment_5_1" + + + // $ANTLR start "rule__StateMachine__TransitionsAssignment_5_2" + // InternalParser.g:1718:1: rule__StateMachine__TransitionsAssignment_5_2 : ( ruleTransition ) ; + public final void rule__StateMachine__TransitionsAssignment_5_2() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1722:1: ( ( ruleTransition ) ) + // InternalParser.g:1723:2: ( ruleTransition ) + { + // InternalParser.g:1723:2: ( ruleTransition ) + // InternalParser.g:1724:3: ruleTransition + { + before(grammarAccess.getStateMachineAccess().getTransitionsTransitionParserRuleCall_5_2_0()); + pushFollow(FOLLOW_2); + ruleTransition(); + + state._fsp--; + + after(grammarAccess.getStateMachineAccess().getTransitionsTransitionParserRuleCall_5_2_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__StateMachine__TransitionsAssignment_5_2" + + + // $ANTLR start "rule__NormalState__NameAssignment_2" + // InternalParser.g:1733:1: rule__NormalState__NameAssignment_2 : ( ruleEString ) ; + public final void rule__NormalState__NameAssignment_2() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1737:1: ( ( ruleEString ) ) + // InternalParser.g:1738:2: ( ruleEString ) + { + // InternalParser.g:1738:2: ( ruleEString ) + // InternalParser.g:1739:3: ruleEString + { + before(grammarAccess.getNormalStateAccess().getNameEStringParserRuleCall_2_0()); + pushFollow(FOLLOW_2); + ruleEString(); + + state._fsp--; + + after(grammarAccess.getNormalStateAccess().getNameEStringParserRuleCall_2_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__NormalState__NameAssignment_2" + + + // $ANTLR start "rule__NormalState__Entry_Assignment_3_1_1" + // InternalParser.g:1748:1: rule__NormalState__Entry_Assignment_3_1_1 : ( ruleAction ) ; + public final void rule__NormalState__Entry_Assignment_3_1_1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1752:1: ( ( ruleAction ) ) + // InternalParser.g:1753:2: ( ruleAction ) + { + // InternalParser.g:1753:2: ( ruleAction ) + // InternalParser.g:1754:3: ruleAction + { + before(grammarAccess.getNormalStateAccess().getEntry_ActionParserRuleCall_3_1_1_0()); + pushFollow(FOLLOW_2); + ruleAction(); + + state._fsp--; + + after(grammarAccess.getNormalStateAccess().getEntry_ActionParserRuleCall_3_1_1_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__NormalState__Entry_Assignment_3_1_1" + + + // $ANTLR start "rule__NormalState__Do_Assignment_3_2_1" + // InternalParser.g:1763:1: rule__NormalState__Do_Assignment_3_2_1 : ( ruleAction ) ; + public final void rule__NormalState__Do_Assignment_3_2_1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1767:1: ( ( ruleAction ) ) + // InternalParser.g:1768:2: ( ruleAction ) + { + // InternalParser.g:1768:2: ( ruleAction ) + // InternalParser.g:1769:3: ruleAction + { + before(grammarAccess.getNormalStateAccess().getDo_ActionParserRuleCall_3_2_1_0()); + pushFollow(FOLLOW_2); + ruleAction(); + + state._fsp--; + + after(grammarAccess.getNormalStateAccess().getDo_ActionParserRuleCall_3_2_1_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__NormalState__Do_Assignment_3_2_1" + + + // $ANTLR start "rule__NormalState__Exit_Assignment_3_3_1" + // InternalParser.g:1778:1: rule__NormalState__Exit_Assignment_3_3_1 : ( ruleAction ) ; + public final void rule__NormalState__Exit_Assignment_3_3_1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1782:1: ( ( ruleAction ) ) + // InternalParser.g:1783:2: ( ruleAction ) + { + // InternalParser.g:1783:2: ( ruleAction ) + // InternalParser.g:1784:3: ruleAction + { + before(grammarAccess.getNormalStateAccess().getExit_ActionParserRuleCall_3_3_1_0()); + pushFollow(FOLLOW_2); + ruleAction(); + + state._fsp--; + + after(grammarAccess.getNormalStateAccess().getExit_ActionParserRuleCall_3_3_1_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__NormalState__Exit_Assignment_3_3_1" + + + // $ANTLR start "rule__FinalState__NameAssignment_2" + // InternalParser.g:1793:1: rule__FinalState__NameAssignment_2 : ( RULE_FINALSTATENAME ) ; + public final void rule__FinalState__NameAssignment_2() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1797:1: ( ( RULE_FINALSTATENAME ) ) + // InternalParser.g:1798:2: ( RULE_FINALSTATENAME ) + { + // InternalParser.g:1798:2: ( RULE_FINALSTATENAME ) + // InternalParser.g:1799:3: RULE_FINALSTATENAME + { + before(grammarAccess.getFinalStateAccess().getNameFINALSTATENAMETerminalRuleCall_2_0()); + match(input,RULE_FINALSTATENAME,FOLLOW_2); + after(grammarAccess.getFinalStateAccess().getNameFINALSTATENAMETerminalRuleCall_2_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__FinalState__NameAssignment_2" + + + // $ANTLR start "rule__InitialState__NameAssignment_2" + // InternalParser.g:1808:1: rule__InitialState__NameAssignment_2 : ( RULE_INITIALSTATENAME ) ; + public final void rule__InitialState__NameAssignment_2() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1812:1: ( ( RULE_INITIALSTATENAME ) ) + // InternalParser.g:1813:2: ( RULE_INITIALSTATENAME ) + { + // InternalParser.g:1813:2: ( RULE_INITIALSTATENAME ) + // InternalParser.g:1814:3: RULE_INITIALSTATENAME + { + before(grammarAccess.getInitialStateAccess().getNameINITIALSTATENAMETerminalRuleCall_2_0()); + match(input,RULE_INITIALSTATENAME,FOLLOW_2); + after(grammarAccess.getInitialStateAccess().getNameINITIALSTATENAMETerminalRuleCall_2_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__InitialState__NameAssignment_2" + + + // $ANTLR start "rule__Transition__FromAssignment_1" + // InternalParser.g:1823:1: rule__Transition__FromAssignment_1 : ( ( ruleEString ) ) ; + public final void rule__Transition__FromAssignment_1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1827:1: ( ( ( ruleEString ) ) ) + // InternalParser.g:1828:2: ( ( ruleEString ) ) + { + // InternalParser.g:1828:2: ( ( ruleEString ) ) + // InternalParser.g:1829:3: ( ruleEString ) + { + before(grammarAccess.getTransitionAccess().getFromStateCrossReference_1_0()); + // InternalParser.g:1830:3: ( ruleEString ) + // InternalParser.g:1831:4: ruleEString + { + before(grammarAccess.getTransitionAccess().getFromStateEStringParserRuleCall_1_0_1()); + pushFollow(FOLLOW_2); + ruleEString(); + + state._fsp--; + + after(grammarAccess.getTransitionAccess().getFromStateEStringParserRuleCall_1_0_1()); + + } + + after(grammarAccess.getTransitionAccess().getFromStateCrossReference_1_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__Transition__FromAssignment_1" + + + // $ANTLR start "rule__Transition__TriggerAssignment_3" + // InternalParser.g:1842:1: rule__Transition__TriggerAssignment_3 : ( ruleTrigger ) ; + public final void rule__Transition__TriggerAssignment_3() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1846:1: ( ( ruleTrigger ) ) + // InternalParser.g:1847:2: ( ruleTrigger ) + { + // InternalParser.g:1847:2: ( ruleTrigger ) + // InternalParser.g:1848:3: ruleTrigger + { + before(grammarAccess.getTransitionAccess().getTriggerTriggerParserRuleCall_3_0()); + pushFollow(FOLLOW_2); + ruleTrigger(); + + state._fsp--; + + after(grammarAccess.getTransitionAccess().getTriggerTriggerParserRuleCall_3_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__Transition__TriggerAssignment_3" + + + // $ANTLR start "rule__Transition__GuardAssignment_4_1" + // InternalParser.g:1857:1: rule__Transition__GuardAssignment_4_1 : ( ruleGuard ) ; + public final void rule__Transition__GuardAssignment_4_1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1861:1: ( ( ruleGuard ) ) + // InternalParser.g:1862:2: ( ruleGuard ) + { + // InternalParser.g:1862:2: ( ruleGuard ) + // InternalParser.g:1863:3: ruleGuard + { + before(grammarAccess.getTransitionAccess().getGuardGuardParserRuleCall_4_1_0()); + pushFollow(FOLLOW_2); + ruleGuard(); + + state._fsp--; + + after(grammarAccess.getTransitionAccess().getGuardGuardParserRuleCall_4_1_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__Transition__GuardAssignment_4_1" + + + // $ANTLR start "rule__Transition__ActionAssignment_5_1" + // InternalParser.g:1872:1: rule__Transition__ActionAssignment_5_1 : ( ruleAction ) ; + public final void rule__Transition__ActionAssignment_5_1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1876:1: ( ( ruleAction ) ) + // InternalParser.g:1877:2: ( ruleAction ) + { + // InternalParser.g:1877:2: ( ruleAction ) + // InternalParser.g:1878:3: ruleAction + { + before(grammarAccess.getTransitionAccess().getActionActionParserRuleCall_5_1_0()); + pushFollow(FOLLOW_2); + ruleAction(); + + state._fsp--; + + after(grammarAccess.getTransitionAccess().getActionActionParserRuleCall_5_1_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__Transition__ActionAssignment_5_1" + + + // $ANTLR start "rule__Transition__ToAssignment_7" + // InternalParser.g:1887:1: rule__Transition__ToAssignment_7 : ( ( ruleEString ) ) ; + public final void rule__Transition__ToAssignment_7() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1891:1: ( ( ( ruleEString ) ) ) + // InternalParser.g:1892:2: ( ( ruleEString ) ) + { + // InternalParser.g:1892:2: ( ( ruleEString ) ) + // InternalParser.g:1893:3: ( ruleEString ) + { + before(grammarAccess.getTransitionAccess().getToStateCrossReference_7_0()); + // InternalParser.g:1894:3: ( ruleEString ) + // InternalParser.g:1895:4: ruleEString + { + before(grammarAccess.getTransitionAccess().getToStateEStringParserRuleCall_7_0_1()); + pushFollow(FOLLOW_2); + ruleEString(); + + state._fsp--; + + after(grammarAccess.getTransitionAccess().getToStateEStringParserRuleCall_7_0_1()); + + } + + after(grammarAccess.getTransitionAccess().getToStateCrossReference_7_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__Transition__ToAssignment_7" + + + // $ANTLR start "rule__Action__ContentAssignment_1" + // InternalParser.g:1906:1: rule__Action__ContentAssignment_1 : ( ruleActivityContent ) ; + public final void rule__Action__ContentAssignment_1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1910:1: ( ( ruleActivityContent ) ) + // InternalParser.g:1911:2: ( ruleActivityContent ) + { + // InternalParser.g:1911:2: ( ruleActivityContent ) + // InternalParser.g:1912:3: ruleActivityContent + { + before(grammarAccess.getActionAccess().getContentActivityContentParserRuleCall_1_0()); + pushFollow(FOLLOW_2); + ruleActivityContent(); + + state._fsp--; + + after(grammarAccess.getActionAccess().getContentActivityContentParserRuleCall_1_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__Action__ContentAssignment_1" + + + // $ANTLR start "rule__Trigger__ContentAssignment_1" + // InternalParser.g:1921:1: rule__Trigger__ContentAssignment_1 : ( ruleActivityContent ) ; + public final void rule__Trigger__ContentAssignment_1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1925:1: ( ( ruleActivityContent ) ) + // InternalParser.g:1926:2: ( ruleActivityContent ) + { + // InternalParser.g:1926:2: ( ruleActivityContent ) + // InternalParser.g:1927:3: ruleActivityContent + { + before(grammarAccess.getTriggerAccess().getContentActivityContentParserRuleCall_1_0()); + pushFollow(FOLLOW_2); + ruleActivityContent(); + + state._fsp--; + + after(grammarAccess.getTriggerAccess().getContentActivityContentParserRuleCall_1_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__Trigger__ContentAssignment_1" + + + // $ANTLR start "rule__Guard__ContentAssignment_1" + // InternalParser.g:1936:1: rule__Guard__ContentAssignment_1 : ( ruleEString ) ; + public final void rule__Guard__ContentAssignment_1() throws RecognitionException { + + int stackSize = keepStackSize(); + + try { + // InternalParser.g:1940:1: ( ( ruleEString ) ) + // InternalParser.g:1941:2: ( ruleEString ) + { + // InternalParser.g:1941:2: ( ruleEString ) + // InternalParser.g:1942:3: ruleEString + { + before(grammarAccess.getGuardAccess().getContentEStringParserRuleCall_1_0()); + pushFollow(FOLLOW_2); + ruleEString(); + + state._fsp--; + + after(grammarAccess.getGuardAccess().getContentEStringParserRuleCall_1_0()); + + } + + + } + + } + catch (RecognitionException re) { + reportError(re); + recover(input,re); + } + finally { + + restoreStackSize(stackSize); + + } + return ; + } + // $ANTLR end "rule__Guard__ContentAssignment_1" + + // Delegated rules + + + + + public static final BitSet FOLLOW_1 = new BitSet(new long[]{0x0000000000000000L}); + public static final BitSet FOLLOW_2 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_3 = new BitSet(new long[]{0x0000000000004000L}); + public static final BitSet FOLLOW_4 = new BitSet(new long[]{0x00000000000001B0L}); + public static final BitSet FOLLOW_5 = new BitSet(new long[]{0x0000000000008000L}); + public static final BitSet FOLLOW_6 = new BitSet(new long[]{0x0000000000400000L}); + public static final BitSet FOLLOW_7 = new BitSet(new long[]{0x00000000002301B0L}); + public static final BitSet FOLLOW_8 = new BitSet(new long[]{0x00000000002201B2L}); + public static final BitSet FOLLOW_9 = new BitSet(new long[]{0x0000000000020000L}); + public static final BitSet FOLLOW_10 = new BitSet(new long[]{0x00000000001D0000L}); + public static final BitSet FOLLOW_11 = new BitSet(new long[]{0x0000000000000070L}); + public static final BitSet FOLLOW_12 = new BitSet(new long[]{0x0000000000200000L}); + public static final BitSet FOLLOW_13 = new BitSet(new long[]{0x0000000000000100L}); + public static final BitSet FOLLOW_14 = new BitSet(new long[]{0x0000000000000080L}); + public static final BitSet FOLLOW_15 = new BitSet(new long[]{0x00000000002201B0L}); + public static final BitSet FOLLOW_16 = new BitSet(new long[]{0x0000000000800000L}); + public static final BitSet FOLLOW_17 = new BitSet(new long[]{0x000000000B000070L}); + public static final BitSet FOLLOW_18 = new BitSet(new long[]{0x0000000004000000L}); + +} \ No newline at end of file diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/src/swt/most/statemachine/xtext/ide/ParserIdeModule.java b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/src/swt/most/statemachine/xtext/ide/ParserIdeModule.java new file mode 100644 index 0000000000000000000000000000000000000000..177f50823199799a39116c67e55e55c59aa97c3f --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/src/swt/most/statemachine/xtext/ide/ParserIdeModule.java @@ -0,0 +1,11 @@ +/* + * generated by Xtext 2.35.0 + */ +package swt.most.statemachine.xtext.ide; + + +/** + * Use this class to register ide components. + */ +public class ParserIdeModule extends AbstractParserIdeModule { +} diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/src/swt/most/statemachine/xtext/ide/ParserIdeSetup.java b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/src/swt/most/statemachine/xtext/ide/ParserIdeSetup.java new file mode 100644 index 0000000000000000000000000000000000000000..499f3640e3bcf8d952d8282e8e3392fdfbdd235b --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ide/src/swt/most/statemachine/xtext/ide/ParserIdeSetup.java @@ -0,0 +1,22 @@ +/* + * generated by Xtext 2.35.0 + */ +package swt.most.statemachine.xtext.ide; + +import com.google.inject.Guice; +import com.google.inject.Injector; +import org.eclipse.xtext.util.Modules2; +import swt.most.statemachine.xtext.ParserRuntimeModule; +import swt.most.statemachine.xtext.ParserStandaloneSetup; + +/** + * Initialization support for running Xtext languages as language servers. + */ +public class ParserIdeSetup extends ParserStandaloneSetup { + + @Override + public Injector createInjector() { + return Guice.createInjector(Modules2.mixin(new ParserRuntimeModule(), new ParserIdeModule())); + } + +} diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/.classpath b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..7994b693843c3539027c7d53e955031340c68cf2 --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/.classpath @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="src" path="src-gen"/> + <classpathentry kind="src" path="xtend-gen"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-21"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/.project b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/.project new file mode 100644 index 0000000000000000000000000000000000000000..3872cc9fbd58dc67a2b790eb0646b7700d4377a4 --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/.project @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>swt.most.statemachine.xtext.ui</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.xtext.ui.shared.xtextBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.SchemaBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.xtext.ui.shared.xtextNature</nature> + <nature>org.eclipse.jdt.core.javanature</nature> + <nature>org.eclipse.pde.PluginNature</nature> + </natures> +</projectDescription> diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/.settings/org.eclipse.core.resources.prefs b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000000000000000000000000000000000000..99f26c0203a7844de00dbfc56e6a35d8ed3c022c --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/<project>=UTF-8 diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/.settings/org.eclipse.jdt.core.prefs b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000000000000000000000000000000000000..3a79233b1335743cc32ed3638c1a2d0c1f52d303 --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,10 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=21 +org.eclipse.jdt.core.compiler.compliance=21 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=21 diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/META-INF/MANIFEST.MF b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..29377ba7863caa85099dccd1a380b070a81cdfe7 --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/META-INF/MANIFEST.MF @@ -0,0 +1,25 @@ +Manifest-Version: 1.0 +Automatic-Module-Name: swt.most.statemachine.xtext.ui +Bundle-ManifestVersion: 2 +Bundle-Name: swt.most.statemachine.xtext.ui +Bundle-Vendor: My Company +Bundle-Version: 1.0.0.qualifier +Bundle-SymbolicName: swt.most.statemachine.xtext.ui; singleton:=true +Bundle-ActivationPolicy: lazy +Require-Bundle: swt.most.statemachine.xtext, + swt.most.statemachine.xtext.ide, + swt.most.statemachine, + org.eclipse.xtext.ui, + org.eclipse.xtext.ui.shared, + org.eclipse.xtext.ui.codetemplates.ui, + org.eclipse.ui.editors;bundle-version="3.14.300", + org.eclipse.ui.ide;bundle-version="3.18.500", + org.eclipse.ui, + org.eclipse.compare, + org.eclipse.xtext.builder +Import-Package: org.apache.log4j +Bundle-RequiredExecutionEnvironment: JavaSE-21 +Export-Package: swt.most.statemachine.xtext.ui.contentassist, + swt.most.statemachine.xtext.ui.internal, + swt.most.statemachine.xtext.ui.quickfix +Bundle-Activator: swt.most.statemachine.xtext.ui.internal.XtextActivator diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/bin/swt/most/statemachine/xtext/ui/AbstractParserUiModule.class b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/bin/swt/most/statemachine/xtext/ui/AbstractParserUiModule.class new file mode 100644 index 0000000000000000000000000000000000000000..fc62b2b28936845f9e8e71513f12636d909a644b Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/bin/swt/most/statemachine/xtext/ui/AbstractParserUiModule.class differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/bin/swt/most/statemachine/xtext/ui/ParserExecutableExtensionFactory.class b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/bin/swt/most/statemachine/xtext/ui/ParserExecutableExtensionFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..f9fd8755791323cb1443cb5571a775dd4e210404 Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/bin/swt/most/statemachine/xtext/ui/ParserExecutableExtensionFactory.class differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/bin/swt/most/statemachine/xtext/ui/ParserUiModule.class b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/bin/swt/most/statemachine/xtext/ui/ParserUiModule.class new file mode 100644 index 0000000000000000000000000000000000000000..0fd5bab885b072b8b78d87f8f2e4a34f0d26d56d Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/bin/swt/most/statemachine/xtext/ui/ParserUiModule.class differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/bin/swt/most/statemachine/xtext/ui/contentassist/AbstractParserProposalProvider.class b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/bin/swt/most/statemachine/xtext/ui/contentassist/AbstractParserProposalProvider.class new file mode 100644 index 0000000000000000000000000000000000000000..8e5172b39cb33b3f530ce73c225c542ef3dbf783 Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/bin/swt/most/statemachine/xtext/ui/contentassist/AbstractParserProposalProvider.class differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/bin/swt/most/statemachine/xtext/ui/contentassist/ParserProposalProvider.class b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/bin/swt/most/statemachine/xtext/ui/contentassist/ParserProposalProvider.class new file mode 100644 index 0000000000000000000000000000000000000000..d9f7b31722489598a4c941a8ac5fbc2353c559cf Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/bin/swt/most/statemachine/xtext/ui/contentassist/ParserProposalProvider.class differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/bin/swt/most/statemachine/xtext/ui/internal/XtextActivator.class b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/bin/swt/most/statemachine/xtext/ui/internal/XtextActivator.class new file mode 100644 index 0000000000000000000000000000000000000000..ed7c34628d84d0c873560b0345ced6b718335a37 Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/bin/swt/most/statemachine/xtext/ui/internal/XtextActivator.class differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/bin/swt/most/statemachine/xtext/ui/labeling/ParserDescriptionLabelProvider.class b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/bin/swt/most/statemachine/xtext/ui/labeling/ParserDescriptionLabelProvider.class new file mode 100644 index 0000000000000000000000000000000000000000..9c7f58dcc439e6bc39bb64941223aaeda4663d57 Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/bin/swt/most/statemachine/xtext/ui/labeling/ParserDescriptionLabelProvider.class differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/bin/swt/most/statemachine/xtext/ui/labeling/ParserLabelProvider.class b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/bin/swt/most/statemachine/xtext/ui/labeling/ParserLabelProvider.class new file mode 100644 index 0000000000000000000000000000000000000000..dbf45573f4ce9949dccf076a182988d2e9451c44 Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/bin/swt/most/statemachine/xtext/ui/labeling/ParserLabelProvider.class differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/bin/swt/most/statemachine/xtext/ui/outline/ParserOutlineTreeProvider.class b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/bin/swt/most/statemachine/xtext/ui/outline/ParserOutlineTreeProvider.class new file mode 100644 index 0000000000000000000000000000000000000000..8d4cd298985e7238e29e1e6f27a0e9857c9b544f Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/bin/swt/most/statemachine/xtext/ui/outline/ParserOutlineTreeProvider.class differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/bin/swt/most/statemachine/xtext/ui/quickfix/ParserQuickfixProvider.class b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/bin/swt/most/statemachine/xtext/ui/quickfix/ParserQuickfixProvider.class new file mode 100644 index 0000000000000000000000000000000000000000..9f127c21896787bafcbd378b7ee08cbb06de2fec Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/bin/swt/most/statemachine/xtext/ui/quickfix/ParserQuickfixProvider.class differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/bin/swt/most/statemachine/xtext/validation/ParserValidatorConfigurationBlock.class b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/bin/swt/most/statemachine/xtext/validation/ParserValidatorConfigurationBlock.class new file mode 100644 index 0000000000000000000000000000000000000000..a94d66385a86f5a4aec8f82e0270ab79c671c1f4 Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/bin/swt/most/statemachine/xtext/validation/ParserValidatorConfigurationBlock.class differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/build.properties b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..323f56c513d04a1e0ba18fe2dad51f354dcb3201 --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/build.properties @@ -0,0 +1,7 @@ +source.. = src/,\ + src-gen/,\ + xtend-gen/ +bin.includes = .,\ + META-INF/,\ + plugin.xml +bin.excludes = **/*.xtend diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/plugin.xml b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..466fe2845195263ccea0b0c3933ad29f10e4c4a1 --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/plugin.xml @@ -0,0 +1,434 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.0"?> +<plugin> + <extension + point="org.eclipse.ui.editors"> + <editor + class="swt.most.statemachine.xtext.ui.ParserExecutableExtensionFactory:org.eclipse.xtext.ui.editor.XtextEditor" + contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor" + default="true" + extensions="statemachine" + id="swt.most.statemachine.xtext.Parser" + name="Parser Editor"> + </editor> + </extension> + <extension + point="org.eclipse.ui.handlers"> + <handler + class="swt.most.statemachine.xtext.ui.ParserExecutableExtensionFactory:org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclarationHandler" + commandId="org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclaration"> + <activeWhen> + <reference + definitionId="swt.most.statemachine.xtext.Parser.Editor.opened"> + </reference> + </activeWhen> + </handler> + <handler + class="swt.most.statemachine.xtext.ui.ParserExecutableExtensionFactory:org.eclipse.xtext.ui.editor.handler.ValidateActionHandler" + commandId="swt.most.statemachine.xtext.Parser.validate"> + <activeWhen> + <reference + definitionId="swt.most.statemachine.xtext.Parser.Editor.opened"> + </reference> + </activeWhen> + </handler> + <!-- copy qualified name --> + <handler + class="swt.most.statemachine.xtext.ui.ParserExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedNameHandler" + commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName"> + <activeWhen> + <reference definitionId="swt.most.statemachine.xtext.Parser.Editor.opened" /> + </activeWhen> + </handler> + <handler + class="swt.most.statemachine.xtext.ui.ParserExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedNameHandler" + commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName"> + <activeWhen> + <and> + <reference definitionId="swt.most.statemachine.xtext.Parser.XtextEditor.opened" /> + <iterate> + <adapt type="org.eclipse.xtext.ui.editor.outline.IOutlineNode" /> + </iterate> + </and> + </activeWhen> + </handler> + </extension> + <extension point="org.eclipse.core.expressions.definitions"> + <definition id="swt.most.statemachine.xtext.Parser.Editor.opened"> + <and> + <reference definitionId="isActiveEditorAnInstanceOfXtextEditor"/> + <with variable="activeEditor"> + <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" + value="swt.most.statemachine.xtext.Parser" + forcePluginActivation="true"/> + </with> + </and> + </definition> + <definition id="swt.most.statemachine.xtext.Parser.XtextEditor.opened"> + <and> + <reference definitionId="isXtextEditorActive"/> + <with variable="activeEditor"> + <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" + value="swt.most.statemachine.xtext.Parser" + forcePluginActivation="true"/> + </with> + </and> + </definition> + </extension> + <extension + point="org.eclipse.ui.preferencePages"> + <page + class="swt.most.statemachine.xtext.ui.ParserExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage" + id="swt.most.statemachine.xtext.Parser" + name="Parser"> + <keywordReference id="swt.most.statemachine.xtext.ui.keyword_Parser"/> + </page> + <page + category="swt.most.statemachine.xtext.Parser" + class="swt.most.statemachine.xtext.ui.ParserExecutableExtensionFactory:org.eclipse.xtext.ui.editor.syntaxcoloring.SyntaxColoringPreferencePage" + id="swt.most.statemachine.xtext.Parser.coloring" + name="Syntax Coloring"> + <keywordReference id="swt.most.statemachine.xtext.ui.keyword_Parser"/> + </page> + <page + category="swt.most.statemachine.xtext.Parser" + class="swt.most.statemachine.xtext.ui.ParserExecutableExtensionFactory:org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage" + id="swt.most.statemachine.xtext.Parser.templates" + name="Templates"> + <keywordReference id="swt.most.statemachine.xtext.ui.keyword_Parser"/> + </page> + </extension> + <extension + point="org.eclipse.ui.propertyPages"> + <page + class="swt.most.statemachine.xtext.ui.ParserExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage" + id="swt.most.statemachine.xtext.Parser" + name="Parser"> + <keywordReference id="swt.most.statemachine.xtext.ui.keyword_Parser"/> + <enabledWhen> + <adapt type="org.eclipse.core.resources.IProject"/> + </enabledWhen> + <filter name="projectNature" value="org.eclipse.xtext.ui.shared.xtextNature"/> + </page> + </extension> + <extension + point="org.eclipse.ui.keywords"> + <keyword + id="swt.most.statemachine.xtext.ui.keyword_Parser" + label="Parser"/> + </extension> + <extension + point="org.eclipse.ui.commands"> + <command + description="Trigger expensive validation" + id="swt.most.statemachine.xtext.Parser.validate" + name="Validate"> + </command> + <!-- copy qualified name --> + <command + id="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName" + categoryId="org.eclipse.ui.category.edit" + description="Copy the qualified name for the selected element" + name="Copy Qualified Name"> + </command> + <command + id="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName" + categoryId="org.eclipse.ui.category.edit" + description="Copy the qualified name for the selected element" + name="Copy Qualified Name"> + </command> + </extension> + <extension point="org.eclipse.ui.menus"> + <menuContribution + locationURI="popup:#TextEditorContext?after=group.edit"> + <command + commandId="swt.most.statemachine.xtext.Parser.validate" + style="push" + tooltip="Trigger expensive validation"> + <visibleWhen checkEnabled="false"> + <reference + definitionId="swt.most.statemachine.xtext.Parser.Editor.opened"> + </reference> + </visibleWhen> + </command> + </menuContribution> + <!-- copy qualified name --> + <menuContribution locationURI="popup:#TextEditorContext?after=copy"> + <command commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName" + style="push" tooltip="Copy Qualified Name"> + <visibleWhen checkEnabled="false"> + <reference definitionId="swt.most.statemachine.xtext.Parser.Editor.opened" /> + </visibleWhen> + </command> + </menuContribution> + <menuContribution locationURI="menu:edit?after=copy"> + <command commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName" + style="push" tooltip="Copy Qualified Name"> + <visibleWhen checkEnabled="false"> + <reference definitionId="swt.most.statemachine.xtext.Parser.Editor.opened" /> + </visibleWhen> + </command> + </menuContribution> + <menuContribution locationURI="popup:org.eclipse.xtext.ui.outline?after=additions"> + <command commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName" + style="push" tooltip="Copy Qualified Name"> + <visibleWhen checkEnabled="false"> + <and> + <reference definitionId="swt.most.statemachine.xtext.Parser.XtextEditor.opened" /> + <iterate> + <adapt type="org.eclipse.xtext.ui.editor.outline.IOutlineNode" /> + </iterate> + </and> + </visibleWhen> + </command> + </menuContribution> + </extension> + <extension point="org.eclipse.ui.menus"> + <menuContribution locationURI="popup:#TextEditorContext?endof=group.find"> + <command commandId="org.eclipse.xtext.ui.editor.FindReferences"> + <visibleWhen checkEnabled="false"> + <reference definitionId="swt.most.statemachine.xtext.Parser.Editor.opened"> + </reference> + </visibleWhen> + </command> + </menuContribution> + </extension> + <extension point="org.eclipse.ui.handlers"> + <handler + class="swt.most.statemachine.xtext.ui.ParserExecutableExtensionFactory:org.eclipse.xtext.ui.editor.findrefs.FindReferencesHandler" + commandId="org.eclipse.xtext.ui.editor.FindReferences"> + <activeWhen> + <reference + definitionId="swt.most.statemachine.xtext.Parser.Editor.opened"> + </reference> + </activeWhen> + </handler> + </extension> + <extension point="org.eclipse.core.contenttype.contentTypes"> + <content-type + base-type="org.eclipse.core.runtime.text" + file-extensions="statemachine" + id="swt.most.statemachine.xtext.Parser.contenttype" + name="Parser File" + priority="normal"> + </content-type> + </extension> + <!-- adding resource factories --> + <extension + point="org.eclipse.emf.ecore.extension_parser"> + <parser + class="swt.most.statemachine.xtext.ui.ParserExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory" + type="statemachine"> + </parser> + </extension> + <extension point="org.eclipse.xtext.extension_resourceServiceProvider"> + <resourceServiceProvider + class="swt.most.statemachine.xtext.ui.ParserExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider" + uriExtension="statemachine"> + </resourceServiceProvider> + </extension> + <!-- marker definitions for swt.most.statemachine.xtext.Parser --> + <extension + id="parser.check.fast" + name="Parser Problem" + point="org.eclipse.core.resources.markers"> + <super type="org.eclipse.xtext.ui.check.fast"/> + <persistent value="true"/> + </extension> + <extension + id="parser.check.normal" + name="Parser Problem" + point="org.eclipse.core.resources.markers"> + <super type="org.eclipse.xtext.ui.check.normal"/> + <persistent value="true"/> + </extension> + <extension + id="parser.check.expensive" + name="Parser Problem" + point="org.eclipse.core.resources.markers"> + <super type="org.eclipse.xtext.ui.check.expensive"/> + <persistent value="true"/> + </extension> + <extension point="org.eclipse.ui.preferencePages"> + <page + category="swt.most.statemachine.xtext.Parser" + class="swt.most.statemachine.xtext.ui.ParserExecutableExtensionFactory:org.eclipse.xtext.ui.validation.ValidatorPreferencePage" + id="swt.most.statemachine.xtext.Parser.validator.preferencePage" + name="Errors/Warnings"> + <keywordReference id="swt.most.statemachine.xtext.ui.keyword_Parser"/> + </page> + </extension> + <extension point="org.eclipse.xtext.builder.participant"> + <participant + class="swt.most.statemachine.xtext.ui.ParserExecutableExtensionFactory:org.eclipse.xtext.builder.IXtextBuilderParticipant" + fileExtensions="statemachine"/> + </extension> + <extension point="org.eclipse.ui.preferencePages"> + <page + category="swt.most.statemachine.xtext.Parser" + class="swt.most.statemachine.xtext.ui.ParserExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage" + id="swt.most.statemachine.xtext.Parser.compiler.preferencePage" + name="Compiler"> + <keywordReference id="swt.most.statemachine.xtext.ui.keyword_Parser"/> + </page> + </extension> + <extension point="org.eclipse.ui.propertyPages"> + <page + category="swt.most.statemachine.xtext.Parser" + class="swt.most.statemachine.xtext.ui.ParserExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage" + id="swt.most.statemachine.xtext.Parser.compiler.propertyPage" + name="Compiler"> + <keywordReference id="swt.most.statemachine.xtext.ui.keyword_Parser"/> + <enabledWhen> + <adapt type="org.eclipse.core.resources.IProject"/> + </enabledWhen> + <filter name="projectNature" value="org.eclipse.xtext.ui.shared.xtextNature"/> + </page> + </extension> + <extension point="org.eclipse.ui.menus"> + <menuContribution locationURI="popup:#TextEditorContext?after=xtext.ui.openDeclaration"> + <command + commandId="org.eclipse.xtext.ui.OpenGeneratedFileCommand" + id="swt.most.statemachine.xtext.Parser.OpenGeneratedCode" + style="push"> + <visibleWhen checkEnabled="false"> + <reference definitionId="swt.most.statemachine.xtext.Parser.Editor.opened" /> + </visibleWhen> + </command> + </menuContribution> + </extension> + <extension point="org.eclipse.ui.handlers"> + <handler + class="swt.most.statemachine.xtext.ui.ParserExecutableExtensionFactory:org.eclipse.xtext.ui.generator.trace.OpenGeneratedFileHandler" + commandId="org.eclipse.xtext.ui.OpenGeneratedFileCommand"> + <activeWhen> + <reference definitionId="swt.most.statemachine.xtext.Parser.Editor.opened" /> + </activeWhen> + </handler> + </extension> + <!-- Quick Outline --> + <extension + point="org.eclipse.ui.handlers"> + <handler + class="swt.most.statemachine.xtext.ui.ParserExecutableExtensionFactory:org.eclipse.xtext.ui.editor.outline.quickoutline.ShowQuickOutlineActionHandler" + commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline"> + <activeWhen> + <reference + definitionId="swt.most.statemachine.xtext.Parser.Editor.opened"> + </reference> + </activeWhen> + </handler> + </extension> + <extension + point="org.eclipse.ui.commands"> + <command + description="Open the quick outline." + id="org.eclipse.xtext.ui.editor.outline.QuickOutline" + name="Quick Outline"> + </command> + </extension> + <extension point="org.eclipse.ui.menus"> + <menuContribution + locationURI="popup:#TextEditorContext?after=group.open"> + <command commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline" + style="push" + tooltip="Open Quick Outline"> + <visibleWhen checkEnabled="false"> + <reference definitionId="swt.most.statemachine.xtext.Parser.Editor.opened"/> + </visibleWhen> + </command> + </menuContribution> + </extension> + <!-- quickfix marker resolution generator for swt.most.statemachine.xtext.Parser --> + <extension + point="org.eclipse.ui.ide.markerResolution"> + <markerResolutionGenerator + class="swt.most.statemachine.xtext.ui.ParserExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator" + markerType="swt.most.statemachine.xtext.ui.parser.check.fast"> + <attribute + name="FIXABLE_KEY" + value="true"> + </attribute> + </markerResolutionGenerator> + <markerResolutionGenerator + class="swt.most.statemachine.xtext.ui.ParserExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator" + markerType="swt.most.statemachine.xtext.ui.parser.check.normal"> + <attribute + name="FIXABLE_KEY" + value="true"> + </attribute> + </markerResolutionGenerator> + <markerResolutionGenerator + class="swt.most.statemachine.xtext.ui.ParserExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator" + markerType="swt.most.statemachine.xtext.ui.parser.check.expensive"> + <attribute + name="FIXABLE_KEY" + value="true"> + </attribute> + </markerResolutionGenerator> + </extension> + <!-- Rename Refactoring --> + <extension point="org.eclipse.ui.handlers"> + <handler + class="swt.most.statemachine.xtext.ui.ParserExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.DefaultRenameElementHandler" + commandId="org.eclipse.xtext.ui.refactoring.RenameElement"> + <activeWhen> + <reference + definitionId="swt.most.statemachine.xtext.Parser.Editor.opened"> + </reference> + </activeWhen> + </handler> + </extension> + <extension point="org.eclipse.ui.menus"> + <menuContribution + locationURI="popup:#TextEditorContext?after=group.edit"> + <command commandId="org.eclipse.xtext.ui.refactoring.RenameElement" + style="push"> + <visibleWhen checkEnabled="false"> + <reference + definitionId="swt.most.statemachine.xtext.Parser.Editor.opened"> + </reference> + </visibleWhen> + </command> + </menuContribution> + </extension> + <extension point="org.eclipse.ui.preferencePages"> + <page + category="swt.most.statemachine.xtext.Parser" + class="swt.most.statemachine.xtext.ui.ParserExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferencePage" + id="swt.most.statemachine.xtext.Parser.refactoring" + name="Refactoring"> + <keywordReference id="swt.most.statemachine.xtext.ui.keyword_Parser"/> + </page> + </extension> + <extension point="org.eclipse.compare.contentViewers"> + <viewer id="swt.most.statemachine.xtext.Parser.compare.contentViewers" + class="swt.most.statemachine.xtext.ui.ParserExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator" + extensions="statemachine"> + </viewer> + <contentTypeBinding + contentTypeId="swt.most.statemachine.xtext.Parser.contenttype" + contentViewerId="swt.most.statemachine.xtext.Parser.compare.contentViewers" /> + </extension> + <extension point="org.eclipse.compare.contentMergeViewers"> + <viewer id="swt.most.statemachine.xtext.Parser.compare.contentMergeViewers" + class="swt.most.statemachine.xtext.ui.ParserExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator" + extensions="statemachine" label="Parser Compare"> + </viewer> + <contentTypeBinding + contentTypeId="swt.most.statemachine.xtext.Parser.contenttype" + contentMergeViewerId="swt.most.statemachine.xtext.Parser.compare.contentMergeViewers" /> + </extension> + <extension point="org.eclipse.ui.editors.documentProviders"> + <provider id="swt.most.statemachine.xtext.Parser.editors.documentProviders" + class="swt.most.statemachine.xtext.ui.ParserExecutableExtensionFactory:org.eclipse.xtext.ui.editor.model.XtextDocumentProvider" + extensions="statemachine"> + </provider> + </extension> + <extension point="org.eclipse.team.core.fileTypes"> + <fileTypes + extension="statemachine" + type="text"> + </fileTypes> + </extension> +</plugin> diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/src-gen/swt/most/statemachine/xtext/ui/AbstractParserUiModule.java b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/src-gen/swt/most/statemachine/xtext/ui/AbstractParserUiModule.java new file mode 100644 index 0000000000000000000000000000000000000000..f7e1a9fd83f62466907320c0ada127eda09125bc --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/src-gen/swt/most/statemachine/xtext/ui/AbstractParserUiModule.java @@ -0,0 +1,300 @@ +/* + * generated by Xtext 2.35.0 + */ +package swt.most.statemachine.xtext.ui; + +import com.google.inject.Binder; +import com.google.inject.Provider; +import com.google.inject.name.Names; +import org.eclipse.compare.IViewerCreator; +import org.eclipse.core.resources.IWorkspaceRoot; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.jface.viewers.ILabelProvider; +import org.eclipse.ui.plugin.AbstractUIPlugin; +import org.eclipse.xtext.builder.BuilderParticipant; +import org.eclipse.xtext.builder.EclipseOutputConfigurationProvider; +import org.eclipse.xtext.builder.IXtextBuilderParticipant; +import org.eclipse.xtext.builder.builderState.IBuilderState; +import org.eclipse.xtext.builder.clustering.CurrentDescriptions; +import org.eclipse.xtext.builder.impl.PersistentDataAwareDirtyResource; +import org.eclipse.xtext.builder.nature.NatureAddingEditorCallback; +import org.eclipse.xtext.builder.preferences.BuilderPreferenceAccess; +import org.eclipse.xtext.generator.IContextualOutputConfigurationProvider; +import org.eclipse.xtext.ide.LexerIdeBindings; +import org.eclipse.xtext.ide.editor.contentassist.antlr.IContentAssistParser; +import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.Lexer; +import org.eclipse.xtext.ide.editor.partialEditing.IPartialEditingContentAssistParser; +import org.eclipse.xtext.parser.antlr.AntlrTokenDefProvider; +import org.eclipse.xtext.parser.antlr.ITokenDefProvider; +import org.eclipse.xtext.parser.antlr.LexerProvider; +import org.eclipse.xtext.resource.IResourceDescriptions; +import org.eclipse.xtext.resource.containers.IAllContainersState; +import org.eclipse.xtext.resource.impl.ResourceDescriptionsProvider; +import org.eclipse.xtext.service.SingletonBinding; +import org.eclipse.xtext.ui.DefaultUiModule; +import org.eclipse.xtext.ui.UIBindings; +import org.eclipse.xtext.ui.codetemplates.ui.AccessibleCodetemplatesActivator; +import org.eclipse.xtext.ui.codetemplates.ui.partialEditing.IPartialEditingContentAssistContextFactory; +import org.eclipse.xtext.ui.codetemplates.ui.partialEditing.PartialEditingContentAssistContextFactory; +import org.eclipse.xtext.ui.codetemplates.ui.preferences.AdvancedTemplatesPreferencePage; +import org.eclipse.xtext.ui.codetemplates.ui.preferences.TemplatesLanguageConfiguration; +import org.eclipse.xtext.ui.codetemplates.ui.registry.LanguageRegistrar; +import org.eclipse.xtext.ui.codetemplates.ui.registry.LanguageRegistry; +import org.eclipse.xtext.ui.compare.DefaultViewerCreator; +import org.eclipse.xtext.ui.editor.DocumentBasedDirtyResource; +import org.eclipse.xtext.ui.editor.IXtextEditorCallback; +import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext; +import org.eclipse.xtext.ui.editor.contentassist.FQNPrefixMatcher; +import org.eclipse.xtext.ui.editor.contentassist.IContentProposalProvider; +import org.eclipse.xtext.ui.editor.contentassist.IProposalConflictHelper; +import org.eclipse.xtext.ui.editor.contentassist.PrefixMatcher; +import org.eclipse.xtext.ui.editor.contentassist.antlr.AntlrProposalConflictHelper; +import org.eclipse.xtext.ui.editor.contentassist.antlr.DelegatingContentAssistContextFactory; +import org.eclipse.xtext.ui.editor.formatting.IContentFormatterFactory; +import org.eclipse.xtext.ui.editor.formatting2.ContentFormatterFactory; +import org.eclipse.xtext.ui.editor.outline.IOutlineTreeProvider; +import org.eclipse.xtext.ui.editor.outline.impl.IOutlineTreeStructureProvider; +import org.eclipse.xtext.ui.editor.preferences.IPreferenceStoreInitializer; +import org.eclipse.xtext.ui.editor.quickfix.IssueResolutionProvider; +import org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage; +import org.eclipse.xtext.ui.refactoring.IDependentElementsCalculator; +import org.eclipse.xtext.ui.refactoring.IReferenceUpdater; +import org.eclipse.xtext.ui.refactoring.IRenameRefactoringProvider; +import org.eclipse.xtext.ui.refactoring.IRenameStrategy; +import org.eclipse.xtext.ui.refactoring.impl.DefaultDependentElementsCalculator; +import org.eclipse.xtext.ui.refactoring.impl.DefaultReferenceUpdater; +import org.eclipse.xtext.ui.refactoring.impl.DefaultRenameRefactoringProvider; +import org.eclipse.xtext.ui.refactoring.impl.DefaultRenameStrategy; +import org.eclipse.xtext.ui.refactoring.ui.DefaultRenameSupport; +import org.eclipse.xtext.ui.refactoring.ui.IRenameSupport; +import org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferences; +import org.eclipse.xtext.ui.resource.ResourceServiceDescriptionLabelProvider; +import org.eclipse.xtext.ui.shared.Access; +import org.eclipse.xtext.ui.validation.AbstractValidatorConfigurationBlock; +import swt.most.statemachine.xtext.ide.contentassist.antlr.ParserParser; +import swt.most.statemachine.xtext.ide.contentassist.antlr.PartialParserContentAssistParser; +import swt.most.statemachine.xtext.ide.contentassist.antlr.internal.InternalParserLexer; +import swt.most.statemachine.xtext.ui.contentassist.ParserProposalProvider; +import swt.most.statemachine.xtext.ui.labeling.ParserDescriptionLabelProvider; +import swt.most.statemachine.xtext.ui.labeling.ParserLabelProvider; +import swt.most.statemachine.xtext.ui.outline.ParserOutlineTreeProvider; +import swt.most.statemachine.xtext.ui.quickfix.ParserQuickfixProvider; +import swt.most.statemachine.xtext.validation.ParserValidatorConfigurationBlock; + +/** + * Manual modifications go to {@link ParserUiModule}. + */ +@SuppressWarnings("all") +public abstract class AbstractParserUiModule extends DefaultUiModule { + + public AbstractParserUiModule(AbstractUIPlugin plugin) { + super(plugin); + } + + // contributed by org.eclipse.xtext.xtext.generator.ImplicitFragment + public Provider<? extends IAllContainersState> provideIAllContainersState() { + return Access.getJavaProjectsState(); + } + + // contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2 + public Class<? extends IProposalConflictHelper> bindIProposalConflictHelper() { + return AntlrProposalConflictHelper.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2 + public void configureContentAssistLexer(Binder binder) { + binder.bind(Lexer.class) + .annotatedWith(Names.named(LexerIdeBindings.CONTENT_ASSIST)) + .to(InternalParserLexer.class); + } + + // contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2 + public void configureHighlightingLexer(Binder binder) { + binder.bind(org.eclipse.xtext.parser.antlr.Lexer.class) + .annotatedWith(Names.named(LexerIdeBindings.HIGHLIGHTING)) + .to(swt.most.statemachine.xtext.parser.antlr.internal.InternalParserLexer.class); + } + + // contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2 + public void configureHighlightingTokenDefProvider(Binder binder) { + binder.bind(ITokenDefProvider.class) + .annotatedWith(Names.named(LexerIdeBindings.HIGHLIGHTING)) + .to(AntlrTokenDefProvider.class); + } + + // contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2 + public Class<? extends ContentAssistContext.Factory> bindContentAssistContext$Factory() { + return DelegatingContentAssistContextFactory.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2 + public Class<? extends IContentAssistParser> bindIContentAssistParser() { + return ParserParser.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2 + public void configureContentAssistLexerProvider(Binder binder) { + binder.bind(InternalParserLexer.class).toProvider(LexerProvider.create(InternalParserLexer.class)); + } + + // contributed by org.eclipse.xtext.xtext.generator.validation.ValidatorFragment2 + public Class<? extends AbstractValidatorConfigurationBlock> bindAbstractValidatorConfigurationBlock() { + return ParserValidatorConfigurationBlock.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.exporting.QualifiedNamesFragment2 + public Class<? extends PrefixMatcher> bindPrefixMatcher() { + return FQNPrefixMatcher.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.exporting.QualifiedNamesFragment2 + public Class<? extends IDependentElementsCalculator> bindIDependentElementsCalculator() { + return DefaultDependentElementsCalculator.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.builder.BuilderIntegrationFragment2 + public void configureIResourceDescriptionsBuilderScope(Binder binder) { + binder.bind(IResourceDescriptions.class).annotatedWith(Names.named(ResourceDescriptionsProvider.NAMED_BUILDER_SCOPE)).to(CurrentDescriptions.ResourceSetAware.class); + } + + // contributed by org.eclipse.xtext.xtext.generator.builder.BuilderIntegrationFragment2 + public Class<? extends IXtextEditorCallback> bindIXtextEditorCallback() { + return NatureAddingEditorCallback.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.builder.BuilderIntegrationFragment2 + public Class<? extends IContextualOutputConfigurationProvider> bindIContextualOutputConfigurationProvider() { + return EclipseOutputConfigurationProvider.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.builder.BuilderIntegrationFragment2 + public void configureIResourceDescriptionsPersisted(Binder binder) { + binder.bind(IResourceDescriptions.class).annotatedWith(Names.named(ResourceDescriptionsProvider.PERSISTED_DESCRIPTIONS)).to(IBuilderState.class); + } + + // contributed by org.eclipse.xtext.xtext.generator.builder.BuilderIntegrationFragment2 + public Class<? extends DocumentBasedDirtyResource> bindDocumentBasedDirtyResource() { + return PersistentDataAwareDirtyResource.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.generator.GeneratorFragment2 + public Class<? extends IXtextBuilderParticipant> bindIXtextBuilderParticipant() { + return BuilderParticipant.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.generator.GeneratorFragment2 + public IWorkspaceRoot bindIWorkspaceRootToInstance() { + return ResourcesPlugin.getWorkspace().getRoot(); + } + + // contributed by org.eclipse.xtext.xtext.generator.generator.GeneratorFragment2 + public void configureBuilderPreferenceStoreInitializer(Binder binder) { + binder.bind(IPreferenceStoreInitializer.class) + .annotatedWith(Names.named("builderPreferenceInitializer")) + .to(BuilderPreferenceAccess.Initializer.class); + } + + // contributed by org.eclipse.xtext.xtext.generator.formatting.Formatter2Fragment2 + public Class<? extends IContentFormatterFactory> bindIContentFormatterFactory() { + return ContentFormatterFactory.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.ui.labeling.LabelProviderFragment2 + public Class<? extends ILabelProvider> bindILabelProvider() { + return ParserLabelProvider.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.ui.labeling.LabelProviderFragment2 + public void configureResourceUIServiceLabelProvider(Binder binder) { + binder.bind(ILabelProvider.class).annotatedWith(ResourceServiceDescriptionLabelProvider.class).to(ParserDescriptionLabelProvider.class); + } + + // contributed by org.eclipse.xtext.xtext.generator.ui.outline.OutlineTreeProviderFragment2 + public Class<? extends IOutlineTreeProvider> bindIOutlineTreeProvider() { + return ParserOutlineTreeProvider.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.ui.outline.OutlineTreeProviderFragment2 + public Class<? extends IOutlineTreeStructureProvider> bindIOutlineTreeStructureProvider() { + return ParserOutlineTreeProvider.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.ui.quickfix.QuickfixProviderFragment2 + public Class<? extends IssueResolutionProvider> bindIssueResolutionProvider() { + return ParserQuickfixProvider.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.ui.contentAssist.ContentAssistFragment2 + public Class<? extends IContentProposalProvider> bindIContentProposalProvider() { + return ParserProposalProvider.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.ui.refactoring.RefactorElementNameFragment2 + public void configureIPreferenceStoreInitializer(Binder binder) { + binder.bind(IPreferenceStoreInitializer.class) + .annotatedWith(Names.named("RefactoringPreferences")) + .to(RefactoringPreferences.Initializer.class); + } + + // contributed by org.eclipse.xtext.xtext.generator.ui.refactoring.RefactorElementNameFragment2 + public Class<? extends IRenameStrategy> bindIRenameStrategy() { + return DefaultRenameStrategy.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.ui.refactoring.RefactorElementNameFragment2 + public Class<? extends IReferenceUpdater> bindIReferenceUpdater() { + return DefaultReferenceUpdater.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.ui.refactoring.RefactorElementNameFragment2 + public Class<? extends IRenameRefactoringProvider> bindIRenameRefactoringProvider() { + return DefaultRenameRefactoringProvider.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.ui.refactoring.RefactorElementNameFragment2 + public Class<? extends IRenameSupport.Factory> bindIRenameSupport$Factory() { + return DefaultRenameSupport.Factory.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.ui.templates.CodetemplatesGeneratorFragment2 + public Provider<? extends TemplatesLanguageConfiguration> provideTemplatesLanguageConfiguration() { + return AccessibleCodetemplatesActivator.getTemplatesLanguageConfigurationProvider(); + } + + // contributed by org.eclipse.xtext.xtext.generator.ui.templates.CodetemplatesGeneratorFragment2 + public Provider<? extends LanguageRegistry> provideLanguageRegistry() { + return AccessibleCodetemplatesActivator.getLanguageRegistry(); + } + + // contributed by org.eclipse.xtext.xtext.generator.ui.templates.CodetemplatesGeneratorFragment2 + @SingletonBinding(eager=true) + public Class<? extends LanguageRegistrar> bindLanguageRegistrar() { + return LanguageRegistrar.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.ui.templates.CodetemplatesGeneratorFragment2 + public Class<? extends XtextTemplatePreferencePage> bindXtextTemplatePreferencePage() { + return AdvancedTemplatesPreferencePage.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.ui.templates.CodetemplatesGeneratorFragment2 + public Class<? extends IPartialEditingContentAssistParser> bindIPartialEditingContentAssistParser() { + return PartialParserContentAssistParser.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.ui.templates.CodetemplatesGeneratorFragment2 + public Class<? extends IPartialEditingContentAssistContextFactory> bindIPartialEditingContentAssistContextFactory() { + return PartialEditingContentAssistContextFactory.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.ui.compare.CompareFragment2 + public Class<? extends IViewerCreator> bindIViewerCreator() { + return DefaultViewerCreator.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.ui.compare.CompareFragment2 + public void configureCompareViewerTitle(Binder binder) { + binder.bind(String.class).annotatedWith(Names.named(UIBindings.COMPARE_VIEWER_TITLE)).toInstance("Parser Compare"); + } + +} diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/src-gen/swt/most/statemachine/xtext/ui/ParserExecutableExtensionFactory.java b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/src-gen/swt/most/statemachine/xtext/ui/ParserExecutableExtensionFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..7724535c4a96949cef757cd79b1a5612bd80850e --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/src-gen/swt/most/statemachine/xtext/ui/ParserExecutableExtensionFactory.java @@ -0,0 +1,29 @@ +/* + * generated by Xtext 2.35.0 + */ +package swt.most.statemachine.xtext.ui; + +import com.google.inject.Injector; +import org.eclipse.xtext.ui.guice.AbstractGuiceAwareExecutableExtensionFactory; +import org.osgi.framework.Bundle; +import org.osgi.framework.FrameworkUtil; +import swt.most.statemachine.xtext.ui.internal.XtextActivator; + +/** + * This class was generated. Customizations should only happen in a newly + * introduced subclass. + */ +public class ParserExecutableExtensionFactory extends AbstractGuiceAwareExecutableExtensionFactory { + + @Override + protected Bundle getBundle() { + return FrameworkUtil.getBundle(XtextActivator.class); + } + + @Override + protected Injector getInjector() { + XtextActivator activator = XtextActivator.getInstance(); + return activator != null ? activator.getInjector(XtextActivator.SWT_MOST_STATEMACHINE_XTEXT_PARSER) : null; + } + +} diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/src-gen/swt/most/statemachine/xtext/ui/contentassist/AbstractParserProposalProvider.java b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/src-gen/swt/most/statemachine/xtext/ui/contentassist/AbstractParserProposalProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..bf264bdebad62df37438073d0c4409e81d879c2c --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/src-gen/swt/most/statemachine/xtext/ui/contentassist/AbstractParserProposalProvider.java @@ -0,0 +1,121 @@ +/* + * generated by Xtext 2.35.0 + */ +package swt.most.statemachine.xtext.ui.contentassist; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.xtext.Assignment; +import org.eclipse.xtext.CrossReference; +import org.eclipse.xtext.RuleCall; +import org.eclipse.xtext.common.ui.contentassist.TerminalsProposalProvider; +import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext; +import org.eclipse.xtext.ui.editor.contentassist.ICompletionProposalAcceptor; + +/** + * Represents a generated, default implementation of superclass {@link TerminalsProposalProvider}. + * Methods are dynamically dispatched on the first parameter, i.e., you can override them + * with a more concrete subtype. + */ +public abstract class AbstractParserProposalProvider extends TerminalsProposalProvider { + + public void completeStateMachine_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + } + public void completeStateMachine_Initialstate(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + } + public void completeStateMachine_States(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + } + public void completeStateMachine_Finalstates(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + } + public void completeStateMachine_Transitions(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + } + public void completeNormalState_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + } + public void completeNormalState_Entry_(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + } + public void completeNormalState_Do_(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + } + public void completeNormalState_Exit_(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + } + public void completeFinalState_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + } + public void completeInitialState_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + } + public void completeTransition_From(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor); + } + public void completeTransition_Trigger(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + } + public void completeTransition_Guard(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + } + public void completeTransition_Action(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + } + public void completeTransition_To(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor); + } + public void completeAction_Content(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + } + public void completeTrigger_Content(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + } + public void completeGuard_Content(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + } + + public void complete_StateMachine(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_State(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_NormalState(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_FinalState(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_InitialState(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_Transition(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_Action(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_Trigger(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_Guard(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_INITIALSTATENAME(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_FINALSTATENAME(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_ActivityContent(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_CALL(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } + public void complete_EString(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + // subclasses may override + } +} diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/src-gen/swt/most/statemachine/xtext/ui/internal/XtextActivator.java b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/src-gen/swt/most/statemachine/xtext/ui/internal/XtextActivator.java new file mode 100644 index 0000000000000000000000000000000000000000..60945fab7b9b272cdb01e9d74d08701380cbad5e --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/src-gen/swt/most/statemachine/xtext/ui/internal/XtextActivator.java @@ -0,0 +1,94 @@ +/* + * generated by Xtext 2.35.0 + */ +package swt.most.statemachine.xtext.ui.internal; + +import com.google.common.collect.Maps; +import com.google.inject.Guice; +import com.google.inject.Injector; +import java.util.Collections; +import java.util.Map; +import org.apache.log4j.Logger; +import org.eclipse.ui.plugin.AbstractUIPlugin; +import org.eclipse.xtext.ui.shared.SharedStateModule; +import org.eclipse.xtext.util.Modules2; +import org.osgi.framework.BundleContext; +import swt.most.statemachine.xtext.ParserRuntimeModule; +import swt.most.statemachine.xtext.ui.ParserUiModule; + +/** + * This class was generated. Customizations should only happen in a newly + * introduced subclass. + */ +public class XtextActivator extends AbstractUIPlugin { + + public static final String PLUGIN_ID = "swt.most.statemachine.xtext.ui"; + public static final String SWT_MOST_STATEMACHINE_XTEXT_PARSER = "swt.most.statemachine.xtext.Parser"; + + private static final Logger logger = Logger.getLogger(XtextActivator.class); + + private static XtextActivator INSTANCE; + + private Map<String, Injector> injectors = Collections.synchronizedMap(Maps.<String, Injector> newHashMapWithExpectedSize(1)); + + @Override + public void start(BundleContext context) throws Exception { + super.start(context); + INSTANCE = this; + } + + @Override + public void stop(BundleContext context) throws Exception { + injectors.clear(); + INSTANCE = null; + super.stop(context); + } + + public static XtextActivator getInstance() { + return INSTANCE; + } + + public Injector getInjector(String language) { + synchronized (injectors) { + Injector injector = injectors.get(language); + if (injector == null) { + injectors.put(language, injector = createInjector(language)); + } + return injector; + } + } + + protected Injector createInjector(String language) { + try { + com.google.inject.Module runtimeModule = getRuntimeModule(language); + com.google.inject.Module sharedStateModule = getSharedStateModule(); + com.google.inject.Module uiModule = getUiModule(language); + com.google.inject.Module mergedModule = Modules2.mixin(runtimeModule, sharedStateModule, uiModule); + return Guice.createInjector(mergedModule); + } catch (Exception e) { + logger.error("Failed to create injector for " + language); + logger.error(e.getMessage(), e); + throw new RuntimeException("Failed to create injector for " + language, e); + } + } + + protected com.google.inject.Module getRuntimeModule(String grammar) { + if (SWT_MOST_STATEMACHINE_XTEXT_PARSER.equals(grammar)) { + return new ParserRuntimeModule(); + } + throw new IllegalArgumentException(grammar); + } + + protected com.google.inject.Module getUiModule(String grammar) { + if (SWT_MOST_STATEMACHINE_XTEXT_PARSER.equals(grammar)) { + return new ParserUiModule(this); + } + throw new IllegalArgumentException(grammar); + } + + protected com.google.inject.Module getSharedStateModule() { + return new SharedStateModule(); + } + + +} diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/src-gen/swt/most/statemachine/xtext/validation/ParserValidatorConfigurationBlock.java b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/src-gen/swt/most/statemachine/xtext/validation/ParserValidatorConfigurationBlock.java new file mode 100644 index 0000000000000000000000000000000000000000..0b0a766eaa8ca47c930b458a91fef9723fca593b --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/src-gen/swt/most/statemachine/xtext/validation/ParserValidatorConfigurationBlock.java @@ -0,0 +1,35 @@ +/* + * generated by Xtext 2.35.0 + */ +package swt.most.statemachine.xtext.validation; + +import org.eclipse.jface.dialogs.IDialogSettings; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.xtext.ui.validation.AbstractValidatorConfigurationBlock; + +@SuppressWarnings("restriction") +public class ParserValidatorConfigurationBlock extends AbstractValidatorConfigurationBlock { + + protected static final String SETTINGS_SECTION_NAME = "Parser"; + + @Override + protected void fillSettingsPage(Composite composite, int nColumns, int defaultIndent) { + addComboBox(ParserConfigurableIssueCodesProvider.DEPRECATED_MODEL_PART, "Deprecated Model Part", composite, defaultIndent); + } + + @Override + public void dispose() { + storeSectionExpansionStates(getDialogSettings()); + super.dispose(); + } + + @Override + protected IDialogSettings getDialogSettings() { + IDialogSettings dialogSettings = super.getDialogSettings(); + IDialogSettings section = dialogSettings.getSection(SETTINGS_SECTION_NAME); + if (section == null) { + return dialogSettings.addNewSection(SETTINGS_SECTION_NAME); + } + return section; + } +} diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/src/swt/most/statemachine/xtext/ui/ParserUiModule.java b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/src/swt/most/statemachine/xtext/ui/ParserUiModule.java new file mode 100644 index 0000000000000000000000000000000000000000..73921655f1f6520ee347ce46958df70888158996 --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/src/swt/most/statemachine/xtext/ui/ParserUiModule.java @@ -0,0 +1,16 @@ +/* + * generated by Xtext 2.35.0 + */ +package swt.most.statemachine.xtext.ui; + +import org.eclipse.ui.plugin.AbstractUIPlugin; + +/** + * Use this class to register components to be used within the Eclipse IDE. + */ +public class ParserUiModule extends AbstractParserUiModule { + + public ParserUiModule(AbstractUIPlugin plugin) { + super(plugin); + } +} diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/src/swt/most/statemachine/xtext/ui/contentassist/ParserProposalProvider.java b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/src/swt/most/statemachine/xtext/ui/contentassist/ParserProposalProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..a80a2bb451576c17106a468ca1c0e837868b50d8 --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/src/swt/most/statemachine/xtext/ui/contentassist/ParserProposalProvider.java @@ -0,0 +1,12 @@ +/* + * generated by Xtext 2.35.0 + */ +package swt.most.statemachine.xtext.ui.contentassist; + + +/** + * See https://www.eclipse.org/Xtext/documentation/310_eclipse_support.html#content-assist + * on how to customize the content assistant. + */ +public class ParserProposalProvider extends AbstractParserProposalProvider { +} diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/src/swt/most/statemachine/xtext/ui/labeling/ParserDescriptionLabelProvider.java b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/src/swt/most/statemachine/xtext/ui/labeling/ParserDescriptionLabelProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..b70c4f48f1445ca67f9fd4597699217476c1b61e --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/src/swt/most/statemachine/xtext/ui/labeling/ParserDescriptionLabelProvider.java @@ -0,0 +1,25 @@ +/* + * generated by Xtext 2.35.0 + */ +package swt.most.statemachine.xtext.ui.labeling; + +import org.eclipse.xtext.ui.label.DefaultDescriptionLabelProvider; + +/** + * Provides labels for IEObjectDescriptions and IResourceDescriptions. + * + * See https://www.eclipse.org/Xtext/documentation/310_eclipse_support.html#label-provider + */ +public class ParserDescriptionLabelProvider extends DefaultDescriptionLabelProvider { + + // Labels and icons can be computed like this: +// @Override +// public String text(IEObjectDescription ele) { +// return ele.getName().toString(); +// } +// +// @Override +// public String image(IEObjectDescription ele) { +// return ele.getEClass().getName() + ".gif"; +// } +} diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/src/swt/most/statemachine/xtext/ui/labeling/ParserLabelProvider.java b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/src/swt/most/statemachine/xtext/ui/labeling/ParserLabelProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..803ff2d016e1e6638ff5fc32f37f50d75519e8d2 --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/src/swt/most/statemachine/xtext/ui/labeling/ParserLabelProvider.java @@ -0,0 +1,31 @@ +/* + * generated by Xtext 2.35.0 + */ +package swt.most.statemachine.xtext.ui.labeling; + +import com.google.inject.Inject; +import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider; +import org.eclipse.xtext.ui.label.DefaultEObjectLabelProvider; + +/** + * Provides labels for EObjects. + * + * See https://www.eclipse.org/Xtext/documentation/310_eclipse_support.html#label-provider + */ +public class ParserLabelProvider extends DefaultEObjectLabelProvider { + + @Inject + public ParserLabelProvider(AdapterFactoryLabelProvider delegate) { + super(delegate); + } + + // Labels and icons can be computed like this: + +// String text(Greeting ele) { +// return "A greeting to " + ele.getName(); +// } +// +// String image(Greeting ele) { +// return "Greeting.gif"; +// } +} diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/src/swt/most/statemachine/xtext/ui/outline/ParserOutlineTreeProvider.java b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/src/swt/most/statemachine/xtext/ui/outline/ParserOutlineTreeProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..7ffaf5ad35d79e80ed06f1c57b985456725a1538 --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/src/swt/most/statemachine/xtext/ui/outline/ParserOutlineTreeProvider.java @@ -0,0 +1,15 @@ +/* + * generated by Xtext 2.35.0 + */ +package swt.most.statemachine.xtext.ui.outline; + +import org.eclipse.xtext.ui.editor.outline.impl.DefaultOutlineTreeProvider; + +/** + * Customization of the default outline structure. + * + * See https://www.eclipse.org/Xtext/documentation/310_eclipse_support.html#outline + */ +public class ParserOutlineTreeProvider extends DefaultOutlineTreeProvider { + +} diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/src/swt/most/statemachine/xtext/ui/quickfix/ParserQuickfixProvider.java b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/src/swt/most/statemachine/xtext/ui/quickfix/ParserQuickfixProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..ef81b8f374a713f283375fa2e531341e76bd098f --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext.ui/src/swt/most/statemachine/xtext/ui/quickfix/ParserQuickfixProvider.java @@ -0,0 +1,26 @@ +/* + * generated by Xtext 2.35.0 + */ +package swt.most.statemachine.xtext.ui.quickfix; + +import org.eclipse.xtext.ui.editor.quickfix.DefaultQuickfixProvider; + +/** + * Custom quickfixes. + * + * See https://www.eclipse.org/Xtext/documentation/310_eclipse_support.html#quick-fixes + */ +public class ParserQuickfixProvider extends DefaultQuickfixProvider { + +// @Fix(ParserValidator.INVALID_NAME) +// public void capitalizeName(final Issue issue, IssueResolutionAcceptor acceptor) { +// acceptor.accept(issue, "Capitalize name", "Capitalize the name.", "upcase.png", new IModification() { +// public void apply(IModificationContext context) throws BadLocationException { +// IXtextDocument xtextDocument = context.getXtextDocument(); +// String firstLetter = xtextDocument.get(issue.getOffset(), 1); +// xtextDocument.replace(issue.getOffset(), 1, firstLetter.toUpperCase()); +// } +// }); +// } + +} diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/.antlr-generator-3.2.0-patch.jar b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/.antlr-generator-3.2.0-patch.jar new file mode 100644 index 0000000000000000000000000000000000000000..90516fd7ac76a3ec685e046f91eb762e68e20586 Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/.antlr-generator-3.2.0-patch.jar differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/.classpath b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..7994b693843c3539027c7d53e955031340c68cf2 --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/.classpath @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="src" path="src-gen"/> + <classpathentry kind="src" path="xtend-gen"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-21"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/.launch/Generate Parser (statemachine) Language Infrastructure.launch b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/.launch/Generate Parser (statemachine) Language Infrastructure.launch new file mode 100644 index 0000000000000000000000000000000000000000..e62e7d7a982f477f3e36625bf188b26478998070 --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/.launch/Generate Parser (statemachine) Language Infrastructure.launch @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<launchConfiguration type="org.eclipse.emf.mwe2.launch.Mwe2LaunchConfigurationType"> +<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS"> +<listEntry value="/swt.most.statemachine.xtext"/> +</listAttribute> +<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES"> +<listEntry value="4"/> +</listAttribute> +<listAttribute key="org.eclipse.debug.ui.favoriteGroups"> +<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/> +<listEntry value="org.eclipse.debug.ui.launchGroup.run"/> +</listAttribute> +<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${working_set:<?xml version="1.0" encoding="UTF-8"?> <resources> <item path="/swt.most.statemachine.xtext" type="4"/> <item path="/swt.most.statemachine.xtext.ide" type="4"/> <item path="/swt.most.statemachine.xtext.ui" type="4"/> ;</resources>}"/> +<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.emf.mwe2.launch.runtime.Mwe2Launcher"/> +<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="swt.most.statemachine.xtext.GenerateParser"/> +<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="swt.most.statemachine.xtext"/> +<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xmx512m"/> +</launchConfiguration> diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/.launch/Launch Runtime Eclipse.launch b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/.launch/Launch Runtime Eclipse.launch new file mode 100644 index 0000000000000000000000000000000000000000..dbcc185c0c75439e87bed3d57d55576125dcfeb6 --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/.launch/Launch Runtime Eclipse.launch @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<launchConfiguration type="org.eclipse.pde.ui.RuntimeWorkbench"> +<booleanAttribute key="append.args" value="true"/> +<booleanAttribute key="askclear" value="true"/> +<booleanAttribute key="automaticAdd" value="true"/> +<booleanAttribute key="automaticValidate" value="false"/> +<stringAttribute key="bad_container_name" value="/swt.most.statemachine.xtext/.launch/"/> +<stringAttribute key="bootstrap" value=""/> +<stringAttribute key="checked" value="[NONE]"/> +<booleanAttribute key="clearConfig" value="true"/> +<booleanAttribute key="clearws" value="false"/> +<booleanAttribute key="clearwslog" value="false"/> +<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/Launch Runtime Eclipse"/> +<booleanAttribute key="default" value="true"/> +<booleanAttribute key="includeOptional" value="true"/> +<stringAttribute key="location" value="${workspace_loc}/../runtime-EclipseXtext"/> +<listAttribute key="org.eclipse.debug.ui.favoriteGroups"> +<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/> +<listEntry value="org.eclipse.debug.ui.launchGroup.run"/> +</listAttribute> +<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-21"/> +<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl}"/> +<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/> +<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xms40m -Xmx512m"/> +<stringAttribute key="pde.version" value="3.3"/> +<stringAttribute key="product" value="org.eclipse.platform.ide"/> +<booleanAttribute key="show_selected_only" value="false"/> +<stringAttribute key="templateConfig" value="${target_home}/configuration/config.ini"/> +<booleanAttribute key="tracing" value="false"/> +<booleanAttribute key="useDefaultConfig" value="true"/> +<booleanAttribute key="useDefaultConfigArea" value="true"/> +<booleanAttribute key="useProduct" value="true"/> +<booleanAttribute key="usefeatures" value="false"/> +</launchConfiguration> diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/.project b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/.project new file mode 100644 index 0000000000000000000000000000000000000000..c68f1bdca6f6b51e130322da5365b5ad7e42bcba --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/.project @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>swt.most.statemachine.xtext</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.xtext.ui.shared.xtextBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.SchemaBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.xtext.ui.shared.xtextNature</nature> + <nature>org.eclipse.jdt.core.javanature</nature> + <nature>org.eclipse.pde.PluginNature</nature> + </natures> +</projectDescription> diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/.settings/org.eclipse.core.resources.prefs b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000000000000000000000000000000000000..99f26c0203a7844de00dbfc56e6a35d8ed3c022c --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/<project>=UTF-8 diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/.settings/org.eclipse.jdt.core.prefs b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000000000000000000000000000000000000..3a79233b1335743cc32ed3638c1a2d0c1f52d303 --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,10 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=21 +org.eclipse.jdt.core.compiler.compliance=21 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=21 diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/META-INF/MANIFEST.MF b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..7c04a7fe8ec9ee36b17e8dfccc93bad4e8b215f9 --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/META-INF/MANIFEST.MF @@ -0,0 +1,25 @@ +Manifest-Version: 1.0 +Automatic-Module-Name: swt.most.statemachine.xtext +Bundle-ManifestVersion: 2 +Bundle-Name: swt.most.statemachine.xtext +Bundle-Vendor: My Company +Bundle-Version: 1.0.0.qualifier +Bundle-SymbolicName: swt.most.statemachine.xtext; singleton:=true +Bundle-ActivationPolicy: lazy +Require-Bundle: swt.most.statemachine, + org.eclipse.xtext, + org.eclipse.xtext.xbase, + org.eclipse.equinox.common;bundle-version="3.16.0", + org.eclipse.xtext.xbase.lib;bundle-version="2.35.0", + org.antlr.runtime;bundle-version="[3.2.0,3.2.1)" +Bundle-RequiredExecutionEnvironment: JavaSE-21 +Export-Package: swt.most.statemachine.xtext.serializer, + swt.most.statemachine.xtext, + swt.most.statemachine.xtext.parser.antlr, + swt.most.statemachine.xtext.parser.antlr.internal, + swt.most.statemachine.xtext.generator, + swt.most.statemachine.xtext.scoping, + swt.most.statemachine.xtext.formatting2, + swt.most.statemachine.xtext.services, + swt.most.statemachine.xtext.validation +Import-Package: org.apache.log4j diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/AbstractParserRuntimeModule.class b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/AbstractParserRuntimeModule.class new file mode 100644 index 0000000000000000000000000000000000000000..cec660a54d89f07520162d1ead9bc2e31ab5f3bd Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/AbstractParserRuntimeModule.class differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/GenerateParser.mwe2 b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/GenerateParser.mwe2 new file mode 100644 index 0000000000000000000000000000000000000000..df9ec2cb34402510bb10782fd86ed8d96932aeff --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/GenerateParser.mwe2 @@ -0,0 +1,59 @@ +module swt.most.statemachine.xtext.GenerateParser + +import org.eclipse.xtext.xtext.generator.* +import org.eclipse.xtext.xtext.generator.model.project.* + +var rootPath = ".." + +Workflow { + + component = XtextGenerator { + configuration = { + project = StandardProjectConfig { + baseName = "swt.most.statemachine.xtext" + rootPath = rootPath + eclipsePlugin = { + enabled = true + } + createEclipseMetaData = true + } + code = { + encoding = "UTF-8" + lineDelimiter = "\r\n" + fileHeader = "/*\n * generated by Xtext \${version}\n */" + preferXtendStubs = false + } + } + language = StandardLanguage { + name = "swt.most.statemachine.xtext.Parser" + fileExtensions = "statemachine" + referencedResource = "platform:/resource/swt.most.statemachine/model/statemachine.genmodel" + + fragment = ecore2xtext.Ecore2XtextValueConverterServiceFragment2 auto-inject {} + + formatter = { + generateStub = true + generateXtendStub = true + } + + serializer = { + generateStub = false + } + validator = { + // composedCheck = "org.eclipse.xtext.validation.NamesAreUniqueValidator" + + // Enables several checks on the inferred Jvm model for Xbase languages concerning Java inheritance relations + // composedCheck = "org.eclipse.xtext.xbase.validation.JvmGenericTypeValidator" + + // Generates checks for @Deprecated grammar annotations, an IssueProvider and a corresponding PropertyPage + generateDeprecationValidation = true + } + generator = { + generateXtendStub = true + } + junitSupport = { + junitVersion = "5" + } + } + } +} diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/Parser.xtext b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/Parser.xtext new file mode 100644 index 0000000000000000000000000000000000000000..29f5fde830a354ea646c41a50360b33056fa986d --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/Parser.xtext @@ -0,0 +1,76 @@ +// automatically generated by Xtext +grammar swt.most.statemachine.xtext.Parser with org.eclipse.xtext.common.Terminals + +import "http://www.swt.org/most/statemachine" +import "http://www.eclipse.org/emf/2002/Ecore" as ecore + +StateMachine returns StateMachine: + {StateMachine} + 'StateMachine' name=EString + '{' + initialstate=InitialState + ( states+=NormalState | finalstates+=FinalState | transitions+=Transition)* + '}'; + +State returns State: + InitialState | FinalState | NormalState; + +NormalState returns NormalState: + {NormalState} + 'state' name=EString ('{' + ('entry:' entry_=Action)? + ('do:' do_=Action)? + ('exit:' exit_=Action)? + '}')?; + +FinalState returns FinalState: + {FinalState} + 'end' name=FINALSTATENAME; + +InitialState returns InitialState: + {InitialState} + 'start' name=INITIALSTATENAME; + +/* + * You can define further more detailed validations rules to check for the semantics of your language + * in the '***Validator' class under 'src/***.validation'. + * e.g. There must be no Transitions to the InitialState and no Transitions from a FinalState +*/ +Transition returns Transition: + {Transition} + from=[State|EString] '-'(trigger=Trigger)?('[' guard=Guard ']')? ('/' action=Action)? '->' to=[State|EString]; + +Action returns Action: + {Action} + content=ActivityContent; + +Trigger returns Trigger: + {Trigger} + content=ActivityContent; + +Guard returns Guard: + {Guard} + content=EString; + +/* + * Special naming conventions + * Also possible via validator rules +*/ +terminal INITIALSTATENAME returns ecore::EString: + ('I_')(INT|STRING|ID)+; + +terminal FINALSTATENAME returns ecore::EString: + ('F_')(INT|STRING|ID)+ ; + +/* + * You can use Strings syntax ('...') for unclear/abstract parts of your text syntax. + * If your domain is defined enough you can create rules and terminal rules for these parts,too. +*/ +ActivityContent returns ecore::EString: + STRING | ID | CALL; + +terminal CALL returns ecore::EString: + (ID)('.'(ID))+; + +EString returns ecore::EString: + STRING | ID | INITIALSTATENAME | FINALSTATENAME; \ No newline at end of file diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/Parser.xtextbin b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/Parser.xtextbin new file mode 100644 index 0000000000000000000000000000000000000000..7a3e87b4495999e72102f69e83439a53eef5535d Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/Parser.xtextbin differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/ParserRuntimeModule.class b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/ParserRuntimeModule.class new file mode 100644 index 0000000000000000000000000000000000000000..af3f75fb965f96f7b6fcc81ed416671ebee40794 Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/ParserRuntimeModule.class differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/ParserStandaloneSetup.class b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/ParserStandaloneSetup.class new file mode 100644 index 0000000000000000000000000000000000000000..59fd983fbc14a5ef6c59a5aecb7033a818a1b9a5 Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/ParserStandaloneSetup.class differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/ParserStandaloneSetupGenerated.class b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/ParserStandaloneSetupGenerated.class new file mode 100644 index 0000000000000000000000000000000000000000..2cb65e6cb4661bedfc6dc178b2620bd30c11aea1 Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/ParserStandaloneSetupGenerated.class differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/formatting2/.ParserFormatter.java._trace b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/formatting2/.ParserFormatter.java._trace new file mode 100644 index 0000000000000000000000000000000000000000..f1466224b5c01e0c42a9cd6d19bfbca5fd09d67a Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/formatting2/.ParserFormatter.java._trace differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/formatting2/.ParserFormatter.xtendbin b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/formatting2/.ParserFormatter.xtendbin new file mode 100644 index 0000000000000000000000000000000000000000..d22c654acf07c193c8f99f8efc6cc1b81f948a9f Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/formatting2/.ParserFormatter.xtendbin differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/formatting2/ParserFormatter.class b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/formatting2/ParserFormatter.class new file mode 100644 index 0000000000000000000000000000000000000000..aaad7cd6d0f1aa3b617906a9e0feafb1d4536525 Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/formatting2/ParserFormatter.class differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/generator/.ParserGenerator.java._trace b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/generator/.ParserGenerator.java._trace new file mode 100644 index 0000000000000000000000000000000000000000..a5a7d58233f7bed7e2211dc84c2d0c728889ce2b Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/generator/.ParserGenerator.java._trace differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/generator/.ParserGenerator.xtendbin b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/generator/.ParserGenerator.xtendbin new file mode 100644 index 0000000000000000000000000000000000000000..ef57e98ebab7924ec8ceadd5562b2fe83894012d Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/generator/.ParserGenerator.xtendbin differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/generator/ParserGenerator.class b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/generator/ParserGenerator.class new file mode 100644 index 0000000000000000000000000000000000000000..096795e6272fdee30bd9dc4f9f92aa8492594e5e Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/generator/ParserGenerator.class differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/parser/antlr/ParserAntlrTokenFileProvider.class b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/parser/antlr/ParserAntlrTokenFileProvider.class new file mode 100644 index 0000000000000000000000000000000000000000..db7e782b31acfb8355dd390cde9773443c225a24 Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/parser/antlr/ParserAntlrTokenFileProvider.class differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/parser/antlr/ParserParser.class b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/parser/antlr/ParserParser.class new file mode 100644 index 0000000000000000000000000000000000000000..4b7bc61c4b748ba969b56947d5e7d644f7fdd924 Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/parser/antlr/ParserParser.class differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/parser/antlr/internal/InternalParser.g b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/parser/antlr/internal/InternalParser.g new file mode 100644 index 0000000000000000000000000000000000000000..8ffd3ddc95d0a205157cf5cb328c397b3145bb7a --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/parser/antlr/internal/InternalParser.g @@ -0,0 +1,814 @@ +/* + * generated by Xtext 2.35.0 + */ +grammar InternalParser; + +options { + superClass=AbstractInternalAntlrParser; +} + +@lexer::header { +package swt.most.statemachine.xtext.parser.antlr.internal; + +// Hack: Use our own Lexer superclass by means of import. +// Currently there is no other way to specify the superclass for the lexer. +import org.eclipse.xtext.parser.antlr.Lexer; +} + +@parser::header { +package swt.most.statemachine.xtext.parser.antlr.internal; + +import org.eclipse.xtext.*; +import org.eclipse.xtext.parser.*; +import org.eclipse.xtext.parser.impl.*; +import org.eclipse.emf.ecore.util.EcoreUtil; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser; +import org.eclipse.xtext.parser.antlr.XtextTokenStream; +import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens; +import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken; +import swt.most.statemachine.xtext.services.ParserGrammarAccess; + +} + +@parser::members { + + private ParserGrammarAccess grammarAccess; + + public InternalParserParser(TokenStream input, ParserGrammarAccess grammarAccess) { + this(input); + this.grammarAccess = grammarAccess; + registerRules(grammarAccess.getGrammar()); + } + + @Override + protected String getFirstRuleName() { + return "StateMachine"; + } + + @Override + protected ParserGrammarAccess getGrammarAccess() { + return grammarAccess; + } + +} + +@rulecatch { + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } +} + +// Entry rule entryRuleStateMachine +entryRuleStateMachine returns [EObject current=null]: + { newCompositeNode(grammarAccess.getStateMachineRule()); } + iv_ruleStateMachine=ruleStateMachine + { $current=$iv_ruleStateMachine.current; } + EOF; + +// Rule StateMachine +ruleStateMachine returns [EObject current=null] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + ( + ( + { + $current = forceCreateModelElement( + grammarAccess.getStateMachineAccess().getStateMachineAction_0(), + $current); + } + ) + otherlv_1='StateMachine' + { + newLeafNode(otherlv_1, grammarAccess.getStateMachineAccess().getStateMachineKeyword_1()); + } + ( + ( + { + newCompositeNode(grammarAccess.getStateMachineAccess().getNameEStringParserRuleCall_2_0()); + } + lv_name_2_0=ruleEString + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getStateMachineRule()); + } + set( + $current, + "name", + lv_name_2_0, + "swt.most.statemachine.xtext.Parser.EString"); + afterParserOrEnumRuleCall(); + } + ) + ) + otherlv_3='{' + { + newLeafNode(otherlv_3, grammarAccess.getStateMachineAccess().getLeftCurlyBracketKeyword_3()); + } + ( + ( + { + newCompositeNode(grammarAccess.getStateMachineAccess().getInitialstateInitialStateParserRuleCall_4_0()); + } + lv_initialstate_4_0=ruleInitialState + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getStateMachineRule()); + } + set( + $current, + "initialstate", + lv_initialstate_4_0, + "swt.most.statemachine.xtext.Parser.InitialState"); + afterParserOrEnumRuleCall(); + } + ) + ) + ( + ( + ( + { + newCompositeNode(grammarAccess.getStateMachineAccess().getStatesNormalStateParserRuleCall_5_0_0()); + } + lv_states_5_0=ruleNormalState + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getStateMachineRule()); + } + add( + $current, + "states", + lv_states_5_0, + "swt.most.statemachine.xtext.Parser.NormalState"); + afterParserOrEnumRuleCall(); + } + ) + ) + | + ( + ( + { + newCompositeNode(grammarAccess.getStateMachineAccess().getFinalstatesFinalStateParserRuleCall_5_1_0()); + } + lv_finalstates_6_0=ruleFinalState + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getStateMachineRule()); + } + add( + $current, + "finalstates", + lv_finalstates_6_0, + "swt.most.statemachine.xtext.Parser.FinalState"); + afterParserOrEnumRuleCall(); + } + ) + ) + | + ( + ( + { + newCompositeNode(grammarAccess.getStateMachineAccess().getTransitionsTransitionParserRuleCall_5_2_0()); + } + lv_transitions_7_0=ruleTransition + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getStateMachineRule()); + } + add( + $current, + "transitions", + lv_transitions_7_0, + "swt.most.statemachine.xtext.Parser.Transition"); + afterParserOrEnumRuleCall(); + } + ) + ) + )* + otherlv_8='}' + { + newLeafNode(otherlv_8, grammarAccess.getStateMachineAccess().getRightCurlyBracketKeyword_6()); + } + ) +; + +// Entry rule entryRuleNormalState +entryRuleNormalState returns [EObject current=null]: + { newCompositeNode(grammarAccess.getNormalStateRule()); } + iv_ruleNormalState=ruleNormalState + { $current=$iv_ruleNormalState.current; } + EOF; + +// Rule NormalState +ruleNormalState returns [EObject current=null] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + ( + ( + { + $current = forceCreateModelElement( + grammarAccess.getNormalStateAccess().getNormalStateAction_0(), + $current); + } + ) + otherlv_1='state' + { + newLeafNode(otherlv_1, grammarAccess.getNormalStateAccess().getStateKeyword_1()); + } + ( + ( + { + newCompositeNode(grammarAccess.getNormalStateAccess().getNameEStringParserRuleCall_2_0()); + } + lv_name_2_0=ruleEString + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getNormalStateRule()); + } + set( + $current, + "name", + lv_name_2_0, + "swt.most.statemachine.xtext.Parser.EString"); + afterParserOrEnumRuleCall(); + } + ) + ) + ( + otherlv_3='{' + { + newLeafNode(otherlv_3, grammarAccess.getNormalStateAccess().getLeftCurlyBracketKeyword_3_0()); + } + ( + otherlv_4='entry:' + { + newLeafNode(otherlv_4, grammarAccess.getNormalStateAccess().getEntryKeyword_3_1_0()); + } + ( + ( + { + newCompositeNode(grammarAccess.getNormalStateAccess().getEntry_ActionParserRuleCall_3_1_1_0()); + } + lv_entry__5_0=ruleAction + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getNormalStateRule()); + } + set( + $current, + "entry_", + lv_entry__5_0, + "swt.most.statemachine.xtext.Parser.Action"); + afterParserOrEnumRuleCall(); + } + ) + ) + )? + ( + otherlv_6='do:' + { + newLeafNode(otherlv_6, grammarAccess.getNormalStateAccess().getDoKeyword_3_2_0()); + } + ( + ( + { + newCompositeNode(grammarAccess.getNormalStateAccess().getDo_ActionParserRuleCall_3_2_1_0()); + } + lv_do__7_0=ruleAction + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getNormalStateRule()); + } + set( + $current, + "do_", + lv_do__7_0, + "swt.most.statemachine.xtext.Parser.Action"); + afterParserOrEnumRuleCall(); + } + ) + ) + )? + ( + otherlv_8='exit:' + { + newLeafNode(otherlv_8, grammarAccess.getNormalStateAccess().getExitKeyword_3_3_0()); + } + ( + ( + { + newCompositeNode(grammarAccess.getNormalStateAccess().getExit_ActionParserRuleCall_3_3_1_0()); + } + lv_exit__9_0=ruleAction + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getNormalStateRule()); + } + set( + $current, + "exit_", + lv_exit__9_0, + "swt.most.statemachine.xtext.Parser.Action"); + afterParserOrEnumRuleCall(); + } + ) + ) + )? + otherlv_10='}' + { + newLeafNode(otherlv_10, grammarAccess.getNormalStateAccess().getRightCurlyBracketKeyword_3_4()); + } + )? + ) +; + +// Entry rule entryRuleFinalState +entryRuleFinalState returns [EObject current=null]: + { newCompositeNode(grammarAccess.getFinalStateRule()); } + iv_ruleFinalState=ruleFinalState + { $current=$iv_ruleFinalState.current; } + EOF; + +// Rule FinalState +ruleFinalState returns [EObject current=null] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + ( + ( + { + $current = forceCreateModelElement( + grammarAccess.getFinalStateAccess().getFinalStateAction_0(), + $current); + } + ) + otherlv_1='end' + { + newLeafNode(otherlv_1, grammarAccess.getFinalStateAccess().getEndKeyword_1()); + } + ( + ( + lv_name_2_0=RULE_FINALSTATENAME + { + newLeafNode(lv_name_2_0, grammarAccess.getFinalStateAccess().getNameFINALSTATENAMETerminalRuleCall_2_0()); + } + { + if ($current==null) { + $current = createModelElement(grammarAccess.getFinalStateRule()); + } + setWithLastConsumed( + $current, + "name", + lv_name_2_0, + "swt.most.statemachine.xtext.Parser.FINALSTATENAME"); + } + ) + ) + ) +; + +// Entry rule entryRuleInitialState +entryRuleInitialState returns [EObject current=null]: + { newCompositeNode(grammarAccess.getInitialStateRule()); } + iv_ruleInitialState=ruleInitialState + { $current=$iv_ruleInitialState.current; } + EOF; + +// Rule InitialState +ruleInitialState returns [EObject current=null] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + ( + ( + { + $current = forceCreateModelElement( + grammarAccess.getInitialStateAccess().getInitialStateAction_0(), + $current); + } + ) + otherlv_1='start' + { + newLeafNode(otherlv_1, grammarAccess.getInitialStateAccess().getStartKeyword_1()); + } + ( + ( + lv_name_2_0=RULE_INITIALSTATENAME + { + newLeafNode(lv_name_2_0, grammarAccess.getInitialStateAccess().getNameINITIALSTATENAMETerminalRuleCall_2_0()); + } + { + if ($current==null) { + $current = createModelElement(grammarAccess.getInitialStateRule()); + } + setWithLastConsumed( + $current, + "name", + lv_name_2_0, + "swt.most.statemachine.xtext.Parser.INITIALSTATENAME"); + } + ) + ) + ) +; + +// Entry rule entryRuleTransition +entryRuleTransition returns [EObject current=null]: + { newCompositeNode(grammarAccess.getTransitionRule()); } + iv_ruleTransition=ruleTransition + { $current=$iv_ruleTransition.current; } + EOF; + +// Rule Transition +ruleTransition returns [EObject current=null] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + ( + ( + { + $current = forceCreateModelElement( + grammarAccess.getTransitionAccess().getTransitionAction_0(), + $current); + } + ) + ( + ( + { + if ($current==null) { + $current = createModelElement(grammarAccess.getTransitionRule()); + } + } + { + newCompositeNode(grammarAccess.getTransitionAccess().getFromStateCrossReference_1_0()); + } + ruleEString + { + afterParserOrEnumRuleCall(); + } + ) + ) + otherlv_2='-' + { + newLeafNode(otherlv_2, grammarAccess.getTransitionAccess().getHyphenMinusKeyword_2()); + } + ( + ( + { + newCompositeNode(grammarAccess.getTransitionAccess().getTriggerTriggerParserRuleCall_3_0()); + } + lv_trigger_3_0=ruleTrigger + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getTransitionRule()); + } + set( + $current, + "trigger", + lv_trigger_3_0, + "swt.most.statemachine.xtext.Parser.Trigger"); + afterParserOrEnumRuleCall(); + } + ) + )? + ( + otherlv_4='[' + { + newLeafNode(otherlv_4, grammarAccess.getTransitionAccess().getLeftSquareBracketKeyword_4_0()); + } + ( + ( + { + newCompositeNode(grammarAccess.getTransitionAccess().getGuardGuardParserRuleCall_4_1_0()); + } + lv_guard_5_0=ruleGuard + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getTransitionRule()); + } + set( + $current, + "guard", + lv_guard_5_0, + "swt.most.statemachine.xtext.Parser.Guard"); + afterParserOrEnumRuleCall(); + } + ) + ) + otherlv_6=']' + { + newLeafNode(otherlv_6, grammarAccess.getTransitionAccess().getRightSquareBracketKeyword_4_2()); + } + )? + ( + otherlv_7='/' + { + newLeafNode(otherlv_7, grammarAccess.getTransitionAccess().getSolidusKeyword_5_0()); + } + ( + ( + { + newCompositeNode(grammarAccess.getTransitionAccess().getActionActionParserRuleCall_5_1_0()); + } + lv_action_8_0=ruleAction + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getTransitionRule()); + } + set( + $current, + "action", + lv_action_8_0, + "swt.most.statemachine.xtext.Parser.Action"); + afterParserOrEnumRuleCall(); + } + ) + ) + )? + otherlv_9='->' + { + newLeafNode(otherlv_9, grammarAccess.getTransitionAccess().getHyphenMinusGreaterThanSignKeyword_6()); + } + ( + ( + { + if ($current==null) { + $current = createModelElement(grammarAccess.getTransitionRule()); + } + } + { + newCompositeNode(grammarAccess.getTransitionAccess().getToStateCrossReference_7_0()); + } + ruleEString + { + afterParserOrEnumRuleCall(); + } + ) + ) + ) +; + +// Entry rule entryRuleAction +entryRuleAction returns [EObject current=null]: + { newCompositeNode(grammarAccess.getActionRule()); } + iv_ruleAction=ruleAction + { $current=$iv_ruleAction.current; } + EOF; + +// Rule Action +ruleAction returns [EObject current=null] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + ( + ( + { + $current = forceCreateModelElement( + grammarAccess.getActionAccess().getActionAction_0(), + $current); + } + ) + ( + ( + { + newCompositeNode(grammarAccess.getActionAccess().getContentActivityContentParserRuleCall_1_0()); + } + lv_content_1_0=ruleActivityContent + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getActionRule()); + } + set( + $current, + "content", + lv_content_1_0, + "swt.most.statemachine.xtext.Parser.ActivityContent"); + afterParserOrEnumRuleCall(); + } + ) + ) + ) +; + +// Entry rule entryRuleTrigger +entryRuleTrigger returns [EObject current=null]: + { newCompositeNode(grammarAccess.getTriggerRule()); } + iv_ruleTrigger=ruleTrigger + { $current=$iv_ruleTrigger.current; } + EOF; + +// Rule Trigger +ruleTrigger returns [EObject current=null] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + ( + ( + { + $current = forceCreateModelElement( + grammarAccess.getTriggerAccess().getTriggerAction_0(), + $current); + } + ) + ( + ( + { + newCompositeNode(grammarAccess.getTriggerAccess().getContentActivityContentParserRuleCall_1_0()); + } + lv_content_1_0=ruleActivityContent + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getTriggerRule()); + } + set( + $current, + "content", + lv_content_1_0, + "swt.most.statemachine.xtext.Parser.ActivityContent"); + afterParserOrEnumRuleCall(); + } + ) + ) + ) +; + +// Entry rule entryRuleGuard +entryRuleGuard returns [EObject current=null]: + { newCompositeNode(grammarAccess.getGuardRule()); } + iv_ruleGuard=ruleGuard + { $current=$iv_ruleGuard.current; } + EOF; + +// Rule Guard +ruleGuard returns [EObject current=null] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + ( + ( + { + $current = forceCreateModelElement( + grammarAccess.getGuardAccess().getGuardAction_0(), + $current); + } + ) + ( + ( + { + newCompositeNode(grammarAccess.getGuardAccess().getContentEStringParserRuleCall_1_0()); + } + lv_content_1_0=ruleEString + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getGuardRule()); + } + set( + $current, + "content", + lv_content_1_0, + "swt.most.statemachine.xtext.Parser.EString"); + afterParserOrEnumRuleCall(); + } + ) + ) + ) +; + +// Entry rule entryRuleActivityContent +entryRuleActivityContent returns [String current=null]: + { newCompositeNode(grammarAccess.getActivityContentRule()); } + iv_ruleActivityContent=ruleActivityContent + { $current=$iv_ruleActivityContent.current.getText(); } + EOF; + +// Rule ActivityContent +ruleActivityContent returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + ( + this_STRING_0=RULE_STRING + { + $current.merge(this_STRING_0); + } + { + newLeafNode(this_STRING_0, grammarAccess.getActivityContentAccess().getSTRINGTerminalRuleCall_0()); + } + | + this_ID_1=RULE_ID + { + $current.merge(this_ID_1); + } + { + newLeafNode(this_ID_1, grammarAccess.getActivityContentAccess().getIDTerminalRuleCall_1()); + } + | + this_CALL_2=RULE_CALL + { + $current.merge(this_CALL_2); + } + { + newLeafNode(this_CALL_2, grammarAccess.getActivityContentAccess().getCALLTerminalRuleCall_2()); + } + ) +; + +// Entry rule entryRuleEString +entryRuleEString returns [String current=null]: + { newCompositeNode(grammarAccess.getEStringRule()); } + iv_ruleEString=ruleEString + { $current=$iv_ruleEString.current.getText(); } + EOF; + +// Rule EString +ruleEString returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + ( + this_STRING_0=RULE_STRING + { + $current.merge(this_STRING_0); + } + { + newLeafNode(this_STRING_0, grammarAccess.getEStringAccess().getSTRINGTerminalRuleCall_0()); + } + | + this_ID_1=RULE_ID + { + $current.merge(this_ID_1); + } + { + newLeafNode(this_ID_1, grammarAccess.getEStringAccess().getIDTerminalRuleCall_1()); + } + | + this_INITIALSTATENAME_2=RULE_INITIALSTATENAME + { + $current.merge(this_INITIALSTATENAME_2); + } + { + newLeafNode(this_INITIALSTATENAME_2, grammarAccess.getEStringAccess().getINITIALSTATENAMETerminalRuleCall_2()); + } + | + this_FINALSTATENAME_3=RULE_FINALSTATENAME + { + $current.merge(this_FINALSTATENAME_3); + } + { + newLeafNode(this_FINALSTATENAME_3, grammarAccess.getEStringAccess().getFINALSTATENAMETerminalRuleCall_3()); + } + ) +; + +RULE_INITIALSTATENAME : 'I_' (RULE_INT|RULE_STRING|RULE_ID)+; + +RULE_FINALSTATENAME : 'F_' (RULE_INT|RULE_STRING|RULE_ID)+; + +RULE_CALL : RULE_ID ('.' RULE_ID)+; + +RULE_ID : '^'? ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*; + +fragment RULE_INT : ('0'..'9')+; + +RULE_STRING : ('"' ('\\' .|~(('\\'|'"')))* '"'|'\'' ('\\' .|~(('\\'|'\'')))* '\''); + +RULE_ML_COMMENT : '/*' ( options {greedy=false;} : . )*'*/'; + +RULE_SL_COMMENT : '//' ~(('\n'|'\r'))* ('\r'? '\n')?; + +RULE_WS : (' '|'\t'|'\r'|'\n')+; + +RULE_ANY_OTHER : .; diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/parser/antlr/internal/InternalParser.tokens b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/parser/antlr/internal/InternalParser.tokens new file mode 100644 index 0000000000000000000000000000000000000000..cf878cfd1917f031ee6b9f20c47c84e5810c3e60 --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/parser/antlr/internal/InternalParser.tokens @@ -0,0 +1,38 @@ +'-'=23 +'->'=27 +'/'=26 +'StateMachine'=14 +'['=24 +']'=25 +'do:'=19 +'end'=21 +'entry:'=18 +'exit:'=20 +'start'=22 +'state'=17 +'{'=15 +'}'=16 +RULE_ANY_OTHER=13 +RULE_CALL=8 +RULE_FINALSTATENAME=4 +RULE_ID=7 +RULE_INITIALSTATENAME=5 +RULE_INT=9 +RULE_ML_COMMENT=10 +RULE_SL_COMMENT=11 +RULE_STRING=6 +RULE_WS=12 +T__14=14 +T__15=15 +T__16=16 +T__17=17 +T__18=18 +T__19=19 +T__20=20 +T__21=21 +T__22=22 +T__23=23 +T__24=24 +T__25=25 +T__26=26 +T__27=27 diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/parser/antlr/internal/InternalParserLexer$DFA15.class b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/parser/antlr/internal/InternalParserLexer$DFA15.class new file mode 100644 index 0000000000000000000000000000000000000000..a8ace91995d128dafd7a942fbf4acd49d83c0a37 Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/parser/antlr/internal/InternalParserLexer$DFA15.class differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/parser/antlr/internal/InternalParserLexer.class b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/parser/antlr/internal/InternalParserLexer.class new file mode 100644 index 0000000000000000000000000000000000000000..7dd09e559598bef18c2ee1ffec1f700f25f5ac65 Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/parser/antlr/internal/InternalParserLexer.class differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/parser/antlr/internal/InternalParserParser.class b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/parser/antlr/internal/InternalParserParser.class new file mode 100644 index 0000000000000000000000000000000000000000..9f242014db6025ee4323452631e7594bc58b2c9e Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/parser/antlr/internal/InternalParserParser.class differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/scoping/AbstractParserScopeProvider.class b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/scoping/AbstractParserScopeProvider.class new file mode 100644 index 0000000000000000000000000000000000000000..4c8c5703d4afdc1a769fb6e2ae0be4919efb9926 Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/scoping/AbstractParserScopeProvider.class differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/scoping/ParserScopeProvider.class b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/scoping/ParserScopeProvider.class new file mode 100644 index 0000000000000000000000000000000000000000..ed216ff5adaa0abb914cb5d83f1a3234c4d19dc9 Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/scoping/ParserScopeProvider.class differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/serializer/ParserSemanticSequencer.class b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/serializer/ParserSemanticSequencer.class new file mode 100644 index 0000000000000000000000000000000000000000..36e60fc4f4b5b735fb0b406e404b3d0997ba26c9 Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/serializer/ParserSemanticSequencer.class differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/serializer/ParserSyntacticSequencer.class b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/serializer/ParserSyntacticSequencer.class new file mode 100644 index 0000000000000000000000000000000000000000..665c8f57fb96dc2729f24b2fefebcf0061915e01 Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/serializer/ParserSyntacticSequencer.class differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/services/ParserGrammarAccess$ActionElements.class b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/services/ParserGrammarAccess$ActionElements.class new file mode 100644 index 0000000000000000000000000000000000000000..0fff3ab7488679e46e0175a0be7b9c8ca33cee4b Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/services/ParserGrammarAccess$ActionElements.class differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/services/ParserGrammarAccess$ActivityContentElements.class b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/services/ParserGrammarAccess$ActivityContentElements.class new file mode 100644 index 0000000000000000000000000000000000000000..11d4238fe08b811ebc78dff2c34cfe8ee538cdb1 Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/services/ParserGrammarAccess$ActivityContentElements.class differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/services/ParserGrammarAccess$EStringElements.class b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/services/ParserGrammarAccess$EStringElements.class new file mode 100644 index 0000000000000000000000000000000000000000..c56c93e5ef497f117216a0225ac26c080bad7c15 Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/services/ParserGrammarAccess$EStringElements.class differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/services/ParserGrammarAccess$FinalStateElements.class b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/services/ParserGrammarAccess$FinalStateElements.class new file mode 100644 index 0000000000000000000000000000000000000000..894003057e4f1d6132cc8564bbf399ec3f9c5f24 Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/services/ParserGrammarAccess$FinalStateElements.class differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/services/ParserGrammarAccess$GuardElements.class b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/services/ParserGrammarAccess$GuardElements.class new file mode 100644 index 0000000000000000000000000000000000000000..406bc8973bda1f93f2b995c46ec4a0eaa1c442d1 Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/services/ParserGrammarAccess$GuardElements.class differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/services/ParserGrammarAccess$InitialStateElements.class b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/services/ParserGrammarAccess$InitialStateElements.class new file mode 100644 index 0000000000000000000000000000000000000000..d3ad6e9cba16b388bf912ce9b7ca11c193c3125d Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/services/ParserGrammarAccess$InitialStateElements.class differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/services/ParserGrammarAccess$NormalStateElements.class b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/services/ParserGrammarAccess$NormalStateElements.class new file mode 100644 index 0000000000000000000000000000000000000000..f9d5d803f0e16d49bf1857525e1a4b5680955844 Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/services/ParserGrammarAccess$NormalStateElements.class differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/services/ParserGrammarAccess$StateElements.class b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/services/ParserGrammarAccess$StateElements.class new file mode 100644 index 0000000000000000000000000000000000000000..352fbc1a84084ab40a1a9276e56521d6294d7d1a Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/services/ParserGrammarAccess$StateElements.class differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/services/ParserGrammarAccess$StateMachineElements.class b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/services/ParserGrammarAccess$StateMachineElements.class new file mode 100644 index 0000000000000000000000000000000000000000..a53555b6a6653ae35211e9e63e5f092bb888628b Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/services/ParserGrammarAccess$StateMachineElements.class differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/services/ParserGrammarAccess$TransitionElements.class b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/services/ParserGrammarAccess$TransitionElements.class new file mode 100644 index 0000000000000000000000000000000000000000..3d6d71550f05c3e13de36f28a639aae8e0391f37 Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/services/ParserGrammarAccess$TransitionElements.class differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/services/ParserGrammarAccess$TriggerElements.class b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/services/ParserGrammarAccess$TriggerElements.class new file mode 100644 index 0000000000000000000000000000000000000000..ed2c7da887d99bf1ab000d4fae4c333a52aca57a Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/services/ParserGrammarAccess$TriggerElements.class differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/services/ParserGrammarAccess.class b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/services/ParserGrammarAccess.class new file mode 100644 index 0000000000000000000000000000000000000000..05fdd0868ca009133d3b7d3a1318ddea73dc4d83 Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/services/ParserGrammarAccess.class differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/validation/AbstractParserValidator.class b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/validation/AbstractParserValidator.class new file mode 100644 index 0000000000000000000000000000000000000000..87befb6f2fe9bb6e3459ecd8e022652e63003331 Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/validation/AbstractParserValidator.class differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/validation/ParserConfigurableIssueCodesProvider.class b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/validation/ParserConfigurableIssueCodesProvider.class new file mode 100644 index 0000000000000000000000000000000000000000..817e33d0e485af9e3dac757a7f18dcf95e7a7aee Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/validation/ParserConfigurableIssueCodesProvider.class differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/validation/ParserValidator.class b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/validation/ParserValidator.class new file mode 100644 index 0000000000000000000000000000000000000000..4df50401a641c2cc68b1c5906038c0337f8a7425 Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/bin/swt/most/statemachine/xtext/validation/ParserValidator.class differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/build.properties b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..c24ff368064f653346c873aa6e7a60752f0bca4a --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/build.properties @@ -0,0 +1,17 @@ +source.. = src/,\ + src-gen/,\ + xtend-gen/ +bin.includes = .,\ + META-INF/ +bin.excludes = **/*.mwe2,\ + **/*.xtend +additional.bundles = org.eclipse.xtext.xbase,\ + org.eclipse.xtext.common.types,\ + org.eclipse.xtext.xtext.generator,\ + org.eclipse.emf.codegen.ecore,\ + org.eclipse.emf.mwe.utils,\ + org.eclipse.emf.mwe2.launch,\ + org.eclipse.emf.mwe2.lib,\ + org.objectweb.asm,\ + org.apache.commons.logging,\ + org.apache.log4j diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src-gen/swt/most/statemachine/xtext/AbstractParserRuntimeModule.java b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src-gen/swt/most/statemachine/xtext/AbstractParserRuntimeModule.java new file mode 100644 index 0000000000000000000000000000000000000000..4395d82d2f14d56c14bf6d8b04fd0c88c1558f94 --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src-gen/swt/most/statemachine/xtext/AbstractParserRuntimeModule.java @@ -0,0 +1,223 @@ +/* + * generated by Xtext 2.35.0 + */ +package swt.most.statemachine.xtext; + +import com.google.inject.Binder; +import com.google.inject.Provider; +import com.google.inject.name.Names; +import java.util.Properties; +import org.eclipse.xtext.Constants; +import org.eclipse.xtext.IGrammarAccess; +import org.eclipse.xtext.common.services.Ecore2XtextTerminalConverters; +import org.eclipse.xtext.conversion.IValueConverterService; +import org.eclipse.xtext.formatting2.FormatterPreferenceValuesProvider; +import org.eclipse.xtext.formatting2.FormatterPreferences; +import org.eclipse.xtext.formatting2.IFormatter2; +import org.eclipse.xtext.generator.IGenerator2; +import org.eclipse.xtext.naming.DefaultDeclarativeQualifiedNameProvider; +import org.eclipse.xtext.naming.IQualifiedNameProvider; +import org.eclipse.xtext.parser.IParser; +import org.eclipse.xtext.parser.ITokenToStringConverter; +import org.eclipse.xtext.parser.antlr.AntlrTokenDefProvider; +import org.eclipse.xtext.parser.antlr.AntlrTokenToStringConverter; +import org.eclipse.xtext.parser.antlr.IAntlrTokenFileProvider; +import org.eclipse.xtext.parser.antlr.ITokenDefProvider; +import org.eclipse.xtext.parser.antlr.Lexer; +import org.eclipse.xtext.parser.antlr.LexerBindings; +import org.eclipse.xtext.parser.antlr.LexerProvider; +import org.eclipse.xtext.preferences.IPreferenceValuesProvider; +import org.eclipse.xtext.resource.IContainer; +import org.eclipse.xtext.resource.IResourceDescriptions; +import org.eclipse.xtext.resource.containers.IAllContainersState; +import org.eclipse.xtext.resource.containers.ResourceSetBasedAllContainersStateProvider; +import org.eclipse.xtext.resource.containers.StateBasedContainerManager; +import org.eclipse.xtext.resource.impl.ResourceDescriptionsProvider; +import org.eclipse.xtext.resource.impl.ResourceSetBasedResourceDescriptions; +import org.eclipse.xtext.scoping.IGlobalScopeProvider; +import org.eclipse.xtext.scoping.IScopeProvider; +import org.eclipse.xtext.scoping.IgnoreCaseLinking; +import org.eclipse.xtext.scoping.impl.AbstractDeclarativeScopeProvider; +import org.eclipse.xtext.scoping.impl.DefaultGlobalScopeProvider; +import org.eclipse.xtext.scoping.impl.ImportedNamespaceAwareLocalScopeProvider; +import org.eclipse.xtext.serializer.ISerializer; +import org.eclipse.xtext.serializer.impl.Serializer; +import org.eclipse.xtext.serializer.sequencer.ISemanticSequencer; +import org.eclipse.xtext.serializer.sequencer.ISyntacticSequencer; +import org.eclipse.xtext.service.DefaultRuntimeModule; +import org.eclipse.xtext.service.SingletonBinding; +import org.eclipse.xtext.validation.ConfigurableIssueCodesProvider; +import swt.most.statemachine.xtext.formatting2.ParserFormatter; +import swt.most.statemachine.xtext.generator.ParserGenerator; +import swt.most.statemachine.xtext.parser.antlr.ParserAntlrTokenFileProvider; +import swt.most.statemachine.xtext.parser.antlr.ParserParser; +import swt.most.statemachine.xtext.parser.antlr.internal.InternalParserLexer; +import swt.most.statemachine.xtext.scoping.ParserScopeProvider; +import swt.most.statemachine.xtext.serializer.ParserSemanticSequencer; +import swt.most.statemachine.xtext.serializer.ParserSyntacticSequencer; +import swt.most.statemachine.xtext.services.ParserGrammarAccess; +import swt.most.statemachine.xtext.validation.ParserConfigurableIssueCodesProvider; +import swt.most.statemachine.xtext.validation.ParserValidator; + +/** + * Manual modifications go to {@link ParserRuntimeModule}. + */ +@SuppressWarnings("all") +public abstract class AbstractParserRuntimeModule extends DefaultRuntimeModule { + + protected Properties properties = null; + + @Override + public void configure(Binder binder) { + properties = tryBindProperties(binder, "swt/most/statemachine/xtext/Parser.properties"); + super.configure(binder); + } + + public void configureLanguageName(Binder binder) { + binder.bind(String.class).annotatedWith(Names.named(Constants.LANGUAGE_NAME)).toInstance("swt.most.statemachine.xtext.Parser"); + } + + public void configureFileExtensions(Binder binder) { + if (properties == null || properties.getProperty(Constants.FILE_EXTENSIONS) == null) + binder.bind(String.class).annotatedWith(Names.named(Constants.FILE_EXTENSIONS)).toInstance("statemachine"); + } + + // contributed by org.eclipse.xtext.xtext.generator.grammarAccess.GrammarAccessFragment2 + public ClassLoader bindClassLoaderToInstance() { + return getClass().getClassLoader(); + } + + // contributed by org.eclipse.xtext.xtext.generator.grammarAccess.GrammarAccessFragment2 + public Class<? extends IGrammarAccess> bindIGrammarAccess() { + return ParserGrammarAccess.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.serializer.SerializerFragment2 + public Class<? extends ISemanticSequencer> bindISemanticSequencer() { + return ParserSemanticSequencer.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.serializer.SerializerFragment2 + public Class<? extends ISyntacticSequencer> bindISyntacticSequencer() { + return ParserSyntacticSequencer.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.serializer.SerializerFragment2 + public Class<? extends ISerializer> bindISerializer() { + return Serializer.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2 + public Class<? extends IParser> bindIParser() { + return ParserParser.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2 + public Class<? extends ITokenToStringConverter> bindITokenToStringConverter() { + return AntlrTokenToStringConverter.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2 + public Class<? extends IAntlrTokenFileProvider> bindIAntlrTokenFileProvider() { + return ParserAntlrTokenFileProvider.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2 + public Class<? extends Lexer> bindLexer() { + return InternalParserLexer.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2 + public Class<? extends ITokenDefProvider> bindITokenDefProvider() { + return AntlrTokenDefProvider.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2 + public Provider<? extends InternalParserLexer> provideInternalParserLexer() { + return LexerProvider.create(InternalParserLexer.class); + } + + // contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2 + public void configureRuntimeLexer(Binder binder) { + binder.bind(Lexer.class) + .annotatedWith(Names.named(LexerBindings.RUNTIME)) + .to(InternalParserLexer.class); + } + + // contributed by org.eclipse.xtext.xtext.generator.validation.ValidatorFragment2 + @SingletonBinding(eager=true) + public Class<? extends ParserValidator> bindParserValidator() { + return ParserValidator.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.validation.ValidatorFragment2 + public Class<? extends ConfigurableIssueCodesProvider> bindConfigurableIssueCodesProvider() { + return ParserConfigurableIssueCodesProvider.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.scoping.ImportNamespacesScopingFragment2 + public Class<? extends IScopeProvider> bindIScopeProvider() { + return ParserScopeProvider.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.scoping.ImportNamespacesScopingFragment2 + public void configureIScopeProviderDelegate(Binder binder) { + binder.bind(IScopeProvider.class).annotatedWith(Names.named(AbstractDeclarativeScopeProvider.NAMED_DELEGATE)).to(ImportedNamespaceAwareLocalScopeProvider.class); + } + + // contributed by org.eclipse.xtext.xtext.generator.scoping.ImportNamespacesScopingFragment2 + public Class<? extends IGlobalScopeProvider> bindIGlobalScopeProvider() { + return DefaultGlobalScopeProvider.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.scoping.ImportNamespacesScopingFragment2 + public void configureIgnoreCaseLinking(Binder binder) { + binder.bindConstant().annotatedWith(IgnoreCaseLinking.class).to(false); + } + + // contributed by org.eclipse.xtext.xtext.generator.exporting.QualifiedNamesFragment2 + public Class<? extends IQualifiedNameProvider> bindIQualifiedNameProvider() { + return DefaultDeclarativeQualifiedNameProvider.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.builder.BuilderIntegrationFragment2 + public Class<? extends IContainer.Manager> bindIContainer$Manager() { + return StateBasedContainerManager.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.builder.BuilderIntegrationFragment2 + public Class<? extends IAllContainersState.Provider> bindIAllContainersState$Provider() { + return ResourceSetBasedAllContainersStateProvider.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.builder.BuilderIntegrationFragment2 + public void configureIResourceDescriptions(Binder binder) { + binder.bind(IResourceDescriptions.class).to(ResourceSetBasedResourceDescriptions.class); + } + + // contributed by org.eclipse.xtext.xtext.generator.builder.BuilderIntegrationFragment2 + public void configureIResourceDescriptionsPersisted(Binder binder) { + binder.bind(IResourceDescriptions.class).annotatedWith(Names.named(ResourceDescriptionsProvider.PERSISTED_DESCRIPTIONS)).to(ResourceSetBasedResourceDescriptions.class); + } + + // contributed by org.eclipse.xtext.xtext.generator.generator.GeneratorFragment2 + public Class<? extends IGenerator2> bindIGenerator2() { + return ParserGenerator.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.formatting.Formatter2Fragment2 + public Class<? extends IFormatter2> bindIFormatter2() { + return ParserFormatter.class; + } + + // contributed by org.eclipse.xtext.xtext.generator.formatting.Formatter2Fragment2 + public void configureFormatterPreferences(Binder binder) { + binder.bind(IPreferenceValuesProvider.class).annotatedWith(FormatterPreferences.class).to(FormatterPreferenceValuesProvider.class); + } + + // contributed by org.eclipse.xtext.xtext.generator.ecore2xtext.Ecore2XtextValueConverterServiceFragment2 + public Class<? extends IValueConverterService> bindIValueConverterService() { + return Ecore2XtextTerminalConverters.class; + } + +} diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src-gen/swt/most/statemachine/xtext/Parser.xtextbin b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src-gen/swt/most/statemachine/xtext/Parser.xtextbin new file mode 100644 index 0000000000000000000000000000000000000000..7a3e87b4495999e72102f69e83439a53eef5535d Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src-gen/swt/most/statemachine/xtext/Parser.xtextbin differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src-gen/swt/most/statemachine/xtext/ParserStandaloneSetupGenerated.java b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src-gen/swt/most/statemachine/xtext/ParserStandaloneSetupGenerated.java new file mode 100644 index 0000000000000000000000000000000000000000..75cca3dc0a6384af9bbb76c2044da19ea040fb96 --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src-gen/swt/most/statemachine/xtext/ParserStandaloneSetupGenerated.java @@ -0,0 +1,37 @@ +/* + * generated by Xtext 2.35.0 + */ +package swt.most.statemachine.xtext; + +import com.google.inject.Guice; +import com.google.inject.Injector; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.xtext.ISetup; +import org.eclipse.xtext.common.TerminalsStandaloneSetup; +import org.eclipse.xtext.resource.IResourceFactory; +import org.eclipse.xtext.resource.IResourceServiceProvider; + +@SuppressWarnings("all") +public class ParserStandaloneSetupGenerated implements ISetup { + + @Override + public Injector createInjectorAndDoEMFRegistration() { + TerminalsStandaloneSetup.doSetup(); + + Injector injector = createInjector(); + register(injector); + return injector; + } + + public Injector createInjector() { + return Guice.createInjector(new ParserRuntimeModule()); + } + + public void register(Injector injector) { + IResourceFactory resourceFactory = injector.getInstance(IResourceFactory.class); + IResourceServiceProvider serviceProvider = injector.getInstance(IResourceServiceProvider.class); + + Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("statemachine", resourceFactory); + IResourceServiceProvider.Registry.INSTANCE.getExtensionToFactoryMap().put("statemachine", serviceProvider); + } +} diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src-gen/swt/most/statemachine/xtext/parser/antlr/ParserAntlrTokenFileProvider.java b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src-gen/swt/most/statemachine/xtext/parser/antlr/ParserAntlrTokenFileProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..ae2ccc6965d8470c11d5f96fd1eafab5c0aef536 --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src-gen/swt/most/statemachine/xtext/parser/antlr/ParserAntlrTokenFileProvider.java @@ -0,0 +1,16 @@ +/* + * generated by Xtext 2.35.0 + */ +package swt.most.statemachine.xtext.parser.antlr; + +import java.io.InputStream; +import org.eclipse.xtext.parser.antlr.IAntlrTokenFileProvider; + +public class ParserAntlrTokenFileProvider implements IAntlrTokenFileProvider { + + @Override + public InputStream getAntlrTokenFile() { + ClassLoader classLoader = getClass().getClassLoader(); + return classLoader.getResourceAsStream("swt/most/statemachine/xtext/parser/antlr/internal/InternalParser.tokens"); + } +} diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src-gen/swt/most/statemachine/xtext/parser/antlr/ParserParser.java b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src-gen/swt/most/statemachine/xtext/parser/antlr/ParserParser.java new file mode 100644 index 0000000000000000000000000000000000000000..2053137a2e73194be7dd8af5b8bc90964e30365c --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src-gen/swt/most/statemachine/xtext/parser/antlr/ParserParser.java @@ -0,0 +1,40 @@ +/* + * generated by Xtext 2.35.0 + */ +package swt.most.statemachine.xtext.parser.antlr; + +import com.google.inject.Inject; +import org.eclipse.xtext.parser.antlr.AbstractAntlrParser; +import org.eclipse.xtext.parser.antlr.XtextTokenStream; +import swt.most.statemachine.xtext.parser.antlr.internal.InternalParserParser; +import swt.most.statemachine.xtext.services.ParserGrammarAccess; + +public class ParserParser extends AbstractAntlrParser { + + @Inject + private ParserGrammarAccess grammarAccess; + + @Override + protected void setInitialHiddenTokens(XtextTokenStream tokenStream) { + tokenStream.setInitialHiddenTokens("RULE_WS", "RULE_ML_COMMENT", "RULE_SL_COMMENT"); + } + + + @Override + protected InternalParserParser createParser(XtextTokenStream stream) { + return new InternalParserParser(stream, getGrammarAccess()); + } + + @Override + protected String getDefaultRuleName() { + return "StateMachine"; + } + + public ParserGrammarAccess getGrammarAccess() { + return this.grammarAccess; + } + + public void setGrammarAccess(ParserGrammarAccess grammarAccess) { + this.grammarAccess = grammarAccess; + } +} diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src-gen/swt/most/statemachine/xtext/parser/antlr/internal/InternalParser.g b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src-gen/swt/most/statemachine/xtext/parser/antlr/internal/InternalParser.g new file mode 100644 index 0000000000000000000000000000000000000000..8ffd3ddc95d0a205157cf5cb328c397b3145bb7a --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src-gen/swt/most/statemachine/xtext/parser/antlr/internal/InternalParser.g @@ -0,0 +1,814 @@ +/* + * generated by Xtext 2.35.0 + */ +grammar InternalParser; + +options { + superClass=AbstractInternalAntlrParser; +} + +@lexer::header { +package swt.most.statemachine.xtext.parser.antlr.internal; + +// Hack: Use our own Lexer superclass by means of import. +// Currently there is no other way to specify the superclass for the lexer. +import org.eclipse.xtext.parser.antlr.Lexer; +} + +@parser::header { +package swt.most.statemachine.xtext.parser.antlr.internal; + +import org.eclipse.xtext.*; +import org.eclipse.xtext.parser.*; +import org.eclipse.xtext.parser.impl.*; +import org.eclipse.emf.ecore.util.EcoreUtil; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser; +import org.eclipse.xtext.parser.antlr.XtextTokenStream; +import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens; +import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken; +import swt.most.statemachine.xtext.services.ParserGrammarAccess; + +} + +@parser::members { + + private ParserGrammarAccess grammarAccess; + + public InternalParserParser(TokenStream input, ParserGrammarAccess grammarAccess) { + this(input); + this.grammarAccess = grammarAccess; + registerRules(grammarAccess.getGrammar()); + } + + @Override + protected String getFirstRuleName() { + return "StateMachine"; + } + + @Override + protected ParserGrammarAccess getGrammarAccess() { + return grammarAccess; + } + +} + +@rulecatch { + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } +} + +// Entry rule entryRuleStateMachine +entryRuleStateMachine returns [EObject current=null]: + { newCompositeNode(grammarAccess.getStateMachineRule()); } + iv_ruleStateMachine=ruleStateMachine + { $current=$iv_ruleStateMachine.current; } + EOF; + +// Rule StateMachine +ruleStateMachine returns [EObject current=null] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + ( + ( + { + $current = forceCreateModelElement( + grammarAccess.getStateMachineAccess().getStateMachineAction_0(), + $current); + } + ) + otherlv_1='StateMachine' + { + newLeafNode(otherlv_1, grammarAccess.getStateMachineAccess().getStateMachineKeyword_1()); + } + ( + ( + { + newCompositeNode(grammarAccess.getStateMachineAccess().getNameEStringParserRuleCall_2_0()); + } + lv_name_2_0=ruleEString + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getStateMachineRule()); + } + set( + $current, + "name", + lv_name_2_0, + "swt.most.statemachine.xtext.Parser.EString"); + afterParserOrEnumRuleCall(); + } + ) + ) + otherlv_3='{' + { + newLeafNode(otherlv_3, grammarAccess.getStateMachineAccess().getLeftCurlyBracketKeyword_3()); + } + ( + ( + { + newCompositeNode(grammarAccess.getStateMachineAccess().getInitialstateInitialStateParserRuleCall_4_0()); + } + lv_initialstate_4_0=ruleInitialState + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getStateMachineRule()); + } + set( + $current, + "initialstate", + lv_initialstate_4_0, + "swt.most.statemachine.xtext.Parser.InitialState"); + afterParserOrEnumRuleCall(); + } + ) + ) + ( + ( + ( + { + newCompositeNode(grammarAccess.getStateMachineAccess().getStatesNormalStateParserRuleCall_5_0_0()); + } + lv_states_5_0=ruleNormalState + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getStateMachineRule()); + } + add( + $current, + "states", + lv_states_5_0, + "swt.most.statemachine.xtext.Parser.NormalState"); + afterParserOrEnumRuleCall(); + } + ) + ) + | + ( + ( + { + newCompositeNode(grammarAccess.getStateMachineAccess().getFinalstatesFinalStateParserRuleCall_5_1_0()); + } + lv_finalstates_6_0=ruleFinalState + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getStateMachineRule()); + } + add( + $current, + "finalstates", + lv_finalstates_6_0, + "swt.most.statemachine.xtext.Parser.FinalState"); + afterParserOrEnumRuleCall(); + } + ) + ) + | + ( + ( + { + newCompositeNode(grammarAccess.getStateMachineAccess().getTransitionsTransitionParserRuleCall_5_2_0()); + } + lv_transitions_7_0=ruleTransition + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getStateMachineRule()); + } + add( + $current, + "transitions", + lv_transitions_7_0, + "swt.most.statemachine.xtext.Parser.Transition"); + afterParserOrEnumRuleCall(); + } + ) + ) + )* + otherlv_8='}' + { + newLeafNode(otherlv_8, grammarAccess.getStateMachineAccess().getRightCurlyBracketKeyword_6()); + } + ) +; + +// Entry rule entryRuleNormalState +entryRuleNormalState returns [EObject current=null]: + { newCompositeNode(grammarAccess.getNormalStateRule()); } + iv_ruleNormalState=ruleNormalState + { $current=$iv_ruleNormalState.current; } + EOF; + +// Rule NormalState +ruleNormalState returns [EObject current=null] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + ( + ( + { + $current = forceCreateModelElement( + grammarAccess.getNormalStateAccess().getNormalStateAction_0(), + $current); + } + ) + otherlv_1='state' + { + newLeafNode(otherlv_1, grammarAccess.getNormalStateAccess().getStateKeyword_1()); + } + ( + ( + { + newCompositeNode(grammarAccess.getNormalStateAccess().getNameEStringParserRuleCall_2_0()); + } + lv_name_2_0=ruleEString + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getNormalStateRule()); + } + set( + $current, + "name", + lv_name_2_0, + "swt.most.statemachine.xtext.Parser.EString"); + afterParserOrEnumRuleCall(); + } + ) + ) + ( + otherlv_3='{' + { + newLeafNode(otherlv_3, grammarAccess.getNormalStateAccess().getLeftCurlyBracketKeyword_3_0()); + } + ( + otherlv_4='entry:' + { + newLeafNode(otherlv_4, grammarAccess.getNormalStateAccess().getEntryKeyword_3_1_0()); + } + ( + ( + { + newCompositeNode(grammarAccess.getNormalStateAccess().getEntry_ActionParserRuleCall_3_1_1_0()); + } + lv_entry__5_0=ruleAction + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getNormalStateRule()); + } + set( + $current, + "entry_", + lv_entry__5_0, + "swt.most.statemachine.xtext.Parser.Action"); + afterParserOrEnumRuleCall(); + } + ) + ) + )? + ( + otherlv_6='do:' + { + newLeafNode(otherlv_6, grammarAccess.getNormalStateAccess().getDoKeyword_3_2_0()); + } + ( + ( + { + newCompositeNode(grammarAccess.getNormalStateAccess().getDo_ActionParserRuleCall_3_2_1_0()); + } + lv_do__7_0=ruleAction + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getNormalStateRule()); + } + set( + $current, + "do_", + lv_do__7_0, + "swt.most.statemachine.xtext.Parser.Action"); + afterParserOrEnumRuleCall(); + } + ) + ) + )? + ( + otherlv_8='exit:' + { + newLeafNode(otherlv_8, grammarAccess.getNormalStateAccess().getExitKeyword_3_3_0()); + } + ( + ( + { + newCompositeNode(grammarAccess.getNormalStateAccess().getExit_ActionParserRuleCall_3_3_1_0()); + } + lv_exit__9_0=ruleAction + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getNormalStateRule()); + } + set( + $current, + "exit_", + lv_exit__9_0, + "swt.most.statemachine.xtext.Parser.Action"); + afterParserOrEnumRuleCall(); + } + ) + ) + )? + otherlv_10='}' + { + newLeafNode(otherlv_10, grammarAccess.getNormalStateAccess().getRightCurlyBracketKeyword_3_4()); + } + )? + ) +; + +// Entry rule entryRuleFinalState +entryRuleFinalState returns [EObject current=null]: + { newCompositeNode(grammarAccess.getFinalStateRule()); } + iv_ruleFinalState=ruleFinalState + { $current=$iv_ruleFinalState.current; } + EOF; + +// Rule FinalState +ruleFinalState returns [EObject current=null] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + ( + ( + { + $current = forceCreateModelElement( + grammarAccess.getFinalStateAccess().getFinalStateAction_0(), + $current); + } + ) + otherlv_1='end' + { + newLeafNode(otherlv_1, grammarAccess.getFinalStateAccess().getEndKeyword_1()); + } + ( + ( + lv_name_2_0=RULE_FINALSTATENAME + { + newLeafNode(lv_name_2_0, grammarAccess.getFinalStateAccess().getNameFINALSTATENAMETerminalRuleCall_2_0()); + } + { + if ($current==null) { + $current = createModelElement(grammarAccess.getFinalStateRule()); + } + setWithLastConsumed( + $current, + "name", + lv_name_2_0, + "swt.most.statemachine.xtext.Parser.FINALSTATENAME"); + } + ) + ) + ) +; + +// Entry rule entryRuleInitialState +entryRuleInitialState returns [EObject current=null]: + { newCompositeNode(grammarAccess.getInitialStateRule()); } + iv_ruleInitialState=ruleInitialState + { $current=$iv_ruleInitialState.current; } + EOF; + +// Rule InitialState +ruleInitialState returns [EObject current=null] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + ( + ( + { + $current = forceCreateModelElement( + grammarAccess.getInitialStateAccess().getInitialStateAction_0(), + $current); + } + ) + otherlv_1='start' + { + newLeafNode(otherlv_1, grammarAccess.getInitialStateAccess().getStartKeyword_1()); + } + ( + ( + lv_name_2_0=RULE_INITIALSTATENAME + { + newLeafNode(lv_name_2_0, grammarAccess.getInitialStateAccess().getNameINITIALSTATENAMETerminalRuleCall_2_0()); + } + { + if ($current==null) { + $current = createModelElement(grammarAccess.getInitialStateRule()); + } + setWithLastConsumed( + $current, + "name", + lv_name_2_0, + "swt.most.statemachine.xtext.Parser.INITIALSTATENAME"); + } + ) + ) + ) +; + +// Entry rule entryRuleTransition +entryRuleTransition returns [EObject current=null]: + { newCompositeNode(grammarAccess.getTransitionRule()); } + iv_ruleTransition=ruleTransition + { $current=$iv_ruleTransition.current; } + EOF; + +// Rule Transition +ruleTransition returns [EObject current=null] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + ( + ( + { + $current = forceCreateModelElement( + grammarAccess.getTransitionAccess().getTransitionAction_0(), + $current); + } + ) + ( + ( + { + if ($current==null) { + $current = createModelElement(grammarAccess.getTransitionRule()); + } + } + { + newCompositeNode(grammarAccess.getTransitionAccess().getFromStateCrossReference_1_0()); + } + ruleEString + { + afterParserOrEnumRuleCall(); + } + ) + ) + otherlv_2='-' + { + newLeafNode(otherlv_2, grammarAccess.getTransitionAccess().getHyphenMinusKeyword_2()); + } + ( + ( + { + newCompositeNode(grammarAccess.getTransitionAccess().getTriggerTriggerParserRuleCall_3_0()); + } + lv_trigger_3_0=ruleTrigger + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getTransitionRule()); + } + set( + $current, + "trigger", + lv_trigger_3_0, + "swt.most.statemachine.xtext.Parser.Trigger"); + afterParserOrEnumRuleCall(); + } + ) + )? + ( + otherlv_4='[' + { + newLeafNode(otherlv_4, grammarAccess.getTransitionAccess().getLeftSquareBracketKeyword_4_0()); + } + ( + ( + { + newCompositeNode(grammarAccess.getTransitionAccess().getGuardGuardParserRuleCall_4_1_0()); + } + lv_guard_5_0=ruleGuard + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getTransitionRule()); + } + set( + $current, + "guard", + lv_guard_5_0, + "swt.most.statemachine.xtext.Parser.Guard"); + afterParserOrEnumRuleCall(); + } + ) + ) + otherlv_6=']' + { + newLeafNode(otherlv_6, grammarAccess.getTransitionAccess().getRightSquareBracketKeyword_4_2()); + } + )? + ( + otherlv_7='/' + { + newLeafNode(otherlv_7, grammarAccess.getTransitionAccess().getSolidusKeyword_5_0()); + } + ( + ( + { + newCompositeNode(grammarAccess.getTransitionAccess().getActionActionParserRuleCall_5_1_0()); + } + lv_action_8_0=ruleAction + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getTransitionRule()); + } + set( + $current, + "action", + lv_action_8_0, + "swt.most.statemachine.xtext.Parser.Action"); + afterParserOrEnumRuleCall(); + } + ) + ) + )? + otherlv_9='->' + { + newLeafNode(otherlv_9, grammarAccess.getTransitionAccess().getHyphenMinusGreaterThanSignKeyword_6()); + } + ( + ( + { + if ($current==null) { + $current = createModelElement(grammarAccess.getTransitionRule()); + } + } + { + newCompositeNode(grammarAccess.getTransitionAccess().getToStateCrossReference_7_0()); + } + ruleEString + { + afterParserOrEnumRuleCall(); + } + ) + ) + ) +; + +// Entry rule entryRuleAction +entryRuleAction returns [EObject current=null]: + { newCompositeNode(grammarAccess.getActionRule()); } + iv_ruleAction=ruleAction + { $current=$iv_ruleAction.current; } + EOF; + +// Rule Action +ruleAction returns [EObject current=null] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + ( + ( + { + $current = forceCreateModelElement( + grammarAccess.getActionAccess().getActionAction_0(), + $current); + } + ) + ( + ( + { + newCompositeNode(grammarAccess.getActionAccess().getContentActivityContentParserRuleCall_1_0()); + } + lv_content_1_0=ruleActivityContent + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getActionRule()); + } + set( + $current, + "content", + lv_content_1_0, + "swt.most.statemachine.xtext.Parser.ActivityContent"); + afterParserOrEnumRuleCall(); + } + ) + ) + ) +; + +// Entry rule entryRuleTrigger +entryRuleTrigger returns [EObject current=null]: + { newCompositeNode(grammarAccess.getTriggerRule()); } + iv_ruleTrigger=ruleTrigger + { $current=$iv_ruleTrigger.current; } + EOF; + +// Rule Trigger +ruleTrigger returns [EObject current=null] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + ( + ( + { + $current = forceCreateModelElement( + grammarAccess.getTriggerAccess().getTriggerAction_0(), + $current); + } + ) + ( + ( + { + newCompositeNode(grammarAccess.getTriggerAccess().getContentActivityContentParserRuleCall_1_0()); + } + lv_content_1_0=ruleActivityContent + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getTriggerRule()); + } + set( + $current, + "content", + lv_content_1_0, + "swt.most.statemachine.xtext.Parser.ActivityContent"); + afterParserOrEnumRuleCall(); + } + ) + ) + ) +; + +// Entry rule entryRuleGuard +entryRuleGuard returns [EObject current=null]: + { newCompositeNode(grammarAccess.getGuardRule()); } + iv_ruleGuard=ruleGuard + { $current=$iv_ruleGuard.current; } + EOF; + +// Rule Guard +ruleGuard returns [EObject current=null] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + ( + ( + { + $current = forceCreateModelElement( + grammarAccess.getGuardAccess().getGuardAction_0(), + $current); + } + ) + ( + ( + { + newCompositeNode(grammarAccess.getGuardAccess().getContentEStringParserRuleCall_1_0()); + } + lv_content_1_0=ruleEString + { + if ($current==null) { + $current = createModelElementForParent(grammarAccess.getGuardRule()); + } + set( + $current, + "content", + lv_content_1_0, + "swt.most.statemachine.xtext.Parser.EString"); + afterParserOrEnumRuleCall(); + } + ) + ) + ) +; + +// Entry rule entryRuleActivityContent +entryRuleActivityContent returns [String current=null]: + { newCompositeNode(grammarAccess.getActivityContentRule()); } + iv_ruleActivityContent=ruleActivityContent + { $current=$iv_ruleActivityContent.current.getText(); } + EOF; + +// Rule ActivityContent +ruleActivityContent returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + ( + this_STRING_0=RULE_STRING + { + $current.merge(this_STRING_0); + } + { + newLeafNode(this_STRING_0, grammarAccess.getActivityContentAccess().getSTRINGTerminalRuleCall_0()); + } + | + this_ID_1=RULE_ID + { + $current.merge(this_ID_1); + } + { + newLeafNode(this_ID_1, grammarAccess.getActivityContentAccess().getIDTerminalRuleCall_1()); + } + | + this_CALL_2=RULE_CALL + { + $current.merge(this_CALL_2); + } + { + newLeafNode(this_CALL_2, grammarAccess.getActivityContentAccess().getCALLTerminalRuleCall_2()); + } + ) +; + +// Entry rule entryRuleEString +entryRuleEString returns [String current=null]: + { newCompositeNode(grammarAccess.getEStringRule()); } + iv_ruleEString=ruleEString + { $current=$iv_ruleEString.current.getText(); } + EOF; + +// Rule EString +ruleEString returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] +@init { + enterRule(); +} +@after { + leaveRule(); +}: + ( + this_STRING_0=RULE_STRING + { + $current.merge(this_STRING_0); + } + { + newLeafNode(this_STRING_0, grammarAccess.getEStringAccess().getSTRINGTerminalRuleCall_0()); + } + | + this_ID_1=RULE_ID + { + $current.merge(this_ID_1); + } + { + newLeafNode(this_ID_1, grammarAccess.getEStringAccess().getIDTerminalRuleCall_1()); + } + | + this_INITIALSTATENAME_2=RULE_INITIALSTATENAME + { + $current.merge(this_INITIALSTATENAME_2); + } + { + newLeafNode(this_INITIALSTATENAME_2, grammarAccess.getEStringAccess().getINITIALSTATENAMETerminalRuleCall_2()); + } + | + this_FINALSTATENAME_3=RULE_FINALSTATENAME + { + $current.merge(this_FINALSTATENAME_3); + } + { + newLeafNode(this_FINALSTATENAME_3, grammarAccess.getEStringAccess().getFINALSTATENAMETerminalRuleCall_3()); + } + ) +; + +RULE_INITIALSTATENAME : 'I_' (RULE_INT|RULE_STRING|RULE_ID)+; + +RULE_FINALSTATENAME : 'F_' (RULE_INT|RULE_STRING|RULE_ID)+; + +RULE_CALL : RULE_ID ('.' RULE_ID)+; + +RULE_ID : '^'? ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*; + +fragment RULE_INT : ('0'..'9')+; + +RULE_STRING : ('"' ('\\' .|~(('\\'|'"')))* '"'|'\'' ('\\' .|~(('\\'|'\'')))* '\''); + +RULE_ML_COMMENT : '/*' ( options {greedy=false;} : . )*'*/'; + +RULE_SL_COMMENT : '//' ~(('\n'|'\r'))* ('\r'? '\n')?; + +RULE_WS : (' '|'\t'|'\r'|'\n')+; + +RULE_ANY_OTHER : .; diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src-gen/swt/most/statemachine/xtext/parser/antlr/internal/InternalParser.tokens b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src-gen/swt/most/statemachine/xtext/parser/antlr/internal/InternalParser.tokens new file mode 100644 index 0000000000000000000000000000000000000000..cf878cfd1917f031ee6b9f20c47c84e5810c3e60 --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src-gen/swt/most/statemachine/xtext/parser/antlr/internal/InternalParser.tokens @@ -0,0 +1,38 @@ +'-'=23 +'->'=27 +'/'=26 +'StateMachine'=14 +'['=24 +']'=25 +'do:'=19 +'end'=21 +'entry:'=18 +'exit:'=20 +'start'=22 +'state'=17 +'{'=15 +'}'=16 +RULE_ANY_OTHER=13 +RULE_CALL=8 +RULE_FINALSTATENAME=4 +RULE_ID=7 +RULE_INITIALSTATENAME=5 +RULE_INT=9 +RULE_ML_COMMENT=10 +RULE_SL_COMMENT=11 +RULE_STRING=6 +RULE_WS=12 +T__14=14 +T__15=15 +T__16=16 +T__17=17 +T__18=18 +T__19=19 +T__20=20 +T__21=21 +T__22=22 +T__23=23 +T__24=24 +T__25=25 +T__26=26 +T__27=27 diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src-gen/swt/most/statemachine/xtext/parser/antlr/internal/InternalParserLexer.java b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src-gen/swt/most/statemachine/xtext/parser/antlr/internal/InternalParserLexer.java new file mode 100644 index 0000000000000000000000000000000000000000..962f130c670235cd4f543fde65ebcbd705417d7f --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src-gen/swt/most/statemachine/xtext/parser/antlr/internal/InternalParserLexer.java @@ -0,0 +1,1541 @@ +package swt.most.statemachine.xtext.parser.antlr.internal; + +// Hack: Use our own Lexer superclass by means of import. +// Currently there is no other way to specify the superclass for the lexer. +import org.eclipse.xtext.parser.antlr.Lexer; + + +import org.antlr.runtime.*; +import java.util.Stack; +import java.util.List; +import java.util.ArrayList; + +@SuppressWarnings("all") +public class InternalParserLexer extends Lexer { + public static final int RULE_INITIALSTATENAME=5; + public static final int RULE_STRING=6; + public static final int RULE_SL_COMMENT=11; + public static final int T__19=19; + public static final int T__15=15; + public static final int T__16=16; + public static final int T__17=17; + public static final int T__18=18; + public static final int T__14=14; + public static final int EOF=-1; + public static final int RULE_CALL=8; + public static final int RULE_ID=7; + public static final int RULE_WS=12; + public static final int RULE_ANY_OTHER=13; + public static final int T__26=26; + public static final int T__27=27; + public static final int RULE_FINALSTATENAME=4; + public static final int RULE_INT=9; + public static final int T__22=22; + public static final int RULE_ML_COMMENT=10; + public static final int T__23=23; + public static final int T__24=24; + public static final int T__25=25; + public static final int T__20=20; + public static final int T__21=21; + + // delegates + // delegators + + public InternalParserLexer() {;} + public InternalParserLexer(CharStream input) { + this(input, new RecognizerSharedState()); + } + public InternalParserLexer(CharStream input, RecognizerSharedState state) { + super(input,state); + + } + public String getGrammarFileName() { return "InternalParser.g"; } + + // $ANTLR start "T__14" + public final void mT__14() throws RecognitionException { + try { + int _type = T__14; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalParser.g:11:7: ( 'StateMachine' ) + // InternalParser.g:11:9: 'StateMachine' + { + match("StateMachine"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__14" + + // $ANTLR start "T__15" + public final void mT__15() throws RecognitionException { + try { + int _type = T__15; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalParser.g:12:7: ( '{' ) + // InternalParser.g:12:9: '{' + { + match('{'); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__15" + + // $ANTLR start "T__16" + public final void mT__16() throws RecognitionException { + try { + int _type = T__16; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalParser.g:13:7: ( '}' ) + // InternalParser.g:13:9: '}' + { + match('}'); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__16" + + // $ANTLR start "T__17" + public final void mT__17() throws RecognitionException { + try { + int _type = T__17; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalParser.g:14:7: ( 'state' ) + // InternalParser.g:14:9: 'state' + { + match("state"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__17" + + // $ANTLR start "T__18" + public final void mT__18() throws RecognitionException { + try { + int _type = T__18; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalParser.g:15:7: ( 'entry:' ) + // InternalParser.g:15:9: 'entry:' + { + match("entry:"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__18" + + // $ANTLR start "T__19" + public final void mT__19() throws RecognitionException { + try { + int _type = T__19; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalParser.g:16:7: ( 'do:' ) + // InternalParser.g:16:9: 'do:' + { + match("do:"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__19" + + // $ANTLR start "T__20" + public final void mT__20() throws RecognitionException { + try { + int _type = T__20; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalParser.g:17:7: ( 'exit:' ) + // InternalParser.g:17:9: 'exit:' + { + match("exit:"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__20" + + // $ANTLR start "T__21" + public final void mT__21() throws RecognitionException { + try { + int _type = T__21; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalParser.g:18:7: ( 'end' ) + // InternalParser.g:18:9: 'end' + { + match("end"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__21" + + // $ANTLR start "T__22" + public final void mT__22() throws RecognitionException { + try { + int _type = T__22; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalParser.g:19:7: ( 'start' ) + // InternalParser.g:19:9: 'start' + { + match("start"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__22" + + // $ANTLR start "T__23" + public final void mT__23() throws RecognitionException { + try { + int _type = T__23; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalParser.g:20:7: ( '-' ) + // InternalParser.g:20:9: '-' + { + match('-'); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__23" + + // $ANTLR start "T__24" + public final void mT__24() throws RecognitionException { + try { + int _type = T__24; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalParser.g:21:7: ( '[' ) + // InternalParser.g:21:9: '[' + { + match('['); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__24" + + // $ANTLR start "T__25" + public final void mT__25() throws RecognitionException { + try { + int _type = T__25; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalParser.g:22:7: ( ']' ) + // InternalParser.g:22:9: ']' + { + match(']'); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__25" + + // $ANTLR start "T__26" + public final void mT__26() throws RecognitionException { + try { + int _type = T__26; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalParser.g:23:7: ( '/' ) + // InternalParser.g:23:9: '/' + { + match('/'); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__26" + + // $ANTLR start "T__27" + public final void mT__27() throws RecognitionException { + try { + int _type = T__27; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalParser.g:24:7: ( '->' ) + // InternalParser.g:24:9: '->' + { + match("->"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "T__27" + + // $ANTLR start "RULE_INITIALSTATENAME" + public final void mRULE_INITIALSTATENAME() throws RecognitionException { + try { + int _type = RULE_INITIALSTATENAME; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalParser.g:796:23: ( 'I_' ( RULE_INT | RULE_STRING | RULE_ID )+ ) + // InternalParser.g:796:25: 'I_' ( RULE_INT | RULE_STRING | RULE_ID )+ + { + match("I_"); + + // InternalParser.g:796:30: ( RULE_INT | RULE_STRING | RULE_ID )+ + int cnt1=0; + loop1: + do { + int alt1=4; + switch ( input.LA(1) ) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + alt1=1; + } + break; + case '\"': + case '\'': + { + alt1=2; + } + break; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case '^': + case '_': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': + { + alt1=3; + } + break; + + } + + switch (alt1) { + case 1 : + // InternalParser.g:796:31: RULE_INT + { + mRULE_INT(); + + } + break; + case 2 : + // InternalParser.g:796:40: RULE_STRING + { + mRULE_STRING(); + + } + break; + case 3 : + // InternalParser.g:796:52: RULE_ID + { + mRULE_ID(); + + } + break; + + default : + if ( cnt1 >= 1 ) break loop1; + EarlyExitException eee = + new EarlyExitException(1, input); + throw eee; + } + cnt1++; + } while (true); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "RULE_INITIALSTATENAME" + + // $ANTLR start "RULE_FINALSTATENAME" + public final void mRULE_FINALSTATENAME() throws RecognitionException { + try { + int _type = RULE_FINALSTATENAME; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalParser.g:798:21: ( 'F_' ( RULE_INT | RULE_STRING | RULE_ID )+ ) + // InternalParser.g:798:23: 'F_' ( RULE_INT | RULE_STRING | RULE_ID )+ + { + match("F_"); + + // InternalParser.g:798:28: ( RULE_INT | RULE_STRING | RULE_ID )+ + int cnt2=0; + loop2: + do { + int alt2=4; + switch ( input.LA(1) ) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + alt2=1; + } + break; + case '\"': + case '\'': + { + alt2=2; + } + break; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case '^': + case '_': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': + { + alt2=3; + } + break; + + } + + switch (alt2) { + case 1 : + // InternalParser.g:798:29: RULE_INT + { + mRULE_INT(); + + } + break; + case 2 : + // InternalParser.g:798:38: RULE_STRING + { + mRULE_STRING(); + + } + break; + case 3 : + // InternalParser.g:798:50: RULE_ID + { + mRULE_ID(); + + } + break; + + default : + if ( cnt2 >= 1 ) break loop2; + EarlyExitException eee = + new EarlyExitException(2, input); + throw eee; + } + cnt2++; + } while (true); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "RULE_FINALSTATENAME" + + // $ANTLR start "RULE_CALL" + public final void mRULE_CALL() throws RecognitionException { + try { + int _type = RULE_CALL; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalParser.g:800:11: ( RULE_ID ( '.' RULE_ID )+ ) + // InternalParser.g:800:13: RULE_ID ( '.' RULE_ID )+ + { + mRULE_ID(); + // InternalParser.g:800:21: ( '.' RULE_ID )+ + int cnt3=0; + loop3: + do { + int alt3=2; + int LA3_0 = input.LA(1); + + if ( (LA3_0=='.') ) { + alt3=1; + } + + + switch (alt3) { + case 1 : + // InternalParser.g:800:22: '.' RULE_ID + { + match('.'); + mRULE_ID(); + + } + break; + + default : + if ( cnt3 >= 1 ) break loop3; + EarlyExitException eee = + new EarlyExitException(3, input); + throw eee; + } + cnt3++; + } while (true); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "RULE_CALL" + + // $ANTLR start "RULE_ID" + public final void mRULE_ID() throws RecognitionException { + try { + int _type = RULE_ID; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalParser.g:802:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* ) + // InternalParser.g:802:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* + { + // InternalParser.g:802:11: ( '^' )? + int alt4=2; + int LA4_0 = input.LA(1); + + if ( (LA4_0=='^') ) { + alt4=1; + } + switch (alt4) { + case 1 : + // InternalParser.g:802:11: '^' + { + match('^'); + + } + break; + + } + + if ( (input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + // InternalParser.g:802:40: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* + loop5: + do { + int alt5=2; + int LA5_0 = input.LA(1); + + if ( ((LA5_0>='0' && LA5_0<='9')||(LA5_0>='A' && LA5_0<='Z')||LA5_0=='_'||(LA5_0>='a' && LA5_0<='z')) ) { + alt5=1; + } + + + switch (alt5) { + case 1 : + // InternalParser.g: + { + if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + + } + break; + + default : + break loop5; + } + } while (true); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "RULE_ID" + + // $ANTLR start "RULE_INT" + public final void mRULE_INT() throws RecognitionException { + try { + // InternalParser.g:804:19: ( ( '0' .. '9' )+ ) + // InternalParser.g:804:21: ( '0' .. '9' )+ + { + // InternalParser.g:804:21: ( '0' .. '9' )+ + int cnt6=0; + loop6: + do { + int alt6=2; + int LA6_0 = input.LA(1); + + if ( ((LA6_0>='0' && LA6_0<='9')) ) { + alt6=1; + } + + + switch (alt6) { + case 1 : + // InternalParser.g:804:22: '0' .. '9' + { + matchRange('0','9'); + + } + break; + + default : + if ( cnt6 >= 1 ) break loop6; + EarlyExitException eee = + new EarlyExitException(6, input); + throw eee; + } + cnt6++; + } while (true); + + + } + + } + finally { + } + } + // $ANTLR end "RULE_INT" + + // $ANTLR start "RULE_STRING" + public final void mRULE_STRING() throws RecognitionException { + try { + int _type = RULE_STRING; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalParser.g:806:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) ) + // InternalParser.g:806:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) + { + // InternalParser.g:806:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) + int alt9=2; + int LA9_0 = input.LA(1); + + if ( (LA9_0=='\"') ) { + alt9=1; + } + else if ( (LA9_0=='\'') ) { + alt9=2; + } + else { + NoViableAltException nvae = + new NoViableAltException("", 9, 0, input); + + throw nvae; + } + switch (alt9) { + case 1 : + // InternalParser.g:806:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' + { + match('\"'); + // InternalParser.g:806:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* + loop7: + do { + int alt7=3; + int LA7_0 = input.LA(1); + + if ( (LA7_0=='\\') ) { + alt7=1; + } + else if ( ((LA7_0>='\u0000' && LA7_0<='!')||(LA7_0>='#' && LA7_0<='[')||(LA7_0>=']' && LA7_0<='\uFFFF')) ) { + alt7=2; + } + + + switch (alt7) { + case 1 : + // InternalParser.g:806:21: '\\\\' . + { + match('\\'); + matchAny(); + + } + break; + case 2 : + // InternalParser.g:806:28: ~ ( ( '\\\\' | '\"' ) ) + { + if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + + } + break; + + default : + break loop7; + } + } while (true); + + match('\"'); + + } + break; + case 2 : + // InternalParser.g:806:48: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' + { + match('\''); + // InternalParser.g:806:53: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* + loop8: + do { + int alt8=3; + int LA8_0 = input.LA(1); + + if ( (LA8_0=='\\') ) { + alt8=1; + } + else if ( ((LA8_0>='\u0000' && LA8_0<='&')||(LA8_0>='(' && LA8_0<='[')||(LA8_0>=']' && LA8_0<='\uFFFF')) ) { + alt8=2; + } + + + switch (alt8) { + case 1 : + // InternalParser.g:806:54: '\\\\' . + { + match('\\'); + matchAny(); + + } + break; + case 2 : + // InternalParser.g:806:61: ~ ( ( '\\\\' | '\\'' ) ) + { + if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + + } + break; + + default : + break loop8; + } + } while (true); + + match('\''); + + } + break; + + } + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "RULE_STRING" + + // $ANTLR start "RULE_ML_COMMENT" + public final void mRULE_ML_COMMENT() throws RecognitionException { + try { + int _type = RULE_ML_COMMENT; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalParser.g:808:17: ( '/*' ( options {greedy=false; } : . )* '*/' ) + // InternalParser.g:808:19: '/*' ( options {greedy=false; } : . )* '*/' + { + match("/*"); + + // InternalParser.g:808:24: ( options {greedy=false; } : . )* + loop10: + do { + int alt10=2; + int LA10_0 = input.LA(1); + + if ( (LA10_0=='*') ) { + int LA10_1 = input.LA(2); + + if ( (LA10_1=='/') ) { + alt10=2; + } + else if ( ((LA10_1>='\u0000' && LA10_1<='.')||(LA10_1>='0' && LA10_1<='\uFFFF')) ) { + alt10=1; + } + + + } + else if ( ((LA10_0>='\u0000' && LA10_0<=')')||(LA10_0>='+' && LA10_0<='\uFFFF')) ) { + alt10=1; + } + + + switch (alt10) { + case 1 : + // InternalParser.g:808:52: . + { + matchAny(); + + } + break; + + default : + break loop10; + } + } while (true); + + match("*/"); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "RULE_ML_COMMENT" + + // $ANTLR start "RULE_SL_COMMENT" + public final void mRULE_SL_COMMENT() throws RecognitionException { + try { + int _type = RULE_SL_COMMENT; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalParser.g:810:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? ) + // InternalParser.g:810:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? + { + match("//"); + + // InternalParser.g:810:24: (~ ( ( '\\n' | '\\r' ) ) )* + loop11: + do { + int alt11=2; + int LA11_0 = input.LA(1); + + if ( ((LA11_0>='\u0000' && LA11_0<='\t')||(LA11_0>='\u000B' && LA11_0<='\f')||(LA11_0>='\u000E' && LA11_0<='\uFFFF')) ) { + alt11=1; + } + + + switch (alt11) { + case 1 : + // InternalParser.g:810:24: ~ ( ( '\\n' | '\\r' ) ) + { + if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFF') ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + + } + break; + + default : + break loop11; + } + } while (true); + + // InternalParser.g:810:40: ( ( '\\r' )? '\\n' )? + int alt13=2; + int LA13_0 = input.LA(1); + + if ( (LA13_0=='\n'||LA13_0=='\r') ) { + alt13=1; + } + switch (alt13) { + case 1 : + // InternalParser.g:810:41: ( '\\r' )? '\\n' + { + // InternalParser.g:810:41: ( '\\r' )? + int alt12=2; + int LA12_0 = input.LA(1); + + if ( (LA12_0=='\r') ) { + alt12=1; + } + switch (alt12) { + case 1 : + // InternalParser.g:810:41: '\\r' + { + match('\r'); + + } + break; + + } + + match('\n'); + + } + break; + + } + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "RULE_SL_COMMENT" + + // $ANTLR start "RULE_WS" + public final void mRULE_WS() throws RecognitionException { + try { + int _type = RULE_WS; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalParser.g:812:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ ) + // InternalParser.g:812:11: ( ' ' | '\\t' | '\\r' | '\\n' )+ + { + // InternalParser.g:812:11: ( ' ' | '\\t' | '\\r' | '\\n' )+ + int cnt14=0; + loop14: + do { + int alt14=2; + int LA14_0 = input.LA(1); + + if ( ((LA14_0>='\t' && LA14_0<='\n')||LA14_0=='\r'||LA14_0==' ') ) { + alt14=1; + } + + + switch (alt14) { + case 1 : + // InternalParser.g: + { + if ( (input.LA(1)>='\t' && input.LA(1)<='\n')||input.LA(1)=='\r'||input.LA(1)==' ' ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + + } + break; + + default : + if ( cnt14 >= 1 ) break loop14; + EarlyExitException eee = + new EarlyExitException(14, input); + throw eee; + } + cnt14++; + } while (true); + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "RULE_WS" + + // $ANTLR start "RULE_ANY_OTHER" + public final void mRULE_ANY_OTHER() throws RecognitionException { + try { + int _type = RULE_ANY_OTHER; + int _channel = DEFAULT_TOKEN_CHANNEL; + // InternalParser.g:814:16: ( . ) + // InternalParser.g:814:18: . + { + matchAny(); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "RULE_ANY_OTHER" + + public void mTokens() throws RecognitionException { + // InternalParser.g:1:8: ( T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | RULE_INITIALSTATENAME | RULE_FINALSTATENAME | RULE_CALL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER ) + int alt15=23; + alt15 = dfa15.predict(input); + switch (alt15) { + case 1 : + // InternalParser.g:1:10: T__14 + { + mT__14(); + + } + break; + case 2 : + // InternalParser.g:1:16: T__15 + { + mT__15(); + + } + break; + case 3 : + // InternalParser.g:1:22: T__16 + { + mT__16(); + + } + break; + case 4 : + // InternalParser.g:1:28: T__17 + { + mT__17(); + + } + break; + case 5 : + // InternalParser.g:1:34: T__18 + { + mT__18(); + + } + break; + case 6 : + // InternalParser.g:1:40: T__19 + { + mT__19(); + + } + break; + case 7 : + // InternalParser.g:1:46: T__20 + { + mT__20(); + + } + break; + case 8 : + // InternalParser.g:1:52: T__21 + { + mT__21(); + + } + break; + case 9 : + // InternalParser.g:1:58: T__22 + { + mT__22(); + + } + break; + case 10 : + // InternalParser.g:1:64: T__23 + { + mT__23(); + + } + break; + case 11 : + // InternalParser.g:1:70: T__24 + { + mT__24(); + + } + break; + case 12 : + // InternalParser.g:1:76: T__25 + { + mT__25(); + + } + break; + case 13 : + // InternalParser.g:1:82: T__26 + { + mT__26(); + + } + break; + case 14 : + // InternalParser.g:1:88: T__27 + { + mT__27(); + + } + break; + case 15 : + // InternalParser.g:1:94: RULE_INITIALSTATENAME + { + mRULE_INITIALSTATENAME(); + + } + break; + case 16 : + // InternalParser.g:1:116: RULE_FINALSTATENAME + { + mRULE_FINALSTATENAME(); + + } + break; + case 17 : + // InternalParser.g:1:136: RULE_CALL + { + mRULE_CALL(); + + } + break; + case 18 : + // InternalParser.g:1:146: RULE_ID + { + mRULE_ID(); + + } + break; + case 19 : + // InternalParser.g:1:154: RULE_STRING + { + mRULE_STRING(); + + } + break; + case 20 : + // InternalParser.g:1:166: RULE_ML_COMMENT + { + mRULE_ML_COMMENT(); + + } + break; + case 21 : + // InternalParser.g:1:182: RULE_SL_COMMENT + { + mRULE_SL_COMMENT(); + + } + break; + case 22 : + // InternalParser.g:1:198: RULE_WS + { + mRULE_WS(); + + } + break; + case 23 : + // InternalParser.g:1:206: RULE_ANY_OTHER + { + mRULE_ANY_OTHER(); + + } + break; + + } + + } + + + protected DFA15 dfa15 = new DFA15(this); + static final String DFA15_eotS = + "\1\uffff\1\25\2\uffff\3\25\1\36\2\uffff\1\43\2\25\1\22\1\25\2\22\2\uffff\2\25\4\uffff\4\25\7\uffff\3\25\2\uffff\3\25\1\71\1\25\1\uffff\2\61\1\uffff\1\63\1\uffff\1\63\4\25\1\uffff\1\25\2\61\2\63\1\25\1\105\1\106\1\25\1\uffff\1\25\3\uffff\5\25\1\116\1\uffff"; + static final String DFA15_eofS = + "\117\uffff"; + static final String DFA15_minS = + "\1\0\1\56\2\uffff\3\56\1\76\2\uffff\1\52\2\56\1\101\1\56\2\0\2\uffff\2\56\4\uffff\4\56\7\uffff\2\42\1\56\2\uffff\5\56\1\uffff\2\56\1\uffff\1\56\1\uffff\5\56\1\uffff\11\56\1\uffff\1\56\3\uffff\6\56\1\uffff"; + static final String DFA15_maxS = + "\1\uffff\1\172\2\uffff\3\172\1\76\2\uffff\1\57\4\172\2\uffff\2\uffff\2\172\4\uffff\4\172\7\uffff\3\172\2\uffff\5\172\1\uffff\2\172\1\uffff\1\172\1\uffff\5\172\1\uffff\11\172\1\uffff\1\172\3\uffff\6\172\1\uffff"; + static final String DFA15_acceptS = + "\2\uffff\1\2\1\3\4\uffff\1\13\1\14\7\uffff\1\26\1\27\2\uffff\1\22\1\21\1\2\1\3\4\uffff\1\16\1\12\1\13\1\14\1\24\1\25\1\15\3\uffff\1\23\1\26\5\uffff\1\6\2\uffff\1\17\1\uffff\1\20\5\uffff\1\10\11\uffff\1\7\1\uffff\1\4\1\11\1\5\6\uffff\1\1"; + static final String DFA15_specialS = + "\1\0\16\uffff\1\1\1\2\76\uffff}>"; + static final String[] DFA15_transitionS = { + "\11\22\2\21\2\22\1\21\22\22\1\21\1\22\1\17\4\22\1\20\5\22\1\7\1\22\1\12\21\22\5\16\1\14\2\16\1\13\11\16\1\1\7\16\1\10\1\22\1\11\1\15\1\16\1\22\3\16\1\6\1\5\15\16\1\4\7\16\1\2\1\22\1\3\uff82\22", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\23\24\1\23\6\24", + "", + "", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\23\24\1\31\6\24", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\15\24\1\32\11\24\1\33\2\24", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\16\24\1\34\13\24", + "\1\35", + "", + "", + "\1\41\4\uffff\1\42", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\44\1\uffff\32\24", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\45\1\uffff\32\24", + "\32\46\4\uffff\1\46\1\uffff\32\46", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\32\24", + "\0\47", + "\0\47", + "", + "", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\1\51\31\24", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\32\24", + "", + "", + "", + "", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\1\52\31\24", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\3\24\1\54\17\24\1\53\6\24", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\10\24\1\55\21\24", + "\1\26\1\uffff\12\24\1\56\6\uffff\32\24\4\uffff\1\24\1\uffff\32\24", + "", + "", + "", + "", + "", + "", + "", + "\1\61\4\uffff\1\61\6\uffff\1\26\1\uffff\12\57\7\uffff\32\60\3\uffff\1\61\1\60\1\uffff\32\60", + "\1\63\4\uffff\1\63\6\uffff\1\26\1\uffff\12\62\7\uffff\32\64\3\uffff\1\63\1\64\1\uffff\32\64", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\32\24", + "", + "", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\23\24\1\65\6\24", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\21\24\1\67\1\24\1\66\6\24", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\21\24\1\70\10\24", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\32\24", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\23\24\1\72\6\24", + "", + "\1\26\1\uffff\12\57\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60", + "\1\26\1\uffff\12\73\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74", + "", + "\1\26\1\uffff\12\62\7\uffff\32\64\4\uffff\1\64\1\uffff\32\64", + "", + "\1\26\1\uffff\12\75\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\4\24\1\77\25\24", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\4\24\1\100\25\24", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\23\24\1\101\6\24", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\30\24\1\102\1\24", + "", + "\1\26\1\uffff\12\24\1\103\6\uffff\32\24\4\uffff\1\24\1\uffff\32\24", + "\1\26\1\uffff\12\73\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74", + "\1\26\1\uffff\12\73\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74", + "\1\26\1\uffff\12\75\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76", + "\1\26\1\uffff\12\75\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76", + "\1\26\1\uffff\12\24\7\uffff\14\24\1\104\15\24\4\uffff\1\24\1\uffff\32\24", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\32\24", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\32\24", + "\1\26\1\uffff\12\24\1\107\6\uffff\32\24\4\uffff\1\24\1\uffff\32\24", + "", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\1\110\31\24", + "", + "", + "", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\2\24\1\111\27\24", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\7\24\1\112\22\24", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\10\24\1\113\21\24", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\15\24\1\114\14\24", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\4\24\1\115\25\24", + "\1\26\1\uffff\12\24\7\uffff\32\24\4\uffff\1\24\1\uffff\32\24", + "" + }; + + static final short[] DFA15_eot = DFA.unpackEncodedString(DFA15_eotS); + static final short[] DFA15_eof = DFA.unpackEncodedString(DFA15_eofS); + static final char[] DFA15_min = DFA.unpackEncodedStringToUnsignedChars(DFA15_minS); + static final char[] DFA15_max = DFA.unpackEncodedStringToUnsignedChars(DFA15_maxS); + static final short[] DFA15_accept = DFA.unpackEncodedString(DFA15_acceptS); + static final short[] DFA15_special = DFA.unpackEncodedString(DFA15_specialS); + static final short[][] DFA15_transition; + + static { + int numStates = DFA15_transitionS.length; + DFA15_transition = new short[numStates][]; + for (int i=0; i<numStates; i++) { + DFA15_transition[i] = DFA.unpackEncodedString(DFA15_transitionS[i]); + } + } + + class DFA15 extends DFA { + + public DFA15(BaseRecognizer recognizer) { + this.recognizer = recognizer; + this.decisionNumber = 15; + this.eot = DFA15_eot; + this.eof = DFA15_eof; + this.min = DFA15_min; + this.max = DFA15_max; + this.accept = DFA15_accept; + this.special = DFA15_special; + this.transition = DFA15_transition; + } + public String getDescription() { + return "1:1: Tokens : ( T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | RULE_INITIALSTATENAME | RULE_FINALSTATENAME | RULE_CALL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );"; + } + public int specialStateTransition(int s, IntStream _input) throws NoViableAltException { + IntStream input = _input; + int _s = s; + switch ( s ) { + case 0 : + int LA15_0 = input.LA(1); + + s = -1; + if ( (LA15_0=='S') ) {s = 1;} + + else if ( (LA15_0=='{') ) {s = 2;} + + else if ( (LA15_0=='}') ) {s = 3;} + + else if ( (LA15_0=='s') ) {s = 4;} + + else if ( (LA15_0=='e') ) {s = 5;} + + else if ( (LA15_0=='d') ) {s = 6;} + + else if ( (LA15_0=='-') ) {s = 7;} + + else if ( (LA15_0=='[') ) {s = 8;} + + else if ( (LA15_0==']') ) {s = 9;} + + else if ( (LA15_0=='/') ) {s = 10;} + + else if ( (LA15_0=='I') ) {s = 11;} + + else if ( (LA15_0=='F') ) {s = 12;} + + else if ( (LA15_0=='^') ) {s = 13;} + + else if ( ((LA15_0>='A' && LA15_0<='E')||(LA15_0>='G' && LA15_0<='H')||(LA15_0>='J' && LA15_0<='R')||(LA15_0>='T' && LA15_0<='Z')||LA15_0=='_'||(LA15_0>='a' && LA15_0<='c')||(LA15_0>='f' && LA15_0<='r')||(LA15_0>='t' && LA15_0<='z')) ) {s = 14;} + + else if ( (LA15_0=='\"') ) {s = 15;} + + else if ( (LA15_0=='\'') ) {s = 16;} + + else if ( ((LA15_0>='\t' && LA15_0<='\n')||LA15_0=='\r'||LA15_0==' ') ) {s = 17;} + + else if ( ((LA15_0>='\u0000' && LA15_0<='\b')||(LA15_0>='\u000B' && LA15_0<='\f')||(LA15_0>='\u000E' && LA15_0<='\u001F')||LA15_0=='!'||(LA15_0>='#' && LA15_0<='&')||(LA15_0>='(' && LA15_0<=',')||LA15_0=='.'||(LA15_0>='0' && LA15_0<='@')||LA15_0=='\\'||LA15_0=='`'||LA15_0=='|'||(LA15_0>='~' && LA15_0<='\uFFFF')) ) {s = 18;} + + if ( s>=0 ) return s; + break; + case 1 : + int LA15_15 = input.LA(1); + + s = -1; + if ( ((LA15_15>='\u0000' && LA15_15<='\uFFFF')) ) {s = 39;} + + else s = 18; + + if ( s>=0 ) return s; + break; + case 2 : + int LA15_16 = input.LA(1); + + s = -1; + if ( ((LA15_16>='\u0000' && LA15_16<='\uFFFF')) ) {s = 39;} + + else s = 18; + + if ( s>=0 ) return s; + break; + } + NoViableAltException nvae = + new NoViableAltException(getDescription(), 15, _s, input); + error(nvae); + throw nvae; + } + } + + +} \ No newline at end of file diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src-gen/swt/most/statemachine/xtext/parser/antlr/internal/InternalParserParser.java b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src-gen/swt/most/statemachine/xtext/parser/antlr/internal/InternalParserParser.java new file mode 100644 index 0000000000000000000000000000000000000000..c874516da98fa8f02e96d6567cf52f9870e8678a --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src-gen/swt/most/statemachine/xtext/parser/antlr/internal/InternalParserParser.java @@ -0,0 +1,1942 @@ +package swt.most.statemachine.xtext.parser.antlr.internal; + +import org.eclipse.xtext.*; +import org.eclipse.xtext.parser.*; +import org.eclipse.xtext.parser.impl.*; +import org.eclipse.emf.ecore.util.EcoreUtil; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser; +import org.eclipse.xtext.parser.antlr.XtextTokenStream; +import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens; +import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken; +import swt.most.statemachine.xtext.services.ParserGrammarAccess; + + + +import org.antlr.runtime.*; +import java.util.Stack; +import java.util.List; +import java.util.ArrayList; + +@SuppressWarnings("all") +public class InternalParserParser extends AbstractInternalAntlrParser { + public static final String[] tokenNames = new String[] { + "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_FINALSTATENAME", "RULE_INITIALSTATENAME", "RULE_STRING", "RULE_ID", "RULE_CALL", "RULE_INT", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'StateMachine'", "'{'", "'}'", "'state'", "'entry:'", "'do:'", "'exit:'", "'end'", "'start'", "'-'", "'['", "']'", "'/'", "'->'" + }; + public static final int RULE_INITIALSTATENAME=5; + public static final int RULE_STRING=6; + public static final int RULE_SL_COMMENT=11; + public static final int T__19=19; + public static final int T__15=15; + public static final int T__16=16; + public static final int T__17=17; + public static final int T__18=18; + public static final int T__14=14; + public static final int EOF=-1; + public static final int RULE_CALL=8; + public static final int RULE_ID=7; + public static final int RULE_WS=12; + public static final int RULE_ANY_OTHER=13; + public static final int T__26=26; + public static final int T__27=27; + public static final int RULE_FINALSTATENAME=4; + public static final int RULE_INT=9; + public static final int T__22=22; + public static final int RULE_ML_COMMENT=10; + public static final int T__23=23; + public static final int T__24=24; + public static final int T__25=25; + public static final int T__20=20; + public static final int T__21=21; + + // delegates + // delegators + + + public InternalParserParser(TokenStream input) { + this(input, new RecognizerSharedState()); + } + public InternalParserParser(TokenStream input, RecognizerSharedState state) { + super(input, state); + + } + + + public String[] getTokenNames() { return InternalParserParser.tokenNames; } + public String getGrammarFileName() { return "InternalParser.g"; } + + + + private ParserGrammarAccess grammarAccess; + + public InternalParserParser(TokenStream input, ParserGrammarAccess grammarAccess) { + this(input); + this.grammarAccess = grammarAccess; + registerRules(grammarAccess.getGrammar()); + } + + @Override + protected String getFirstRuleName() { + return "StateMachine"; + } + + @Override + protected ParserGrammarAccess getGrammarAccess() { + return grammarAccess; + } + + + + + // $ANTLR start "entryRuleStateMachine" + // InternalParser.g:64:1: entryRuleStateMachine returns [EObject current=null] : iv_ruleStateMachine= ruleStateMachine EOF ; + public final EObject entryRuleStateMachine() throws RecognitionException { + EObject current = null; + + EObject iv_ruleStateMachine = null; + + + try { + // InternalParser.g:64:53: (iv_ruleStateMachine= ruleStateMachine EOF ) + // InternalParser.g:65:2: iv_ruleStateMachine= ruleStateMachine EOF + { + newCompositeNode(grammarAccess.getStateMachineRule()); + pushFollow(FOLLOW_1); + iv_ruleStateMachine=ruleStateMachine(); + + state._fsp--; + + current =iv_ruleStateMachine; + match(input,EOF,FOLLOW_2); + + } + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "entryRuleStateMachine" + + + // $ANTLR start "ruleStateMachine" + // InternalParser.g:71:1: ruleStateMachine returns [EObject current=null] : ( () otherlv_1= 'StateMachine' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' ( (lv_initialstate_4_0= ruleInitialState ) ) ( ( (lv_states_5_0= ruleNormalState ) ) | ( (lv_finalstates_6_0= ruleFinalState ) ) | ( (lv_transitions_7_0= ruleTransition ) ) )* otherlv_8= '}' ) ; + public final EObject ruleStateMachine() throws RecognitionException { + EObject current = null; + + Token otherlv_1=null; + Token otherlv_3=null; + Token otherlv_8=null; + AntlrDatatypeRuleToken lv_name_2_0 = null; + + EObject lv_initialstate_4_0 = null; + + EObject lv_states_5_0 = null; + + EObject lv_finalstates_6_0 = null; + + EObject lv_transitions_7_0 = null; + + + + enterRule(); + + try { + // InternalParser.g:77:2: ( ( () otherlv_1= 'StateMachine' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' ( (lv_initialstate_4_0= ruleInitialState ) ) ( ( (lv_states_5_0= ruleNormalState ) ) | ( (lv_finalstates_6_0= ruleFinalState ) ) | ( (lv_transitions_7_0= ruleTransition ) ) )* otherlv_8= '}' ) ) + // InternalParser.g:78:2: ( () otherlv_1= 'StateMachine' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' ( (lv_initialstate_4_0= ruleInitialState ) ) ( ( (lv_states_5_0= ruleNormalState ) ) | ( (lv_finalstates_6_0= ruleFinalState ) ) | ( (lv_transitions_7_0= ruleTransition ) ) )* otherlv_8= '}' ) + { + // InternalParser.g:78:2: ( () otherlv_1= 'StateMachine' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' ( (lv_initialstate_4_0= ruleInitialState ) ) ( ( (lv_states_5_0= ruleNormalState ) ) | ( (lv_finalstates_6_0= ruleFinalState ) ) | ( (lv_transitions_7_0= ruleTransition ) ) )* otherlv_8= '}' ) + // InternalParser.g:79:3: () otherlv_1= 'StateMachine' ( (lv_name_2_0= ruleEString ) ) otherlv_3= '{' ( (lv_initialstate_4_0= ruleInitialState ) ) ( ( (lv_states_5_0= ruleNormalState ) ) | ( (lv_finalstates_6_0= ruleFinalState ) ) | ( (lv_transitions_7_0= ruleTransition ) ) )* otherlv_8= '}' + { + // InternalParser.g:79:3: () + // InternalParser.g:80:4: + { + + current = forceCreateModelElement( + grammarAccess.getStateMachineAccess().getStateMachineAction_0(), + current); + + + } + + otherlv_1=(Token)match(input,14,FOLLOW_3); + + newLeafNode(otherlv_1, grammarAccess.getStateMachineAccess().getStateMachineKeyword_1()); + + // InternalParser.g:90:3: ( (lv_name_2_0= ruleEString ) ) + // InternalParser.g:91:4: (lv_name_2_0= ruleEString ) + { + // InternalParser.g:91:4: (lv_name_2_0= ruleEString ) + // InternalParser.g:92:5: lv_name_2_0= ruleEString + { + + newCompositeNode(grammarAccess.getStateMachineAccess().getNameEStringParserRuleCall_2_0()); + + pushFollow(FOLLOW_4); + lv_name_2_0=ruleEString(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getStateMachineRule()); + } + set( + current, + "name", + lv_name_2_0, + "swt.most.statemachine.xtext.Parser.EString"); + afterParserOrEnumRuleCall(); + + + } + + + } + + otherlv_3=(Token)match(input,15,FOLLOW_5); + + newLeafNode(otherlv_3, grammarAccess.getStateMachineAccess().getLeftCurlyBracketKeyword_3()); + + // InternalParser.g:113:3: ( (lv_initialstate_4_0= ruleInitialState ) ) + // InternalParser.g:114:4: (lv_initialstate_4_0= ruleInitialState ) + { + // InternalParser.g:114:4: (lv_initialstate_4_0= ruleInitialState ) + // InternalParser.g:115:5: lv_initialstate_4_0= ruleInitialState + { + + newCompositeNode(grammarAccess.getStateMachineAccess().getInitialstateInitialStateParserRuleCall_4_0()); + + pushFollow(FOLLOW_6); + lv_initialstate_4_0=ruleInitialState(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getStateMachineRule()); + } + set( + current, + "initialstate", + lv_initialstate_4_0, + "swt.most.statemachine.xtext.Parser.InitialState"); + afterParserOrEnumRuleCall(); + + + } + + + } + + // InternalParser.g:132:3: ( ( (lv_states_5_0= ruleNormalState ) ) | ( (lv_finalstates_6_0= ruleFinalState ) ) | ( (lv_transitions_7_0= ruleTransition ) ) )* + loop1: + do { + int alt1=4; + switch ( input.LA(1) ) { + case 17: + { + alt1=1; + } + break; + case 21: + { + alt1=2; + } + break; + case RULE_FINALSTATENAME: + case RULE_INITIALSTATENAME: + case RULE_STRING: + case RULE_ID: + { + alt1=3; + } + break; + + } + + switch (alt1) { + case 1 : + // InternalParser.g:133:4: ( (lv_states_5_0= ruleNormalState ) ) + { + // InternalParser.g:133:4: ( (lv_states_5_0= ruleNormalState ) ) + // InternalParser.g:134:5: (lv_states_5_0= ruleNormalState ) + { + // InternalParser.g:134:5: (lv_states_5_0= ruleNormalState ) + // InternalParser.g:135:6: lv_states_5_0= ruleNormalState + { + + newCompositeNode(grammarAccess.getStateMachineAccess().getStatesNormalStateParserRuleCall_5_0_0()); + + pushFollow(FOLLOW_6); + lv_states_5_0=ruleNormalState(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getStateMachineRule()); + } + add( + current, + "states", + lv_states_5_0, + "swt.most.statemachine.xtext.Parser.NormalState"); + afterParserOrEnumRuleCall(); + + + } + + + } + + + } + break; + case 2 : + // InternalParser.g:153:4: ( (lv_finalstates_6_0= ruleFinalState ) ) + { + // InternalParser.g:153:4: ( (lv_finalstates_6_0= ruleFinalState ) ) + // InternalParser.g:154:5: (lv_finalstates_6_0= ruleFinalState ) + { + // InternalParser.g:154:5: (lv_finalstates_6_0= ruleFinalState ) + // InternalParser.g:155:6: lv_finalstates_6_0= ruleFinalState + { + + newCompositeNode(grammarAccess.getStateMachineAccess().getFinalstatesFinalStateParserRuleCall_5_1_0()); + + pushFollow(FOLLOW_6); + lv_finalstates_6_0=ruleFinalState(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getStateMachineRule()); + } + add( + current, + "finalstates", + lv_finalstates_6_0, + "swt.most.statemachine.xtext.Parser.FinalState"); + afterParserOrEnumRuleCall(); + + + } + + + } + + + } + break; + case 3 : + // InternalParser.g:173:4: ( (lv_transitions_7_0= ruleTransition ) ) + { + // InternalParser.g:173:4: ( (lv_transitions_7_0= ruleTransition ) ) + // InternalParser.g:174:5: (lv_transitions_7_0= ruleTransition ) + { + // InternalParser.g:174:5: (lv_transitions_7_0= ruleTransition ) + // InternalParser.g:175:6: lv_transitions_7_0= ruleTransition + { + + newCompositeNode(grammarAccess.getStateMachineAccess().getTransitionsTransitionParserRuleCall_5_2_0()); + + pushFollow(FOLLOW_6); + lv_transitions_7_0=ruleTransition(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getStateMachineRule()); + } + add( + current, + "transitions", + lv_transitions_7_0, + "swt.most.statemachine.xtext.Parser.Transition"); + afterParserOrEnumRuleCall(); + + + } + + + } + + + } + break; + + default : + break loop1; + } + } while (true); + + otherlv_8=(Token)match(input,16,FOLLOW_2); + + newLeafNode(otherlv_8, grammarAccess.getStateMachineAccess().getRightCurlyBracketKeyword_6()); + + + } + + + } + + + leaveRule(); + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "ruleStateMachine" + + + // $ANTLR start "entryRuleNormalState" + // InternalParser.g:201:1: entryRuleNormalState returns [EObject current=null] : iv_ruleNormalState= ruleNormalState EOF ; + public final EObject entryRuleNormalState() throws RecognitionException { + EObject current = null; + + EObject iv_ruleNormalState = null; + + + try { + // InternalParser.g:201:52: (iv_ruleNormalState= ruleNormalState EOF ) + // InternalParser.g:202:2: iv_ruleNormalState= ruleNormalState EOF + { + newCompositeNode(grammarAccess.getNormalStateRule()); + pushFollow(FOLLOW_1); + iv_ruleNormalState=ruleNormalState(); + + state._fsp--; + + current =iv_ruleNormalState; + match(input,EOF,FOLLOW_2); + + } + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "entryRuleNormalState" + + + // $ANTLR start "ruleNormalState" + // InternalParser.g:208:1: ruleNormalState returns [EObject current=null] : ( () otherlv_1= 'state' ( (lv_name_2_0= ruleEString ) ) (otherlv_3= '{' (otherlv_4= 'entry:' ( (lv_entry__5_0= ruleAction ) ) )? (otherlv_6= 'do:' ( (lv_do__7_0= ruleAction ) ) )? (otherlv_8= 'exit:' ( (lv_exit__9_0= ruleAction ) ) )? otherlv_10= '}' )? ) ; + public final EObject ruleNormalState() throws RecognitionException { + EObject current = null; + + Token otherlv_1=null; + Token otherlv_3=null; + Token otherlv_4=null; + Token otherlv_6=null; + Token otherlv_8=null; + Token otherlv_10=null; + AntlrDatatypeRuleToken lv_name_2_0 = null; + + EObject lv_entry__5_0 = null; + + EObject lv_do__7_0 = null; + + EObject lv_exit__9_0 = null; + + + + enterRule(); + + try { + // InternalParser.g:214:2: ( ( () otherlv_1= 'state' ( (lv_name_2_0= ruleEString ) ) (otherlv_3= '{' (otherlv_4= 'entry:' ( (lv_entry__5_0= ruleAction ) ) )? (otherlv_6= 'do:' ( (lv_do__7_0= ruleAction ) ) )? (otherlv_8= 'exit:' ( (lv_exit__9_0= ruleAction ) ) )? otherlv_10= '}' )? ) ) + // InternalParser.g:215:2: ( () otherlv_1= 'state' ( (lv_name_2_0= ruleEString ) ) (otherlv_3= '{' (otherlv_4= 'entry:' ( (lv_entry__5_0= ruleAction ) ) )? (otherlv_6= 'do:' ( (lv_do__7_0= ruleAction ) ) )? (otherlv_8= 'exit:' ( (lv_exit__9_0= ruleAction ) ) )? otherlv_10= '}' )? ) + { + // InternalParser.g:215:2: ( () otherlv_1= 'state' ( (lv_name_2_0= ruleEString ) ) (otherlv_3= '{' (otherlv_4= 'entry:' ( (lv_entry__5_0= ruleAction ) ) )? (otherlv_6= 'do:' ( (lv_do__7_0= ruleAction ) ) )? (otherlv_8= 'exit:' ( (lv_exit__9_0= ruleAction ) ) )? otherlv_10= '}' )? ) + // InternalParser.g:216:3: () otherlv_1= 'state' ( (lv_name_2_0= ruleEString ) ) (otherlv_3= '{' (otherlv_4= 'entry:' ( (lv_entry__5_0= ruleAction ) ) )? (otherlv_6= 'do:' ( (lv_do__7_0= ruleAction ) ) )? (otherlv_8= 'exit:' ( (lv_exit__9_0= ruleAction ) ) )? otherlv_10= '}' )? + { + // InternalParser.g:216:3: () + // InternalParser.g:217:4: + { + + current = forceCreateModelElement( + grammarAccess.getNormalStateAccess().getNormalStateAction_0(), + current); + + + } + + otherlv_1=(Token)match(input,17,FOLLOW_3); + + newLeafNode(otherlv_1, grammarAccess.getNormalStateAccess().getStateKeyword_1()); + + // InternalParser.g:227:3: ( (lv_name_2_0= ruleEString ) ) + // InternalParser.g:228:4: (lv_name_2_0= ruleEString ) + { + // InternalParser.g:228:4: (lv_name_2_0= ruleEString ) + // InternalParser.g:229:5: lv_name_2_0= ruleEString + { + + newCompositeNode(grammarAccess.getNormalStateAccess().getNameEStringParserRuleCall_2_0()); + + pushFollow(FOLLOW_7); + lv_name_2_0=ruleEString(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getNormalStateRule()); + } + set( + current, + "name", + lv_name_2_0, + "swt.most.statemachine.xtext.Parser.EString"); + afterParserOrEnumRuleCall(); + + + } + + + } + + // InternalParser.g:246:3: (otherlv_3= '{' (otherlv_4= 'entry:' ( (lv_entry__5_0= ruleAction ) ) )? (otherlv_6= 'do:' ( (lv_do__7_0= ruleAction ) ) )? (otherlv_8= 'exit:' ( (lv_exit__9_0= ruleAction ) ) )? otherlv_10= '}' )? + int alt5=2; + int LA5_0 = input.LA(1); + + if ( (LA5_0==15) ) { + alt5=1; + } + switch (alt5) { + case 1 : + // InternalParser.g:247:4: otherlv_3= '{' (otherlv_4= 'entry:' ( (lv_entry__5_0= ruleAction ) ) )? (otherlv_6= 'do:' ( (lv_do__7_0= ruleAction ) ) )? (otherlv_8= 'exit:' ( (lv_exit__9_0= ruleAction ) ) )? otherlv_10= '}' + { + otherlv_3=(Token)match(input,15,FOLLOW_8); + + newLeafNode(otherlv_3, grammarAccess.getNormalStateAccess().getLeftCurlyBracketKeyword_3_0()); + + // InternalParser.g:251:4: (otherlv_4= 'entry:' ( (lv_entry__5_0= ruleAction ) ) )? + int alt2=2; + int LA2_0 = input.LA(1); + + if ( (LA2_0==18) ) { + alt2=1; + } + switch (alt2) { + case 1 : + // InternalParser.g:252:5: otherlv_4= 'entry:' ( (lv_entry__5_0= ruleAction ) ) + { + otherlv_4=(Token)match(input,18,FOLLOW_9); + + newLeafNode(otherlv_4, grammarAccess.getNormalStateAccess().getEntryKeyword_3_1_0()); + + // InternalParser.g:256:5: ( (lv_entry__5_0= ruleAction ) ) + // InternalParser.g:257:6: (lv_entry__5_0= ruleAction ) + { + // InternalParser.g:257:6: (lv_entry__5_0= ruleAction ) + // InternalParser.g:258:7: lv_entry__5_0= ruleAction + { + + newCompositeNode(grammarAccess.getNormalStateAccess().getEntry_ActionParserRuleCall_3_1_1_0()); + + pushFollow(FOLLOW_10); + lv_entry__5_0=ruleAction(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getNormalStateRule()); + } + set( + current, + "entry_", + lv_entry__5_0, + "swt.most.statemachine.xtext.Parser.Action"); + afterParserOrEnumRuleCall(); + + + } + + + } + + + } + break; + + } + + // InternalParser.g:276:4: (otherlv_6= 'do:' ( (lv_do__7_0= ruleAction ) ) )? + int alt3=2; + int LA3_0 = input.LA(1); + + if ( (LA3_0==19) ) { + alt3=1; + } + switch (alt3) { + case 1 : + // InternalParser.g:277:5: otherlv_6= 'do:' ( (lv_do__7_0= ruleAction ) ) + { + otherlv_6=(Token)match(input,19,FOLLOW_9); + + newLeafNode(otherlv_6, grammarAccess.getNormalStateAccess().getDoKeyword_3_2_0()); + + // InternalParser.g:281:5: ( (lv_do__7_0= ruleAction ) ) + // InternalParser.g:282:6: (lv_do__7_0= ruleAction ) + { + // InternalParser.g:282:6: (lv_do__7_0= ruleAction ) + // InternalParser.g:283:7: lv_do__7_0= ruleAction + { + + newCompositeNode(grammarAccess.getNormalStateAccess().getDo_ActionParserRuleCall_3_2_1_0()); + + pushFollow(FOLLOW_11); + lv_do__7_0=ruleAction(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getNormalStateRule()); + } + set( + current, + "do_", + lv_do__7_0, + "swt.most.statemachine.xtext.Parser.Action"); + afterParserOrEnumRuleCall(); + + + } + + + } + + + } + break; + + } + + // InternalParser.g:301:4: (otherlv_8= 'exit:' ( (lv_exit__9_0= ruleAction ) ) )? + int alt4=2; + int LA4_0 = input.LA(1); + + if ( (LA4_0==20) ) { + alt4=1; + } + switch (alt4) { + case 1 : + // InternalParser.g:302:5: otherlv_8= 'exit:' ( (lv_exit__9_0= ruleAction ) ) + { + otherlv_8=(Token)match(input,20,FOLLOW_9); + + newLeafNode(otherlv_8, grammarAccess.getNormalStateAccess().getExitKeyword_3_3_0()); + + // InternalParser.g:306:5: ( (lv_exit__9_0= ruleAction ) ) + // InternalParser.g:307:6: (lv_exit__9_0= ruleAction ) + { + // InternalParser.g:307:6: (lv_exit__9_0= ruleAction ) + // InternalParser.g:308:7: lv_exit__9_0= ruleAction + { + + newCompositeNode(grammarAccess.getNormalStateAccess().getExit_ActionParserRuleCall_3_3_1_0()); + + pushFollow(FOLLOW_12); + lv_exit__9_0=ruleAction(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getNormalStateRule()); + } + set( + current, + "exit_", + lv_exit__9_0, + "swt.most.statemachine.xtext.Parser.Action"); + afterParserOrEnumRuleCall(); + + + } + + + } + + + } + break; + + } + + otherlv_10=(Token)match(input,16,FOLLOW_2); + + newLeafNode(otherlv_10, grammarAccess.getNormalStateAccess().getRightCurlyBracketKeyword_3_4()); + + + } + break; + + } + + + } + + + } + + + leaveRule(); + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "ruleNormalState" + + + // $ANTLR start "entryRuleFinalState" + // InternalParser.g:335:1: entryRuleFinalState returns [EObject current=null] : iv_ruleFinalState= ruleFinalState EOF ; + public final EObject entryRuleFinalState() throws RecognitionException { + EObject current = null; + + EObject iv_ruleFinalState = null; + + + try { + // InternalParser.g:335:51: (iv_ruleFinalState= ruleFinalState EOF ) + // InternalParser.g:336:2: iv_ruleFinalState= ruleFinalState EOF + { + newCompositeNode(grammarAccess.getFinalStateRule()); + pushFollow(FOLLOW_1); + iv_ruleFinalState=ruleFinalState(); + + state._fsp--; + + current =iv_ruleFinalState; + match(input,EOF,FOLLOW_2); + + } + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "entryRuleFinalState" + + + // $ANTLR start "ruleFinalState" + // InternalParser.g:342:1: ruleFinalState returns [EObject current=null] : ( () otherlv_1= 'end' ( (lv_name_2_0= RULE_FINALSTATENAME ) ) ) ; + public final EObject ruleFinalState() throws RecognitionException { + EObject current = null; + + Token otherlv_1=null; + Token lv_name_2_0=null; + + + enterRule(); + + try { + // InternalParser.g:348:2: ( ( () otherlv_1= 'end' ( (lv_name_2_0= RULE_FINALSTATENAME ) ) ) ) + // InternalParser.g:349:2: ( () otherlv_1= 'end' ( (lv_name_2_0= RULE_FINALSTATENAME ) ) ) + { + // InternalParser.g:349:2: ( () otherlv_1= 'end' ( (lv_name_2_0= RULE_FINALSTATENAME ) ) ) + // InternalParser.g:350:3: () otherlv_1= 'end' ( (lv_name_2_0= RULE_FINALSTATENAME ) ) + { + // InternalParser.g:350:3: () + // InternalParser.g:351:4: + { + + current = forceCreateModelElement( + grammarAccess.getFinalStateAccess().getFinalStateAction_0(), + current); + + + } + + otherlv_1=(Token)match(input,21,FOLLOW_13); + + newLeafNode(otherlv_1, grammarAccess.getFinalStateAccess().getEndKeyword_1()); + + // InternalParser.g:361:3: ( (lv_name_2_0= RULE_FINALSTATENAME ) ) + // InternalParser.g:362:4: (lv_name_2_0= RULE_FINALSTATENAME ) + { + // InternalParser.g:362:4: (lv_name_2_0= RULE_FINALSTATENAME ) + // InternalParser.g:363:5: lv_name_2_0= RULE_FINALSTATENAME + { + lv_name_2_0=(Token)match(input,RULE_FINALSTATENAME,FOLLOW_2); + + newLeafNode(lv_name_2_0, grammarAccess.getFinalStateAccess().getNameFINALSTATENAMETerminalRuleCall_2_0()); + + + if (current==null) { + current = createModelElement(grammarAccess.getFinalStateRule()); + } + setWithLastConsumed( + current, + "name", + lv_name_2_0, + "swt.most.statemachine.xtext.Parser.FINALSTATENAME"); + + + } + + + } + + + } + + + } + + + leaveRule(); + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "ruleFinalState" + + + // $ANTLR start "entryRuleInitialState" + // InternalParser.g:383:1: entryRuleInitialState returns [EObject current=null] : iv_ruleInitialState= ruleInitialState EOF ; + public final EObject entryRuleInitialState() throws RecognitionException { + EObject current = null; + + EObject iv_ruleInitialState = null; + + + try { + // InternalParser.g:383:53: (iv_ruleInitialState= ruleInitialState EOF ) + // InternalParser.g:384:2: iv_ruleInitialState= ruleInitialState EOF + { + newCompositeNode(grammarAccess.getInitialStateRule()); + pushFollow(FOLLOW_1); + iv_ruleInitialState=ruleInitialState(); + + state._fsp--; + + current =iv_ruleInitialState; + match(input,EOF,FOLLOW_2); + + } + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "entryRuleInitialState" + + + // $ANTLR start "ruleInitialState" + // InternalParser.g:390:1: ruleInitialState returns [EObject current=null] : ( () otherlv_1= 'start' ( (lv_name_2_0= RULE_INITIALSTATENAME ) ) ) ; + public final EObject ruleInitialState() throws RecognitionException { + EObject current = null; + + Token otherlv_1=null; + Token lv_name_2_0=null; + + + enterRule(); + + try { + // InternalParser.g:396:2: ( ( () otherlv_1= 'start' ( (lv_name_2_0= RULE_INITIALSTATENAME ) ) ) ) + // InternalParser.g:397:2: ( () otherlv_1= 'start' ( (lv_name_2_0= RULE_INITIALSTATENAME ) ) ) + { + // InternalParser.g:397:2: ( () otherlv_1= 'start' ( (lv_name_2_0= RULE_INITIALSTATENAME ) ) ) + // InternalParser.g:398:3: () otherlv_1= 'start' ( (lv_name_2_0= RULE_INITIALSTATENAME ) ) + { + // InternalParser.g:398:3: () + // InternalParser.g:399:4: + { + + current = forceCreateModelElement( + grammarAccess.getInitialStateAccess().getInitialStateAction_0(), + current); + + + } + + otherlv_1=(Token)match(input,22,FOLLOW_14); + + newLeafNode(otherlv_1, grammarAccess.getInitialStateAccess().getStartKeyword_1()); + + // InternalParser.g:409:3: ( (lv_name_2_0= RULE_INITIALSTATENAME ) ) + // InternalParser.g:410:4: (lv_name_2_0= RULE_INITIALSTATENAME ) + { + // InternalParser.g:410:4: (lv_name_2_0= RULE_INITIALSTATENAME ) + // InternalParser.g:411:5: lv_name_2_0= RULE_INITIALSTATENAME + { + lv_name_2_0=(Token)match(input,RULE_INITIALSTATENAME,FOLLOW_2); + + newLeafNode(lv_name_2_0, grammarAccess.getInitialStateAccess().getNameINITIALSTATENAMETerminalRuleCall_2_0()); + + + if (current==null) { + current = createModelElement(grammarAccess.getInitialStateRule()); + } + setWithLastConsumed( + current, + "name", + lv_name_2_0, + "swt.most.statemachine.xtext.Parser.INITIALSTATENAME"); + + + } + + + } + + + } + + + } + + + leaveRule(); + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "ruleInitialState" + + + // $ANTLR start "entryRuleTransition" + // InternalParser.g:431:1: entryRuleTransition returns [EObject current=null] : iv_ruleTransition= ruleTransition EOF ; + public final EObject entryRuleTransition() throws RecognitionException { + EObject current = null; + + EObject iv_ruleTransition = null; + + + try { + // InternalParser.g:431:51: (iv_ruleTransition= ruleTransition EOF ) + // InternalParser.g:432:2: iv_ruleTransition= ruleTransition EOF + { + newCompositeNode(grammarAccess.getTransitionRule()); + pushFollow(FOLLOW_1); + iv_ruleTransition=ruleTransition(); + + state._fsp--; + + current =iv_ruleTransition; + match(input,EOF,FOLLOW_2); + + } + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "entryRuleTransition" + + + // $ANTLR start "ruleTransition" + // InternalParser.g:438:1: ruleTransition returns [EObject current=null] : ( () ( ( ruleEString ) ) otherlv_2= '-' ( (lv_trigger_3_0= ruleTrigger ) )? (otherlv_4= '[' ( (lv_guard_5_0= ruleGuard ) ) otherlv_6= ']' )? (otherlv_7= '/' ( (lv_action_8_0= ruleAction ) ) )? otherlv_9= '->' ( ( ruleEString ) ) ) ; + public final EObject ruleTransition() throws RecognitionException { + EObject current = null; + + Token otherlv_2=null; + Token otherlv_4=null; + Token otherlv_6=null; + Token otherlv_7=null; + Token otherlv_9=null; + EObject lv_trigger_3_0 = null; + + EObject lv_guard_5_0 = null; + + EObject lv_action_8_0 = null; + + + + enterRule(); + + try { + // InternalParser.g:444:2: ( ( () ( ( ruleEString ) ) otherlv_2= '-' ( (lv_trigger_3_0= ruleTrigger ) )? (otherlv_4= '[' ( (lv_guard_5_0= ruleGuard ) ) otherlv_6= ']' )? (otherlv_7= '/' ( (lv_action_8_0= ruleAction ) ) )? otherlv_9= '->' ( ( ruleEString ) ) ) ) + // InternalParser.g:445:2: ( () ( ( ruleEString ) ) otherlv_2= '-' ( (lv_trigger_3_0= ruleTrigger ) )? (otherlv_4= '[' ( (lv_guard_5_0= ruleGuard ) ) otherlv_6= ']' )? (otherlv_7= '/' ( (lv_action_8_0= ruleAction ) ) )? otherlv_9= '->' ( ( ruleEString ) ) ) + { + // InternalParser.g:445:2: ( () ( ( ruleEString ) ) otherlv_2= '-' ( (lv_trigger_3_0= ruleTrigger ) )? (otherlv_4= '[' ( (lv_guard_5_0= ruleGuard ) ) otherlv_6= ']' )? (otherlv_7= '/' ( (lv_action_8_0= ruleAction ) ) )? otherlv_9= '->' ( ( ruleEString ) ) ) + // InternalParser.g:446:3: () ( ( ruleEString ) ) otherlv_2= '-' ( (lv_trigger_3_0= ruleTrigger ) )? (otherlv_4= '[' ( (lv_guard_5_0= ruleGuard ) ) otherlv_6= ']' )? (otherlv_7= '/' ( (lv_action_8_0= ruleAction ) ) )? otherlv_9= '->' ( ( ruleEString ) ) + { + // InternalParser.g:446:3: () + // InternalParser.g:447:4: + { + + current = forceCreateModelElement( + grammarAccess.getTransitionAccess().getTransitionAction_0(), + current); + + + } + + // InternalParser.g:453:3: ( ( ruleEString ) ) + // InternalParser.g:454:4: ( ruleEString ) + { + // InternalParser.g:454:4: ( ruleEString ) + // InternalParser.g:455:5: ruleEString + { + + if (current==null) { + current = createModelElement(grammarAccess.getTransitionRule()); + } + + + newCompositeNode(grammarAccess.getTransitionAccess().getFromStateCrossReference_1_0()); + + pushFollow(FOLLOW_15); + ruleEString(); + + state._fsp--; + + + afterParserOrEnumRuleCall(); + + + } + + + } + + otherlv_2=(Token)match(input,23,FOLLOW_16); + + newLeafNode(otherlv_2, grammarAccess.getTransitionAccess().getHyphenMinusKeyword_2()); + + // InternalParser.g:473:3: ( (lv_trigger_3_0= ruleTrigger ) )? + int alt6=2; + int LA6_0 = input.LA(1); + + if ( ((LA6_0>=RULE_STRING && LA6_0<=RULE_CALL)) ) { + alt6=1; + } + switch (alt6) { + case 1 : + // InternalParser.g:474:4: (lv_trigger_3_0= ruleTrigger ) + { + // InternalParser.g:474:4: (lv_trigger_3_0= ruleTrigger ) + // InternalParser.g:475:5: lv_trigger_3_0= ruleTrigger + { + + newCompositeNode(grammarAccess.getTransitionAccess().getTriggerTriggerParserRuleCall_3_0()); + + pushFollow(FOLLOW_17); + lv_trigger_3_0=ruleTrigger(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getTransitionRule()); + } + set( + current, + "trigger", + lv_trigger_3_0, + "swt.most.statemachine.xtext.Parser.Trigger"); + afterParserOrEnumRuleCall(); + + + } + + + } + break; + + } + + // InternalParser.g:492:3: (otherlv_4= '[' ( (lv_guard_5_0= ruleGuard ) ) otherlv_6= ']' )? + int alt7=2; + int LA7_0 = input.LA(1); + + if ( (LA7_0==24) ) { + alt7=1; + } + switch (alt7) { + case 1 : + // InternalParser.g:493:4: otherlv_4= '[' ( (lv_guard_5_0= ruleGuard ) ) otherlv_6= ']' + { + otherlv_4=(Token)match(input,24,FOLLOW_3); + + newLeafNode(otherlv_4, grammarAccess.getTransitionAccess().getLeftSquareBracketKeyword_4_0()); + + // InternalParser.g:497:4: ( (lv_guard_5_0= ruleGuard ) ) + // InternalParser.g:498:5: (lv_guard_5_0= ruleGuard ) + { + // InternalParser.g:498:5: (lv_guard_5_0= ruleGuard ) + // InternalParser.g:499:6: lv_guard_5_0= ruleGuard + { + + newCompositeNode(grammarAccess.getTransitionAccess().getGuardGuardParserRuleCall_4_1_0()); + + pushFollow(FOLLOW_18); + lv_guard_5_0=ruleGuard(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getTransitionRule()); + } + set( + current, + "guard", + lv_guard_5_0, + "swt.most.statemachine.xtext.Parser.Guard"); + afterParserOrEnumRuleCall(); + + + } + + + } + + otherlv_6=(Token)match(input,25,FOLLOW_19); + + newLeafNode(otherlv_6, grammarAccess.getTransitionAccess().getRightSquareBracketKeyword_4_2()); + + + } + break; + + } + + // InternalParser.g:521:3: (otherlv_7= '/' ( (lv_action_8_0= ruleAction ) ) )? + int alt8=2; + int LA8_0 = input.LA(1); + + if ( (LA8_0==26) ) { + alt8=1; + } + switch (alt8) { + case 1 : + // InternalParser.g:522:4: otherlv_7= '/' ( (lv_action_8_0= ruleAction ) ) + { + otherlv_7=(Token)match(input,26,FOLLOW_9); + + newLeafNode(otherlv_7, grammarAccess.getTransitionAccess().getSolidusKeyword_5_0()); + + // InternalParser.g:526:4: ( (lv_action_8_0= ruleAction ) ) + // InternalParser.g:527:5: (lv_action_8_0= ruleAction ) + { + // InternalParser.g:527:5: (lv_action_8_0= ruleAction ) + // InternalParser.g:528:6: lv_action_8_0= ruleAction + { + + newCompositeNode(grammarAccess.getTransitionAccess().getActionActionParserRuleCall_5_1_0()); + + pushFollow(FOLLOW_20); + lv_action_8_0=ruleAction(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getTransitionRule()); + } + set( + current, + "action", + lv_action_8_0, + "swt.most.statemachine.xtext.Parser.Action"); + afterParserOrEnumRuleCall(); + + + } + + + } + + + } + break; + + } + + otherlv_9=(Token)match(input,27,FOLLOW_3); + + newLeafNode(otherlv_9, grammarAccess.getTransitionAccess().getHyphenMinusGreaterThanSignKeyword_6()); + + // InternalParser.g:550:3: ( ( ruleEString ) ) + // InternalParser.g:551:4: ( ruleEString ) + { + // InternalParser.g:551:4: ( ruleEString ) + // InternalParser.g:552:5: ruleEString + { + + if (current==null) { + current = createModelElement(grammarAccess.getTransitionRule()); + } + + + newCompositeNode(grammarAccess.getTransitionAccess().getToStateCrossReference_7_0()); + + pushFollow(FOLLOW_2); + ruleEString(); + + state._fsp--; + + + afterParserOrEnumRuleCall(); + + + } + + + } + + + } + + + } + + + leaveRule(); + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "ruleTransition" + + + // $ANTLR start "entryRuleAction" + // InternalParser.g:570:1: entryRuleAction returns [EObject current=null] : iv_ruleAction= ruleAction EOF ; + public final EObject entryRuleAction() throws RecognitionException { + EObject current = null; + + EObject iv_ruleAction = null; + + + try { + // InternalParser.g:570:47: (iv_ruleAction= ruleAction EOF ) + // InternalParser.g:571:2: iv_ruleAction= ruleAction EOF + { + newCompositeNode(grammarAccess.getActionRule()); + pushFollow(FOLLOW_1); + iv_ruleAction=ruleAction(); + + state._fsp--; + + current =iv_ruleAction; + match(input,EOF,FOLLOW_2); + + } + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "entryRuleAction" + + + // $ANTLR start "ruleAction" + // InternalParser.g:577:1: ruleAction returns [EObject current=null] : ( () ( (lv_content_1_0= ruleActivityContent ) ) ) ; + public final EObject ruleAction() throws RecognitionException { + EObject current = null; + + AntlrDatatypeRuleToken lv_content_1_0 = null; + + + + enterRule(); + + try { + // InternalParser.g:583:2: ( ( () ( (lv_content_1_0= ruleActivityContent ) ) ) ) + // InternalParser.g:584:2: ( () ( (lv_content_1_0= ruleActivityContent ) ) ) + { + // InternalParser.g:584:2: ( () ( (lv_content_1_0= ruleActivityContent ) ) ) + // InternalParser.g:585:3: () ( (lv_content_1_0= ruleActivityContent ) ) + { + // InternalParser.g:585:3: () + // InternalParser.g:586:4: + { + + current = forceCreateModelElement( + grammarAccess.getActionAccess().getActionAction_0(), + current); + + + } + + // InternalParser.g:592:3: ( (lv_content_1_0= ruleActivityContent ) ) + // InternalParser.g:593:4: (lv_content_1_0= ruleActivityContent ) + { + // InternalParser.g:593:4: (lv_content_1_0= ruleActivityContent ) + // InternalParser.g:594:5: lv_content_1_0= ruleActivityContent + { + + newCompositeNode(grammarAccess.getActionAccess().getContentActivityContentParserRuleCall_1_0()); + + pushFollow(FOLLOW_2); + lv_content_1_0=ruleActivityContent(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getActionRule()); + } + set( + current, + "content", + lv_content_1_0, + "swt.most.statemachine.xtext.Parser.ActivityContent"); + afterParserOrEnumRuleCall(); + + + } + + + } + + + } + + + } + + + leaveRule(); + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "ruleAction" + + + // $ANTLR start "entryRuleTrigger" + // InternalParser.g:615:1: entryRuleTrigger returns [EObject current=null] : iv_ruleTrigger= ruleTrigger EOF ; + public final EObject entryRuleTrigger() throws RecognitionException { + EObject current = null; + + EObject iv_ruleTrigger = null; + + + try { + // InternalParser.g:615:48: (iv_ruleTrigger= ruleTrigger EOF ) + // InternalParser.g:616:2: iv_ruleTrigger= ruleTrigger EOF + { + newCompositeNode(grammarAccess.getTriggerRule()); + pushFollow(FOLLOW_1); + iv_ruleTrigger=ruleTrigger(); + + state._fsp--; + + current =iv_ruleTrigger; + match(input,EOF,FOLLOW_2); + + } + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "entryRuleTrigger" + + + // $ANTLR start "ruleTrigger" + // InternalParser.g:622:1: ruleTrigger returns [EObject current=null] : ( () ( (lv_content_1_0= ruleActivityContent ) ) ) ; + public final EObject ruleTrigger() throws RecognitionException { + EObject current = null; + + AntlrDatatypeRuleToken lv_content_1_0 = null; + + + + enterRule(); + + try { + // InternalParser.g:628:2: ( ( () ( (lv_content_1_0= ruleActivityContent ) ) ) ) + // InternalParser.g:629:2: ( () ( (lv_content_1_0= ruleActivityContent ) ) ) + { + // InternalParser.g:629:2: ( () ( (lv_content_1_0= ruleActivityContent ) ) ) + // InternalParser.g:630:3: () ( (lv_content_1_0= ruleActivityContent ) ) + { + // InternalParser.g:630:3: () + // InternalParser.g:631:4: + { + + current = forceCreateModelElement( + grammarAccess.getTriggerAccess().getTriggerAction_0(), + current); + + + } + + // InternalParser.g:637:3: ( (lv_content_1_0= ruleActivityContent ) ) + // InternalParser.g:638:4: (lv_content_1_0= ruleActivityContent ) + { + // InternalParser.g:638:4: (lv_content_1_0= ruleActivityContent ) + // InternalParser.g:639:5: lv_content_1_0= ruleActivityContent + { + + newCompositeNode(grammarAccess.getTriggerAccess().getContentActivityContentParserRuleCall_1_0()); + + pushFollow(FOLLOW_2); + lv_content_1_0=ruleActivityContent(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getTriggerRule()); + } + set( + current, + "content", + lv_content_1_0, + "swt.most.statemachine.xtext.Parser.ActivityContent"); + afterParserOrEnumRuleCall(); + + + } + + + } + + + } + + + } + + + leaveRule(); + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "ruleTrigger" + + + // $ANTLR start "entryRuleGuard" + // InternalParser.g:660:1: entryRuleGuard returns [EObject current=null] : iv_ruleGuard= ruleGuard EOF ; + public final EObject entryRuleGuard() throws RecognitionException { + EObject current = null; + + EObject iv_ruleGuard = null; + + + try { + // InternalParser.g:660:46: (iv_ruleGuard= ruleGuard EOF ) + // InternalParser.g:661:2: iv_ruleGuard= ruleGuard EOF + { + newCompositeNode(grammarAccess.getGuardRule()); + pushFollow(FOLLOW_1); + iv_ruleGuard=ruleGuard(); + + state._fsp--; + + current =iv_ruleGuard; + match(input,EOF,FOLLOW_2); + + } + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "entryRuleGuard" + + + // $ANTLR start "ruleGuard" + // InternalParser.g:667:1: ruleGuard returns [EObject current=null] : ( () ( (lv_content_1_0= ruleEString ) ) ) ; + public final EObject ruleGuard() throws RecognitionException { + EObject current = null; + + AntlrDatatypeRuleToken lv_content_1_0 = null; + + + + enterRule(); + + try { + // InternalParser.g:673:2: ( ( () ( (lv_content_1_0= ruleEString ) ) ) ) + // InternalParser.g:674:2: ( () ( (lv_content_1_0= ruleEString ) ) ) + { + // InternalParser.g:674:2: ( () ( (lv_content_1_0= ruleEString ) ) ) + // InternalParser.g:675:3: () ( (lv_content_1_0= ruleEString ) ) + { + // InternalParser.g:675:3: () + // InternalParser.g:676:4: + { + + current = forceCreateModelElement( + grammarAccess.getGuardAccess().getGuardAction_0(), + current); + + + } + + // InternalParser.g:682:3: ( (lv_content_1_0= ruleEString ) ) + // InternalParser.g:683:4: (lv_content_1_0= ruleEString ) + { + // InternalParser.g:683:4: (lv_content_1_0= ruleEString ) + // InternalParser.g:684:5: lv_content_1_0= ruleEString + { + + newCompositeNode(grammarAccess.getGuardAccess().getContentEStringParserRuleCall_1_0()); + + pushFollow(FOLLOW_2); + lv_content_1_0=ruleEString(); + + state._fsp--; + + + if (current==null) { + current = createModelElementForParent(grammarAccess.getGuardRule()); + } + set( + current, + "content", + lv_content_1_0, + "swt.most.statemachine.xtext.Parser.EString"); + afterParserOrEnumRuleCall(); + + + } + + + } + + + } + + + } + + + leaveRule(); + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "ruleGuard" + + + // $ANTLR start "entryRuleActivityContent" + // InternalParser.g:705:1: entryRuleActivityContent returns [String current=null] : iv_ruleActivityContent= ruleActivityContent EOF ; + public final String entryRuleActivityContent() throws RecognitionException { + String current = null; + + AntlrDatatypeRuleToken iv_ruleActivityContent = null; + + + try { + // InternalParser.g:705:55: (iv_ruleActivityContent= ruleActivityContent EOF ) + // InternalParser.g:706:2: iv_ruleActivityContent= ruleActivityContent EOF + { + newCompositeNode(grammarAccess.getActivityContentRule()); + pushFollow(FOLLOW_1); + iv_ruleActivityContent=ruleActivityContent(); + + state._fsp--; + + current =iv_ruleActivityContent.getText(); + match(input,EOF,FOLLOW_2); + + } + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "entryRuleActivityContent" + + + // $ANTLR start "ruleActivityContent" + // InternalParser.g:712:1: ruleActivityContent returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_STRING_0= RULE_STRING | this_ID_1= RULE_ID | this_CALL_2= RULE_CALL ) ; + public final AntlrDatatypeRuleToken ruleActivityContent() throws RecognitionException { + AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken(); + + Token this_STRING_0=null; + Token this_ID_1=null; + Token this_CALL_2=null; + + + enterRule(); + + try { + // InternalParser.g:718:2: ( (this_STRING_0= RULE_STRING | this_ID_1= RULE_ID | this_CALL_2= RULE_CALL ) ) + // InternalParser.g:719:2: (this_STRING_0= RULE_STRING | this_ID_1= RULE_ID | this_CALL_2= RULE_CALL ) + { + // InternalParser.g:719:2: (this_STRING_0= RULE_STRING | this_ID_1= RULE_ID | this_CALL_2= RULE_CALL ) + int alt9=3; + switch ( input.LA(1) ) { + case RULE_STRING: + { + alt9=1; + } + break; + case RULE_ID: + { + alt9=2; + } + break; + case RULE_CALL: + { + alt9=3; + } + break; + default: + NoViableAltException nvae = + new NoViableAltException("", 9, 0, input); + + throw nvae; + } + + switch (alt9) { + case 1 : + // InternalParser.g:720:3: this_STRING_0= RULE_STRING + { + this_STRING_0=(Token)match(input,RULE_STRING,FOLLOW_2); + + current.merge(this_STRING_0); + + + newLeafNode(this_STRING_0, grammarAccess.getActivityContentAccess().getSTRINGTerminalRuleCall_0()); + + + } + break; + case 2 : + // InternalParser.g:728:3: this_ID_1= RULE_ID + { + this_ID_1=(Token)match(input,RULE_ID,FOLLOW_2); + + current.merge(this_ID_1); + + + newLeafNode(this_ID_1, grammarAccess.getActivityContentAccess().getIDTerminalRuleCall_1()); + + + } + break; + case 3 : + // InternalParser.g:736:3: this_CALL_2= RULE_CALL + { + this_CALL_2=(Token)match(input,RULE_CALL,FOLLOW_2); + + current.merge(this_CALL_2); + + + newLeafNode(this_CALL_2, grammarAccess.getActivityContentAccess().getCALLTerminalRuleCall_2()); + + + } + break; + + } + + + } + + + leaveRule(); + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "ruleActivityContent" + + + // $ANTLR start "entryRuleEString" + // InternalParser.g:747:1: entryRuleEString returns [String current=null] : iv_ruleEString= ruleEString EOF ; + public final String entryRuleEString() throws RecognitionException { + String current = null; + + AntlrDatatypeRuleToken iv_ruleEString = null; + + + try { + // InternalParser.g:747:47: (iv_ruleEString= ruleEString EOF ) + // InternalParser.g:748:2: iv_ruleEString= ruleEString EOF + { + newCompositeNode(grammarAccess.getEStringRule()); + pushFollow(FOLLOW_1); + iv_ruleEString=ruleEString(); + + state._fsp--; + + current =iv_ruleEString.getText(); + match(input,EOF,FOLLOW_2); + + } + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "entryRuleEString" + + + // $ANTLR start "ruleEString" + // InternalParser.g:754:1: ruleEString returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_STRING_0= RULE_STRING | this_ID_1= RULE_ID | this_INITIALSTATENAME_2= RULE_INITIALSTATENAME | this_FINALSTATENAME_3= RULE_FINALSTATENAME ) ; + public final AntlrDatatypeRuleToken ruleEString() throws RecognitionException { + AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken(); + + Token this_STRING_0=null; + Token this_ID_1=null; + Token this_INITIALSTATENAME_2=null; + Token this_FINALSTATENAME_3=null; + + + enterRule(); + + try { + // InternalParser.g:760:2: ( (this_STRING_0= RULE_STRING | this_ID_1= RULE_ID | this_INITIALSTATENAME_2= RULE_INITIALSTATENAME | this_FINALSTATENAME_3= RULE_FINALSTATENAME ) ) + // InternalParser.g:761:2: (this_STRING_0= RULE_STRING | this_ID_1= RULE_ID | this_INITIALSTATENAME_2= RULE_INITIALSTATENAME | this_FINALSTATENAME_3= RULE_FINALSTATENAME ) + { + // InternalParser.g:761:2: (this_STRING_0= RULE_STRING | this_ID_1= RULE_ID | this_INITIALSTATENAME_2= RULE_INITIALSTATENAME | this_FINALSTATENAME_3= RULE_FINALSTATENAME ) + int alt10=4; + switch ( input.LA(1) ) { + case RULE_STRING: + { + alt10=1; + } + break; + case RULE_ID: + { + alt10=2; + } + break; + case RULE_INITIALSTATENAME: + { + alt10=3; + } + break; + case RULE_FINALSTATENAME: + { + alt10=4; + } + break; + default: + NoViableAltException nvae = + new NoViableAltException("", 10, 0, input); + + throw nvae; + } + + switch (alt10) { + case 1 : + // InternalParser.g:762:3: this_STRING_0= RULE_STRING + { + this_STRING_0=(Token)match(input,RULE_STRING,FOLLOW_2); + + current.merge(this_STRING_0); + + + newLeafNode(this_STRING_0, grammarAccess.getEStringAccess().getSTRINGTerminalRuleCall_0()); + + + } + break; + case 2 : + // InternalParser.g:770:3: this_ID_1= RULE_ID + { + this_ID_1=(Token)match(input,RULE_ID,FOLLOW_2); + + current.merge(this_ID_1); + + + newLeafNode(this_ID_1, grammarAccess.getEStringAccess().getIDTerminalRuleCall_1()); + + + } + break; + case 3 : + // InternalParser.g:778:3: this_INITIALSTATENAME_2= RULE_INITIALSTATENAME + { + this_INITIALSTATENAME_2=(Token)match(input,RULE_INITIALSTATENAME,FOLLOW_2); + + current.merge(this_INITIALSTATENAME_2); + + + newLeafNode(this_INITIALSTATENAME_2, grammarAccess.getEStringAccess().getINITIALSTATENAMETerminalRuleCall_2()); + + + } + break; + case 4 : + // InternalParser.g:786:3: this_FINALSTATENAME_3= RULE_FINALSTATENAME + { + this_FINALSTATENAME_3=(Token)match(input,RULE_FINALSTATENAME,FOLLOW_2); + + current.merge(this_FINALSTATENAME_3); + + + newLeafNode(this_FINALSTATENAME_3, grammarAccess.getEStringAccess().getFINALSTATENAMETerminalRuleCall_3()); + + + } + break; + + } + + + } + + + leaveRule(); + + } + + catch (RecognitionException re) { + recover(input,re); + appendSkippedTokens(); + } + finally { + } + return current; + } + // $ANTLR end "ruleEString" + + // Delegated rules + + + + + public static final BitSet FOLLOW_1 = new BitSet(new long[]{0x0000000000000000L}); + public static final BitSet FOLLOW_2 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_3 = new BitSet(new long[]{0x00000000000000F0L}); + public static final BitSet FOLLOW_4 = new BitSet(new long[]{0x0000000000008000L}); + public static final BitSet FOLLOW_5 = new BitSet(new long[]{0x0000000000400000L}); + public static final BitSet FOLLOW_6 = new BitSet(new long[]{0x00000000002300F0L}); + public static final BitSet FOLLOW_7 = new BitSet(new long[]{0x0000000000008002L}); + public static final BitSet FOLLOW_8 = new BitSet(new long[]{0x00000000001D0000L}); + public static final BitSet FOLLOW_9 = new BitSet(new long[]{0x00000000000001C0L}); + public static final BitSet FOLLOW_10 = new BitSet(new long[]{0x0000000000190000L}); + public static final BitSet FOLLOW_11 = new BitSet(new long[]{0x0000000000110000L}); + public static final BitSet FOLLOW_12 = new BitSet(new long[]{0x0000000000010000L}); + public static final BitSet FOLLOW_13 = new BitSet(new long[]{0x0000000000000010L}); + public static final BitSet FOLLOW_14 = new BitSet(new long[]{0x0000000000000020L}); + public static final BitSet FOLLOW_15 = new BitSet(new long[]{0x0000000000800000L}); + public static final BitSet FOLLOW_16 = new BitSet(new long[]{0x000000000D0001C0L}); + public static final BitSet FOLLOW_17 = new BitSet(new long[]{0x000000000D000000L}); + public static final BitSet FOLLOW_18 = new BitSet(new long[]{0x0000000002000000L}); + public static final BitSet FOLLOW_19 = new BitSet(new long[]{0x000000000C000000L}); + public static final BitSet FOLLOW_20 = new BitSet(new long[]{0x0000000008000000L}); + +} \ No newline at end of file diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src-gen/swt/most/statemachine/xtext/scoping/AbstractParserScopeProvider.java b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src-gen/swt/most/statemachine/xtext/scoping/AbstractParserScopeProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..89bdd583ac6e03cccbf4bc3e5e9542a07a1c9550 --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src-gen/swt/most/statemachine/xtext/scoping/AbstractParserScopeProvider.java @@ -0,0 +1,9 @@ +/* + * generated by Xtext 2.35.0 + */ +package swt.most.statemachine.xtext.scoping; + +import org.eclipse.xtext.scoping.impl.DelegatingScopeProvider; + +public abstract class AbstractParserScopeProvider extends DelegatingScopeProvider { +} diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src-gen/swt/most/statemachine/xtext/serializer/ParserSemanticSequencer.java b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src-gen/swt/most/statemachine/xtext/serializer/ParserSemanticSequencer.java new file mode 100644 index 0000000000000000000000000000000000000000..7a5da0b568482b36bf9ec2c1b7c666090313b615 --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src-gen/swt/most/statemachine/xtext/serializer/ParserSemanticSequencer.java @@ -0,0 +1,215 @@ +/* + * generated by Xtext 2.35.0 + */ +package swt.most.statemachine.xtext.serializer; + +import com.google.inject.Inject; +import java.util.Set; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.xtext.Action; +import org.eclipse.xtext.Parameter; +import org.eclipse.xtext.ParserRule; +import org.eclipse.xtext.serializer.ISerializationContext; +import org.eclipse.xtext.serializer.acceptor.SequenceFeeder; +import org.eclipse.xtext.serializer.sequencer.AbstractDelegatingSemanticSequencer; +import org.eclipse.xtext.serializer.sequencer.ITransientValueService.ValueTransient; +import swt.most.statemachine.FinalState; +import swt.most.statemachine.Guard; +import swt.most.statemachine.InitialState; +import swt.most.statemachine.NormalState; +import swt.most.statemachine.StateMachine; +import swt.most.statemachine.StatemachinePackage; +import swt.most.statemachine.Transition; +import swt.most.statemachine.Trigger; +import swt.most.statemachine.xtext.services.ParserGrammarAccess; + +@SuppressWarnings("all") +public class ParserSemanticSequencer extends AbstractDelegatingSemanticSequencer { + + @Inject + private ParserGrammarAccess grammarAccess; + + @Override + public void sequence(ISerializationContext context, EObject semanticObject) { + EPackage epackage = semanticObject.eClass().getEPackage(); + ParserRule rule = context.getParserRule(); + Action action = context.getAssignedAction(); + Set<Parameter> parameters = context.getEnabledBooleanParameters(); + if (epackage == StatemachinePackage.eINSTANCE) + switch (semanticObject.eClass().getClassifierID()) { + case StatemachinePackage.ACTION: + sequence_Action(context, (swt.most.statemachine.Action) semanticObject); + return; + case StatemachinePackage.FINAL_STATE: + sequence_FinalState(context, (FinalState) semanticObject); + return; + case StatemachinePackage.GUARD: + sequence_Guard(context, (Guard) semanticObject); + return; + case StatemachinePackage.INITIAL_STATE: + sequence_InitialState(context, (InitialState) semanticObject); + return; + case StatemachinePackage.NORMAL_STATE: + sequence_NormalState(context, (NormalState) semanticObject); + return; + case StatemachinePackage.STATE_MACHINE: + sequence_StateMachine(context, (StateMachine) semanticObject); + return; + case StatemachinePackage.TRANSITION: + sequence_Transition(context, (Transition) semanticObject); + return; + case StatemachinePackage.TRIGGER: + sequence_Trigger(context, (Trigger) semanticObject); + return; + } + if (errorAcceptor != null) + errorAcceptor.accept(diagnosticProvider.createInvalidContextOrTypeDiagnostic(semanticObject, context)); + } + + /** + * <pre> + * Contexts: + * Action returns Action + * + * Constraint: + * content=ActivityContent + * </pre> + */ + protected void sequence_Action(ISerializationContext context, swt.most.statemachine.Action semanticObject) { + if (errorAcceptor != null) { + if (transientValues.isValueTransient(semanticObject, StatemachinePackage.Literals.EXPRESSION__CONTENT) == ValueTransient.YES) + errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachinePackage.Literals.EXPRESSION__CONTENT)); + } + SequenceFeeder feeder = createSequencerFeeder(context, semanticObject); + feeder.accept(grammarAccess.getActionAccess().getContentActivityContentParserRuleCall_1_0(), semanticObject.getContent()); + feeder.finish(); + } + + + /** + * <pre> + * Contexts: + * State returns FinalState + * FinalState returns FinalState + * + * Constraint: + * name=FINALSTATENAME + * </pre> + */ + protected void sequence_FinalState(ISerializationContext context, FinalState semanticObject) { + if (errorAcceptor != null) { + if (transientValues.isValueTransient(semanticObject, StatemachinePackage.Literals.STATE__NAME) == ValueTransient.YES) + errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachinePackage.Literals.STATE__NAME)); + } + SequenceFeeder feeder = createSequencerFeeder(context, semanticObject); + feeder.accept(grammarAccess.getFinalStateAccess().getNameFINALSTATENAMETerminalRuleCall_2_0(), semanticObject.getName()); + feeder.finish(); + } + + + /** + * <pre> + * Contexts: + * Guard returns Guard + * + * Constraint: + * content=EString + * </pre> + */ + protected void sequence_Guard(ISerializationContext context, Guard semanticObject) { + if (errorAcceptor != null) { + if (transientValues.isValueTransient(semanticObject, StatemachinePackage.Literals.EXPRESSION__CONTENT) == ValueTransient.YES) + errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachinePackage.Literals.EXPRESSION__CONTENT)); + } + SequenceFeeder feeder = createSequencerFeeder(context, semanticObject); + feeder.accept(grammarAccess.getGuardAccess().getContentEStringParserRuleCall_1_0(), semanticObject.getContent()); + feeder.finish(); + } + + + /** + * <pre> + * Contexts: + * State returns InitialState + * InitialState returns InitialState + * + * Constraint: + * name=INITIALSTATENAME + * </pre> + */ + protected void sequence_InitialState(ISerializationContext context, InitialState semanticObject) { + if (errorAcceptor != null) { + if (transientValues.isValueTransient(semanticObject, StatemachinePackage.Literals.STATE__NAME) == ValueTransient.YES) + errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachinePackage.Literals.STATE__NAME)); + } + SequenceFeeder feeder = createSequencerFeeder(context, semanticObject); + feeder.accept(grammarAccess.getInitialStateAccess().getNameINITIALSTATENAMETerminalRuleCall_2_0(), semanticObject.getName()); + feeder.finish(); + } + + + /** + * <pre> + * Contexts: + * State returns NormalState + * NormalState returns NormalState + * + * Constraint: + * (name=EString entry_=Action? do_=Action? exit_=Action?) + * </pre> + */ + protected void sequence_NormalState(ISerializationContext context, NormalState semanticObject) { + genericSequencer.createSequence(context, semanticObject); + } + + + /** + * <pre> + * Contexts: + * StateMachine returns StateMachine + * + * Constraint: + * (name=EString initialstate=InitialState (states+=NormalState | finalstates+=FinalState | transitions+=Transition)*) + * </pre> + */ + protected void sequence_StateMachine(ISerializationContext context, StateMachine semanticObject) { + genericSequencer.createSequence(context, semanticObject); + } + + + /** + * <pre> + * Contexts: + * Transition returns Transition + * + * Constraint: + * (from=[State|EString] trigger=Trigger? guard=Guard? action=Action? to=[State|EString]) + * </pre> + */ + protected void sequence_Transition(ISerializationContext context, Transition semanticObject) { + genericSequencer.createSequence(context, semanticObject); + } + + + /** + * <pre> + * Contexts: + * Trigger returns Trigger + * + * Constraint: + * content=ActivityContent + * </pre> + */ + protected void sequence_Trigger(ISerializationContext context, Trigger semanticObject) { + if (errorAcceptor != null) { + if (transientValues.isValueTransient(semanticObject, StatemachinePackage.Literals.EXPRESSION__CONTENT) == ValueTransient.YES) + errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, StatemachinePackage.Literals.EXPRESSION__CONTENT)); + } + SequenceFeeder feeder = createSequencerFeeder(context, semanticObject); + feeder.accept(grammarAccess.getTriggerAccess().getContentActivityContentParserRuleCall_1_0(), semanticObject.getContent()); + feeder.finish(); + } + + +} diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src-gen/swt/most/statemachine/xtext/serializer/ParserSyntacticSequencer.java b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src-gen/swt/most/statemachine/xtext/serializer/ParserSyntacticSequencer.java new file mode 100644 index 0000000000000000000000000000000000000000..0044d42eb53ff34e9f971baa158509b9faad5fd5 --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src-gen/swt/most/statemachine/xtext/serializer/ParserSyntacticSequencer.java @@ -0,0 +1,64 @@ +/* + * generated by Xtext 2.35.0 + */ +package swt.most.statemachine.xtext.serializer; + +import com.google.inject.Inject; +import java.util.List; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.xtext.IGrammarAccess; +import org.eclipse.xtext.RuleCall; +import org.eclipse.xtext.nodemodel.INode; +import org.eclipse.xtext.serializer.analysis.GrammarAlias.AbstractElementAlias; +import org.eclipse.xtext.serializer.analysis.GrammarAlias.GroupAlias; +import org.eclipse.xtext.serializer.analysis.GrammarAlias.TokenAlias; +import org.eclipse.xtext.serializer.analysis.ISyntacticSequencerPDAProvider.ISynNavigable; +import org.eclipse.xtext.serializer.analysis.ISyntacticSequencerPDAProvider.ISynTransition; +import org.eclipse.xtext.serializer.sequencer.AbstractSyntacticSequencer; +import swt.most.statemachine.xtext.services.ParserGrammarAccess; + +@SuppressWarnings("all") +public class ParserSyntacticSequencer extends AbstractSyntacticSequencer { + + protected ParserGrammarAccess grammarAccess; + protected AbstractElementAlias match_NormalState___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_4__q; + + @Inject + protected void init(IGrammarAccess access) { + grammarAccess = (ParserGrammarAccess) access; + match_NormalState___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_4__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getNormalStateAccess().getLeftCurlyBracketKeyword_3_0()), new TokenAlias(false, false, grammarAccess.getNormalStateAccess().getRightCurlyBracketKeyword_3_4())); + } + + @Override + protected String getUnassignedRuleCallToken(EObject semanticObject, RuleCall ruleCall, INode node) { + return ""; + } + + + @Override + protected void emitUnassignedTokens(EObject semanticObject, ISynTransition transition, INode fromNode, INode toNode) { + if (transition.getAmbiguousSyntaxes().isEmpty()) return; + List<INode> transitionNodes = collectNodes(fromNode, toNode); + for (AbstractElementAlias syntax : transition.getAmbiguousSyntaxes()) { + List<INode> syntaxNodes = getNodesFor(transitionNodes, syntax); + if (match_NormalState___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_4__q.equals(syntax)) + emit_NormalState___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_4__q(semanticObject, getLastNavigableState(), syntaxNodes); + else acceptNodes(getLastNavigableState(), syntaxNodes); + } + } + + /** + * <pre> + * Ambiguous syntax: + * ('{' '}')? + * + * This ambiguous syntax occurs at: + * name=EString (ambiguity) (rule end) + + * </pre> + */ + protected void emit_NormalState___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_4__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) { + acceptNodes(transition, nodes); + } + +} diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src-gen/swt/most/statemachine/xtext/services/ParserGrammarAccess.java b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src-gen/swt/most/statemachine/xtext/services/ParserGrammarAccess.java new file mode 100644 index 0000000000000000000000000000000000000000..b41c62c5ed137194c860d9fc1aef3b60763fd841 --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src-gen/swt/most/statemachine/xtext/services/ParserGrammarAccess.java @@ -0,0 +1,780 @@ +/* + * generated by Xtext 2.35.0 + */ +package swt.most.statemachine.xtext.services; + +import com.google.inject.Inject; +import com.google.inject.Singleton; +import java.util.List; +import org.eclipse.xtext.Action; +import org.eclipse.xtext.Alternatives; +import org.eclipse.xtext.Assignment; +import org.eclipse.xtext.CrossReference; +import org.eclipse.xtext.Grammar; +import org.eclipse.xtext.GrammarUtil; +import org.eclipse.xtext.Group; +import org.eclipse.xtext.Keyword; +import org.eclipse.xtext.ParserRule; +import org.eclipse.xtext.RuleCall; +import org.eclipse.xtext.TerminalRule; +import org.eclipse.xtext.common.services.TerminalsGrammarAccess; +import org.eclipse.xtext.service.AbstractElementFinder; +import org.eclipse.xtext.service.GrammarProvider; + +@Singleton +public class ParserGrammarAccess extends AbstractElementFinder.AbstractGrammarElementFinder { + + public class StateMachineElements extends AbstractParserRuleElementFinder { + private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "swt.most.statemachine.xtext.Parser.StateMachine"); + private final Group cGroup = (Group)rule.eContents().get(1); + private final Action cStateMachineAction_0 = (Action)cGroup.eContents().get(0); + private final Keyword cStateMachineKeyword_1 = (Keyword)cGroup.eContents().get(1); + private final Assignment cNameAssignment_2 = (Assignment)cGroup.eContents().get(2); + private final RuleCall cNameEStringParserRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0); + private final Keyword cLeftCurlyBracketKeyword_3 = (Keyword)cGroup.eContents().get(3); + private final Assignment cInitialstateAssignment_4 = (Assignment)cGroup.eContents().get(4); + private final RuleCall cInitialstateInitialStateParserRuleCall_4_0 = (RuleCall)cInitialstateAssignment_4.eContents().get(0); + private final Alternatives cAlternatives_5 = (Alternatives)cGroup.eContents().get(5); + private final Assignment cStatesAssignment_5_0 = (Assignment)cAlternatives_5.eContents().get(0); + private final RuleCall cStatesNormalStateParserRuleCall_5_0_0 = (RuleCall)cStatesAssignment_5_0.eContents().get(0); + private final Assignment cFinalstatesAssignment_5_1 = (Assignment)cAlternatives_5.eContents().get(1); + private final RuleCall cFinalstatesFinalStateParserRuleCall_5_1_0 = (RuleCall)cFinalstatesAssignment_5_1.eContents().get(0); + private final Assignment cTransitionsAssignment_5_2 = (Assignment)cAlternatives_5.eContents().get(2); + private final RuleCall cTransitionsTransitionParserRuleCall_5_2_0 = (RuleCall)cTransitionsAssignment_5_2.eContents().get(0); + private final Keyword cRightCurlyBracketKeyword_6 = (Keyword)cGroup.eContents().get(6); + + //StateMachine returns StateMachine: + // {StateMachine} + // 'StateMachine' name=EString + // '{' + // initialstate=InitialState + // ( states+=NormalState | finalstates+=FinalState | transitions+=Transition)* + // '}'; + @Override public ParserRule getRule() { return rule; } + + //{StateMachine} + //'StateMachine' name=EString + //'{' + // initialstate=InitialState + // ( states+=NormalState | finalstates+=FinalState | transitions+=Transition)* + //'}' + public Group getGroup() { return cGroup; } + + //{StateMachine} + public Action getStateMachineAction_0() { return cStateMachineAction_0; } + + //'StateMachine' + public Keyword getStateMachineKeyword_1() { return cStateMachineKeyword_1; } + + //name=EString + public Assignment getNameAssignment_2() { return cNameAssignment_2; } + + //EString + public RuleCall getNameEStringParserRuleCall_2_0() { return cNameEStringParserRuleCall_2_0; } + + //'{' + public Keyword getLeftCurlyBracketKeyword_3() { return cLeftCurlyBracketKeyword_3; } + + //initialstate=InitialState + public Assignment getInitialstateAssignment_4() { return cInitialstateAssignment_4; } + + //InitialState + public RuleCall getInitialstateInitialStateParserRuleCall_4_0() { return cInitialstateInitialStateParserRuleCall_4_0; } + + //( states+=NormalState | finalstates+=FinalState | transitions+=Transition)* + public Alternatives getAlternatives_5() { return cAlternatives_5; } + + //states+=NormalState + public Assignment getStatesAssignment_5_0() { return cStatesAssignment_5_0; } + + //NormalState + public RuleCall getStatesNormalStateParserRuleCall_5_0_0() { return cStatesNormalStateParserRuleCall_5_0_0; } + + //finalstates+=FinalState + public Assignment getFinalstatesAssignment_5_1() { return cFinalstatesAssignment_5_1; } + + //FinalState + public RuleCall getFinalstatesFinalStateParserRuleCall_5_1_0() { return cFinalstatesFinalStateParserRuleCall_5_1_0; } + + //transitions+=Transition + public Assignment getTransitionsAssignment_5_2() { return cTransitionsAssignment_5_2; } + + //Transition + public RuleCall getTransitionsTransitionParserRuleCall_5_2_0() { return cTransitionsTransitionParserRuleCall_5_2_0; } + + //'}' + public Keyword getRightCurlyBracketKeyword_6() { return cRightCurlyBracketKeyword_6; } + } + public class StateElements extends AbstractParserRuleElementFinder { + private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "swt.most.statemachine.xtext.Parser.State"); + private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1); + private final RuleCall cInitialStateParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0); + private final RuleCall cFinalStateParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1); + private final RuleCall cNormalStateParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2); + + //State returns State: + // InitialState | FinalState | NormalState; + @Override public ParserRule getRule() { return rule; } + + //InitialState | FinalState | NormalState + public Alternatives getAlternatives() { return cAlternatives; } + + //InitialState + public RuleCall getInitialStateParserRuleCall_0() { return cInitialStateParserRuleCall_0; } + + //FinalState + public RuleCall getFinalStateParserRuleCall_1() { return cFinalStateParserRuleCall_1; } + + //NormalState + public RuleCall getNormalStateParserRuleCall_2() { return cNormalStateParserRuleCall_2; } + } + public class NormalStateElements extends AbstractParserRuleElementFinder { + private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "swt.most.statemachine.xtext.Parser.NormalState"); + private final Group cGroup = (Group)rule.eContents().get(1); + private final Action cNormalStateAction_0 = (Action)cGroup.eContents().get(0); + private final Keyword cStateKeyword_1 = (Keyword)cGroup.eContents().get(1); + private final Assignment cNameAssignment_2 = (Assignment)cGroup.eContents().get(2); + private final RuleCall cNameEStringParserRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0); + private final Group cGroup_3 = (Group)cGroup.eContents().get(3); + private final Keyword cLeftCurlyBracketKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0); + private final Group cGroup_3_1 = (Group)cGroup_3.eContents().get(1); + private final Keyword cEntryKeyword_3_1_0 = (Keyword)cGroup_3_1.eContents().get(0); + private final Assignment cEntry_Assignment_3_1_1 = (Assignment)cGroup_3_1.eContents().get(1); + private final RuleCall cEntry_ActionParserRuleCall_3_1_1_0 = (RuleCall)cEntry_Assignment_3_1_1.eContents().get(0); + private final Group cGroup_3_2 = (Group)cGroup_3.eContents().get(2); + private final Keyword cDoKeyword_3_2_0 = (Keyword)cGroup_3_2.eContents().get(0); + private final Assignment cDo_Assignment_3_2_1 = (Assignment)cGroup_3_2.eContents().get(1); + private final RuleCall cDo_ActionParserRuleCall_3_2_1_0 = (RuleCall)cDo_Assignment_3_2_1.eContents().get(0); + private final Group cGroup_3_3 = (Group)cGroup_3.eContents().get(3); + private final Keyword cExitKeyword_3_3_0 = (Keyword)cGroup_3_3.eContents().get(0); + private final Assignment cExit_Assignment_3_3_1 = (Assignment)cGroup_3_3.eContents().get(1); + private final RuleCall cExit_ActionParserRuleCall_3_3_1_0 = (RuleCall)cExit_Assignment_3_3_1.eContents().get(0); + private final Keyword cRightCurlyBracketKeyword_3_4 = (Keyword)cGroup_3.eContents().get(4); + + //NormalState returns NormalState: + // {NormalState} + // 'state' name=EString ('{' + // ('entry:' entry_=Action)? + // ('do:' do_=Action)? + // ('exit:' exit_=Action)? + // '}')?; + @Override public ParserRule getRule() { return rule; } + + //{NormalState} + //'state' name=EString ('{' + // ('entry:' entry_=Action)? + // ('do:' do_=Action)? + // ('exit:' exit_=Action)? + //'}')? + public Group getGroup() { return cGroup; } + + //{NormalState} + public Action getNormalStateAction_0() { return cNormalStateAction_0; } + + //'state' + public Keyword getStateKeyword_1() { return cStateKeyword_1; } + + //name=EString + public Assignment getNameAssignment_2() { return cNameAssignment_2; } + + //EString + public RuleCall getNameEStringParserRuleCall_2_0() { return cNameEStringParserRuleCall_2_0; } + + //('{' + // ('entry:' entry_=Action)? + // ('do:' do_=Action)? + // ('exit:' exit_=Action)? + // '}')? + public Group getGroup_3() { return cGroup_3; } + + //'{' + public Keyword getLeftCurlyBracketKeyword_3_0() { return cLeftCurlyBracketKeyword_3_0; } + + //('entry:' entry_=Action)? + public Group getGroup_3_1() { return cGroup_3_1; } + + //'entry:' + public Keyword getEntryKeyword_3_1_0() { return cEntryKeyword_3_1_0; } + + //entry_=Action + public Assignment getEntry_Assignment_3_1_1() { return cEntry_Assignment_3_1_1; } + + //Action + public RuleCall getEntry_ActionParserRuleCall_3_1_1_0() { return cEntry_ActionParserRuleCall_3_1_1_0; } + + //('do:' do_=Action)? + public Group getGroup_3_2() { return cGroup_3_2; } + + //'do:' + public Keyword getDoKeyword_3_2_0() { return cDoKeyword_3_2_0; } + + //do_=Action + public Assignment getDo_Assignment_3_2_1() { return cDo_Assignment_3_2_1; } + + //Action + public RuleCall getDo_ActionParserRuleCall_3_2_1_0() { return cDo_ActionParserRuleCall_3_2_1_0; } + + //('exit:' exit_=Action)? + public Group getGroup_3_3() { return cGroup_3_3; } + + //'exit:' + public Keyword getExitKeyword_3_3_0() { return cExitKeyword_3_3_0; } + + //exit_=Action + public Assignment getExit_Assignment_3_3_1() { return cExit_Assignment_3_3_1; } + + //Action + public RuleCall getExit_ActionParserRuleCall_3_3_1_0() { return cExit_ActionParserRuleCall_3_3_1_0; } + + //'}' + public Keyword getRightCurlyBracketKeyword_3_4() { return cRightCurlyBracketKeyword_3_4; } + } + public class FinalStateElements extends AbstractParserRuleElementFinder { + private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "swt.most.statemachine.xtext.Parser.FinalState"); + private final Group cGroup = (Group)rule.eContents().get(1); + private final Action cFinalStateAction_0 = (Action)cGroup.eContents().get(0); + private final Keyword cEndKeyword_1 = (Keyword)cGroup.eContents().get(1); + private final Assignment cNameAssignment_2 = (Assignment)cGroup.eContents().get(2); + private final RuleCall cNameFINALSTATENAMETerminalRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0); + + //FinalState returns FinalState: + // {FinalState} + // 'end' name=FINALSTATENAME; + @Override public ParserRule getRule() { return rule; } + + //{FinalState} + //'end' name=FINALSTATENAME + public Group getGroup() { return cGroup; } + + //{FinalState} + public Action getFinalStateAction_0() { return cFinalStateAction_0; } + + //'end' + public Keyword getEndKeyword_1() { return cEndKeyword_1; } + + //name=FINALSTATENAME + public Assignment getNameAssignment_2() { return cNameAssignment_2; } + + //FINALSTATENAME + public RuleCall getNameFINALSTATENAMETerminalRuleCall_2_0() { return cNameFINALSTATENAMETerminalRuleCall_2_0; } + } + public class InitialStateElements extends AbstractParserRuleElementFinder { + private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "swt.most.statemachine.xtext.Parser.InitialState"); + private final Group cGroup = (Group)rule.eContents().get(1); + private final Action cInitialStateAction_0 = (Action)cGroup.eContents().get(0); + private final Keyword cStartKeyword_1 = (Keyword)cGroup.eContents().get(1); + private final Assignment cNameAssignment_2 = (Assignment)cGroup.eContents().get(2); + private final RuleCall cNameINITIALSTATENAMETerminalRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0); + + //InitialState returns InitialState: + // {InitialState} + // 'start' name=INITIALSTATENAME; + @Override public ParserRule getRule() { return rule; } + + //{InitialState} + //'start' name=INITIALSTATENAME + public Group getGroup() { return cGroup; } + + //{InitialState} + public Action getInitialStateAction_0() { return cInitialStateAction_0; } + + //'start' + public Keyword getStartKeyword_1() { return cStartKeyword_1; } + + //name=INITIALSTATENAME + public Assignment getNameAssignment_2() { return cNameAssignment_2; } + + //INITIALSTATENAME + public RuleCall getNameINITIALSTATENAMETerminalRuleCall_2_0() { return cNameINITIALSTATENAMETerminalRuleCall_2_0; } + } + public class TransitionElements extends AbstractParserRuleElementFinder { + private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "swt.most.statemachine.xtext.Parser.Transition"); + private final Group cGroup = (Group)rule.eContents().get(1); + private final Action cTransitionAction_0 = (Action)cGroup.eContents().get(0); + private final Assignment cFromAssignment_1 = (Assignment)cGroup.eContents().get(1); + private final CrossReference cFromStateCrossReference_1_0 = (CrossReference)cFromAssignment_1.eContents().get(0); + private final RuleCall cFromStateEStringParserRuleCall_1_0_1 = (RuleCall)cFromStateCrossReference_1_0.eContents().get(1); + private final Keyword cHyphenMinusKeyword_2 = (Keyword)cGroup.eContents().get(2); + private final Assignment cTriggerAssignment_3 = (Assignment)cGroup.eContents().get(3); + private final RuleCall cTriggerTriggerParserRuleCall_3_0 = (RuleCall)cTriggerAssignment_3.eContents().get(0); + private final Group cGroup_4 = (Group)cGroup.eContents().get(4); + private final Keyword cLeftSquareBracketKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0); + private final Assignment cGuardAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1); + private final RuleCall cGuardGuardParserRuleCall_4_1_0 = (RuleCall)cGuardAssignment_4_1.eContents().get(0); + private final Keyword cRightSquareBracketKeyword_4_2 = (Keyword)cGroup_4.eContents().get(2); + private final Group cGroup_5 = (Group)cGroup.eContents().get(5); + private final Keyword cSolidusKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0); + private final Assignment cActionAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1); + private final RuleCall cActionActionParserRuleCall_5_1_0 = (RuleCall)cActionAssignment_5_1.eContents().get(0); + private final Keyword cHyphenMinusGreaterThanSignKeyword_6 = (Keyword)cGroup.eContents().get(6); + private final Assignment cToAssignment_7 = (Assignment)cGroup.eContents().get(7); + private final CrossReference cToStateCrossReference_7_0 = (CrossReference)cToAssignment_7.eContents().get(0); + private final RuleCall cToStateEStringParserRuleCall_7_0_1 = (RuleCall)cToStateCrossReference_7_0.eContents().get(1); + + ///* + // * You can define further more detailed validations rules to check for the semantics of your language + // * in the '***Validator' class under 'src/***.validation'. + // * e.g. There must be no Transitions to the InitialState and no Transitions from a FinalState + //*/ + //Transition returns Transition: + // {Transition} + // from=[State|EString] '-'(trigger=Trigger)?('[' guard=Guard ']')? ('/' action=Action)? '->' to=[State|EString]; + @Override public ParserRule getRule() { return rule; } + + //{Transition} + //from=[State|EString] '-'(trigger=Trigger)?('[' guard=Guard ']')? ('/' action=Action)? '->' to=[State|EString] + public Group getGroup() { return cGroup; } + + //{Transition} + public Action getTransitionAction_0() { return cTransitionAction_0; } + + //from=[State|EString] + public Assignment getFromAssignment_1() { return cFromAssignment_1; } + + //[State|EString] + public CrossReference getFromStateCrossReference_1_0() { return cFromStateCrossReference_1_0; } + + //EString + public RuleCall getFromStateEStringParserRuleCall_1_0_1() { return cFromStateEStringParserRuleCall_1_0_1; } + + //'-' + public Keyword getHyphenMinusKeyword_2() { return cHyphenMinusKeyword_2; } + + //(trigger=Trigger)? + public Assignment getTriggerAssignment_3() { return cTriggerAssignment_3; } + + //Trigger + public RuleCall getTriggerTriggerParserRuleCall_3_0() { return cTriggerTriggerParserRuleCall_3_0; } + + //('[' guard=Guard ']')? + public Group getGroup_4() { return cGroup_4; } + + //'[' + public Keyword getLeftSquareBracketKeyword_4_0() { return cLeftSquareBracketKeyword_4_0; } + + //guard=Guard + public Assignment getGuardAssignment_4_1() { return cGuardAssignment_4_1; } + + //Guard + public RuleCall getGuardGuardParserRuleCall_4_1_0() { return cGuardGuardParserRuleCall_4_1_0; } + + //']' + public Keyword getRightSquareBracketKeyword_4_2() { return cRightSquareBracketKeyword_4_2; } + + //('/' action=Action)? + public Group getGroup_5() { return cGroup_5; } + + //'/' + public Keyword getSolidusKeyword_5_0() { return cSolidusKeyword_5_0; } + + //action=Action + public Assignment getActionAssignment_5_1() { return cActionAssignment_5_1; } + + //Action + public RuleCall getActionActionParserRuleCall_5_1_0() { return cActionActionParserRuleCall_5_1_0; } + + //'->' + public Keyword getHyphenMinusGreaterThanSignKeyword_6() { return cHyphenMinusGreaterThanSignKeyword_6; } + + //to=[State|EString] + public Assignment getToAssignment_7() { return cToAssignment_7; } + + //[State|EString] + public CrossReference getToStateCrossReference_7_0() { return cToStateCrossReference_7_0; } + + //EString + public RuleCall getToStateEStringParserRuleCall_7_0_1() { return cToStateEStringParserRuleCall_7_0_1; } + } + public class ActionElements extends AbstractParserRuleElementFinder { + private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "swt.most.statemachine.xtext.Parser.Action"); + private final Group cGroup = (Group)rule.eContents().get(1); + private final Action cActionAction_0 = (Action)cGroup.eContents().get(0); + private final Assignment cContentAssignment_1 = (Assignment)cGroup.eContents().get(1); + private final RuleCall cContentActivityContentParserRuleCall_1_0 = (RuleCall)cContentAssignment_1.eContents().get(0); + + //Action returns Action: + // {Action} + // content=ActivityContent; + @Override public ParserRule getRule() { return rule; } + + //{Action} + //content=ActivityContent + public Group getGroup() { return cGroup; } + + //{Action} + public Action getActionAction_0() { return cActionAction_0; } + + //content=ActivityContent + public Assignment getContentAssignment_1() { return cContentAssignment_1; } + + //ActivityContent + public RuleCall getContentActivityContentParserRuleCall_1_0() { return cContentActivityContentParserRuleCall_1_0; } + } + public class TriggerElements extends AbstractParserRuleElementFinder { + private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "swt.most.statemachine.xtext.Parser.Trigger"); + private final Group cGroup = (Group)rule.eContents().get(1); + private final Action cTriggerAction_0 = (Action)cGroup.eContents().get(0); + private final Assignment cContentAssignment_1 = (Assignment)cGroup.eContents().get(1); + private final RuleCall cContentActivityContentParserRuleCall_1_0 = (RuleCall)cContentAssignment_1.eContents().get(0); + + //Trigger returns Trigger: + // {Trigger} + // content=ActivityContent; + @Override public ParserRule getRule() { return rule; } + + //{Trigger} + //content=ActivityContent + public Group getGroup() { return cGroup; } + + //{Trigger} + public Action getTriggerAction_0() { return cTriggerAction_0; } + + //content=ActivityContent + public Assignment getContentAssignment_1() { return cContentAssignment_1; } + + //ActivityContent + public RuleCall getContentActivityContentParserRuleCall_1_0() { return cContentActivityContentParserRuleCall_1_0; } + } + public class GuardElements extends AbstractParserRuleElementFinder { + private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "swt.most.statemachine.xtext.Parser.Guard"); + private final Group cGroup = (Group)rule.eContents().get(1); + private final Action cGuardAction_0 = (Action)cGroup.eContents().get(0); + private final Assignment cContentAssignment_1 = (Assignment)cGroup.eContents().get(1); + private final RuleCall cContentEStringParserRuleCall_1_0 = (RuleCall)cContentAssignment_1.eContents().get(0); + + //Guard returns Guard: + // {Guard} + // content=EString; + @Override public ParserRule getRule() { return rule; } + + //{Guard} + //content=EString + public Group getGroup() { return cGroup; } + + //{Guard} + public Action getGuardAction_0() { return cGuardAction_0; } + + //content=EString + public Assignment getContentAssignment_1() { return cContentAssignment_1; } + + //EString + public RuleCall getContentEStringParserRuleCall_1_0() { return cContentEStringParserRuleCall_1_0; } + } + public class ActivityContentElements extends AbstractParserRuleElementFinder { + private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "swt.most.statemachine.xtext.Parser.ActivityContent"); + private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1); + private final RuleCall cSTRINGTerminalRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0); + private final RuleCall cIDTerminalRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1); + private final RuleCall cCALLTerminalRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2); + + ///* + // * You can use Strings syntax ('...') for unclear/abstract parts of your text syntax. + // * If your domain is defined enough you can create rules and terminal rules for these parts,too. + //*/ + //ActivityContent returns ecore::EString: + // STRING | ID | CALL; + @Override public ParserRule getRule() { return rule; } + + //STRING | ID | CALL + public Alternatives getAlternatives() { return cAlternatives; } + + //STRING + public RuleCall getSTRINGTerminalRuleCall_0() { return cSTRINGTerminalRuleCall_0; } + + //ID + public RuleCall getIDTerminalRuleCall_1() { return cIDTerminalRuleCall_1; } + + //CALL + public RuleCall getCALLTerminalRuleCall_2() { return cCALLTerminalRuleCall_2; } + } + public class EStringElements extends AbstractParserRuleElementFinder { + private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "swt.most.statemachine.xtext.Parser.EString"); + private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1); + private final RuleCall cSTRINGTerminalRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0); + private final RuleCall cIDTerminalRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1); + private final RuleCall cINITIALSTATENAMETerminalRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2); + private final RuleCall cFINALSTATENAMETerminalRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3); + + //EString returns ecore::EString: + // STRING | ID | INITIALSTATENAME | FINALSTATENAME; + @Override public ParserRule getRule() { return rule; } + + //STRING | ID | INITIALSTATENAME | FINALSTATENAME + public Alternatives getAlternatives() { return cAlternatives; } + + //STRING + public RuleCall getSTRINGTerminalRuleCall_0() { return cSTRINGTerminalRuleCall_0; } + + //ID + public RuleCall getIDTerminalRuleCall_1() { return cIDTerminalRuleCall_1; } + + //INITIALSTATENAME + public RuleCall getINITIALSTATENAMETerminalRuleCall_2() { return cINITIALSTATENAMETerminalRuleCall_2; } + + //FINALSTATENAME + public RuleCall getFINALSTATENAMETerminalRuleCall_3() { return cFINALSTATENAMETerminalRuleCall_3; } + } + + + private final StateMachineElements pStateMachine; + private final StateElements pState; + private final NormalStateElements pNormalState; + private final FinalStateElements pFinalState; + private final InitialStateElements pInitialState; + private final TransitionElements pTransition; + private final ActionElements pAction; + private final TriggerElements pTrigger; + private final GuardElements pGuard; + private final TerminalRule tINITIALSTATENAME; + private final TerminalRule tFINALSTATENAME; + private final ActivityContentElements pActivityContent; + private final TerminalRule tCALL; + private final EStringElements pEString; + + private final Grammar grammar; + + private final TerminalsGrammarAccess gaTerminals; + + @Inject + public ParserGrammarAccess(GrammarProvider grammarProvider, + TerminalsGrammarAccess gaTerminals) { + this.grammar = internalFindGrammar(grammarProvider); + this.gaTerminals = gaTerminals; + this.pStateMachine = new StateMachineElements(); + this.pState = new StateElements(); + this.pNormalState = new NormalStateElements(); + this.pFinalState = new FinalStateElements(); + this.pInitialState = new InitialStateElements(); + this.pTransition = new TransitionElements(); + this.pAction = new ActionElements(); + this.pTrigger = new TriggerElements(); + this.pGuard = new GuardElements(); + this.tINITIALSTATENAME = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "swt.most.statemachine.xtext.Parser.INITIALSTATENAME"); + this.tFINALSTATENAME = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "swt.most.statemachine.xtext.Parser.FINALSTATENAME"); + this.pActivityContent = new ActivityContentElements(); + this.tCALL = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "swt.most.statemachine.xtext.Parser.CALL"); + this.pEString = new EStringElements(); + } + + protected Grammar internalFindGrammar(GrammarProvider grammarProvider) { + Grammar grammar = grammarProvider.getGrammar(this); + while (grammar != null) { + if ("swt.most.statemachine.xtext.Parser".equals(grammar.getName())) { + return grammar; + } + List<Grammar> grammars = grammar.getUsedGrammars(); + if (!grammars.isEmpty()) { + grammar = grammars.iterator().next(); + } else { + return null; + } + } + return grammar; + } + + @Override + public Grammar getGrammar() { + return grammar; + } + + + public TerminalsGrammarAccess getTerminalsGrammarAccess() { + return gaTerminals; + } + + + //StateMachine returns StateMachine: + // {StateMachine} + // 'StateMachine' name=EString + // '{' + // initialstate=InitialState + // ( states+=NormalState | finalstates+=FinalState | transitions+=Transition)* + // '}'; + public StateMachineElements getStateMachineAccess() { + return pStateMachine; + } + + public ParserRule getStateMachineRule() { + return getStateMachineAccess().getRule(); + } + + //State returns State: + // InitialState | FinalState | NormalState; + public StateElements getStateAccess() { + return pState; + } + + public ParserRule getStateRule() { + return getStateAccess().getRule(); + } + + //NormalState returns NormalState: + // {NormalState} + // 'state' name=EString ('{' + // ('entry:' entry_=Action)? + // ('do:' do_=Action)? + // ('exit:' exit_=Action)? + // '}')?; + public NormalStateElements getNormalStateAccess() { + return pNormalState; + } + + public ParserRule getNormalStateRule() { + return getNormalStateAccess().getRule(); + } + + //FinalState returns FinalState: + // {FinalState} + // 'end' name=FINALSTATENAME; + public FinalStateElements getFinalStateAccess() { + return pFinalState; + } + + public ParserRule getFinalStateRule() { + return getFinalStateAccess().getRule(); + } + + //InitialState returns InitialState: + // {InitialState} + // 'start' name=INITIALSTATENAME; + public InitialStateElements getInitialStateAccess() { + return pInitialState; + } + + public ParserRule getInitialStateRule() { + return getInitialStateAccess().getRule(); + } + + ///* + // * You can define further more detailed validations rules to check for the semantics of your language + // * in the '***Validator' class under 'src/***.validation'. + // * e.g. There must be no Transitions to the InitialState and no Transitions from a FinalState + //*/ + //Transition returns Transition: + // {Transition} + // from=[State|EString] '-'(trigger=Trigger)?('[' guard=Guard ']')? ('/' action=Action)? '->' to=[State|EString]; + public TransitionElements getTransitionAccess() { + return pTransition; + } + + public ParserRule getTransitionRule() { + return getTransitionAccess().getRule(); + } + + //Action returns Action: + // {Action} + // content=ActivityContent; + public ActionElements getActionAccess() { + return pAction; + } + + public ParserRule getActionRule() { + return getActionAccess().getRule(); + } + + //Trigger returns Trigger: + // {Trigger} + // content=ActivityContent; + public TriggerElements getTriggerAccess() { + return pTrigger; + } + + public ParserRule getTriggerRule() { + return getTriggerAccess().getRule(); + } + + //Guard returns Guard: + // {Guard} + // content=EString; + public GuardElements getGuardAccess() { + return pGuard; + } + + public ParserRule getGuardRule() { + return getGuardAccess().getRule(); + } + + ///* + // * Special naming conventions + // * Also possible via validator rules + //*/ + //terminal INITIALSTATENAME returns ecore::EString: + // ('I_')(INT|STRING|ID)+; + public TerminalRule getINITIALSTATENAMERule() { + return tINITIALSTATENAME; + } + + //terminal FINALSTATENAME returns ecore::EString: + // ('F_')(INT|STRING|ID)+ ; + public TerminalRule getFINALSTATENAMERule() { + return tFINALSTATENAME; + } + + ///* + // * You can use Strings syntax ('...') for unclear/abstract parts of your text syntax. + // * If your domain is defined enough you can create rules and terminal rules for these parts,too. + //*/ + //ActivityContent returns ecore::EString: + // STRING | ID | CALL; + public ActivityContentElements getActivityContentAccess() { + return pActivityContent; + } + + public ParserRule getActivityContentRule() { + return getActivityContentAccess().getRule(); + } + + //terminal CALL returns ecore::EString: + // (ID)('.'(ID))+; + public TerminalRule getCALLRule() { + return tCALL; + } + + //EString returns ecore::EString: + // STRING | ID | INITIALSTATENAME | FINALSTATENAME; + public EStringElements getEStringAccess() { + return pEString; + } + + public ParserRule getEStringRule() { + return getEStringAccess().getRule(); + } + + //terminal ID: '^'?('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*; + public TerminalRule getIDRule() { + return gaTerminals.getIDRule(); + } + + //terminal INT returns ecore::EInt: ('0'..'9')+; + public TerminalRule getINTRule() { + return gaTerminals.getINTRule(); + } + + //terminal STRING: + // '"' ( '\\' . /* 'b'|'t'|'n'|'f'|'r'|'u'|'"'|"'"|'\\' */ | !('\\'|'"') )* '"' | + // "'" ( '\\' . /* 'b'|'t'|'n'|'f'|'r'|'u'|'"'|"'"|'\\' */ | !('\\'|"'") )* "'" + // ; + public TerminalRule getSTRINGRule() { + return gaTerminals.getSTRINGRule(); + } + + //terminal ML_COMMENT : '/*' -> '*/'; + public TerminalRule getML_COMMENTRule() { + return gaTerminals.getML_COMMENTRule(); + } + + //terminal SL_COMMENT : '//' !('\n'|'\r')* ('\r'? '\n')?; + public TerminalRule getSL_COMMENTRule() { + return gaTerminals.getSL_COMMENTRule(); + } + + //terminal WS : (' '|'\t'|'\r'|'\n')+; + public TerminalRule getWSRule() { + return gaTerminals.getWSRule(); + } + + //terminal ANY_OTHER: .; + public TerminalRule getANY_OTHERRule() { + return gaTerminals.getANY_OTHERRule(); + } +} diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src-gen/swt/most/statemachine/xtext/validation/AbstractParserValidator.java b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src-gen/swt/most/statemachine/xtext/validation/AbstractParserValidator.java new file mode 100644 index 0000000000000000000000000000000000000000..52477cb14ab030a1e3d005d2eea9ca575dcae7c0 --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src-gen/swt/most/statemachine/xtext/validation/AbstractParserValidator.java @@ -0,0 +1,19 @@ +/* + * generated by Xtext 2.35.0 + */ +package swt.most.statemachine.xtext.validation; + +import java.util.ArrayList; +import java.util.List; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.xtext.validation.AbstractDeclarativeValidator; + +public abstract class AbstractParserValidator extends AbstractDeclarativeValidator { + + @Override + protected List<EPackage> getEPackages() { + List<EPackage> result = new ArrayList<EPackage>(); + result.add(EPackage.Registry.INSTANCE.getEPackage("http://www.swt.org/most/statemachine")); + return result; + } +} diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src-gen/swt/most/statemachine/xtext/validation/ParserConfigurableIssueCodesProvider.java b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src-gen/swt/most/statemachine/xtext/validation/ParserConfigurableIssueCodesProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..46034b96eb73c70100aada3d608d0da3b5b5528c --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src-gen/swt/most/statemachine/xtext/validation/ParserConfigurableIssueCodesProvider.java @@ -0,0 +1,21 @@ +/* + * generated by Xtext 2.35.0 + */ +package swt.most.statemachine.xtext.validation; + +import org.eclipse.xtext.preferences.PreferenceKey; +import org.eclipse.xtext.util.IAcceptor; +import org.eclipse.xtext.validation.ConfigurableIssueCodesProvider; +import org.eclipse.xtext.validation.SeverityConverter; + +public class ParserConfigurableIssueCodesProvider extends ConfigurableIssueCodesProvider { + protected static final String ISSUE_CODE_PREFIX = "swt.most.statemachine.xtext."; + + public static final String DEPRECATED_MODEL_PART = ISSUE_CODE_PREFIX + "deprecatedModelPart"; + + @Override + protected void initialize(IAcceptor<PreferenceKey> acceptor) { + super.initialize(acceptor); + acceptor.accept(create(DEPRECATED_MODEL_PART, SeverityConverter.SEVERITY_WARNING)); + } +} diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src/swt/most/statemachine/xtext/GenerateParser.mwe2 b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src/swt/most/statemachine/xtext/GenerateParser.mwe2 new file mode 100644 index 0000000000000000000000000000000000000000..df9ec2cb34402510bb10782fd86ed8d96932aeff --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src/swt/most/statemachine/xtext/GenerateParser.mwe2 @@ -0,0 +1,59 @@ +module swt.most.statemachine.xtext.GenerateParser + +import org.eclipse.xtext.xtext.generator.* +import org.eclipse.xtext.xtext.generator.model.project.* + +var rootPath = ".." + +Workflow { + + component = XtextGenerator { + configuration = { + project = StandardProjectConfig { + baseName = "swt.most.statemachine.xtext" + rootPath = rootPath + eclipsePlugin = { + enabled = true + } + createEclipseMetaData = true + } + code = { + encoding = "UTF-8" + lineDelimiter = "\r\n" + fileHeader = "/*\n * generated by Xtext \${version}\n */" + preferXtendStubs = false + } + } + language = StandardLanguage { + name = "swt.most.statemachine.xtext.Parser" + fileExtensions = "statemachine" + referencedResource = "platform:/resource/swt.most.statemachine/model/statemachine.genmodel" + + fragment = ecore2xtext.Ecore2XtextValueConverterServiceFragment2 auto-inject {} + + formatter = { + generateStub = true + generateXtendStub = true + } + + serializer = { + generateStub = false + } + validator = { + // composedCheck = "org.eclipse.xtext.validation.NamesAreUniqueValidator" + + // Enables several checks on the inferred Jvm model for Xbase languages concerning Java inheritance relations + // composedCheck = "org.eclipse.xtext.xbase.validation.JvmGenericTypeValidator" + + // Generates checks for @Deprecated grammar annotations, an IssueProvider and a corresponding PropertyPage + generateDeprecationValidation = true + } + generator = { + generateXtendStub = true + } + junitSupport = { + junitVersion = "5" + } + } + } +} diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src/swt/most/statemachine/xtext/Parser.xtext b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src/swt/most/statemachine/xtext/Parser.xtext new file mode 100644 index 0000000000000000000000000000000000000000..29f5fde830a354ea646c41a50360b33056fa986d --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src/swt/most/statemachine/xtext/Parser.xtext @@ -0,0 +1,76 @@ +// automatically generated by Xtext +grammar swt.most.statemachine.xtext.Parser with org.eclipse.xtext.common.Terminals + +import "http://www.swt.org/most/statemachine" +import "http://www.eclipse.org/emf/2002/Ecore" as ecore + +StateMachine returns StateMachine: + {StateMachine} + 'StateMachine' name=EString + '{' + initialstate=InitialState + ( states+=NormalState | finalstates+=FinalState | transitions+=Transition)* + '}'; + +State returns State: + InitialState | FinalState | NormalState; + +NormalState returns NormalState: + {NormalState} + 'state' name=EString ('{' + ('entry:' entry_=Action)? + ('do:' do_=Action)? + ('exit:' exit_=Action)? + '}')?; + +FinalState returns FinalState: + {FinalState} + 'end' name=FINALSTATENAME; + +InitialState returns InitialState: + {InitialState} + 'start' name=INITIALSTATENAME; + +/* + * You can define further more detailed validations rules to check for the semantics of your language + * in the '***Validator' class under 'src/***.validation'. + * e.g. There must be no Transitions to the InitialState and no Transitions from a FinalState +*/ +Transition returns Transition: + {Transition} + from=[State|EString] '-'(trigger=Trigger)?('[' guard=Guard ']')? ('/' action=Action)? '->' to=[State|EString]; + +Action returns Action: + {Action} + content=ActivityContent; + +Trigger returns Trigger: + {Trigger} + content=ActivityContent; + +Guard returns Guard: + {Guard} + content=EString; + +/* + * Special naming conventions + * Also possible via validator rules +*/ +terminal INITIALSTATENAME returns ecore::EString: + ('I_')(INT|STRING|ID)+; + +terminal FINALSTATENAME returns ecore::EString: + ('F_')(INT|STRING|ID)+ ; + +/* + * You can use Strings syntax ('...') for unclear/abstract parts of your text syntax. + * If your domain is defined enough you can create rules and terminal rules for these parts,too. +*/ +ActivityContent returns ecore::EString: + STRING | ID | CALL; + +terminal CALL returns ecore::EString: + (ID)('.'(ID))+; + +EString returns ecore::EString: + STRING | ID | INITIALSTATENAME | FINALSTATENAME; \ No newline at end of file diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src/swt/most/statemachine/xtext/ParserRuntimeModule.java b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src/swt/most/statemachine/xtext/ParserRuntimeModule.java new file mode 100644 index 0000000000000000000000000000000000000000..698e811914fdecda25ea8d756e9caff7bea22ffb --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src/swt/most/statemachine/xtext/ParserRuntimeModule.java @@ -0,0 +1,11 @@ +/* + * generated by Xtext 2.35.0 + */ +package swt.most.statemachine.xtext; + + +/** + * Use this class to register components to be used at runtime / without the Equinox extension registry. + */ +public class ParserRuntimeModule extends AbstractParserRuntimeModule { +} diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src/swt/most/statemachine/xtext/ParserStandaloneSetup.java b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src/swt/most/statemachine/xtext/ParserStandaloneSetup.java new file mode 100644 index 0000000000000000000000000000000000000000..ab7f0ed02355a63cf75fdf8296ea6b0b6534d2b0 --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src/swt/most/statemachine/xtext/ParserStandaloneSetup.java @@ -0,0 +1,15 @@ +/* + * generated by Xtext 2.35.0 + */ +package swt.most.statemachine.xtext; + + +/** + * Initialization support for running Xtext languages without Equinox extension registry. + */ +public class ParserStandaloneSetup extends ParserStandaloneSetupGenerated { + + public static void doSetup() { + new ParserStandaloneSetup().createInjectorAndDoEMFRegistration(); + } +} diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src/swt/most/statemachine/xtext/formatting2/ParserFormatter.xtend b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src/swt/most/statemachine/xtext/formatting2/ParserFormatter.xtend new file mode 100644 index 0000000000000000000000000000000000000000..ce7545509cd4e9c7c5e345f44cf90cd0df9dc599 --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src/swt/most/statemachine/xtext/formatting2/ParserFormatter.xtend @@ -0,0 +1,39 @@ +/* + * generated by Xtext 2.35.0 + */ +package swt.most.statemachine.xtext.formatting2 + +import com.google.inject.Inject +import org.eclipse.xtext.formatting2.AbstractFormatter2 +import org.eclipse.xtext.formatting2.IFormattableDocument +import swt.most.statemachine.NormalState +import swt.most.statemachine.StateMachine +import swt.most.statemachine.xtext.services.ParserGrammarAccess + +class ParserFormatter extends AbstractFormatter2 { + + @Inject extension ParserGrammarAccess + + def dispatch void format(StateMachine stateMachine, extension IFormattableDocument document) { + // TODO: format HiddenRegions around keywords, attributes, cross references, etc. + stateMachine.initialstate.format + for (normalState : stateMachine.states) { + normalState.format + } + for (finalState : stateMachine.finalstates) { + finalState.format + } + for (transition : stateMachine.transitions) { + transition.format + } + } + + def dispatch void format(NormalState normalState, extension IFormattableDocument document) { + // TODO: format HiddenRegions around keywords, attributes, cross references, etc. + normalState.entry_.format + normalState.do_.format + normalState.exit_.format + } + + // TODO: implement for Transition +} diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src/swt/most/statemachine/xtext/generator/ParserGenerator.xtend b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src/swt/most/statemachine/xtext/generator/ParserGenerator.xtend new file mode 100644 index 0000000000000000000000000000000000000000..a953dd53f2dd7b153d95084bca9d6964aef96900 --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src/swt/most/statemachine/xtext/generator/ParserGenerator.xtend @@ -0,0 +1,25 @@ +/* + * generated by Xtext 2.35.0 + */ +package swt.most.statemachine.xtext.generator + +import org.eclipse.emf.ecore.resource.Resource +import org.eclipse.xtext.generator.AbstractGenerator +import org.eclipse.xtext.generator.IFileSystemAccess2 +import org.eclipse.xtext.generator.IGeneratorContext + +/** + * Generates code from your model files on save. + * + * See https://www.eclipse.org/Xtext/documentation/303_runtime_concepts.html#code-generation + */ +class ParserGenerator extends AbstractGenerator { + + override void doGenerate(Resource resource, IFileSystemAccess2 fsa, IGeneratorContext context) { +// fsa.generateFile('greetings.txt', 'People to greet: ' + +// resource.allContents +// .filter(Greeting) +// .map[name] +// .join(', ')) + } +} diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src/swt/most/statemachine/xtext/scoping/ParserScopeProvider.java b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src/swt/most/statemachine/xtext/scoping/ParserScopeProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..c3d98249bf61e26f3f935f36008d6218cc79c7c2 --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src/swt/most/statemachine/xtext/scoping/ParserScopeProvider.java @@ -0,0 +1,15 @@ +/* + * generated by Xtext 2.35.0 + */ +package swt.most.statemachine.xtext.scoping; + + +/** + * This class contains custom scoping description. + * + * See https://www.eclipse.org/Xtext/documentation/303_runtime_concepts.html#scoping + * on how and when to use it. + */ +public class ParserScopeProvider extends AbstractParserScopeProvider { + +} diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src/swt/most/statemachine/xtext/validation/ParserValidator.java b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src/swt/most/statemachine/xtext/validation/ParserValidator.java new file mode 100644 index 0000000000000000000000000000000000000000..e83cd6ba94154495c294fb5866eca6251ab1e78b --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/src/swt/most/statemachine/xtext/validation/ParserValidator.java @@ -0,0 +1,35 @@ +/* + * generated by Xtext 2.35.0 + */ +package swt.most.statemachine.xtext.validation; + +import org.eclipse.xtext.validation.Check; +import org.eclipse.xtext.validation.CheckType; + +import swt.most.statemachine.FinalState; +import swt.most.statemachine.InitialState; +import swt.most.statemachine.StatemachinePackage; +import swt.most.statemachine.Transition; + +/** + * This class contains custom validation rules. + * + * See https://www.eclipse.org/Xtext/documentation/303_runtime_concepts.html#validation + */ +public class ParserValidator extends AbstractParserValidator { + + /* + * Small example of the validations of other non structural semantics. + * It checks if the Transition to or from special states are correct, since these are not limited by the syntax (meta model). + */ + @Check(CheckType.FAST) + public void checkTransitionWithInvolvedSpecialStates( Transition transition ) { + if ( transition.getFrom() instanceof FinalState ) { + error("A transition can not start from a final state", StatemachinePackage.Literals.TRANSITION__FROM); + } + if ( transition.getTo() instanceof InitialState ) { + error("A transition can not end in an initial state", StatemachinePackage.Literals.TRANSITION__TO); + } + } + +} diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/xtend-gen/swt/most/statemachine/xtext/formatting2/.ParserFormatter.java._trace b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/xtend-gen/swt/most/statemachine/xtext/formatting2/.ParserFormatter.java._trace new file mode 100644 index 0000000000000000000000000000000000000000..f1466224b5c01e0c42a9cd6d19bfbca5fd09d67a Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/xtend-gen/swt/most/statemachine/xtext/formatting2/.ParserFormatter.java._trace differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/xtend-gen/swt/most/statemachine/xtext/formatting2/.ParserFormatter.xtendbin b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/xtend-gen/swt/most/statemachine/xtext/formatting2/.ParserFormatter.xtendbin new file mode 100644 index 0000000000000000000000000000000000000000..d22c654acf07c193c8f99f8efc6cc1b81f948a9f Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/xtend-gen/swt/most/statemachine/xtext/formatting2/.ParserFormatter.xtendbin differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/xtend-gen/swt/most/statemachine/xtext/formatting2/ParserFormatter.java b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/xtend-gen/swt/most/statemachine/xtext/formatting2/ParserFormatter.java new file mode 100644 index 0000000000000000000000000000000000000000..39ffa7de33832634b424467e996aee4f6a043827 --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/xtend-gen/swt/most/statemachine/xtext/formatting2/ParserFormatter.java @@ -0,0 +1,74 @@ +/** + * generated by Xtext 2.35.0 + */ +package swt.most.statemachine.xtext.formatting2; + +import com.google.inject.Inject; +import java.util.Arrays; +import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.xtext.formatting2.AbstractFormatter2; +import org.eclipse.xtext.formatting2.IFormattableDocument; +import org.eclipse.xtext.resource.XtextResource; +import org.eclipse.xtext.xbase.lib.Extension; +import swt.most.statemachine.Action; +import swt.most.statemachine.FinalState; +import swt.most.statemachine.InitialState; +import swt.most.statemachine.NormalState; +import swt.most.statemachine.StateMachine; +import swt.most.statemachine.Transition; +import swt.most.statemachine.xtext.services.ParserGrammarAccess; + +@SuppressWarnings("all") +public class ParserFormatter extends AbstractFormatter2 { + @Inject + @Extension + private ParserGrammarAccess _parserGrammarAccess; + + protected void _format(final StateMachine stateMachine, @Extension final IFormattableDocument document) { + document.<InitialState>format(stateMachine.getInitialstate()); + EList<NormalState> _states = stateMachine.getStates(); + for (final NormalState normalState : _states) { + document.<NormalState>format(normalState); + } + EList<FinalState> _finalstates = stateMachine.getFinalstates(); + for (final FinalState finalState : _finalstates) { + document.<FinalState>format(finalState); + } + EList<Transition> _transitions = stateMachine.getTransitions(); + for (final Transition transition : _transitions) { + document.<Transition>format(transition); + } + } + + protected void _format(final NormalState normalState, @Extension final IFormattableDocument document) { + document.<Action>format(normalState.getEntry_()); + document.<Action>format(normalState.getDo_()); + document.<Action>format(normalState.getExit_()); + } + + public void format(final Object normalState, final IFormattableDocument document) { + if (normalState instanceof XtextResource) { + _format((XtextResource)normalState, document); + return; + } else if (normalState instanceof NormalState) { + _format((NormalState)normalState, document); + return; + } else if (normalState instanceof StateMachine) { + _format((StateMachine)normalState, document); + return; + } else if (normalState instanceof EObject) { + _format((EObject)normalState, document); + return; + } else if (normalState == null) { + _format((Void)null, document); + return; + } else if (normalState != null) { + _format(normalState, document); + return; + } else { + throw new IllegalArgumentException("Unhandled parameter types: " + + Arrays.<Object>asList(normalState, document).toString()); + } + } +} diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/xtend-gen/swt/most/statemachine/xtext/generator/.ParserGenerator.java._trace b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/xtend-gen/swt/most/statemachine/xtext/generator/.ParserGenerator.java._trace new file mode 100644 index 0000000000000000000000000000000000000000..a5a7d58233f7bed7e2211dc84c2d0c728889ce2b Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/xtend-gen/swt/most/statemachine/xtext/generator/.ParserGenerator.java._trace differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/xtend-gen/swt/most/statemachine/xtext/generator/.ParserGenerator.xtendbin b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/xtend-gen/swt/most/statemachine/xtext/generator/.ParserGenerator.xtendbin new file mode 100644 index 0000000000000000000000000000000000000000..ef57e98ebab7924ec8ceadd5562b2fe83894012d Binary files /dev/null and b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/xtend-gen/swt/most/statemachine/xtext/generator/.ParserGenerator.xtendbin differ diff --git a/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/xtend-gen/swt/most/statemachine/xtext/generator/ParserGenerator.java b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/xtend-gen/swt/most/statemachine/xtext/generator/ParserGenerator.java new file mode 100644 index 0000000000000000000000000000000000000000..1d47795dc7d374bbbc5f0603630dbf1571986128 --- /dev/null +++ b/domain_specific_language/textual/swt.most.statemachine.xtext/swt.most.statemachine.xtext/xtend-gen/swt/most/statemachine/xtext/generator/ParserGenerator.java @@ -0,0 +1,21 @@ +/** + * generated by Xtext 2.35.0 + */ +package swt.most.statemachine.xtext.generator; + +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.xtext.generator.AbstractGenerator; +import org.eclipse.xtext.generator.IFileSystemAccess2; +import org.eclipse.xtext.generator.IGeneratorContext; + +/** + * Generates code from your model files on save. + * + * See https://www.eclipse.org/Xtext/documentation/303_runtime_concepts.html#code-generation + */ +@SuppressWarnings("all") +public class ParserGenerator extends AbstractGenerator { + @Override + public void doGenerate(final Resource resource, final IFileSystemAccess2 fsa, final IGeneratorContext context) { + } +} diff --git a/metamodel/runtime/examples/.project b/metamodel/runtime/examples/.project new file mode 100644 index 0000000000000000000000000000000000000000..0abae369dab5a23666bafac7c5f1207318ef4ab5 --- /dev/null +++ b/metamodel/runtime/examples/.project @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>examples</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + </buildSpec> + <natures> + </natures> +</projectDescription> diff --git a/metamodel/runtime/examples/example.petrinet b/metamodel/runtime/examples/example.petrinet new file mode 100644 index 0000000000000000000000000000000000000000..f42b0f5ce267f349924c4cd58ec3f65477ee7d2c --- /dev/null +++ b/metamodel/runtime/examples/example.petrinet @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<petrinet:PetriNet xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:petrinet="http://www.example.org/petrinet" name="Example"> + <arcs xsi:type="petrinet:IncomingArc" target="//@elements.3" source="//@elements.0"/> + <arcs xsi:type="petrinet:IncomingArc" target="//@elements.3" source="//@elements.2"/> + <arcs xsi:type="petrinet:OutgoingArc" source="//@elements.3" target="//@elements.1"/> + <elements xsi:type="petrinet:Place" identifier="start"> + <token/> + </elements> + <elements xsi:type="petrinet:Place" identifier="end"/> + <elements xsi:type="petrinet:Place" identifier="guard"/> + <elements xsi:type="petrinet:Transition" identifier="do something"/> +</petrinet:PetriNet> diff --git a/metamodel/runtime/examples/garagedoor.statemachine b/metamodel/runtime/examples/garagedoor.statemachine new file mode 100644 index 0000000000000000000000000000000000000000..7e44c6fd1941ac4b5bb590516b2ae01299c04221 --- /dev/null +++ b/metamodel/runtime/examples/garagedoor.statemachine @@ -0,0 +1,49 @@ +<?xml version="1.0" encoding="UTF-8"?> +<statemachine:StateMachine xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:statemachine="http://www.swt.org/most/statemachine" name="Garage Door"> + <states name="Closed"/> + <states name="Open"/> + <states name="Opening"/> + <states name="Closing"/> + <finalstates name="final"/> + <initialstate name="initial"/> + <transitions from="//@initialstate" to="//@states.0"/> + <transitions from="//@states.0" to="//@states.2"> + <trigger content="openDoor"/> + <action content="motor.upwards"/> + </transitions> + <transitions from="//@states.2" to="//@states.1"> + <guard content="stopper"/> + <action content="motor.stop"/> + </transitions> + <transitions from="//@states.1" to="//@states.3"> + <trigger content="closeDoor"/> + <action content="motor.downwards"/> + </transitions> + <transitions from="//@states.3" to="//@states.0"> + <guard content="stopper"/> + <action content="motor.stop"/> + </transitions> + <transitions from="//@states.3" to="//@states.2"> + <trigger content="openDoor"/> + <action content="motor.upwards"/> + </transitions> + <transitions from="//@states.2" to="//@states.3"> + <trigger content="closeDoor"/> + <action content="motor.downwards"/> + </transitions> + <transitions from="//@states.0" to="//@finalstates.0"> + <guard content="shutdown"/> + </transitions> + <transitions from="//@states.0" to="//@states.0"> + <trigger content="closeDoor"/> + </transitions> + <transitions from="//@states.3" to="//@states.3"> + <trigger content="closeDoor"/> + </transitions> + <transitions from="//@states.1" to="//@states.1"> + <trigger content="openDoor"/> + </transitions> + <transitions from="//@states.2" to="//@states.2"> + <trigger content="openDoor"/> + </transitions> +</statemachine:StateMachine> diff --git a/metamodel/runtime/examples/switch.statemachine b/metamodel/runtime/examples/switch.statemachine new file mode 100644 index 0000000000000000000000000000000000000000..adbc574168f4eaff22326088d182925254a1c84e --- /dev/null +++ b/metamodel/runtime/examples/switch.statemachine @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<statemachine:StateMachine xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:statemachine="http://www.swt.org/most/statemachine" name="Switch"> + <states name="on"> + <do_ content="do_something"/> + </states> + <states name="off"> + <do_ content="do_nothing"/> + </states> + <initialstate name="initial"/> + <transitions from="initial" to="off"/> + <transitions from="off" to="on"> + <trigger content="flip"/> + </transitions> + <transitions from="on" to="off"> + <trigger content="flip"/> + </transitions> +</statemachine:StateMachine> diff --git a/metamodel/swt.most.petrinet.edit/.classpath b/metamodel/swt.most.petrinet.edit/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..2377d859931ab6ce1560ef53742afa6e8f1cdefd --- /dev/null +++ b/metamodel/swt.most.petrinet.edit/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src-gen"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/metamodel/swt.most.petrinet.edit/.gitignore b/metamodel/swt.most.petrinet.edit/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..ae3c1726048cd06b9a143e0376ed46dd9b9a8d53 --- /dev/null +++ b/metamodel/swt.most.petrinet.edit/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/metamodel/swt.most.petrinet.edit/.project b/metamodel/swt.most.petrinet.edit/.project new file mode 100644 index 0000000000000000000000000000000000000000..c02cb91c7a108316b2e2265d92753230b267234f --- /dev/null +++ b/metamodel/swt.most.petrinet.edit/.project @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>swt.most.petrinet.edit</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.SchemaBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + <nature>org.eclipse.pde.PluginNature</nature> + </natures> +</projectDescription> diff --git a/metamodel/swt.most.petrinet.edit/.settings/org.eclipse.core.resources.prefs b/metamodel/swt.most.petrinet.edit/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000000000000000000000000000000000000..99f26c0203a7844de00dbfc56e6a35d8ed3c022c --- /dev/null +++ b/metamodel/swt.most.petrinet.edit/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/<project>=UTF-8 diff --git a/metamodel/swt.most.petrinet.edit/META-INF/MANIFEST.MF b/metamodel/swt.most.petrinet.edit/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..83a473245304ca7938e1a61f715555f23a184bc5 --- /dev/null +++ b/metamodel/swt.most.petrinet.edit/META-INF/MANIFEST.MF @@ -0,0 +1,16 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %pluginName +Bundle-SymbolicName: swt.most.petrinet.edit;singleton:=true +Automatic-Module-Name: swt.most.petrinet.edit +Bundle-Version: 1.0.0.qualifier +Bundle-ClassPath: . +Bundle-Activator: swt.most.petrinet.provider.PetrinetEditPlugin$Implementation +Bundle-Vendor: %providerName +Bundle-Localization: plugin +Bundle-RequiredExecutionEnvironment: J2SE-1.5 +Export-Package: swt.most.petrinet.provider +Require-Bundle: org.eclipse.core.runtime, + swt.most.petrinet;visibility:=reexport, + org.eclipse.emf.edit;visibility:=reexport +Bundle-ActivationPolicy: lazy diff --git a/metamodel/swt.most.petrinet.edit/build.properties b/metamodel/swt.most.petrinet.edit/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..a3c4e32afd5c06df8bd4f0d371e56479e0822559 --- /dev/null +++ b/metamodel/swt.most.petrinet.edit/build.properties @@ -0,0 +1,10 @@ +# + +bin.includes = .,\ + icons/,\ + META-INF/,\ + plugin.xml,\ + plugin.properties +jars.compile.order = . +source.. = src-gen/ +output.. = bin/ diff --git a/metamodel/swt.most.petrinet.edit/icons/full/obj16/Arc.gif b/metamodel/swt.most.petrinet.edit/icons/full/obj16/Arc.gif new file mode 100644 index 0000000000000000000000000000000000000000..90d10f9470787d1465c462197b85d1d3621f84e4 Binary files /dev/null and b/metamodel/swt.most.petrinet.edit/icons/full/obj16/Arc.gif differ diff --git a/metamodel/swt.most.petrinet.edit/icons/full/obj16/Element.gif b/metamodel/swt.most.petrinet.edit/icons/full/obj16/Element.gif new file mode 100644 index 0000000000000000000000000000000000000000..f8041d22553d3f326e3e82be501f2e9bac3794b0 Binary files /dev/null and b/metamodel/swt.most.petrinet.edit/icons/full/obj16/Element.gif differ diff --git a/metamodel/swt.most.petrinet.edit/icons/full/obj16/IncomingArc.gif b/metamodel/swt.most.petrinet.edit/icons/full/obj16/IncomingArc.gif new file mode 100644 index 0000000000000000000000000000000000000000..2b6925602975de13459862ee32e1b0d97549bf67 Binary files /dev/null and b/metamodel/swt.most.petrinet.edit/icons/full/obj16/IncomingArc.gif differ diff --git a/metamodel/swt.most.petrinet.edit/icons/full/obj16/OutgoingArc.gif b/metamodel/swt.most.petrinet.edit/icons/full/obj16/OutgoingArc.gif new file mode 100644 index 0000000000000000000000000000000000000000..a17dc7d88e993e89a1d5f913ddfab16b1676c5bb Binary files /dev/null and b/metamodel/swt.most.petrinet.edit/icons/full/obj16/OutgoingArc.gif differ diff --git a/metamodel/swt.most.petrinet.edit/icons/full/obj16/PetriNet.gif b/metamodel/swt.most.petrinet.edit/icons/full/obj16/PetriNet.gif new file mode 100644 index 0000000000000000000000000000000000000000..106881e5d9bf05cb0cf3375cfd102e8039b8ace9 Binary files /dev/null and b/metamodel/swt.most.petrinet.edit/icons/full/obj16/PetriNet.gif differ diff --git a/metamodel/swt.most.petrinet.edit/icons/full/obj16/Place.gif b/metamodel/swt.most.petrinet.edit/icons/full/obj16/Place.gif new file mode 100644 index 0000000000000000000000000000000000000000..e4bc22dd17e82d9350631bd55ad9671957cdaf50 Binary files /dev/null and b/metamodel/swt.most.petrinet.edit/icons/full/obj16/Place.gif differ diff --git a/metamodel/swt.most.petrinet.edit/icons/full/obj16/Token.gif b/metamodel/swt.most.petrinet.edit/icons/full/obj16/Token.gif new file mode 100644 index 0000000000000000000000000000000000000000..cb1755a712505aeaaa447d9b1cc5940e602f87b6 Binary files /dev/null and b/metamodel/swt.most.petrinet.edit/icons/full/obj16/Token.gif differ diff --git a/metamodel/swt.most.petrinet.edit/icons/full/obj16/Transition.gif b/metamodel/swt.most.petrinet.edit/icons/full/obj16/Transition.gif new file mode 100644 index 0000000000000000000000000000000000000000..7bac4fd3808df6247660dfb8d76e15609f279841 Binary files /dev/null and b/metamodel/swt.most.petrinet.edit/icons/full/obj16/Transition.gif differ diff --git a/metamodel/swt.most.petrinet.edit/plugin.properties b/metamodel/swt.most.petrinet.edit/plugin.properties new file mode 100644 index 0000000000000000000000000000000000000000..880eee4f1e4a942bd5f44ab5f53b5bc060354da2 --- /dev/null +++ b/metamodel/swt.most.petrinet.edit/plugin.properties @@ -0,0 +1,37 @@ +# + +pluginName = swt.most.petrinet Edit Support +providerName = www.example.org + +_UI_CreateChild_text = {0} +_UI_CreateChild_text2 = {1} {0} +_UI_CreateChild_text3 = {1} +_UI_CreateChild_tooltip = Create New {0} Under {1} Feature +_UI_CreateChild_description = Create a new child of type {0} for the {1} feature of the selected {2}. +_UI_CreateSibling_description = Create a new sibling of type {0} for the selected {2}, under the {1} feature of their parent. + +_UI_PropertyDescriptor_description = The {0} of the {1} + +_UI_PetriNet_type = Petri Net +_UI_Element_type = Element +_UI_Arc_type = Arc +_UI_IncomingArc_type = Incoming Arc +_UI_OutgoingArc_type = Outgoing Arc +_UI_Place_type = Place +_UI_Transition_type = Transition +_UI_Token_type = Token +_UI_Unknown_type = Object + +_UI_Unknown_datatype= Value + +_UI_PetriNet_name_feature = Name +_UI_PetriNet_arcs_feature = Arcs +_UI_PetriNet_elements_feature = Elements +_UI_Element_identifier_feature = Identifier +_UI_IncomingArc_target_feature = Target +_UI_IncomingArc_source_feature = Source +_UI_OutgoingArc_source_feature = Source +_UI_OutgoingArc_target_feature = Target +_UI_Place_token_feature = Token +_UI_Unknown_feature = Unspecified + diff --git a/metamodel/swt.most.petrinet.edit/plugin.xml b/metamodel/swt.most.petrinet.edit/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..4b1f5fbcfadbbf0d027071aa1f40862f96d97e64 --- /dev/null +++ b/metamodel/swt.most.petrinet.edit/plugin.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.0"?> + +<!-- +--> + +<plugin> + + <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories"> + <!-- @generated petrinet --> + <factory + uri="http://www.example.org/petrinet" + class="swt.most.petrinet.provider.PetrinetItemProviderAdapterFactory" + supportedTypes= + "org.eclipse.emf.edit.provider.IEditingDomainItemProvider + org.eclipse.emf.edit.provider.IStructuredItemContentProvider + org.eclipse.emf.edit.provider.ITreeItemContentProvider + org.eclipse.emf.edit.provider.IItemLabelProvider + org.eclipse.emf.edit.provider.IItemPropertySource"/> + </extension> + +</plugin> diff --git a/metamodel/swt.most.petrinet.edit/src-gen/swt/most/petrinet/provider/ArcItemProvider.java b/metamodel/swt.most.petrinet.edit/src-gen/swt/most/petrinet/provider/ArcItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..2ba07602ccb6a53e041d2e9cf0c908d2bdd196f2 --- /dev/null +++ b/metamodel/swt.most.petrinet.edit/src-gen/swt/most/petrinet/provider/ArcItemProvider.java @@ -0,0 +1,122 @@ +/** + */ +package swt.most.petrinet.provider; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.common.util.ResourceLocator; + +import org.eclipse.emf.edit.provider.IEditingDomainItemProvider; +import org.eclipse.emf.edit.provider.IItemLabelProvider; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.IItemPropertySource; +import org.eclipse.emf.edit.provider.IStructuredItemContentProvider; +import org.eclipse.emf.edit.provider.ITreeItemContentProvider; +import org.eclipse.emf.edit.provider.ItemProviderAdapter; + +/** + * This is the item provider adapter for a {@link swt.most.petrinet.Arc} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ArcItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider, + IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ArcItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + } + return itemPropertyDescriptors; + } + + /** + * This returns Arc.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/Arc")); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean shouldComposeCreationImage() { + return true; + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_Arc_type"); + } + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return PetrinetEditPlugin.INSTANCE; + } + +} diff --git a/metamodel/swt.most.petrinet.edit/src-gen/swt/most/petrinet/provider/ElementItemProvider.java b/metamodel/swt.most.petrinet.edit/src-gen/swt/most/petrinet/provider/ElementItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..02055d5928827fee79f5957809f5853ebc197edf --- /dev/null +++ b/metamodel/swt.most.petrinet.edit/src-gen/swt/most/petrinet/provider/ElementItemProvider.java @@ -0,0 +1,153 @@ +/** + */ +package swt.most.petrinet.provider; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.common.util.ResourceLocator; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IEditingDomainItemProvider; +import org.eclipse.emf.edit.provider.IItemLabelProvider; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.IItemPropertySource; +import org.eclipse.emf.edit.provider.IStructuredItemContentProvider; +import org.eclipse.emf.edit.provider.ITreeItemContentProvider; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemProviderAdapter; +import org.eclipse.emf.edit.provider.ViewerNotification; + +import swt.most.petrinet.Element; +import swt.most.petrinet.PetrinetPackage; + +/** + * This is the item provider adapter for a {@link swt.most.petrinet.Element} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ElementItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider, + IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ElementItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + addIdentifierPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Identifier feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addIdentifierPropertyDescriptor(Object object) { + itemPropertyDescriptors + .add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(), + getResourceLocator(), getString("_UI_Element_identifier_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Element_identifier_feature", + "_UI_Element_type"), + PetrinetPackage.Literals.ELEMENT__IDENTIFIER, true, false, false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null)); + } + + /** + * This returns Element.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/Element")); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean shouldComposeCreationImage() { + return true; + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((Element) object).getIdentifier(); + return label == null || label.length() == 0 ? getString("_UI_Element_type") + : getString("_UI_Element_type") + " " + label; + } + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + + switch (notification.getFeatureID(Element.class)) { + case PetrinetPackage.ELEMENT__IDENTIFIER: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + } + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return PetrinetEditPlugin.INSTANCE; + } + +} diff --git a/metamodel/swt.most.petrinet.edit/src-gen/swt/most/petrinet/provider/IncomingArcItemProvider.java b/metamodel/swt.most.petrinet.edit/src-gen/swt/most/petrinet/provider/IncomingArcItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..904408d5a07fa85184824c354626affbe0a94f86 --- /dev/null +++ b/metamodel/swt.most.petrinet.edit/src-gen/swt/most/petrinet/provider/IncomingArcItemProvider.java @@ -0,0 +1,137 @@ +/** + */ +package swt.most.petrinet.provider; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +import swt.most.petrinet.PetrinetPackage; + +/** + * This is the item provider adapter for a {@link swt.most.petrinet.IncomingArc} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class IncomingArcItemProvider extends ArcItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IncomingArcItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + addTargetPropertyDescriptor(object); + addSourcePropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Target feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addTargetPropertyDescriptor(Object object) { + itemPropertyDescriptors + .add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(), + getResourceLocator(), getString("_UI_IncomingArc_target_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_IncomingArc_target_feature", + "_UI_IncomingArc_type"), + PetrinetPackage.Literals.INCOMING_ARC__TARGET, true, false, true, null, null, null)); + } + + /** + * This adds a property descriptor for the Source feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addSourcePropertyDescriptor(Object object) { + itemPropertyDescriptors + .add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(), + getResourceLocator(), getString("_UI_IncomingArc_source_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_IncomingArc_source_feature", + "_UI_IncomingArc_type"), + PetrinetPackage.Literals.INCOMING_ARC__SOURCE, true, false, true, null, null, null)); + } + + /** + * This returns IncomingArc.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/IncomingArc")); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean shouldComposeCreationImage() { + return true; + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_IncomingArc_type"); + } + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + +} diff --git a/metamodel/swt.most.petrinet.edit/src-gen/swt/most/petrinet/provider/OutgoingArcItemProvider.java b/metamodel/swt.most.petrinet.edit/src-gen/swt/most/petrinet/provider/OutgoingArcItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..dadfd5ddfd98367bd90466044ad9f0f2fbad8cd0 --- /dev/null +++ b/metamodel/swt.most.petrinet.edit/src-gen/swt/most/petrinet/provider/OutgoingArcItemProvider.java @@ -0,0 +1,137 @@ +/** + */ +package swt.most.petrinet.provider; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +import swt.most.petrinet.PetrinetPackage; + +/** + * This is the item provider adapter for a {@link swt.most.petrinet.OutgoingArc} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class OutgoingArcItemProvider extends ArcItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public OutgoingArcItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + addSourcePropertyDescriptor(object); + addTargetPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Source feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addSourcePropertyDescriptor(Object object) { + itemPropertyDescriptors + .add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(), + getResourceLocator(), getString("_UI_OutgoingArc_source_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_OutgoingArc_source_feature", + "_UI_OutgoingArc_type"), + PetrinetPackage.Literals.OUTGOING_ARC__SOURCE, true, false, true, null, null, null)); + } + + /** + * This adds a property descriptor for the Target feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addTargetPropertyDescriptor(Object object) { + itemPropertyDescriptors + .add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(), + getResourceLocator(), getString("_UI_OutgoingArc_target_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_OutgoingArc_target_feature", + "_UI_OutgoingArc_type"), + PetrinetPackage.Literals.OUTGOING_ARC__TARGET, true, false, true, null, null, null)); + } + + /** + * This returns OutgoingArc.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/OutgoingArc")); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean shouldComposeCreationImage() { + return true; + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_OutgoingArc_type"); + } + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + +} diff --git a/metamodel/swt.most.petrinet.edit/src-gen/swt/most/petrinet/provider/PetriNetItemProvider.java b/metamodel/swt.most.petrinet.edit/src-gen/swt/most/petrinet/provider/PetriNetItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..1671c3f3c263e7694179d76d829aadd04637c63a --- /dev/null +++ b/metamodel/swt.most.petrinet.edit/src-gen/swt/most/petrinet/provider/PetriNetItemProvider.java @@ -0,0 +1,203 @@ +/** + */ +package swt.most.petrinet.provider; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.common.util.ResourceLocator; + +import org.eclipse.emf.ecore.EStructuralFeature; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IEditingDomainItemProvider; +import org.eclipse.emf.edit.provider.IItemLabelProvider; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.IItemPropertySource; +import org.eclipse.emf.edit.provider.IStructuredItemContentProvider; +import org.eclipse.emf.edit.provider.ITreeItemContentProvider; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemProviderAdapter; +import org.eclipse.emf.edit.provider.ViewerNotification; + +import swt.most.petrinet.PetriNet; +import swt.most.petrinet.PetrinetFactory; +import swt.most.petrinet.PetrinetPackage; + +/** + * This is the item provider adapter for a {@link swt.most.petrinet.PetriNet} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class PetriNetItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider, + IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public PetriNetItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + addNamePropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Name feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addNamePropertyDescriptor(Object object) { + itemPropertyDescriptors + .add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(), + getResourceLocator(), getString("_UI_PetriNet_name_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_PetriNet_name_feature", + "_UI_PetriNet_type"), + PetrinetPackage.Literals.PETRI_NET__NAME, true, false, false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null)); + } + + /** + * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an + * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or + * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) { + if (childrenFeatures == null) { + super.getChildrenFeatures(object); + childrenFeatures.add(PetrinetPackage.Literals.PETRI_NET__ARCS); + childrenFeatures.add(PetrinetPackage.Literals.PETRI_NET__ELEMENTS); + } + return childrenFeatures; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EStructuralFeature getChildFeature(Object object, Object child) { + // Check the type of the specified child object and return the proper feature to use for + // adding (see {@link AddCommand}) it as a child. + + return super.getChildFeature(object, child); + } + + /** + * This returns PetriNet.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/PetriNet")); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean shouldComposeCreationImage() { + return true; + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((PetriNet) object).getName(); + return label == null || label.length() == 0 ? getString("_UI_PetriNet_type") + : getString("_UI_PetriNet_type") + " " + label; + } + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + + switch (notification.getFeatureID(PetriNet.class)) { + case PetrinetPackage.PETRI_NET__NAME: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + case PetrinetPackage.PETRI_NET__ARCS: + case PetrinetPackage.PETRI_NET__ELEMENTS: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false)); + return; + } + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + + newChildDescriptors.add(createChildParameter(PetrinetPackage.Literals.PETRI_NET__ARCS, + PetrinetFactory.eINSTANCE.createIncomingArc())); + + newChildDescriptors.add(createChildParameter(PetrinetPackage.Literals.PETRI_NET__ARCS, + PetrinetFactory.eINSTANCE.createOutgoingArc())); + + newChildDescriptors.add(createChildParameter(PetrinetPackage.Literals.PETRI_NET__ELEMENTS, + PetrinetFactory.eINSTANCE.createPlace())); + + newChildDescriptors.add(createChildParameter(PetrinetPackage.Literals.PETRI_NET__ELEMENTS, + PetrinetFactory.eINSTANCE.createTransition())); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return PetrinetEditPlugin.INSTANCE; + } + +} diff --git a/metamodel/swt.most.petrinet.edit/src-gen/swt/most/petrinet/provider/PetrinetEditPlugin.java b/metamodel/swt.most.petrinet.edit/src-gen/swt/most/petrinet/provider/PetrinetEditPlugin.java new file mode 100644 index 0000000000000000000000000000000000000000..21406d271b53d7cd41e4293e96c53a60b8151502 --- /dev/null +++ b/metamodel/swt.most.petrinet.edit/src-gen/swt/most/petrinet/provider/PetrinetEditPlugin.java @@ -0,0 +1,87 @@ +/** + */ +package swt.most.petrinet.provider; + +import org.eclipse.emf.common.EMFPlugin; + +import org.eclipse.emf.common.util.ResourceLocator; + +/** + * This is the central singleton for the Petrinet edit plugin. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public final class PetrinetEditPlugin extends EMFPlugin { + /** + * Keep track of the singleton. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final PetrinetEditPlugin INSTANCE = new PetrinetEditPlugin(); + + /** + * Keep track of the singleton. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private static Implementation plugin; + + /** + * Create the instance. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public PetrinetEditPlugin() { + super(new ResourceLocator[] {}); + } + + /** + * Returns the singleton instance of the Eclipse plugin. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the singleton instance. + * @generated + */ + @Override + public ResourceLocator getPluginResourceLocator() { + return plugin; + } + + /** + * Returns the singleton instance of the Eclipse plugin. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the singleton instance. + * @generated + */ + public static Implementation getPlugin() { + return plugin; + } + + /** + * The actual implementation of the Eclipse <b>Plugin</b>. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static class Implementation extends EclipsePlugin { + /** + * Creates an instance. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Implementation() { + super(); + + // Remember the static instance. + // + plugin = this; + } + } + +} diff --git a/metamodel/swt.most.petrinet.edit/src-gen/swt/most/petrinet/provider/PetrinetItemProviderAdapterFactory.java b/metamodel/swt.most.petrinet.edit/src-gen/swt/most/petrinet/provider/PetrinetItemProviderAdapterFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..b80c66222fe76ecd17766d8e2dd1a45d8212ed43 --- /dev/null +++ b/metamodel/swt.most.petrinet.edit/src-gen/swt/most/petrinet/provider/PetrinetItemProviderAdapterFactory.java @@ -0,0 +1,326 @@ +/** + */ +package swt.most.petrinet.provider; + +import java.util.ArrayList; +import java.util.Collection; + +import org.eclipse.emf.common.notify.Adapter; +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.Notifier; + +import org.eclipse.emf.edit.provider.ChangeNotifier; +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.ComposedAdapterFactory; +import org.eclipse.emf.edit.provider.IChangeNotifier; +import org.eclipse.emf.edit.provider.IDisposable; +import org.eclipse.emf.edit.provider.IEditingDomainItemProvider; +import org.eclipse.emf.edit.provider.IItemLabelProvider; +import org.eclipse.emf.edit.provider.IItemPropertySource; +import org.eclipse.emf.edit.provider.INotifyChangedListener; +import org.eclipse.emf.edit.provider.IStructuredItemContentProvider; +import org.eclipse.emf.edit.provider.ITreeItemContentProvider; + +import swt.most.petrinet.util.PetrinetAdapterFactory; + +/** + * This is the factory that is used to provide the interfaces needed to support Viewers. + * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}. + * The adapters also support Eclipse property sheets. + * Note that most of the adapters are shared among multiple instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class PetrinetItemProviderAdapterFactory extends PetrinetAdapterFactory + implements ComposeableAdapterFactory, IChangeNotifier, IDisposable { + /** + * This keeps track of the root adapter factory that delegates to this adapter factory. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ComposedAdapterFactory parentAdapterFactory; + + /** + * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IChangeNotifier changeNotifier = new ChangeNotifier(); + + /** + * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Object> supportedTypes = new ArrayList<Object>(); + + /** + * This constructs an instance. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public PetrinetItemProviderAdapterFactory() { + supportedTypes.add(IEditingDomainItemProvider.class); + supportedTypes.add(IStructuredItemContentProvider.class); + supportedTypes.add(ITreeItemContentProvider.class); + supportedTypes.add(IItemLabelProvider.class); + supportedTypes.add(IItemPropertySource.class); + } + + /** + * This keeps track of the one adapter used for all {@link swt.most.petrinet.PetriNet} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected PetriNetItemProvider petriNetItemProvider; + + /** + * This creates an adapter for a {@link swt.most.petrinet.PetriNet}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createPetriNetAdapter() { + if (petriNetItemProvider == null) { + petriNetItemProvider = new PetriNetItemProvider(this); + } + + return petriNetItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link swt.most.petrinet.IncomingArc} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IncomingArcItemProvider incomingArcItemProvider; + + /** + * This creates an adapter for a {@link swt.most.petrinet.IncomingArc}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createIncomingArcAdapter() { + if (incomingArcItemProvider == null) { + incomingArcItemProvider = new IncomingArcItemProvider(this); + } + + return incomingArcItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link swt.most.petrinet.OutgoingArc} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected OutgoingArcItemProvider outgoingArcItemProvider; + + /** + * This creates an adapter for a {@link swt.most.petrinet.OutgoingArc}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createOutgoingArcAdapter() { + if (outgoingArcItemProvider == null) { + outgoingArcItemProvider = new OutgoingArcItemProvider(this); + } + + return outgoingArcItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link swt.most.petrinet.Place} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected PlaceItemProvider placeItemProvider; + + /** + * This creates an adapter for a {@link swt.most.petrinet.Place}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createPlaceAdapter() { + if (placeItemProvider == null) { + placeItemProvider = new PlaceItemProvider(this); + } + + return placeItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link swt.most.petrinet.Transition} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TransitionItemProvider transitionItemProvider; + + /** + * This creates an adapter for a {@link swt.most.petrinet.Transition}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createTransitionAdapter() { + if (transitionItemProvider == null) { + transitionItemProvider = new TransitionItemProvider(this); + } + + return transitionItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link swt.most.petrinet.Token} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TokenItemProvider tokenItemProvider; + + /** + * This creates an adapter for a {@link swt.most.petrinet.Token}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createTokenAdapter() { + if (tokenItemProvider == null) { + tokenItemProvider = new TokenItemProvider(this); + } + + return tokenItemProvider; + } + + /** + * This returns the root adapter factory that contains this factory. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ComposeableAdapterFactory getRootAdapterFactory() { + return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory(); + } + + /** + * This sets the composed adapter factory that contains this factory. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) { + this.parentAdapterFactory = parentAdapterFactory; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean isFactoryForType(Object type) { + return supportedTypes.contains(type) || super.isFactoryForType(type); + } + + /** + * This implementation substitutes the factory itself as the key for the adapter. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter adapt(Notifier notifier, Object type) { + return super.adapt(notifier, this); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object adapt(Object object, Object type) { + if (isFactoryForType(type)) { + Object adapter = super.adapt(object, type); + if (!(type instanceof Class<?>) || (((Class<?>) type).isInstance(adapter))) { + return adapter; + } + } + + return null; + } + + /** + * This adds a listener. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void addListener(INotifyChangedListener notifyChangedListener) { + changeNotifier.addListener(notifyChangedListener); + } + + /** + * This removes a listener. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void removeListener(INotifyChangedListener notifyChangedListener) { + changeNotifier.removeListener(notifyChangedListener); + } + + /** + * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void fireNotifyChanged(Notification notification) { + changeNotifier.fireNotifyChanged(notification); + + if (parentAdapterFactory != null) { + parentAdapterFactory.fireNotifyChanged(notification); + } + } + + /** + * This disposes all of the item providers created by this factory. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void dispose() { + if (petriNetItemProvider != null) + petriNetItemProvider.dispose(); + if (incomingArcItemProvider != null) + incomingArcItemProvider.dispose(); + if (outgoingArcItemProvider != null) + outgoingArcItemProvider.dispose(); + if (placeItemProvider != null) + placeItemProvider.dispose(); + if (transitionItemProvider != null) + transitionItemProvider.dispose(); + if (tokenItemProvider != null) + tokenItemProvider.dispose(); + } + +} diff --git a/metamodel/swt.most.petrinet.edit/src-gen/swt/most/petrinet/provider/PlaceItemProvider.java b/metamodel/swt.most.petrinet.edit/src-gen/swt/most/petrinet/provider/PlaceItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..9b6411d274640c2de2138b465746f0c4d0d452fb --- /dev/null +++ b/metamodel/swt.most.petrinet.edit/src-gen/swt/most/petrinet/provider/PlaceItemProvider.java @@ -0,0 +1,150 @@ +/** + */ +package swt.most.petrinet.provider; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.ecore.EStructuralFeature; + +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +import swt.most.petrinet.PetrinetFactory; +import swt.most.petrinet.PetrinetPackage; +import swt.most.petrinet.Place; + +/** + * This is the item provider adapter for a {@link swt.most.petrinet.Place} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class PlaceItemProvider extends ElementItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public PlaceItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + } + return itemPropertyDescriptors; + } + + /** + * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an + * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or + * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) { + if (childrenFeatures == null) { + super.getChildrenFeatures(object); + childrenFeatures.add(PetrinetPackage.Literals.PLACE__TOKEN); + } + return childrenFeatures; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EStructuralFeature getChildFeature(Object object, Object child) { + // Check the type of the specified child object and return the proper feature to use for + // adding (see {@link AddCommand}) it as a child. + + return super.getChildFeature(object, child); + } + + /** + * This returns Place.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/Place")); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean shouldComposeCreationImage() { + return true; + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((Place) object).getIdentifier(); + return label == null || label.length() == 0 ? getString("_UI_Place_type") + : getString("_UI_Place_type") + " " + label; + } + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + + switch (notification.getFeatureID(Place.class)) { + case PetrinetPackage.PLACE__TOKEN: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false)); + return; + } + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + + newChildDescriptors.add( + createChildParameter(PetrinetPackage.Literals.PLACE__TOKEN, PetrinetFactory.eINSTANCE.createToken())); + } + +} diff --git a/metamodel/swt.most.petrinet.edit/src-gen/swt/most/petrinet/provider/TokenItemProvider.java b/metamodel/swt.most.petrinet.edit/src-gen/swt/most/petrinet/provider/TokenItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..6a47e008d272df85a026d98dbe6de0fb0cf80c9a --- /dev/null +++ b/metamodel/swt.most.petrinet.edit/src-gen/swt/most/petrinet/provider/TokenItemProvider.java @@ -0,0 +1,122 @@ +/** + */ +package swt.most.petrinet.provider; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.common.util.ResourceLocator; + +import org.eclipse.emf.edit.provider.IEditingDomainItemProvider; +import org.eclipse.emf.edit.provider.IItemLabelProvider; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.IItemPropertySource; +import org.eclipse.emf.edit.provider.IStructuredItemContentProvider; +import org.eclipse.emf.edit.provider.ITreeItemContentProvider; +import org.eclipse.emf.edit.provider.ItemProviderAdapter; + +/** + * This is the item provider adapter for a {@link swt.most.petrinet.Token} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class TokenItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider, + IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public TokenItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + } + return itemPropertyDescriptors; + } + + /** + * This returns Token.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/Token")); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean shouldComposeCreationImage() { + return true; + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_Token_type"); + } + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return PetrinetEditPlugin.INSTANCE; + } + +} diff --git a/metamodel/swt.most.petrinet.edit/src-gen/swt/most/petrinet/provider/TransitionItemProvider.java b/metamodel/swt.most.petrinet.edit/src-gen/swt/most/petrinet/provider/TransitionItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..bf8192cbc29ceb58a43248a2ee4fc0494a13a43d --- /dev/null +++ b/metamodel/swt.most.petrinet.edit/src-gen/swt/most/petrinet/provider/TransitionItemProvider.java @@ -0,0 +1,106 @@ +/** + */ +package swt.most.petrinet.provider; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +import swt.most.petrinet.Transition; + +/** + * This is the item provider adapter for a {@link swt.most.petrinet.Transition} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class TransitionItemProvider extends ElementItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public TransitionItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + } + return itemPropertyDescriptors; + } + + /** + * This returns Transition.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/Transition")); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean shouldComposeCreationImage() { + return true; + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((Transition) object).getIdentifier(); + return label == null || label.length() == 0 ? getString("_UI_Transition_type") + : getString("_UI_Transition_type") + " " + label; + } + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + +} diff --git a/metamodel/swt.most.petrinet.editor/.classpath b/metamodel/swt.most.petrinet.editor/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..2377d859931ab6ce1560ef53742afa6e8f1cdefd --- /dev/null +++ b/metamodel/swt.most.petrinet.editor/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src-gen"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/metamodel/swt.most.petrinet.editor/.gitignore b/metamodel/swt.most.petrinet.editor/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..ae3c1726048cd06b9a143e0376ed46dd9b9a8d53 --- /dev/null +++ b/metamodel/swt.most.petrinet.editor/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/metamodel/swt.most.petrinet.editor/.project b/metamodel/swt.most.petrinet.editor/.project new file mode 100644 index 0000000000000000000000000000000000000000..ad91070d3c985bfed7dba6ff375cdbdfe753ef0b --- /dev/null +++ b/metamodel/swt.most.petrinet.editor/.project @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>swt.most.petrinet.editor</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.SchemaBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + <nature>org.eclipse.pde.PluginNature</nature> + </natures> +</projectDescription> diff --git a/metamodel/swt.most.petrinet.editor/.settings/org.eclipse.core.resources.prefs b/metamodel/swt.most.petrinet.editor/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000000000000000000000000000000000000..99f26c0203a7844de00dbfc56e6a35d8ed3c022c --- /dev/null +++ b/metamodel/swt.most.petrinet.editor/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/<project>=UTF-8 diff --git a/metamodel/swt.most.petrinet.editor/META-INF/MANIFEST.MF b/metamodel/swt.most.petrinet.editor/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..3928f845a02a7b20837a0b6b090be511425d1a5c --- /dev/null +++ b/metamodel/swt.most.petrinet.editor/META-INF/MANIFEST.MF @@ -0,0 +1,19 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %pluginName +Bundle-SymbolicName: swt.most.petrinet.editor;singleton:=true +Automatic-Module-Name: swt.most.petrinet.editor +Bundle-Version: 1.0.0.qualifier +Bundle-ClassPath: . +Bundle-Activator: swt.most.petrinet.presentation.PetrinetEditorPlugin$Implementation +Bundle-Vendor: %providerName +Bundle-Localization: plugin +Bundle-RequiredExecutionEnvironment: J2SE-1.5 +Export-Package: swt.most.petrinet.presentation +Require-Bundle: org.eclipse.core.runtime, + org.eclipse.core.resources;visibility:=reexport, + swt.most.petrinet.edit;visibility:=reexport, + org.eclipse.emf.ecore.xmi;visibility:=reexport, + org.eclipse.emf.edit.ui;visibility:=reexport, + org.eclipse.ui.ide;visibility:=reexport +Bundle-ActivationPolicy: lazy diff --git a/metamodel/swt.most.petrinet.editor/build.properties b/metamodel/swt.most.petrinet.editor/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..11a57196868eef7d9f65dc239cdf49f3b6638ac8 --- /dev/null +++ b/metamodel/swt.most.petrinet.editor/build.properties @@ -0,0 +1,10 @@ +# + +bin.includes = .,\ + icons/,\ + META-INF/,\ + plugin.xml,\ + plugin.properties +jars.compile.order = . +source.. = src-gen/ +output.. = bin diff --git a/metamodel/swt.most.petrinet.editor/icons/full/obj16/PetrinetModelFile.gif b/metamodel/swt.most.petrinet.editor/icons/full/obj16/PetrinetModelFile.gif new file mode 100644 index 0000000000000000000000000000000000000000..689b7281906a8495692dabb9df11ed27df1f312f Binary files /dev/null and b/metamodel/swt.most.petrinet.editor/icons/full/obj16/PetrinetModelFile.gif differ diff --git a/metamodel/swt.most.petrinet.editor/icons/full/wizban/NewPetrinet.gif b/metamodel/swt.most.petrinet.editor/icons/full/wizban/NewPetrinet.gif new file mode 100644 index 0000000000000000000000000000000000000000..e976e0776d200e1ce72d13ee80784885faff018e Binary files /dev/null and b/metamodel/swt.most.petrinet.editor/icons/full/wizban/NewPetrinet.gif differ diff --git a/metamodel/swt.most.petrinet.editor/plugin.properties b/metamodel/swt.most.petrinet.editor/plugin.properties new file mode 100644 index 0000000000000000000000000000000000000000..37d15e17cd9883555afe1b0a6d9fd53942aac426 --- /dev/null +++ b/metamodel/swt.most.petrinet.editor/plugin.properties @@ -0,0 +1,53 @@ +# + +pluginName = swt.most.petrinet Editor +providerName = www.example.org + +_UI_PetrinetEditor_menu = &Petrinet Editor + +_UI_CreateChild_menu_item = &New Child +_UI_CreateSibling_menu_item = N&ew Sibling + +_UI_ShowPropertiesView_menu_item = Show &Properties View +_UI_RefreshViewer_menu_item = &Refresh + +_UI_SelectionPage_label = Selection +_UI_ParentPage_label = Parent +_UI_ListPage_label = List +_UI_TreePage_label = Tree +_UI_TablePage_label = Table +_UI_TreeWithColumnsPage_label = Tree with Columns +_UI_ObjectColumn_label = Object +_UI_SelfColumn_label = Self + +_UI_NoObjectSelected = Selected Nothing +_UI_SingleObjectSelected = Selected Object: {0} +_UI_MultiObjectSelected = Selected {0} Objects + +_UI_OpenEditorError_label = Open Editor + +_UI_Wizard_category = Example EMF Model Creation Wizards + +_UI_CreateModelError_message = Problems encountered in file "{0}" + +_UI_PetrinetModelWizard_label = Petrinet Model +_UI_PetrinetModelWizard_description = Create a new Petrinet model + +_UI_PetrinetEditor_label = Petrinet Model Editor + +_UI_PetrinetEditorFilenameDefaultBase = My +_UI_PetrinetEditorFilenameExtensions = petrinet + +_UI_Wizard_label = New + +_WARN_FilenameExtension = The file name must end in ''.{0}'' +_WARN_FilenameExtensions = The file name must have one of the following extensions: {0} + +_UI_ModelObject = &Model Object +_UI_XMLEncoding = &XML Encoding +_UI_XMLEncodingChoices = UTF-8 ASCII UTF-16 UTF-16BE UTF-16LE ISO-8859-1 +_UI_Wizard_initial_object_description = Select a model object to create + +_UI_FileConflict_label = File Conflict +_WARN_FileConflict = There are unsaved changes that conflict with changes made outside the editor. Do you wish to discard this editor's changes? + diff --git a/metamodel/swt.most.petrinet.editor/plugin.xml b/metamodel/swt.most.petrinet.editor/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..0aad49100eba42f7cdf3d11bd60e1d4b15bc6130 --- /dev/null +++ b/metamodel/swt.most.petrinet.editor/plugin.xml @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.0"?> + +<!-- +--> + +<plugin> + + <extension point="org.eclipse.ui.newWizards"> + <!-- @generated petrinet --> + <category + id="org.eclipse.emf.ecore.Wizard.category.ID" + name="%_UI_Wizard_category"/> + <wizard + id="swt.most.petrinet.presentation.PetrinetModelWizardID" + name="%_UI_PetrinetModelWizard_label" + class="swt.most.petrinet.presentation.PetrinetModelWizard" + category="org.eclipse.emf.ecore.Wizard.category.ID" + icon="icons/full/obj16/PetrinetModelFile.gif"> + <description>%_UI_PetrinetModelWizard_description</description> + <selection class="org.eclipse.core.resources.IResource"/> + </wizard> + </extension> + + <extension point="org.eclipse.ui.editors"> + <!-- @generated petrinet --> + <editor + id="swt.most.petrinet.presentation.PetrinetEditorID" + name="%_UI_PetrinetEditor_label" + icon="icons/full/obj16/PetrinetModelFile.gif" + extensions="petrinet" + class="swt.most.petrinet.presentation.PetrinetEditor" + contributorClass="swt.most.petrinet.presentation.PetrinetActionBarContributor"> + </editor> + </extension> + +</plugin> diff --git a/metamodel/swt.most.petrinet.editor/src-gen/swt/most/petrinet/presentation/PetrinetActionBarContributor.java b/metamodel/swt.most.petrinet.editor/src-gen/swt/most/petrinet/presentation/PetrinetActionBarContributor.java new file mode 100644 index 0000000000000000000000000000000000000000..fa464a3fd2800eadf66ffd8c13a8a24b92fc7b06 --- /dev/null +++ b/metamodel/swt.most.petrinet.editor/src-gen/swt/most/petrinet/presentation/PetrinetActionBarContributor.java @@ -0,0 +1,422 @@ +/** + */ +package swt.most.petrinet.presentation; + +import java.util.ArrayList; +import java.util.Collection; + +import org.eclipse.emf.common.ui.viewer.IViewerProvider; + +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.edit.domain.IEditingDomainProvider; + +import org.eclipse.emf.edit.ui.action.ControlAction; +import org.eclipse.emf.edit.ui.action.CreateChildAction; +import org.eclipse.emf.edit.ui.action.CreateSiblingAction; +import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor; +import org.eclipse.emf.edit.ui.action.LoadResourceAction; +import org.eclipse.emf.edit.ui.action.ValidateAction; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.ActionContributionItem; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.action.IContributionItem; +import org.eclipse.jface.action.IContributionManager; +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; +import org.eclipse.jface.action.SubContributionItem; + +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.Viewer; + +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.PartInitException; + +/** + * This is the action bar contributor for the Petrinet model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class PetrinetActionBarContributor extends EditingDomainActionBarContributor + implements ISelectionChangedListener { + /** + * This keeps track of the active editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IEditorPart activeEditorPart; + + /** + * This keeps track of the current selection provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ISelectionProvider selectionProvider; + + /** + * This action opens the Properties view. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IAction showPropertiesViewAction = new Action( + PetrinetEditorPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item")) { + @Override + public void run() { + try { + getPage().showView("org.eclipse.ui.views.PropertySheet"); + } catch (PartInitException exception) { + PetrinetEditorPlugin.INSTANCE.log(exception); + } + } + }; + + /** + * This action refreshes the viewer of the current editor if the editor + * implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IAction refreshViewerAction = new Action( + PetrinetEditorPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item")) { + @Override + public boolean isEnabled() { + return activeEditorPart instanceof IViewerProvider; + } + + @Override + public void run() { + if (activeEditorPart instanceof IViewerProvider) { + Viewer viewer = ((IViewerProvider) activeEditorPart).getViewer(); + if (viewer != null) { + viewer.refresh(); + } + } + } + }; + + /** + * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to each descriptor + * generated for the current selection by the item provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> createChildActions; + + /** + * This is the menu manager into which menu contribution items should be added for CreateChild actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IMenuManager createChildMenuManager; + + /** + * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} corresponding to each descriptor + * generated for the current selection by the item provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> createSiblingActions; + + /** + * This is the menu manager into which menu contribution items should be added for CreateSibling actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IMenuManager createSiblingMenuManager; + + /** + * This creates an instance of the contributor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public PetrinetActionBarContributor() { + super(ADDITIONS_LAST_STYLE); + loadResourceAction = new LoadResourceAction(); + validateAction = new ValidateAction(); + controlAction = new ControlAction(); + } + + /** + * This adds Separators for editor additions to the tool bar. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void contributeToToolBar(IToolBarManager toolBarManager) { + super.contributeToToolBar(toolBarManager); + toolBarManager.add(new Separator("petrinet-settings")); + toolBarManager.add(new Separator("petrinet-additions")); + } + + /** + * This adds to the menu bar a menu and some separators for editor additions, + * as well as the sub-menus for object creation items. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void contributeToMenu(IMenuManager menuManager) { + super.contributeToMenu(menuManager); + + IMenuManager submenuManager = new MenuManager( + PetrinetEditorPlugin.INSTANCE.getString("_UI_PetrinetEditor_menu"), "swt.most.petrinetMenuID"); + menuManager.insertAfter("additions", submenuManager); + submenuManager.add(new Separator("settings")); + submenuManager.add(new Separator("actions")); + submenuManager.add(new Separator("additions")); + submenuManager.add(new Separator("additions-end")); + + // Prepare for CreateChild item addition or removal. + // + createChildMenuManager = new MenuManager(PetrinetEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item")); + submenuManager.insertBefore("additions", createChildMenuManager); + + // Prepare for CreateSibling item addition or removal. + // + createSiblingMenuManager = new MenuManager( + PetrinetEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item")); + submenuManager.insertBefore("additions", createSiblingMenuManager); + + // Force an update because Eclipse hides empty menus now. + // + submenuManager.addMenuListener(new IMenuListener() { + public void menuAboutToShow(IMenuManager menuManager) { + menuManager.updateAll(true); + } + }); + + addGlobalActions(submenuManager); + } + + /** + * When the active editor changes, this remembers the change and registers with it as a selection provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setActiveEditor(IEditorPart part) { + super.setActiveEditor(part); + activeEditorPart = part; + + // Switch to the new selection provider. + // + if (selectionProvider != null) { + selectionProvider.removeSelectionChangedListener(this); + } + if (part == null) { + selectionProvider = null; + } else { + selectionProvider = part.getSite().getSelectionProvider(); + selectionProvider.addSelectionChangedListener(this); + + // Fake a selection changed event to update the menus. + // + if (selectionProvider.getSelection() != null) { + selectionChanged(new SelectionChangedEvent(selectionProvider, selectionProvider.getSelection())); + } + } + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionChangedListener}, + * handling {@link org.eclipse.jface.viewers.SelectionChangedEvent}s by querying for the children and siblings + * that can be added to the selected object and updating the menus accordingly. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void selectionChanged(SelectionChangedEvent event) { + // Remove any menu items for old selection. + // + if (createChildMenuManager != null) { + depopulateManager(createChildMenuManager, createChildActions); + } + if (createSiblingMenuManager != null) { + depopulateManager(createSiblingMenuManager, createSiblingActions); + } + + // Query the new selection for appropriate new child/sibling descriptors + // + Collection<?> newChildDescriptors = null; + Collection<?> newSiblingDescriptors = null; + + ISelection selection = event.getSelection(); + if (selection instanceof IStructuredSelection && ((IStructuredSelection) selection).size() == 1) { + Object object = ((IStructuredSelection) selection).getFirstElement(); + + EditingDomain domain = ((IEditingDomainProvider) activeEditorPart).getEditingDomain(); + + newChildDescriptors = domain.getNewChildDescriptors(object, null); + newSiblingDescriptors = domain.getNewChildDescriptors(null, object); + } + + // Generate actions for selection; populate and redraw the menus. + // + createChildActions = generateCreateChildActions(newChildDescriptors, selection); + createSiblingActions = generateCreateSiblingActions(newSiblingDescriptors, selection); + + if (createChildMenuManager != null) { + populateManager(createChildMenuManager, createChildActions, null); + createChildMenuManager.update(true); + } + if (createSiblingMenuManager != null) { + populateManager(createSiblingMenuManager, createSiblingActions, null); + createSiblingMenuManager.update(true); + } + } + + /** + * This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction} for each object in <code>descriptors</code>, + * and returns the collection of these actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> generateCreateChildActions(Collection<?> descriptors, ISelection selection) { + Collection<IAction> actions = new ArrayList<IAction>(); + if (descriptors != null) { + for (Object descriptor : descriptors) { + actions.add(new CreateChildAction(activeEditorPart, selection, descriptor)); + } + } + return actions; + } + + /** + * This generates a {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} for each object in <code>descriptors</code>, + * and returns the collection of these actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> generateCreateSiblingActions(Collection<?> descriptors, ISelection selection) { + Collection<IAction> actions = new ArrayList<IAction>(); + if (descriptors != null) { + for (Object descriptor : descriptors) { + actions.add(new CreateSiblingAction(activeEditorPart, selection, descriptor)); + } + } + return actions; + } + + /** + * This populates the specified <code>manager</code> with {@link org.eclipse.jface.action.ActionContributionItem}s + * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection, + * by inserting them before the specified contribution item <code>contributionID</code>. + * If <code>contributionID</code> is <code>null</code>, they are simply added. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void populateManager(IContributionManager manager, Collection<? extends IAction> actions, + String contributionID) { + if (actions != null) { + for (IAction action : actions) { + if (contributionID != null) { + manager.insertBefore(contributionID, action); + } else { + manager.add(action); + } + } + } + } + + /** + * This removes from the specified <code>manager</code> all {@link org.eclipse.jface.action.ActionContributionItem}s + * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void depopulateManager(IContributionManager manager, Collection<? extends IAction> actions) { + if (actions != null) { + IContributionItem[] items = manager.getItems(); + for (int i = 0; i < items.length; i++) { + // Look into SubContributionItems + // + IContributionItem contributionItem = items[i]; + while (contributionItem instanceof SubContributionItem) { + contributionItem = ((SubContributionItem) contributionItem).getInnerItem(); + } + + // Delete the ActionContributionItems with matching action. + // + if (contributionItem instanceof ActionContributionItem) { + IAction action = ((ActionContributionItem) contributionItem).getAction(); + if (actions.contains(action)) { + manager.remove(contributionItem); + } + } + } + } + } + + /** + * This populates the pop-up menu before it appears. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void menuAboutToShow(IMenuManager menuManager) { + super.menuAboutToShow(menuManager); + MenuManager submenuManager = null; + + submenuManager = new MenuManager(PetrinetEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item")); + populateManager(submenuManager, createChildActions, null); + menuManager.insertBefore("edit", submenuManager); + + submenuManager = new MenuManager(PetrinetEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item")); + populateManager(submenuManager, createSiblingActions, null); + menuManager.insertBefore("edit", submenuManager); + } + + /** + * This inserts global actions before the "additions-end" separator. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void addGlobalActions(IMenuManager menuManager) { + menuManager.insertAfter("additions-end", new Separator("ui-actions")); + menuManager.insertAfter("ui-actions", showPropertiesViewAction); + + refreshViewerAction.setEnabled(refreshViewerAction.isEnabled()); + menuManager.insertAfter("ui-actions", refreshViewerAction); + + super.addGlobalActions(menuManager); + } + + /** + * This ensures that a delete action will clean up all references to deleted objects. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean removeAllReferencesOnDelete() { + return true; + } + +} diff --git a/metamodel/swt.most.petrinet.editor/src-gen/swt/most/petrinet/presentation/PetrinetEditor.java b/metamodel/swt.most.petrinet.editor/src-gen/swt/most/petrinet/presentation/PetrinetEditor.java new file mode 100644 index 0000000000000000000000000000000000000000..32669ff88f01e9fdee3379865eed40e104adebbd --- /dev/null +++ b/metamodel/swt.most.petrinet.editor/src-gen/swt/most/petrinet/presentation/PetrinetEditor.java @@ -0,0 +1,1775 @@ +/** + */ +package swt.most.petrinet.presentation; + +import java.io.IOException; +import java.io.InputStream; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.EventObject; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IMarker; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IResourceChangeEvent; +import org.eclipse.core.resources.IResourceChangeListener; +import org.eclipse.core.resources.IResourceDelta; +import org.eclipse.core.resources.IResourceDeltaVisitor; +import org.eclipse.core.resources.ResourcesPlugin; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.NullProgressMonitor; + +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IStatusLineManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; + +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.dialogs.ProgressMonitorDialog; + +import org.eclipse.jface.util.LocalSelectionTransfer; + +import org.eclipse.jface.viewers.ColumnWeightData; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.ListViewer; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.viewers.StructuredViewer; +import org.eclipse.jface.viewers.TableLayout; +import org.eclipse.jface.viewers.TableViewer; +import org.eclipse.jface.viewers.TreeViewer; +import org.eclipse.jface.viewers.Viewer; + +import org.eclipse.swt.SWT; + +import org.eclipse.swt.custom.CTabFolder; + +import org.eclipse.swt.dnd.DND; +import org.eclipse.swt.dnd.FileTransfer; +import org.eclipse.swt.dnd.Transfer; + +import org.eclipse.swt.events.ControlAdapter; +import org.eclipse.swt.events.ControlEvent; + +import org.eclipse.swt.graphics.Point; +import org.eclipse.swt.graphics.Rectangle; + +import org.eclipse.swt.layout.FillLayout; + +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Menu; +import org.eclipse.swt.widgets.Table; +import org.eclipse.swt.widgets.TableColumn; +import org.eclipse.swt.widgets.Tree; +import org.eclipse.swt.widgets.TreeColumn; + +import org.eclipse.ui.IActionBars; +import org.eclipse.ui.IEditorInput; +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.IEditorSite; +import org.eclipse.ui.IPartListener; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.PartInitException; + +import org.eclipse.ui.dialogs.SaveAsDialog; + +import org.eclipse.ui.ide.IGotoMarker; + +import org.eclipse.ui.part.FileEditorInput; +import org.eclipse.ui.part.MultiPageEditorPart; + +import org.eclipse.ui.views.contentoutline.ContentOutline; +import org.eclipse.ui.views.contentoutline.ContentOutlinePage; +import org.eclipse.ui.views.contentoutline.IContentOutlinePage; + +import org.eclipse.ui.views.properties.IPropertySheetPage; +import org.eclipse.ui.views.properties.PropertySheet; +import org.eclipse.ui.views.properties.PropertySheetPage; + +import org.eclipse.emf.common.command.BasicCommandStack; +import org.eclipse.emf.common.command.Command; +import org.eclipse.emf.common.command.CommandStack; +import org.eclipse.emf.common.command.CommandStackListener; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.common.ui.MarkerHelper; +import org.eclipse.emf.common.ui.ViewerPane; + +import org.eclipse.emf.common.ui.editor.ProblemEditorPart; + +import org.eclipse.emf.common.ui.viewer.IViewerProvider; + +import org.eclipse.emf.common.util.BasicDiagnostic; +import org.eclipse.emf.common.util.Diagnostic; +import org.eclipse.emf.common.util.URI; + +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; + +import org.eclipse.emf.ecore.util.EContentAdapter; +import org.eclipse.emf.ecore.util.EcoreUtil; + +import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.edit.domain.IEditingDomainProvider; + +import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator; +import org.eclipse.emf.edit.provider.ComposedAdapterFactory; +import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory; + +import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory; + +import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor; + +import org.eclipse.emf.edit.ui.celleditor.AdapterFactoryTreeEditor; + +import org.eclipse.emf.edit.ui.dnd.EditingDomainViewerDropAdapter; +import org.eclipse.emf.edit.ui.dnd.LocalTransfer; +import org.eclipse.emf.edit.ui.dnd.ViewerDragAdapter; + +import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider; +import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider; +import org.eclipse.emf.edit.ui.provider.UnwrappingSelectionProvider; + +import org.eclipse.emf.edit.ui.util.EditUIMarkerHelper; +import org.eclipse.emf.edit.ui.util.EditUIUtil; + +import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage; + +import swt.most.petrinet.provider.PetrinetItemProviderAdapterFactory; + +import org.eclipse.ui.actions.WorkspaceModifyOperation; + +/** + * This is an example of a Petrinet model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class PetrinetEditor extends MultiPageEditorPart + implements IEditingDomainProvider, ISelectionProvider, IMenuListener, IViewerProvider, IGotoMarker { + /** + * This keeps track of the editing domain that is used to track all changes to the model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected AdapterFactoryEditingDomain editingDomain; + + /** + * This is the one adapter factory used for providing views of the model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ComposedAdapterFactory adapterFactory; + + /** + * This is the content outline page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IContentOutlinePage contentOutlinePage; + + /** + * This is a kludge... + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IStatusLineManager contentOutlineStatusLineManager; + + /** + * This is the content outline page's viewer. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer contentOutlineViewer; + + /** + * This is the property sheet page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected List<PropertySheetPage> propertySheetPages = new ArrayList<PropertySheetPage>(); + + /** + * This is the viewer that shadows the selection in the content outline. + * The parent relation must be correctly defined for this to work. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer selectionViewer; + + /** + * This inverts the roll of parent and child in the content provider and show parents as a tree. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer parentViewer; + + /** + * This shows how a tree view works. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer treeViewer; + + /** + * This shows how a list view works. + * A list viewer doesn't support icons. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ListViewer listViewer; + + /** + * This shows how a table view works. + * A table can be used as a list with icons. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TableViewer tableViewer; + + /** + * This shows how a tree view with columns works. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer treeViewerWithColumns; + + /** + * This keeps track of the active viewer pane, in the book. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ViewerPane currentViewerPane; + + /** + * This keeps track of the active content viewer, which may be either one of the viewers in the pages or the content outline viewer. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Viewer currentViewer; + + /** + * This listens to which ever viewer is active. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ISelectionChangedListener selectionChangedListener; + + /** + * This keeps track of all the {@link org.eclipse.jface.viewers.ISelectionChangedListener}s that are listening to this editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<ISelectionChangedListener> selectionChangedListeners = new ArrayList<ISelectionChangedListener>(); + + /** + * This keeps track of the selection of the editor as a whole. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ISelection editorSelection = StructuredSelection.EMPTY; + + /** + * The MarkerHelper is responsible for creating workspace resource markers presented + * in Eclipse's Problems View. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected MarkerHelper markerHelper = new EditUIMarkerHelper(); + + /** + * This listens for when the outline becomes active + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IPartListener partListener = new IPartListener() { + public void partActivated(IWorkbenchPart p) { + if (p instanceof ContentOutline) { + if (((ContentOutline) p).getCurrentPage() == contentOutlinePage) { + getActionBarContributor().setActiveEditor(PetrinetEditor.this); + + setCurrentViewer(contentOutlineViewer); + } + } else if (p instanceof PropertySheet) { + if (propertySheetPages.contains(((PropertySheet) p).getCurrentPage())) { + getActionBarContributor().setActiveEditor(PetrinetEditor.this); + handleActivate(); + } + } else if (p == PetrinetEditor.this) { + handleActivate(); + } + } + + public void partBroughtToTop(IWorkbenchPart p) { + // Ignore. + } + + public void partClosed(IWorkbenchPart p) { + // Ignore. + } + + public void partDeactivated(IWorkbenchPart p) { + // Ignore. + } + + public void partOpened(IWorkbenchPart p) { + // Ignore. + } + }; + + /** + * Resources that have been removed since last activation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Resource> removedResources = new ArrayList<Resource>(); + + /** + * Resources that have been changed since last activation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Resource> changedResources = new ArrayList<Resource>(); + + /** + * Resources that have been saved. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Resource> savedResources = new ArrayList<Resource>(); + + /** + * Map to store the diagnostic associated with a resource. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Map<Resource, Diagnostic> resourceToDiagnosticMap = new LinkedHashMap<Resource, Diagnostic>(); + + /** + * Controls whether the problem indication should be updated. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean updateProblemIndication = true; + + /** + * Adapter used to update the problem indication when resources are demanded loaded. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected EContentAdapter problemIndicationAdapter = new EContentAdapter() { + protected boolean dispatching; + + @Override + public void notifyChanged(Notification notification) { + if (notification.getNotifier() instanceof Resource) { + switch (notification.getFeatureID(Resource.class)) { + case Resource.RESOURCE__IS_LOADED: + case Resource.RESOURCE__ERRORS: + case Resource.RESOURCE__WARNINGS: { + Resource resource = (Resource) notification.getNotifier(); + Diagnostic diagnostic = analyzeResourceProblems(resource, null); + if (diagnostic.getSeverity() != Diagnostic.OK) { + resourceToDiagnosticMap.put(resource, diagnostic); + } else { + resourceToDiagnosticMap.remove(resource); + } + dispatchUpdateProblemIndication(); + break; + } + } + } else { + super.notifyChanged(notification); + } + } + + protected void dispatchUpdateProblemIndication() { + if (updateProblemIndication && !dispatching) { + dispatching = true; + getSite().getShell().getDisplay().asyncExec(new Runnable() { + public void run() { + dispatching = false; + updateProblemIndication(); + } + }); + } + } + + @Override + protected void setTarget(Resource target) { + basicSetTarget(target); + } + + @Override + protected void unsetTarget(Resource target) { + basicUnsetTarget(target); + resourceToDiagnosticMap.remove(target); + dispatchUpdateProblemIndication(); + } + }; + + /** + * This listens for workspace changes. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IResourceChangeListener resourceChangeListener = new IResourceChangeListener() { + public void resourceChanged(IResourceChangeEvent event) { + IResourceDelta delta = event.getDelta(); + try { + class ResourceDeltaVisitor implements IResourceDeltaVisitor { + protected ResourceSet resourceSet = editingDomain.getResourceSet(); + protected Collection<Resource> changedResources = new ArrayList<Resource>(); + protected Collection<Resource> removedResources = new ArrayList<Resource>(); + + public boolean visit(IResourceDelta delta) { + if (delta.getResource().getType() == IResource.FILE) { + if (delta.getKind() == IResourceDelta.REMOVED || delta.getKind() == IResourceDelta.CHANGED + && delta.getFlags() != IResourceDelta.MARKERS) { + Resource resource = resourceSet.getResource( + URI.createPlatformResourceURI(delta.getFullPath().toString(), true), false); + if (resource != null) { + if (delta.getKind() == IResourceDelta.REMOVED) { + removedResources.add(resource); + } else if (!savedResources.remove(resource)) { + changedResources.add(resource); + } + } + } + return false; + } + + return true; + } + + public Collection<Resource> getChangedResources() { + return changedResources; + } + + public Collection<Resource> getRemovedResources() { + return removedResources; + } + } + + final ResourceDeltaVisitor visitor = new ResourceDeltaVisitor(); + delta.accept(visitor); + + if (!visitor.getRemovedResources().isEmpty()) { + getSite().getShell().getDisplay().asyncExec(new Runnable() { + public void run() { + removedResources.addAll(visitor.getRemovedResources()); + if (!isDirty()) { + getSite().getPage().closeEditor(PetrinetEditor.this, false); + } + } + }); + } + + if (!visitor.getChangedResources().isEmpty()) { + getSite().getShell().getDisplay().asyncExec(new Runnable() { + public void run() { + changedResources.addAll(visitor.getChangedResources()); + if (getSite().getPage().getActiveEditor() == PetrinetEditor.this) { + handleActivate(); + } + } + }); + } + } catch (CoreException exception) { + PetrinetEditorPlugin.INSTANCE.log(exception); + } + } + }; + + /** + * Handles activation of the editor or it's associated views. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void handleActivate() { + // Recompute the read only state. + // + if (editingDomain.getResourceToReadOnlyMap() != null) { + editingDomain.getResourceToReadOnlyMap().clear(); + + // Refresh any actions that may become enabled or disabled. + // + setSelection(getSelection()); + } + + if (!removedResources.isEmpty()) { + if (handleDirtyConflict()) { + getSite().getPage().closeEditor(PetrinetEditor.this, false); + } else { + removedResources.clear(); + changedResources.clear(); + savedResources.clear(); + } + } else if (!changedResources.isEmpty()) { + changedResources.removeAll(savedResources); + handleChangedResources(); + changedResources.clear(); + savedResources.clear(); + } + } + + /** + * Handles what to do with changed resources on activation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void handleChangedResources() { + if (!changedResources.isEmpty() && (!isDirty() || handleDirtyConflict())) { + ResourceSet resourceSet = editingDomain.getResourceSet(); + if (isDirty()) { + changedResources.addAll(resourceSet.getResources()); + } + editingDomain.getCommandStack().flush(); + + updateProblemIndication = false; + for (Resource resource : changedResources) { + if (resource.isLoaded()) { + resource.unload(); + try { + resource.load(resourceSet.getLoadOptions()); + } catch (IOException exception) { + if (!resourceToDiagnosticMap.containsKey(resource)) { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + } + } + } + + if (AdapterFactoryEditingDomain.isStale(editorSelection)) { + setSelection(StructuredSelection.EMPTY); + } + + updateProblemIndication = true; + updateProblemIndication(); + } + } + + /** + * Updates the problems indication with the information described in the specified diagnostic. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void updateProblemIndication() { + if (updateProblemIndication) { + BasicDiagnostic diagnostic = new BasicDiagnostic(Diagnostic.OK, "swt.most.petrinet.editor", 0, null, + new Object[] { editingDomain.getResourceSet() }); + for (Diagnostic childDiagnostic : resourceToDiagnosticMap.values()) { + if (childDiagnostic.getSeverity() != Diagnostic.OK) { + diagnostic.add(childDiagnostic); + } + } + + int lastEditorPage = getPageCount() - 1; + if (lastEditorPage >= 0 && getEditor(lastEditorPage) instanceof ProblemEditorPart) { + ((ProblemEditorPart) getEditor(lastEditorPage)).setDiagnostic(diagnostic); + if (diagnostic.getSeverity() != Diagnostic.OK) { + setActivePage(lastEditorPage); + } + } else if (diagnostic.getSeverity() != Diagnostic.OK) { + ProblemEditorPart problemEditorPart = new ProblemEditorPart(); + problemEditorPart.setDiagnostic(diagnostic); + problemEditorPart.setMarkerHelper(markerHelper); + try { + addPage(++lastEditorPage, problemEditorPart, getEditorInput()); + setPageText(lastEditorPage, problemEditorPart.getPartName()); + setActivePage(lastEditorPage); + showTabs(); + } catch (PartInitException exception) { + PetrinetEditorPlugin.INSTANCE.log(exception); + } + } + + if (markerHelper.hasMarkers(editingDomain.getResourceSet())) { + try { + markerHelper.updateMarkers(diagnostic); + } catch (CoreException exception) { + PetrinetEditorPlugin.INSTANCE.log(exception); + } + } + } + } + + /** + * Shows a dialog that asks if conflicting changes should be discarded. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean handleDirtyConflict() { + return MessageDialog.openQuestion(getSite().getShell(), getString("_UI_FileConflict_label"), + getString("_WARN_FileConflict")); + } + + /** + * This creates a model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public PetrinetEditor() { + super(); + initializeEditingDomain(); + } + + /** + * This sets up the editing domain for the model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void initializeEditingDomain() { + // Create an adapter factory that yields item providers. + // + adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE); + + adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new PetrinetItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory()); + + // Create the command stack that will notify this editor as commands are executed. + // + BasicCommandStack commandStack = new BasicCommandStack(); + + // Add a listener to set the most recent command's affected objects to be the selection of the viewer with focus. + // + commandStack.addCommandStackListener(new CommandStackListener() { + public void commandStackChanged(final EventObject event) { + getContainer().getDisplay().asyncExec(new Runnable() { + public void run() { + firePropertyChange(IEditorPart.PROP_DIRTY); + + // Try to select the affected objects. + // + Command mostRecentCommand = ((CommandStack) event.getSource()).getMostRecentCommand(); + if (mostRecentCommand != null) { + setSelectionToViewer(mostRecentCommand.getAffectedObjects()); + } + for (Iterator<PropertySheetPage> i = propertySheetPages.iterator(); i.hasNext();) { + PropertySheetPage propertySheetPage = i.next(); + if (propertySheetPage.getControl() == null || propertySheetPage.getControl().isDisposed()) { + i.remove(); + } else { + propertySheetPage.refresh(); + } + } + } + }); + } + }); + + // Create the editing domain with a special command stack. + // + editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new HashMap<Resource, Boolean>()); + } + + /** + * This is here for the listener to be able to call it. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void firePropertyChange(int action) { + super.firePropertyChange(action); + } + + /** + * This sets the selection into whichever viewer is active. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setSelectionToViewer(Collection<?> collection) { + final Collection<?> theSelection = collection; + // Make sure it's okay. + // + if (theSelection != null && !theSelection.isEmpty()) { + Runnable runnable = new Runnable() { + public void run() { + // Try to select the items in the current content viewer of the editor. + // + if (currentViewer != null) { + currentViewer.setSelection(new StructuredSelection(theSelection.toArray()), true); + } + } + }; + getSite().getShell().getDisplay().asyncExec(runnable); + } + } + + /** + * This returns the editing domain as required by the {@link IEditingDomainProvider} interface. + * This is important for implementing the static methods of {@link AdapterFactoryEditingDomain} + * and for supporting {@link org.eclipse.emf.edit.ui.action.CommandAction}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EditingDomain getEditingDomain() { + return editingDomain; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public class ReverseAdapterFactoryContentProvider extends AdapterFactoryContentProvider { + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ReverseAdapterFactoryContentProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object[] getElements(Object object) { + Object parent = super.getParent(object); + return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object[] getChildren(Object object) { + Object parent = super.getParent(object); + return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean hasChildren(Object object) { + Object parent = super.getParent(object); + return parent != null; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getParent(Object object) { + return null; + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setCurrentViewerPane(ViewerPane viewerPane) { + if (currentViewerPane != viewerPane) { + if (currentViewerPane != null) { + currentViewerPane.showFocus(false); + } + currentViewerPane = viewerPane; + } + setCurrentViewer(currentViewerPane.getViewer()); + } + + /** + * This makes sure that one content viewer, either for the current page or the outline view, if it has focus, + * is the current one. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setCurrentViewer(Viewer viewer) { + // If it is changing... + // + if (currentViewer != viewer) { + if (selectionChangedListener == null) { + // Create the listener on demand. + // + selectionChangedListener = new ISelectionChangedListener() { + // This just notifies those things that are affected by the section. + // + public void selectionChanged(SelectionChangedEvent selectionChangedEvent) { + setSelection(selectionChangedEvent.getSelection()); + } + }; + } + + // Stop listening to the old one. + // + if (currentViewer != null) { + currentViewer.removeSelectionChangedListener(selectionChangedListener); + } + + // Start listening to the new one. + // + if (viewer != null) { + viewer.addSelectionChangedListener(selectionChangedListener); + } + + // Remember it. + // + currentViewer = viewer; + + // Set the editors selection based on the current viewer's selection. + // + setSelection(currentViewer == null ? StructuredSelection.EMPTY : currentViewer.getSelection()); + } + } + + /** + * This returns the viewer as required by the {@link IViewerProvider} interface. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Viewer getViewer() { + return currentViewer; + } + + /** + * This creates a context menu for the viewer and adds a listener as well registering the menu for extension. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void createContextMenuFor(StructuredViewer viewer) { + MenuManager contextMenu = new MenuManager("#PopUp"); + contextMenu.add(new Separator("additions")); + contextMenu.setRemoveAllWhenShown(true); + contextMenu.addMenuListener(this); + Menu menu = contextMenu.createContextMenu(viewer.getControl()); + viewer.getControl().setMenu(menu); + getSite().registerContextMenu(contextMenu, new UnwrappingSelectionProvider(viewer)); + + int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK; + Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance(), LocalSelectionTransfer.getTransfer(), + FileTransfer.getInstance() }; + viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer)); + viewer.addDropSupport(dndOperations, transfers, new EditingDomainViewerDropAdapter(editingDomain, viewer)); + } + + /** + * This is the method called to load a resource into the editing domain's resource set based on the editor's input. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void createModel() { + URI resourceURI = EditUIUtil.getURI(getEditorInput(), editingDomain.getResourceSet().getURIConverter()); + Exception exception = null; + Resource resource = null; + try { + // Load the resource through the editing domain. + // + resource = editingDomain.getResourceSet().getResource(resourceURI, true); + } catch (Exception e) { + exception = e; + resource = editingDomain.getResourceSet().getResource(resourceURI, false); + } + + Diagnostic diagnostic = analyzeResourceProblems(resource, exception); + if (diagnostic.getSeverity() != Diagnostic.OK) { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + editingDomain.getResourceSet().eAdapters().add(problemIndicationAdapter); + } + + /** + * Returns a diagnostic describing the errors and warnings listed in the resource + * and the specified exception (if any). + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Diagnostic analyzeResourceProblems(Resource resource, Exception exception) { + boolean hasErrors = !resource.getErrors().isEmpty(); + if (hasErrors || !resource.getWarnings().isEmpty()) { + BasicDiagnostic basicDiagnostic = new BasicDiagnostic(hasErrors ? Diagnostic.ERROR : Diagnostic.WARNING, + "swt.most.petrinet.editor", 0, getString("_UI_CreateModelError_message", resource.getURI()), + new Object[] { exception == null ? (Object) resource : exception }); + basicDiagnostic.merge(EcoreUtil.computeDiagnostic(resource, true)); + return basicDiagnostic; + } else if (exception != null) { + return new BasicDiagnostic(Diagnostic.ERROR, "swt.most.petrinet.editor", 0, + getString("_UI_CreateModelError_message", resource.getURI()), new Object[] { exception }); + } else { + return Diagnostic.OK_INSTANCE; + } + } + + /** + * This is the method used by the framework to install your own controls. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void createPages() { + // Creates the model from the editor input + // + createModel(); + + // Only creates the other pages if there is something that can be edited + // + if (!getEditingDomain().getResourceSet().getResources().isEmpty()) { + // Create a page for the selection tree view. + // + { + ViewerPane viewerPane = new ViewerPane(getSite().getPage(), PetrinetEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + Tree tree = new Tree(composite, SWT.MULTI); + TreeViewer newTreeViewer = new TreeViewer(tree); + return newTreeViewer; + } + + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + + selectionViewer = (TreeViewer) viewerPane.getViewer(); + selectionViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + selectionViewer.setUseHashlookup(true); + + selectionViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + selectionViewer.setInput(editingDomain.getResourceSet()); + selectionViewer.setSelection( + new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true); + viewerPane.setTitle(editingDomain.getResourceSet()); + + new AdapterFactoryTreeEditor(selectionViewer.getTree(), adapterFactory); + + createContextMenuFor(selectionViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_SelectionPage_label")); + } + + // Create a page for the parent tree view. + // + { + ViewerPane viewerPane = new ViewerPane(getSite().getPage(), PetrinetEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + Tree tree = new Tree(composite, SWT.MULTI); + TreeViewer newTreeViewer = new TreeViewer(tree); + return newTreeViewer; + } + + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + + parentViewer = (TreeViewer) viewerPane.getViewer(); + parentViewer.setAutoExpandLevel(30); + parentViewer.setContentProvider(new ReverseAdapterFactoryContentProvider(adapterFactory)); + parentViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(parentViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_ParentPage_label")); + } + + // This is the page for the list viewer + // + { + ViewerPane viewerPane = new ViewerPane(getSite().getPage(), PetrinetEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new ListViewer(composite); + } + + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + listViewer = (ListViewer) viewerPane.getViewer(); + listViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + listViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(listViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_ListPage_label")); + } + + // This is the page for the tree viewer + // + { + ViewerPane viewerPane = new ViewerPane(getSite().getPage(), PetrinetEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new TreeViewer(composite); + } + + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + treeViewer = (TreeViewer) viewerPane.getViewer(); + treeViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + treeViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + new AdapterFactoryTreeEditor(treeViewer.getTree(), adapterFactory); + + createContextMenuFor(treeViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_TreePage_label")); + } + + // This is the page for the table viewer. + // + { + ViewerPane viewerPane = new ViewerPane(getSite().getPage(), PetrinetEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new TableViewer(composite); + } + + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + tableViewer = (TableViewer) viewerPane.getViewer(); + + Table table = tableViewer.getTable(); + TableLayout layout = new TableLayout(); + table.setLayout(layout); + table.setHeaderVisible(true); + table.setLinesVisible(true); + + TableColumn objectColumn = new TableColumn(table, SWT.NONE); + layout.addColumnData(new ColumnWeightData(3, 100, true)); + objectColumn.setText(getString("_UI_ObjectColumn_label")); + objectColumn.setResizable(true); + + TableColumn selfColumn = new TableColumn(table, SWT.NONE); + layout.addColumnData(new ColumnWeightData(2, 100, true)); + selfColumn.setText(getString("_UI_SelfColumn_label")); + selfColumn.setResizable(true); + + tableViewer.setColumnProperties(new String[] { "a", "b" }); + tableViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + tableViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(tableViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_TablePage_label")); + } + + // This is the page for the table tree viewer. + // + { + ViewerPane viewerPane = new ViewerPane(getSite().getPage(), PetrinetEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new TreeViewer(composite); + } + + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + + treeViewerWithColumns = (TreeViewer) viewerPane.getViewer(); + + Tree tree = treeViewerWithColumns.getTree(); + tree.setLayoutData(new FillLayout()); + tree.setHeaderVisible(true); + tree.setLinesVisible(true); + + TreeColumn objectColumn = new TreeColumn(tree, SWT.NONE); + objectColumn.setText(getString("_UI_ObjectColumn_label")); + objectColumn.setResizable(true); + objectColumn.setWidth(250); + + TreeColumn selfColumn = new TreeColumn(tree, SWT.NONE); + selfColumn.setText(getString("_UI_SelfColumn_label")); + selfColumn.setResizable(true); + selfColumn.setWidth(200); + + treeViewerWithColumns.setColumnProperties(new String[] { "a", "b" }); + treeViewerWithColumns.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + treeViewerWithColumns.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(treeViewerWithColumns); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_TreeWithColumnsPage_label")); + } + + getSite().getShell().getDisplay().asyncExec(new Runnable() { + public void run() { + if (!getContainer().isDisposed()) { + setActivePage(0); + } + } + }); + } + + // Ensures that this editor will only display the page's tab + // area if there are more than one page + // + getContainer().addControlListener(new ControlAdapter() { + boolean guard = false; + + @Override + public void controlResized(ControlEvent event) { + if (!guard) { + guard = true; + hideTabs(); + guard = false; + } + } + }); + + getSite().getShell().getDisplay().asyncExec(new Runnable() { + public void run() { + updateProblemIndication(); + } + }); + } + + /** + * If there is just one page in the multi-page editor part, + * this hides the single tab at the bottom. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void hideTabs() { + if (getPageCount() <= 1) { + setPageText(0, ""); + if (getContainer() instanceof CTabFolder) { + Point point = getContainer().getSize(); + Rectangle clientArea = getContainer().getClientArea(); + getContainer().setSize(point.x, 2 * point.y - clientArea.height - clientArea.y); + } + } + } + + /** + * If there is more than one page in the multi-page editor part, + * this shows the tabs at the bottom. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void showTabs() { + if (getPageCount() > 1) { + setPageText(0, getString("_UI_SelectionPage_label")); + if (getContainer() instanceof CTabFolder) { + Point point = getContainer().getSize(); + Rectangle clientArea = getContainer().getClientArea(); + getContainer().setSize(point.x, clientArea.height + clientArea.y); + } + } + } + + /** + * This is used to track the active viewer. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void pageChange(int pageIndex) { + super.pageChange(pageIndex); + + if (contentOutlinePage != null) { + handleContentOutlineSelection(contentOutlinePage.getSelection()); + } + } + + /** + * This is how the framework determines which interfaces we implement. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public <T> T getAdapter(Class<T> key) { + if (key.equals(IContentOutlinePage.class)) { + return showOutlineView() ? key.cast(getContentOutlinePage()) : null; + } else if (key.equals(IPropertySheetPage.class)) { + return key.cast(getPropertySheetPage()); + } else if (key.equals(IGotoMarker.class)) { + return key.cast(this); + } else { + return super.getAdapter(key); + } + } + + /** + * This accesses a cached version of the content outliner. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IContentOutlinePage getContentOutlinePage() { + if (contentOutlinePage == null) { + // The content outline is just a tree. + // + class MyContentOutlinePage extends ContentOutlinePage { + @Override + public void createControl(Composite parent) { + super.createControl(parent); + contentOutlineViewer = getTreeViewer(); + contentOutlineViewer.addSelectionChangedListener(this); + + // Set up the tree viewer. + // + contentOutlineViewer.setUseHashlookup(true); + contentOutlineViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + contentOutlineViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + contentOutlineViewer.setInput(editingDomain.getResourceSet()); + + // Make sure our popups work. + // + createContextMenuFor(contentOutlineViewer); + + if (!editingDomain.getResourceSet().getResources().isEmpty()) { + // Select the root object in the view. + // + contentOutlineViewer.setSelection( + new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true); + } + } + + @Override + public void makeContributions(IMenuManager menuManager, IToolBarManager toolBarManager, + IStatusLineManager statusLineManager) { + super.makeContributions(menuManager, toolBarManager, statusLineManager); + contentOutlineStatusLineManager = statusLineManager; + } + + @Override + public void setActionBars(IActionBars actionBars) { + super.setActionBars(actionBars); + getActionBarContributor().shareGlobalActions(this, actionBars); + } + } + + contentOutlinePage = new MyContentOutlinePage(); + + // Listen to selection so that we can handle it is a special way. + // + contentOutlinePage.addSelectionChangedListener(new ISelectionChangedListener() { + // This ensures that we handle selections correctly. + // + public void selectionChanged(SelectionChangedEvent event) { + handleContentOutlineSelection(event.getSelection()); + } + }); + } + + return contentOutlinePage; + } + + /** + * This accesses a cached version of the property sheet. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IPropertySheetPage getPropertySheetPage() { + PropertySheetPage propertySheetPage = new ExtendedPropertySheetPage(editingDomain, + ExtendedPropertySheetPage.Decoration.NONE, null, 0, false) { + @Override + public void setSelectionToViewer(List<?> selection) { + PetrinetEditor.this.setSelectionToViewer(selection); + PetrinetEditor.this.setFocus(); + } + + @Override + public void setActionBars(IActionBars actionBars) { + super.setActionBars(actionBars); + getActionBarContributor().shareGlobalActions(this, actionBars); + } + }; + propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory)); + propertySheetPages.add(propertySheetPage); + + return propertySheetPage; + } + + /** + * This deals with how we want selection in the outliner to affect the other views. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void handleContentOutlineSelection(ISelection selection) { + if (currentViewerPane != null && !selection.isEmpty() && selection instanceof IStructuredSelection) { + Iterator<?> selectedElements = ((IStructuredSelection) selection).iterator(); + if (selectedElements.hasNext()) { + // Get the first selected element. + // + Object selectedElement = selectedElements.next(); + + // If it's the selection viewer, then we want it to select the same selection as this selection. + // + if (currentViewerPane.getViewer() == selectionViewer) { + ArrayList<Object> selectionList = new ArrayList<Object>(); + selectionList.add(selectedElement); + while (selectedElements.hasNext()) { + selectionList.add(selectedElements.next()); + } + + // Set the selection to the widget. + // + selectionViewer.setSelection(new StructuredSelection(selectionList)); + } else { + // Set the input to the widget. + // + if (currentViewerPane.getViewer().getInput() != selectedElement) { + currentViewerPane.getViewer().setInput(selectedElement); + currentViewerPane.setTitle(selectedElement); + } + } + } + } + } + + /** + * This is for implementing {@link IEditorPart} and simply tests the command stack. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean isDirty() { + return ((BasicCommandStack) editingDomain.getCommandStack()).isSaveNeeded(); + } + + /** + * This is for implementing {@link IEditorPart} and simply saves the model file. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void doSave(IProgressMonitor progressMonitor) { + // Save only resources that have actually changed. + // + final Map<Object, Object> saveOptions = new HashMap<Object, Object>(); + saveOptions.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED, Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER); + saveOptions.put(Resource.OPTION_LINE_DELIMITER, Resource.OPTION_LINE_DELIMITER_UNSPECIFIED); + + // Do the work within an operation because this is a long running activity that modifies the workbench. + // + WorkspaceModifyOperation operation = new WorkspaceModifyOperation() { + // This is the method that gets invoked when the operation runs. + // + @Override + public void execute(IProgressMonitor monitor) { + // Save the resources to the file system. + // + boolean first = true; + List<Resource> resources = editingDomain.getResourceSet().getResources(); + for (int i = 0; i < resources.size(); ++i) { + Resource resource = resources.get(i); + if ((first || !resource.getContents().isEmpty() || isPersisted(resource)) + && !editingDomain.isReadOnly(resource)) { + try { + long timeStamp = resource.getTimeStamp(); + resource.save(saveOptions); + if (resource.getTimeStamp() != timeStamp) { + savedResources.add(resource); + } + } catch (Exception exception) { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + first = false; + } + } + } + }; + + updateProblemIndication = false; + try { + // This runs the options, and shows progress. + // + new ProgressMonitorDialog(getSite().getShell()).run(true, false, operation); + + // Refresh the necessary state. + // + ((BasicCommandStack) editingDomain.getCommandStack()).saveIsDone(); + firePropertyChange(IEditorPart.PROP_DIRTY); + } catch (Exception exception) { + // Something went wrong that shouldn't. + // + PetrinetEditorPlugin.INSTANCE.log(exception); + } + updateProblemIndication = true; + updateProblemIndication(); + } + + /** + * This returns whether something has been persisted to the URI of the specified resource. + * The implementation uses the URI converter from the editor's resource set to try to open an input stream. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean isPersisted(Resource resource) { + boolean result = false; + try { + InputStream stream = editingDomain.getResourceSet().getURIConverter().createInputStream(resource.getURI()); + if (stream != null) { + result = true; + stream.close(); + } + } catch (IOException e) { + // Ignore + } + return result; + } + + /** + * This always returns true because it is not currently supported. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean isSaveAsAllowed() { + return true; + } + + /** + * This also changes the editor's input. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void doSaveAs() { + SaveAsDialog saveAsDialog = new SaveAsDialog(getSite().getShell()); + saveAsDialog.open(); + IPath path = saveAsDialog.getResult(); + if (path != null) { + IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path); + if (file != null) { + doSaveAs(URI.createPlatformResourceURI(file.getFullPath().toString(), true), new FileEditorInput(file)); + } + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void doSaveAs(URI uri, IEditorInput editorInput) { + (editingDomain.getResourceSet().getResources().get(0)).setURI(uri); + setInputWithNotify(editorInput); + setPartName(editorInput.getName()); + IProgressMonitor progressMonitor = getActionBars().getStatusLineManager() != null + ? getActionBars().getStatusLineManager().getProgressMonitor() + : new NullProgressMonitor(); + doSave(progressMonitor); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void gotoMarker(IMarker marker) { + List<?> targetObjects = markerHelper.getTargetObjects(editingDomain, marker); + if (!targetObjects.isEmpty()) { + setSelectionToViewer(targetObjects); + } + } + + /** + * This is called during startup. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void init(IEditorSite site, IEditorInput editorInput) { + setSite(site); + setInputWithNotify(editorInput); + setPartName(editorInput.getName()); + site.setSelectionProvider(this); + site.getPage().addPartListener(partListener); + ResourcesPlugin.getWorkspace().addResourceChangeListener(resourceChangeListener, + IResourceChangeEvent.POST_CHANGE); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setFocus() { + if (currentViewerPane != null) { + currentViewerPane.setFocus(); + } else { + getControl(getActivePage()).setFocus(); + } + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void addSelectionChangedListener(ISelectionChangedListener listener) { + selectionChangedListeners.add(listener); + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void removeSelectionChangedListener(ISelectionChangedListener listener) { + selectionChangedListeners.remove(listener); + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to return this editor's overall selection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ISelection getSelection() { + return editorSelection; + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to set this editor's overall selection. + * Calling this result will notify the listeners. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setSelection(ISelection selection) { + editorSelection = selection; + + for (ISelectionChangedListener listener : selectionChangedListeners) { + listener.selectionChanged(new SelectionChangedEvent(this, selection)); + } + setStatusLineManager(selection); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setStatusLineManager(ISelection selection) { + IStatusLineManager statusLineManager = currentViewer != null && currentViewer == contentOutlineViewer + ? contentOutlineStatusLineManager + : getActionBars().getStatusLineManager(); + + if (statusLineManager != null) { + if (selection instanceof IStructuredSelection) { + Collection<?> collection = ((IStructuredSelection) selection).toList(); + switch (collection.size()) { + case 0: { + statusLineManager.setMessage(getString("_UI_NoObjectSelected")); + break; + } + case 1: { + String text = new AdapterFactoryItemDelegator(adapterFactory).getText(collection.iterator().next()); + statusLineManager.setMessage(getString("_UI_SingleObjectSelected", text)); + break; + } + default: { + statusLineManager + .setMessage(getString("_UI_MultiObjectSelected", Integer.toString(collection.size()))); + break; + } + } + } else { + statusLineManager.setMessage(""); + } + } + } + + /** + * This looks up a string in the plugin's plugin.properties file. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private static String getString(String key) { + return PetrinetEditorPlugin.INSTANCE.getString(key); + } + + /** + * This looks up a string in plugin.properties, making a substitution. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private static String getString(String key, Object s1) { + return PetrinetEditorPlugin.INSTANCE.getString(key, new Object[] { s1 }); + } + + /** + * This implements {@link org.eclipse.jface.action.IMenuListener} to help fill the context menus with contributions from the Edit menu. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void menuAboutToShow(IMenuManager menuManager) { + ((IMenuListener) getEditorSite().getActionBarContributor()).menuAboutToShow(menuManager); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EditingDomainActionBarContributor getActionBarContributor() { + return (EditingDomainActionBarContributor) getEditorSite().getActionBarContributor(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IActionBars getActionBars() { + return getActionBarContributor().getActionBars(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public AdapterFactory getAdapterFactory() { + return adapterFactory; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void dispose() { + updateProblemIndication = false; + + ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceChangeListener); + + getSite().getPage().removePartListener(partListener); + + adapterFactory.dispose(); + + if (getActionBarContributor().getActiveEditor() == this) { + getActionBarContributor().setActiveEditor(null); + } + + for (PropertySheetPage propertySheetPage : propertySheetPages) { + propertySheetPage.dispose(); + } + + if (contentOutlinePage != null) { + contentOutlinePage.dispose(); + } + + super.dispose(); + } + + /** + * Returns whether the outline view should be presented to the user. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean showOutlineView() { + return true; + } +} diff --git a/metamodel/swt.most.petrinet.editor/src-gen/swt/most/petrinet/presentation/PetrinetEditorPlugin.java b/metamodel/swt.most.petrinet.editor/src-gen/swt/most/petrinet/presentation/PetrinetEditorPlugin.java new file mode 100644 index 0000000000000000000000000000000000000000..7ec83fd7e79abecba139db881caa85145f791d86 --- /dev/null +++ b/metamodel/swt.most.petrinet.editor/src-gen/swt/most/petrinet/presentation/PetrinetEditorPlugin.java @@ -0,0 +1,89 @@ +/** + */ +package swt.most.petrinet.presentation; + +import org.eclipse.emf.common.EMFPlugin; + +import org.eclipse.emf.common.ui.EclipseUIPlugin; + +import org.eclipse.emf.common.util.ResourceLocator; + +/** + * This is the central singleton for the Petrinet editor plugin. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public final class PetrinetEditorPlugin extends EMFPlugin { + /** + * Keep track of the singleton. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final PetrinetEditorPlugin INSTANCE = new PetrinetEditorPlugin(); + + /** + * Keep track of the singleton. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private static Implementation plugin; + + /** + * Create the instance. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public PetrinetEditorPlugin() { + super(new ResourceLocator[] {}); + } + + /** + * Returns the singleton instance of the Eclipse plugin. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the singleton instance. + * @generated + */ + @Override + public ResourceLocator getPluginResourceLocator() { + return plugin; + } + + /** + * Returns the singleton instance of the Eclipse plugin. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the singleton instance. + * @generated + */ + public static Implementation getPlugin() { + return plugin; + } + + /** + * The actual implementation of the Eclipse <b>Plugin</b>. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static class Implementation extends EclipseUIPlugin { + /** + * Creates an instance. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Implementation() { + super(); + + // Remember the static instance. + // + plugin = this; + } + } + +} diff --git a/metamodel/swt.most.petrinet.editor/src-gen/swt/most/petrinet/presentation/PetrinetModelWizard.java b/metamodel/swt.most.petrinet.editor/src-gen/swt/most/petrinet/presentation/PetrinetModelWizard.java new file mode 100644 index 0000000000000000000000000000000000000000..ca520f33fcbe058795b97d2a34e52b005300dadb --- /dev/null +++ b/metamodel/swt.most.petrinet.editor/src-gen/swt/most/petrinet/presentation/PetrinetModelWizard.java @@ -0,0 +1,624 @@ +/** + */ +package swt.most.petrinet.presentation; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.MissingResourceException; +import java.util.StringTokenizer; + +import org.eclipse.emf.common.CommonPlugin; + +import org.eclipse.emf.common.util.URI; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EClassifier; + +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; + +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; + +import org.eclipse.emf.ecore.EObject; + +import org.eclipse.emf.ecore.xmi.XMLResource; + +import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry; + +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IFolder; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.ResourcesPlugin; + +import org.eclipse.core.runtime.IProgressMonitor; + +import org.eclipse.jface.dialogs.MessageDialog; + +import org.eclipse.jface.viewers.IStructuredSelection; + +import org.eclipse.jface.wizard.Wizard; +import org.eclipse.jface.wizard.WizardPage; + +import org.eclipse.swt.SWT; + +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.events.ModifyEvent; + +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; + +import org.eclipse.swt.widgets.Combo; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; + +import org.eclipse.ui.INewWizard; +import org.eclipse.ui.IWorkbench; + +import org.eclipse.ui.actions.WorkspaceModifyOperation; + +import org.eclipse.ui.dialogs.WizardNewFileCreationPage; + +import org.eclipse.ui.part.FileEditorInput; +import org.eclipse.ui.part.ISetSelectionTarget; + +import swt.most.petrinet.PetrinetFactory; +import swt.most.petrinet.PetrinetPackage; +import swt.most.petrinet.provider.PetrinetEditPlugin; + +import org.eclipse.core.runtime.Path; + +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; + +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.PartInitException; + +/** + * This is a simple wizard for creating a new model file. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class PetrinetModelWizard extends Wizard implements INewWizard { + /** + * The supported extensions for created files. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final List<String> FILE_EXTENSIONS = Collections.unmodifiableList(Arrays.asList( + PetrinetEditorPlugin.INSTANCE.getString("_UI_PetrinetEditorFilenameExtensions").split("\\s*,\\s*"))); + + /** + * A formatted list of supported file extensions, suitable for display. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final String FORMATTED_FILE_EXTENSIONS = PetrinetEditorPlugin.INSTANCE + .getString("_UI_PetrinetEditorFilenameExtensions").replaceAll("\\s*,\\s*", ", "); + + /** + * This caches an instance of the model package. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected PetrinetPackage petrinetPackage = PetrinetPackage.eINSTANCE; + + /** + * This caches an instance of the model factory. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected PetrinetFactory petrinetFactory = petrinetPackage.getPetrinetFactory(); + + /** + * This is the file creation page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected PetrinetModelWizardNewFileCreationPage newFileCreationPage; + + /** + * This is the initial object creation page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected PetrinetModelWizardInitialObjectCreationPage initialObjectCreationPage; + + /** + * Remember the selection during initialization for populating the default container. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IStructuredSelection selection; + + /** + * Remember the workbench during initialization. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IWorkbench workbench; + + /** + * Caches the names of the types that can be created as the root object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected List<String> initialObjectNames; + + /** + * This just records the information. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void init(IWorkbench workbench, IStructuredSelection selection) { + this.workbench = workbench; + this.selection = selection; + setWindowTitle(PetrinetEditorPlugin.INSTANCE.getString("_UI_Wizard_label")); + setDefaultPageImageDescriptor(ExtendedImageRegistry.INSTANCE + .getImageDescriptor(PetrinetEditorPlugin.INSTANCE.getImage("full/wizban/NewPetrinet"))); + } + + /** + * Returns the names of the types that can be created as the root object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<String> getInitialObjectNames() { + if (initialObjectNames == null) { + initialObjectNames = new ArrayList<String>(); + for (EClassifier eClassifier : petrinetPackage.getEClassifiers()) { + if (eClassifier instanceof EClass) { + EClass eClass = (EClass) eClassifier; + if (!eClass.isAbstract()) { + initialObjectNames.add(eClass.getName()); + } + } + } + Collections.sort(initialObjectNames, CommonPlugin.INSTANCE.getComparator()); + } + return initialObjectNames; + } + + /** + * Create a new model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected EObject createInitialModel() { + EClass eClass = (EClass) petrinetPackage.getEClassifier(initialObjectCreationPage.getInitialObjectName()); + EObject rootObject = petrinetFactory.create(eClass); + return rootObject; + } + + /** + * Do the work after everything is specified. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean performFinish() { + try { + // Remember the file. + // + final IFile modelFile = getModelFile(); + + // Do the work within an operation. + // + WorkspaceModifyOperation operation = new WorkspaceModifyOperation() { + @Override + protected void execute(IProgressMonitor progressMonitor) { + try { + // Create a resource set + // + ResourceSet resourceSet = new ResourceSetImpl(); + + // Get the URI of the model file. + // + URI fileURI = URI.createPlatformResourceURI(modelFile.getFullPath().toString(), true); + + // Create a resource for this file. + // + Resource resource = resourceSet.createResource(fileURI); + + // Add the initial model object to the contents. + // + EObject rootObject = createInitialModel(); + if (rootObject != null) { + resource.getContents().add(rootObject); + } + + // Save the contents of the resource to the file system. + // + Map<Object, Object> options = new HashMap<Object, Object>(); + options.put(XMLResource.OPTION_ENCODING, initialObjectCreationPage.getEncoding()); + resource.save(options); + } catch (Exception exception) { + PetrinetEditorPlugin.INSTANCE.log(exception); + } finally { + progressMonitor.done(); + } + } + }; + + getContainer().run(false, false, operation); + + // Select the new file resource in the current view. + // + IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow(); + IWorkbenchPage page = workbenchWindow.getActivePage(); + final IWorkbenchPart activePart = page.getActivePart(); + if (activePart instanceof ISetSelectionTarget) { + final ISelection targetSelection = new StructuredSelection(modelFile); + getShell().getDisplay().asyncExec(new Runnable() { + public void run() { + ((ISetSelectionTarget) activePart).selectReveal(targetSelection); + } + }); + } + + // Open an editor on the new file. + // + try { + page.openEditor(new FileEditorInput(modelFile), + workbench.getEditorRegistry().getDefaultEditor(modelFile.getFullPath().toString()).getId()); + } catch (PartInitException exception) { + MessageDialog.openError(workbenchWindow.getShell(), + PetrinetEditorPlugin.INSTANCE.getString("_UI_OpenEditorError_label"), exception.getMessage()); + return false; + } + + return true; + } catch (Exception exception) { + PetrinetEditorPlugin.INSTANCE.log(exception); + return false; + } + } + + /** + * This is the one page of the wizard. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public class PetrinetModelWizardNewFileCreationPage extends WizardNewFileCreationPage { + /** + * Pass in the selection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public PetrinetModelWizardNewFileCreationPage(String pageId, IStructuredSelection selection) { + super(pageId, selection); + } + + /** + * The framework calls this to see if the file is correct. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean validatePage() { + if (super.validatePage()) { + String extension = new Path(getFileName()).getFileExtension(); + if (extension == null || !FILE_EXTENSIONS.contains(extension)) { + String key = FILE_EXTENSIONS.size() > 1 ? "_WARN_FilenameExtensions" : "_WARN_FilenameExtension"; + setErrorMessage( + PetrinetEditorPlugin.INSTANCE.getString(key, new Object[] { FORMATTED_FILE_EXTENSIONS })); + return false; + } + return true; + } + return false; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IFile getModelFile() { + return ResourcesPlugin.getWorkspace().getRoot().getFile(getContainerFullPath().append(getFileName())); + } + } + + /** + * This is the page where the type of object to create is selected. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public class PetrinetModelWizardInitialObjectCreationPage extends WizardPage { + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Combo initialObjectField; + + /** + * @generated + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + */ + protected List<String> encodings; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Combo encodingField; + + /** + * Pass in the selection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public PetrinetModelWizardInitialObjectCreationPage(String pageId) { + super(pageId); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void createControl(Composite parent) { + Composite composite = new Composite(parent, SWT.NONE); + { + GridLayout layout = new GridLayout(); + layout.numColumns = 1; + layout.verticalSpacing = 12; + composite.setLayout(layout); + + GridData data = new GridData(); + data.verticalAlignment = GridData.FILL; + data.grabExcessVerticalSpace = true; + data.horizontalAlignment = GridData.FILL; + composite.setLayoutData(data); + } + + Label containerLabel = new Label(composite, SWT.LEFT); + { + containerLabel.setText(PetrinetEditorPlugin.INSTANCE.getString("_UI_ModelObject")); + + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + containerLabel.setLayoutData(data); + } + + initialObjectField = new Combo(composite, SWT.BORDER); + { + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + data.grabExcessHorizontalSpace = true; + initialObjectField.setLayoutData(data); + } + + for (String objectName : getInitialObjectNames()) { + initialObjectField.add(getLabel(objectName)); + } + + if (initialObjectField.getItemCount() == 1) { + initialObjectField.select(0); + } + initialObjectField.addModifyListener(validator); + + Label encodingLabel = new Label(composite, SWT.LEFT); + { + encodingLabel.setText(PetrinetEditorPlugin.INSTANCE.getString("_UI_XMLEncoding")); + + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + encodingLabel.setLayoutData(data); + } + encodingField = new Combo(composite, SWT.BORDER); + { + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + data.grabExcessHorizontalSpace = true; + encodingField.setLayoutData(data); + } + + for (String encoding : getEncodings()) { + encodingField.add(encoding); + } + + encodingField.select(0); + encodingField.addModifyListener(validator); + + setPageComplete(validatePage()); + setControl(composite); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ModifyListener validator = new ModifyListener() { + public void modifyText(ModifyEvent e) { + setPageComplete(validatePage()); + } + }; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean validatePage() { + return getInitialObjectName() != null && getEncodings().contains(encodingField.getText()); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setVisible(boolean visible) { + super.setVisible(visible); + if (visible) { + if (initialObjectField.getItemCount() == 1) { + initialObjectField.clearSelection(); + encodingField.setFocus(); + } else { + encodingField.clearSelection(); + initialObjectField.setFocus(); + } + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getInitialObjectName() { + String label = initialObjectField.getText(); + + for (String name : getInitialObjectNames()) { + if (getLabel(name).equals(label)) { + return name; + } + } + return null; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getEncoding() { + return encodingField.getText(); + } + + /** + * Returns the label for the specified type name. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected String getLabel(String typeName) { + try { + return PetrinetEditPlugin.INSTANCE.getString("_UI_" + typeName + "_type"); + } catch (MissingResourceException mre) { + PetrinetEditorPlugin.INSTANCE.log(mre); + } + return typeName; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<String> getEncodings() { + if (encodings == null) { + encodings = new ArrayList<String>(); + for (StringTokenizer stringTokenizer = new StringTokenizer( + PetrinetEditorPlugin.INSTANCE.getString("_UI_XMLEncodingChoices")); stringTokenizer + .hasMoreTokens();) { + encodings.add(stringTokenizer.nextToken()); + } + } + return encodings; + } + } + + /** + * The framework calls this to create the contents of the wizard. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void addPages() { + // Create a page, set the title, and the initial model file name. + // + newFileCreationPage = new PetrinetModelWizardNewFileCreationPage("Whatever", selection); + newFileCreationPage.setTitle(PetrinetEditorPlugin.INSTANCE.getString("_UI_PetrinetModelWizard_label")); + newFileCreationPage + .setDescription(PetrinetEditorPlugin.INSTANCE.getString("_UI_PetrinetModelWizard_description")); + newFileCreationPage.setFileName(PetrinetEditorPlugin.INSTANCE.getString("_UI_PetrinetEditorFilenameDefaultBase") + + "." + FILE_EXTENSIONS.get(0)); + addPage(newFileCreationPage); + + // Try and get the resource selection to determine a current directory for the file dialog. + // + if (selection != null && !selection.isEmpty()) { + // Get the resource... + // + Object selectedElement = selection.iterator().next(); + if (selectedElement instanceof IResource) { + // Get the resource parent, if its a file. + // + IResource selectedResource = (IResource) selectedElement; + if (selectedResource.getType() == IResource.FILE) { + selectedResource = selectedResource.getParent(); + } + + // This gives us a directory... + // + if (selectedResource instanceof IFolder || selectedResource instanceof IProject) { + // Set this for the container. + // + newFileCreationPage.setContainerFullPath(selectedResource.getFullPath()); + + // Make up a unique new name here. + // + String defaultModelBaseFilename = PetrinetEditorPlugin.INSTANCE + .getString("_UI_PetrinetEditorFilenameDefaultBase"); + String defaultModelFilenameExtension = FILE_EXTENSIONS.get(0); + String modelFilename = defaultModelBaseFilename + "." + defaultModelFilenameExtension; + for (int i = 1; ((IContainer) selectedResource).findMember(modelFilename) != null; ++i) { + modelFilename = defaultModelBaseFilename + i + "." + defaultModelFilenameExtension; + } + newFileCreationPage.setFileName(modelFilename); + } + } + } + initialObjectCreationPage = new PetrinetModelWizardInitialObjectCreationPage("Whatever2"); + initialObjectCreationPage.setTitle(PetrinetEditorPlugin.INSTANCE.getString("_UI_PetrinetModelWizard_label")); + initialObjectCreationPage + .setDescription(PetrinetEditorPlugin.INSTANCE.getString("_UI_Wizard_initial_object_description")); + addPage(initialObjectCreationPage); + } + + /** + * Get the file from the page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IFile getModelFile() { + return newFileCreationPage.getModelFile(); + } + +} diff --git a/metamodel/swt.most.petrinet/.classpath b/metamodel/swt.most.petrinet/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..c3f9cf33e920a2477e584487d0015da314361b97 --- /dev/null +++ b/metamodel/swt.most.petrinet/.classpath @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src-gen"/> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/metamodel/swt.most.petrinet/.project b/metamodel/swt.most.petrinet/.project new file mode 100644 index 0000000000000000000000000000000000000000..b86c38ac72f887b6a74866758535335d2d30c5db --- /dev/null +++ b/metamodel/swt.most.petrinet/.project @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>swt.most.petrinet</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.SchemaBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.sirius.nature.modelingproject</nature> + <nature>org.eclipse.jdt.core.javanature</nature> + <nature>org.eclipse.pde.PluginNature</nature> + </natures> +</projectDescription> diff --git a/metamodel/swt.most.petrinet/.settings/org.eclipse.core.resources.prefs b/metamodel/swt.most.petrinet/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000000000000000000000000000000000000..99f26c0203a7844de00dbfc56e6a35d8ed3c022c --- /dev/null +++ b/metamodel/swt.most.petrinet/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/<project>=UTF-8 diff --git a/metamodel/swt.most.petrinet/META-INF/MANIFEST.MF b/metamodel/swt.most.petrinet/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..1ec2a8765d59c7e2a6b5c3e79bed72fd95a3c3d3 --- /dev/null +++ b/metamodel/swt.most.petrinet/META-INF/MANIFEST.MF @@ -0,0 +1,16 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %pluginName +Bundle-SymbolicName: swt.most.petrinet;singleton:=true +Automatic-Module-Name: swt.most.petrinet +Bundle-Version: 0.1.0.qualifier +Bundle-ClassPath: . +Bundle-Vendor: %providerName +Bundle-Localization: plugin +Bundle-RequiredExecutionEnvironment: J2SE-1.5 +Export-Package: swt.most.petrinet, + swt.most.petrinet.impl, + swt.most.petrinet.util +Require-Bundle: org.eclipse.emf.ecore;visibility:=reexport, + org.eclipse.core.runtime +Bundle-ActivationPolicy: lazy diff --git a/metamodel/swt.most.petrinet/bin/.gitkeep b/metamodel/swt.most.petrinet/bin/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..49cc8ef0e116cef009fe0bd72473a964bbd07f9b Binary files /dev/null and b/metamodel/swt.most.petrinet/bin/.gitkeep differ diff --git a/metamodel/swt.most.petrinet/bin/swt/most/petrinet/Arc.class b/metamodel/swt.most.petrinet/bin/swt/most/petrinet/Arc.class new file mode 100644 index 0000000000000000000000000000000000000000..00ae59c08799669a1ab447e2f938a1b374a6d14b Binary files /dev/null and b/metamodel/swt.most.petrinet/bin/swt/most/petrinet/Arc.class differ diff --git a/metamodel/swt.most.petrinet/bin/swt/most/petrinet/Element.class b/metamodel/swt.most.petrinet/bin/swt/most/petrinet/Element.class new file mode 100644 index 0000000000000000000000000000000000000000..637b322e3e6b6e46772ff5d016de531f00caffe5 Binary files /dev/null and b/metamodel/swt.most.petrinet/bin/swt/most/petrinet/Element.class differ diff --git a/metamodel/swt.most.petrinet/bin/swt/most/petrinet/IncomingArc.class b/metamodel/swt.most.petrinet/bin/swt/most/petrinet/IncomingArc.class new file mode 100644 index 0000000000000000000000000000000000000000..bd1f1839a7f275569c9ea767bec33e8708a4817b Binary files /dev/null and b/metamodel/swt.most.petrinet/bin/swt/most/petrinet/IncomingArc.class differ diff --git a/metamodel/swt.most.petrinet/bin/swt/most/petrinet/OutgoingArc.class b/metamodel/swt.most.petrinet/bin/swt/most/petrinet/OutgoingArc.class new file mode 100644 index 0000000000000000000000000000000000000000..66eb1967d4046d8fa1ddedb3f45545182c903015 Binary files /dev/null and b/metamodel/swt.most.petrinet/bin/swt/most/petrinet/OutgoingArc.class differ diff --git a/metamodel/swt.most.petrinet/bin/swt/most/petrinet/PetriNet.class b/metamodel/swt.most.petrinet/bin/swt/most/petrinet/PetriNet.class new file mode 100644 index 0000000000000000000000000000000000000000..aed7b2302c7aac227ee7246bcfa46ab3d81db0ce Binary files /dev/null and b/metamodel/swt.most.petrinet/bin/swt/most/petrinet/PetriNet.class differ diff --git a/metamodel/swt.most.petrinet/bin/swt/most/petrinet/PetrinetFactory.class b/metamodel/swt.most.petrinet/bin/swt/most/petrinet/PetrinetFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..96d53a66e79c669b29a50d52958c49d31222c399 Binary files /dev/null and b/metamodel/swt.most.petrinet/bin/swt/most/petrinet/PetrinetFactory.class differ diff --git a/metamodel/swt.most.petrinet/bin/swt/most/petrinet/PetrinetPackage$Literals.class b/metamodel/swt.most.petrinet/bin/swt/most/petrinet/PetrinetPackage$Literals.class new file mode 100644 index 0000000000000000000000000000000000000000..5cd80e2699b500b2653e31d7d7b8d94f2b777845 Binary files /dev/null and b/metamodel/swt.most.petrinet/bin/swt/most/petrinet/PetrinetPackage$Literals.class differ diff --git a/metamodel/swt.most.petrinet/bin/swt/most/petrinet/PetrinetPackage.class b/metamodel/swt.most.petrinet/bin/swt/most/petrinet/PetrinetPackage.class new file mode 100644 index 0000000000000000000000000000000000000000..0d84c0522318dee3828765174b70c6e33f771469 Binary files /dev/null and b/metamodel/swt.most.petrinet/bin/swt/most/petrinet/PetrinetPackage.class differ diff --git a/metamodel/swt.most.petrinet/bin/swt/most/petrinet/Place.class b/metamodel/swt.most.petrinet/bin/swt/most/petrinet/Place.class new file mode 100644 index 0000000000000000000000000000000000000000..e4b8a377a31174eec0cbff1ddff44cf0d8a368d8 Binary files /dev/null and b/metamodel/swt.most.petrinet/bin/swt/most/petrinet/Place.class differ diff --git a/metamodel/swt.most.petrinet/bin/swt/most/petrinet/Token.class b/metamodel/swt.most.petrinet/bin/swt/most/petrinet/Token.class new file mode 100644 index 0000000000000000000000000000000000000000..9b2d9d81a034bb566b104ce742601384fdaf6466 Binary files /dev/null and b/metamodel/swt.most.petrinet/bin/swt/most/petrinet/Token.class differ diff --git a/metamodel/swt.most.petrinet/bin/swt/most/petrinet/Transition.class b/metamodel/swt.most.petrinet/bin/swt/most/petrinet/Transition.class new file mode 100644 index 0000000000000000000000000000000000000000..c3fb18a40efc988a4d4f7df6a787ce5d7884ef12 Binary files /dev/null and b/metamodel/swt.most.petrinet/bin/swt/most/petrinet/Transition.class differ diff --git a/metamodel/swt.most.petrinet/bin/swt/most/petrinet/impl/ArcImpl.class b/metamodel/swt.most.petrinet/bin/swt/most/petrinet/impl/ArcImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..2dee7b713266ee4b03d9f0c688a9356b5735b5d6 Binary files /dev/null and b/metamodel/swt.most.petrinet/bin/swt/most/petrinet/impl/ArcImpl.class differ diff --git a/metamodel/swt.most.petrinet/bin/swt/most/petrinet/impl/ElementImpl.class b/metamodel/swt.most.petrinet/bin/swt/most/petrinet/impl/ElementImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..2905ea46bd769bfa7aad5d17fb0e1bd8e85ff327 Binary files /dev/null and b/metamodel/swt.most.petrinet/bin/swt/most/petrinet/impl/ElementImpl.class differ diff --git a/metamodel/swt.most.petrinet/bin/swt/most/petrinet/impl/IncomingArcImpl.class b/metamodel/swt.most.petrinet/bin/swt/most/petrinet/impl/IncomingArcImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..f191772f6d4b9fef15ebf4a351f3ce9e9d39dfee Binary files /dev/null and b/metamodel/swt.most.petrinet/bin/swt/most/petrinet/impl/IncomingArcImpl.class differ diff --git a/metamodel/swt.most.petrinet/bin/swt/most/petrinet/impl/OutgoingArcImpl.class b/metamodel/swt.most.petrinet/bin/swt/most/petrinet/impl/OutgoingArcImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..16635350be9b09a69a129185cf3bc8f53679449a Binary files /dev/null and b/metamodel/swt.most.petrinet/bin/swt/most/petrinet/impl/OutgoingArcImpl.class differ diff --git a/metamodel/swt.most.petrinet/bin/swt/most/petrinet/impl/PetriNetImpl.class b/metamodel/swt.most.petrinet/bin/swt/most/petrinet/impl/PetriNetImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..b5695fdd0688e1898463275a075e0da0c43702f6 Binary files /dev/null and b/metamodel/swt.most.petrinet/bin/swt/most/petrinet/impl/PetriNetImpl.class differ diff --git a/metamodel/swt.most.petrinet/bin/swt/most/petrinet/impl/PetrinetFactoryImpl.class b/metamodel/swt.most.petrinet/bin/swt/most/petrinet/impl/PetrinetFactoryImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..67a6ae79d11c185b770d2c9e5fee9f565d0b31e6 Binary files /dev/null and b/metamodel/swt.most.petrinet/bin/swt/most/petrinet/impl/PetrinetFactoryImpl.class differ diff --git a/metamodel/swt.most.petrinet/bin/swt/most/petrinet/impl/PetrinetPackageImpl.class b/metamodel/swt.most.petrinet/bin/swt/most/petrinet/impl/PetrinetPackageImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..18396c406a79c8c34574fcf33b6bfa2e817f83a8 Binary files /dev/null and b/metamodel/swt.most.petrinet/bin/swt/most/petrinet/impl/PetrinetPackageImpl.class differ diff --git a/metamodel/swt.most.petrinet/bin/swt/most/petrinet/impl/PlaceImpl.class b/metamodel/swt.most.petrinet/bin/swt/most/petrinet/impl/PlaceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..1650862fc5b7ef57a9faf73a658039326f9b87f7 Binary files /dev/null and b/metamodel/swt.most.petrinet/bin/swt/most/petrinet/impl/PlaceImpl.class differ diff --git a/metamodel/swt.most.petrinet/bin/swt/most/petrinet/impl/TokenImpl.class b/metamodel/swt.most.petrinet/bin/swt/most/petrinet/impl/TokenImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..b509feafe93fe24b8d841a9166256d929bc5305a Binary files /dev/null and b/metamodel/swt.most.petrinet/bin/swt/most/petrinet/impl/TokenImpl.class differ diff --git a/metamodel/swt.most.petrinet/bin/swt/most/petrinet/impl/TransitionImpl.class b/metamodel/swt.most.petrinet/bin/swt/most/petrinet/impl/TransitionImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..a535d059398223e45f2d74e194ea3b5e530d8ef6 Binary files /dev/null and b/metamodel/swt.most.petrinet/bin/swt/most/petrinet/impl/TransitionImpl.class differ diff --git a/metamodel/swt.most.petrinet/bin/swt/most/petrinet/util/PetrinetAdapterFactory$1.class b/metamodel/swt.most.petrinet/bin/swt/most/petrinet/util/PetrinetAdapterFactory$1.class new file mode 100644 index 0000000000000000000000000000000000000000..1426616276e707ef38f0f64493bc1a9848ca5dec Binary files /dev/null and b/metamodel/swt.most.petrinet/bin/swt/most/petrinet/util/PetrinetAdapterFactory$1.class differ diff --git a/metamodel/swt.most.petrinet/bin/swt/most/petrinet/util/PetrinetAdapterFactory.class b/metamodel/swt.most.petrinet/bin/swt/most/petrinet/util/PetrinetAdapterFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..a723d31d77f41e7558b4b7b4f503725198da8572 Binary files /dev/null and b/metamodel/swt.most.petrinet/bin/swt/most/petrinet/util/PetrinetAdapterFactory.class differ diff --git a/metamodel/swt.most.petrinet/bin/swt/most/petrinet/util/PetrinetSwitch.class b/metamodel/swt.most.petrinet/bin/swt/most/petrinet/util/PetrinetSwitch.class new file mode 100644 index 0000000000000000000000000000000000000000..0c1a576e82a9828177e3a3d613f3299044c09f3c Binary files /dev/null and b/metamodel/swt.most.petrinet/bin/swt/most/petrinet/util/PetrinetSwitch.class differ diff --git a/metamodel/swt.most.petrinet/build.properties b/metamodel/swt.most.petrinet/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..697ca964527a545764d3a69847c122b371257973 --- /dev/null +++ b/metamodel/swt.most.petrinet/build.properties @@ -0,0 +1,10 @@ +# + +bin.includes = .,\ + model/,\ + META-INF/,\ + plugin.xml,\ + plugin.properties +jars.compile.order = . +source.. = src-gen/ +output.. = bin/ diff --git a/metamodel/swt.most.petrinet/model/petrinet.aird b/metamodel/swt.most.petrinet/model/petrinet.aird new file mode 100644 index 0000000000000000000000000000000000000000..14bf545e886b4c4f5f5659d900c9d59888f79849 --- /dev/null +++ b/metamodel/swt.most.petrinet/model/petrinet.aird @@ -0,0 +1,535 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:description="http://www.eclipse.org/sirius/description/1.1.0" xmlns:description_1="http://www.eclipse.org/sirius/diagram/description/1.1.0" xmlns:diagram="http://www.eclipse.org/sirius/diagram/1.1.0" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.3/notation" xmlns:style="http://www.eclipse.org/sirius/diagram/description/style/1.1.0" xmlns:viewpoint="http://www.eclipse.org/sirius/1.1.0" xsi:schemaLocation="http://www.eclipse.org/sirius/description/1.1.0 http://www.eclipse.org/sirius/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/style/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description/style"> + <viewpoint:DAnalysis uid="_OYqr8CylEe-wqd8WJDWOGA" selectedViews="_eJxNMCylEe-wqd8WJDWOGA _eJ-okCylEe-wqd8WJDWOGA _eJ_2sCylEe-wqd8WJDWOGA _eKDhECylEe-wqd8WJDWOGA" version="15.2.0.202303281325"> + <semanticResources>model/petrinet.ecore</semanticResources> + <semanticResources>model/petrinet.genmodel</semanticResources> + <semanticResources>petrinet.ecore</semanticResources> + <semanticResources>petrinet.genmodel</semanticResources> + <ownedViews xmi:type="viewpoint:DView" uid="_eJxNMCylEe-wqd8WJDWOGA"> + <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']"/> + <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_fBp3cCylEe-wqd8WJDWOGA" name="petrinet class diagram" repPath="#_fBjw0CylEe-wqd8WJDWOGA" changeId="1718627695256"> + <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/> + <target xmi:type="ecore:EPackage" href="petrinet.ecore#/"/> + </ownedRepresentationDescriptors> + </ownedViews> + <ownedViews xmi:type="viewpoint:DView" uid="_eJ-okCylEe-wqd8WJDWOGA"> + <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Review']"/> + </ownedViews> + <ownedViews xmi:type="viewpoint:DView" uid="_eJ_2sCylEe-wqd8WJDWOGA"> + <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Archetype']"/> + </ownedViews> + <ownedViews xmi:type="viewpoint:DView" uid="_eKDhECylEe-wqd8WJDWOGA"> + <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Generation']"/> + </ownedViews> + </viewpoint:DAnalysis> + <diagram:DSemanticDiagram uid="_fBjw0CylEe-wqd8WJDWOGA"> + <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_fB3S0CylEe-wqd8WJDWOGA" source="GMF_DIAGRAMS"> + <data xmi:type="notation:Diagram" xmi:id="_fB3S0SylEe-wqd8WJDWOGA" type="Sirius" element="_fBjw0CylEe-wqd8WJDWOGA" measurementUnit="Pixel"> + <children xmi:type="notation:Node" xmi:id="_fcFwsCylEe-wqd8WJDWOGA" type="2003" element="_fbodsCylEe-wqd8WJDWOGA"> + <children xmi:type="notation:Node" xmi:id="_fcGXwCylEe-wqd8WJDWOGA" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_fcG-0CylEe-wqd8WJDWOGA" type="7004"> + <children xmi:type="notation:Node" xmi:id="_fcLQQCylEe-wqd8WJDWOGA" type="3010" element="_fb5jcCylEe-wqd8WJDWOGA"> + <styles xmi:type="notation:FontStyle" xmi:id="_fcLQQSylEe-wqd8WJDWOGA" fontName="Segoe UI" fontHeight="8"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_fcLQQiylEe-wqd8WJDWOGA"/> + </children> + <styles xmi:type="notation:SortingStyle" xmi:id="_fcG-0SylEe-wqd8WJDWOGA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_fcG-0iylEe-wqd8WJDWOGA"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_fcFwsSylEe-wqd8WJDWOGA" fontName="Segoe UI" fontHeight="8"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fcFwsiylEe-wqd8WJDWOGA" x="420" y="-126"/> + </children> + <children xmi:type="notation:Node" xmi:id="_fcHl4CylEe-wqd8WJDWOGA" type="2003" element="_fbsIECylEe-wqd8WJDWOGA"> + <children xmi:type="notation:Node" xmi:id="_fcHl4yylEe-wqd8WJDWOGA" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_fcHl5CylEe-wqd8WJDWOGA" type="7004"> + <children xmi:type="notation:Node" xmi:id="_fcL3UCylEe-wqd8WJDWOGA" type="3010" element="_fb6KgCylEe-wqd8WJDWOGA"> + <styles xmi:type="notation:FontStyle" xmi:id="_fcL3USylEe-wqd8WJDWOGA" fontName="Segoe UI" fontHeight="8"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_fcL3UiylEe-wqd8WJDWOGA"/> + </children> + <styles xmi:type="notation:SortingStyle" xmi:id="_fcHl5SylEe-wqd8WJDWOGA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_fcHl5iylEe-wqd8WJDWOGA"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_fcHl4SylEe-wqd8WJDWOGA" fontName="Segoe UI" fontHeight="8" italic="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fcHl4iylEe-wqd8WJDWOGA" x="240" y="64"/> + </children> + <children xmi:type="notation:Node" xmi:id="_fcHl5yylEe-wqd8WJDWOGA" type="2003" element="_fbtWMCylEe-wqd8WJDWOGA"> + <children xmi:type="notation:Node" xmi:id="_fcIM8CylEe-wqd8WJDWOGA" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_fcIM8SylEe-wqd8WJDWOGA" type="7004"> + <styles xmi:type="notation:SortingStyle" xmi:id="_fcIM8iylEe-wqd8WJDWOGA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_fcIM8yylEe-wqd8WJDWOGA"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_fcHl6CylEe-wqd8WJDWOGA" fontName="Segoe UI" fontHeight="8" italic="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fcHl6SylEe-wqd8WJDWOGA" x="637" y="64"/> + </children> + <children xmi:type="notation:Node" xmi:id="_fcIM9CylEe-wqd8WJDWOGA" type="2003" element="_fbukUCylEe-wqd8WJDWOGA"> + <children xmi:type="notation:Node" xmi:id="_fcI0ACylEe-wqd8WJDWOGA" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_fcI0ASylEe-wqd8WJDWOGA" type="7004"> + <styles xmi:type="notation:SortingStyle" xmi:id="_fcI0AiylEe-wqd8WJDWOGA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_fcI0AyylEe-wqd8WJDWOGA"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_fcIM9SylEe-wqd8WJDWOGA" fontName="Segoe UI" fontHeight="8"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fcIM9iylEe-wqd8WJDWOGA" x="560" y="231"/> + </children> + <children xmi:type="notation:Node" xmi:id="_fcI0BCylEe-wqd8WJDWOGA" type="2003" element="_fbvycSylEe-wqd8WJDWOGA"> + <children xmi:type="notation:Node" xmi:id="_fcJbECylEe-wqd8WJDWOGA" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_fcJbESylEe-wqd8WJDWOGA" type="7004"> + <styles xmi:type="notation:SortingStyle" xmi:id="_fcJbEiylEe-wqd8WJDWOGA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_fcJbEyylEe-wqd8WJDWOGA"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_fcI0BSylEe-wqd8WJDWOGA" fontName="Segoe UI" fontHeight="8"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fcI0BiylEe-wqd8WJDWOGA" x="770" y="231"/> + </children> + <children xmi:type="notation:Node" xmi:id="_fcJbFCylEe-wqd8WJDWOGA" type="2003" element="_fbxAkSylEe-wqd8WJDWOGA"> + <children xmi:type="notation:Node" xmi:id="_fcJbFyylEe-wqd8WJDWOGA" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_fcJbGCylEe-wqd8WJDWOGA" type="7004"> + <styles xmi:type="notation:SortingStyle" xmi:id="_fcJbGSylEe-wqd8WJDWOGA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_fcJbGiylEe-wqd8WJDWOGA"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_fcJbFSylEe-wqd8WJDWOGA" fontName="Segoe UI" fontHeight="8"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fcJbFiylEe-wqd8WJDWOGA" x="133" y="420"/> + </children> + <children xmi:type="notation:Node" xmi:id="_fcJbGyylEe-wqd8WJDWOGA" type="2003" element="_fbyOsSylEe-wqd8WJDWOGA"> + <children xmi:type="notation:Node" xmi:id="_fcKCICylEe-wqd8WJDWOGA" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_fcKCISylEe-wqd8WJDWOGA" type="7004"> + <styles xmi:type="notation:SortingStyle" xmi:id="_fcKCIiylEe-wqd8WJDWOGA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_fcKCIyylEe-wqd8WJDWOGA"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_fcJbHCylEe-wqd8WJDWOGA" fontName="Segoe UI" fontHeight="8"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fcJbHSylEe-wqd8WJDWOGA" x="315" y="315"/> + </children> + <children xmi:type="notation:Node" xmi:id="_fcKCJCylEe-wqd8WJDWOGA" type="2003" element="_fbzc0CylEe-wqd8WJDWOGA"> + <children xmi:type="notation:Node" xmi:id="_fcKpMCylEe-wqd8WJDWOGA" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_fcKpMSylEe-wqd8WJDWOGA" type="7004"> + <styles xmi:type="notation:SortingStyle" xmi:id="_fcKpMiylEe-wqd8WJDWOGA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_fcKpMyylEe-wqd8WJDWOGA"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_fcKCJSylEe-wqd8WJDWOGA" fontName="Segoe UI" fontHeight="8"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fcKCJiylEe-wqd8WJDWOGA" x="16" y="105"/> + </children> + <styles xmi:type="notation:DiagramStyle" xmi:id="_fB3S0iylEe-wqd8WJDWOGA"/> + <edges xmi:type="notation:Edge" xmi:id="_fcTMECylEe-wqd8WJDWOGA" type="4001" element="_fb7_sCylEe-wqd8WJDWOGA" source="_fcFwsCylEe-wqd8WJDWOGA" target="_fcHl5yylEe-wqd8WJDWOGA"> + <children xmi:type="notation:Node" xmi:id="_fcTzICylEe-wqd8WJDWOGA" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fcTzISylEe-wqd8WJDWOGA" x="59" y="124"/> + </children> + <children xmi:type="notation:Node" xmi:id="_fcUaMCylEe-wqd8WJDWOGA" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fcUaMSylEe-wqd8WJDWOGA" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_fcVBQCylEe-wqd8WJDWOGA" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fcVBQSylEe-wqd8WJDWOGA" x="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_fcTMESylEe-wqd8WJDWOGA" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_fcTMEiylEe-wqd8WJDWOGA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_fcTMEyylEe-wqd8WJDWOGA" points="[64, 1, -148, -189]$[216, 1, 4, -189]$[216, 141, 4, -49]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fcW2cCylEe-wqd8WJDWOGA" id="(0.5,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fcW2cSylEe-wqd8WJDWOGA" id="(0.5,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_fcXdgCylEe-wqd8WJDWOGA" type="4001" element="_fb9N0CylEe-wqd8WJDWOGA" source="_fcFwsCylEe-wqd8WJDWOGA" target="_fcHl4CylEe-wqd8WJDWOGA"> + <children xmi:type="notation:Node" xmi:id="_fcXdhCylEe-wqd8WJDWOGA" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fcXdhSylEe-wqd8WJDWOGA" x="107" y="65"/> + </children> + <children xmi:type="notation:Node" xmi:id="_fcXdhiylEe-wqd8WJDWOGA" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fcXdhyylEe-wqd8WJDWOGA" x="-1" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_fcXdiCylEe-wqd8WJDWOGA" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fcXdiSylEe-wqd8WJDWOGA" x="11"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_fcXdgSylEe-wqd8WJDWOGA" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_fcXdgiylEe-wqd8WJDWOGA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_fcXdgyylEe-wqd8WJDWOGA" points="[-64, 1, 105, -189]$[-169, 1, 0, -189]$[-169, 141, 0, -49]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fcXdiiylEe-wqd8WJDWOGA" id="(0.5,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fcXdiyylEe-wqd8WJDWOGA" id="(0.5,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_fcXdjCylEe-wqd8WJDWOGA" type="4001" element="_fb904yylEe-wqd8WJDWOGA" source="_fcIM9CylEe-wqd8WJDWOGA" target="_fcJbGyylEe-wqd8WJDWOGA"> + <children xmi:type="notation:Node" xmi:id="_fcYEkCylEe-wqd8WJDWOGA" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fcYEkSylEe-wqd8WJDWOGA" x="38" y="-17"/> + </children> + <children xmi:type="notation:Node" xmi:id="_fcYEkiylEe-wqd8WJDWOGA" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fcYEkyylEe-wqd8WJDWOGA" x="64" y="-9"/> + </children> + <children xmi:type="notation:Node" xmi:id="_fcYElCylEe-wqd8WJDWOGA" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fcYElSylEe-wqd8WJDWOGA" x="20" y="7"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_fcXdjSylEe-wqd8WJDWOGA" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_fcXdjiylEe-wqd8WJDWOGA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_fcXdjyylEe-wqd8WJDWOGA" points="[-25, 98, 220, -84]$[-25, 119, 220, -63]$[-187, 119, 58, -63]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fcYEliylEe-wqd8WJDWOGA" id="(0.5084745762711864,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fcYElyylEe-wqd8WJDWOGA" id="(0.5084745762711864,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_fcYEmCylEe-wqd8WJDWOGA" type="4001" element="_fb-b-SylEe-wqd8WJDWOGA" source="_fcIM9CylEe-wqd8WJDWOGA" target="_fcJbFCylEe-wqd8WJDWOGA"> + <children xmi:type="notation:Node" xmi:id="_fcYEnCylEe-wqd8WJDWOGA" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fcYEnSylEe-wqd8WJDWOGA" x="207" y="-17"/> + </children> + <children xmi:type="notation:Node" xmi:id="_fcYroCylEe-wqd8WJDWOGA" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fcYroSylEe-wqd8WJDWOGA" x="58" y="318"/> + </children> + <children xmi:type="notation:Node" xmi:id="_fcYroiylEe-wqd8WJDWOGA" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fcYroyylEe-wqd8WJDWOGA" x="5" y="-10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_fcYEmSylEe-wqd8WJDWOGA" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_fcYEmiylEe-wqd8WJDWOGA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_fcYEmyylEe-wqd8WJDWOGA" points="[0, 98, 427, -189]$[0, 154, 427, -133]$[10, 154, 437, -133]$[10, 167, 437, -120]$[-2, 167, 425, -120]$[-2, 223, 425, -64]$[-369, 223, 58, -64]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fcYrpCylEe-wqd8WJDWOGA" id="(0.5084745762711864,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fcYrpSylEe-wqd8WJDWOGA" id="(0.5084745762711864,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_fcYrpiylEe-wqd8WJDWOGA" type="4001" element="_fb_DBiylEe-wqd8WJDWOGA" source="_fcI0BCylEe-wqd8WJDWOGA" target="_fcJbGyylEe-wqd8WJDWOGA"> + <children xmi:type="notation:Node" xmi:id="_fcYrqiylEe-wqd8WJDWOGA" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fcYrqyylEe-wqd8WJDWOGA" x="164" y="-18"/> + </children> + <children xmi:type="notation:Node" xmi:id="_fcYrrCylEe-wqd8WJDWOGA" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fcYrrSylEe-wqd8WJDWOGA" x="122" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_fcYrriylEe-wqd8WJDWOGA" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fcYrryylEe-wqd8WJDWOGA" x="56" y="7"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_fcYrpyylEe-wqd8WJDWOGA" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_fcYrqCylEe-wqd8WJDWOGA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_fcYrqSylEe-wqd8WJDWOGA" points="[-18, 98, 437, -84]$[-18, 161, 437, -21]$[-397, 161, 58, -21]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fcZSsCylEe-wqd8WJDWOGA" id="(0.5084745762711864,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fcZSsSylEe-wqd8WJDWOGA" id="(0.5084745762711864,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_fcZSsiylEe-wqd8WJDWOGA" type="4001" element="_fb_qFCylEe-wqd8WJDWOGA" source="_fcI0BCylEe-wqd8WJDWOGA" target="_fcJbFCylEe-wqd8WJDWOGA"> + <children xmi:type="notation:Node" xmi:id="_fcZStiylEe-wqd8WJDWOGA" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fcZStyylEe-wqd8WJDWOGA" x="328" y="-17"/> + </children> + <children xmi:type="notation:Node" xmi:id="_fcZSuCylEe-wqd8WJDWOGA" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fcZSuSylEe-wqd8WJDWOGA" x="43" y="29"/> + </children> + <children xmi:type="notation:Node" xmi:id="_fcZSuiylEe-wqd8WJDWOGA" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fcZSuyylEe-wqd8WJDWOGA" x="-343" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_fcZSsyylEe-wqd8WJDWOGA" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_fcZStCylEe-wqd8WJDWOGA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_fcZStSylEe-wqd8WJDWOGA" points="[17, 98, 654, -189]$[17, 265, 654, -22]$[-579, 265, 58, -22]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fcZSvCylEe-wqd8WJDWOGA" id="(0.5084745762711864,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fcZSvSylEe-wqd8WJDWOGA" id="(0.5084745762711864,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_fcZSviylEe-wqd8WJDWOGA" type="4001" element="_fcARIyylEe-wqd8WJDWOGA" source="_fcJbFCylEe-wqd8WJDWOGA" target="_fcKCJCylEe-wqd8WJDWOGA"> + <children xmi:type="notation:Node" xmi:id="_fcZSwiylEe-wqd8WJDWOGA" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fcZ5wCylEe-wqd8WJDWOGA" x="145" y="48"/> + </children> + <children xmi:type="notation:Node" xmi:id="_fcZ5wSylEe-wqd8WJDWOGA" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fcZ5wiylEe-wqd8WJDWOGA" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_fcZ5wyylEe-wqd8WJDWOGA" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fcZ5xCylEe-wqd8WJDWOGA" x="-10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_fcZSvyylEe-wqd8WJDWOGA" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_fcZSwCylEe-wqd8WJDWOGA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_fcZSwSylEe-wqd8WJDWOGA" points="[-60, 50, 57, 267]$[-119, 50, -2, 267]$[-119, -217, -2, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fcZ5xSylEe-wqd8WJDWOGA" id="(0.5084745762711864,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fcZ5xiylEe-wqd8WJDWOGA" id="(0.5084745762711864,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_fcZ5xyylEe-wqd8WJDWOGA" type="4001" element="_fcA4NiylEe-wqd8WJDWOGA" source="_fcIM9CylEe-wqd8WJDWOGA" target="_fcHl5yylEe-wqd8WJDWOGA"> + <children xmi:type="notation:Node" xmi:id="_fcZ5yyylEe-wqd8WJDWOGA" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fcZ5zCylEe-wqd8WJDWOGA" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_fcZ5zSylEe-wqd8WJDWOGA" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fcZ5ziylEe-wqd8WJDWOGA" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_fcZ5zyylEe-wqd8WJDWOGA" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fcZ50CylEe-wqd8WJDWOGA" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_fcZ5yCylEe-wqd8WJDWOGA" routing="Tree"/> + <styles xmi:type="notation:FontStyle" xmi:id="_fcZ5ySylEe-wqd8WJDWOGA" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_fcZ5yiylEe-wqd8WJDWOGA" points="[-1, 0, -271, 60]$[269, -60, -1, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fcag0CylEe-wqd8WJDWOGA" id="(0.5084745762711864,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fcag0SylEe-wqd8WJDWOGA" id="(0.5084745762711864,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_fcag0iylEe-wqd8WJDWOGA" type="4001" element="_fcCGUyylEe-wqd8WJDWOGA" source="_fcI0BCylEe-wqd8WJDWOGA" target="_fcHl5yylEe-wqd8WJDWOGA"> + <children xmi:type="notation:Node" xmi:id="_fcag1iylEe-wqd8WJDWOGA" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fcag1yylEe-wqd8WJDWOGA" x="84" y="-32"/> + </children> + <children xmi:type="notation:Node" xmi:id="_fcag2CylEe-wqd8WJDWOGA" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fcag2SylEe-wqd8WJDWOGA" x="-54" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_fcag2iylEe-wqd8WJDWOGA" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fcag2yylEe-wqd8WJDWOGA" x="100" y="11"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_fcag0yylEe-wqd8WJDWOGA" routing="Tree"/> + <styles xmi:type="notation:FontStyle" xmi:id="_fcag1CylEe-wqd8WJDWOGA" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_fcag1SylEe-wqd8WJDWOGA" points="[0, 0, 133, 69]$[0, -42, 133, 27]$[-133, -42, 0, 27]$[-133, -69, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fcbH4CylEe-wqd8WJDWOGA" id="(0.5084745762711864,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fcbH4SylEe-wqd8WJDWOGA" id="(0.5084745762711864,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_fcbH4iylEe-wqd8WJDWOGA" type="4001" element="_fcCtYyylEe-wqd8WJDWOGA" source="_fcJbFCylEe-wqd8WJDWOGA" target="_fcHl4CylEe-wqd8WJDWOGA"> + <children xmi:type="notation:Node" xmi:id="_fcbH5iylEe-wqd8WJDWOGA" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fcbH5yylEe-wqd8WJDWOGA" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_fcbH6CylEe-wqd8WJDWOGA" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fcbH6SylEe-wqd8WJDWOGA" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_fcbH6iylEe-wqd8WJDWOGA" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fcbH6yylEe-wqd8WJDWOGA" x="-9" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_fcbH4yylEe-wqd8WJDWOGA" routing="Tree"/> + <styles xmi:type="notation:FontStyle" xmi:id="_fcbH5CylEe-wqd8WJDWOGA" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_fcbH5SylEe-wqd8WJDWOGA" points="[0, 0, -123, 258]$[0, -231, -123, 27]$[123, -231, 0, 27]$[123, -258, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fcbH7CylEe-wqd8WJDWOGA" id="(0.5084745762711864,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fcbH7SylEe-wqd8WJDWOGA" id="(0.5033112582781457,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_fcbu8CylEe-wqd8WJDWOGA" type="4001" element="_fcDUcCylEe-wqd8WJDWOGA" source="_fcJbGyylEe-wqd8WJDWOGA" target="_fcHl4CylEe-wqd8WJDWOGA"> + <children xmi:type="notation:Node" xmi:id="_fcbu9CylEe-wqd8WJDWOGA" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fcbu9SylEe-wqd8WJDWOGA" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_fcbu9iylEe-wqd8WJDWOGA" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fcbu9yylEe-wqd8WJDWOGA" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_fcbu-CylEe-wqd8WJDWOGA" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fcbu-SylEe-wqd8WJDWOGA" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_fcbu8SylEe-wqd8WJDWOGA" routing="Tree"/> + <styles xmi:type="notation:FontStyle" xmi:id="_fcbu8iylEe-wqd8WJDWOGA" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_fcbu8yylEe-wqd8WJDWOGA" points="[-1, 0, -136, 60]$[134, -60, -1, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fcbu-iylEe-wqd8WJDWOGA" id="(0.5084745762711864,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fcbu-yylEe-wqd8WJDWOGA" id="(0.5033112582781457,1.0)"/> + </edges> + </data> + </ownedAnnotationEntries> + <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_fB_OoCylEe-wqd8WJDWOGA" source="DANNOTATION_CUSTOMIZATION_KEY"> + <data xmi:type="diagram:ComputedStyleDescriptionRegistry" uid="_fB_OoSylEe-wqd8WJDWOGA"> + <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_fb8mwCylEe-wqd8WJDWOGA" sourceArrow="FillDiamond" routingStyle="manhattan"> + <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_fb8mwSylEe-wqd8WJDWOGA" showIcon="false" labelExpression="service:render"> + <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + </centerLabelStyleDescription> + <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_fb8mwiylEe-wqd8WJDWOGA" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel"> + <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/> + </endLabelStyleDescription> + </computedStyleDescriptions> + <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_fb-b8CylEe-wqd8WJDWOGA" routingStyle="manhattan"> + <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_fb-b8SylEe-wqd8WJDWOGA" showIcon="false" labelExpression="service:render"> + <labelFormat>bold</labelFormat> + <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + </centerLabelStyleDescription> + <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_fb-b8iylEe-wqd8WJDWOGA" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel"> + <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/> + </endLabelStyleDescription> + </computedStyleDescriptions> + </data> + </ownedAnnotationEntries> + <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_fbodsCylEe-wqd8WJDWOGA" name="PetriNet" tooltipText="" outgoingEdges="_fb7_sCylEe-wqd8WJDWOGA _fb9N0CylEe-wqd8WJDWOGA" width="12" height="10"> + <target xmi:type="ecore:EClass" href="petrinet.ecore#//PetriNet"/> + <semanticElements xmi:type="ecore:EClass" href="petrinet.ecore#//PetriNet"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_fbpr0CylEe-wqd8WJDWOGA" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216"> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/> + <ownedElements xmi:type="diagram:DNodeListElement" uid="_fb5jcCylEe-wqd8WJDWOGA" name="name : EString" tooltipText=""> + <target xmi:type="ecore:EAttribute" href="petrinet.ecore#//PetriNet/name"/> + <semanticElements xmi:type="ecore:EAttribute" href="petrinet.ecore#//PetriNet/name"/> + <ownedStyle xmi:type="diagram:BundledImage" uid="_fb5jcSylEe-wqd8WJDWOGA" labelAlignment="LEFT"> + <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/> + </ownedElements> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_fbsIECylEe-wqd8WJDWOGA" name="Element" tooltipText="" incomingEdges="_fb9N0CylEe-wqd8WJDWOGA _fcCtYyylEe-wqd8WJDWOGA _fcDUcCylEe-wqd8WJDWOGA" width="12" height="10"> + <target xmi:type="ecore:EClass" href="petrinet.ecore#//Element"/> + <semanticElements xmi:type="ecore:EClass" href="petrinet.ecore#//Element"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_fbsvICylEe-wqd8WJDWOGA" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_abstract.gif" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="228,228,228"> + <labelFormat>italic</labelFormat> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@conditionnalStyles.1/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/> + <ownedElements xmi:type="diagram:DNodeListElement" uid="_fb6KgCylEe-wqd8WJDWOGA" name="identifier : EString" tooltipText=""> + <target xmi:type="ecore:EAttribute" href="petrinet.ecore#//Element/identifier"/> + <semanticElements xmi:type="ecore:EAttribute" href="petrinet.ecore#//Element/identifier"/> + <ownedStyle xmi:type="diagram:BundledImage" uid="_fb6xkCylEe-wqd8WJDWOGA" labelAlignment="LEFT"> + <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/> + </ownedElements> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_fbtWMCylEe-wqd8WJDWOGA" name="Arc" tooltipText="" incomingEdges="_fb7_sCylEe-wqd8WJDWOGA _fcA4NiylEe-wqd8WJDWOGA _fcCGUyylEe-wqd8WJDWOGA" width="12" height="10"> + <target xmi:type="ecore:EClass" href="petrinet.ecore#//Arc"/> + <semanticElements xmi:type="ecore:EClass" href="petrinet.ecore#//Arc"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_fbt9QCylEe-wqd8WJDWOGA" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_abstract.gif" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="228,228,228"> + <labelFormat>italic</labelFormat> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@conditionnalStyles.1/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_fbukUCylEe-wqd8WJDWOGA" name="IncomingArc" tooltipText="" outgoingEdges="_fb904yylEe-wqd8WJDWOGA _fb-b-SylEe-wqd8WJDWOGA _fcA4NiylEe-wqd8WJDWOGA" width="12" height="10"> + <target xmi:type="ecore:EClass" href="petrinet.ecore#//IncomingArc"/> + <semanticElements xmi:type="ecore:EClass" href="petrinet.ecore#//IncomingArc"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_fbvLYCylEe-wqd8WJDWOGA" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216"> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_fbvycSylEe-wqd8WJDWOGA" name="OutgoingArc" tooltipText="" outgoingEdges="_fb_DBiylEe-wqd8WJDWOGA _fb_qFCylEe-wqd8WJDWOGA _fcCGUyylEe-wqd8WJDWOGA" width="12" height="10"> + <target xmi:type="ecore:EClass" href="petrinet.ecore#//OutgoingArc"/> + <semanticElements xmi:type="ecore:EClass" href="petrinet.ecore#//OutgoingArc"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_fbwZgCylEe-wqd8WJDWOGA" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216"> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_fbxAkSylEe-wqd8WJDWOGA" name="Place" tooltipText="" outgoingEdges="_fcARIyylEe-wqd8WJDWOGA _fcCtYyylEe-wqd8WJDWOGA" incomingEdges="_fb-b-SylEe-wqd8WJDWOGA _fb_qFCylEe-wqd8WJDWOGA" width="12" height="10"> + <target xmi:type="ecore:EClass" href="petrinet.ecore#//Place"/> + <semanticElements xmi:type="ecore:EClass" href="petrinet.ecore#//Place"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_fbxnoCylEe-wqd8WJDWOGA" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216"> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_fbyOsSylEe-wqd8WJDWOGA" name="Transition" tooltipText="" outgoingEdges="_fcDUcCylEe-wqd8WJDWOGA" incomingEdges="_fb904yylEe-wqd8WJDWOGA _fb_DBiylEe-wqd8WJDWOGA" width="12" height="10"> + <target xmi:type="ecore:EClass" href="petrinet.ecore#//Transition"/> + <semanticElements xmi:type="ecore:EClass" href="petrinet.ecore#//Transition"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_fby1wCylEe-wqd8WJDWOGA" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216"> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_fbzc0CylEe-wqd8WJDWOGA" name="Token" tooltipText="" incomingEdges="_fcARIyylEe-wqd8WJDWOGA" width="12" height="10"> + <target xmi:type="ecore:EClass" href="petrinet.ecore#//Token"/> + <semanticElements xmi:type="ecore:EClass" href="petrinet.ecore#//Token"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_fbzc0SylEe-wqd8WJDWOGA" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216"> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_fb7_sCylEe-wqd8WJDWOGA" name="[0..*] arcs" sourceNode="_fbodsCylEe-wqd8WJDWOGA" targetNode="_fbtWMCylEe-wqd8WJDWOGA"> + <target xmi:type="ecore:EReference" href="petrinet.ecore#//PetriNet/arcs"/> + <semanticElements xmi:type="ecore:EReference" href="petrinet.ecore#//PetriNet/arcs"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_fb8mwyylEe-wqd8WJDWOGA" description="_fb8mwCylEe-wqd8WJDWOGA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0"> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_fb8mxSylEe-wqd8WJDWOGA" showIcon="false"/> + <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_fb8mxCylEe-wqd8WJDWOGA" showIcon="false" labelColor="39,76,114"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_fb9N0CylEe-wqd8WJDWOGA" name="[0..*] elements" sourceNode="_fbodsCylEe-wqd8WJDWOGA" targetNode="_fbsIECylEe-wqd8WJDWOGA"> + <target xmi:type="ecore:EReference" href="petrinet.ecore#//PetriNet/elements"/> + <semanticElements xmi:type="ecore:EReference" href="petrinet.ecore#//PetriNet/elements"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_fb9N0SylEe-wqd8WJDWOGA" description="_fb8mwCylEe-wqd8WJDWOGA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0"> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_fb9N0yylEe-wqd8WJDWOGA" showIcon="false"/> + <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_fb9N0iylEe-wqd8WJDWOGA" showIcon="false" labelColor="39,76,114"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_fb904yylEe-wqd8WJDWOGA" name="[1..1] target" sourceNode="_fbukUCylEe-wqd8WJDWOGA" targetNode="_fbyOsSylEe-wqd8WJDWOGA"> + <target xmi:type="ecore:EReference" href="petrinet.ecore#//IncomingArc/target"/> + <semanticElements xmi:type="ecore:EReference" href="petrinet.ecore#//IncomingArc/target"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_fb-b8yylEe-wqd8WJDWOGA" description="_fb-b8CylEe-wqd8WJDWOGA" routingStyle="manhattan" strokeColor="0,0,0"> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_fb-b9SylEe-wqd8WJDWOGA" showIcon="false"/> + <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_fb-b9CylEe-wqd8WJDWOGA" showIcon="false" labelColor="39,76,114"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_fb-b-SylEe-wqd8WJDWOGA" name="[1..1] source" sourceNode="_fbukUCylEe-wqd8WJDWOGA" targetNode="_fbxAkSylEe-wqd8WJDWOGA"> + <target xmi:type="ecore:EReference" href="petrinet.ecore#//IncomingArc/source"/> + <semanticElements xmi:type="ecore:EReference" href="petrinet.ecore#//IncomingArc/source"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_fb_DACylEe-wqd8WJDWOGA" description="_fb-b8CylEe-wqd8WJDWOGA" routingStyle="manhattan" strokeColor="0,0,0"> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_fb_DAiylEe-wqd8WJDWOGA" showIcon="false"/> + <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_fb_DASylEe-wqd8WJDWOGA" showIcon="false" labelColor="39,76,114"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_fb_DBiylEe-wqd8WJDWOGA" name="[1..1] source" sourceNode="_fbvycSylEe-wqd8WJDWOGA" targetNode="_fbyOsSylEe-wqd8WJDWOGA"> + <target xmi:type="ecore:EReference" href="petrinet.ecore#//OutgoingArc/source"/> + <semanticElements xmi:type="ecore:EReference" href="petrinet.ecore#//OutgoingArc/source"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_fb_DByylEe-wqd8WJDWOGA" description="_fb-b8CylEe-wqd8WJDWOGA" routingStyle="manhattan" strokeColor="0,0,0"> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_fb_qECylEe-wqd8WJDWOGA" showIcon="false"/> + <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_fb_DCCylEe-wqd8WJDWOGA" showIcon="false" labelColor="39,76,114"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_fb_qFCylEe-wqd8WJDWOGA" name="[1..1] target" sourceNode="_fbvycSylEe-wqd8WJDWOGA" targetNode="_fbxAkSylEe-wqd8WJDWOGA"> + <target xmi:type="ecore:EReference" href="petrinet.ecore#//OutgoingArc/target"/> + <semanticElements xmi:type="ecore:EReference" href="petrinet.ecore#//OutgoingArc/target"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_fb_qFSylEe-wqd8WJDWOGA" description="_fb-b8CylEe-wqd8WJDWOGA" routingStyle="manhattan" strokeColor="0,0,0"> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_fb_qFyylEe-wqd8WJDWOGA" showIcon="false"/> + <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_fb_qFiylEe-wqd8WJDWOGA" showIcon="false" labelColor="39,76,114"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_fcARIyylEe-wqd8WJDWOGA" name="[0..1] token" sourceNode="_fbxAkSylEe-wqd8WJDWOGA" targetNode="_fbzc0CylEe-wqd8WJDWOGA"> + <target xmi:type="ecore:EReference" href="petrinet.ecore#//Place/token"/> + <semanticElements xmi:type="ecore:EReference" href="petrinet.ecore#//Place/token"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_fcA4MCylEe-wqd8WJDWOGA" description="_fb8mwCylEe-wqd8WJDWOGA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0"> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_fcA4MiylEe-wqd8WJDWOGA" showIcon="false"/> + <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_fcA4MSylEe-wqd8WJDWOGA" showIcon="false" labelColor="39,76,114"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_fcA4NiylEe-wqd8WJDWOGA" sourceNode="_fbukUCylEe-wqd8WJDWOGA" targetNode="_fbtWMCylEe-wqd8WJDWOGA"> + <target xmi:type="ecore:EClass" href="petrinet.ecore#//IncomingArc"/> + <semanticElements xmi:type="ecore:EClass" href="petrinet.ecore#//IncomingArc"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_fcBfQCylEe-wqd8WJDWOGA" targetArrow="InputClosedArrow" routingStyle="tree"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/> + <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_fcBfQSylEe-wqd8WJDWOGA" showIcon="false"> + <labelFormat>italic</labelFormat> + </beginLabelStyle> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_fcBfQiylEe-wqd8WJDWOGA" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_fcCGUyylEe-wqd8WJDWOGA" sourceNode="_fbvycSylEe-wqd8WJDWOGA" targetNode="_fbtWMCylEe-wqd8WJDWOGA"> + <target xmi:type="ecore:EClass" href="petrinet.ecore#//OutgoingArc"/> + <semanticElements xmi:type="ecore:EClass" href="petrinet.ecore#//OutgoingArc"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_fcCGVCylEe-wqd8WJDWOGA" targetArrow="InputClosedArrow" routingStyle="tree"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/> + <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_fcCGVSylEe-wqd8WJDWOGA" showIcon="false"> + <labelFormat>italic</labelFormat> + </beginLabelStyle> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_fcCGViylEe-wqd8WJDWOGA" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_fcCtYyylEe-wqd8WJDWOGA" sourceNode="_fbxAkSylEe-wqd8WJDWOGA" targetNode="_fbsIECylEe-wqd8WJDWOGA"> + <target xmi:type="ecore:EClass" href="petrinet.ecore#//Place"/> + <semanticElements xmi:type="ecore:EClass" href="petrinet.ecore#//Place"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_fcCtZCylEe-wqd8WJDWOGA" targetArrow="InputClosedArrow" routingStyle="tree"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/> + <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_fcCtZSylEe-wqd8WJDWOGA" showIcon="false"> + <labelFormat>italic</labelFormat> + </beginLabelStyle> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_fcCtZiylEe-wqd8WJDWOGA" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_fcDUcCylEe-wqd8WJDWOGA" sourceNode="_fbyOsSylEe-wqd8WJDWOGA" targetNode="_fbsIECylEe-wqd8WJDWOGA"> + <target xmi:type="ecore:EClass" href="petrinet.ecore#//Transition"/> + <semanticElements xmi:type="ecore:EClass" href="petrinet.ecore#//Transition"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_fcDUcSylEe-wqd8WJDWOGA" targetArrow="InputClosedArrow" routingStyle="tree"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/> + <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_fcDUciylEe-wqd8WJDWOGA" showIcon="false"> + <labelFormat>italic</labelFormat> + </beginLabelStyle> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_fcDUcyylEe-wqd8WJDWOGA" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/> + </ownedDiagramElements> + <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/> + <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_fBoCQCylEe-wqd8WJDWOGA"/> + <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/> + <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Package']"/> + <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Validation']"/> + <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Archetype']/@ownedRepresentationExtensions[name='Entities%20With%20Archetypes']/@layers[name='Archetypes']"/> + <target xmi:type="ecore:EPackage" href="petrinet.ecore#/"/> + </diagram:DSemanticDiagram> +</xmi:XMI> diff --git a/metamodel/swt.most.petrinet/model/petrinet.ecore b/metamodel/swt.most.petrinet/model/petrinet.ecore new file mode 100644 index 0000000000000000000000000000000000000000..9ec0189ca8a1bd1ce3ee942d0b863eb0423a468f --- /dev/null +++ b/metamodel/swt.most.petrinet/model/petrinet.ecore @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="petrinet" nsURI="http://www.example.org/petrinet" nsPrefix="petrinet"> + <eClassifiers xsi:type="ecore:EClass" name="PetriNet"> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="arcs" upperBound="-1" eType="#//Arc" + containment="true"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="elements" upperBound="-1" + eType="#//Element" containment="true"/> + </eClassifiers> + <eClassifiers xsi:type="ecore:EClass" name="Element" abstract="true"> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="identifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/> + </eClassifiers> + <eClassifiers xsi:type="ecore:EClass" name="Arc" abstract="true"/> + <eClassifiers xsi:type="ecore:EClass" name="IncomingArc" eSuperTypes="#//Arc"> + <eStructuralFeatures xsi:type="ecore:EReference" name="target" lowerBound="1" + eType="#//Transition"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="source" lowerBound="1" + eType="#//Place"/> + </eClassifiers> + <eClassifiers xsi:type="ecore:EClass" name="OutgoingArc" eSuperTypes="#//Arc"> + <eStructuralFeatures xsi:type="ecore:EReference" name="source" lowerBound="1" + eType="#//Transition"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="target" lowerBound="1" + eType="#//Place"/> + </eClassifiers> + <eClassifiers xsi:type="ecore:EClass" name="Place" eSuperTypes="#//Element"> + <eStructuralFeatures xsi:type="ecore:EReference" name="token" eType="#//Token" + containment="true"/> + </eClassifiers> + <eClassifiers xsi:type="ecore:EClass" name="Transition" eSuperTypes="#//Element"/> + <eClassifiers xsi:type="ecore:EClass" name="Token"/> +</ecore:EPackage> diff --git a/metamodel/swt.most.petrinet/model/petrinet.genmodel b/metamodel/swt.most.petrinet/model/petrinet.genmodel new file mode 100644 index 0000000000000000000000000000000000000000..1accf9b3aae6820614e48604ff96f2ced3bebb88 --- /dev/null +++ b/metamodel/swt.most.petrinet/model/petrinet.genmodel @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="UTF-8"?> +<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" + modelDirectory="/swt.most.petrinet/src-gen" creationIcons="false" + editDirectory="/swt.most.petrinet.edit/src-gen" editorDirectory="/swt.most.petrinet.editor/src-gen" + modelPluginID="swt.most.petrinet" modelName="Petrinet" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container" + codeFormatting="true" importerID="org.eclipse.emf.importer.ecore" complianceLevel="5.0" + copyrightFields="false" operationReflection="true" importOrganizing="true"> + <foreignModel>petrinet.ecore</foreignModel> + <testsDirectory xsi:nil="true"/> + <genPackages prefix="Petrinet" basePackage="swt.most" disposableProviderFactory="true" + ecorePackage="petrinet.ecore#/"> + <genClasses ecoreClass="petrinet.ecore#//PetriNet"> + <genFeatures createChild="false" ecoreFeature="ecore:EAttribute petrinet.ecore#//PetriNet/name"/> + <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference petrinet.ecore#//PetriNet/arcs"/> + <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference petrinet.ecore#//PetriNet/elements"/> + </genClasses> + <genClasses ecoreClass="petrinet.ecore#//Element"> + <genFeatures createChild="false" ecoreFeature="ecore:EAttribute petrinet.ecore#//Element/identifier"/> + </genClasses> + <genClasses ecoreClass="petrinet.ecore#//Arc"/> + <genClasses ecoreClass="petrinet.ecore#//IncomingArc"> + <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference petrinet.ecore#//IncomingArc/target"/> + <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference petrinet.ecore#//IncomingArc/source"/> + </genClasses> + <genClasses ecoreClass="petrinet.ecore#//OutgoingArc"> + <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference petrinet.ecore#//OutgoingArc/source"/> + <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference petrinet.ecore#//OutgoingArc/target"/> + </genClasses> + <genClasses ecoreClass="petrinet.ecore#//Place"> + <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference petrinet.ecore#//Place/token"/> + </genClasses> + <genClasses ecoreClass="petrinet.ecore#//Transition"/> + <genClasses ecoreClass="petrinet.ecore#//Token"/> + </genPackages> +</genmodel:GenModel> diff --git a/metamodel/swt.most.petrinet/model/petrinet.svg b/metamodel/swt.most.petrinet/model/petrinet.svg new file mode 100644 index 0000000000000000000000000000000000000000..75b1e57363e68910af94793568963f461c583df3 --- /dev/null +++ b/metamodel/swt.most.petrinet/model/petrinet.svg @@ -0,0 +1,361 @@ +<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-dasharray="none" shape-rendering="auto" font-family="'Dialog'" width="894" text-rendering="auto" fill-opacity="1" contentScriptType="text/ecmascript" color-interpolation="auto" color-rendering="auto" preserveAspectRatio="xMidYMid meet" font-size="12px" xmlns:diagram="http://www.eclipse.org/sirius/diagram/1.1.0" diagram:semanticRoot="platform:/resource/swt.most.petrinet/model/petrinet.ecore#/" viewBox="0 0 894 683" fill="black" stroke="black" image-rendering="auto" stroke-miterlimit="10" zoomAndPan="magnify" version="1.0" stroke-linecap="square" stroke-linejoin="miter" contentStyleType="text/css" font-style="normal" height="683" stroke-width="1" stroke-dashoffset="0" font-weight="normal" stroke-opacity="1"> + <!--Generated by the Batik Graphics2D SVG Generator--> + <defs id="genericDefs"/> + <g> + <defs id="defs1"> + <linearGradient x1="414" x2="542" y1="3" gradientUnits="userSpaceOnUse" y2="116" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient1" xlink:show="other" spreadMethod="pad"> + <stop stop-opacity="1" stop-color="white" offset="0%"/> + <stop stop-opacity="1" stop-color="rgb(255,252,216)" offset="100%"/> + </linearGradient> + <linearGradient x1="234" x2="385" y1="187" gradientUnits="userSpaceOnUse" y2="311" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient2" xlink:show="other" spreadMethod="pad"> + <stop stop-opacity="1" stop-color="white" offset="0%"/> + <stop stop-opacity="1" stop-color="rgb(228,228,228)" offset="100%"/> + </linearGradient> + <linearGradient x1="631" x2="749" y1="195" gradientUnits="userSpaceOnUse" y2="303" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient3" xlink:show="other" spreadMethod="pad"> + <stop stop-opacity="1" stop-color="white" offset="0%"/> + <stop stop-opacity="1" stop-color="rgb(228,228,228)" offset="100%"/> + </linearGradient> + <linearGradient x1="554" x2="672" y1="362" gradientUnits="userSpaceOnUse" y2="470" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient4" xlink:show="other" spreadMethod="pad"> + <stop stop-opacity="1" stop-color="white" offset="0%"/> + <stop stop-opacity="1" stop-color="rgb(255,252,216)" offset="100%"/> + </linearGradient> + <linearGradient x1="764" x2="882" y1="362" gradientUnits="userSpaceOnUse" y2="470" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient5" xlink:show="other" spreadMethod="pad"> + <stop stop-opacity="1" stop-color="white" offset="0%"/> + <stop stop-opacity="1" stop-color="rgb(255,252,216)" offset="100%"/> + </linearGradient> + <linearGradient x1="127" x2="245" y1="551" gradientUnits="userSpaceOnUse" y2="659" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient6" xlink:show="other" spreadMethod="pad"> + <stop stop-opacity="1" stop-color="white" offset="0%"/> + <stop stop-opacity="1" stop-color="rgb(255,252,216)" offset="100%"/> + </linearGradient> + <linearGradient x1="309" x2="427" y1="446" gradientUnits="userSpaceOnUse" y2="554" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient7" xlink:show="other" spreadMethod="pad"> + <stop stop-opacity="1" stop-color="white" offset="0%"/> + <stop stop-opacity="1" stop-color="rgb(255,252,216)" offset="100%"/> + </linearGradient> + <linearGradient x1="10" x2="128" y1="236" gradientUnits="userSpaceOnUse" y2="344" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient8" xlink:show="other" spreadMethod="pad"> + <stop stop-opacity="1" stop-color="white" offset="0%"/> + <stop stop-opacity="1" stop-color="rgb(255,252,216)" offset="100%"/> + </linearGradient> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath1"> + <path d="M413 9 L545 9 L545 111 L413 111 L413 9 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath2"> + <path d="M413 9 L543 9 L543 109 L413 109 L413 9 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath3"> + <path d="M439 14 L516 14 L516 37 L439 37 L439 14 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath4"> + <path d="M439 14 L519 14 L519 37 L439 37 L439 14 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath5"> + <path d="M418 42 L538 42 L538 65 L418 65 L418 42 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath6"> + <path d="M418 42 L541 42 L541 65 L418 65 L418 42 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath7"> + <path d="M414 40 L542 40 L542 108 L414 108 L414 40 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath8"> + <path d="M233 199 L388 199 L388 301 L233 301 L233 199 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath9"> + <path d="M233 199 L386 199 L386 299 L233 299 L233 199 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath10"> + <path d="M271 204 L348 204 L348 227 L271 227 L271 204 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath11"> + <path d="M271 204 L352 204 L352 227 L271 227 L271 204 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath12"> + <path d="M238 232 L381 232 L381 255 L238 255 L238 232 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath13"> + <path d="M238 232 L384 232 L384 255 L238 255 L238 232 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath14"> + <path d="M234 230 L385 230 L385 298 L234 298 L234 230 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath15"> + <path d="M630 199 L752 199 L752 301 L630 301 L630 199 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath16"> + <path d="M630 199 L750 199 L750 299 L630 299 L630 199 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath17"> + <path d="M668 204 L712 204 L712 227 L668 227 L668 204 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath18"> + <path d="M668 204 L715 204 L715 227 L668 227 L668 204 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath19"> + <path d="M631 230 L749 230 L749 298 L631 298 L631 230 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath20"> + <path d="M553 366 L675 366 L675 468 L553 468 L553 366 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath21"> + <path d="M553 366 L673 366 L673 466 L553 466 L553 366 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath22"> + <path d="M558 371 L667 371 L667 394 L558 394 L558 371 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath23"> + <path d="M558 371 L671 371 L671 394 L558 394 L558 371 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath24"> + <path d="M554 397 L672 397 L672 465 L554 465 L554 397 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath25"> + <path d="M763 366 L885 366 L885 468 L763 468 L763 366 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath26"> + <path d="M763 366 L883 366 L883 466 L763 466 L763 366 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath27"> + <path d="M768 371 L878 371 L878 394 L768 394 L768 371 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath28"> + <path d="M768 371 L882 371 L882 394 L768 394 L768 371 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath29"> + <path d="M764 397 L882 397 L882 465 L764 465 L764 397 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath30"> + <path d="M126 555 L248 555 L248 657 L126 657 L126 555 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath31"> + <path d="M126 555 L246 555 L246 655 L126 655 L126 555 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath32"> + <path d="M157 560 L214 560 L214 583 L157 583 L157 560 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath33"> + <path d="M157 560 L217 560 L217 583 L157 583 L157 560 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath34"> + <path d="M127 586 L245 586 L245 654 L127 654 L127 586 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath35"> + <path d="M308 450 L430 450 L430 552 L308 552 L308 450 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath36"> + <path d="M308 450 L428 450 L428 550 L308 550 L308 450 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath37"> + <path d="M323 455 L412 455 L412 478 L323 478 L323 455 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath38"> + <path d="M323 455 L415 455 L415 478 L323 478 L323 455 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath39"> + <path d="M309 481 L427 481 L427 549 L309 549 L309 481 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath40"> + <path d="M9 240 L131 240 L131 342 L9 342 L9 240 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath41"> + <path d="M9 240 L129 240 L129 340 L9 340 L9 240 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath42"> + <path d="M38 245 L99 245 L99 268 L38 268 L38 245 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath43"> + <path d="M38 245 L103 245 L103 268 L38 268 L38 245 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath44"> + <path d="M10 271 L128 271 L128 339 L10 339 L10 271 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath45"> + <path d="M-1 -1 L895 -1 L895 684 L-1 684 L-1 -1 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath46"> + <path d="M714 173 L782 173 L782 196 L714 196 L714 173 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath47"> + <path d="M541 56 L556 56 L556 65 L541 65 L541 56 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath48"> + <path d="M690 192 L699 192 L699 202 L690 202 L690 192 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath49"> + <path d="M194 173 L298 173 L298 196 L194 196 L194 173 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath50"> + <path d="M401 56 L416 56 L416 65 L401 65 L401 56 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath51"> + <path d="M305 192 L314 192 L314 202 L305 202 L305 192 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath52"> + <path d="M441 492 L525 492 L525 515 L441 515 L441 492 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath53"> + <path d="M426 482 L436 482 L436 491 L426 491 L426 482 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath54"> + <path d="M252 596 L341 596 L341 619 L252 619 L252 596 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath55"> + <path d="M244 586 L254 586 L254 595 L244 595 L244 586 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath56"> + <path d="M441 535 L530 535 L530 558 L441 558 L441 535 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath57"> + <path d="M426 524 L436 524 L436 533 L426 533 L426 524 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath58"> + <path d="M259 638 L343 638 L343 661 L259 661 L259 638 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath59"> + <path d="M244 628 L254 628 L254 637 L244 637 L244 628 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath60"> + <path d="M77 346 L159 346 L159 369 L77 369 L77 346 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath61"> + <path d="M114 602 L129 602 L129 611 L114 611 L114 602 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath62"> + <path d="M64 338 L73 338 L73 348 L64 348 L64 338 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath63"> + <path d="M686 297 L697 297 L697 308 L686 308 L686 297 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath64"> + <path d="M305 297 L316 297 L316 308 L305 308 L305 297 Z"/> + </clipPath> + </defs> + <g font-size="16px" fill="rgb(131,122,133)" font-family="'Segoe UI'" stroke-linejoin="round" stroke="rgb(131,122,133)" stroke-width="0" stroke-miterlimit="0"> + <rect x="415" y="11" clip-path="url(#clipPath1)" width="128" rx="4" opacity="0.255" ry="4" height="98" stroke="none"/> + <rect x="416" y="12" clip-path="url(#clipPath1)" width="128" rx="4" opacity="0.255" ry="4" height="98" stroke="none"/> + <rect x="414" y="10" clip-path="url(#clipPath2)" fill="url(#linearGradient1)" width="128" rx="4" ry="4" height="98" stroke="none"/> + </g> + <g font-size="16px" stroke-width="1.1" font-family="'Segoe UI'" stroke-linecap="butt"> + <rect x="414" y="10" clip-path="url(#clipPath2)" fill="none" width="127" rx="4" ry="4" height="97"/> + <image x="440" y="17" width="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAsklEQVR4XqWQ0QoB QRSG941sEhJ5F1HaViRCpKwoN25cUFI8khuvYvbq8IuaOuaftr34mmm+ztdpAhEJ 8qAesqIeLouC+PAGTHp34g2c56EasoGngeM0lKd5fDDpl9/9fcLTwGFSlNsplqsD eBrYj0tqbRt4GtgNy2rIBp4G1v0K/QN4GljGVUm2K0k2/4GngVlUU2vbwNPAqFtX QzbwNDDoNOgfwNNAr92UqOUGngay8gIKdwdeFkAbDAAAAABJRU5ErkJggg==" xlink:type="simple" xlink:actuate="onLoad" height="16" preserveAspectRatio="none" xlink:show="embed"/> + <text x="459" xml:space="preserve" y="33" clip-path="url(#clipPath4)" stroke="none">PetriNet</text> + <image x="419" y="45" width="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAWUlEQVR4XmNgGAWD EMyt0f9PCKPrQQFTKwz///h5EScGyaPrQQFdRaYYmpAxSB5dDwqozbH8//3HNTD+ 8ROKYWwgDZJH14MCitJs/2cl2ePEIHl0PaOAQgAAf2WC/D0GsQEAAAAASUVORK5C YII=" xlink:type="simple" xlink:actuate="onLoad" height="16" preserveAspectRatio="none" xlink:show="embed"/> + <text x="438" xml:space="preserve" y="61" clip-path="url(#clipPath6)" stroke="none">name : EString</text> + <line y2="41" fill="none" x1="415" clip-path="url(#clipPath7)" x2="541" y1="41"/> + <rect x="235" y="201" clip-path="url(#clipPath8)" fill="rgb(131,122,133)" width="151" rx="4" opacity="0.255" ry="4" height="98" stroke="none"/> + <rect x="236" y="202" clip-path="url(#clipPath8)" fill="rgb(131,122,133)" width="151" rx="4" opacity="0.255" ry="4" height="98" stroke="none"/> + <rect x="234" y="200" clip-path="url(#clipPath9)" fill="url(#linearGradient2)" width="151" rx="4" ry="4" height="98" stroke="none"/> + <rect x="234" y="200" clip-path="url(#clipPath9)" fill="none" width="150" rx="4" ry="4" height="97" stroke="rgb(125,125,125)"/> + <image stroke="rgb(125,125,125)" width="16" xlink:show="embed" xlink:type="simple" fill="rgb(125,125,125)" preserveAspectRatio="none" height="16" font-style="italic" x="272" y="207" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAw0lEQVR4XmP4//8/ AyUYQgApZIyuCB8Ga0YHILG5Nfo4MUgJDMMNQLIdTP/4eRErxmkAMsBnwOxqA7AS GMbpgu8/rgE1QDGMDaSnV2AxAKoRJgDmL5iRgxVPLjdCNQCZA8J9pSYYzkbGIHm8 BnQWmWFoQsYgebwGNOebg/2PKwxA8ngNqMux+N/U1vi/qRU7BsnjNaAyywrD2cgY JI/XgJIMGwxNyBgkj9eAglRbvGEAksdrQG6K/f+sJNwYJI/XAFIxAHIn7dCPjVWK AAAAAElFTkSuQmCC" xlink:actuate="onLoad"/> + <text font-style="italic" x="291" xml:space="preserve" y="223" clip-path="url(#clipPath11)" stroke="none">Element</text> + <image x="239" y="235" width="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAWUlEQVR4XmNgGAWD EMyt0f9PCKPrQQFTKwz///h5EScGyaPrQQFdRaYYmpAxSB5dDwqozbH8//3HNTD+ 8ROKYWwgDZJH14MCitJs/2cl2ePEIHl0PaOAQgAAf2WC/D0GsQEAAAAASUVORK5C YII=" xlink:type="simple" xlink:actuate="onLoad" height="16" preserveAspectRatio="none" xlink:show="embed"/> + <text x="258" xml:space="preserve" y="251" clip-path="url(#clipPath13)" stroke="none">identifier : EString</text> + <line clip-path="url(#clipPath14)" fill="none" x1="235" x2="384" y1="231" y2="231" stroke="rgb(125,125,125)"/> + <rect x="632" y="201" clip-path="url(#clipPath15)" fill="rgb(131,122,133)" width="118" rx="4" opacity="0.255" ry="4" height="98" stroke="none"/> + <rect x="633" y="202" clip-path="url(#clipPath15)" fill="rgb(131,122,133)" width="118" rx="4" opacity="0.255" ry="4" height="98" stroke="none"/> + <rect x="631" y="200" clip-path="url(#clipPath16)" fill="url(#linearGradient3)" width="118" rx="4" ry="4" height="98" stroke="none"/> + <rect x="631" y="200" clip-path="url(#clipPath16)" fill="none" width="117" rx="4" ry="4" height="97" stroke="rgb(125,125,125)"/> + <image stroke="rgb(125,125,125)" width="16" xlink:show="embed" xlink:type="simple" fill="rgb(125,125,125)" preserveAspectRatio="none" height="16" font-style="italic" x="669" y="207" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAw0lEQVR4XmP4//8/ AyUYQgApZIyuCB8Ga0YHILG5Nfo4MUgJDMMNQLIdTP/4eRErxmkAMsBnwOxqA7AS GMbpgu8/rgE1QDGMDaSnV2AxAKoRJgDmL5iRgxVPLjdCNQCZA8J9pSYYzkbGIHm8 BnQWmWFoQsYgebwGNOebg/2PKwxA8ngNqMux+N/U1vi/qRU7BsnjNaAyywrD2cgY JI/XgJIMGwxNyBgkj9eAglRbvGEAksdrQG6K/f+sJNwYJI/XAFIxAHIn7dCPjVWK AAAAAElFTkSuQmCC" xlink:actuate="onLoad"/> + <text font-style="italic" x="688" xml:space="preserve" y="223" clip-path="url(#clipPath18)" stroke="none">Arc</text> + <line clip-path="url(#clipPath19)" fill="none" x1="632" x2="748" y1="231" y2="231" stroke="rgb(125,125,125)"/> + <rect x="555" y="368" clip-path="url(#clipPath20)" fill="rgb(131,122,133)" width="118" rx="4" opacity="0.255" ry="4" height="98" stroke="none"/> + <rect x="556" y="369" clip-path="url(#clipPath20)" fill="rgb(131,122,133)" width="118" rx="4" opacity="0.255" ry="4" height="98" stroke="none"/> + <rect x="554" y="367" clip-path="url(#clipPath21)" fill="url(#linearGradient4)" width="118" rx="4" ry="4" height="98" stroke="none"/> + <rect x="554" y="367" clip-path="url(#clipPath21)" fill="none" width="117" rx="4" ry="4" height="97"/> + <image x="559" y="374" width="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAsklEQVR4XqWQ0QoB QRSG941sEhJ5F1HaViRCpKwoN25cUFI8khuvYvbq8IuaOuaftr34mmm+ztdpAhEJ 8qAesqIeLouC+PAGTHp34g2c56EasoGngeM0lKd5fDDpl9/9fcLTwGFSlNsplqsD eBrYj0tqbRt4GtgNy2rIBp4G1v0K/QN4GljGVUm2K0k2/4GngVlUU2vbwNPAqFtX QzbwNDDoNOgfwNNAr92UqOUGngay8gIKdwdeFkAbDAAAAABJRU5ErkJggg==" xlink:type="simple" xlink:actuate="onLoad" height="16" preserveAspectRatio="none" xlink:show="embed"/> + <text x="578" xml:space="preserve" y="390" clip-path="url(#clipPath23)" stroke="none">IncomingArc</text> + <line y2="398" fill="none" x1="555" clip-path="url(#clipPath24)" x2="671" y1="398"/> + <rect x="765" y="368" clip-path="url(#clipPath25)" fill="rgb(131,122,133)" width="118" rx="4" opacity="0.255" ry="4" height="98" stroke="none"/> + <rect x="766" y="369" clip-path="url(#clipPath25)" fill="rgb(131,122,133)" width="118" rx="4" opacity="0.255" ry="4" height="98" stroke="none"/> + <rect x="764" y="367" clip-path="url(#clipPath26)" fill="url(#linearGradient5)" width="118" rx="4" ry="4" height="98" stroke="none"/> + <rect x="764" y="367" clip-path="url(#clipPath26)" fill="none" width="117" rx="4" ry="4" height="97"/> + <image x="769" y="374" width="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAsklEQVR4XqWQ0QoB QRSG941sEhJ5F1HaViRCpKwoN25cUFI8khuvYvbq8IuaOuaftr34mmm+ztdpAhEJ 8qAesqIeLouC+PAGTHp34g2c56EasoGngeM0lKd5fDDpl9/9fcLTwGFSlNsplqsD eBrYj0tqbRt4GtgNy2rIBp4G1v0K/QN4GljGVUm2K0k2/4GngVlUU2vbwNPAqFtX QzbwNDDoNOgfwNNAr92UqOUGngay8gIKdwdeFkAbDAAAAABJRU5ErkJggg==" xlink:type="simple" xlink:actuate="onLoad" height="16" preserveAspectRatio="none" xlink:show="embed"/> + <text x="788" xml:space="preserve" y="390" clip-path="url(#clipPath28)" stroke="none">OutgoingArc</text> + <line y2="398" fill="none" x1="765" clip-path="url(#clipPath29)" x2="881" y1="398"/> + <rect x="128" y="557" clip-path="url(#clipPath30)" fill="rgb(131,122,133)" width="118" rx="4" opacity="0.255" ry="4" height="98" stroke="none"/> + <rect x="129" y="558" clip-path="url(#clipPath30)" fill="rgb(131,122,133)" width="118" rx="4" opacity="0.255" ry="4" height="98" stroke="none"/> + <rect x="127" y="556" clip-path="url(#clipPath31)" fill="url(#linearGradient6)" width="118" rx="4" ry="4" height="98" stroke="none"/> + <rect x="127" y="556" clip-path="url(#clipPath31)" fill="none" width="117" rx="4" ry="4" height="97"/> + <image x="158" y="563" width="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAsklEQVR4XqWQ0QoB QRSG941sEhJ5F1HaViRCpKwoN25cUFI8khuvYvbq8IuaOuaftr34mmm+ztdpAhEJ 8qAesqIeLouC+PAGTHp34g2c56EasoGngeM0lKd5fDDpl9/9fcLTwGFSlNsplqsD eBrYj0tqbRt4GtgNy2rIBp4G1v0K/QN4GljGVUm2K0k2/4GngVlUU2vbwNPAqFtX QzbwNDDoNOgfwNNAr92UqOUGngay8gIKdwdeFkAbDAAAAABJRU5ErkJggg==" xlink:type="simple" xlink:actuate="onLoad" height="16" preserveAspectRatio="none" xlink:show="embed"/> + <text x="177" xml:space="preserve" y="579" clip-path="url(#clipPath33)" stroke="none">Place</text> + <line y2="587" fill="none" x1="128" clip-path="url(#clipPath34)" x2="244" y1="587"/> + <rect x="310" y="452" clip-path="url(#clipPath35)" fill="rgb(131,122,133)" width="118" rx="4" opacity="0.255" ry="4" height="98" stroke="none"/> + <rect x="311" y="453" clip-path="url(#clipPath35)" fill="rgb(131,122,133)" width="118" rx="4" opacity="0.255" ry="4" height="98" stroke="none"/> + <rect x="309" y="451" clip-path="url(#clipPath36)" fill="url(#linearGradient7)" width="118" rx="4" ry="4" height="98" stroke="none"/> + <rect x="309" y="451" clip-path="url(#clipPath36)" fill="none" width="117" rx="4" ry="4" height="97"/> + <image x="324" y="458" width="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAsklEQVR4XqWQ0QoB QRSG941sEhJ5F1HaViRCpKwoN25cUFI8khuvYvbq8IuaOuaftr34mmm+ztdpAhEJ 8qAesqIeLouC+PAGTHp34g2c56EasoGngeM0lKd5fDDpl9/9fcLTwGFSlNsplqsD eBrYj0tqbRt4GtgNy2rIBp4G1v0K/QN4GljGVUm2K0k2/4GngVlUU2vbwNPAqFtX QzbwNDDoNOgfwNNAr92UqOUGngay8gIKdwdeFkAbDAAAAABJRU5ErkJggg==" xlink:type="simple" xlink:actuate="onLoad" height="16" preserveAspectRatio="none" xlink:show="embed"/> + <text x="343" xml:space="preserve" y="474" clip-path="url(#clipPath38)" stroke="none">Transition</text> + <line y2="482" fill="none" x1="310" clip-path="url(#clipPath39)" x2="426" y1="482"/> + <rect x="11" y="242" clip-path="url(#clipPath40)" fill="rgb(131,122,133)" width="118" rx="4" opacity="0.255" ry="4" height="98" stroke="none"/> + <rect x="12" y="243" clip-path="url(#clipPath40)" fill="rgb(131,122,133)" width="118" rx="4" opacity="0.255" ry="4" height="98" stroke="none"/> + <rect x="10" y="241" clip-path="url(#clipPath41)" fill="url(#linearGradient8)" width="118" rx="4" ry="4" height="98" stroke="none"/> + <rect x="10" y="241" clip-path="url(#clipPath41)" fill="none" width="117" rx="4" ry="4" height="97"/> + <image x="39" y="248" width="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAsklEQVR4XqWQ0QoB QRSG941sEhJ5F1HaViRCpKwoN25cUFI8khuvYvbq8IuaOuaftr34mmm+ztdpAhEJ 8qAesqIeLouC+PAGTHp34g2c56EasoGngeM0lKd5fDDpl9/9fcLTwGFSlNsplqsD eBrYj0tqbRt4GtgNy2rIBp4G1v0K/QN4GljGVUm2K0k2/4GngVlUU2vbwNPAqFtX QzbwNDDoNOgfwNNAr92UqOUGngay8gIKdwdeFkAbDAAAAABJRU5ErkJggg==" xlink:type="simple" xlink:actuate="onLoad" height="16" preserveAspectRatio="none" xlink:show="embed"/> + <text x="58" xml:space="preserve" y="264" clip-path="url(#clipPath43)" stroke="none">Token</text> + <line y2="272" fill="none" x1="11" clip-path="url(#clipPath44)" x2="127" y1="272"/> + <line y2="60" fill="none" x1="542" clip-path="url(#clipPath45)" x2="694" y1="60"/> + <line y2="200" fill="none" x1="694" clip-path="url(#clipPath45)" x2="694" y1="60"/> + <text x="715" xml:space="preserve" y="192" clip-path="url(#clipPath46)" stroke="none">[0..*] arcs</text> + <polygon points=" 542 60 548 57 554 60 548 63" clip-path="url(#clipPath47)" stroke="none"/> + <polygon fill="none" points=" 542 60 548 57 554 60 548 63" clip-path="url(#clipPath47)"/> + <line y2="200" fill="none" x1="691" clip-path="url(#clipPath48)" x2="694" y1="193"/> + <line y2="193" fill="none" x1="694" clip-path="url(#clipPath48)" x2="697" y1="200"/> + <line y2="60" fill="none" x1="414" clip-path="url(#clipPath45)" x2="309" y1="60"/> + <line y2="200" fill="none" x1="309" clip-path="url(#clipPath45)" x2="309" y1="60"/> + <text x="195" xml:space="preserve" y="192" clip-path="url(#clipPath49)" stroke="none">[0..*] elements</text> + <polygon points=" 414 60 408 63 402 60 408 57" clip-path="url(#clipPath50)" stroke="none"/> + <polygon fill="none" points=" 414 60 408 63 402 60 408 57" clip-path="url(#clipPath50)"/> + <line y2="200" fill="none" x1="306" clip-path="url(#clipPath51)" x2="309" y1="193"/> + <line y2="193" fill="none" x1="309" clip-path="url(#clipPath51)" x2="312" y1="200"/> + <line y2="486" fill="none" x1="589" clip-path="url(#clipPath45)" x2="589" y1="465"/> + <line y2="486" fill="none" x1="589" clip-path="url(#clipPath45)" x2="427" y1="486"/> + <text x="442" xml:space="preserve" y="511" clip-path="url(#clipPath52)" stroke="none">[1..1] target</text> + <line y2="486" fill="none" x1="434" clip-path="url(#clipPath53)" x2="427" y1="483"/> + <line y2="489" fill="none" x1="427" clip-path="url(#clipPath53)" x2="434" y1="486"/> + <line y2="521" fill="none" x1="614" clip-path="url(#clipPath45)" x2="614" y1="465"/> + <line y2="521" fill="none" x1="614" clip-path="url(#clipPath45)" x2="624" y1="521"/> + <line y2="534" fill="none" x1="624" clip-path="url(#clipPath45)" x2="624" y1="521"/> + <line y2="534" fill="none" x1="624" clip-path="url(#clipPath45)" x2="612" y1="534"/> + <line y2="590" fill="none" x1="612" clip-path="url(#clipPath45)" x2="612" y1="534"/> + <line y2="590" fill="none" x1="612" clip-path="url(#clipPath45)" x2="245" y1="590"/> + <text x="253" xml:space="preserve" y="615" clip-path="url(#clipPath54)" stroke="none">[1..1] source</text> + <line y2="590" fill="none" x1="252" clip-path="url(#clipPath55)" x2="245" y1="587"/> + <line y2="593" fill="none" x1="245" clip-path="url(#clipPath55)" x2="252" y1="590"/> + <line y2="528" fill="none" x1="806" clip-path="url(#clipPath45)" x2="806" y1="465"/> + <line y2="528" fill="none" x1="806" clip-path="url(#clipPath45)" x2="427" y1="528"/> + <text x="442" xml:space="preserve" y="554" clip-path="url(#clipPath56)" stroke="none">[1..1] source</text> + <line y2="528" fill="none" x1="434" clip-path="url(#clipPath57)" x2="427" y1="525"/> + <line y2="531" fill="none" x1="427" clip-path="url(#clipPath57)" x2="434" y1="528"/> + <line y2="632" fill="none" x1="841" clip-path="url(#clipPath45)" x2="841" y1="465"/> + <line y2="632" fill="none" x1="841" clip-path="url(#clipPath45)" x2="245" y1="632"/> + <text x="260" xml:space="preserve" y="657" clip-path="url(#clipPath58)" stroke="none">[1..1] target</text> + <line y2="632" fill="none" x1="252" clip-path="url(#clipPath59)" x2="245" y1="629"/> + <line y2="635" fill="none" x1="245" clip-path="url(#clipPath59)" x2="252" y1="632"/> + <line y2="606" fill="none" x1="127" clip-path="url(#clipPath45)" x2="68" y1="606"/> + <line y2="339" fill="none" x1="68" clip-path="url(#clipPath45)" x2="68" y1="606"/> + <text x="78" xml:space="preserve" y="365" clip-path="url(#clipPath60)" stroke="none">[0..1] token</text> + <polygon points=" 127 606 121 609 115 606 121 603" clip-path="url(#clipPath61)" stroke="none"/> + <polygon fill="none" points=" 127 606 121 609 115 606 121 603" clip-path="url(#clipPath61)"/> + <line y2="339" fill="none" x1="71" clip-path="url(#clipPath62)" x2="68" y1="346"/> + <line y2="346" fill="none" x1="68" clip-path="url(#clipPath62)" x2="65" y1="339"/> + <line clip-path="url(#clipPath45)" fill="none" x1="614" x2="614" y1="367" y2="325" stroke="rgb(136,136,136)"/> + <line clip-path="url(#clipPath45)" fill="none" x1="614" x2="691" y1="325" y2="325" stroke="rgb(136,136,136)"/> + <line clip-path="url(#clipPath45)" fill="none" x1="691" x2="691" y1="325" y2="298" stroke="rgb(136,136,136)"/> + <polygon fill="white" clip-path="url(#clipPath63)" points=" 691 298 695 306 687 306" stroke="none"/> + <polygon fill="none" clip-path="url(#clipPath63)" points=" 691 298 695 306 687 306" stroke="rgb(136,136,136)"/> + <line clip-path="url(#clipPath45)" fill="none" x1="824" x2="824" y1="367" y2="325" stroke="rgb(136,136,136)"/> + <line clip-path="url(#clipPath45)" fill="none" x1="824" x2="691" y1="325" y2="325" stroke="rgb(136,136,136)"/> + <line clip-path="url(#clipPath45)" fill="none" x1="691" x2="691" y1="325" y2="298" stroke="rgb(136,136,136)"/> + <polygon fill="white" clip-path="url(#clipPath63)" points=" 691 298 695 306 687 306" stroke="none"/> + <polygon fill="none" clip-path="url(#clipPath63)" points=" 691 298 695 306 687 306" stroke="rgb(136,136,136)"/> + <line clip-path="url(#clipPath45)" fill="none" x1="187" x2="187" y1="556" y2="325" stroke="rgb(136,136,136)"/> + <line clip-path="url(#clipPath45)" fill="none" x1="187" x2="310" y1="325" y2="325" stroke="rgb(136,136,136)"/> + <line clip-path="url(#clipPath45)" fill="none" x1="310" x2="310" y1="325" y2="298" stroke="rgb(136,136,136)"/> + <polygon fill="white" clip-path="url(#clipPath64)" points=" 310 298 314 306 306 306" stroke="none"/> + <polygon fill="none" clip-path="url(#clipPath64)" points=" 310 298 314 306 306 306" stroke="rgb(136,136,136)"/> + <line clip-path="url(#clipPath45)" fill="none" x1="369" x2="369" y1="451" y2="325" stroke="rgb(136,136,136)"/> + <line clip-path="url(#clipPath45)" fill="none" x1="369" x2="310" y1="325" y2="325" stroke="rgb(136,136,136)"/> + <line clip-path="url(#clipPath45)" fill="none" x1="310" x2="310" y1="325" y2="298" stroke="rgb(136,136,136)"/> + <polygon fill="white" clip-path="url(#clipPath64)" points=" 310 298 314 306 306 306" stroke="none"/> + <polygon fill="none" clip-path="url(#clipPath64)" points=" 310 298 314 306 306 306" stroke="rgb(136,136,136)"/> + </g> + </g> +</svg> diff --git a/metamodel/swt.most.petrinet/plugin.properties b/metamodel/swt.most.petrinet/plugin.properties new file mode 100644 index 0000000000000000000000000000000000000000..69c8f3c8e73d45d2163be4bf3c678cadd4d9ef89 --- /dev/null +++ b/metamodel/swt.most.petrinet/plugin.properties @@ -0,0 +1,4 @@ +# + +pluginName = swt.most.petrinet +providerName = www.example.org diff --git a/metamodel/swt.most.petrinet/plugin.xml b/metamodel/swt.most.petrinet/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..e741d689236b62d5080005d188d421c8a9e6eded --- /dev/null +++ b/metamodel/swt.most.petrinet/plugin.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.0"?> + +<!-- +--> + +<plugin> + + <extension point="org.eclipse.emf.ecore.generated_package"> + <!-- @generated petrinet --> + <package + uri="http://www.example.org/petrinet" + class="swt.most.petrinet.PetrinetPackage" + genModel="model/petrinet.genmodel"/> + </extension> + +</plugin> diff --git a/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/Arc.java b/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/Arc.java new file mode 100644 index 0000000000000000000000000000000000000000..ba76cc95989a1252547e621d42d2deead1834549 --- /dev/null +++ b/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/Arc.java @@ -0,0 +1,18 @@ +/** + */ +package swt.most.petrinet; + +import org.eclipse.emf.ecore.EObject; + +/** + * <!-- begin-user-doc --> + * A representation of the model object '<em><b>Arc</b></em>'. + * <!-- end-user-doc --> + * + * + * @see swt.most.petrinet.PetrinetPackage#getArc() + * @model abstract="true" + * @generated + */ +public interface Arc extends EObject { +} // Arc diff --git a/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/Element.java b/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/Element.java new file mode 100644 index 0000000000000000000000000000000000000000..e2f93130c60de51e95cd8161a8f4ef1a3c179ed4 --- /dev/null +++ b/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/Element.java @@ -0,0 +1,46 @@ +/** + */ +package swt.most.petrinet; + +import org.eclipse.emf.ecore.EObject; + +/** + * <!-- begin-user-doc --> + * A representation of the model object '<em><b>Element</b></em>'. + * <!-- end-user-doc --> + * + * <p> + * The following features are supported: + * </p> + * <ul> + * <li>{@link swt.most.petrinet.Element#getIdentifier <em>Identifier</em>}</li> + * </ul> + * + * @see swt.most.petrinet.PetrinetPackage#getElement() + * @model abstract="true" + * @generated + */ +public interface Element extends EObject { + /** + * Returns the value of the '<em><b>Identifier</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the value of the '<em>Identifier</em>' attribute. + * @see #setIdentifier(String) + * @see swt.most.petrinet.PetrinetPackage#getElement_Identifier() + * @model + * @generated + */ + String getIdentifier(); + + /** + * Sets the value of the '{@link swt.most.petrinet.Element#getIdentifier <em>Identifier</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>Identifier</em>' attribute. + * @see #getIdentifier() + * @generated + */ + void setIdentifier(String value); + +} // Element diff --git a/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/IncomingArc.java b/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/IncomingArc.java new file mode 100644 index 0000000000000000000000000000000000000000..c03936fea26d9818d4ceef079d9a0283632e9828 --- /dev/null +++ b/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/IncomingArc.java @@ -0,0 +1,67 @@ +/** + */ +package swt.most.petrinet; + +/** + * <!-- begin-user-doc --> + * A representation of the model object '<em><b>Incoming Arc</b></em>'. + * <!-- end-user-doc --> + * + * <p> + * The following features are supported: + * </p> + * <ul> + * <li>{@link swt.most.petrinet.IncomingArc#getTarget <em>Target</em>}</li> + * <li>{@link swt.most.petrinet.IncomingArc#getSource <em>Source</em>}</li> + * </ul> + * + * @see swt.most.petrinet.PetrinetPackage#getIncomingArc() + * @model + * @generated + */ +public interface IncomingArc extends Arc { + /** + * Returns the value of the '<em><b>Target</b></em>' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the value of the '<em>Target</em>' reference. + * @see #setTarget(Transition) + * @see swt.most.petrinet.PetrinetPackage#getIncomingArc_Target() + * @model required="true" + * @generated + */ + Transition getTarget(); + + /** + * Sets the value of the '{@link swt.most.petrinet.IncomingArc#getTarget <em>Target</em>}' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>Target</em>' reference. + * @see #getTarget() + * @generated + */ + void setTarget(Transition value); + + /** + * Returns the value of the '<em><b>Source</b></em>' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the value of the '<em>Source</em>' reference. + * @see #setSource(Place) + * @see swt.most.petrinet.PetrinetPackage#getIncomingArc_Source() + * @model required="true" + * @generated + */ + Place getSource(); + + /** + * Sets the value of the '{@link swt.most.petrinet.IncomingArc#getSource <em>Source</em>}' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>Source</em>' reference. + * @see #getSource() + * @generated + */ + void setSource(Place value); + +} // IncomingArc diff --git a/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/OutgoingArc.java b/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/OutgoingArc.java new file mode 100644 index 0000000000000000000000000000000000000000..f7204ecdf653e5ed3e65fae848516951ef79317c --- /dev/null +++ b/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/OutgoingArc.java @@ -0,0 +1,67 @@ +/** + */ +package swt.most.petrinet; + +/** + * <!-- begin-user-doc --> + * A representation of the model object '<em><b>Outgoing Arc</b></em>'. + * <!-- end-user-doc --> + * + * <p> + * The following features are supported: + * </p> + * <ul> + * <li>{@link swt.most.petrinet.OutgoingArc#getSource <em>Source</em>}</li> + * <li>{@link swt.most.petrinet.OutgoingArc#getTarget <em>Target</em>}</li> + * </ul> + * + * @see swt.most.petrinet.PetrinetPackage#getOutgoingArc() + * @model + * @generated + */ +public interface OutgoingArc extends Arc { + /** + * Returns the value of the '<em><b>Source</b></em>' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the value of the '<em>Source</em>' reference. + * @see #setSource(Transition) + * @see swt.most.petrinet.PetrinetPackage#getOutgoingArc_Source() + * @model required="true" + * @generated + */ + Transition getSource(); + + /** + * Sets the value of the '{@link swt.most.petrinet.OutgoingArc#getSource <em>Source</em>}' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>Source</em>' reference. + * @see #getSource() + * @generated + */ + void setSource(Transition value); + + /** + * Returns the value of the '<em><b>Target</b></em>' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the value of the '<em>Target</em>' reference. + * @see #setTarget(Place) + * @see swt.most.petrinet.PetrinetPackage#getOutgoingArc_Target() + * @model required="true" + * @generated + */ + Place getTarget(); + + /** + * Sets the value of the '{@link swt.most.petrinet.OutgoingArc#getTarget <em>Target</em>}' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>Target</em>' reference. + * @see #getTarget() + * @generated + */ + void setTarget(Place value); + +} // OutgoingArc diff --git a/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/PetriNet.java b/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/PetriNet.java new file mode 100644 index 0000000000000000000000000000000000000000..4431b19f3d5a0306d0c86fca2177504286fb3839 --- /dev/null +++ b/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/PetriNet.java @@ -0,0 +1,74 @@ +/** + */ +package swt.most.petrinet; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EObject; + +/** + * <!-- begin-user-doc --> + * A representation of the model object '<em><b>Petri Net</b></em>'. + * <!-- end-user-doc --> + * + * <p> + * The following features are supported: + * </p> + * <ul> + * <li>{@link swt.most.petrinet.PetriNet#getName <em>Name</em>}</li> + * <li>{@link swt.most.petrinet.PetriNet#getArcs <em>Arcs</em>}</li> + * <li>{@link swt.most.petrinet.PetriNet#getElements <em>Elements</em>}</li> + * </ul> + * + * @see swt.most.petrinet.PetrinetPackage#getPetriNet() + * @model + * @generated + */ +public interface PetriNet extends EObject { + /** + * Returns the value of the '<em><b>Name</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the value of the '<em>Name</em>' attribute. + * @see #setName(String) + * @see swt.most.petrinet.PetrinetPackage#getPetriNet_Name() + * @model + * @generated + */ + String getName(); + + /** + * Sets the value of the '{@link swt.most.petrinet.PetriNet#getName <em>Name</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>Name</em>' attribute. + * @see #getName() + * @generated + */ + void setName(String value); + + /** + * Returns the value of the '<em><b>Arcs</b></em>' containment reference list. + * The list contents are of type {@link swt.most.petrinet.Arc}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the value of the '<em>Arcs</em>' containment reference list. + * @see swt.most.petrinet.PetrinetPackage#getPetriNet_Arcs() + * @model containment="true" + * @generated + */ + EList<Arc> getArcs(); + + /** + * Returns the value of the '<em><b>Elements</b></em>' containment reference list. + * The list contents are of type {@link swt.most.petrinet.Element}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the value of the '<em>Elements</em>' containment reference list. + * @see swt.most.petrinet.PetrinetPackage#getPetriNet_Elements() + * @model containment="true" + * @generated + */ + EList<Element> getElements(); + +} // PetriNet diff --git a/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/PetrinetFactory.java b/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/PetrinetFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..a6461800f64fddeea2fc22fb486ef8a99825d98b --- /dev/null +++ b/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/PetrinetFactory.java @@ -0,0 +1,87 @@ +/** + */ +package swt.most.petrinet; + +import org.eclipse.emf.ecore.EFactory; + +/** + * <!-- begin-user-doc --> + * The <b>Factory</b> for the model. + * It provides a create method for each non-abstract class of the model. + * <!-- end-user-doc --> + * @see swt.most.petrinet.PetrinetPackage + * @generated + */ +public interface PetrinetFactory extends EFactory { + /** + * The singleton instance of the factory. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + PetrinetFactory eINSTANCE = swt.most.petrinet.impl.PetrinetFactoryImpl.init(); + + /** + * Returns a new object of class '<em>Petri Net</em>'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return a new object of class '<em>Petri Net</em>'. + * @generated + */ + PetriNet createPetriNet(); + + /** + * Returns a new object of class '<em>Incoming Arc</em>'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return a new object of class '<em>Incoming Arc</em>'. + * @generated + */ + IncomingArc createIncomingArc(); + + /** + * Returns a new object of class '<em>Outgoing Arc</em>'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return a new object of class '<em>Outgoing Arc</em>'. + * @generated + */ + OutgoingArc createOutgoingArc(); + + /** + * Returns a new object of class '<em>Place</em>'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return a new object of class '<em>Place</em>'. + * @generated + */ + Place createPlace(); + + /** + * Returns a new object of class '<em>Transition</em>'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return a new object of class '<em>Transition</em>'. + * @generated + */ + Transition createTransition(); + + /** + * Returns a new object of class '<em>Token</em>'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return a new object of class '<em>Token</em>'. + * @generated + */ + Token createToken(); + + /** + * Returns the package supported by this factory. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the package supported by this factory. + * @generated + */ + PetrinetPackage getPetrinetPackage(); + +} //PetrinetFactory diff --git a/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/PetrinetPackage.java b/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/PetrinetPackage.java new file mode 100644 index 0000000000000000000000000000000000000000..adc743e4232b2c7cbaca991b2fd156896229f2cf --- /dev/null +++ b/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/PetrinetPackage.java @@ -0,0 +1,738 @@ +/** + */ +package swt.most.petrinet; + +import org.eclipse.emf.ecore.EAttribute; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.EReference; + +/** + * <!-- begin-user-doc --> + * The <b>Package</b> for the model. + * It contains accessors for the meta objects to represent + * <ul> + * <li>each class,</li> + * <li>each feature of each class,</li> + * <li>each operation of each class,</li> + * <li>each enum,</li> + * <li>and each data type</li> + * </ul> + * <!-- end-user-doc --> + * @see swt.most.petrinet.PetrinetFactory + * @model kind="package" + * @generated + */ +public interface PetrinetPackage extends EPackage { + /** + * The package name. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + String eNAME = "petrinet"; + + /** + * The package namespace URI. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + String eNS_URI = "http://www.example.org/petrinet"; + + /** + * The package namespace name. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + String eNS_PREFIX = "petrinet"; + + /** + * The singleton instance of the package. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + PetrinetPackage eINSTANCE = swt.most.petrinet.impl.PetrinetPackageImpl.init(); + + /** + * The meta object id for the '{@link swt.most.petrinet.impl.PetriNetImpl <em>Petri Net</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see swt.most.petrinet.impl.PetriNetImpl + * @see swt.most.petrinet.impl.PetrinetPackageImpl#getPetriNet() + * @generated + */ + int PETRI_NET = 0; + + /** + * The feature id for the '<em><b>Name</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int PETRI_NET__NAME = 0; + + /** + * The feature id for the '<em><b>Arcs</b></em>' containment reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int PETRI_NET__ARCS = 1; + + /** + * The feature id for the '<em><b>Elements</b></em>' containment reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int PETRI_NET__ELEMENTS = 2; + + /** + * The number of structural features of the '<em>Petri Net</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int PETRI_NET_FEATURE_COUNT = 3; + + /** + * The number of operations of the '<em>Petri Net</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int PETRI_NET_OPERATION_COUNT = 0; + + /** + * The meta object id for the '{@link swt.most.petrinet.impl.ElementImpl <em>Element</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see swt.most.petrinet.impl.ElementImpl + * @see swt.most.petrinet.impl.PetrinetPackageImpl#getElement() + * @generated + */ + int ELEMENT = 1; + + /** + * The feature id for the '<em><b>Identifier</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int ELEMENT__IDENTIFIER = 0; + + /** + * The number of structural features of the '<em>Element</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int ELEMENT_FEATURE_COUNT = 1; + + /** + * The number of operations of the '<em>Element</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int ELEMENT_OPERATION_COUNT = 0; + + /** + * The meta object id for the '{@link swt.most.petrinet.impl.ArcImpl <em>Arc</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see swt.most.petrinet.impl.ArcImpl + * @see swt.most.petrinet.impl.PetrinetPackageImpl#getArc() + * @generated + */ + int ARC = 2; + + /** + * The number of structural features of the '<em>Arc</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int ARC_FEATURE_COUNT = 0; + + /** + * The number of operations of the '<em>Arc</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int ARC_OPERATION_COUNT = 0; + + /** + * The meta object id for the '{@link swt.most.petrinet.impl.IncomingArcImpl <em>Incoming Arc</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see swt.most.petrinet.impl.IncomingArcImpl + * @see swt.most.petrinet.impl.PetrinetPackageImpl#getIncomingArc() + * @generated + */ + int INCOMING_ARC = 3; + + /** + * The feature id for the '<em><b>Target</b></em>' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int INCOMING_ARC__TARGET = ARC_FEATURE_COUNT + 0; + + /** + * The feature id for the '<em><b>Source</b></em>' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int INCOMING_ARC__SOURCE = ARC_FEATURE_COUNT + 1; + + /** + * The number of structural features of the '<em>Incoming Arc</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int INCOMING_ARC_FEATURE_COUNT = ARC_FEATURE_COUNT + 2; + + /** + * The number of operations of the '<em>Incoming Arc</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int INCOMING_ARC_OPERATION_COUNT = ARC_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link swt.most.petrinet.impl.OutgoingArcImpl <em>Outgoing Arc</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see swt.most.petrinet.impl.OutgoingArcImpl + * @see swt.most.petrinet.impl.PetrinetPackageImpl#getOutgoingArc() + * @generated + */ + int OUTGOING_ARC = 4; + + /** + * The feature id for the '<em><b>Source</b></em>' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int OUTGOING_ARC__SOURCE = ARC_FEATURE_COUNT + 0; + + /** + * The feature id for the '<em><b>Target</b></em>' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int OUTGOING_ARC__TARGET = ARC_FEATURE_COUNT + 1; + + /** + * The number of structural features of the '<em>Outgoing Arc</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int OUTGOING_ARC_FEATURE_COUNT = ARC_FEATURE_COUNT + 2; + + /** + * The number of operations of the '<em>Outgoing Arc</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int OUTGOING_ARC_OPERATION_COUNT = ARC_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link swt.most.petrinet.impl.PlaceImpl <em>Place</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see swt.most.petrinet.impl.PlaceImpl + * @see swt.most.petrinet.impl.PetrinetPackageImpl#getPlace() + * @generated + */ + int PLACE = 5; + + /** + * The feature id for the '<em><b>Identifier</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int PLACE__IDENTIFIER = ELEMENT__IDENTIFIER; + + /** + * The feature id for the '<em><b>Token</b></em>' containment reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int PLACE__TOKEN = ELEMENT_FEATURE_COUNT + 0; + + /** + * The number of structural features of the '<em>Place</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int PLACE_FEATURE_COUNT = ELEMENT_FEATURE_COUNT + 1; + + /** + * The number of operations of the '<em>Place</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int PLACE_OPERATION_COUNT = ELEMENT_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link swt.most.petrinet.impl.TransitionImpl <em>Transition</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see swt.most.petrinet.impl.TransitionImpl + * @see swt.most.petrinet.impl.PetrinetPackageImpl#getTransition() + * @generated + */ + int TRANSITION = 6; + + /** + * The feature id for the '<em><b>Identifier</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int TRANSITION__IDENTIFIER = ELEMENT__IDENTIFIER; + + /** + * The number of structural features of the '<em>Transition</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int TRANSITION_FEATURE_COUNT = ELEMENT_FEATURE_COUNT + 0; + + /** + * The number of operations of the '<em>Transition</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int TRANSITION_OPERATION_COUNT = ELEMENT_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link swt.most.petrinet.impl.TokenImpl <em>Token</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see swt.most.petrinet.impl.TokenImpl + * @see swt.most.petrinet.impl.PetrinetPackageImpl#getToken() + * @generated + */ + int TOKEN = 7; + + /** + * The number of structural features of the '<em>Token</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int TOKEN_FEATURE_COUNT = 0; + + /** + * The number of operations of the '<em>Token</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int TOKEN_OPERATION_COUNT = 0; + + /** + * Returns the meta object for class '{@link swt.most.petrinet.PetriNet <em>Petri Net</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for class '<em>Petri Net</em>'. + * @see swt.most.petrinet.PetriNet + * @generated + */ + EClass getPetriNet(); + + /** + * Returns the meta object for the attribute '{@link swt.most.petrinet.PetriNet#getName <em>Name</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the attribute '<em>Name</em>'. + * @see swt.most.petrinet.PetriNet#getName() + * @see #getPetriNet() + * @generated + */ + EAttribute getPetriNet_Name(); + + /** + * Returns the meta object for the containment reference list '{@link swt.most.petrinet.PetriNet#getArcs <em>Arcs</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the containment reference list '<em>Arcs</em>'. + * @see swt.most.petrinet.PetriNet#getArcs() + * @see #getPetriNet() + * @generated + */ + EReference getPetriNet_Arcs(); + + /** + * Returns the meta object for the containment reference list '{@link swt.most.petrinet.PetriNet#getElements <em>Elements</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the containment reference list '<em>Elements</em>'. + * @see swt.most.petrinet.PetriNet#getElements() + * @see #getPetriNet() + * @generated + */ + EReference getPetriNet_Elements(); + + /** + * Returns the meta object for class '{@link swt.most.petrinet.Element <em>Element</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for class '<em>Element</em>'. + * @see swt.most.petrinet.Element + * @generated + */ + EClass getElement(); + + /** + * Returns the meta object for the attribute '{@link swt.most.petrinet.Element#getIdentifier <em>Identifier</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the attribute '<em>Identifier</em>'. + * @see swt.most.petrinet.Element#getIdentifier() + * @see #getElement() + * @generated + */ + EAttribute getElement_Identifier(); + + /** + * Returns the meta object for class '{@link swt.most.petrinet.Arc <em>Arc</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for class '<em>Arc</em>'. + * @see swt.most.petrinet.Arc + * @generated + */ + EClass getArc(); + + /** + * Returns the meta object for class '{@link swt.most.petrinet.IncomingArc <em>Incoming Arc</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for class '<em>Incoming Arc</em>'. + * @see swt.most.petrinet.IncomingArc + * @generated + */ + EClass getIncomingArc(); + + /** + * Returns the meta object for the reference '{@link swt.most.petrinet.IncomingArc#getTarget <em>Target</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the reference '<em>Target</em>'. + * @see swt.most.petrinet.IncomingArc#getTarget() + * @see #getIncomingArc() + * @generated + */ + EReference getIncomingArc_Target(); + + /** + * Returns the meta object for the reference '{@link swt.most.petrinet.IncomingArc#getSource <em>Source</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the reference '<em>Source</em>'. + * @see swt.most.petrinet.IncomingArc#getSource() + * @see #getIncomingArc() + * @generated + */ + EReference getIncomingArc_Source(); + + /** + * Returns the meta object for class '{@link swt.most.petrinet.OutgoingArc <em>Outgoing Arc</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for class '<em>Outgoing Arc</em>'. + * @see swt.most.petrinet.OutgoingArc + * @generated + */ + EClass getOutgoingArc(); + + /** + * Returns the meta object for the reference '{@link swt.most.petrinet.OutgoingArc#getSource <em>Source</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the reference '<em>Source</em>'. + * @see swt.most.petrinet.OutgoingArc#getSource() + * @see #getOutgoingArc() + * @generated + */ + EReference getOutgoingArc_Source(); + + /** + * Returns the meta object for the reference '{@link swt.most.petrinet.OutgoingArc#getTarget <em>Target</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the reference '<em>Target</em>'. + * @see swt.most.petrinet.OutgoingArc#getTarget() + * @see #getOutgoingArc() + * @generated + */ + EReference getOutgoingArc_Target(); + + /** + * Returns the meta object for class '{@link swt.most.petrinet.Place <em>Place</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for class '<em>Place</em>'. + * @see swt.most.petrinet.Place + * @generated + */ + EClass getPlace(); + + /** + * Returns the meta object for the containment reference '{@link swt.most.petrinet.Place#getToken <em>Token</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the containment reference '<em>Token</em>'. + * @see swt.most.petrinet.Place#getToken() + * @see #getPlace() + * @generated + */ + EReference getPlace_Token(); + + /** + * Returns the meta object for class '{@link swt.most.petrinet.Transition <em>Transition</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for class '<em>Transition</em>'. + * @see swt.most.petrinet.Transition + * @generated + */ + EClass getTransition(); + + /** + * Returns the meta object for class '{@link swt.most.petrinet.Token <em>Token</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for class '<em>Token</em>'. + * @see swt.most.petrinet.Token + * @generated + */ + EClass getToken(); + + /** + * Returns the factory that creates the instances of the model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the factory that creates the instances of the model. + * @generated + */ + PetrinetFactory getPetrinetFactory(); + + /** + * <!-- begin-user-doc --> + * Defines literals for the meta objects that represent + * <ul> + * <li>each class,</li> + * <li>each feature of each class,</li> + * <li>each operation of each class,</li> + * <li>each enum,</li> + * <li>and each data type</li> + * </ul> + * <!-- end-user-doc --> + * @generated + */ + interface Literals { + /** + * The meta object literal for the '{@link swt.most.petrinet.impl.PetriNetImpl <em>Petri Net</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see swt.most.petrinet.impl.PetriNetImpl + * @see swt.most.petrinet.impl.PetrinetPackageImpl#getPetriNet() + * @generated + */ + EClass PETRI_NET = eINSTANCE.getPetriNet(); + + /** + * The meta object literal for the '<em><b>Name</b></em>' attribute feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EAttribute PETRI_NET__NAME = eINSTANCE.getPetriNet_Name(); + + /** + * The meta object literal for the '<em><b>Arcs</b></em>' containment reference list feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference PETRI_NET__ARCS = eINSTANCE.getPetriNet_Arcs(); + + /** + * The meta object literal for the '<em><b>Elements</b></em>' containment reference list feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference PETRI_NET__ELEMENTS = eINSTANCE.getPetriNet_Elements(); + + /** + * The meta object literal for the '{@link swt.most.petrinet.impl.ElementImpl <em>Element</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see swt.most.petrinet.impl.ElementImpl + * @see swt.most.petrinet.impl.PetrinetPackageImpl#getElement() + * @generated + */ + EClass ELEMENT = eINSTANCE.getElement(); + + /** + * The meta object literal for the '<em><b>Identifier</b></em>' attribute feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EAttribute ELEMENT__IDENTIFIER = eINSTANCE.getElement_Identifier(); + + /** + * The meta object literal for the '{@link swt.most.petrinet.impl.ArcImpl <em>Arc</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see swt.most.petrinet.impl.ArcImpl + * @see swt.most.petrinet.impl.PetrinetPackageImpl#getArc() + * @generated + */ + EClass ARC = eINSTANCE.getArc(); + + /** + * The meta object literal for the '{@link swt.most.petrinet.impl.IncomingArcImpl <em>Incoming Arc</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see swt.most.petrinet.impl.IncomingArcImpl + * @see swt.most.petrinet.impl.PetrinetPackageImpl#getIncomingArc() + * @generated + */ + EClass INCOMING_ARC = eINSTANCE.getIncomingArc(); + + /** + * The meta object literal for the '<em><b>Target</b></em>' reference feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference INCOMING_ARC__TARGET = eINSTANCE.getIncomingArc_Target(); + + /** + * The meta object literal for the '<em><b>Source</b></em>' reference feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference INCOMING_ARC__SOURCE = eINSTANCE.getIncomingArc_Source(); + + /** + * The meta object literal for the '{@link swt.most.petrinet.impl.OutgoingArcImpl <em>Outgoing Arc</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see swt.most.petrinet.impl.OutgoingArcImpl + * @see swt.most.petrinet.impl.PetrinetPackageImpl#getOutgoingArc() + * @generated + */ + EClass OUTGOING_ARC = eINSTANCE.getOutgoingArc(); + + /** + * The meta object literal for the '<em><b>Source</b></em>' reference feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference OUTGOING_ARC__SOURCE = eINSTANCE.getOutgoingArc_Source(); + + /** + * The meta object literal for the '<em><b>Target</b></em>' reference feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference OUTGOING_ARC__TARGET = eINSTANCE.getOutgoingArc_Target(); + + /** + * The meta object literal for the '{@link swt.most.petrinet.impl.PlaceImpl <em>Place</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see swt.most.petrinet.impl.PlaceImpl + * @see swt.most.petrinet.impl.PetrinetPackageImpl#getPlace() + * @generated + */ + EClass PLACE = eINSTANCE.getPlace(); + + /** + * The meta object literal for the '<em><b>Token</b></em>' containment reference feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference PLACE__TOKEN = eINSTANCE.getPlace_Token(); + + /** + * The meta object literal for the '{@link swt.most.petrinet.impl.TransitionImpl <em>Transition</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see swt.most.petrinet.impl.TransitionImpl + * @see swt.most.petrinet.impl.PetrinetPackageImpl#getTransition() + * @generated + */ + EClass TRANSITION = eINSTANCE.getTransition(); + + /** + * The meta object literal for the '{@link swt.most.petrinet.impl.TokenImpl <em>Token</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see swt.most.petrinet.impl.TokenImpl + * @see swt.most.petrinet.impl.PetrinetPackageImpl#getToken() + * @generated + */ + EClass TOKEN = eINSTANCE.getToken(); + + } + +} //PetrinetPackage diff --git a/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/Place.java b/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/Place.java new file mode 100644 index 0000000000000000000000000000000000000000..64b3486e36479a1ebb46363e6418e492e821a456 --- /dev/null +++ b/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/Place.java @@ -0,0 +1,44 @@ +/** + */ +package swt.most.petrinet; + +/** + * <!-- begin-user-doc --> + * A representation of the model object '<em><b>Place</b></em>'. + * <!-- end-user-doc --> + * + * <p> + * The following features are supported: + * </p> + * <ul> + * <li>{@link swt.most.petrinet.Place#getToken <em>Token</em>}</li> + * </ul> + * + * @see swt.most.petrinet.PetrinetPackage#getPlace() + * @model + * @generated + */ +public interface Place extends Element { + /** + * Returns the value of the '<em><b>Token</b></em>' containment reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the value of the '<em>Token</em>' containment reference. + * @see #setToken(Token) + * @see swt.most.petrinet.PetrinetPackage#getPlace_Token() + * @model containment="true" + * @generated + */ + Token getToken(); + + /** + * Sets the value of the '{@link swt.most.petrinet.Place#getToken <em>Token</em>}' containment reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>Token</em>' containment reference. + * @see #getToken() + * @generated + */ + void setToken(Token value); + +} // Place diff --git a/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/Token.java b/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/Token.java new file mode 100644 index 0000000000000000000000000000000000000000..f7e9e600627ee6cdb050e79ee704783e218a257e --- /dev/null +++ b/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/Token.java @@ -0,0 +1,18 @@ +/** + */ +package swt.most.petrinet; + +import org.eclipse.emf.ecore.EObject; + +/** + * <!-- begin-user-doc --> + * A representation of the model object '<em><b>Token</b></em>'. + * <!-- end-user-doc --> + * + * + * @see swt.most.petrinet.PetrinetPackage#getToken() + * @model + * @generated + */ +public interface Token extends EObject { +} // Token diff --git a/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/Transition.java b/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/Transition.java new file mode 100644 index 0000000000000000000000000000000000000000..1205c20b7b4d022b6521df91b6d36628fa917a6a --- /dev/null +++ b/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/Transition.java @@ -0,0 +1,16 @@ +/** + */ +package swt.most.petrinet; + +/** + * <!-- begin-user-doc --> + * A representation of the model object '<em><b>Transition</b></em>'. + * <!-- end-user-doc --> + * + * + * @see swt.most.petrinet.PetrinetPackage#getTransition() + * @model + * @generated + */ +public interface Transition extends Element { +} // Transition diff --git a/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/impl/ArcImpl.java b/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/impl/ArcImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..216596226d99b51b62bb4b2018e2e9209bdce270 --- /dev/null +++ b/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/impl/ArcImpl.java @@ -0,0 +1,39 @@ +/** + */ +package swt.most.petrinet.impl; + +import org.eclipse.emf.ecore.EClass; + +import org.eclipse.emf.ecore.impl.MinimalEObjectImpl; + +import swt.most.petrinet.Arc; +import swt.most.petrinet.PetrinetPackage; + +/** + * <!-- begin-user-doc --> + * An implementation of the model object '<em><b>Arc</b></em>'. + * <!-- end-user-doc --> + * + * @generated + */ +public abstract class ArcImpl extends MinimalEObjectImpl.Container implements Arc { + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ArcImpl() { + super(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EClass eStaticClass() { + return PetrinetPackage.Literals.ARC; + } + +} //ArcImpl diff --git a/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/impl/ElementImpl.java b/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/impl/ElementImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..d7c7616312d53db652a702c882c736ce0833c724 --- /dev/null +++ b/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/impl/ElementImpl.java @@ -0,0 +1,165 @@ +/** + */ +package swt.most.petrinet.impl; + +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.ecore.EClass; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; +import org.eclipse.emf.ecore.impl.MinimalEObjectImpl; + +import swt.most.petrinet.Element; +import swt.most.petrinet.PetrinetPackage; + +/** + * <!-- begin-user-doc --> + * An implementation of the model object '<em><b>Element</b></em>'. + * <!-- end-user-doc --> + * <p> + * The following features are implemented: + * </p> + * <ul> + * <li>{@link swt.most.petrinet.impl.ElementImpl#getIdentifier <em>Identifier</em>}</li> + * </ul> + * + * @generated + */ +public abstract class ElementImpl extends MinimalEObjectImpl.Container implements Element { + /** + * The default value of the '{@link #getIdentifier() <em>Identifier</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getIdentifier() + * @generated + * @ordered + */ + protected static final String IDENTIFIER_EDEFAULT = null; + + /** + * The cached value of the '{@link #getIdentifier() <em>Identifier</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getIdentifier() + * @generated + * @ordered + */ + protected String identifier = IDENTIFIER_EDEFAULT; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ElementImpl() { + super(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EClass eStaticClass() { + return PetrinetPackage.Literals.ELEMENT; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getIdentifier() { + return identifier; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setIdentifier(String newIdentifier) { + String oldIdentifier = identifier; + identifier = newIdentifier; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, PetrinetPackage.ELEMENT__IDENTIFIER, oldIdentifier, + identifier)); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case PetrinetPackage.ELEMENT__IDENTIFIER: + return getIdentifier(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case PetrinetPackage.ELEMENT__IDENTIFIER: + setIdentifier((String) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case PetrinetPackage.ELEMENT__IDENTIFIER: + setIdentifier(IDENTIFIER_EDEFAULT); + return; + } + super.eUnset(featureID); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case PetrinetPackage.ELEMENT__IDENTIFIER: + return IDENTIFIER_EDEFAULT == null ? identifier != null : !IDENTIFIER_EDEFAULT.equals(identifier); + } + return super.eIsSet(featureID); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String toString() { + if (eIsProxy()) + return super.toString(); + + StringBuilder result = new StringBuilder(super.toString()); + result.append(" (identifier: "); + result.append(identifier); + result.append(')'); + return result.toString(); + } + +} //ElementImpl diff --git a/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/impl/IncomingArcImpl.java b/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/impl/IncomingArcImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..29c436d9bb41b517e7d86c10919babf09c75dd6e --- /dev/null +++ b/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/impl/IncomingArcImpl.java @@ -0,0 +1,223 @@ +/** + */ +package swt.most.petrinet.impl; + +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; + +import swt.most.petrinet.IncomingArc; +import swt.most.petrinet.PetrinetPackage; +import swt.most.petrinet.Place; +import swt.most.petrinet.Transition; + +/** + * <!-- begin-user-doc --> + * An implementation of the model object '<em><b>Incoming Arc</b></em>'. + * <!-- end-user-doc --> + * <p> + * The following features are implemented: + * </p> + * <ul> + * <li>{@link swt.most.petrinet.impl.IncomingArcImpl#getTarget <em>Target</em>}</li> + * <li>{@link swt.most.petrinet.impl.IncomingArcImpl#getSource <em>Source</em>}</li> + * </ul> + * + * @generated + */ +public class IncomingArcImpl extends ArcImpl implements IncomingArc { + /** + * The cached value of the '{@link #getTarget() <em>Target</em>}' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getTarget() + * @generated + * @ordered + */ + protected Transition target; + + /** + * The cached value of the '{@link #getSource() <em>Source</em>}' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getSource() + * @generated + * @ordered + */ + protected Place source; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IncomingArcImpl() { + super(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EClass eStaticClass() { + return PetrinetPackage.Literals.INCOMING_ARC; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Transition getTarget() { + if (target != null && target.eIsProxy()) { + InternalEObject oldTarget = (InternalEObject) target; + target = (Transition) eResolveProxy(oldTarget); + if (target != oldTarget) { + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.RESOLVE, PetrinetPackage.INCOMING_ARC__TARGET, + oldTarget, target)); + } + } + return target; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Transition basicGetTarget() { + return target; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setTarget(Transition newTarget) { + Transition oldTarget = target; + target = newTarget; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, PetrinetPackage.INCOMING_ARC__TARGET, oldTarget, + target)); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Place getSource() { + if (source != null && source.eIsProxy()) { + InternalEObject oldSource = (InternalEObject) source; + source = (Place) eResolveProxy(oldSource); + if (source != oldSource) { + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.RESOLVE, PetrinetPackage.INCOMING_ARC__SOURCE, + oldSource, source)); + } + } + return source; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Place basicGetSource() { + return source; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setSource(Place newSource) { + Place oldSource = source; + source = newSource; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, PetrinetPackage.INCOMING_ARC__SOURCE, oldSource, + source)); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case PetrinetPackage.INCOMING_ARC__TARGET: + if (resolve) + return getTarget(); + return basicGetTarget(); + case PetrinetPackage.INCOMING_ARC__SOURCE: + if (resolve) + return getSource(); + return basicGetSource(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case PetrinetPackage.INCOMING_ARC__TARGET: + setTarget((Transition) newValue); + return; + case PetrinetPackage.INCOMING_ARC__SOURCE: + setSource((Place) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case PetrinetPackage.INCOMING_ARC__TARGET: + setTarget((Transition) null); + return; + case PetrinetPackage.INCOMING_ARC__SOURCE: + setSource((Place) null); + return; + } + super.eUnset(featureID); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case PetrinetPackage.INCOMING_ARC__TARGET: + return target != null; + case PetrinetPackage.INCOMING_ARC__SOURCE: + return source != null; + } + return super.eIsSet(featureID); + } + +} //IncomingArcImpl diff --git a/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/impl/OutgoingArcImpl.java b/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/impl/OutgoingArcImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..af9f6eb184069994892eb3eb7a7c499f8e1baa56 --- /dev/null +++ b/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/impl/OutgoingArcImpl.java @@ -0,0 +1,223 @@ +/** + */ +package swt.most.petrinet.impl; + +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; + +import swt.most.petrinet.OutgoingArc; +import swt.most.petrinet.PetrinetPackage; +import swt.most.petrinet.Place; +import swt.most.petrinet.Transition; + +/** + * <!-- begin-user-doc --> + * An implementation of the model object '<em><b>Outgoing Arc</b></em>'. + * <!-- end-user-doc --> + * <p> + * The following features are implemented: + * </p> + * <ul> + * <li>{@link swt.most.petrinet.impl.OutgoingArcImpl#getSource <em>Source</em>}</li> + * <li>{@link swt.most.petrinet.impl.OutgoingArcImpl#getTarget <em>Target</em>}</li> + * </ul> + * + * @generated + */ +public class OutgoingArcImpl extends ArcImpl implements OutgoingArc { + /** + * The cached value of the '{@link #getSource() <em>Source</em>}' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getSource() + * @generated + * @ordered + */ + protected Transition source; + + /** + * The cached value of the '{@link #getTarget() <em>Target</em>}' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getTarget() + * @generated + * @ordered + */ + protected Place target; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected OutgoingArcImpl() { + super(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EClass eStaticClass() { + return PetrinetPackage.Literals.OUTGOING_ARC; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Transition getSource() { + if (source != null && source.eIsProxy()) { + InternalEObject oldSource = (InternalEObject) source; + source = (Transition) eResolveProxy(oldSource); + if (source != oldSource) { + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.RESOLVE, PetrinetPackage.OUTGOING_ARC__SOURCE, + oldSource, source)); + } + } + return source; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Transition basicGetSource() { + return source; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setSource(Transition newSource) { + Transition oldSource = source; + source = newSource; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, PetrinetPackage.OUTGOING_ARC__SOURCE, oldSource, + source)); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Place getTarget() { + if (target != null && target.eIsProxy()) { + InternalEObject oldTarget = (InternalEObject) target; + target = (Place) eResolveProxy(oldTarget); + if (target != oldTarget) { + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.RESOLVE, PetrinetPackage.OUTGOING_ARC__TARGET, + oldTarget, target)); + } + } + return target; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Place basicGetTarget() { + return target; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setTarget(Place newTarget) { + Place oldTarget = target; + target = newTarget; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, PetrinetPackage.OUTGOING_ARC__TARGET, oldTarget, + target)); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case PetrinetPackage.OUTGOING_ARC__SOURCE: + if (resolve) + return getSource(); + return basicGetSource(); + case PetrinetPackage.OUTGOING_ARC__TARGET: + if (resolve) + return getTarget(); + return basicGetTarget(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case PetrinetPackage.OUTGOING_ARC__SOURCE: + setSource((Transition) newValue); + return; + case PetrinetPackage.OUTGOING_ARC__TARGET: + setTarget((Place) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case PetrinetPackage.OUTGOING_ARC__SOURCE: + setSource((Transition) null); + return; + case PetrinetPackage.OUTGOING_ARC__TARGET: + setTarget((Place) null); + return; + } + super.eUnset(featureID); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case PetrinetPackage.OUTGOING_ARC__SOURCE: + return source != null; + case PetrinetPackage.OUTGOING_ARC__TARGET: + return target != null; + } + return super.eIsSet(featureID); + } + +} //OutgoingArcImpl diff --git a/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/impl/PetriNetImpl.java b/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/impl/PetriNetImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..9ac5a18f10aa95581d30edea7bd94dc4a4afeb85 --- /dev/null +++ b/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/impl/PetriNetImpl.java @@ -0,0 +1,260 @@ +/** + */ +package swt.most.petrinet.impl; + +import java.util.Collection; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; +import org.eclipse.emf.ecore.impl.MinimalEObjectImpl; + +import org.eclipse.emf.ecore.util.EObjectContainmentEList; +import org.eclipse.emf.ecore.util.InternalEList; + +import swt.most.petrinet.Arc; +import swt.most.petrinet.Element; +import swt.most.petrinet.PetriNet; +import swt.most.petrinet.PetrinetPackage; + +/** + * <!-- begin-user-doc --> + * An implementation of the model object '<em><b>Petri Net</b></em>'. + * <!-- end-user-doc --> + * <p> + * The following features are implemented: + * </p> + * <ul> + * <li>{@link swt.most.petrinet.impl.PetriNetImpl#getName <em>Name</em>}</li> + * <li>{@link swt.most.petrinet.impl.PetriNetImpl#getArcs <em>Arcs</em>}</li> + * <li>{@link swt.most.petrinet.impl.PetriNetImpl#getElements <em>Elements</em>}</li> + * </ul> + * + * @generated + */ +public class PetriNetImpl extends MinimalEObjectImpl.Container implements PetriNet { + /** + * The default value of the '{@link #getName() <em>Name</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getName() + * @generated + * @ordered + */ + protected static final String NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getName() <em>Name</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getName() + * @generated + * @ordered + */ + protected String name = NAME_EDEFAULT; + + /** + * The cached value of the '{@link #getArcs() <em>Arcs</em>}' containment reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getArcs() + * @generated + * @ordered + */ + protected EList<Arc> arcs; + + /** + * The cached value of the '{@link #getElements() <em>Elements</em>}' containment reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getElements() + * @generated + * @ordered + */ + protected EList<Element> elements; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected PetriNetImpl() { + super(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EClass eStaticClass() { + return PetrinetPackage.Literals.PETRI_NET; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getName() { + return name; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setName(String newName) { + String oldName = name; + name = newName; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, PetrinetPackage.PETRI_NET__NAME, oldName, name)); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EList<Arc> getArcs() { + if (arcs == null) { + arcs = new EObjectContainmentEList<Arc>(Arc.class, this, PetrinetPackage.PETRI_NET__ARCS); + } + return arcs; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EList<Element> getElements() { + if (elements == null) { + elements = new EObjectContainmentEList<Element>(Element.class, this, PetrinetPackage.PETRI_NET__ELEMENTS); + } + return elements; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case PetrinetPackage.PETRI_NET__ARCS: + return ((InternalEList<?>) getArcs()).basicRemove(otherEnd, msgs); + case PetrinetPackage.PETRI_NET__ELEMENTS: + return ((InternalEList<?>) getElements()).basicRemove(otherEnd, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case PetrinetPackage.PETRI_NET__NAME: + return getName(); + case PetrinetPackage.PETRI_NET__ARCS: + return getArcs(); + case PetrinetPackage.PETRI_NET__ELEMENTS: + return getElements(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @SuppressWarnings("unchecked") + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case PetrinetPackage.PETRI_NET__NAME: + setName((String) newValue); + return; + case PetrinetPackage.PETRI_NET__ARCS: + getArcs().clear(); + getArcs().addAll((Collection<? extends Arc>) newValue); + return; + case PetrinetPackage.PETRI_NET__ELEMENTS: + getElements().clear(); + getElements().addAll((Collection<? extends Element>) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case PetrinetPackage.PETRI_NET__NAME: + setName(NAME_EDEFAULT); + return; + case PetrinetPackage.PETRI_NET__ARCS: + getArcs().clear(); + return; + case PetrinetPackage.PETRI_NET__ELEMENTS: + getElements().clear(); + return; + } + super.eUnset(featureID); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case PetrinetPackage.PETRI_NET__NAME: + return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name); + case PetrinetPackage.PETRI_NET__ARCS: + return arcs != null && !arcs.isEmpty(); + case PetrinetPackage.PETRI_NET__ELEMENTS: + return elements != null && !elements.isEmpty(); + } + return super.eIsSet(featureID); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String toString() { + if (eIsProxy()) + return super.toString(); + + StringBuilder result = new StringBuilder(super.toString()); + result.append(" (name: "); + result.append(name); + result.append(')'); + return result.toString(); + } + +} //PetriNetImpl diff --git a/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/impl/PetrinetFactoryImpl.java b/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/impl/PetrinetFactoryImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..1e19c1dd044cfc53f694cb3796681d67b732ccf6 --- /dev/null +++ b/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/impl/PetrinetFactoryImpl.java @@ -0,0 +1,156 @@ +/** + */ +package swt.most.petrinet.impl; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EPackage; + +import org.eclipse.emf.ecore.impl.EFactoryImpl; + +import org.eclipse.emf.ecore.plugin.EcorePlugin; + +import swt.most.petrinet.*; + +/** + * <!-- begin-user-doc --> + * An implementation of the model <b>Factory</b>. + * <!-- end-user-doc --> + * @generated + */ +public class PetrinetFactoryImpl extends EFactoryImpl implements PetrinetFactory { + /** + * Creates the default factory implementation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static PetrinetFactory init() { + try { + PetrinetFactory thePetrinetFactory = (PetrinetFactory) EPackage.Registry.INSTANCE + .getEFactory(PetrinetPackage.eNS_URI); + if (thePetrinetFactory != null) { + return thePetrinetFactory; + } + } catch (Exception exception) { + EcorePlugin.INSTANCE.log(exception); + } + return new PetrinetFactoryImpl(); + } + + /** + * Creates an instance of the factory. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public PetrinetFactoryImpl() { + super(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public EObject create(EClass eClass) { + switch (eClass.getClassifierID()) { + case PetrinetPackage.PETRI_NET: + return createPetriNet(); + case PetrinetPackage.INCOMING_ARC: + return createIncomingArc(); + case PetrinetPackage.OUTGOING_ARC: + return createOutgoingArc(); + case PetrinetPackage.PLACE: + return createPlace(); + case PetrinetPackage.TRANSITION: + return createTransition(); + case PetrinetPackage.TOKEN: + return createToken(); + default: + throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public PetriNet createPetriNet() { + PetriNetImpl petriNet = new PetriNetImpl(); + return petriNet; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IncomingArc createIncomingArc() { + IncomingArcImpl incomingArc = new IncomingArcImpl(); + return incomingArc; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public OutgoingArc createOutgoingArc() { + OutgoingArcImpl outgoingArc = new OutgoingArcImpl(); + return outgoingArc; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Place createPlace() { + PlaceImpl place = new PlaceImpl(); + return place; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Transition createTransition() { + TransitionImpl transition = new TransitionImpl(); + return transition; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Token createToken() { + TokenImpl token = new TokenImpl(); + return token; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public PetrinetPackage getPetrinetPackage() { + return (PetrinetPackage) getEPackage(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @deprecated + * @generated + */ + @Deprecated + public static PetrinetPackage getPackage() { + return PetrinetPackage.eINSTANCE; + } + +} //PetrinetFactoryImpl diff --git a/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/impl/PetrinetPackageImpl.java b/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/impl/PetrinetPackageImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..eac5512809a1616816d24d18c728adf56deec76d --- /dev/null +++ b/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/impl/PetrinetPackageImpl.java @@ -0,0 +1,442 @@ +/** + */ +package swt.most.petrinet.impl; + +import org.eclipse.emf.ecore.EAttribute; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.EReference; + +import org.eclipse.emf.ecore.impl.EPackageImpl; + +import swt.most.petrinet.Arc; +import swt.most.petrinet.Element; +import swt.most.petrinet.IncomingArc; +import swt.most.petrinet.OutgoingArc; +import swt.most.petrinet.PetriNet; +import swt.most.petrinet.PetrinetFactory; +import swt.most.petrinet.PetrinetPackage; +import swt.most.petrinet.Place; +import swt.most.petrinet.Token; +import swt.most.petrinet.Transition; + +/** + * <!-- begin-user-doc --> + * An implementation of the model <b>Package</b>. + * <!-- end-user-doc --> + * @generated + */ +public class PetrinetPackageImpl extends EPackageImpl implements PetrinetPackage { + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private EClass petriNetEClass = null; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private EClass elementEClass = null; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private EClass arcEClass = null; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private EClass incomingArcEClass = null; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private EClass outgoingArcEClass = null; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private EClass placeEClass = null; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private EClass transitionEClass = null; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private EClass tokenEClass = null; + + /** + * Creates an instance of the model <b>Package</b>, registered with + * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package + * package URI value. + * <p>Note: the correct way to create the package is via the static + * factory method {@link #init init()}, which also performs + * initialization of the package, or returns the registered package, + * if one already exists. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see org.eclipse.emf.ecore.EPackage.Registry + * @see swt.most.petrinet.PetrinetPackage#eNS_URI + * @see #init() + * @generated + */ + private PetrinetPackageImpl() { + super(eNS_URI, PetrinetFactory.eINSTANCE); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private static boolean isInited = false; + + /** + * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends. + * + * <p>This method is used to initialize {@link PetrinetPackage#eINSTANCE} when that field is accessed. + * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #eNS_URI + * @see #createPackageContents() + * @see #initializePackageContents() + * @generated + */ + public static PetrinetPackage init() { + if (isInited) + return (PetrinetPackage) EPackage.Registry.INSTANCE.getEPackage(PetrinetPackage.eNS_URI); + + // Obtain or create and register package + Object registeredPetrinetPackage = EPackage.Registry.INSTANCE.get(eNS_URI); + PetrinetPackageImpl thePetrinetPackage = registeredPetrinetPackage instanceof PetrinetPackageImpl + ? (PetrinetPackageImpl) registeredPetrinetPackage + : new PetrinetPackageImpl(); + + isInited = true; + + // Create package meta-data objects + thePetrinetPackage.createPackageContents(); + + // Initialize created meta-data + thePetrinetPackage.initializePackageContents(); + + // Mark meta-data to indicate it can't be changed + thePetrinetPackage.freeze(); + + // Update the registry and return the package + EPackage.Registry.INSTANCE.put(PetrinetPackage.eNS_URI, thePetrinetPackage); + return thePetrinetPackage; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EClass getPetriNet() { + return petriNetEClass; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EAttribute getPetriNet_Name() { + return (EAttribute) petriNetEClass.getEStructuralFeatures().get(0); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getPetriNet_Arcs() { + return (EReference) petriNetEClass.getEStructuralFeatures().get(1); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getPetriNet_Elements() { + return (EReference) petriNetEClass.getEStructuralFeatures().get(2); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EClass getElement() { + return elementEClass; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EAttribute getElement_Identifier() { + return (EAttribute) elementEClass.getEStructuralFeatures().get(0); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EClass getArc() { + return arcEClass; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EClass getIncomingArc() { + return incomingArcEClass; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getIncomingArc_Target() { + return (EReference) incomingArcEClass.getEStructuralFeatures().get(0); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getIncomingArc_Source() { + return (EReference) incomingArcEClass.getEStructuralFeatures().get(1); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EClass getOutgoingArc() { + return outgoingArcEClass; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getOutgoingArc_Source() { + return (EReference) outgoingArcEClass.getEStructuralFeatures().get(0); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getOutgoingArc_Target() { + return (EReference) outgoingArcEClass.getEStructuralFeatures().get(1); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EClass getPlace() { + return placeEClass; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getPlace_Token() { + return (EReference) placeEClass.getEStructuralFeatures().get(0); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EClass getTransition() { + return transitionEClass; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EClass getToken() { + return tokenEClass; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public PetrinetFactory getPetrinetFactory() { + return (PetrinetFactory) getEFactoryInstance(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private boolean isCreated = false; + + /** + * Creates the meta-model objects for the package. This method is + * guarded to have no affect on any invocation but its first. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void createPackageContents() { + if (isCreated) + return; + isCreated = true; + + // Create classes and their features + petriNetEClass = createEClass(PETRI_NET); + createEAttribute(petriNetEClass, PETRI_NET__NAME); + createEReference(petriNetEClass, PETRI_NET__ARCS); + createEReference(petriNetEClass, PETRI_NET__ELEMENTS); + + elementEClass = createEClass(ELEMENT); + createEAttribute(elementEClass, ELEMENT__IDENTIFIER); + + arcEClass = createEClass(ARC); + + incomingArcEClass = createEClass(INCOMING_ARC); + createEReference(incomingArcEClass, INCOMING_ARC__TARGET); + createEReference(incomingArcEClass, INCOMING_ARC__SOURCE); + + outgoingArcEClass = createEClass(OUTGOING_ARC); + createEReference(outgoingArcEClass, OUTGOING_ARC__SOURCE); + createEReference(outgoingArcEClass, OUTGOING_ARC__TARGET); + + placeEClass = createEClass(PLACE); + createEReference(placeEClass, PLACE__TOKEN); + + transitionEClass = createEClass(TRANSITION); + + tokenEClass = createEClass(TOKEN); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private boolean isInitialized = false; + + /** + * Complete the initialization of the package and its meta-model. This + * method is guarded to have no affect on any invocation but its first. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void initializePackageContents() { + if (isInitialized) + return; + isInitialized = true; + + // Initialize package + setName(eNAME); + setNsPrefix(eNS_PREFIX); + setNsURI(eNS_URI); + + // Create type parameters + + // Set bounds for type parameters + + // Add supertypes to classes + incomingArcEClass.getESuperTypes().add(this.getArc()); + outgoingArcEClass.getESuperTypes().add(this.getArc()); + placeEClass.getESuperTypes().add(this.getElement()); + transitionEClass.getESuperTypes().add(this.getElement()); + + // Initialize classes, features, and operations; add parameters + initEClass(petriNetEClass, PetriNet.class, "PetriNet", !IS_ABSTRACT, !IS_INTERFACE, + IS_GENERATED_INSTANCE_CLASS); + initEAttribute(getPetriNet_Name(), ecorePackage.getEString(), "name", null, 0, 1, PetriNet.class, !IS_TRANSIENT, + !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getPetriNet_Arcs(), this.getArc(), null, "arcs", null, 0, -1, PetriNet.class, !IS_TRANSIENT, + !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, + IS_ORDERED); + initEReference(getPetriNet_Elements(), this.getElement(), null, "elements", null, 0, -1, PetriNet.class, + !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, + IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(elementEClass, Element.class, "Element", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEAttribute(getElement_Identifier(), ecorePackage.getEString(), "identifier", null, 0, 1, Element.class, + !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(arcEClass, Arc.class, "Arc", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + initEClass(incomingArcEClass, IncomingArc.class, "IncomingArc", !IS_ABSTRACT, !IS_INTERFACE, + IS_GENERATED_INSTANCE_CLASS); + initEReference(getIncomingArc_Target(), this.getTransition(), null, "target", null, 1, 1, IncomingArc.class, + !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, + IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getIncomingArc_Source(), this.getPlace(), null, "source", null, 1, 1, IncomingArc.class, + !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, + IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(outgoingArcEClass, OutgoingArc.class, "OutgoingArc", !IS_ABSTRACT, !IS_INTERFACE, + IS_GENERATED_INSTANCE_CLASS); + initEReference(getOutgoingArc_Source(), this.getTransition(), null, "source", null, 1, 1, OutgoingArc.class, + !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, + IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getOutgoingArc_Target(), this.getPlace(), null, "target", null, 1, 1, OutgoingArc.class, + !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, + IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(placeEClass, Place.class, "Place", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getPlace_Token(), this.getToken(), null, "token", null, 0, 1, Place.class, !IS_TRANSIENT, + !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, + IS_ORDERED); + + initEClass(transitionEClass, Transition.class, "Transition", !IS_ABSTRACT, !IS_INTERFACE, + IS_GENERATED_INSTANCE_CLASS); + + initEClass(tokenEClass, Token.class, "Token", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + // Create resource + createResource(eNS_URI); + } + +} //PetrinetPackageImpl diff --git a/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/impl/PlaceImpl.java b/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/impl/PlaceImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..91e90acbe954311376f88e5b8ccf910395ff279b --- /dev/null +++ b/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/impl/PlaceImpl.java @@ -0,0 +1,181 @@ +/** + */ +package swt.most.petrinet.impl; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; + +import swt.most.petrinet.PetrinetPackage; +import swt.most.petrinet.Place; +import swt.most.petrinet.Token; + +/** + * <!-- begin-user-doc --> + * An implementation of the model object '<em><b>Place</b></em>'. + * <!-- end-user-doc --> + * <p> + * The following features are implemented: + * </p> + * <ul> + * <li>{@link swt.most.petrinet.impl.PlaceImpl#getToken <em>Token</em>}</li> + * </ul> + * + * @generated + */ +public class PlaceImpl extends ElementImpl implements Place { + /** + * The cached value of the '{@link #getToken() <em>Token</em>}' containment reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getToken() + * @generated + * @ordered + */ + protected Token token; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected PlaceImpl() { + super(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EClass eStaticClass() { + return PetrinetPackage.Literals.PLACE; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Token getToken() { + return token; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public NotificationChain basicSetToken(Token newToken, NotificationChain msgs) { + Token oldToken = token; + token = newToken; + if (eNotificationRequired()) { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, PetrinetPackage.PLACE__TOKEN, + oldToken, newToken); + if (msgs == null) + msgs = notification; + else + msgs.add(notification); + } + return msgs; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setToken(Token newToken) { + if (newToken != token) { + NotificationChain msgs = null; + if (token != null) + msgs = ((InternalEObject) token).eInverseRemove(this, + EOPPOSITE_FEATURE_BASE - PetrinetPackage.PLACE__TOKEN, null, msgs); + if (newToken != null) + msgs = ((InternalEObject) newToken).eInverseAdd(this, + EOPPOSITE_FEATURE_BASE - PetrinetPackage.PLACE__TOKEN, null, msgs); + msgs = basicSetToken(newToken, msgs); + if (msgs != null) + msgs.dispatch(); + } else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, PetrinetPackage.PLACE__TOKEN, newToken, newToken)); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case PetrinetPackage.PLACE__TOKEN: + return basicSetToken(null, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case PetrinetPackage.PLACE__TOKEN: + return getToken(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case PetrinetPackage.PLACE__TOKEN: + setToken((Token) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case PetrinetPackage.PLACE__TOKEN: + setToken((Token) null); + return; + } + super.eUnset(featureID); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case PetrinetPackage.PLACE__TOKEN: + return token != null; + } + return super.eIsSet(featureID); + } + +} //PlaceImpl diff --git a/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/impl/TokenImpl.java b/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/impl/TokenImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..ae4d34a8c328348a279ec7b72acad8bed8d95073 --- /dev/null +++ b/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/impl/TokenImpl.java @@ -0,0 +1,39 @@ +/** + */ +package swt.most.petrinet.impl; + +import org.eclipse.emf.ecore.EClass; + +import org.eclipse.emf.ecore.impl.MinimalEObjectImpl; + +import swt.most.petrinet.PetrinetPackage; +import swt.most.petrinet.Token; + +/** + * <!-- begin-user-doc --> + * An implementation of the model object '<em><b>Token</b></em>'. + * <!-- end-user-doc --> + * + * @generated + */ +public class TokenImpl extends MinimalEObjectImpl.Container implements Token { + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TokenImpl() { + super(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EClass eStaticClass() { + return PetrinetPackage.Literals.TOKEN; + } + +} //TokenImpl diff --git a/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/impl/TransitionImpl.java b/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/impl/TransitionImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..2d206c2e64aae7cef8e1846e8909bf92f172a445 --- /dev/null +++ b/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/impl/TransitionImpl.java @@ -0,0 +1,37 @@ +/** + */ +package swt.most.petrinet.impl; + +import org.eclipse.emf.ecore.EClass; + +import swt.most.petrinet.PetrinetPackage; +import swt.most.petrinet.Transition; + +/** + * <!-- begin-user-doc --> + * An implementation of the model object '<em><b>Transition</b></em>'. + * <!-- end-user-doc --> + * + * @generated + */ +public class TransitionImpl extends ElementImpl implements Transition { + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TransitionImpl() { + super(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EClass eStaticClass() { + return PetrinetPackage.Literals.TRANSITION; + } + +} //TransitionImpl diff --git a/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/util/PetrinetAdapterFactory.java b/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/util/PetrinetAdapterFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..381c6184cc4cf42e73359bca018d36c548a772ac --- /dev/null +++ b/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/util/PetrinetAdapterFactory.java @@ -0,0 +1,252 @@ +/** + */ +package swt.most.petrinet.util; + +import org.eclipse.emf.common.notify.Adapter; +import org.eclipse.emf.common.notify.Notifier; + +import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl; + +import org.eclipse.emf.ecore.EObject; + +import swt.most.petrinet.*; + +/** + * <!-- begin-user-doc --> + * The <b>Adapter Factory</b> for the model. + * It provides an adapter <code>createXXX</code> method for each class of the model. + * <!-- end-user-doc --> + * @see swt.most.petrinet.PetrinetPackage + * @generated + */ +public class PetrinetAdapterFactory extends AdapterFactoryImpl { + /** + * The cached model package. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected static PetrinetPackage modelPackage; + + /** + * Creates an instance of the adapter factory. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public PetrinetAdapterFactory() { + if (modelPackage == null) { + modelPackage = PetrinetPackage.eINSTANCE; + } + } + + /** + * Returns whether this factory is applicable for the type of the object. + * <!-- begin-user-doc --> + * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model. + * <!-- end-user-doc --> + * @return whether this factory is applicable for the type of the object. + * @generated + */ + @Override + public boolean isFactoryForType(Object object) { + if (object == modelPackage) { + return true; + } + if (object instanceof EObject) { + return ((EObject) object).eClass().getEPackage() == modelPackage; + } + return false; + } + + /** + * The switch that delegates to the <code>createXXX</code> methods. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected PetrinetSwitch<Adapter> modelSwitch = new PetrinetSwitch<Adapter>() { + @Override + public Adapter casePetriNet(PetriNet object) { + return createPetriNetAdapter(); + } + + @Override + public Adapter caseElement(Element object) { + return createElementAdapter(); + } + + @Override + public Adapter caseArc(Arc object) { + return createArcAdapter(); + } + + @Override + public Adapter caseIncomingArc(IncomingArc object) { + return createIncomingArcAdapter(); + } + + @Override + public Adapter caseOutgoingArc(OutgoingArc object) { + return createOutgoingArcAdapter(); + } + + @Override + public Adapter casePlace(Place object) { + return createPlaceAdapter(); + } + + @Override + public Adapter caseTransition(Transition object) { + return createTransitionAdapter(); + } + + @Override + public Adapter caseToken(Token object) { + return createTokenAdapter(); + } + + @Override + public Adapter defaultCase(EObject object) { + return createEObjectAdapter(); + } + }; + + /** + * Creates an adapter for the <code>target</code>. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param target the object to adapt. + * @return the adapter for the <code>target</code>. + * @generated + */ + @Override + public Adapter createAdapter(Notifier target) { + return modelSwitch.doSwitch((EObject) target); + } + + /** + * Creates a new adapter for an object of class '{@link swt.most.petrinet.PetriNet <em>Petri Net</em>}'. + * <!-- begin-user-doc --> + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * <!-- end-user-doc --> + * @return the new adapter. + * @see swt.most.petrinet.PetriNet + * @generated + */ + public Adapter createPetriNetAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link swt.most.petrinet.Element <em>Element</em>}'. + * <!-- begin-user-doc --> + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * <!-- end-user-doc --> + * @return the new adapter. + * @see swt.most.petrinet.Element + * @generated + */ + public Adapter createElementAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link swt.most.petrinet.Arc <em>Arc</em>}'. + * <!-- begin-user-doc --> + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * <!-- end-user-doc --> + * @return the new adapter. + * @see swt.most.petrinet.Arc + * @generated + */ + public Adapter createArcAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link swt.most.petrinet.IncomingArc <em>Incoming Arc</em>}'. + * <!-- begin-user-doc --> + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * <!-- end-user-doc --> + * @return the new adapter. + * @see swt.most.petrinet.IncomingArc + * @generated + */ + public Adapter createIncomingArcAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link swt.most.petrinet.OutgoingArc <em>Outgoing Arc</em>}'. + * <!-- begin-user-doc --> + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * <!-- end-user-doc --> + * @return the new adapter. + * @see swt.most.petrinet.OutgoingArc + * @generated + */ + public Adapter createOutgoingArcAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link swt.most.petrinet.Place <em>Place</em>}'. + * <!-- begin-user-doc --> + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * <!-- end-user-doc --> + * @return the new adapter. + * @see swt.most.petrinet.Place + * @generated + */ + public Adapter createPlaceAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link swt.most.petrinet.Transition <em>Transition</em>}'. + * <!-- begin-user-doc --> + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * <!-- end-user-doc --> + * @return the new adapter. + * @see swt.most.petrinet.Transition + * @generated + */ + public Adapter createTransitionAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link swt.most.petrinet.Token <em>Token</em>}'. + * <!-- begin-user-doc --> + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * <!-- end-user-doc --> + * @return the new adapter. + * @see swt.most.petrinet.Token + * @generated + */ + public Adapter createTokenAdapter() { + return null; + } + + /** + * Creates a new adapter for the default case. + * <!-- begin-user-doc --> + * This default implementation returns null. + * <!-- end-user-doc --> + * @return the new adapter. + * @generated + */ + public Adapter createEObjectAdapter() { + return null; + } + +} //PetrinetAdapterFactory diff --git a/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/util/PetrinetSwitch.java b/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/util/PetrinetSwitch.java new file mode 100644 index 0000000000000000000000000000000000000000..3d1e96cb21787c1d0691de546d748f0fb2d0f440 --- /dev/null +++ b/metamodel/swt.most.petrinet/src-gen/swt/most/petrinet/util/PetrinetSwitch.java @@ -0,0 +1,274 @@ +/** + */ +package swt.most.petrinet.util; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EPackage; + +import org.eclipse.emf.ecore.util.Switch; + +import swt.most.petrinet.*; + +/** + * <!-- begin-user-doc --> + * The <b>Switch</b> for the model's inheritance hierarchy. + * It supports the call {@link #doSwitch(EObject) doSwitch(object)} + * to invoke the <code>caseXXX</code> method for each class of the model, + * starting with the actual class of the object + * and proceeding up the inheritance hierarchy + * until a non-null result is returned, + * which is the result of the switch. + * <!-- end-user-doc --> + * @see swt.most.petrinet.PetrinetPackage + * @generated + */ +public class PetrinetSwitch<T> extends Switch<T> { + /** + * The cached model package + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected static PetrinetPackage modelPackage; + + /** + * Creates an instance of the switch. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public PetrinetSwitch() { + if (modelPackage == null) { + modelPackage = PetrinetPackage.eINSTANCE; + } + } + + /** + * Checks whether this is a switch for the given package. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param ePackage the package in question. + * @return whether this is a switch for the given package. + * @generated + */ + @Override + protected boolean isSwitchFor(EPackage ePackage) { + return ePackage == modelPackage; + } + + /** + * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the first non-null result returned by a <code>caseXXX</code> call. + * @generated + */ + @Override + protected T doSwitch(int classifierID, EObject theEObject) { + switch (classifierID) { + case PetrinetPackage.PETRI_NET: { + PetriNet petriNet = (PetriNet) theEObject; + T result = casePetriNet(petriNet); + if (result == null) + result = defaultCase(theEObject); + return result; + } + case PetrinetPackage.ELEMENT: { + Element element = (Element) theEObject; + T result = caseElement(element); + if (result == null) + result = defaultCase(theEObject); + return result; + } + case PetrinetPackage.ARC: { + Arc arc = (Arc) theEObject; + T result = caseArc(arc); + if (result == null) + result = defaultCase(theEObject); + return result; + } + case PetrinetPackage.INCOMING_ARC: { + IncomingArc incomingArc = (IncomingArc) theEObject; + T result = caseIncomingArc(incomingArc); + if (result == null) + result = caseArc(incomingArc); + if (result == null) + result = defaultCase(theEObject); + return result; + } + case PetrinetPackage.OUTGOING_ARC: { + OutgoingArc outgoingArc = (OutgoingArc) theEObject; + T result = caseOutgoingArc(outgoingArc); + if (result == null) + result = caseArc(outgoingArc); + if (result == null) + result = defaultCase(theEObject); + return result; + } + case PetrinetPackage.PLACE: { + Place place = (Place) theEObject; + T result = casePlace(place); + if (result == null) + result = caseElement(place); + if (result == null) + result = defaultCase(theEObject); + return result; + } + case PetrinetPackage.TRANSITION: { + Transition transition = (Transition) theEObject; + T result = caseTransition(transition); + if (result == null) + result = caseElement(transition); + if (result == null) + result = defaultCase(theEObject); + return result; + } + case PetrinetPackage.TOKEN: { + Token token = (Token) theEObject; + T result = caseToken(token); + if (result == null) + result = defaultCase(theEObject); + return result; + } + default: + return defaultCase(theEObject); + } + } + + /** + * Returns the result of interpreting the object as an instance of '<em>Petri Net</em>'. + * <!-- begin-user-doc --> + * This implementation returns null; + * returning a non-null result will terminate the switch. + * <!-- end-user-doc --> + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of '<em>Petri Net</em>'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T casePetriNet(PetriNet object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of '<em>Element</em>'. + * <!-- begin-user-doc --> + * This implementation returns null; + * returning a non-null result will terminate the switch. + * <!-- end-user-doc --> + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of '<em>Element</em>'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseElement(Element object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of '<em>Arc</em>'. + * <!-- begin-user-doc --> + * This implementation returns null; + * returning a non-null result will terminate the switch. + * <!-- end-user-doc --> + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of '<em>Arc</em>'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseArc(Arc object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of '<em>Incoming Arc</em>'. + * <!-- begin-user-doc --> + * This implementation returns null; + * returning a non-null result will terminate the switch. + * <!-- end-user-doc --> + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of '<em>Incoming Arc</em>'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseIncomingArc(IncomingArc object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of '<em>Outgoing Arc</em>'. + * <!-- begin-user-doc --> + * This implementation returns null; + * returning a non-null result will terminate the switch. + * <!-- end-user-doc --> + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of '<em>Outgoing Arc</em>'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseOutgoingArc(OutgoingArc object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of '<em>Place</em>'. + * <!-- begin-user-doc --> + * This implementation returns null; + * returning a non-null result will terminate the switch. + * <!-- end-user-doc --> + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of '<em>Place</em>'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T casePlace(Place object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of '<em>Transition</em>'. + * <!-- begin-user-doc --> + * This implementation returns null; + * returning a non-null result will terminate the switch. + * <!-- end-user-doc --> + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of '<em>Transition</em>'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseTransition(Transition object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of '<em>Token</em>'. + * <!-- begin-user-doc --> + * This implementation returns null; + * returning a non-null result will terminate the switch. + * <!-- end-user-doc --> + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of '<em>Token</em>'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseToken(Token object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of '<em>EObject</em>'. + * <!-- begin-user-doc --> + * This implementation returns null; + * returning a non-null result will terminate the switch, but this is the last case anyway. + * <!-- end-user-doc --> + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of '<em>EObject</em>'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) + * @generated + */ + @Override + public T defaultCase(EObject object) { + return null; + } + +} //PetrinetSwitch diff --git a/metamodel/swt.most.petrinet/src/.gitkeep b/metamodel/swt.most.petrinet/src/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..49cc8ef0e116cef009fe0bd72473a964bbd07f9b Binary files /dev/null and b/metamodel/swt.most.petrinet/src/.gitkeep differ diff --git a/metamodel/swt.most.statemachine.edit/.classpath b/metamodel/swt.most.statemachine.edit/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..2377d859931ab6ce1560ef53742afa6e8f1cdefd --- /dev/null +++ b/metamodel/swt.most.statemachine.edit/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src-gen"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/metamodel/swt.most.statemachine.edit/.gitignore b/metamodel/swt.most.statemachine.edit/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..ae3c1726048cd06b9a143e0376ed46dd9b9a8d53 --- /dev/null +++ b/metamodel/swt.most.statemachine.edit/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/metamodel/swt.most.statemachine.edit/.project b/metamodel/swt.most.statemachine.edit/.project new file mode 100644 index 0000000000000000000000000000000000000000..93527abd92e6b574becf95ab7b6f92a629cca930 --- /dev/null +++ b/metamodel/swt.most.statemachine.edit/.project @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>swt.most.statemachine.edit</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.SchemaBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + <nature>org.eclipse.pde.PluginNature</nature> + </natures> +</projectDescription> diff --git a/metamodel/swt.most.statemachine.edit/.settings/org.eclipse.core.resources.prefs b/metamodel/swt.most.statemachine.edit/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000000000000000000000000000000000000..99f26c0203a7844de00dbfc56e6a35d8ed3c022c --- /dev/null +++ b/metamodel/swt.most.statemachine.edit/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/<project>=UTF-8 diff --git a/metamodel/swt.most.statemachine.edit/META-INF/MANIFEST.MF b/metamodel/swt.most.statemachine.edit/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..eedc10e53e3f5f464922b129beed099a9f7988bf --- /dev/null +++ b/metamodel/swt.most.statemachine.edit/META-INF/MANIFEST.MF @@ -0,0 +1,16 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %pluginName +Bundle-SymbolicName: swt.most.statemachine.edit;singleton:=true +Automatic-Module-Name: swt.most.statemachine.edit +Bundle-Version: 1.0.0.qualifier +Bundle-ClassPath: . +Bundle-Activator: swt.most.statemachine.provider.StatemachineEditPlugin$Implementation +Bundle-Vendor: %providerName +Bundle-Localization: plugin +Bundle-RequiredExecutionEnvironment: J2SE-1.5 +Export-Package: swt.most.statemachine.provider +Require-Bundle: org.eclipse.core.runtime, + swt.most.statemachine;visibility:=reexport, + org.eclipse.emf.edit;visibility:=reexport +Bundle-ActivationPolicy: lazy diff --git a/metamodel/swt.most.statemachine.edit/build.properties b/metamodel/swt.most.statemachine.edit/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..a3c4e32afd5c06df8bd4f0d371e56479e0822559 --- /dev/null +++ b/metamodel/swt.most.statemachine.edit/build.properties @@ -0,0 +1,10 @@ +# + +bin.includes = .,\ + icons/,\ + META-INF/,\ + plugin.xml,\ + plugin.properties +jars.compile.order = . +source.. = src-gen/ +output.. = bin/ diff --git a/metamodel/swt.most.statemachine.edit/icons/full/obj16/Action.gif b/metamodel/swt.most.statemachine.edit/icons/full/obj16/Action.gif new file mode 100644 index 0000000000000000000000000000000000000000..cb1755a712505aeaaa447d9b1cc5940e602f87b6 Binary files /dev/null and b/metamodel/swt.most.statemachine.edit/icons/full/obj16/Action.gif differ diff --git a/metamodel/swt.most.statemachine.edit/icons/full/obj16/FinalState.gif b/metamodel/swt.most.statemachine.edit/icons/full/obj16/FinalState.gif new file mode 100644 index 0000000000000000000000000000000000000000..ea58a657dc0c287f6bb84e6cbd38008c96713db3 Binary files /dev/null and b/metamodel/swt.most.statemachine.edit/icons/full/obj16/FinalState.gif differ diff --git a/metamodel/swt.most.statemachine.edit/icons/full/obj16/Guard.gif b/metamodel/swt.most.statemachine.edit/icons/full/obj16/Guard.gif new file mode 100644 index 0000000000000000000000000000000000000000..5a9bc7514facefe049e8f5d98bb2e1e37f03c0c2 Binary files /dev/null and b/metamodel/swt.most.statemachine.edit/icons/full/obj16/Guard.gif differ diff --git a/metamodel/swt.most.statemachine.edit/icons/full/obj16/InitialState.gif b/metamodel/swt.most.statemachine.edit/icons/full/obj16/InitialState.gif new file mode 100644 index 0000000000000000000000000000000000000000..7b7c428c715e615c179d42a8462ee953741414d4 Binary files /dev/null and b/metamodel/swt.most.statemachine.edit/icons/full/obj16/InitialState.gif differ diff --git a/metamodel/swt.most.statemachine.edit/icons/full/obj16/NormalState.gif b/metamodel/swt.most.statemachine.edit/icons/full/obj16/NormalState.gif new file mode 100644 index 0000000000000000000000000000000000000000..b1f8afa47661703c49bd5fa535dcb1342deb6fc4 Binary files /dev/null and b/metamodel/swt.most.statemachine.edit/icons/full/obj16/NormalState.gif differ diff --git a/metamodel/swt.most.statemachine.edit/icons/full/obj16/StateMachine.gif b/metamodel/swt.most.statemachine.edit/icons/full/obj16/StateMachine.gif new file mode 100644 index 0000000000000000000000000000000000000000..badaab0664ae45de5d990f64638197daeabf31bf Binary files /dev/null and b/metamodel/swt.most.statemachine.edit/icons/full/obj16/StateMachine.gif differ diff --git a/metamodel/swt.most.statemachine.edit/icons/full/obj16/Transition.gif b/metamodel/swt.most.statemachine.edit/icons/full/obj16/Transition.gif new file mode 100644 index 0000000000000000000000000000000000000000..7bac4fd3808df6247660dfb8d76e15609f279841 Binary files /dev/null and b/metamodel/swt.most.statemachine.edit/icons/full/obj16/Transition.gif differ diff --git a/metamodel/swt.most.statemachine.edit/icons/full/obj16/Trigger.gif b/metamodel/swt.most.statemachine.edit/icons/full/obj16/Trigger.gif new file mode 100644 index 0000000000000000000000000000000000000000..ea58a657dc0c287f6bb84e6cbd38008c96713db3 Binary files /dev/null and b/metamodel/swt.most.statemachine.edit/icons/full/obj16/Trigger.gif differ diff --git a/metamodel/swt.most.statemachine.edit/plugin.properties b/metamodel/swt.most.statemachine.edit/plugin.properties new file mode 100644 index 0000000000000000000000000000000000000000..2cad14548c22c317804dd13c379c7cd1643f0e25 --- /dev/null +++ b/metamodel/swt.most.statemachine.edit/plugin.properties @@ -0,0 +1,46 @@ +# + +pluginName = swt.most.statemachine Edit Support +providerName = www.example.org + +_UI_CreateChild_text = {0} +_UI_CreateChild_text2 = {1} {0} +_UI_CreateChild_text3 = {1} +_UI_CreateChild_tooltip = Create New {0} Under {1} Feature +_UI_CreateChild_description = Create a new child of type {0} for the {1} feature of the selected {2}. +_UI_CreateSibling_description = Create a new sibling of type {0} for the selected {2}, under the {1} feature of their parent. + +_UI_PropertyDescriptor_description = The {0} of the {1} + +_UI_StateMachine_type = State Machine +_UI_State_type = State +_UI_Transition_type = Transition +_UI_Trigger_type = Trigger +_UI_Guard_type = Guard +_UI_Action_type = Action +_UI_Expression_type = Expression +_UI_InitialState_type = Initial State +_UI_FinalState_type = Final State +_UI_NormalState_type = Normal State +_UI_Unknown_type = Object + +_UI_Unknown_datatype= Value + +_UI_StateMachine_identifier_feature = Identifier +_UI_StateMachine_states_feature = States +_UI_StateMachine_finalstates_feature = Finalstates +_UI_StateMachine_initialstate_feature = Initialstate +_UI_StateMachine_transitions_feature = Transitions +_UI_State_name_feature = Name +_UI_Transition_from_feature = From +_UI_Transition_to_feature = To +_UI_Transition_trigger_feature = Trigger +_UI_Transition_guard_feature = Guard +_UI_Transition_action_feature = Action +_UI_Expression_content_feature = Content +_UI_NormalState_do__feature = Do +_UI_NormalState_exit__feature = Exit +_UI_NormalState_entry__feature = Entry +_UI_Unknown_feature = Unspecified + +_UI_StateMachine_name_feature = Name diff --git a/metamodel/swt.most.statemachine.edit/plugin.xml b/metamodel/swt.most.statemachine.edit/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..16aacfbc1c010e2f319bea1f4b002b07ae625b02 --- /dev/null +++ b/metamodel/swt.most.statemachine.edit/plugin.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.0"?> + +<!-- +--> + +<plugin> + + <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories"> + <!-- @generated statemachine --> + <factory + uri="http://www.swt.org/most/statemachine" + class="swt.most.statemachine.provider.StatemachineItemProviderAdapterFactory" + supportedTypes= + "org.eclipse.emf.edit.provider.IEditingDomainItemProvider + org.eclipse.emf.edit.provider.IStructuredItemContentProvider + org.eclipse.emf.edit.provider.ITreeItemContentProvider + org.eclipse.emf.edit.provider.IItemLabelProvider + org.eclipse.emf.edit.provider.IItemPropertySource"/> + </extension> + +</plugin> diff --git a/metamodel/swt.most.statemachine.edit/src-gen/swt/most/statemachine/provider/ActionItemProvider.java b/metamodel/swt.most.statemachine.edit/src-gen/swt/most/statemachine/provider/ActionItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..836a8ed3767c4ad7893f193f4e767090c76cd5d1 --- /dev/null +++ b/metamodel/swt.most.statemachine.edit/src-gen/swt/most/statemachine/provider/ActionItemProvider.java @@ -0,0 +1,106 @@ +/** + */ +package swt.most.statemachine.provider; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +import swt.most.statemachine.Action; + +/** + * This is the item provider adapter for a {@link swt.most.statemachine.Action} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ActionItemProvider extends ExpressionItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ActionItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + } + return itemPropertyDescriptors; + } + + /** + * This returns Action.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/Action")); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean shouldComposeCreationImage() { + return true; + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((Action) object).getContent(); + return label == null || label.length() == 0 ? getString("_UI_Action_type") + : getString("_UI_Action_type") + " " + label; + } + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + +} diff --git a/metamodel/swt.most.statemachine.edit/src-gen/swt/most/statemachine/provider/ExpressionItemProvider.java b/metamodel/swt.most.statemachine.edit/src-gen/swt/most/statemachine/provider/ExpressionItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..705da2c2be1c037d3c51b183eef62fb856ee68ea --- /dev/null +++ b/metamodel/swt.most.statemachine.edit/src-gen/swt/most/statemachine/provider/ExpressionItemProvider.java @@ -0,0 +1,142 @@ +/** + */ +package swt.most.statemachine.provider; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.common.util.ResourceLocator; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IEditingDomainItemProvider; +import org.eclipse.emf.edit.provider.IItemLabelProvider; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.IItemPropertySource; +import org.eclipse.emf.edit.provider.IStructuredItemContentProvider; +import org.eclipse.emf.edit.provider.ITreeItemContentProvider; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemProviderAdapter; +import org.eclipse.emf.edit.provider.ViewerNotification; + +import swt.most.statemachine.Expression; +import swt.most.statemachine.StatemachinePackage; + +/** + * This is the item provider adapter for a {@link swt.most.statemachine.Expression} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ExpressionItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider, + IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ExpressionItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + addContentPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Content feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addContentPropertyDescriptor(Object object) { + itemPropertyDescriptors + .add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(), + getResourceLocator(), getString("_UI_Expression_content_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Expression_content_feature", + "_UI_Expression_type"), + StatemachinePackage.Literals.EXPRESSION__CONTENT, true, false, false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null)); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean shouldComposeCreationImage() { + return true; + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((Expression) object).getContent(); + return label == null || label.length() == 0 ? getString("_UI_Expression_type") + : getString("_UI_Expression_type") + " " + label; + } + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + + switch (notification.getFeatureID(Expression.class)) { + case StatemachinePackage.EXPRESSION__CONTENT: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + } + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return StatemachineEditPlugin.INSTANCE; + } + +} diff --git a/metamodel/swt.most.statemachine.edit/src-gen/swt/most/statemachine/provider/FinalStateItemProvider.java b/metamodel/swt.most.statemachine.edit/src-gen/swt/most/statemachine/provider/FinalStateItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..35e6d8bdcbf2f5f10207b7c670228b9409ecc790 --- /dev/null +++ b/metamodel/swt.most.statemachine.edit/src-gen/swt/most/statemachine/provider/FinalStateItemProvider.java @@ -0,0 +1,106 @@ +/** + */ +package swt.most.statemachine.provider; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +import swt.most.statemachine.FinalState; + +/** + * This is the item provider adapter for a {@link swt.most.statemachine.FinalState} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class FinalStateItemProvider extends StateItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public FinalStateItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + } + return itemPropertyDescriptors; + } + + /** + * This returns FinalState.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/FinalState")); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean shouldComposeCreationImage() { + return true; + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((FinalState) object).getName(); + return label == null || label.length() == 0 ? getString("_UI_FinalState_type") + : getString("_UI_FinalState_type") + " " + label; + } + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + +} diff --git a/metamodel/swt.most.statemachine.edit/src-gen/swt/most/statemachine/provider/GuardItemProvider.java b/metamodel/swt.most.statemachine.edit/src-gen/swt/most/statemachine/provider/GuardItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..93e36a4a3ceaf52a1a969668fb9c3bdcd30a1bf6 --- /dev/null +++ b/metamodel/swt.most.statemachine.edit/src-gen/swt/most/statemachine/provider/GuardItemProvider.java @@ -0,0 +1,106 @@ +/** + */ +package swt.most.statemachine.provider; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +import swt.most.statemachine.Guard; + +/** + * This is the item provider adapter for a {@link swt.most.statemachine.Guard} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class GuardItemProvider extends ExpressionItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public GuardItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + } + return itemPropertyDescriptors; + } + + /** + * This returns Guard.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/Guard")); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean shouldComposeCreationImage() { + return true; + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((Guard) object).getContent(); + return label == null || label.length() == 0 ? getString("_UI_Guard_type") + : getString("_UI_Guard_type") + " " + label; + } + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + +} diff --git a/metamodel/swt.most.statemachine.edit/src-gen/swt/most/statemachine/provider/InitialStateItemProvider.java b/metamodel/swt.most.statemachine.edit/src-gen/swt/most/statemachine/provider/InitialStateItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..228917616b44a78e1cab4fe48211f7206ac27c42 --- /dev/null +++ b/metamodel/swt.most.statemachine.edit/src-gen/swt/most/statemachine/provider/InitialStateItemProvider.java @@ -0,0 +1,106 @@ +/** + */ +package swt.most.statemachine.provider; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +import swt.most.statemachine.InitialState; + +/** + * This is the item provider adapter for a {@link swt.most.statemachine.InitialState} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class InitialStateItemProvider extends StateItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public InitialStateItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + } + return itemPropertyDescriptors; + } + + /** + * This returns InitialState.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/InitialState")); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean shouldComposeCreationImage() { + return true; + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((InitialState) object).getName(); + return label == null || label.length() == 0 ? getString("_UI_InitialState_type") + : getString("_UI_InitialState_type") + " " + label; + } + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + +} diff --git a/metamodel/swt.most.statemachine.edit/src-gen/swt/most/statemachine/provider/NormalStateItemProvider.java b/metamodel/swt.most.statemachine.edit/src-gen/swt/most/statemachine/provider/NormalStateItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..44b11fd19687de048500967db295c5fe85bf1e26 --- /dev/null +++ b/metamodel/swt.most.statemachine.edit/src-gen/swt/most/statemachine/provider/NormalStateItemProvider.java @@ -0,0 +1,182 @@ +/** + */ +package swt.most.statemachine.provider; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.ecore.EStructuralFeature; + +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +import swt.most.statemachine.NormalState; +import swt.most.statemachine.StatemachineFactory; +import swt.most.statemachine.StatemachinePackage; + +/** + * This is the item provider adapter for a {@link swt.most.statemachine.NormalState} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class NormalStateItemProvider extends StateItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public NormalStateItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + } + return itemPropertyDescriptors; + } + + /** + * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an + * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or + * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) { + if (childrenFeatures == null) { + super.getChildrenFeatures(object); + childrenFeatures.add(StatemachinePackage.Literals.NORMAL_STATE__DO_); + childrenFeatures.add(StatemachinePackage.Literals.NORMAL_STATE__EXIT_); + childrenFeatures.add(StatemachinePackage.Literals.NORMAL_STATE__ENTRY_); + } + return childrenFeatures; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EStructuralFeature getChildFeature(Object object, Object child) { + // Check the type of the specified child object and return the proper feature to use for + // adding (see {@link AddCommand}) it as a child. + + return super.getChildFeature(object, child); + } + + /** + * This returns NormalState.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/NormalState")); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean shouldComposeCreationImage() { + return true; + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((NormalState) object).getName(); + return label == null || label.length() == 0 ? getString("_UI_NormalState_type") + : getString("_UI_NormalState_type") + " " + label; + } + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + + switch (notification.getFeatureID(NormalState.class)) { + case StatemachinePackage.NORMAL_STATE__DO_: + case StatemachinePackage.NORMAL_STATE__EXIT_: + case StatemachinePackage.NORMAL_STATE__ENTRY_: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false)); + return; + } + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + + newChildDescriptors.add(createChildParameter(StatemachinePackage.Literals.NORMAL_STATE__DO_, + StatemachineFactory.eINSTANCE.createAction())); + + newChildDescriptors.add(createChildParameter(StatemachinePackage.Literals.NORMAL_STATE__EXIT_, + StatemachineFactory.eINSTANCE.createAction())); + + newChildDescriptors.add(createChildParameter(StatemachinePackage.Literals.NORMAL_STATE__ENTRY_, + StatemachineFactory.eINSTANCE.createAction())); + } + + /** + * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) { + Object childFeature = feature; + Object childObject = child; + + boolean qualify = childFeature == StatemachinePackage.Literals.NORMAL_STATE__DO_ + || childFeature == StatemachinePackage.Literals.NORMAL_STATE__EXIT_ + || childFeature == StatemachinePackage.Literals.NORMAL_STATE__ENTRY_; + + if (qualify) { + return getString("_UI_CreateChild_text2", + new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) }); + } + return super.getCreateChildText(owner, feature, child, selection); + } + +} diff --git a/metamodel/swt.most.statemachine.edit/src-gen/swt/most/statemachine/provider/StateItemProvider.java b/metamodel/swt.most.statemachine.edit/src-gen/swt/most/statemachine/provider/StateItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..a5c23392f1e3b7d9727baf5d217064ccbba1c9ef --- /dev/null +++ b/metamodel/swt.most.statemachine.edit/src-gen/swt/most/statemachine/provider/StateItemProvider.java @@ -0,0 +1,141 @@ +/** + */ +package swt.most.statemachine.provider; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.common.util.ResourceLocator; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IEditingDomainItemProvider; +import org.eclipse.emf.edit.provider.IItemLabelProvider; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.IItemPropertySource; +import org.eclipse.emf.edit.provider.IStructuredItemContentProvider; +import org.eclipse.emf.edit.provider.ITreeItemContentProvider; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemProviderAdapter; +import org.eclipse.emf.edit.provider.ViewerNotification; + +import swt.most.statemachine.State; +import swt.most.statemachine.StatemachinePackage; + +/** + * This is the item provider adapter for a {@link swt.most.statemachine.State} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class StateItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider, + IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public StateItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + addNamePropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Name feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addNamePropertyDescriptor(Object object) { + itemPropertyDescriptors + .add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(), + getResourceLocator(), getString("_UI_State_name_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_State_name_feature", "_UI_State_type"), + StatemachinePackage.Literals.STATE__NAME, true, false, false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null)); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean shouldComposeCreationImage() { + return true; + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((State) object).getName(); + return label == null || label.length() == 0 ? getString("_UI_State_type") + : getString("_UI_State_type") + " " + label; + } + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + + switch (notification.getFeatureID(State.class)) { + case StatemachinePackage.STATE__NAME: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + } + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return StatemachineEditPlugin.INSTANCE; + } + +} diff --git a/metamodel/swt.most.statemachine.edit/src-gen/swt/most/statemachine/provider/StateMachineItemProvider.java b/metamodel/swt.most.statemachine.edit/src-gen/swt/most/statemachine/provider/StateMachineItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..2f4fb440f933588006cf2e0f5a5a20f33dcb0be5 --- /dev/null +++ b/metamodel/swt.most.statemachine.edit/src-gen/swt/most/statemachine/provider/StateMachineItemProvider.java @@ -0,0 +1,207 @@ +/** + */ +package swt.most.statemachine.provider; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.common.util.ResourceLocator; + +import org.eclipse.emf.ecore.EStructuralFeature; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IEditingDomainItemProvider; +import org.eclipse.emf.edit.provider.IItemLabelProvider; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.IItemPropertySource; +import org.eclipse.emf.edit.provider.IStructuredItemContentProvider; +import org.eclipse.emf.edit.provider.ITreeItemContentProvider; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemProviderAdapter; +import org.eclipse.emf.edit.provider.ViewerNotification; + +import swt.most.statemachine.StateMachine; +import swt.most.statemachine.StatemachineFactory; +import swt.most.statemachine.StatemachinePackage; + +/** + * This is the item provider adapter for a {@link swt.most.statemachine.StateMachine} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class StateMachineItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider, + IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public StateMachineItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + addNamePropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Name feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addNamePropertyDescriptor(Object object) { + itemPropertyDescriptors + .add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(), + getResourceLocator(), getString("_UI_StateMachine_name_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_StateMachine_name_feature", + "_UI_StateMachine_type"), + StatemachinePackage.Literals.STATE_MACHINE__NAME, true, false, false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null)); + } + + /** + * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an + * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or + * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) { + if (childrenFeatures == null) { + super.getChildrenFeatures(object); + childrenFeatures.add(StatemachinePackage.Literals.STATE_MACHINE__STATES); + childrenFeatures.add(StatemachinePackage.Literals.STATE_MACHINE__FINALSTATES); + childrenFeatures.add(StatemachinePackage.Literals.STATE_MACHINE__INITIALSTATE); + childrenFeatures.add(StatemachinePackage.Literals.STATE_MACHINE__TRANSITIONS); + } + return childrenFeatures; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EStructuralFeature getChildFeature(Object object, Object child) { + // Check the type of the specified child object and return the proper feature to use for + // adding (see {@link AddCommand}) it as a child. + + return super.getChildFeature(object, child); + } + + /** + * This returns StateMachine.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/StateMachine")); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean shouldComposeCreationImage() { + return true; + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((StateMachine) object).getName(); + return label == null || label.length() == 0 ? getString("_UI_StateMachine_type") + : getString("_UI_StateMachine_type") + " " + label; + } + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + + switch (notification.getFeatureID(StateMachine.class)) { + case StatemachinePackage.STATE_MACHINE__NAME: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + case StatemachinePackage.STATE_MACHINE__STATES: + case StatemachinePackage.STATE_MACHINE__FINALSTATES: + case StatemachinePackage.STATE_MACHINE__INITIALSTATE: + case StatemachinePackage.STATE_MACHINE__TRANSITIONS: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false)); + return; + } + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + + newChildDescriptors.add(createChildParameter(StatemachinePackage.Literals.STATE_MACHINE__STATES, + StatemachineFactory.eINSTANCE.createNormalState())); + + newChildDescriptors.add(createChildParameter(StatemachinePackage.Literals.STATE_MACHINE__FINALSTATES, + StatemachineFactory.eINSTANCE.createFinalState())); + + newChildDescriptors.add(createChildParameter(StatemachinePackage.Literals.STATE_MACHINE__INITIALSTATE, + StatemachineFactory.eINSTANCE.createInitialState())); + + newChildDescriptors.add(createChildParameter(StatemachinePackage.Literals.STATE_MACHINE__TRANSITIONS, + StatemachineFactory.eINSTANCE.createTransition())); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return StatemachineEditPlugin.INSTANCE; + } + +} diff --git a/metamodel/swt.most.statemachine.edit/src-gen/swt/most/statemachine/provider/StatemachineEditPlugin.java b/metamodel/swt.most.statemachine.edit/src-gen/swt/most/statemachine/provider/StatemachineEditPlugin.java new file mode 100644 index 0000000000000000000000000000000000000000..1b60b5862eafe6e1aeef4220a4033dd82c32eb42 --- /dev/null +++ b/metamodel/swt.most.statemachine.edit/src-gen/swt/most/statemachine/provider/StatemachineEditPlugin.java @@ -0,0 +1,87 @@ +/** + */ +package swt.most.statemachine.provider; + +import org.eclipse.emf.common.EMFPlugin; + +import org.eclipse.emf.common.util.ResourceLocator; + +/** + * This is the central singleton for the Statemachine edit plugin. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public final class StatemachineEditPlugin extends EMFPlugin { + /** + * Keep track of the singleton. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final StatemachineEditPlugin INSTANCE = new StatemachineEditPlugin(); + + /** + * Keep track of the singleton. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private static Implementation plugin; + + /** + * Create the instance. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public StatemachineEditPlugin() { + super(new ResourceLocator[] {}); + } + + /** + * Returns the singleton instance of the Eclipse plugin. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the singleton instance. + * @generated + */ + @Override + public ResourceLocator getPluginResourceLocator() { + return plugin; + } + + /** + * Returns the singleton instance of the Eclipse plugin. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the singleton instance. + * @generated + */ + public static Implementation getPlugin() { + return plugin; + } + + /** + * The actual implementation of the Eclipse <b>Plugin</b>. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static class Implementation extends EclipsePlugin { + /** + * Creates an instance. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Implementation() { + super(); + + // Remember the static instance. + // + plugin = this; + } + } + +} diff --git a/metamodel/swt.most.statemachine.edit/src-gen/swt/most/statemachine/provider/StatemachineItemProviderAdapterFactory.java b/metamodel/swt.most.statemachine.edit/src-gen/swt/most/statemachine/provider/StatemachineItemProviderAdapterFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..7ae9ad4e8ad36af9d0a6fd9e5828c55ce2f6e010 --- /dev/null +++ b/metamodel/swt.most.statemachine.edit/src-gen/swt/most/statemachine/provider/StatemachineItemProviderAdapterFactory.java @@ -0,0 +1,376 @@ +/** + */ +package swt.most.statemachine.provider; + +import java.util.ArrayList; +import java.util.Collection; + +import org.eclipse.emf.common.notify.Adapter; +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.Notifier; + +import org.eclipse.emf.edit.provider.ChangeNotifier; +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.ComposedAdapterFactory; +import org.eclipse.emf.edit.provider.IChangeNotifier; +import org.eclipse.emf.edit.provider.IDisposable; +import org.eclipse.emf.edit.provider.IEditingDomainItemProvider; +import org.eclipse.emf.edit.provider.IItemLabelProvider; +import org.eclipse.emf.edit.provider.IItemPropertySource; +import org.eclipse.emf.edit.provider.INotifyChangedListener; +import org.eclipse.emf.edit.provider.IStructuredItemContentProvider; +import org.eclipse.emf.edit.provider.ITreeItemContentProvider; + +import swt.most.statemachine.util.StatemachineAdapterFactory; + +/** + * This is the factory that is used to provide the interfaces needed to support Viewers. + * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}. + * The adapters also support Eclipse property sheets. + * Note that most of the adapters are shared among multiple instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class StatemachineItemProviderAdapterFactory extends StatemachineAdapterFactory + implements ComposeableAdapterFactory, IChangeNotifier, IDisposable { + /** + * This keeps track of the root adapter factory that delegates to this adapter factory. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ComposedAdapterFactory parentAdapterFactory; + + /** + * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IChangeNotifier changeNotifier = new ChangeNotifier(); + + /** + * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Object> supportedTypes = new ArrayList<Object>(); + + /** + * This constructs an instance. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public StatemachineItemProviderAdapterFactory() { + supportedTypes.add(IEditingDomainItemProvider.class); + supportedTypes.add(IStructuredItemContentProvider.class); + supportedTypes.add(ITreeItemContentProvider.class); + supportedTypes.add(IItemLabelProvider.class); + supportedTypes.add(IItemPropertySource.class); + } + + /** + * This keeps track of the one adapter used for all {@link swt.most.statemachine.StateMachine} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected StateMachineItemProvider stateMachineItemProvider; + + /** + * This creates an adapter for a {@link swt.most.statemachine.StateMachine}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createStateMachineAdapter() { + if (stateMachineItemProvider == null) { + stateMachineItemProvider = new StateMachineItemProvider(this); + } + + return stateMachineItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link swt.most.statemachine.Transition} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TransitionItemProvider transitionItemProvider; + + /** + * This creates an adapter for a {@link swt.most.statemachine.Transition}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createTransitionAdapter() { + if (transitionItemProvider == null) { + transitionItemProvider = new TransitionItemProvider(this); + } + + return transitionItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link swt.most.statemachine.Trigger} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TriggerItemProvider triggerItemProvider; + + /** + * This creates an adapter for a {@link swt.most.statemachine.Trigger}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createTriggerAdapter() { + if (triggerItemProvider == null) { + triggerItemProvider = new TriggerItemProvider(this); + } + + return triggerItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link swt.most.statemachine.Guard} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected GuardItemProvider guardItemProvider; + + /** + * This creates an adapter for a {@link swt.most.statemachine.Guard}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createGuardAdapter() { + if (guardItemProvider == null) { + guardItemProvider = new GuardItemProvider(this); + } + + return guardItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link swt.most.statemachine.Action} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ActionItemProvider actionItemProvider; + + /** + * This creates an adapter for a {@link swt.most.statemachine.Action}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createActionAdapter() { + if (actionItemProvider == null) { + actionItemProvider = new ActionItemProvider(this); + } + + return actionItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link swt.most.statemachine.InitialState} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected InitialStateItemProvider initialStateItemProvider; + + /** + * This creates an adapter for a {@link swt.most.statemachine.InitialState}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createInitialStateAdapter() { + if (initialStateItemProvider == null) { + initialStateItemProvider = new InitialStateItemProvider(this); + } + + return initialStateItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link swt.most.statemachine.FinalState} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected FinalStateItemProvider finalStateItemProvider; + + /** + * This creates an adapter for a {@link swt.most.statemachine.FinalState}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createFinalStateAdapter() { + if (finalStateItemProvider == null) { + finalStateItemProvider = new FinalStateItemProvider(this); + } + + return finalStateItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link swt.most.statemachine.NormalState} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected NormalStateItemProvider normalStateItemProvider; + + /** + * This creates an adapter for a {@link swt.most.statemachine.NormalState}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createNormalStateAdapter() { + if (normalStateItemProvider == null) { + normalStateItemProvider = new NormalStateItemProvider(this); + } + + return normalStateItemProvider; + } + + /** + * This returns the root adapter factory that contains this factory. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ComposeableAdapterFactory getRootAdapterFactory() { + return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory(); + } + + /** + * This sets the composed adapter factory that contains this factory. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) { + this.parentAdapterFactory = parentAdapterFactory; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean isFactoryForType(Object type) { + return supportedTypes.contains(type) || super.isFactoryForType(type); + } + + /** + * This implementation substitutes the factory itself as the key for the adapter. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter adapt(Notifier notifier, Object type) { + return super.adapt(notifier, this); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object adapt(Object object, Object type) { + if (isFactoryForType(type)) { + Object adapter = super.adapt(object, type); + if (!(type instanceof Class<?>) || (((Class<?>) type).isInstance(adapter))) { + return adapter; + } + } + + return null; + } + + /** + * This adds a listener. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void addListener(INotifyChangedListener notifyChangedListener) { + changeNotifier.addListener(notifyChangedListener); + } + + /** + * This removes a listener. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void removeListener(INotifyChangedListener notifyChangedListener) { + changeNotifier.removeListener(notifyChangedListener); + } + + /** + * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void fireNotifyChanged(Notification notification) { + changeNotifier.fireNotifyChanged(notification); + + if (parentAdapterFactory != null) { + parentAdapterFactory.fireNotifyChanged(notification); + } + } + + /** + * This disposes all of the item providers created by this factory. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void dispose() { + if (stateMachineItemProvider != null) + stateMachineItemProvider.dispose(); + if (transitionItemProvider != null) + transitionItemProvider.dispose(); + if (triggerItemProvider != null) + triggerItemProvider.dispose(); + if (guardItemProvider != null) + guardItemProvider.dispose(); + if (actionItemProvider != null) + actionItemProvider.dispose(); + if (initialStateItemProvider != null) + initialStateItemProvider.dispose(); + if (finalStateItemProvider != null) + finalStateItemProvider.dispose(); + if (normalStateItemProvider != null) + normalStateItemProvider.dispose(); + } + +} diff --git a/metamodel/swt.most.statemachine.edit/src-gen/swt/most/statemachine/provider/TransitionItemProvider.java b/metamodel/swt.most.statemachine.edit/src-gen/swt/most/statemachine/provider/TransitionItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..85102ffedfed2f4a2054e7cae0ffdaa5e11d37a2 --- /dev/null +++ b/metamodel/swt.most.statemachine.edit/src-gen/swt/most/statemachine/provider/TransitionItemProvider.java @@ -0,0 +1,211 @@ +/** + */ +package swt.most.statemachine.provider; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.common.util.ResourceLocator; + +import org.eclipse.emf.ecore.EStructuralFeature; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IEditingDomainItemProvider; +import org.eclipse.emf.edit.provider.IItemLabelProvider; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.IItemPropertySource; +import org.eclipse.emf.edit.provider.IStructuredItemContentProvider; +import org.eclipse.emf.edit.provider.ITreeItemContentProvider; +import org.eclipse.emf.edit.provider.ItemProviderAdapter; +import org.eclipse.emf.edit.provider.ViewerNotification; + +import swt.most.statemachine.StatemachineFactory; +import swt.most.statemachine.StatemachinePackage; +import swt.most.statemachine.Transition; + +/** + * This is the item provider adapter for a {@link swt.most.statemachine.Transition} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class TransitionItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider, + IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public TransitionItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + addFromPropertyDescriptor(object); + addToPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the From feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addFromPropertyDescriptor(Object object) { + itemPropertyDescriptors + .add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(), + getResourceLocator(), getString("_UI_Transition_from_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Transition_from_feature", + "_UI_Transition_type"), + StatemachinePackage.Literals.TRANSITION__FROM, true, false, true, null, null, null)); + } + + /** + * This adds a property descriptor for the To feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addToPropertyDescriptor(Object object) { + itemPropertyDescriptors + .add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(), + getResourceLocator(), getString("_UI_Transition_to_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Transition_to_feature", + "_UI_Transition_type"), + StatemachinePackage.Literals.TRANSITION__TO, true, false, true, null, null, null)); + } + + /** + * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an + * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or + * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) { + if (childrenFeatures == null) { + super.getChildrenFeatures(object); + childrenFeatures.add(StatemachinePackage.Literals.TRANSITION__TRIGGER); + childrenFeatures.add(StatemachinePackage.Literals.TRANSITION__GUARD); + childrenFeatures.add(StatemachinePackage.Literals.TRANSITION__ACTION); + } + return childrenFeatures; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EStructuralFeature getChildFeature(Object object, Object child) { + // Check the type of the specified child object and return the proper feature to use for + // adding (see {@link AddCommand}) it as a child. + + return super.getChildFeature(object, child); + } + + /** + * This returns Transition.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/Transition")); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean shouldComposeCreationImage() { + return true; + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + return getString("_UI_Transition_type"); + } + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + + switch (notification.getFeatureID(Transition.class)) { + case StatemachinePackage.TRANSITION__TRIGGER: + case StatemachinePackage.TRANSITION__GUARD: + case StatemachinePackage.TRANSITION__ACTION: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false)); + return; + } + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + + newChildDescriptors.add(createChildParameter(StatemachinePackage.Literals.TRANSITION__TRIGGER, + StatemachineFactory.eINSTANCE.createTrigger())); + + newChildDescriptors.add(createChildParameter(StatemachinePackage.Literals.TRANSITION__GUARD, + StatemachineFactory.eINSTANCE.createGuard())); + + newChildDescriptors.add(createChildParameter(StatemachinePackage.Literals.TRANSITION__ACTION, + StatemachineFactory.eINSTANCE.createAction())); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return StatemachineEditPlugin.INSTANCE; + } + +} diff --git a/metamodel/swt.most.statemachine.edit/src-gen/swt/most/statemachine/provider/TriggerItemProvider.java b/metamodel/swt.most.statemachine.edit/src-gen/swt/most/statemachine/provider/TriggerItemProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..02b1f537fca4f21ff779d4f593e91d70730b5b82 --- /dev/null +++ b/metamodel/swt.most.statemachine.edit/src-gen/swt/most/statemachine/provider/TriggerItemProvider.java @@ -0,0 +1,106 @@ +/** + */ +package swt.most.statemachine.provider; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; + +import swt.most.statemachine.Trigger; + +/** + * This is the item provider adapter for a {@link swt.most.statemachine.Trigger} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class TriggerItemProvider extends ExpressionItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public TriggerItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + } + return itemPropertyDescriptors; + } + + /** + * This returns Trigger.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/Trigger")); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean shouldComposeCreationImage() { + return true; + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((Trigger) object).getContent(); + return label == null || label.length() == 0 ? getString("_UI_Trigger_type") + : getString("_UI_Trigger_type") + " " + label; + } + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + +} diff --git a/metamodel/swt.most.statemachine.editor/.classpath b/metamodel/swt.most.statemachine.editor/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..2377d859931ab6ce1560ef53742afa6e8f1cdefd --- /dev/null +++ b/metamodel/swt.most.statemachine.editor/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src-gen"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/metamodel/swt.most.statemachine.editor/.gitignore b/metamodel/swt.most.statemachine.editor/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..ae3c1726048cd06b9a143e0376ed46dd9b9a8d53 --- /dev/null +++ b/metamodel/swt.most.statemachine.editor/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/metamodel/swt.most.statemachine.editor/.project b/metamodel/swt.most.statemachine.editor/.project new file mode 100644 index 0000000000000000000000000000000000000000..410edf8b046ce38c23b29c8ab2517f9eb8b38e8c --- /dev/null +++ b/metamodel/swt.most.statemachine.editor/.project @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>swt.most.statemachine.editor</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.SchemaBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + <nature>org.eclipse.pde.PluginNature</nature> + </natures> +</projectDescription> diff --git a/metamodel/swt.most.statemachine.editor/.settings/org.eclipse.core.resources.prefs b/metamodel/swt.most.statemachine.editor/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000000000000000000000000000000000000..99f26c0203a7844de00dbfc56e6a35d8ed3c022c --- /dev/null +++ b/metamodel/swt.most.statemachine.editor/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/<project>=UTF-8 diff --git a/metamodel/swt.most.statemachine.editor/META-INF/MANIFEST.MF b/metamodel/swt.most.statemachine.editor/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..d05232014bc2334201aacac3aec205217b1dac72 --- /dev/null +++ b/metamodel/swt.most.statemachine.editor/META-INF/MANIFEST.MF @@ -0,0 +1,19 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %pluginName +Bundle-SymbolicName: swt.most.statemachine.editor;singleton:=true +Automatic-Module-Name: swt.most.statemachine.editor +Bundle-Version: 1.0.0.qualifier +Bundle-ClassPath: . +Bundle-Activator: swt.most.statemachine.presentation.StatemachineEditorPlugin$Implementation +Bundle-Vendor: %providerName +Bundle-Localization: plugin +Bundle-RequiredExecutionEnvironment: J2SE-1.5 +Export-Package: swt.most.statemachine.presentation +Require-Bundle: org.eclipse.core.runtime, + org.eclipse.core.resources;visibility:=reexport, + swt.most.statemachine.edit;visibility:=reexport, + org.eclipse.emf.ecore.xmi;visibility:=reexport, + org.eclipse.emf.edit.ui;visibility:=reexport, + org.eclipse.ui.ide;visibility:=reexport +Bundle-ActivationPolicy: lazy diff --git a/metamodel/swt.most.statemachine.editor/build.properties b/metamodel/swt.most.statemachine.editor/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..11a57196868eef7d9f65dc239cdf49f3b6638ac8 --- /dev/null +++ b/metamodel/swt.most.statemachine.editor/build.properties @@ -0,0 +1,10 @@ +# + +bin.includes = .,\ + icons/,\ + META-INF/,\ + plugin.xml,\ + plugin.properties +jars.compile.order = . +source.. = src-gen/ +output.. = bin diff --git a/metamodel/swt.most.statemachine.editor/icons/full/obj16/StatemachineModelFile.gif b/metamodel/swt.most.statemachine.editor/icons/full/obj16/StatemachineModelFile.gif new file mode 100644 index 0000000000000000000000000000000000000000..415a3b6e05f910f571beefc62a17c6e917ba4fac Binary files /dev/null and b/metamodel/swt.most.statemachine.editor/icons/full/obj16/StatemachineModelFile.gif differ diff --git a/metamodel/swt.most.statemachine.editor/icons/full/wizban/NewStatemachine.gif b/metamodel/swt.most.statemachine.editor/icons/full/wizban/NewStatemachine.gif new file mode 100644 index 0000000000000000000000000000000000000000..acfcd368e5023e5244370e7ba66a2111068ddc06 Binary files /dev/null and b/metamodel/swt.most.statemachine.editor/icons/full/wizban/NewStatemachine.gif differ diff --git a/metamodel/swt.most.statemachine.editor/plugin.properties b/metamodel/swt.most.statemachine.editor/plugin.properties new file mode 100644 index 0000000000000000000000000000000000000000..f29de99bb378f44c971b07eb22fb6c832d0b65b5 --- /dev/null +++ b/metamodel/swt.most.statemachine.editor/plugin.properties @@ -0,0 +1,53 @@ +# + +pluginName = swt.most.statemachine Editor +providerName = www.example.org + +_UI_StatemachineEditor_menu = &Statemachine Editor + +_UI_CreateChild_menu_item = &New Child +_UI_CreateSibling_menu_item = N&ew Sibling + +_UI_ShowPropertiesView_menu_item = Show &Properties View +_UI_RefreshViewer_menu_item = &Refresh + +_UI_SelectionPage_label = Selection +_UI_ParentPage_label = Parent +_UI_ListPage_label = List +_UI_TreePage_label = Tree +_UI_TablePage_label = Table +_UI_TreeWithColumnsPage_label = Tree with Columns +_UI_ObjectColumn_label = Object +_UI_SelfColumn_label = Self + +_UI_NoObjectSelected = Selected Nothing +_UI_SingleObjectSelected = Selected Object: {0} +_UI_MultiObjectSelected = Selected {0} Objects + +_UI_OpenEditorError_label = Open Editor + +_UI_Wizard_category = Example EMF Model Creation Wizards + +_UI_CreateModelError_message = Problems encountered in file "{0}" + +_UI_StatemachineModelWizard_label = Statemachine Model +_UI_StatemachineModelWizard_description = Create a new Statemachine model + +_UI_StatemachineEditor_label = Statemachine Model Editor + +_UI_StatemachineEditorFilenameDefaultBase = My +_UI_StatemachineEditorFilenameExtensions = statemachine + +_UI_Wizard_label = New + +_WARN_FilenameExtension = The file name must end in ''.{0}'' +_WARN_FilenameExtensions = The file name must have one of the following extensions: {0} + +_UI_ModelObject = &Model Object +_UI_XMLEncoding = &XML Encoding +_UI_XMLEncodingChoices = UTF-8 ASCII UTF-16 UTF-16BE UTF-16LE ISO-8859-1 +_UI_Wizard_initial_object_description = Select a model object to create + +_UI_FileConflict_label = File Conflict +_WARN_FileConflict = There are unsaved changes that conflict with changes made outside the editor. Do you wish to discard this editor's changes? + diff --git a/metamodel/swt.most.statemachine.editor/plugin.xml b/metamodel/swt.most.statemachine.editor/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..6e8cbfa8ed4ca74c4ab63f65d5406577a49c9a01 --- /dev/null +++ b/metamodel/swt.most.statemachine.editor/plugin.xml @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.0"?> + +<!-- +--> + +<plugin> + + <extension point="org.eclipse.ui.newWizards"> + <!-- @generated statemachine --> + <category + id="org.eclipse.emf.ecore.Wizard.category.ID" + name="%_UI_Wizard_category"/> + <wizard + id="swt.most.statemachine.presentation.StatemachineModelWizardID" + name="%_UI_StatemachineModelWizard_label" + class="swt.most.statemachine.presentation.StatemachineModelWizard" + category="org.eclipse.emf.ecore.Wizard.category.ID" + icon="icons/full/obj16/StatemachineModelFile.gif"> + <description>%_UI_StatemachineModelWizard_description</description> + <selection class="org.eclipse.core.resources.IResource"/> + </wizard> + </extension> + + <extension point="org.eclipse.ui.editors"> + <!-- @generated statemachine --> + <editor + id="swt.most.statemachine.presentation.StatemachineEditorID" + name="%_UI_StatemachineEditor_label" + icon="icons/full/obj16/StatemachineModelFile.gif" + extensions="statemachine" + class="swt.most.statemachine.presentation.StatemachineEditor" + contributorClass="swt.most.statemachine.presentation.StatemachineActionBarContributor"> + </editor> + </extension> + +</plugin> diff --git a/metamodel/swt.most.statemachine.editor/src-gen/swt/most/statemachine/presentation/StatemachineActionBarContributor.java b/metamodel/swt.most.statemachine.editor/src-gen/swt/most/statemachine/presentation/StatemachineActionBarContributor.java new file mode 100644 index 0000000000000000000000000000000000000000..bc325a046533ca19706ee5ad180914ff767d54fd --- /dev/null +++ b/metamodel/swt.most.statemachine.editor/src-gen/swt/most/statemachine/presentation/StatemachineActionBarContributor.java @@ -0,0 +1,424 @@ +/** + */ +package swt.most.statemachine.presentation; + +import java.util.ArrayList; +import java.util.Collection; + +import org.eclipse.emf.common.ui.viewer.IViewerProvider; + +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.edit.domain.IEditingDomainProvider; + +import org.eclipse.emf.edit.ui.action.ControlAction; +import org.eclipse.emf.edit.ui.action.CreateChildAction; +import org.eclipse.emf.edit.ui.action.CreateSiblingAction; +import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor; +import org.eclipse.emf.edit.ui.action.LoadResourceAction; +import org.eclipse.emf.edit.ui.action.ValidateAction; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.ActionContributionItem; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.action.IContributionItem; +import org.eclipse.jface.action.IContributionManager; +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; +import org.eclipse.jface.action.SubContributionItem; + +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.Viewer; + +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.PartInitException; + +/** + * This is the action bar contributor for the Statemachine model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class StatemachineActionBarContributor extends EditingDomainActionBarContributor + implements ISelectionChangedListener { + /** + * This keeps track of the active editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IEditorPart activeEditorPart; + + /** + * This keeps track of the current selection provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ISelectionProvider selectionProvider; + + /** + * This action opens the Properties view. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IAction showPropertiesViewAction = new Action( + StatemachineEditorPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item")) { + @Override + public void run() { + try { + getPage().showView("org.eclipse.ui.views.PropertySheet"); + } catch (PartInitException exception) { + StatemachineEditorPlugin.INSTANCE.log(exception); + } + } + }; + + /** + * This action refreshes the viewer of the current editor if the editor + * implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IAction refreshViewerAction = new Action( + StatemachineEditorPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item")) { + @Override + public boolean isEnabled() { + return activeEditorPart instanceof IViewerProvider; + } + + @Override + public void run() { + if (activeEditorPart instanceof IViewerProvider) { + Viewer viewer = ((IViewerProvider) activeEditorPart).getViewer(); + if (viewer != null) { + viewer.refresh(); + } + } + } + }; + + /** + * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to each descriptor + * generated for the current selection by the item provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> createChildActions; + + /** + * This is the menu manager into which menu contribution items should be added for CreateChild actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IMenuManager createChildMenuManager; + + /** + * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} corresponding to each descriptor + * generated for the current selection by the item provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> createSiblingActions; + + /** + * This is the menu manager into which menu contribution items should be added for CreateSibling actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IMenuManager createSiblingMenuManager; + + /** + * This creates an instance of the contributor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public StatemachineActionBarContributor() { + super(ADDITIONS_LAST_STYLE); + loadResourceAction = new LoadResourceAction(); + validateAction = new ValidateAction(); + controlAction = new ControlAction(); + } + + /** + * This adds Separators for editor additions to the tool bar. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void contributeToToolBar(IToolBarManager toolBarManager) { + super.contributeToToolBar(toolBarManager); + toolBarManager.add(new Separator("statemachine-settings")); + toolBarManager.add(new Separator("statemachine-additions")); + } + + /** + * This adds to the menu bar a menu and some separators for editor additions, + * as well as the sub-menus for object creation items. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void contributeToMenu(IMenuManager menuManager) { + super.contributeToMenu(menuManager); + + IMenuManager submenuManager = new MenuManager( + StatemachineEditorPlugin.INSTANCE.getString("_UI_StatemachineEditor_menu"), + "swt.most.statemachineMenuID"); + menuManager.insertAfter("additions", submenuManager); + submenuManager.add(new Separator("settings")); + submenuManager.add(new Separator("actions")); + submenuManager.add(new Separator("additions")); + submenuManager.add(new Separator("additions-end")); + + // Prepare for CreateChild item addition or removal. + // + createChildMenuManager = new MenuManager( + StatemachineEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item")); + submenuManager.insertBefore("additions", createChildMenuManager); + + // Prepare for CreateSibling item addition or removal. + // + createSiblingMenuManager = new MenuManager( + StatemachineEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item")); + submenuManager.insertBefore("additions", createSiblingMenuManager); + + // Force an update because Eclipse hides empty menus now. + // + submenuManager.addMenuListener(new IMenuListener() { + public void menuAboutToShow(IMenuManager menuManager) { + menuManager.updateAll(true); + } + }); + + addGlobalActions(submenuManager); + } + + /** + * When the active editor changes, this remembers the change and registers with it as a selection provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setActiveEditor(IEditorPart part) { + super.setActiveEditor(part); + activeEditorPart = part; + + // Switch to the new selection provider. + // + if (selectionProvider != null) { + selectionProvider.removeSelectionChangedListener(this); + } + if (part == null) { + selectionProvider = null; + } else { + selectionProvider = part.getSite().getSelectionProvider(); + selectionProvider.addSelectionChangedListener(this); + + // Fake a selection changed event to update the menus. + // + if (selectionProvider.getSelection() != null) { + selectionChanged(new SelectionChangedEvent(selectionProvider, selectionProvider.getSelection())); + } + } + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionChangedListener}, + * handling {@link org.eclipse.jface.viewers.SelectionChangedEvent}s by querying for the children and siblings + * that can be added to the selected object and updating the menus accordingly. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void selectionChanged(SelectionChangedEvent event) { + // Remove any menu items for old selection. + // + if (createChildMenuManager != null) { + depopulateManager(createChildMenuManager, createChildActions); + } + if (createSiblingMenuManager != null) { + depopulateManager(createSiblingMenuManager, createSiblingActions); + } + + // Query the new selection for appropriate new child/sibling descriptors + // + Collection<?> newChildDescriptors = null; + Collection<?> newSiblingDescriptors = null; + + ISelection selection = event.getSelection(); + if (selection instanceof IStructuredSelection && ((IStructuredSelection) selection).size() == 1) { + Object object = ((IStructuredSelection) selection).getFirstElement(); + + EditingDomain domain = ((IEditingDomainProvider) activeEditorPart).getEditingDomain(); + + newChildDescriptors = domain.getNewChildDescriptors(object, null); + newSiblingDescriptors = domain.getNewChildDescriptors(null, object); + } + + // Generate actions for selection; populate and redraw the menus. + // + createChildActions = generateCreateChildActions(newChildDescriptors, selection); + createSiblingActions = generateCreateSiblingActions(newSiblingDescriptors, selection); + + if (createChildMenuManager != null) { + populateManager(createChildMenuManager, createChildActions, null); + createChildMenuManager.update(true); + } + if (createSiblingMenuManager != null) { + populateManager(createSiblingMenuManager, createSiblingActions, null); + createSiblingMenuManager.update(true); + } + } + + /** + * This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction} for each object in <code>descriptors</code>, + * and returns the collection of these actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> generateCreateChildActions(Collection<?> descriptors, ISelection selection) { + Collection<IAction> actions = new ArrayList<IAction>(); + if (descriptors != null) { + for (Object descriptor : descriptors) { + actions.add(new CreateChildAction(activeEditorPart, selection, descriptor)); + } + } + return actions; + } + + /** + * This generates a {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} for each object in <code>descriptors</code>, + * and returns the collection of these actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> generateCreateSiblingActions(Collection<?> descriptors, ISelection selection) { + Collection<IAction> actions = new ArrayList<IAction>(); + if (descriptors != null) { + for (Object descriptor : descriptors) { + actions.add(new CreateSiblingAction(activeEditorPart, selection, descriptor)); + } + } + return actions; + } + + /** + * This populates the specified <code>manager</code> with {@link org.eclipse.jface.action.ActionContributionItem}s + * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection, + * by inserting them before the specified contribution item <code>contributionID</code>. + * If <code>contributionID</code> is <code>null</code>, they are simply added. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void populateManager(IContributionManager manager, Collection<? extends IAction> actions, + String contributionID) { + if (actions != null) { + for (IAction action : actions) { + if (contributionID != null) { + manager.insertBefore(contributionID, action); + } else { + manager.add(action); + } + } + } + } + + /** + * This removes from the specified <code>manager</code> all {@link org.eclipse.jface.action.ActionContributionItem}s + * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void depopulateManager(IContributionManager manager, Collection<? extends IAction> actions) { + if (actions != null) { + IContributionItem[] items = manager.getItems(); + for (int i = 0; i < items.length; i++) { + // Look into SubContributionItems + // + IContributionItem contributionItem = items[i]; + while (contributionItem instanceof SubContributionItem) { + contributionItem = ((SubContributionItem) contributionItem).getInnerItem(); + } + + // Delete the ActionContributionItems with matching action. + // + if (contributionItem instanceof ActionContributionItem) { + IAction action = ((ActionContributionItem) contributionItem).getAction(); + if (actions.contains(action)) { + manager.remove(contributionItem); + } + } + } + } + } + + /** + * This populates the pop-up menu before it appears. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void menuAboutToShow(IMenuManager menuManager) { + super.menuAboutToShow(menuManager); + MenuManager submenuManager = null; + + submenuManager = new MenuManager(StatemachineEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item")); + populateManager(submenuManager, createChildActions, null); + menuManager.insertBefore("edit", submenuManager); + + submenuManager = new MenuManager(StatemachineEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item")); + populateManager(submenuManager, createSiblingActions, null); + menuManager.insertBefore("edit", submenuManager); + } + + /** + * This inserts global actions before the "additions-end" separator. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void addGlobalActions(IMenuManager menuManager) { + menuManager.insertAfter("additions-end", new Separator("ui-actions")); + menuManager.insertAfter("ui-actions", showPropertiesViewAction); + + refreshViewerAction.setEnabled(refreshViewerAction.isEnabled()); + menuManager.insertAfter("ui-actions", refreshViewerAction); + + super.addGlobalActions(menuManager); + } + + /** + * This ensures that a delete action will clean up all references to deleted objects. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean removeAllReferencesOnDelete() { + return true; + } + +} diff --git a/metamodel/swt.most.statemachine.editor/src-gen/swt/most/statemachine/presentation/StatemachineEditor.java b/metamodel/swt.most.statemachine.editor/src-gen/swt/most/statemachine/presentation/StatemachineEditor.java new file mode 100644 index 0000000000000000000000000000000000000000..3edf894e1ced4e38d3d7b73c82a4d792fde07d56 --- /dev/null +++ b/metamodel/swt.most.statemachine.editor/src-gen/swt/most/statemachine/presentation/StatemachineEditor.java @@ -0,0 +1,1775 @@ +/** + */ +package swt.most.statemachine.presentation; + +import java.io.IOException; +import java.io.InputStream; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.EventObject; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IMarker; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IResourceChangeEvent; +import org.eclipse.core.resources.IResourceChangeListener; +import org.eclipse.core.resources.IResourceDelta; +import org.eclipse.core.resources.IResourceDeltaVisitor; +import org.eclipse.core.resources.ResourcesPlugin; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.NullProgressMonitor; + +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IStatusLineManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; + +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.dialogs.ProgressMonitorDialog; + +import org.eclipse.jface.util.LocalSelectionTransfer; + +import org.eclipse.jface.viewers.ColumnWeightData; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.ListViewer; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.viewers.StructuredViewer; +import org.eclipse.jface.viewers.TableLayout; +import org.eclipse.jface.viewers.TableViewer; +import org.eclipse.jface.viewers.TreeViewer; +import org.eclipse.jface.viewers.Viewer; + +import org.eclipse.swt.SWT; + +import org.eclipse.swt.custom.CTabFolder; + +import org.eclipse.swt.dnd.DND; +import org.eclipse.swt.dnd.FileTransfer; +import org.eclipse.swt.dnd.Transfer; + +import org.eclipse.swt.events.ControlAdapter; +import org.eclipse.swt.events.ControlEvent; + +import org.eclipse.swt.graphics.Point; +import org.eclipse.swt.graphics.Rectangle; + +import org.eclipse.swt.layout.FillLayout; + +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Menu; +import org.eclipse.swt.widgets.Table; +import org.eclipse.swt.widgets.TableColumn; +import org.eclipse.swt.widgets.Tree; +import org.eclipse.swt.widgets.TreeColumn; + +import org.eclipse.ui.IActionBars; +import org.eclipse.ui.IEditorInput; +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.IEditorSite; +import org.eclipse.ui.IPartListener; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.PartInitException; + +import org.eclipse.ui.dialogs.SaveAsDialog; + +import org.eclipse.ui.ide.IGotoMarker; + +import org.eclipse.ui.part.FileEditorInput; +import org.eclipse.ui.part.MultiPageEditorPart; + +import org.eclipse.ui.views.contentoutline.ContentOutline; +import org.eclipse.ui.views.contentoutline.ContentOutlinePage; +import org.eclipse.ui.views.contentoutline.IContentOutlinePage; + +import org.eclipse.ui.views.properties.IPropertySheetPage; +import org.eclipse.ui.views.properties.PropertySheet; +import org.eclipse.ui.views.properties.PropertySheetPage; + +import org.eclipse.emf.common.command.BasicCommandStack; +import org.eclipse.emf.common.command.Command; +import org.eclipse.emf.common.command.CommandStack; +import org.eclipse.emf.common.command.CommandStackListener; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.common.ui.MarkerHelper; +import org.eclipse.emf.common.ui.ViewerPane; + +import org.eclipse.emf.common.ui.editor.ProblemEditorPart; + +import org.eclipse.emf.common.ui.viewer.IViewerProvider; + +import org.eclipse.emf.common.util.BasicDiagnostic; +import org.eclipse.emf.common.util.Diagnostic; +import org.eclipse.emf.common.util.URI; + +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; + +import org.eclipse.emf.ecore.util.EContentAdapter; +import org.eclipse.emf.ecore.util.EcoreUtil; + +import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.edit.domain.IEditingDomainProvider; + +import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator; +import org.eclipse.emf.edit.provider.ComposedAdapterFactory; +import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory; + +import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory; + +import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor; + +import org.eclipse.emf.edit.ui.celleditor.AdapterFactoryTreeEditor; + +import org.eclipse.emf.edit.ui.dnd.EditingDomainViewerDropAdapter; +import org.eclipse.emf.edit.ui.dnd.LocalTransfer; +import org.eclipse.emf.edit.ui.dnd.ViewerDragAdapter; + +import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider; +import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider; +import org.eclipse.emf.edit.ui.provider.UnwrappingSelectionProvider; + +import org.eclipse.emf.edit.ui.util.EditUIMarkerHelper; +import org.eclipse.emf.edit.ui.util.EditUIUtil; + +import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage; + +import swt.most.statemachine.provider.StatemachineItemProviderAdapterFactory; + +import org.eclipse.ui.actions.WorkspaceModifyOperation; + +/** + * This is an example of a Statemachine model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class StatemachineEditor extends MultiPageEditorPart + implements IEditingDomainProvider, ISelectionProvider, IMenuListener, IViewerProvider, IGotoMarker { + /** + * This keeps track of the editing domain that is used to track all changes to the model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected AdapterFactoryEditingDomain editingDomain; + + /** + * This is the one adapter factory used for providing views of the model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ComposedAdapterFactory adapterFactory; + + /** + * This is the content outline page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IContentOutlinePage contentOutlinePage; + + /** + * This is a kludge... + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IStatusLineManager contentOutlineStatusLineManager; + + /** + * This is the content outline page's viewer. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer contentOutlineViewer; + + /** + * This is the property sheet page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected List<PropertySheetPage> propertySheetPages = new ArrayList<PropertySheetPage>(); + + /** + * This is the viewer that shadows the selection in the content outline. + * The parent relation must be correctly defined for this to work. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer selectionViewer; + + /** + * This inverts the roll of parent and child in the content provider and show parents as a tree. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer parentViewer; + + /** + * This shows how a tree view works. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer treeViewer; + + /** + * This shows how a list view works. + * A list viewer doesn't support icons. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ListViewer listViewer; + + /** + * This shows how a table view works. + * A table can be used as a list with icons. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TableViewer tableViewer; + + /** + * This shows how a tree view with columns works. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer treeViewerWithColumns; + + /** + * This keeps track of the active viewer pane, in the book. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ViewerPane currentViewerPane; + + /** + * This keeps track of the active content viewer, which may be either one of the viewers in the pages or the content outline viewer. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Viewer currentViewer; + + /** + * This listens to which ever viewer is active. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ISelectionChangedListener selectionChangedListener; + + /** + * This keeps track of all the {@link org.eclipse.jface.viewers.ISelectionChangedListener}s that are listening to this editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<ISelectionChangedListener> selectionChangedListeners = new ArrayList<ISelectionChangedListener>(); + + /** + * This keeps track of the selection of the editor as a whole. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ISelection editorSelection = StructuredSelection.EMPTY; + + /** + * The MarkerHelper is responsible for creating workspace resource markers presented + * in Eclipse's Problems View. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected MarkerHelper markerHelper = new EditUIMarkerHelper(); + + /** + * This listens for when the outline becomes active + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IPartListener partListener = new IPartListener() { + public void partActivated(IWorkbenchPart p) { + if (p instanceof ContentOutline) { + if (((ContentOutline) p).getCurrentPage() == contentOutlinePage) { + getActionBarContributor().setActiveEditor(StatemachineEditor.this); + + setCurrentViewer(contentOutlineViewer); + } + } else if (p instanceof PropertySheet) { + if (propertySheetPages.contains(((PropertySheet) p).getCurrentPage())) { + getActionBarContributor().setActiveEditor(StatemachineEditor.this); + handleActivate(); + } + } else if (p == StatemachineEditor.this) { + handleActivate(); + } + } + + public void partBroughtToTop(IWorkbenchPart p) { + // Ignore. + } + + public void partClosed(IWorkbenchPart p) { + // Ignore. + } + + public void partDeactivated(IWorkbenchPart p) { + // Ignore. + } + + public void partOpened(IWorkbenchPart p) { + // Ignore. + } + }; + + /** + * Resources that have been removed since last activation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Resource> removedResources = new ArrayList<Resource>(); + + /** + * Resources that have been changed since last activation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Resource> changedResources = new ArrayList<Resource>(); + + /** + * Resources that have been saved. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Resource> savedResources = new ArrayList<Resource>(); + + /** + * Map to store the diagnostic associated with a resource. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Map<Resource, Diagnostic> resourceToDiagnosticMap = new LinkedHashMap<Resource, Diagnostic>(); + + /** + * Controls whether the problem indication should be updated. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean updateProblemIndication = true; + + /** + * Adapter used to update the problem indication when resources are demanded loaded. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected EContentAdapter problemIndicationAdapter = new EContentAdapter() { + protected boolean dispatching; + + @Override + public void notifyChanged(Notification notification) { + if (notification.getNotifier() instanceof Resource) { + switch (notification.getFeatureID(Resource.class)) { + case Resource.RESOURCE__IS_LOADED: + case Resource.RESOURCE__ERRORS: + case Resource.RESOURCE__WARNINGS: { + Resource resource = (Resource) notification.getNotifier(); + Diagnostic diagnostic = analyzeResourceProblems(resource, null); + if (diagnostic.getSeverity() != Diagnostic.OK) { + resourceToDiagnosticMap.put(resource, diagnostic); + } else { + resourceToDiagnosticMap.remove(resource); + } + dispatchUpdateProblemIndication(); + break; + } + } + } else { + super.notifyChanged(notification); + } + } + + protected void dispatchUpdateProblemIndication() { + if (updateProblemIndication && !dispatching) { + dispatching = true; + getSite().getShell().getDisplay().asyncExec(new Runnable() { + public void run() { + dispatching = false; + updateProblemIndication(); + } + }); + } + } + + @Override + protected void setTarget(Resource target) { + basicSetTarget(target); + } + + @Override + protected void unsetTarget(Resource target) { + basicUnsetTarget(target); + resourceToDiagnosticMap.remove(target); + dispatchUpdateProblemIndication(); + } + }; + + /** + * This listens for workspace changes. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IResourceChangeListener resourceChangeListener = new IResourceChangeListener() { + public void resourceChanged(IResourceChangeEvent event) { + IResourceDelta delta = event.getDelta(); + try { + class ResourceDeltaVisitor implements IResourceDeltaVisitor { + protected ResourceSet resourceSet = editingDomain.getResourceSet(); + protected Collection<Resource> changedResources = new ArrayList<Resource>(); + protected Collection<Resource> removedResources = new ArrayList<Resource>(); + + public boolean visit(IResourceDelta delta) { + if (delta.getResource().getType() == IResource.FILE) { + if (delta.getKind() == IResourceDelta.REMOVED || delta.getKind() == IResourceDelta.CHANGED + && delta.getFlags() != IResourceDelta.MARKERS) { + Resource resource = resourceSet.getResource( + URI.createPlatformResourceURI(delta.getFullPath().toString(), true), false); + if (resource != null) { + if (delta.getKind() == IResourceDelta.REMOVED) { + removedResources.add(resource); + } else if (!savedResources.remove(resource)) { + changedResources.add(resource); + } + } + } + return false; + } + + return true; + } + + public Collection<Resource> getChangedResources() { + return changedResources; + } + + public Collection<Resource> getRemovedResources() { + return removedResources; + } + } + + final ResourceDeltaVisitor visitor = new ResourceDeltaVisitor(); + delta.accept(visitor); + + if (!visitor.getRemovedResources().isEmpty()) { + getSite().getShell().getDisplay().asyncExec(new Runnable() { + public void run() { + removedResources.addAll(visitor.getRemovedResources()); + if (!isDirty()) { + getSite().getPage().closeEditor(StatemachineEditor.this, false); + } + } + }); + } + + if (!visitor.getChangedResources().isEmpty()) { + getSite().getShell().getDisplay().asyncExec(new Runnable() { + public void run() { + changedResources.addAll(visitor.getChangedResources()); + if (getSite().getPage().getActiveEditor() == StatemachineEditor.this) { + handleActivate(); + } + } + }); + } + } catch (CoreException exception) { + StatemachineEditorPlugin.INSTANCE.log(exception); + } + } + }; + + /** + * Handles activation of the editor or it's associated views. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void handleActivate() { + // Recompute the read only state. + // + if (editingDomain.getResourceToReadOnlyMap() != null) { + editingDomain.getResourceToReadOnlyMap().clear(); + + // Refresh any actions that may become enabled or disabled. + // + setSelection(getSelection()); + } + + if (!removedResources.isEmpty()) { + if (handleDirtyConflict()) { + getSite().getPage().closeEditor(StatemachineEditor.this, false); + } else { + removedResources.clear(); + changedResources.clear(); + savedResources.clear(); + } + } else if (!changedResources.isEmpty()) { + changedResources.removeAll(savedResources); + handleChangedResources(); + changedResources.clear(); + savedResources.clear(); + } + } + + /** + * Handles what to do with changed resources on activation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void handleChangedResources() { + if (!changedResources.isEmpty() && (!isDirty() || handleDirtyConflict())) { + ResourceSet resourceSet = editingDomain.getResourceSet(); + if (isDirty()) { + changedResources.addAll(resourceSet.getResources()); + } + editingDomain.getCommandStack().flush(); + + updateProblemIndication = false; + for (Resource resource : changedResources) { + if (resource.isLoaded()) { + resource.unload(); + try { + resource.load(resourceSet.getLoadOptions()); + } catch (IOException exception) { + if (!resourceToDiagnosticMap.containsKey(resource)) { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + } + } + } + + if (AdapterFactoryEditingDomain.isStale(editorSelection)) { + setSelection(StructuredSelection.EMPTY); + } + + updateProblemIndication = true; + updateProblemIndication(); + } + } + + /** + * Updates the problems indication with the information described in the specified diagnostic. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void updateProblemIndication() { + if (updateProblemIndication) { + BasicDiagnostic diagnostic = new BasicDiagnostic(Diagnostic.OK, "swt.most.statemachine.editor", 0, null, + new Object[] { editingDomain.getResourceSet() }); + for (Diagnostic childDiagnostic : resourceToDiagnosticMap.values()) { + if (childDiagnostic.getSeverity() != Diagnostic.OK) { + diagnostic.add(childDiagnostic); + } + } + + int lastEditorPage = getPageCount() - 1; + if (lastEditorPage >= 0 && getEditor(lastEditorPage) instanceof ProblemEditorPart) { + ((ProblemEditorPart) getEditor(lastEditorPage)).setDiagnostic(diagnostic); + if (diagnostic.getSeverity() != Diagnostic.OK) { + setActivePage(lastEditorPage); + } + } else if (diagnostic.getSeverity() != Diagnostic.OK) { + ProblemEditorPart problemEditorPart = new ProblemEditorPart(); + problemEditorPart.setDiagnostic(diagnostic); + problemEditorPart.setMarkerHelper(markerHelper); + try { + addPage(++lastEditorPage, problemEditorPart, getEditorInput()); + setPageText(lastEditorPage, problemEditorPart.getPartName()); + setActivePage(lastEditorPage); + showTabs(); + } catch (PartInitException exception) { + StatemachineEditorPlugin.INSTANCE.log(exception); + } + } + + if (markerHelper.hasMarkers(editingDomain.getResourceSet())) { + try { + markerHelper.updateMarkers(diagnostic); + } catch (CoreException exception) { + StatemachineEditorPlugin.INSTANCE.log(exception); + } + } + } + } + + /** + * Shows a dialog that asks if conflicting changes should be discarded. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean handleDirtyConflict() { + return MessageDialog.openQuestion(getSite().getShell(), getString("_UI_FileConflict_label"), + getString("_WARN_FileConflict")); + } + + /** + * This creates a model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public StatemachineEditor() { + super(); + initializeEditingDomain(); + } + + /** + * This sets up the editing domain for the model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void initializeEditingDomain() { + // Create an adapter factory that yields item providers. + // + adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE); + + adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new StatemachineItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory()); + + // Create the command stack that will notify this editor as commands are executed. + // + BasicCommandStack commandStack = new BasicCommandStack(); + + // Add a listener to set the most recent command's affected objects to be the selection of the viewer with focus. + // + commandStack.addCommandStackListener(new CommandStackListener() { + public void commandStackChanged(final EventObject event) { + getContainer().getDisplay().asyncExec(new Runnable() { + public void run() { + firePropertyChange(IEditorPart.PROP_DIRTY); + + // Try to select the affected objects. + // + Command mostRecentCommand = ((CommandStack) event.getSource()).getMostRecentCommand(); + if (mostRecentCommand != null) { + setSelectionToViewer(mostRecentCommand.getAffectedObjects()); + } + for (Iterator<PropertySheetPage> i = propertySheetPages.iterator(); i.hasNext();) { + PropertySheetPage propertySheetPage = i.next(); + if (propertySheetPage.getControl() == null || propertySheetPage.getControl().isDisposed()) { + i.remove(); + } else { + propertySheetPage.refresh(); + } + } + } + }); + } + }); + + // Create the editing domain with a special command stack. + // + editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new HashMap<Resource, Boolean>()); + } + + /** + * This is here for the listener to be able to call it. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void firePropertyChange(int action) { + super.firePropertyChange(action); + } + + /** + * This sets the selection into whichever viewer is active. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setSelectionToViewer(Collection<?> collection) { + final Collection<?> theSelection = collection; + // Make sure it's okay. + // + if (theSelection != null && !theSelection.isEmpty()) { + Runnable runnable = new Runnable() { + public void run() { + // Try to select the items in the current content viewer of the editor. + // + if (currentViewer != null) { + currentViewer.setSelection(new StructuredSelection(theSelection.toArray()), true); + } + } + }; + getSite().getShell().getDisplay().asyncExec(runnable); + } + } + + /** + * This returns the editing domain as required by the {@link IEditingDomainProvider} interface. + * This is important for implementing the static methods of {@link AdapterFactoryEditingDomain} + * and for supporting {@link org.eclipse.emf.edit.ui.action.CommandAction}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EditingDomain getEditingDomain() { + return editingDomain; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public class ReverseAdapterFactoryContentProvider extends AdapterFactoryContentProvider { + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ReverseAdapterFactoryContentProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object[] getElements(Object object) { + Object parent = super.getParent(object); + return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object[] getChildren(Object object) { + Object parent = super.getParent(object); + return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean hasChildren(Object object) { + Object parent = super.getParent(object); + return parent != null; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getParent(Object object) { + return null; + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setCurrentViewerPane(ViewerPane viewerPane) { + if (currentViewerPane != viewerPane) { + if (currentViewerPane != null) { + currentViewerPane.showFocus(false); + } + currentViewerPane = viewerPane; + } + setCurrentViewer(currentViewerPane.getViewer()); + } + + /** + * This makes sure that one content viewer, either for the current page or the outline view, if it has focus, + * is the current one. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setCurrentViewer(Viewer viewer) { + // If it is changing... + // + if (currentViewer != viewer) { + if (selectionChangedListener == null) { + // Create the listener on demand. + // + selectionChangedListener = new ISelectionChangedListener() { + // This just notifies those things that are affected by the section. + // + public void selectionChanged(SelectionChangedEvent selectionChangedEvent) { + setSelection(selectionChangedEvent.getSelection()); + } + }; + } + + // Stop listening to the old one. + // + if (currentViewer != null) { + currentViewer.removeSelectionChangedListener(selectionChangedListener); + } + + // Start listening to the new one. + // + if (viewer != null) { + viewer.addSelectionChangedListener(selectionChangedListener); + } + + // Remember it. + // + currentViewer = viewer; + + // Set the editors selection based on the current viewer's selection. + // + setSelection(currentViewer == null ? StructuredSelection.EMPTY : currentViewer.getSelection()); + } + } + + /** + * This returns the viewer as required by the {@link IViewerProvider} interface. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Viewer getViewer() { + return currentViewer; + } + + /** + * This creates a context menu for the viewer and adds a listener as well registering the menu for extension. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void createContextMenuFor(StructuredViewer viewer) { + MenuManager contextMenu = new MenuManager("#PopUp"); + contextMenu.add(new Separator("additions")); + contextMenu.setRemoveAllWhenShown(true); + contextMenu.addMenuListener(this); + Menu menu = contextMenu.createContextMenu(viewer.getControl()); + viewer.getControl().setMenu(menu); + getSite().registerContextMenu(contextMenu, new UnwrappingSelectionProvider(viewer)); + + int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK; + Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance(), LocalSelectionTransfer.getTransfer(), + FileTransfer.getInstance() }; + viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer)); + viewer.addDropSupport(dndOperations, transfers, new EditingDomainViewerDropAdapter(editingDomain, viewer)); + } + + /** + * This is the method called to load a resource into the editing domain's resource set based on the editor's input. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void createModel() { + URI resourceURI = EditUIUtil.getURI(getEditorInput(), editingDomain.getResourceSet().getURIConverter()); + Exception exception = null; + Resource resource = null; + try { + // Load the resource through the editing domain. + // + resource = editingDomain.getResourceSet().getResource(resourceURI, true); + } catch (Exception e) { + exception = e; + resource = editingDomain.getResourceSet().getResource(resourceURI, false); + } + + Diagnostic diagnostic = analyzeResourceProblems(resource, exception); + if (diagnostic.getSeverity() != Diagnostic.OK) { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + editingDomain.getResourceSet().eAdapters().add(problemIndicationAdapter); + } + + /** + * Returns a diagnostic describing the errors and warnings listed in the resource + * and the specified exception (if any). + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Diagnostic analyzeResourceProblems(Resource resource, Exception exception) { + boolean hasErrors = !resource.getErrors().isEmpty(); + if (hasErrors || !resource.getWarnings().isEmpty()) { + BasicDiagnostic basicDiagnostic = new BasicDiagnostic(hasErrors ? Diagnostic.ERROR : Diagnostic.WARNING, + "swt.most.statemachine.editor", 0, getString("_UI_CreateModelError_message", resource.getURI()), + new Object[] { exception == null ? (Object) resource : exception }); + basicDiagnostic.merge(EcoreUtil.computeDiagnostic(resource, true)); + return basicDiagnostic; + } else if (exception != null) { + return new BasicDiagnostic(Diagnostic.ERROR, "swt.most.statemachine.editor", 0, + getString("_UI_CreateModelError_message", resource.getURI()), new Object[] { exception }); + } else { + return Diagnostic.OK_INSTANCE; + } + } + + /** + * This is the method used by the framework to install your own controls. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void createPages() { + // Creates the model from the editor input + // + createModel(); + + // Only creates the other pages if there is something that can be edited + // + if (!getEditingDomain().getResourceSet().getResources().isEmpty()) { + // Create a page for the selection tree view. + // + { + ViewerPane viewerPane = new ViewerPane(getSite().getPage(), StatemachineEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + Tree tree = new Tree(composite, SWT.MULTI); + TreeViewer newTreeViewer = new TreeViewer(tree); + return newTreeViewer; + } + + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + + selectionViewer = (TreeViewer) viewerPane.getViewer(); + selectionViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + selectionViewer.setUseHashlookup(true); + + selectionViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + selectionViewer.setInput(editingDomain.getResourceSet()); + selectionViewer.setSelection( + new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true); + viewerPane.setTitle(editingDomain.getResourceSet()); + + new AdapterFactoryTreeEditor(selectionViewer.getTree(), adapterFactory); + + createContextMenuFor(selectionViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_SelectionPage_label")); + } + + // Create a page for the parent tree view. + // + { + ViewerPane viewerPane = new ViewerPane(getSite().getPage(), StatemachineEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + Tree tree = new Tree(composite, SWT.MULTI); + TreeViewer newTreeViewer = new TreeViewer(tree); + return newTreeViewer; + } + + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + + parentViewer = (TreeViewer) viewerPane.getViewer(); + parentViewer.setAutoExpandLevel(30); + parentViewer.setContentProvider(new ReverseAdapterFactoryContentProvider(adapterFactory)); + parentViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(parentViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_ParentPage_label")); + } + + // This is the page for the list viewer + // + { + ViewerPane viewerPane = new ViewerPane(getSite().getPage(), StatemachineEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new ListViewer(composite); + } + + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + listViewer = (ListViewer) viewerPane.getViewer(); + listViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + listViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(listViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_ListPage_label")); + } + + // This is the page for the tree viewer + // + { + ViewerPane viewerPane = new ViewerPane(getSite().getPage(), StatemachineEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new TreeViewer(composite); + } + + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + treeViewer = (TreeViewer) viewerPane.getViewer(); + treeViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + treeViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + new AdapterFactoryTreeEditor(treeViewer.getTree(), adapterFactory); + + createContextMenuFor(treeViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_TreePage_label")); + } + + // This is the page for the table viewer. + // + { + ViewerPane viewerPane = new ViewerPane(getSite().getPage(), StatemachineEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new TableViewer(composite); + } + + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + tableViewer = (TableViewer) viewerPane.getViewer(); + + Table table = tableViewer.getTable(); + TableLayout layout = new TableLayout(); + table.setLayout(layout); + table.setHeaderVisible(true); + table.setLinesVisible(true); + + TableColumn objectColumn = new TableColumn(table, SWT.NONE); + layout.addColumnData(new ColumnWeightData(3, 100, true)); + objectColumn.setText(getString("_UI_ObjectColumn_label")); + objectColumn.setResizable(true); + + TableColumn selfColumn = new TableColumn(table, SWT.NONE); + layout.addColumnData(new ColumnWeightData(2, 100, true)); + selfColumn.setText(getString("_UI_SelfColumn_label")); + selfColumn.setResizable(true); + + tableViewer.setColumnProperties(new String[] { "a", "b" }); + tableViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + tableViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(tableViewer); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_TablePage_label")); + } + + // This is the page for the table tree viewer. + // + { + ViewerPane viewerPane = new ViewerPane(getSite().getPage(), StatemachineEditor.this) { + @Override + public Viewer createViewer(Composite composite) { + return new TreeViewer(composite); + } + + @Override + public void requestActivation() { + super.requestActivation(); + setCurrentViewerPane(this); + } + }; + viewerPane.createControl(getContainer()); + + treeViewerWithColumns = (TreeViewer) viewerPane.getViewer(); + + Tree tree = treeViewerWithColumns.getTree(); + tree.setLayoutData(new FillLayout()); + tree.setHeaderVisible(true); + tree.setLinesVisible(true); + + TreeColumn objectColumn = new TreeColumn(tree, SWT.NONE); + objectColumn.setText(getString("_UI_ObjectColumn_label")); + objectColumn.setResizable(true); + objectColumn.setWidth(250); + + TreeColumn selfColumn = new TreeColumn(tree, SWT.NONE); + selfColumn.setText(getString("_UI_SelfColumn_label")); + selfColumn.setResizable(true); + selfColumn.setWidth(200); + + treeViewerWithColumns.setColumnProperties(new String[] { "a", "b" }); + treeViewerWithColumns.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + treeViewerWithColumns.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + + createContextMenuFor(treeViewerWithColumns); + int pageIndex = addPage(viewerPane.getControl()); + setPageText(pageIndex, getString("_UI_TreeWithColumnsPage_label")); + } + + getSite().getShell().getDisplay().asyncExec(new Runnable() { + public void run() { + if (!getContainer().isDisposed()) { + setActivePage(0); + } + } + }); + } + + // Ensures that this editor will only display the page's tab + // area if there are more than one page + // + getContainer().addControlListener(new ControlAdapter() { + boolean guard = false; + + @Override + public void controlResized(ControlEvent event) { + if (!guard) { + guard = true; + hideTabs(); + guard = false; + } + } + }); + + getSite().getShell().getDisplay().asyncExec(new Runnable() { + public void run() { + updateProblemIndication(); + } + }); + } + + /** + * If there is just one page in the multi-page editor part, + * this hides the single tab at the bottom. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void hideTabs() { + if (getPageCount() <= 1) { + setPageText(0, ""); + if (getContainer() instanceof CTabFolder) { + Point point = getContainer().getSize(); + Rectangle clientArea = getContainer().getClientArea(); + getContainer().setSize(point.x, 2 * point.y - clientArea.height - clientArea.y); + } + } + } + + /** + * If there is more than one page in the multi-page editor part, + * this shows the tabs at the bottom. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void showTabs() { + if (getPageCount() > 1) { + setPageText(0, getString("_UI_SelectionPage_label")); + if (getContainer() instanceof CTabFolder) { + Point point = getContainer().getSize(); + Rectangle clientArea = getContainer().getClientArea(); + getContainer().setSize(point.x, clientArea.height + clientArea.y); + } + } + } + + /** + * This is used to track the active viewer. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void pageChange(int pageIndex) { + super.pageChange(pageIndex); + + if (contentOutlinePage != null) { + handleContentOutlineSelection(contentOutlinePage.getSelection()); + } + } + + /** + * This is how the framework determines which interfaces we implement. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public <T> T getAdapter(Class<T> key) { + if (key.equals(IContentOutlinePage.class)) { + return showOutlineView() ? key.cast(getContentOutlinePage()) : null; + } else if (key.equals(IPropertySheetPage.class)) { + return key.cast(getPropertySheetPage()); + } else if (key.equals(IGotoMarker.class)) { + return key.cast(this); + } else { + return super.getAdapter(key); + } + } + + /** + * This accesses a cached version of the content outliner. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IContentOutlinePage getContentOutlinePage() { + if (contentOutlinePage == null) { + // The content outline is just a tree. + // + class MyContentOutlinePage extends ContentOutlinePage { + @Override + public void createControl(Composite parent) { + super.createControl(parent); + contentOutlineViewer = getTreeViewer(); + contentOutlineViewer.addSelectionChangedListener(this); + + // Set up the tree viewer. + // + contentOutlineViewer.setUseHashlookup(true); + contentOutlineViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + contentOutlineViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); + contentOutlineViewer.setInput(editingDomain.getResourceSet()); + + // Make sure our popups work. + // + createContextMenuFor(contentOutlineViewer); + + if (!editingDomain.getResourceSet().getResources().isEmpty()) { + // Select the root object in the view. + // + contentOutlineViewer.setSelection( + new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true); + } + } + + @Override + public void makeContributions(IMenuManager menuManager, IToolBarManager toolBarManager, + IStatusLineManager statusLineManager) { + super.makeContributions(menuManager, toolBarManager, statusLineManager); + contentOutlineStatusLineManager = statusLineManager; + } + + @Override + public void setActionBars(IActionBars actionBars) { + super.setActionBars(actionBars); + getActionBarContributor().shareGlobalActions(this, actionBars); + } + } + + contentOutlinePage = new MyContentOutlinePage(); + + // Listen to selection so that we can handle it is a special way. + // + contentOutlinePage.addSelectionChangedListener(new ISelectionChangedListener() { + // This ensures that we handle selections correctly. + // + public void selectionChanged(SelectionChangedEvent event) { + handleContentOutlineSelection(event.getSelection()); + } + }); + } + + return contentOutlinePage; + } + + /** + * This accesses a cached version of the property sheet. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IPropertySheetPage getPropertySheetPage() { + PropertySheetPage propertySheetPage = new ExtendedPropertySheetPage(editingDomain, + ExtendedPropertySheetPage.Decoration.NONE, null, 0, false) { + @Override + public void setSelectionToViewer(List<?> selection) { + StatemachineEditor.this.setSelectionToViewer(selection); + StatemachineEditor.this.setFocus(); + } + + @Override + public void setActionBars(IActionBars actionBars) { + super.setActionBars(actionBars); + getActionBarContributor().shareGlobalActions(this, actionBars); + } + }; + propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory)); + propertySheetPages.add(propertySheetPage); + + return propertySheetPage; + } + + /** + * This deals with how we want selection in the outliner to affect the other views. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void handleContentOutlineSelection(ISelection selection) { + if (currentViewerPane != null && !selection.isEmpty() && selection instanceof IStructuredSelection) { + Iterator<?> selectedElements = ((IStructuredSelection) selection).iterator(); + if (selectedElements.hasNext()) { + // Get the first selected element. + // + Object selectedElement = selectedElements.next(); + + // If it's the selection viewer, then we want it to select the same selection as this selection. + // + if (currentViewerPane.getViewer() == selectionViewer) { + ArrayList<Object> selectionList = new ArrayList<Object>(); + selectionList.add(selectedElement); + while (selectedElements.hasNext()) { + selectionList.add(selectedElements.next()); + } + + // Set the selection to the widget. + // + selectionViewer.setSelection(new StructuredSelection(selectionList)); + } else { + // Set the input to the widget. + // + if (currentViewerPane.getViewer().getInput() != selectedElement) { + currentViewerPane.getViewer().setInput(selectedElement); + currentViewerPane.setTitle(selectedElement); + } + } + } + } + } + + /** + * This is for implementing {@link IEditorPart} and simply tests the command stack. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean isDirty() { + return ((BasicCommandStack) editingDomain.getCommandStack()).isSaveNeeded(); + } + + /** + * This is for implementing {@link IEditorPart} and simply saves the model file. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void doSave(IProgressMonitor progressMonitor) { + // Save only resources that have actually changed. + // + final Map<Object, Object> saveOptions = new HashMap<Object, Object>(); + saveOptions.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED, Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER); + saveOptions.put(Resource.OPTION_LINE_DELIMITER, Resource.OPTION_LINE_DELIMITER_UNSPECIFIED); + + // Do the work within an operation because this is a long running activity that modifies the workbench. + // + WorkspaceModifyOperation operation = new WorkspaceModifyOperation() { + // This is the method that gets invoked when the operation runs. + // + @Override + public void execute(IProgressMonitor monitor) { + // Save the resources to the file system. + // + boolean first = true; + List<Resource> resources = editingDomain.getResourceSet().getResources(); + for (int i = 0; i < resources.size(); ++i) { + Resource resource = resources.get(i); + if ((first || !resource.getContents().isEmpty() || isPersisted(resource)) + && !editingDomain.isReadOnly(resource)) { + try { + long timeStamp = resource.getTimeStamp(); + resource.save(saveOptions); + if (resource.getTimeStamp() != timeStamp) { + savedResources.add(resource); + } + } catch (Exception exception) { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + first = false; + } + } + } + }; + + updateProblemIndication = false; + try { + // This runs the options, and shows progress. + // + new ProgressMonitorDialog(getSite().getShell()).run(true, false, operation); + + // Refresh the necessary state. + // + ((BasicCommandStack) editingDomain.getCommandStack()).saveIsDone(); + firePropertyChange(IEditorPart.PROP_DIRTY); + } catch (Exception exception) { + // Something went wrong that shouldn't. + // + StatemachineEditorPlugin.INSTANCE.log(exception); + } + updateProblemIndication = true; + updateProblemIndication(); + } + + /** + * This returns whether something has been persisted to the URI of the specified resource. + * The implementation uses the URI converter from the editor's resource set to try to open an input stream. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean isPersisted(Resource resource) { + boolean result = false; + try { + InputStream stream = editingDomain.getResourceSet().getURIConverter().createInputStream(resource.getURI()); + if (stream != null) { + result = true; + stream.close(); + } + } catch (IOException e) { + // Ignore + } + return result; + } + + /** + * This always returns true because it is not currently supported. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean isSaveAsAllowed() { + return true; + } + + /** + * This also changes the editor's input. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void doSaveAs() { + SaveAsDialog saveAsDialog = new SaveAsDialog(getSite().getShell()); + saveAsDialog.open(); + IPath path = saveAsDialog.getResult(); + if (path != null) { + IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path); + if (file != null) { + doSaveAs(URI.createPlatformResourceURI(file.getFullPath().toString(), true), new FileEditorInput(file)); + } + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void doSaveAs(URI uri, IEditorInput editorInput) { + (editingDomain.getResourceSet().getResources().get(0)).setURI(uri); + setInputWithNotify(editorInput); + setPartName(editorInput.getName()); + IProgressMonitor progressMonitor = getActionBars().getStatusLineManager() != null + ? getActionBars().getStatusLineManager().getProgressMonitor() + : new NullProgressMonitor(); + doSave(progressMonitor); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void gotoMarker(IMarker marker) { + List<?> targetObjects = markerHelper.getTargetObjects(editingDomain, marker); + if (!targetObjects.isEmpty()) { + setSelectionToViewer(targetObjects); + } + } + + /** + * This is called during startup. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void init(IEditorSite site, IEditorInput editorInput) { + setSite(site); + setInputWithNotify(editorInput); + setPartName(editorInput.getName()); + site.setSelectionProvider(this); + site.getPage().addPartListener(partListener); + ResourcesPlugin.getWorkspace().addResourceChangeListener(resourceChangeListener, + IResourceChangeEvent.POST_CHANGE); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setFocus() { + if (currentViewerPane != null) { + currentViewerPane.setFocus(); + } else { + getControl(getActivePage()).setFocus(); + } + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void addSelectionChangedListener(ISelectionChangedListener listener) { + selectionChangedListeners.add(listener); + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void removeSelectionChangedListener(ISelectionChangedListener listener) { + selectionChangedListeners.remove(listener); + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to return this editor's overall selection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ISelection getSelection() { + return editorSelection; + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to set this editor's overall selection. + * Calling this result will notify the listeners. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setSelection(ISelection selection) { + editorSelection = selection; + + for (ISelectionChangedListener listener : selectionChangedListeners) { + listener.selectionChanged(new SelectionChangedEvent(this, selection)); + } + setStatusLineManager(selection); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setStatusLineManager(ISelection selection) { + IStatusLineManager statusLineManager = currentViewer != null && currentViewer == contentOutlineViewer + ? contentOutlineStatusLineManager + : getActionBars().getStatusLineManager(); + + if (statusLineManager != null) { + if (selection instanceof IStructuredSelection) { + Collection<?> collection = ((IStructuredSelection) selection).toList(); + switch (collection.size()) { + case 0: { + statusLineManager.setMessage(getString("_UI_NoObjectSelected")); + break; + } + case 1: { + String text = new AdapterFactoryItemDelegator(adapterFactory).getText(collection.iterator().next()); + statusLineManager.setMessage(getString("_UI_SingleObjectSelected", text)); + break; + } + default: { + statusLineManager + .setMessage(getString("_UI_MultiObjectSelected", Integer.toString(collection.size()))); + break; + } + } + } else { + statusLineManager.setMessage(""); + } + } + } + + /** + * This looks up a string in the plugin's plugin.properties file. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private static String getString(String key) { + return StatemachineEditorPlugin.INSTANCE.getString(key); + } + + /** + * This looks up a string in plugin.properties, making a substitution. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private static String getString(String key, Object s1) { + return StatemachineEditorPlugin.INSTANCE.getString(key, new Object[] { s1 }); + } + + /** + * This implements {@link org.eclipse.jface.action.IMenuListener} to help fill the context menus with contributions from the Edit menu. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void menuAboutToShow(IMenuManager menuManager) { + ((IMenuListener) getEditorSite().getActionBarContributor()).menuAboutToShow(menuManager); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EditingDomainActionBarContributor getActionBarContributor() { + return (EditingDomainActionBarContributor) getEditorSite().getActionBarContributor(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IActionBars getActionBars() { + return getActionBarContributor().getActionBars(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public AdapterFactory getAdapterFactory() { + return adapterFactory; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void dispose() { + updateProblemIndication = false; + + ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceChangeListener); + + getSite().getPage().removePartListener(partListener); + + adapterFactory.dispose(); + + if (getActionBarContributor().getActiveEditor() == this) { + getActionBarContributor().setActiveEditor(null); + } + + for (PropertySheetPage propertySheetPage : propertySheetPages) { + propertySheetPage.dispose(); + } + + if (contentOutlinePage != null) { + contentOutlinePage.dispose(); + } + + super.dispose(); + } + + /** + * Returns whether the outline view should be presented to the user. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean showOutlineView() { + return true; + } +} diff --git a/metamodel/swt.most.statemachine.editor/src-gen/swt/most/statemachine/presentation/StatemachineEditorPlugin.java b/metamodel/swt.most.statemachine.editor/src-gen/swt/most/statemachine/presentation/StatemachineEditorPlugin.java new file mode 100644 index 0000000000000000000000000000000000000000..40386e66713bdce6dda2df4a744f362aae676fcb --- /dev/null +++ b/metamodel/swt.most.statemachine.editor/src-gen/swt/most/statemachine/presentation/StatemachineEditorPlugin.java @@ -0,0 +1,89 @@ +/** + */ +package swt.most.statemachine.presentation; + +import org.eclipse.emf.common.EMFPlugin; + +import org.eclipse.emf.common.ui.EclipseUIPlugin; + +import org.eclipse.emf.common.util.ResourceLocator; + +/** + * This is the central singleton for the Statemachine editor plugin. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public final class StatemachineEditorPlugin extends EMFPlugin { + /** + * Keep track of the singleton. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final StatemachineEditorPlugin INSTANCE = new StatemachineEditorPlugin(); + + /** + * Keep track of the singleton. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private static Implementation plugin; + + /** + * Create the instance. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public StatemachineEditorPlugin() { + super(new ResourceLocator[] {}); + } + + /** + * Returns the singleton instance of the Eclipse plugin. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the singleton instance. + * @generated + */ + @Override + public ResourceLocator getPluginResourceLocator() { + return plugin; + } + + /** + * Returns the singleton instance of the Eclipse plugin. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the singleton instance. + * @generated + */ + public static Implementation getPlugin() { + return plugin; + } + + /** + * The actual implementation of the Eclipse <b>Plugin</b>. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static class Implementation extends EclipseUIPlugin { + /** + * Creates an instance. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Implementation() { + super(); + + // Remember the static instance. + // + plugin = this; + } + } + +} diff --git a/metamodel/swt.most.statemachine.editor/src-gen/swt/most/statemachine/presentation/StatemachineModelWizard.java b/metamodel/swt.most.statemachine.editor/src-gen/swt/most/statemachine/presentation/StatemachineModelWizard.java new file mode 100644 index 0000000000000000000000000000000000000000..17263098ffe4fba36edfb8755bccefeb5a93ab49 --- /dev/null +++ b/metamodel/swt.most.statemachine.editor/src-gen/swt/most/statemachine/presentation/StatemachineModelWizard.java @@ -0,0 +1,628 @@ +/** + */ +package swt.most.statemachine.presentation; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.MissingResourceException; +import java.util.StringTokenizer; + +import org.eclipse.emf.common.CommonPlugin; + +import org.eclipse.emf.common.util.URI; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EClassifier; + +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; + +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; + +import org.eclipse.emf.ecore.EObject; + +import org.eclipse.emf.ecore.xmi.XMLResource; + +import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry; + +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IFolder; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.ResourcesPlugin; + +import org.eclipse.core.runtime.IProgressMonitor; + +import org.eclipse.jface.dialogs.MessageDialog; + +import org.eclipse.jface.viewers.IStructuredSelection; + +import org.eclipse.jface.wizard.Wizard; +import org.eclipse.jface.wizard.WizardPage; + +import org.eclipse.swt.SWT; + +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.events.ModifyEvent; + +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; + +import org.eclipse.swt.widgets.Combo; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; + +import org.eclipse.ui.INewWizard; +import org.eclipse.ui.IWorkbench; + +import org.eclipse.ui.actions.WorkspaceModifyOperation; + +import org.eclipse.ui.dialogs.WizardNewFileCreationPage; + +import org.eclipse.ui.part.FileEditorInput; +import org.eclipse.ui.part.ISetSelectionTarget; + +import swt.most.statemachine.StatemachineFactory; +import swt.most.statemachine.StatemachinePackage; +import swt.most.statemachine.provider.StatemachineEditPlugin; + +import org.eclipse.core.runtime.Path; + +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; + +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.PartInitException; + +/** + * This is a simple wizard for creating a new model file. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class StatemachineModelWizard extends Wizard implements INewWizard { + /** + * The supported extensions for created files. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final List<String> FILE_EXTENSIONS = Collections + .unmodifiableList(Arrays.asList(StatemachineEditorPlugin.INSTANCE + .getString("_UI_StatemachineEditorFilenameExtensions").split("\\s*,\\s*"))); + + /** + * A formatted list of supported file extensions, suitable for display. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final String FORMATTED_FILE_EXTENSIONS = StatemachineEditorPlugin.INSTANCE + .getString("_UI_StatemachineEditorFilenameExtensions").replaceAll("\\s*,\\s*", ", "); + + /** + * This caches an instance of the model package. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected StatemachinePackage statemachinePackage = StatemachinePackage.eINSTANCE; + + /** + * This caches an instance of the model factory. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected StatemachineFactory statemachineFactory = statemachinePackage.getStatemachineFactory(); + + /** + * This is the file creation page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected StatemachineModelWizardNewFileCreationPage newFileCreationPage; + + /** + * This is the initial object creation page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected StatemachineModelWizardInitialObjectCreationPage initialObjectCreationPage; + + /** + * Remember the selection during initialization for populating the default container. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IStructuredSelection selection; + + /** + * Remember the workbench during initialization. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IWorkbench workbench; + + /** + * Caches the names of the types that can be created as the root object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected List<String> initialObjectNames; + + /** + * This just records the information. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void init(IWorkbench workbench, IStructuredSelection selection) { + this.workbench = workbench; + this.selection = selection; + setWindowTitle(StatemachineEditorPlugin.INSTANCE.getString("_UI_Wizard_label")); + setDefaultPageImageDescriptor(ExtendedImageRegistry.INSTANCE + .getImageDescriptor(StatemachineEditorPlugin.INSTANCE.getImage("full/wizban/NewStatemachine"))); + } + + /** + * Returns the names of the types that can be created as the root object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<String> getInitialObjectNames() { + if (initialObjectNames == null) { + initialObjectNames = new ArrayList<String>(); + for (EClassifier eClassifier : statemachinePackage.getEClassifiers()) { + if (eClassifier instanceof EClass) { + EClass eClass = (EClass) eClassifier; + if (!eClass.isAbstract()) { + initialObjectNames.add(eClass.getName()); + } + } + } + Collections.sort(initialObjectNames, CommonPlugin.INSTANCE.getComparator()); + } + return initialObjectNames; + } + + /** + * Create a new model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected EObject createInitialModel() { + EClass eClass = (EClass) statemachinePackage.getEClassifier(initialObjectCreationPage.getInitialObjectName()); + EObject rootObject = statemachineFactory.create(eClass); + return rootObject; + } + + /** + * Do the work after everything is specified. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean performFinish() { + try { + // Remember the file. + // + final IFile modelFile = getModelFile(); + + // Do the work within an operation. + // + WorkspaceModifyOperation operation = new WorkspaceModifyOperation() { + @Override + protected void execute(IProgressMonitor progressMonitor) { + try { + // Create a resource set + // + ResourceSet resourceSet = new ResourceSetImpl(); + + // Get the URI of the model file. + // + URI fileURI = URI.createPlatformResourceURI(modelFile.getFullPath().toString(), true); + + // Create a resource for this file. + // + Resource resource = resourceSet.createResource(fileURI); + + // Add the initial model object to the contents. + // + EObject rootObject = createInitialModel(); + if (rootObject != null) { + resource.getContents().add(rootObject); + } + + // Save the contents of the resource to the file system. + // + Map<Object, Object> options = new HashMap<Object, Object>(); + options.put(XMLResource.OPTION_ENCODING, initialObjectCreationPage.getEncoding()); + resource.save(options); + } catch (Exception exception) { + StatemachineEditorPlugin.INSTANCE.log(exception); + } finally { + progressMonitor.done(); + } + } + }; + + getContainer().run(false, false, operation); + + // Select the new file resource in the current view. + // + IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow(); + IWorkbenchPage page = workbenchWindow.getActivePage(); + final IWorkbenchPart activePart = page.getActivePart(); + if (activePart instanceof ISetSelectionTarget) { + final ISelection targetSelection = new StructuredSelection(modelFile); + getShell().getDisplay().asyncExec(new Runnable() { + public void run() { + ((ISetSelectionTarget) activePart).selectReveal(targetSelection); + } + }); + } + + // Open an editor on the new file. + // + try { + page.openEditor(new FileEditorInput(modelFile), + workbench.getEditorRegistry().getDefaultEditor(modelFile.getFullPath().toString()).getId()); + } catch (PartInitException exception) { + MessageDialog.openError(workbenchWindow.getShell(), + StatemachineEditorPlugin.INSTANCE.getString("_UI_OpenEditorError_label"), + exception.getMessage()); + return false; + } + + return true; + } catch (Exception exception) { + StatemachineEditorPlugin.INSTANCE.log(exception); + return false; + } + } + + /** + * This is the one page of the wizard. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public class StatemachineModelWizardNewFileCreationPage extends WizardNewFileCreationPage { + /** + * Pass in the selection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public StatemachineModelWizardNewFileCreationPage(String pageId, IStructuredSelection selection) { + super(pageId, selection); + } + + /** + * The framework calls this to see if the file is correct. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean validatePage() { + if (super.validatePage()) { + String extension = new Path(getFileName()).getFileExtension(); + if (extension == null || !FILE_EXTENSIONS.contains(extension)) { + String key = FILE_EXTENSIONS.size() > 1 ? "_WARN_FilenameExtensions" : "_WARN_FilenameExtension"; + setErrorMessage(StatemachineEditorPlugin.INSTANCE.getString(key, + new Object[] { FORMATTED_FILE_EXTENSIONS })); + return false; + } + return true; + } + return false; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IFile getModelFile() { + return ResourcesPlugin.getWorkspace().getRoot().getFile(getContainerFullPath().append(getFileName())); + } + } + + /** + * This is the page where the type of object to create is selected. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public class StatemachineModelWizardInitialObjectCreationPage extends WizardPage { + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Combo initialObjectField; + + /** + * @generated + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + */ + protected List<String> encodings; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Combo encodingField; + + /** + * Pass in the selection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public StatemachineModelWizardInitialObjectCreationPage(String pageId) { + super(pageId); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void createControl(Composite parent) { + Composite composite = new Composite(parent, SWT.NONE); + { + GridLayout layout = new GridLayout(); + layout.numColumns = 1; + layout.verticalSpacing = 12; + composite.setLayout(layout); + + GridData data = new GridData(); + data.verticalAlignment = GridData.FILL; + data.grabExcessVerticalSpace = true; + data.horizontalAlignment = GridData.FILL; + composite.setLayoutData(data); + } + + Label containerLabel = new Label(composite, SWT.LEFT); + { + containerLabel.setText(StatemachineEditorPlugin.INSTANCE.getString("_UI_ModelObject")); + + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + containerLabel.setLayoutData(data); + } + + initialObjectField = new Combo(composite, SWT.BORDER); + { + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + data.grabExcessHorizontalSpace = true; + initialObjectField.setLayoutData(data); + } + + for (String objectName : getInitialObjectNames()) { + initialObjectField.add(getLabel(objectName)); + } + + if (initialObjectField.getItemCount() == 1) { + initialObjectField.select(0); + } + initialObjectField.addModifyListener(validator); + + Label encodingLabel = new Label(composite, SWT.LEFT); + { + encodingLabel.setText(StatemachineEditorPlugin.INSTANCE.getString("_UI_XMLEncoding")); + + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + encodingLabel.setLayoutData(data); + } + encodingField = new Combo(composite, SWT.BORDER); + { + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + data.grabExcessHorizontalSpace = true; + encodingField.setLayoutData(data); + } + + for (String encoding : getEncodings()) { + encodingField.add(encoding); + } + + encodingField.select(0); + encodingField.addModifyListener(validator); + + setPageComplete(validatePage()); + setControl(composite); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ModifyListener validator = new ModifyListener() { + public void modifyText(ModifyEvent e) { + setPageComplete(validatePage()); + } + }; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean validatePage() { + return getInitialObjectName() != null && getEncodings().contains(encodingField.getText()); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setVisible(boolean visible) { + super.setVisible(visible); + if (visible) { + if (initialObjectField.getItemCount() == 1) { + initialObjectField.clearSelection(); + encodingField.setFocus(); + } else { + encodingField.clearSelection(); + initialObjectField.setFocus(); + } + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getInitialObjectName() { + String label = initialObjectField.getText(); + + for (String name : getInitialObjectNames()) { + if (getLabel(name).equals(label)) { + return name; + } + } + return null; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getEncoding() { + return encodingField.getText(); + } + + /** + * Returns the label for the specified type name. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected String getLabel(String typeName) { + try { + return StatemachineEditPlugin.INSTANCE.getString("_UI_" + typeName + "_type"); + } catch (MissingResourceException mre) { + StatemachineEditorPlugin.INSTANCE.log(mre); + } + return typeName; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<String> getEncodings() { + if (encodings == null) { + encodings = new ArrayList<String>(); + for (StringTokenizer stringTokenizer = new StringTokenizer( + StatemachineEditorPlugin.INSTANCE.getString("_UI_XMLEncodingChoices")); stringTokenizer + .hasMoreTokens();) { + encodings.add(stringTokenizer.nextToken()); + } + } + return encodings; + } + } + + /** + * The framework calls this to create the contents of the wizard. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void addPages() { + // Create a page, set the title, and the initial model file name. + // + newFileCreationPage = new StatemachineModelWizardNewFileCreationPage("Whatever", selection); + newFileCreationPage.setTitle(StatemachineEditorPlugin.INSTANCE.getString("_UI_StatemachineModelWizard_label")); + newFileCreationPage + .setDescription(StatemachineEditorPlugin.INSTANCE.getString("_UI_StatemachineModelWizard_description")); + newFileCreationPage + .setFileName(StatemachineEditorPlugin.INSTANCE.getString("_UI_StatemachineEditorFilenameDefaultBase") + + "." + FILE_EXTENSIONS.get(0)); + addPage(newFileCreationPage); + + // Try and get the resource selection to determine a current directory for the file dialog. + // + if (selection != null && !selection.isEmpty()) { + // Get the resource... + // + Object selectedElement = selection.iterator().next(); + if (selectedElement instanceof IResource) { + // Get the resource parent, if its a file. + // + IResource selectedResource = (IResource) selectedElement; + if (selectedResource.getType() == IResource.FILE) { + selectedResource = selectedResource.getParent(); + } + + // This gives us a directory... + // + if (selectedResource instanceof IFolder || selectedResource instanceof IProject) { + // Set this for the container. + // + newFileCreationPage.setContainerFullPath(selectedResource.getFullPath()); + + // Make up a unique new name here. + // + String defaultModelBaseFilename = StatemachineEditorPlugin.INSTANCE + .getString("_UI_StatemachineEditorFilenameDefaultBase"); + String defaultModelFilenameExtension = FILE_EXTENSIONS.get(0); + String modelFilename = defaultModelBaseFilename + "." + defaultModelFilenameExtension; + for (int i = 1; ((IContainer) selectedResource).findMember(modelFilename) != null; ++i) { + modelFilename = defaultModelBaseFilename + i + "." + defaultModelFilenameExtension; + } + newFileCreationPage.setFileName(modelFilename); + } + } + } + initialObjectCreationPage = new StatemachineModelWizardInitialObjectCreationPage("Whatever2"); + initialObjectCreationPage + .setTitle(StatemachineEditorPlugin.INSTANCE.getString("_UI_StatemachineModelWizard_label")); + initialObjectCreationPage + .setDescription(StatemachineEditorPlugin.INSTANCE.getString("_UI_Wizard_initial_object_description")); + addPage(initialObjectCreationPage); + } + + /** + * Get the file from the page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IFile getModelFile() { + return newFileCreationPage.getModelFile(); + } + +} diff --git a/metamodel/swt.most.statemachine/.classpath b/metamodel/swt.most.statemachine/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..c3f9cf33e920a2477e584487d0015da314361b97 --- /dev/null +++ b/metamodel/swt.most.statemachine/.classpath @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src-gen"/> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/metamodel/swt.most.statemachine/.project b/metamodel/swt.most.statemachine/.project new file mode 100644 index 0000000000000000000000000000000000000000..0889fd61cc2f90c7a833845e4345f01b6b30f482 --- /dev/null +++ b/metamodel/swt.most.statemachine/.project @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>swt.most.statemachine</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.xtext.ui.shared.xtextBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.SchemaBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.sirius.nature.modelingproject</nature> + <nature>org.eclipse.jdt.core.javanature</nature> + <nature>org.eclipse.pde.PluginNature</nature> + <nature>org.eclipse.xtext.ui.shared.xtextNature</nature> + </natures> +</projectDescription> diff --git a/metamodel/swt.most.statemachine/.settings/org.eclipse.core.resources.prefs b/metamodel/swt.most.statemachine/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000000000000000000000000000000000000..99f26c0203a7844de00dbfc56e6a35d8ed3c022c --- /dev/null +++ b/metamodel/swt.most.statemachine/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/<project>=UTF-8 diff --git a/metamodel/swt.most.statemachine/META-INF/MANIFEST.MF b/metamodel/swt.most.statemachine/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..e4a1810dafe39d3efd18ce1ec4e407dbd356a589 --- /dev/null +++ b/metamodel/swt.most.statemachine/META-INF/MANIFEST.MF @@ -0,0 +1,16 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %pluginName +Bundle-SymbolicName: swt.most.statemachine;singleton:=true +Automatic-Module-Name: swt.most.statemachine +Bundle-Version: 0.1.0.qualifier +Bundle-ClassPath: . +Bundle-Vendor: %providerName +Bundle-Localization: plugin +Bundle-RequiredExecutionEnvironment: J2SE-1.5 +Export-Package: swt.most.statemachine, + swt.most.statemachine.impl, + swt.most.statemachine.util +Require-Bundle: org.eclipse.emf.ecore;visibility:=reexport, + org.eclipse.core.runtime +Bundle-ActivationPolicy: lazy diff --git a/metamodel/swt.most.statemachine/bin/.gitkeep b/metamodel/swt.most.statemachine/bin/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..49cc8ef0e116cef009fe0bd72473a964bbd07f9b Binary files /dev/null and b/metamodel/swt.most.statemachine/bin/.gitkeep differ diff --git a/metamodel/swt.most.statemachine/bin/swt/most/statemachine/Action.class b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/Action.class new file mode 100644 index 0000000000000000000000000000000000000000..f870b81fd6cb6b43a21f2e9814c6516c908b1e19 Binary files /dev/null and b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/Action.class differ diff --git a/metamodel/swt.most.statemachine/bin/swt/most/statemachine/Expression.class b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/Expression.class new file mode 100644 index 0000000000000000000000000000000000000000..6e9bc61562126aa012ed4c128f63122f20ddd7bc Binary files /dev/null and b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/Expression.class differ diff --git a/metamodel/swt.most.statemachine/bin/swt/most/statemachine/FinalState.class b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/FinalState.class new file mode 100644 index 0000000000000000000000000000000000000000..f7b40197fb61970459d1897801a9056bbc366556 Binary files /dev/null and b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/FinalState.class differ diff --git a/metamodel/swt.most.statemachine/bin/swt/most/statemachine/Guard.class b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/Guard.class new file mode 100644 index 0000000000000000000000000000000000000000..c61835cb05c157ef11e14dabef31cb93ff4bcd08 Binary files /dev/null and b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/Guard.class differ diff --git a/metamodel/swt.most.statemachine/bin/swt/most/statemachine/InitialState.class b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/InitialState.class new file mode 100644 index 0000000000000000000000000000000000000000..caa43f8c9d18e7e2616884c006af58bafa5b1e23 Binary files /dev/null and b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/InitialState.class differ diff --git a/metamodel/swt.most.statemachine/bin/swt/most/statemachine/NormalState.class b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/NormalState.class new file mode 100644 index 0000000000000000000000000000000000000000..e2646a56c67d8ba63eaeb2eb699a92ff801e7f41 Binary files /dev/null and b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/NormalState.class differ diff --git a/metamodel/swt.most.statemachine/bin/swt/most/statemachine/State.class b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/State.class new file mode 100644 index 0000000000000000000000000000000000000000..e8bdaee3fc67f24695e1a090dfa1e99b7427d612 Binary files /dev/null and b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/State.class differ diff --git a/metamodel/swt.most.statemachine/bin/swt/most/statemachine/StateMachine.class b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/StateMachine.class new file mode 100644 index 0000000000000000000000000000000000000000..c797580f49f7fffebec0c7a9f820b5b30a1498ee Binary files /dev/null and b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/StateMachine.class differ diff --git a/metamodel/swt.most.statemachine/bin/swt/most/statemachine/StatemachineFactory.class b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/StatemachineFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..4f3a1e380ce766c7a5d6c58ac3bcceeada37d92e Binary files /dev/null and b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/StatemachineFactory.class differ diff --git a/metamodel/swt.most.statemachine/bin/swt/most/statemachine/StatemachinePackage$Literals.class b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/StatemachinePackage$Literals.class new file mode 100644 index 0000000000000000000000000000000000000000..237c127112f52bfcfb7d8dbde262358474dfb1e8 Binary files /dev/null and b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/StatemachinePackage$Literals.class differ diff --git a/metamodel/swt.most.statemachine/bin/swt/most/statemachine/StatemachinePackage.class b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/StatemachinePackage.class new file mode 100644 index 0000000000000000000000000000000000000000..bb0717f2bb879feac9d6975d4f11606b82be13c4 Binary files /dev/null and b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/StatemachinePackage.class differ diff --git a/metamodel/swt.most.statemachine/bin/swt/most/statemachine/Transition.class b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/Transition.class new file mode 100644 index 0000000000000000000000000000000000000000..48cfc9c66cb032918650e43abe7f95466bd5936b Binary files /dev/null and b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/Transition.class differ diff --git a/metamodel/swt.most.statemachine/bin/swt/most/statemachine/Trigger.class b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/Trigger.class new file mode 100644 index 0000000000000000000000000000000000000000..512f1c348b00dcecf7a19958b82a2900563a48a7 Binary files /dev/null and b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/Trigger.class differ diff --git a/metamodel/swt.most.statemachine/bin/swt/most/statemachine/impl/ActionImpl.class b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/impl/ActionImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..2a6bad30a795022df26b35e99a693af161df8534 Binary files /dev/null and b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/impl/ActionImpl.class differ diff --git a/metamodel/swt.most.statemachine/bin/swt/most/statemachine/impl/ExpressionImpl.class b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/impl/ExpressionImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..9f81b4565c661f5889d12939641611bf413c0c36 Binary files /dev/null and b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/impl/ExpressionImpl.class differ diff --git a/metamodel/swt.most.statemachine/bin/swt/most/statemachine/impl/FinalStateImpl.class b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/impl/FinalStateImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..9f4c5d8a44dbb0fe4ac191c16b97481ec21afae1 Binary files /dev/null and b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/impl/FinalStateImpl.class differ diff --git a/metamodel/swt.most.statemachine/bin/swt/most/statemachine/impl/GuardImpl.class b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/impl/GuardImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..621503c9c429bc1dc017d16ac0da1515242d8b44 Binary files /dev/null and b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/impl/GuardImpl.class differ diff --git a/metamodel/swt.most.statemachine/bin/swt/most/statemachine/impl/InitialStateImpl.class b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/impl/InitialStateImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..7d73a2343ed50f22d919e55110e1f115b56a4560 Binary files /dev/null and b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/impl/InitialStateImpl.class differ diff --git a/metamodel/swt.most.statemachine/bin/swt/most/statemachine/impl/NormalStateImpl.class b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/impl/NormalStateImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..3cded65db9283550c9eb415efb36331cf18a097b Binary files /dev/null and b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/impl/NormalStateImpl.class differ diff --git a/metamodel/swt.most.statemachine/bin/swt/most/statemachine/impl/StateImpl.class b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/impl/StateImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..77de38ac501f98532e9609237432cf74293c0d50 Binary files /dev/null and b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/impl/StateImpl.class differ diff --git a/metamodel/swt.most.statemachine/bin/swt/most/statemachine/impl/StateMachineImpl.class b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/impl/StateMachineImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..70dfd0481615f6dce18e46b1319bdec0f794a650 Binary files /dev/null and b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/impl/StateMachineImpl.class differ diff --git a/metamodel/swt.most.statemachine/bin/swt/most/statemachine/impl/StatemachineFactoryImpl.class b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/impl/StatemachineFactoryImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..24e9e0133766180440ba63e5a939c0a0565877df Binary files /dev/null and b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/impl/StatemachineFactoryImpl.class differ diff --git a/metamodel/swt.most.statemachine/bin/swt/most/statemachine/impl/StatemachinePackageImpl.class b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/impl/StatemachinePackageImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..ea51f30b4b3fd0c0d9954269256dab253ae49655 Binary files /dev/null and b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/impl/StatemachinePackageImpl.class differ diff --git a/metamodel/swt.most.statemachine/bin/swt/most/statemachine/impl/TransitionImpl.class b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/impl/TransitionImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..9a04ccef9cdb76bf3ca4ccb7d0deb6ab90445bb6 Binary files /dev/null and b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/impl/TransitionImpl.class differ diff --git a/metamodel/swt.most.statemachine/bin/swt/most/statemachine/impl/TriggerImpl.class b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/impl/TriggerImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..caca244c015bc14e96d8fafa234ea675390fbef5 Binary files /dev/null and b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/impl/TriggerImpl.class differ diff --git a/metamodel/swt.most.statemachine/bin/swt/most/statemachine/util/StatemachineAdapterFactory$1.class b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/util/StatemachineAdapterFactory$1.class new file mode 100644 index 0000000000000000000000000000000000000000..946ad8b56ef4eeb45664cf9a0ce9e15da948b9cc Binary files /dev/null and b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/util/StatemachineAdapterFactory$1.class differ diff --git a/metamodel/swt.most.statemachine/bin/swt/most/statemachine/util/StatemachineAdapterFactory.class b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/util/StatemachineAdapterFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..8981ae01fdf9f91693fbf7eb8a648973f240bea0 Binary files /dev/null and b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/util/StatemachineAdapterFactory.class differ diff --git a/metamodel/swt.most.statemachine/bin/swt/most/statemachine/util/StatemachineSwitch.class b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/util/StatemachineSwitch.class new file mode 100644 index 0000000000000000000000000000000000000000..7bd4d12ef9fb7c9137d138a9c93f29a5d9b66ea2 Binary files /dev/null and b/metamodel/swt.most.statemachine/bin/swt/most/statemachine/util/StatemachineSwitch.class differ diff --git a/metamodel/swt.most.statemachine/build.properties b/metamodel/swt.most.statemachine/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..697ca964527a545764d3a69847c122b371257973 --- /dev/null +++ b/metamodel/swt.most.statemachine/build.properties @@ -0,0 +1,10 @@ +# + +bin.includes = .,\ + model/,\ + META-INF/,\ + plugin.xml,\ + plugin.properties +jars.compile.order = . +source.. = src-gen/ +output.. = bin/ diff --git a/metamodel/swt.most.statemachine/model/statemachine.aird b/metamodel/swt.most.statemachine/model/statemachine.aird new file mode 100644 index 0000000000000000000000000000000000000000..be08415dda53b1f3b55d0a11305066cbe1c1b06f --- /dev/null +++ b/metamodel/swt.most.statemachine/model/statemachine.aird @@ -0,0 +1,822 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:description="http://www.eclipse.org/sirius/description/1.1.0" xmlns:description_1="http://www.eclipse.org/sirius/diagram/description/1.1.0" xmlns:diagram="http://www.eclipse.org/sirius/diagram/1.1.0" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.3/notation" xmlns:style="http://www.eclipse.org/sirius/diagram/description/style/1.1.0" xmlns:viewpoint="http://www.eclipse.org/sirius/1.1.0" xsi:schemaLocation="http://www.eclipse.org/sirius/description/1.1.0 http://www.eclipse.org/sirius/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/style/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description/style"> + <viewpoint:DAnalysis uid="_L24nQFOpEe2H3LXgl620PA" selectedViews="_MIiX8FOpEe2H3LXgl620PA" version="15.2.0.202303281325"> + <semanticResources>statemachine.ecore</semanticResources> + <ownedViews xmi:type="viewpoint:DView" uid="_MIiX8FOpEe2H3LXgl620PA"> + <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']"/> + <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_MK4hUFOpEe2H3LXgl620PA" name="statemachine" repPath="#_MKHsUFOpEe2H3LXgl620PA" changeId="1718626992484"> + <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/> + <target xmi:type="ecore:EPackage" href="statemachine.ecore#/"/> + </ownedRepresentationDescriptors> + </ownedViews> + </viewpoint:DAnalysis> + <diagram:DSemanticDiagram uid="_MKHsUFOpEe2H3LXgl620PA"> + <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_MLWbYFOpEe2H3LXgl620PA" source="GMF_DIAGRAMS"> + <data xmi:type="notation:Diagram" xmi:id="_MLWbYVOpEe2H3LXgl620PA" type="Sirius" element="_MKHsUFOpEe2H3LXgl620PA" measurementUnit="Pixel"> + <children xmi:type="notation:Node" xmi:id="_yD77sFOqEe2NKN60v8idTQ" type="2003" element="_yDDK4FOqEe2NKN60v8idTQ"> + <children xmi:type="notation:Node" xmi:id="_yD77s1OqEe2NKN60v8idTQ" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_yD77tFOqEe2NKN60v8idTQ" type="7004"> + <children xmi:type="notation:Node" xmi:id="_yEDQcFOqEe2NKN60v8idTQ" type="3010" element="_yDXT8FOqEe2NKN60v8idTQ"> + <styles xmi:type="notation:FontStyle" xmi:id="_yEDQcVOqEe2NKN60v8idTQ" fontName="Segoe UI" fontHeight="8" bold="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_yEDQclOqEe2NKN60v8idTQ"/> + </children> + <styles xmi:type="notation:SortingStyle" xmi:id="_yD77tVOqEe2NKN60v8idTQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_yD77tlOqEe2NKN60v8idTQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_yD77sVOqEe2NKN60v8idTQ" fontName="Segoe UI" fontHeight="8"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yD77slOqEe2NKN60v8idTQ" x="108" y="42"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yD8iwFOqEe2NKN60v8idTQ" type="2003" element="_yDFAEFOqEe2NKN60v8idTQ"> + <children xmi:type="notation:Node" xmi:id="_yD9J0FOqEe2NKN60v8idTQ" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_yD9J0VOqEe2NKN60v8idTQ" type="7004"> + <children xmi:type="notation:Node" xmi:id="_yED3gFOqEe2NKN60v8idTQ" type="3010" element="_yDczgFOqEe2NKN60v8idTQ"> + <styles xmi:type="notation:FontStyle" xmi:id="_yED3gVOqEe2NKN60v8idTQ" fontName="Segoe UI" fontHeight="8" bold="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_yED3glOqEe2NKN60v8idTQ"/> + </children> + <styles xmi:type="notation:SortingStyle" xmi:id="_yD9J0lOqEe2NKN60v8idTQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_yD9J01OqEe2NKN60v8idTQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_yD8iwVOqEe2NKN60v8idTQ" fontName="Segoe UI" fontHeight="8" italic="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yD8iwlOqEe2NKN60v8idTQ" x="456" y="474"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yD9w4FOqEe2NKN60v8idTQ" type="2003" element="_yDG1QFOqEe2NKN60v8idTQ"> + <children xmi:type="notation:Node" xmi:id="_yD9w41OqEe2NKN60v8idTQ" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_yD9w5FOqEe2NKN60v8idTQ" type="7004"> + <styles xmi:type="notation:SortingStyle" xmi:id="_yD9w5VOqEe2NKN60v8idTQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_yD9w5lOqEe2NKN60v8idTQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_yD9w4VOqEe2NKN60v8idTQ" fontName="Segoe UI" fontHeight="8"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yD9w4lOqEe2NKN60v8idTQ" x="803" y="474"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yD9w51OqEe2NKN60v8idTQ" type="2003" element="_yDIDYFOqEe2NKN60v8idTQ"> + <children xmi:type="notation:Node" xmi:id="_yD-X8FOqEe2NKN60v8idTQ" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_yD-X8VOqEe2NKN60v8idTQ" type="7004"> + <styles xmi:type="notation:SortingStyle" xmi:id="_yD-X8lOqEe2NKN60v8idTQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_yD-X81OqEe2NKN60v8idTQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_yD9w6FOqEe2NKN60v8idTQ" fontName="Segoe UI" fontHeight="8"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yD9w6VOqEe2NKN60v8idTQ" x="528" y="246"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yD-X9FOqEe2NKN60v8idTQ" type="2003" element="_yDIqcVOqEe2NKN60v8idTQ"> + <children xmi:type="notation:Node" xmi:id="_yD-X91OqEe2NKN60v8idTQ" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_yD-X-FOqEe2NKN60v8idTQ" type="7004"> + <styles xmi:type="notation:SortingStyle" xmi:id="_yD-X-VOqEe2NKN60v8idTQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_yD-X-lOqEe2NKN60v8idTQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_yD-X9VOqEe2NKN60v8idTQ" fontName="Segoe UI" fontHeight="8"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yD-X9lOqEe2NKN60v8idTQ" x="708" y="240"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yD-_AFOqEe2NKN60v8idTQ" type="2003" element="_yDJ4kFOqEe2NKN60v8idTQ"> + <children xmi:type="notation:Node" xmi:id="_yD-_A1OqEe2NKN60v8idTQ" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_yD_mEFOqEe2NKN60v8idTQ" type="7004"> + <styles xmi:type="notation:SortingStyle" xmi:id="_yD_mEVOqEe2NKN60v8idTQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_yD_mElOqEe2NKN60v8idTQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_yD-_AVOqEe2NKN60v8idTQ" fontName="Segoe UI" fontHeight="8"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yD-_AlOqEe2NKN60v8idTQ" x="882" y="240"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yEANIFOqEe2NKN60v8idTQ" type="2003" element="_yDLGsFOqEe2NKN60v8idTQ"> + <children xmi:type="notation:Node" xmi:id="_yEANI1OqEe2NKN60v8idTQ" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_yEANJFOqEe2NKN60v8idTQ" type="7004"> + <children xmi:type="notation:Node" xmi:id="_yEEekFOqEe2NKN60v8idTQ" type="3010" element="_yDeosFOqEe2NKN60v8idTQ"> + <styles xmi:type="notation:FontStyle" xmi:id="_yEEekVOqEe2NKN60v8idTQ" fontName="Segoe UI" fontHeight="8" bold="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_yEEeklOqEe2NKN60v8idTQ"/> + </children> + <styles xmi:type="notation:SortingStyle" xmi:id="_yEANJVOqEe2NKN60v8idTQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_yEANJlOqEe2NKN60v8idTQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_yEANIVOqEe2NKN60v8idTQ" fontName="Segoe UI" fontHeight="8" italic="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEANIlOqEe2NKN60v8idTQ" x="384" y="72"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yEA0MFOqEe2NKN60v8idTQ" type="2003" element="_yDLtwVOqEe2NKN60v8idTQ"> + <children xmi:type="notation:Node" xmi:id="_yEA0M1OqEe2NKN60v8idTQ" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_yEA0NFOqEe2NKN60v8idTQ" type="7004"> + <styles xmi:type="notation:SortingStyle" xmi:id="_yEA0NVOqEe2NKN60v8idTQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_yEA0NlOqEe2NKN60v8idTQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_yEA0MVOqEe2NKN60v8idTQ" fontName="Segoe UI" fontHeight="8"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEA0MlOqEe2NKN60v8idTQ" x="24" y="318"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yEBbQFOqEe2NKN60v8idTQ" type="2003" element="_yDM74FOqEe2NKN60v8idTQ"> + <children xmi:type="notation:Node" xmi:id="_yEBbQ1OqEe2NKN60v8idTQ" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_yEBbRFOqEe2NKN60v8idTQ" type="7004"> + <styles xmi:type="notation:SortingStyle" xmi:id="_yEBbRVOqEe2NKN60v8idTQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_yEBbRlOqEe2NKN60v8idTQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_yEBbQVOqEe2NKN60v8idTQ" fontName="Segoe UI" fontHeight="8"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEBbQlOqEe2NKN60v8idTQ" x="156" y="318"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yECCUFOqEe2NKN60v8idTQ" type="2003" element="_yDNi8VOqEe2NKN60v8idTQ"> + <children xmi:type="notation:Node" xmi:id="_yECCU1OqEe2NKN60v8idTQ" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_yECCVFOqEe2NKN60v8idTQ" type="7004"> + <styles xmi:type="notation:SortingStyle" xmi:id="_yECCVVOqEe2NKN60v8idTQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_yECCVlOqEe2NKN60v8idTQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_yECCUVOqEe2NKN60v8idTQ" fontName="Segoe UI" fontHeight="8"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yECCUlOqEe2NKN60v8idTQ" x="291" y="318"/> + </children> + <styles xmi:type="notation:DiagramStyle" xmi:id="_MLWbYlOpEe2H3LXgl620PA"/> + <edges xmi:type="notation:Edge" xmi:id="_yEKlMFOqEe2NKN60v8idTQ" type="4001" element="_yDkIQFOqEe2NKN60v8idTQ" source="_yD77sFOqEe2NKN60v8idTQ" target="_yECCUFOqEe2NKN60v8idTQ"> + <children xmi:type="notation:Node" xmi:id="_yELMQFOqEe2NKN60v8idTQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yELMQVOqEe2NKN60v8idTQ" x="122" y="42"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yENogFOqEe2NKN60v8idTQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yENogVOqEe2NKN60v8idTQ" x="71" y="-95"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yEOPkFOqEe2NKN60v8idTQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEOPkVOqEe2NKN60v8idTQ" x="-7"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_yEKlMVOqEe2NKN60v8idTQ" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_yEKlMlOqEe2NKN60v8idTQ" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_yEKlM1OqEe2NKN60v8idTQ" points="[47, 49, -124, -227]$[47, 155, -124, -121]$[170, 155, -1, -121]$[170, 227, -1, -49]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yEWycFOqEe2NKN60v8idTQ" id="(0.5,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yEWycVOqEe2NKN60v8idTQ" id="(0.5,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_yEXZgFOqEe2NKN60v8idTQ" type="4001" element="_yDsEEFOqEe2NKN60v8idTQ" source="_yD77sFOqEe2NKN60v8idTQ" target="_yEBbQFOqEe2NKN60v8idTQ"> + <children xmi:type="notation:Node" xmi:id="_yEXZhFOqEe2NKN60v8idTQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEXZhVOqEe2NKN60v8idTQ" x="68" y="-67"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yEXZhlOqEe2NKN60v8idTQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEXZh1OqEe2NKN60v8idTQ" x="20" y="4"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yEXZiFOqEe2NKN60v8idTQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEXZiVOqEe2NKN60v8idTQ" x="-19"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_yEXZgVOqEe2NKN60v8idTQ" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_yEXZglOqEe2NKN60v8idTQ" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_yEXZg1OqEe2NKN60v8idTQ" points="[5, 49, -19, -227]$[5, 227, -19, -49]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yEYAkFOqEe2NKN60v8idTQ" id="(0.5,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yEYAkVOqEe2NKN60v8idTQ" id="(0.5,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_yEYAklOqEe2NKN60v8idTQ" type="4001" element="_yDsrJlOqEe2NKN60v8idTQ" source="_yD77sFOqEe2NKN60v8idTQ" target="_yEA0MFOqEe2NKN60v8idTQ"> + <children xmi:type="notation:Node" xmi:id="_yEYAllOqEe2NKN60v8idTQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEYAl1OqEe2NKN60v8idTQ" x="94" y="-65"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yEYAmFOqEe2NKN60v8idTQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEYAmVOqEe2NKN60v8idTQ" x="135" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yEYAmlOqEe2NKN60v8idTQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEYAm1OqEe2NKN60v8idTQ" x="-78" y="-6"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_yEYAk1OqEe2NKN60v8idTQ" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_yEYAlFOqEe2NKN60v8idTQ" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_yEYAlVOqEe2NKN60v8idTQ" points="[-19, 49, 89, -227]$[-19, 138, 89, -138]$[-65, 138, 43, -138]$[-65, 227, 43, -49]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yEYnoFOqEe2NKN60v8idTQ" id="(0.5,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yEYnoVOqEe2NKN60v8idTQ" id="(0.5,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_yEYnolOqEe2NKN60v8idTQ" type="4001" element="_yDt5QFOqEe2NKN60v8idTQ" source="_yD77sFOqEe2NKN60v8idTQ" target="_yD9w4FOqEe2NKN60v8idTQ"> + <children xmi:type="notation:Node" xmi:id="_yEYnplOqEe2NKN60v8idTQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEYnp1OqEe2NKN60v8idTQ" x="-729" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yEYnqFOqEe2NKN60v8idTQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEYnqVOqEe2NKN60v8idTQ" x="-154" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yEZOsFOqEe2NKN60v8idTQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEZOsVOqEe2NKN60v8idTQ" x="-40" y="359"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_yEYno1OqEe2NKN60v8idTQ" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_yEYnpFOqEe2NKN60v8idTQ" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_yEYnpVOqEe2NKN60v8idTQ" points="[71, -31, -612, -463]$[937, -31, 254, -463]$[937, 527, 254, 95]$[684, 527, 1, 95]$[684, 481, 1, 49]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yEZOslOqEe2NKN60v8idTQ" id="(0.5,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yEZOs1OqEe2NKN60v8idTQ" id="(0.5,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_yEZOtFOqEe2NKN60v8idTQ" type="4001" element="_yDt5R1OqEe2NKN60v8idTQ" source="_yD9w4FOqEe2NKN60v8idTQ" target="_yD8iwFOqEe2NKN60v8idTQ"> + <children xmi:type="notation:Node" xmi:id="_yEZOuFOqEe2NKN60v8idTQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEZOuVOqEe2NKN60v8idTQ" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yEZOulOqEe2NKN60v8idTQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEZOu1OqEe2NKN60v8idTQ" x="193" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yEZOvFOqEe2NKN60v8idTQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEZOvVOqEe2NKN60v8idTQ" x="33" y="-10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_yEZOtVOqEe2NKN60v8idTQ" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_yEZOtlOqEe2NKN60v8idTQ" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_yEZOt1OqEe2NKN60v8idTQ" points="[-59, 17, 288, 17]$[-287, 17, 60, 17]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yEZ1wFOqEe2NKN60v8idTQ" id="(0.5,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yEZ1wVOqEe2NKN60v8idTQ" id="(0.5,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_yEZ1wlOqEe2NKN60v8idTQ" type="4001" element="_yDvHYFOqEe2NKN60v8idTQ" source="_yD9w4FOqEe2NKN60v8idTQ" target="_yD8iwFOqEe2NKN60v8idTQ"> + <children xmi:type="notation:Node" xmi:id="_yEZ1xlOqEe2NKN60v8idTQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEZ1x1OqEe2NKN60v8idTQ" x="-7" y="16"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yEZ1yFOqEe2NKN60v8idTQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEZ1yVOqEe2NKN60v8idTQ" x="13"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yEZ1ylOqEe2NKN60v8idTQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEZ1y1OqEe2NKN60v8idTQ" x="12"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_yEZ1w1OqEe2NKN60v8idTQ" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_yEZ1xFOqEe2NKN60v8idTQ" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_yEZ1xVOqEe2NKN60v8idTQ" points="[-59, -19, 288, -19]$[-287, -19, 60, -19]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yEZ1zFOqEe2NKN60v8idTQ" id="(0.5,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yEZ1zVOqEe2NKN60v8idTQ" id="(0.5,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_yEZ1zlOqEe2NKN60v8idTQ" type="4001" element="_yDvuc1OqEe2NKN60v8idTQ" source="_yD9w4FOqEe2NKN60v8idTQ" target="_yD9w51OqEe2NKN60v8idTQ"> + <children xmi:type="notation:Node" xmi:id="_yEac0FOqEe2NKN60v8idTQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEac0VOqEe2NKN60v8idTQ" x="-330" y="-78"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yEac0lOqEe2NKN60v8idTQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEac01OqEe2NKN60v8idTQ" x="28" y="-257"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yEac1FOqEe2NKN60v8idTQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEac1VOqEe2NKN60v8idTQ" x="26" y="-10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_yEZ1z1OqEe2NKN60v8idTQ" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_yEZ10FOqEe2NKN60v8idTQ" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_yEZ10VOqEe2NKN60v8idTQ" points="[58, 78, 333, 208]$[229, 78, 504, 208]$[229, -264, 504, -134]$[-245, -264, 30, -134]$[-245, -228, 30, -98]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yEac1lOqEe2NKN60v8idTQ" id="(0.5084745762711864,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yEac11OqEe2NKN60v8idTQ" id="(0.5084745762711864,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_yEac2FOqEe2NKN60v8idTQ" type="4001" element="_yDwVhlOqEe2NKN60v8idTQ" source="_yD9w4FOqEe2NKN60v8idTQ" target="_yD-X9FOqEe2NKN60v8idTQ"> + <children xmi:type="notation:Node" xmi:id="_yEac3FOqEe2NKN60v8idTQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEac3VOqEe2NKN60v8idTQ" x="-208" y="-69"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yEac3lOqEe2NKN60v8idTQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEac31OqEe2NKN60v8idTQ" x="52" y="-225"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yEbD4FOqEe2NKN60v8idTQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEbD4VOqEe2NKN60v8idTQ" x="21" y="-10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_yEac2VOqEe2NKN60v8idTQ" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_yEac2lOqEe2NKN60v8idTQ" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_yEac21OqEe2NKN60v8idTQ" points="[58, 48, 153, 184]$[223, 48, 318, 184]$[223, -252, 318, -116]$[-65, -252, 30, -116]$[-65, -234, 30, -98]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yEbD4lOqEe2NKN60v8idTQ" id="(0.5084745762711864,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yEbD41OqEe2NKN60v8idTQ" id="(0.5084745762711864,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_yEbD5FOqEe2NKN60v8idTQ" type="4001" element="_yDxjoFOqEe2NKN60v8idTQ" source="_yD9w4FOqEe2NKN60v8idTQ" target="_yD-_AFOqEe2NKN60v8idTQ"> + <children xmi:type="notation:Node" xmi:id="_yEbD6FOqEe2NKN60v8idTQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEbD6VOqEe2NKN60v8idTQ" x="-45" y="-63"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yEbD6lOqEe2NKN60v8idTQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEbD61OqEe2NKN60v8idTQ" x="92" y="-147"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yEbD7FOqEe2NKN60v8idTQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEbD7VOqEe2NKN60v8idTQ" x="-13" y="-95"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_yEbD5VOqEe2NKN60v8idTQ" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_yEbD5lOqEe2NKN60v8idTQ" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_yEbD51OqEe2NKN60v8idTQ" points="[58, 18, -21, 154]$[217, 18, 138, 154]$[217, -184, 138, -48]$[137, -184, 58, -48]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yEbq8FOqEe2NKN60v8idTQ" id="(0.5084745762711864,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yEbq8VOqEe2NKN60v8idTQ" id="(0.5084745762711864,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_yEbq8lOqEe2NKN60v8idTQ" type="4001" element="_yDyKtlOqEe2NKN60v8idTQ" source="_yECCUFOqEe2NKN60v8idTQ" target="_yD-_AFOqEe2NKN60v8idTQ"> + <children xmi:type="notation:Node" xmi:id="_yEbq9lOqEe2NKN60v8idTQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEbq91OqEe2NKN60v8idTQ" x="-12" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yEbq-FOqEe2NKN60v8idTQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEbq-VOqEe2NKN60v8idTQ" x="66" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yEbq-lOqEe2NKN60v8idTQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEbq-1OqEe2NKN60v8idTQ" x="-241" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_yEbq81OqEe2NKN60v8idTQ" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_yEbq9FOqEe2NKN60v8idTQ" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_yEbq9VOqEe2NKN60v8idTQ" points="[58, 54, -533, 34]$[573, 54, -18, 34]$[573, 20, -18, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yEbq_FOqEe2NKN60v8idTQ" id="(0.5084745762711864,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yEbq_VOqEe2NKN60v8idTQ" id="(0.5084745762711864,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_yEcSAFOqEe2NKN60v8idTQ" type="4001" element="_yDzY0FOqEe2NKN60v8idTQ" source="_yECCUFOqEe2NKN60v8idTQ" target="_yD-_AFOqEe2NKN60v8idTQ"> + <children xmi:type="notation:Node" xmi:id="_yEcSBFOqEe2NKN60v8idTQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEcSBVOqEe2NKN60v8idTQ" x="-29" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yEcSBlOqEe2NKN60v8idTQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEcSB1OqEe2NKN60v8idTQ" x="62" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yEcSCFOqEe2NKN60v8idTQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEcSCVOqEe2NKN60v8idTQ" x="-267" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_yEcSAVOqEe2NKN60v8idTQ" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_yEcSAlOqEe2NKN60v8idTQ" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_yEcSA1OqEe2NKN60v8idTQ" points="[58, 72, -533, 52]$[585, 72, -6, 52]$[585, 20, -6, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yEcSClOqEe2NKN60v8idTQ" id="(0.5084745762711864,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yEcSC1OqEe2NKN60v8idTQ" id="(0.5084745762711864,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_yEcSDFOqEe2NKN60v8idTQ" type="4001" element="_yDz_41OqEe2NKN60v8idTQ" source="_yECCUFOqEe2NKN60v8idTQ" target="_yD-_AFOqEe2NKN60v8idTQ"> + <children xmi:type="notation:Node" xmi:id="_yEc5EFOqEe2NKN60v8idTQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEc5EVOqEe2NKN60v8idTQ" x="-44" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yEc5ElOqEe2NKN60v8idTQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEc5E1OqEe2NKN60v8idTQ" x="57" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yEc5FFOqEe2NKN60v8idTQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEc5FVOqEe2NKN60v8idTQ" x="-292" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_yEcSDVOqEe2NKN60v8idTQ" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_yEcSDlOqEe2NKN60v8idTQ" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_yEcSD1OqEe2NKN60v8idTQ" points="[58, 90, -533, 70]$[597, 90, 6, 70]$[597, 20, 6, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yEc5FlOqEe2NKN60v8idTQ" id="(0.5084745762711864,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yEc5F1OqEe2NKN60v8idTQ" id="(0.5084745762711864,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_yEc5GFOqEe2NKN60v8idTQ" type="4001" element="_yD1OAFOqEe2NKN60v8idTQ" source="_yD9w51OqEe2NKN60v8idTQ" target="_yEANIFOqEe2NKN60v8idTQ"> + <children xmi:type="notation:Node" xmi:id="_yEc5HFOqEe2NKN60v8idTQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEc5HVOqEe2NKN60v8idTQ" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yEdgIFOqEe2NKN60v8idTQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEdgIVOqEe2NKN60v8idTQ" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yEdgIlOqEe2NKN60v8idTQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEdgI1OqEe2NKN60v8idTQ" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_yEc5GVOqEe2NKN60v8idTQ" routing="Tree"/> + <styles xmi:type="notation:FontStyle" xmi:id="_yEc5GlOqEe2NKN60v8idTQ" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_yEc5G1OqEe2NKN60v8idTQ" points="[-1, 0, -181, 60]$[179, -60, -1, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yEdgJFOqEe2NKN60v8idTQ" id="(0.5084745762711864,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yEdgJVOqEe2NKN60v8idTQ" id="(0.5075757575757576,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_yEdgJlOqEe2NKN60v8idTQ" type="4001" element="_yD3DM1OqEe2NKN60v8idTQ" source="_yD-X9FOqEe2NKN60v8idTQ" target="_yEANIFOqEe2NKN60v8idTQ"> + <children xmi:type="notation:Node" xmi:id="_yEdgKlOqEe2NKN60v8idTQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEdgK1OqEe2NKN60v8idTQ" x="-4" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yEdgLFOqEe2NKN60v8idTQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEdgLVOqEe2NKN60v8idTQ" x="-4" y="6"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yEdgLlOqEe2NKN60v8idTQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEdgL1OqEe2NKN60v8idTQ" x="-4" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_yEdgJ1OqEe2NKN60v8idTQ" routing="Tree"/> + <styles xmi:type="notation:FontStyle" xmi:id="_yEdgKFOqEe2NKN60v8idTQ" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_yEdgKVOqEe2NKN60v8idTQ" points="[0, 0, -219, 58]$[0, -36, -219, 22]$[219, -36, 0, 22]$[219, -58, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yEeHMFOqEe2NKN60v8idTQ" id="(0.5084745762711864,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yEeHMVOqEe2NKN60v8idTQ" id="(0.5075757575757576,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_yEeHMlOqEe2NKN60v8idTQ" type="4001" element="_yD3qQ1OqEe2NKN60v8idTQ" source="_yD-_AFOqEe2NKN60v8idTQ" target="_yEANIFOqEe2NKN60v8idTQ"> + <children xmi:type="notation:Node" xmi:id="_yEeHNlOqEe2NKN60v8idTQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEeHN1OqEe2NKN60v8idTQ" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yEeHOFOqEe2NKN60v8idTQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEeHOVOqEe2NKN60v8idTQ" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yEeHOlOqEe2NKN60v8idTQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEeHO1OqEe2NKN60v8idTQ" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_yEeHM1OqEe2NKN60v8idTQ" routing="Tree"/> + <styles xmi:type="notation:FontStyle" xmi:id="_yEeHNFOqEe2NKN60v8idTQ" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_yEeHNVOqEe2NKN60v8idTQ" points="[-1, 0, 179, 60]$[-181, -60, -1, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yEeuQFOqEe2NKN60v8idTQ" id="(0.5084745762711864,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yEeuQVOqEe2NKN60v8idTQ" id="(0.5075757575757576,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_yEfVUFOqEe2NKN60v8idTQ" type="4001" element="_yD4RU1OqEe2NKN60v8idTQ" source="_yEA0MFOqEe2NKN60v8idTQ" target="_yD8iwFOqEe2NKN60v8idTQ"> + <children xmi:type="notation:Node" xmi:id="_yEf8YFOqEe2NKN60v8idTQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEf8YVOqEe2NKN60v8idTQ" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yEgjcFOqEe2NKN60v8idTQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEgjcVOqEe2NKN60v8idTQ" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yEgjclOqEe2NKN60v8idTQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEgjc1OqEe2NKN60v8idTQ" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_yEfVUVOqEe2NKN60v8idTQ" routing="Tree"/> + <styles xmi:type="notation:FontStyle" xmi:id="_yEfVUlOqEe2NKN60v8idTQ" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_yEfVU1OqEe2NKN60v8idTQ" points="[-1, 0, 98, 60]$[-100, -60, -1, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yEhKgFOqEe2NKN60v8idTQ" id="(0.5084745762711864,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yEhKgVOqEe2NKN60v8idTQ" id="(0.5042016806722689,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_yEhKglOqEe2NKN60v8idTQ" type="4001" element="_yD44Y1OqEe2NKN60v8idTQ" source="_yEBbQFOqEe2NKN60v8idTQ" target="_yD8iwFOqEe2NKN60v8idTQ"> + <children xmi:type="notation:Node" xmi:id="_yEhKhlOqEe2NKN60v8idTQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEhKh1OqEe2NKN60v8idTQ" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yEhxkFOqEe2NKN60v8idTQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEhxkVOqEe2NKN60v8idTQ" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yEhxklOqEe2NKN60v8idTQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEhxk1OqEe2NKN60v8idTQ" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_yEhKg1OqEe2NKN60v8idTQ" routing="Tree"/> + <styles xmi:type="notation:FontStyle" xmi:id="_yEhKhFOqEe2NKN60v8idTQ" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_yEhKhVOqEe2NKN60v8idTQ" points="[-1, 0, -82, 60]$[80, -60, -1, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yEhxlFOqEe2NKN60v8idTQ" id="(0.5084745762711864,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yEhxlVOqEe2NKN60v8idTQ" id="(0.5042016806722689,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_yEhxllOqEe2NKN60v8idTQ" type="4001" element="_yD5fc1OqEe2NKN60v8idTQ" source="_yECCUFOqEe2NKN60v8idTQ" target="_yD8iwFOqEe2NKN60v8idTQ"> + <children xmi:type="notation:Node" xmi:id="_yEhxmlOqEe2NKN60v8idTQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEhxm1OqEe2NKN60v8idTQ" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yEhxnFOqEe2NKN60v8idTQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEhxnVOqEe2NKN60v8idTQ" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_yEhxnlOqEe2NKN60v8idTQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yEhxn1OqEe2NKN60v8idTQ" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_yEhxl1OqEe2NKN60v8idTQ" routing="Tree"/> + <styles xmi:type="notation:FontStyle" xmi:id="_yEhxmFOqEe2NKN60v8idTQ" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_yEhxmVOqEe2NKN60v8idTQ" points="[-1, 0, 540, 60]$[-542, -60, -1, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yEiYoFOqEe2NKN60v8idTQ" id="(0.5084745762711864,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yEiYoVOqEe2NKN60v8idTQ" id="(0.5546218487394958,0.05102040816326531)"/> + </edges> + </data> + </ownedAnnotationEntries> + <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_MNRuAFOpEe2H3LXgl620PA" source="DANNOTATION_CUSTOMIZATION_KEY"> + <data xmi:type="diagram:ComputedStyleDescriptionRegistry" uid="_MNSVEFOpEe2H3LXgl620PA"> + <computedStyleDescriptions xmi:type="style:BundledImageDescription" xmi:id="_yDYiEFOqEe2NKN60v8idTQ" labelExpression="service:render" labelAlignment="LEFT" tooltipExpression="service:renderTooltip" sizeComputationExpression="1"> + <borderColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <labelFormat>bold</labelFormat> + <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <color xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + </computedStyleDescriptions> + <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_yDmkgFOqEe2NKN60v8idTQ" sourceArrow="FillDiamond" routingStyle="manhattan"> + <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_yDmkgVOqEe2NKN60v8idTQ" showIcon="false" labelExpression="service:render"> + <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + </centerLabelStyleDescription> + <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_yDmkglOqEe2NKN60v8idTQ" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel"> + <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/> + </endLabelStyleDescription> + </computedStyleDescriptions> + <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_yDtSMFOqEe2NKN60v8idTQ" sourceArrow="FillDiamond" routingStyle="manhattan"> + <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_yDtSMVOqEe2NKN60v8idTQ" showIcon="false" labelExpression="service:render"> + <labelFormat>bold</labelFormat> + <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + </centerLabelStyleDescription> + <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_yDtSMlOqEe2NKN60v8idTQ" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel"> + <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/> + </endLabelStyleDescription> + </computedStyleDescriptions> + <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_yDugUFOqEe2NKN60v8idTQ" routingStyle="manhattan"> + <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_yDugUVOqEe2NKN60v8idTQ" showIcon="false" labelExpression="service:render"> + <labelFormat>bold</labelFormat> + <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + </centerLabelStyleDescription> + <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_yDugUlOqEe2NKN60v8idTQ" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel"> + <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/> + </endLabelStyleDescription> + </computedStyleDescriptions> + </data> + </ownedAnnotationEntries> + <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_yDDK4FOqEe2NKN60v8idTQ" name="StateMachine" tooltipText="" outgoingEdges="_yDkIQFOqEe2NKN60v8idTQ _yDsEEFOqEe2NKN60v8idTQ _yDsrJlOqEe2NKN60v8idTQ _yDt5QFOqEe2NKN60v8idTQ" width="12" height="10"> + <target xmi:type="ecore:EClass" href="statemachine.ecore#//StateMachine"/> + <semanticElements xmi:type="ecore:EClass" href="statemachine.ecore#//StateMachine"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_yDEZAFOqEe2NKN60v8idTQ" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216"> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/> + <ownedElements xmi:type="diagram:DNodeListElement" uid="_yDXT8FOqEe2NKN60v8idTQ" name="name : EString" tooltipText=""> + <target xmi:type="ecore:EAttribute" href="statemachine.ecore#//StateMachine/name"/> + <semanticElements xmi:type="ecore:EAttribute" href="statemachine.ecore#//StateMachine/name"/> + <ownedStyle xmi:type="diagram:BundledImage" uid="_yDcMcFOqEe2NKN60v8idTQ" labelAlignment="LEFT" description="_yDYiEFOqEe2NKN60v8idTQ"> + <labelFormat>bold</labelFormat> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/> + </ownedElements> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_yDFAEFOqEe2NKN60v8idTQ" name="State" tooltipText="" incomingEdges="_yDt5R1OqEe2NKN60v8idTQ _yDvHYFOqEe2NKN60v8idTQ _yD4RU1OqEe2NKN60v8idTQ _yD44Y1OqEe2NKN60v8idTQ _yD5fc1OqEe2NKN60v8idTQ" width="12" height="10"> + <target xmi:type="ecore:EClass" href="statemachine.ecore#//State"/> + <semanticElements xmi:type="ecore:EClass" href="statemachine.ecore#//State"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_yDFnIFOqEe2NKN60v8idTQ" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_abstract.gif" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="228,228,228"> + <labelFormat>italic</labelFormat> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@conditionnalStyles.1/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/> + <ownedElements xmi:type="diagram:DNodeListElement" uid="_yDczgFOqEe2NKN60v8idTQ" name="name : EString" tooltipText=""> + <target xmi:type="ecore:EAttribute" href="statemachine.ecore#//State/name"/> + <semanticElements xmi:type="ecore:EAttribute" href="statemachine.ecore#//State/name"/> + <ownedStyle xmi:type="diagram:BundledImage" uid="_yDdakFOqEe2NKN60v8idTQ" labelAlignment="LEFT" description="_yDYiEFOqEe2NKN60v8idTQ"> + <labelFormat>bold</labelFormat> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/> + </ownedElements> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_yDG1QFOqEe2NKN60v8idTQ" name="Transition" tooltipText="" outgoingEdges="_yDt5R1OqEe2NKN60v8idTQ _yDvHYFOqEe2NKN60v8idTQ _yDvuc1OqEe2NKN60v8idTQ _yDwVhlOqEe2NKN60v8idTQ _yDxjoFOqEe2NKN60v8idTQ" incomingEdges="_yDt5QFOqEe2NKN60v8idTQ" width="12" height="10"> + <target xmi:type="ecore:EClass" href="statemachine.ecore#//Transition"/> + <semanticElements xmi:type="ecore:EClass" href="statemachine.ecore#//Transition"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_yDHcUFOqEe2NKN60v8idTQ" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216"> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_yDIDYFOqEe2NKN60v8idTQ" name="Trigger" tooltipText="" outgoingEdges="_yD1OAFOqEe2NKN60v8idTQ" incomingEdges="_yDvuc1OqEe2NKN60v8idTQ" width="12" height="10"> + <target xmi:type="ecore:EClass" href="statemachine.ecore#//Trigger"/> + <semanticElements xmi:type="ecore:EClass" href="statemachine.ecore#//Trigger"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_yDIDYVOqEe2NKN60v8idTQ" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216"> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_yDIqcVOqEe2NKN60v8idTQ" name="Guard" tooltipText="" outgoingEdges="_yD3DM1OqEe2NKN60v8idTQ" incomingEdges="_yDwVhlOqEe2NKN60v8idTQ" width="12" height="10"> + <target xmi:type="ecore:EClass" href="statemachine.ecore#//Guard"/> + <semanticElements xmi:type="ecore:EClass" href="statemachine.ecore#//Guard"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_yDJRgFOqEe2NKN60v8idTQ" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216"> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_yDJ4kFOqEe2NKN60v8idTQ" name="Action" tooltipText="" outgoingEdges="_yD3qQ1OqEe2NKN60v8idTQ" incomingEdges="_yDxjoFOqEe2NKN60v8idTQ _yDyKtlOqEe2NKN60v8idTQ _yDzY0FOqEe2NKN60v8idTQ _yDz_41OqEe2NKN60v8idTQ" width="12" height="10"> + <target xmi:type="ecore:EClass" href="statemachine.ecore#//Action"/> + <semanticElements xmi:type="ecore:EClass" href="statemachine.ecore#//Action"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_yDKfoFOqEe2NKN60v8idTQ" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216"> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_yDLGsFOqEe2NKN60v8idTQ" name="Expression" tooltipText="" incomingEdges="_yD1OAFOqEe2NKN60v8idTQ _yD3DM1OqEe2NKN60v8idTQ _yD3qQ1OqEe2NKN60v8idTQ" width="12" height="10"> + <target xmi:type="ecore:EClass" href="statemachine.ecore#//Expression"/> + <semanticElements xmi:type="ecore:EClass" href="statemachine.ecore#//Expression"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_yDLGsVOqEe2NKN60v8idTQ" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_abstract.gif" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="228,228,228"> + <labelFormat>italic</labelFormat> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@conditionnalStyles.1/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/> + <ownedElements xmi:type="diagram:DNodeListElement" uid="_yDeosFOqEe2NKN60v8idTQ" name="content : EString" tooltipText=""> + <target xmi:type="ecore:EAttribute" href="statemachine.ecore#//Expression/content"/> + <semanticElements xmi:type="ecore:EAttribute" href="statemachine.ecore#//Expression/content"/> + <ownedStyle xmi:type="diagram:BundledImage" uid="_yDfPwFOqEe2NKN60v8idTQ" labelAlignment="LEFT" description="_yDYiEFOqEe2NKN60v8idTQ"> + <labelFormat>bold</labelFormat> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/> + </ownedElements> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_yDLtwVOqEe2NKN60v8idTQ" name="InitialState" tooltipText="" outgoingEdges="_yD4RU1OqEe2NKN60v8idTQ" incomingEdges="_yDsrJlOqEe2NKN60v8idTQ" width="12" height="10"> + <target xmi:type="ecore:EClass" href="statemachine.ecore#//InitialState"/> + <semanticElements xmi:type="ecore:EClass" href="statemachine.ecore#//InitialState"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_yDMU0FOqEe2NKN60v8idTQ" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216"> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_yDM74FOqEe2NKN60v8idTQ" name="FinalState" tooltipText="" outgoingEdges="_yD44Y1OqEe2NKN60v8idTQ" incomingEdges="_yDsEEFOqEe2NKN60v8idTQ" width="12" height="10"> + <target xmi:type="ecore:EClass" href="statemachine.ecore#//FinalState"/> + <semanticElements xmi:type="ecore:EClass" href="statemachine.ecore#//FinalState"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_yDM74VOqEe2NKN60v8idTQ" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216"> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_yDNi8VOqEe2NKN60v8idTQ" name="NormalState" tooltipText="" outgoingEdges="_yDyKtlOqEe2NKN60v8idTQ _yDzY0FOqEe2NKN60v8idTQ _yDz_41OqEe2NKN60v8idTQ _yD5fc1OqEe2NKN60v8idTQ" incomingEdges="_yDkIQFOqEe2NKN60v8idTQ" width="12" height="10"> + <target xmi:type="ecore:EClass" href="statemachine.ecore#//NormalState"/> + <semanticElements xmi:type="ecore:EClass" href="statemachine.ecore#//NormalState"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_yDOKAFOqEe2NKN60v8idTQ" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216"> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_yDkIQFOqEe2NKN60v8idTQ" name="[0..*] states" sourceNode="_yDDK4FOqEe2NKN60v8idTQ" targetNode="_yDNi8VOqEe2NKN60v8idTQ"> + <target xmi:type="ecore:EReference" href="statemachine.ecore#//StateMachine/states"/> + <semanticElements xmi:type="ecore:EReference" href="statemachine.ecore#//StateMachine/states"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_yDqO4FOqEe2NKN60v8idTQ" description="_yDmkgFOqEe2NKN60v8idTQ" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0"> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_yDq18VOqEe2NKN60v8idTQ" showIcon="false"> + <customFeatures>labelSize</customFeatures> + </centerLabelStyle> + <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_yDq18FOqEe2NKN60v8idTQ" showIcon="false" labelColor="39,76,114"> + <customFeatures>labelSize</customFeatures> + </endLabelStyle> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_yDsEEFOqEe2NKN60v8idTQ" name="[0..*] finalstates" sourceNode="_yDDK4FOqEe2NKN60v8idTQ" targetNode="_yDM74FOqEe2NKN60v8idTQ"> + <target xmi:type="ecore:EReference" href="statemachine.ecore#//StateMachine/finalstates"/> + <semanticElements xmi:type="ecore:EReference" href="statemachine.ecore#//StateMachine/finalstates"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_yDsrIFOqEe2NKN60v8idTQ" description="_yDmkgFOqEe2NKN60v8idTQ" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0"> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_yDsrIlOqEe2NKN60v8idTQ" showIcon="false"> + <customFeatures>labelSize</customFeatures> + </centerLabelStyle> + <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_yDsrIVOqEe2NKN60v8idTQ" showIcon="false" labelColor="39,76,114"> + <customFeatures>labelSize</customFeatures> + </endLabelStyle> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_yDsrJlOqEe2NKN60v8idTQ" name="[1..1] initialstate" sourceNode="_yDDK4FOqEe2NKN60v8idTQ" targetNode="_yDLtwVOqEe2NKN60v8idTQ"> + <target xmi:type="ecore:EReference" href="statemachine.ecore#//StateMachine/initialstate"/> + <semanticElements xmi:type="ecore:EReference" href="statemachine.ecore#//StateMachine/initialstate"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_yDtSM1OqEe2NKN60v8idTQ" description="_yDtSMFOqEe2NKN60v8idTQ" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0"> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_yDtSNVOqEe2NKN60v8idTQ" showIcon="false"> + <customFeatures>labelSize</customFeatures> + <labelFormat>bold</labelFormat> + </centerLabelStyle> + <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_yDtSNFOqEe2NKN60v8idTQ" showIcon="false" labelColor="39,76,114"> + <customFeatures>labelSize</customFeatures> + </endLabelStyle> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_yDt5QFOqEe2NKN60v8idTQ" name="[0..*] transitions" sourceNode="_yDDK4FOqEe2NKN60v8idTQ" targetNode="_yDG1QFOqEe2NKN60v8idTQ"> + <target xmi:type="ecore:EReference" href="statemachine.ecore#//StateMachine/transitions"/> + <semanticElements xmi:type="ecore:EReference" href="statemachine.ecore#//StateMachine/transitions"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_yDt5QVOqEe2NKN60v8idTQ" description="_yDmkgFOqEe2NKN60v8idTQ" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0"> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_yDt5Q1OqEe2NKN60v8idTQ" showIcon="false"> + <customFeatures>labelSize</customFeatures> + </centerLabelStyle> + <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_yDt5QlOqEe2NKN60v8idTQ" showIcon="false" labelColor="39,76,114"> + <customFeatures>labelSize</customFeatures> + </endLabelStyle> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_yDt5R1OqEe2NKN60v8idTQ" name="[1..1] from" sourceNode="_yDG1QFOqEe2NKN60v8idTQ" targetNode="_yDFAEFOqEe2NKN60v8idTQ"> + <target xmi:type="ecore:EReference" href="statemachine.ecore#//Transition/from"/> + <semanticElements xmi:type="ecore:EReference" href="statemachine.ecore#//Transition/from"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_yDugU1OqEe2NKN60v8idTQ" description="_yDugUFOqEe2NKN60v8idTQ" routingStyle="manhattan" strokeColor="0,0,0"> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_yDugVVOqEe2NKN60v8idTQ" showIcon="false"> + <customFeatures>labelSize</customFeatures> + <labelFormat>bold</labelFormat> + </centerLabelStyle> + <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_yDugVFOqEe2NKN60v8idTQ" showIcon="false" labelColor="39,76,114"> + <customFeatures>labelSize</customFeatures> + </endLabelStyle> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_yDvHYFOqEe2NKN60v8idTQ" name="[1..1] to" sourceNode="_yDG1QFOqEe2NKN60v8idTQ" targetNode="_yDFAEFOqEe2NKN60v8idTQ"> + <target xmi:type="ecore:EReference" href="statemachine.ecore#//Transition/to"/> + <semanticElements xmi:type="ecore:EReference" href="statemachine.ecore#//Transition/to"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_yDvHYVOqEe2NKN60v8idTQ" description="_yDugUFOqEe2NKN60v8idTQ" routingStyle="manhattan" strokeColor="0,0,0"> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_yDvHY1OqEe2NKN60v8idTQ" showIcon="false"> + <customFeatures>labelSize</customFeatures> + <labelFormat>bold</labelFormat> + </centerLabelStyle> + <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_yDvHYlOqEe2NKN60v8idTQ" showIcon="false" labelColor="39,76,114"> + <customFeatures>labelSize</customFeatures> + </endLabelStyle> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_yDvuc1OqEe2NKN60v8idTQ" name="[0..1] trigger" sourceNode="_yDG1QFOqEe2NKN60v8idTQ" targetNode="_yDIDYFOqEe2NKN60v8idTQ"> + <target xmi:type="ecore:EReference" href="statemachine.ecore#//Transition/trigger"/> + <semanticElements xmi:type="ecore:EReference" href="statemachine.ecore#//Transition/trigger"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_yDwVgFOqEe2NKN60v8idTQ" description="_yDmkgFOqEe2NKN60v8idTQ" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0"> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_yDwVglOqEe2NKN60v8idTQ" showIcon="false"> + <customFeatures>labelSize</customFeatures> + </centerLabelStyle> + <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_yDwVgVOqEe2NKN60v8idTQ" showIcon="false" labelColor="39,76,114"> + <customFeatures>labelSize</customFeatures> + </endLabelStyle> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_yDwVhlOqEe2NKN60v8idTQ" name="[0..1] guard" sourceNode="_yDG1QFOqEe2NKN60v8idTQ" targetNode="_yDIqcVOqEe2NKN60v8idTQ"> + <target xmi:type="ecore:EReference" href="statemachine.ecore#//Transition/guard"/> + <semanticElements xmi:type="ecore:EReference" href="statemachine.ecore#//Transition/guard"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_yDw8kFOqEe2NKN60v8idTQ" description="_yDmkgFOqEe2NKN60v8idTQ" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0"> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_yDw8klOqEe2NKN60v8idTQ" showIcon="false"> + <customFeatures>labelSize</customFeatures> + </centerLabelStyle> + <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_yDw8kVOqEe2NKN60v8idTQ" showIcon="false" labelColor="39,76,114"> + <customFeatures>labelSize</customFeatures> + </endLabelStyle> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_yDxjoFOqEe2NKN60v8idTQ" name="[0..1] action" sourceNode="_yDG1QFOqEe2NKN60v8idTQ" targetNode="_yDJ4kFOqEe2NKN60v8idTQ"> + <target xmi:type="ecore:EReference" href="statemachine.ecore#//Transition/action"/> + <semanticElements xmi:type="ecore:EReference" href="statemachine.ecore#//Transition/action"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_yDyKsFOqEe2NKN60v8idTQ" description="_yDmkgFOqEe2NKN60v8idTQ" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0"> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_yDyKslOqEe2NKN60v8idTQ" showIcon="false"> + <customFeatures>labelSize</customFeatures> + </centerLabelStyle> + <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_yDyKsVOqEe2NKN60v8idTQ" showIcon="false" labelColor="39,76,114"> + <customFeatures>labelSize</customFeatures> + </endLabelStyle> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_yDyKtlOqEe2NKN60v8idTQ" name="[0..1] do_" sourceNode="_yDNi8VOqEe2NKN60v8idTQ" targetNode="_yDJ4kFOqEe2NKN60v8idTQ"> + <target xmi:type="ecore:EReference" href="statemachine.ecore#//NormalState/do_"/> + <semanticElements xmi:type="ecore:EReference" href="statemachine.ecore#//NormalState/do_"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_yDyxwFOqEe2NKN60v8idTQ" description="_yDmkgFOqEe2NKN60v8idTQ" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0"> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_yDyxwlOqEe2NKN60v8idTQ" showIcon="false"> + <customFeatures>labelSize</customFeatures> + </centerLabelStyle> + <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_yDyxwVOqEe2NKN60v8idTQ" showIcon="false" labelColor="39,76,114"> + <customFeatures>labelSize</customFeatures> + </endLabelStyle> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_yDzY0FOqEe2NKN60v8idTQ" name="[0..1] exit_" sourceNode="_yDNi8VOqEe2NKN60v8idTQ" targetNode="_yDJ4kFOqEe2NKN60v8idTQ"> + <target xmi:type="ecore:EReference" href="statemachine.ecore#//NormalState/exit_"/> + <semanticElements xmi:type="ecore:EReference" href="statemachine.ecore#//NormalState/exit_"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_yDzY0VOqEe2NKN60v8idTQ" description="_yDmkgFOqEe2NKN60v8idTQ" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0"> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_yDzY01OqEe2NKN60v8idTQ" showIcon="false"> + <customFeatures>labelSize</customFeatures> + </centerLabelStyle> + <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_yDzY0lOqEe2NKN60v8idTQ" showIcon="false" labelColor="39,76,114"> + <customFeatures>labelSize</customFeatures> + </endLabelStyle> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_yDz_41OqEe2NKN60v8idTQ" name="[0..1] entry_" sourceNode="_yDNi8VOqEe2NKN60v8idTQ" targetNode="_yDJ4kFOqEe2NKN60v8idTQ"> + <target xmi:type="ecore:EReference" href="statemachine.ecore#//NormalState/entry_"/> + <semanticElements xmi:type="ecore:EReference" href="statemachine.ecore#//NormalState/entry_"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_yD0m8FOqEe2NKN60v8idTQ" description="_yDmkgFOqEe2NKN60v8idTQ" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0"> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_yD0m8lOqEe2NKN60v8idTQ" showIcon="false"> + <customFeatures>labelSize</customFeatures> + </centerLabelStyle> + <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_yD0m8VOqEe2NKN60v8idTQ" showIcon="false" labelColor="39,76,114"> + <customFeatures>labelSize</customFeatures> + </endLabelStyle> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_yD1OAFOqEe2NKN60v8idTQ" sourceNode="_yDIDYFOqEe2NKN60v8idTQ" targetNode="_yDLGsFOqEe2NKN60v8idTQ"> + <target xmi:type="ecore:EClass" href="statemachine.ecore#//Trigger"/> + <semanticElements xmi:type="ecore:EClass" href="statemachine.ecore#//Trigger"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_yD11EFOqEe2NKN60v8idTQ" targetArrow="InputClosedArrow" routingStyle="tree"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/> + <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_yD2cIFOqEe2NKN60v8idTQ" showIcon="false"> + <labelFormat>italic</labelFormat> + </beginLabelStyle> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_yD2cIVOqEe2NKN60v8idTQ" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_yD3DM1OqEe2NKN60v8idTQ" sourceNode="_yDIqcVOqEe2NKN60v8idTQ" targetNode="_yDLGsFOqEe2NKN60v8idTQ"> + <target xmi:type="ecore:EClass" href="statemachine.ecore#//Guard"/> + <semanticElements xmi:type="ecore:EClass" href="statemachine.ecore#//Guard"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_yD3DNFOqEe2NKN60v8idTQ" targetArrow="InputClosedArrow" routingStyle="tree"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/> + <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_yD3DNVOqEe2NKN60v8idTQ" showIcon="false"> + <labelFormat>italic</labelFormat> + </beginLabelStyle> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_yD3DNlOqEe2NKN60v8idTQ" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_yD3qQ1OqEe2NKN60v8idTQ" sourceNode="_yDJ4kFOqEe2NKN60v8idTQ" targetNode="_yDLGsFOqEe2NKN60v8idTQ"> + <target xmi:type="ecore:EClass" href="statemachine.ecore#//Action"/> + <semanticElements xmi:type="ecore:EClass" href="statemachine.ecore#//Action"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_yD3qRFOqEe2NKN60v8idTQ" targetArrow="InputClosedArrow" routingStyle="tree"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/> + <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_yD3qRVOqEe2NKN60v8idTQ" showIcon="false"> + <labelFormat>italic</labelFormat> + </beginLabelStyle> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_yD3qRlOqEe2NKN60v8idTQ" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_yD4RU1OqEe2NKN60v8idTQ" sourceNode="_yDLtwVOqEe2NKN60v8idTQ" targetNode="_yDFAEFOqEe2NKN60v8idTQ"> + <target xmi:type="ecore:EClass" href="statemachine.ecore#//InitialState"/> + <semanticElements xmi:type="ecore:EClass" href="statemachine.ecore#//InitialState"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_yD4RVFOqEe2NKN60v8idTQ" targetArrow="InputClosedArrow" routingStyle="tree"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/> + <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_yD4RVVOqEe2NKN60v8idTQ" showIcon="false"> + <labelFormat>italic</labelFormat> + </beginLabelStyle> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_yD4RVlOqEe2NKN60v8idTQ" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_yD44Y1OqEe2NKN60v8idTQ" sourceNode="_yDM74FOqEe2NKN60v8idTQ" targetNode="_yDFAEFOqEe2NKN60v8idTQ"> + <target xmi:type="ecore:EClass" href="statemachine.ecore#//FinalState"/> + <semanticElements xmi:type="ecore:EClass" href="statemachine.ecore#//FinalState"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_yD44ZFOqEe2NKN60v8idTQ" targetArrow="InputClosedArrow" routingStyle="tree"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/> + <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_yD44ZVOqEe2NKN60v8idTQ" showIcon="false"> + <labelFormat>italic</labelFormat> + </beginLabelStyle> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_yD44ZlOqEe2NKN60v8idTQ" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_yD5fc1OqEe2NKN60v8idTQ" sourceNode="_yDNi8VOqEe2NKN60v8idTQ" targetNode="_yDFAEFOqEe2NKN60v8idTQ"> + <target xmi:type="ecore:EClass" href="statemachine.ecore#//NormalState"/> + <semanticElements xmi:type="ecore:EClass" href="statemachine.ecore#//NormalState"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_yD6GgFOqEe2NKN60v8idTQ" targetArrow="InputClosedArrow" routingStyle="tree"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/> + <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_yD6GgVOqEe2NKN60v8idTQ" showIcon="false"> + <labelFormat>italic</labelFormat> + </beginLabelStyle> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_yD6GglOqEe2NKN60v8idTQ" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/> + </ownedDiagramElements> + <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/> + <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_MKp30FOpEe2H3LXgl620PA"/> + <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/> + <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Package']"/> + <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Validation']"/> + <target xmi:type="ecore:EPackage" href="statemachine.ecore#/"/> + </diagram:DSemanticDiagram> +</xmi:XMI> diff --git a/metamodel/swt.most.statemachine/model/statemachine.ecore b/metamodel/swt.most.statemachine/model/statemachine.ecore new file mode 100644 index 0000000000000000000000000000000000000000..df0090b8686c64b761d651ffecead4a391c931af --- /dev/null +++ b/metamodel/swt.most.statemachine/model/statemachine.ecore @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="statemachine" nsURI="http://www.swt.org/most/statemachine" nsPrefix="statemachine"> + <eClassifiers xsi:type="ecore:EClass" name="StateMachine"> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" + iD="true"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="states" upperBound="-1" + eType="#//NormalState" containment="true"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="finalstates" upperBound="-1" + eType="#//FinalState" containment="true"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="initialstate" lowerBound="1" + eType="#//InitialState" containment="true"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="transitions" upperBound="-1" + eType="#//Transition" containment="true"/> + </eClassifiers> + <eClassifiers xsi:type="ecore:EClass" name="State" abstract="true"> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" + iD="true"/> + </eClassifiers> + <eClassifiers xsi:type="ecore:EClass" name="Transition"> + <eStructuralFeatures xsi:type="ecore:EReference" name="from" lowerBound="1" eType="#//State"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="to" lowerBound="1" eType="#//State"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="trigger" eType="#//Trigger" + containment="true"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="guard" eType="#//Guard" + containment="true"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="action" eType="#//Action" + containment="true"/> + </eClassifiers> + <eClassifiers xsi:type="ecore:EClass" name="Trigger" eSuperTypes="#//Expression"/> + <eClassifiers xsi:type="ecore:EClass" name="Guard" eSuperTypes="#//Expression"/> + <eClassifiers xsi:type="ecore:EClass" name="Action" eSuperTypes="#//Expression"/> + <eClassifiers xsi:type="ecore:EClass" name="Expression" abstract="true"> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="content" lowerBound="1" + eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/> + </eClassifiers> + <eClassifiers xsi:type="ecore:EClass" name="InitialState" eSuperTypes="#//State"/> + <eClassifiers xsi:type="ecore:EClass" name="FinalState" eSuperTypes="#//State"/> + <eClassifiers xsi:type="ecore:EClass" name="NormalState" eSuperTypes="#//State"> + <eStructuralFeatures xsi:type="ecore:EReference" name="do_" eType="#//Action" + containment="true"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="exit_" eType="#//Action" + containment="true"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="entry_" eType="#//Action" + containment="true"/> + </eClassifiers> +</ecore:EPackage> diff --git a/metamodel/swt.most.statemachine/model/statemachine.genmodel b/metamodel/swt.most.statemachine/model/statemachine.genmodel new file mode 100644 index 0000000000000000000000000000000000000000..1aab0aeeee7779dc0bfbac79462164951e3b2bfe --- /dev/null +++ b/metamodel/swt.most.statemachine/model/statemachine.genmodel @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="UTF-8"?> +<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" + modelDirectory="/swt.most.statemachine/src-gen" creationIcons="false" + editDirectory="/swt.most.statemachine.edit/src-gen" editorDirectory="/swt.most.statemachine.editor/src-gen" + modelPluginID="swt.most.statemachine" modelName="Statemachine" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container" + codeFormatting="true" importerID="org.eclipse.emf.importer.ecore" complianceLevel="5.0" + copyrightFields="false" operationReflection="true" importOrganizing="true"> + <foreignModel>statemachine.ecore</foreignModel> + <testsDirectory xsi:nil="true"/> + <genPackages prefix="Statemachine" basePackage="swt.most" disposableProviderFactory="true" + ecorePackage="statemachine.ecore#/"> + <genClasses ecoreClass="statemachine.ecore#//StateMachine"> + <genFeatures createChild="false" ecoreFeature="ecore:EAttribute statemachine.ecore#//StateMachine/name"/> + <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference statemachine.ecore#//StateMachine/states"/> + <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference statemachine.ecore#//StateMachine/finalstates"/> + <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference statemachine.ecore#//StateMachine/initialstate"/> + <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference statemachine.ecore#//StateMachine/transitions"/> + </genClasses> + <genClasses image="false" ecoreClass="statemachine.ecore#//State"> + <genFeatures createChild="false" ecoreFeature="ecore:EAttribute statemachine.ecore#//State/name"/> + </genClasses> + <genClasses ecoreClass="statemachine.ecore#//Transition"> + <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference statemachine.ecore#//Transition/from"/> + <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference statemachine.ecore#//Transition/to"/> + <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference statemachine.ecore#//Transition/trigger"/> + <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference statemachine.ecore#//Transition/guard"/> + <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference statemachine.ecore#//Transition/action"/> + </genClasses> + <genClasses ecoreClass="statemachine.ecore#//Trigger"/> + <genClasses ecoreClass="statemachine.ecore#//Guard"/> + <genClasses ecoreClass="statemachine.ecore#//Action"/> + <genClasses image="false" ecoreClass="statemachine.ecore#//Expression"> + <genFeatures createChild="false" ecoreFeature="ecore:EAttribute statemachine.ecore#//Expression/content"/> + </genClasses> + <genClasses ecoreClass="statemachine.ecore#//InitialState"/> + <genClasses ecoreClass="statemachine.ecore#//FinalState"/> + <genClasses ecoreClass="statemachine.ecore#//NormalState"> + <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference statemachine.ecore#//NormalState/do_"/> + <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference statemachine.ecore#//NormalState/exit_"/> + <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference statemachine.ecore#//NormalState/entry_"/> + </genClasses> + </genPackages> +</genmodel:GenModel> diff --git a/metamodel/swt.most.statemachine/model/statemachine.svg b/metamodel/swt.most.statemachine/model/statemachine.svg new file mode 100644 index 0000000000000000000000000000000000000000..55deaaee81f5c72a09a62e6ea4f36cbcc9334689 --- /dev/null +++ b/metamodel/swt.most.statemachine/model/statemachine.svg @@ -0,0 +1,521 @@ +<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-dasharray="none" shape-rendering="auto" font-family="'Dialog'" width="1151" text-rendering="auto" fill-opacity="1" contentScriptType="text/ecmascript" color-interpolation="auto" color-rendering="auto" preserveAspectRatio="xMidYMid meet" font-size="12px" xmlns:diagram="http://www.eclipse.org/sirius/diagram/1.1.0" diagram:semanticRoot="platform:/resource/swt.most.statemachine/model/statemachine.ecore#/" viewBox="0 0 1151 635" fill="black" stroke="black" image-rendering="auto" stroke-miterlimit="10" zoomAndPan="magnify" version="1.0" stroke-linecap="square" stroke-linejoin="miter" contentStyleType="text/css" font-style="normal" height="635" stroke-width="1" stroke-dashoffset="0" font-weight="normal" stroke-opacity="1"> + <!--Generated by the Batik Graphics2D SVG Generator--> + <defs id="genericDefs"/> + <g> + <defs id="defs1"> + <linearGradient x1="113" x2="255" y1="12" gradientUnits="userSpaceOnUse" y2="132" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient1" xlink:show="other" spreadMethod="pad"> + <stop stop-opacity="1" stop-color="white" offset="0%"/> + <stop stop-opacity="1" stop-color="rgb(255,252,216)" offset="100%"/> + </linearGradient> + <linearGradient x1="467" x2="586" y1="462" gradientUnits="userSpaceOnUse" y2="570" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient2" xlink:show="other" spreadMethod="pad"> + <stop stop-opacity="1" stop-color="white" offset="0%"/> + <stop stop-opacity="1" stop-color="rgb(228,228,228)" offset="100%"/> + </linearGradient> + <linearGradient x1="814" x2="932" y1="462" gradientUnits="userSpaceOnUse" y2="570" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient3" xlink:show="other" spreadMethod="pad"> + <stop stop-opacity="1" stop-color="white" offset="0%"/> + <stop stop-opacity="1" stop-color="rgb(255,252,216)" offset="100%"/> + </linearGradient> + <linearGradient x1="539" x2="657" y1="234" gradientUnits="userSpaceOnUse" y2="342" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient4" xlink:show="other" spreadMethod="pad"> + <stop stop-opacity="1" stop-color="white" offset="0%"/> + <stop stop-opacity="1" stop-color="rgb(255,252,216)" offset="100%"/> + </linearGradient> + <linearGradient x1="719" x2="837" y1="228" gradientUnits="userSpaceOnUse" y2="336" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient5" xlink:show="other" spreadMethod="pad"> + <stop stop-opacity="1" stop-color="white" offset="0%"/> + <stop stop-opacity="1" stop-color="rgb(255,252,216)" offset="100%"/> + </linearGradient> + <linearGradient x1="893" x2="1011" y1="228" gradientUnits="userSpaceOnUse" y2="336" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient6" xlink:show="other" spreadMethod="pad"> + <stop stop-opacity="1" stop-color="white" offset="0%"/> + <stop stop-opacity="1" stop-color="rgb(255,252,216)" offset="100%"/> + </linearGradient> + <linearGradient x1="419" x2="551" y1="57" gradientUnits="userSpaceOnUse" y2="172" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient7" xlink:show="other" spreadMethod="pad"> + <stop stop-opacity="1" stop-color="white" offset="0%"/> + <stop stop-opacity="1" stop-color="rgb(228,228,228)" offset="100%"/> + </linearGradient> + <linearGradient x1="35" x2="153" y1="306" gradientUnits="userSpaceOnUse" y2="414" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient8" xlink:show="other" spreadMethod="pad"> + <stop stop-opacity="1" stop-color="white" offset="0%"/> + <stop stop-opacity="1" stop-color="rgb(255,252,216)" offset="100%"/> + </linearGradient> + <linearGradient x1="167" x2="285" y1="306" gradientUnits="userSpaceOnUse" y2="414" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient9" xlink:show="other" spreadMethod="pad"> + <stop stop-opacity="1" stop-color="white" offset="0%"/> + <stop stop-opacity="1" stop-color="rgb(255,252,216)" offset="100%"/> + </linearGradient> + <linearGradient x1="302" x2="420" y1="306" gradientUnits="userSpaceOnUse" y2="414" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient10" xlink:show="other" spreadMethod="pad"> + <stop stop-opacity="1" stop-color="white" offset="0%"/> + <stop stop-opacity="1" stop-color="rgb(255,252,216)" offset="100%"/> + </linearGradient> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath1"> + <path d="M112 22 L258 22 L258 124 L112 124 L112 22 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath2"> + <path d="M112 22 L256 22 L256 122 L112 122 L112 22 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath3"> + <path d="M134 27 L233 27 L233 46 L134 46 L134 27 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath4"> + <path d="M134 27 L236 27 L236 46 L134 46 L134 27 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath5"> + <path d="M117 51 L251 51 L251 70 L117 70 L117 51 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath6"> + <path d="M117 51 L253 51 L253 70 L117 70 L117 51 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath7"> + <path d="M113 49 L255 49 L255 121 L113 121 L113 49 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath8"> + <path d="M466 466 L589 466 L589 568 L466 568 L466 466 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath9"> + <path d="M466 466 L587 466 L587 566 L466 566 L466 466 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath10"> + <path d="M502 471 L550 471 L550 490 L502 490 L502 471 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath11"> + <path d="M502 471 L552 471 L552 490 L502 490 L502 471 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath12"> + <path d="M471 495 L582 495 L582 514 L471 514 L471 495 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath13"> + <path d="M471 495 L585 495 L585 514 L471 514 L471 495 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath14"> + <path d="M467 493 L586 493 L586 565 L467 565 L467 493 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath15"> + <path d="M813 466 L935 466 L935 568 L813 568 L813 466 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath16"> + <path d="M813 466 L933 466 L933 566 L813 566 L813 466 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath17"> + <path d="M834 471 L911 471 L911 490 L834 490 L834 471 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath18"> + <path d="M834 471 L913 471 L913 490 L834 490 L834 471 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath19"> + <path d="M814 493 L932 493 L932 565 L814 565 L814 493 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath20"> + <path d="M538 238 L660 238 L660 340 L538 340 L538 238 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath21"> + <path d="M538 238 L658 238 L658 338 L538 338 L538 238 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath22"> + <path d="M566 243 L629 243 L629 262 L566 262 L566 243 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath23"> + <path d="M566 243 L632 243 L632 262 L566 262 L566 243 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath24"> + <path d="M539 265 L657 265 L657 337 L539 337 L539 265 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath25"> + <path d="M718 232 L840 232 L840 334 L718 334 L718 232 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath26"> + <path d="M718 232 L838 232 L838 332 L718 332 L718 232 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath27"> + <path d="M749 237 L806 237 L806 256 L749 256 L749 237 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath28"> + <path d="M749 237 L809 237 L809 256 L749 256 L749 237 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath29"> + <path d="M719 259 L837 259 L837 331 L719 331 L719 259 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath30"> + <path d="M892 232 L1014 232 L1014 334 L892 334 L892 232 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath31"> + <path d="M892 232 L1012 232 L1012 332 L892 332 L892 232 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath32"> + <path d="M923 237 L980 237 L980 256 L923 256 L923 237 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath33"> + <path d="M923 237 L983 237 L983 256 L923 256 L923 237 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath34"> + <path d="M893 259 L1011 259 L1011 331 L893 331 L893 259 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath35"> + <path d="M418 64 L554 64 L554 166 L418 166 L418 64 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath36"> + <path d="M418 64 L552 64 L552 164 L418 164 L418 64 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath37"> + <path d="M446 69 L524 69 L524 88 L446 88 L446 69 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath38"> + <path d="M446 69 L526 69 L526 88 L446 88 L446 69 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath39"> + <path d="M423 93 L547 93 L547 112 L423 112 L423 93 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath40"> + <path d="M423 93 L550 93 L550 112 L423 112 L423 93 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath41"> + <path d="M419 91 L551 91 L551 163 L419 163 L419 91 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath42"> + <path d="M34 310 L156 310 L156 412 L34 412 L34 310 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath43"> + <path d="M34 310 L154 310 L154 410 L34 410 L34 310 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath44"> + <path d="M54 315 L134 315 L134 334 L54 334 L54 315 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath45"> + <path d="M54 315 L136 315 L136 334 L54 334 L54 315 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath46"> + <path d="M35 337 L153 337 L153 409 L35 409 L35 337 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath47"> + <path d="M166 310 L288 310 L288 412 L166 412 L166 310 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath48"> + <path d="M166 310 L286 310 L286 410 L166 410 L166 310 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath49"> + <path d="M188 315 L264 315 L264 334 L188 334 L188 315 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath50"> + <path d="M188 315 L266 315 L266 334 L188 334 L188 315 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath51"> + <path d="M167 337 L285 337 L285 409 L167 409 L167 337 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath52"> + <path d="M301 310 L423 310 L423 412 L301 412 L301 310 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath53"> + <path d="M301 310 L421 310 L421 410 L301 410 L301 310 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath54"> + <path d="M314 315 L408 315 L408 334 L314 334 L314 315 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath55"> + <path d="M314 315 L411 315 L411 334 L314 334 L314 315 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath56"> + <path d="M302 337 L420 337 L420 409 L302 409 L302 337 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath57"> + <path d="M-1 -1 L1152 -1 L1152 636 L-1 636 L-1 -1 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath58"> + <path d="M370 272 L438 272 L438 291 L370 291 L370 272 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath59"> + <path d="M227 120 L236 120 L236 135 L227 135 L227 120 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath60"> + <path d="M356 303 L365 303 L365 313 L356 313 L356 303 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath61"> + <path d="M196 274 L288 274 L288 293 L196 293 L196 274 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath62"> + <path d="M187 120 L196 120 L196 135 L187 135 L187 120 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath63"> + <path d="M187 303 L196 303 L196 313 L187 313 L187 303 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath64"> + <path d="M22 278 L128 278 L128 297 L22 297 L22 278 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath65"> + <path d="M127 120 L136 120 L136 135 L127 135 L127 120 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath66"> + <path d="M127 303 L136 303 L136 313 L127 313 L127 303 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath67"> + <path d="M347 22 L441 22 L441 41 L347 41 L347 22 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath68"> + <path d="M254 37 L269 37 L269 46 L254 46 L254 37 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath69"> + <path d="M870 564 L879 564 L879 574 L870 574 L870 564 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath70"> + <path d="M666 514 L737 514 L737 533 L666 533 L666 514 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath71"> + <path d="M585 529 L595 529 L595 538 L585 538 L585 529 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath72"> + <path d="M682 472 L735 472 L735 491 L682 491 L682 472 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath73"> + <path d="M585 493 L595 493 L595 502 L585 502 L585 493 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath74"> + <path d="M988 526 L1064 526 L1064 545 L988 545 L988 526 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath75"> + <path d="M931 541 L946 541 L946 550 L931 550 L931 541 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath76"> + <path d="M625 231 L634 231 L634 241 L625 241 L625 231 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath77"> + <path d="M994 494 L1065 494 L1065 513 L994 513 L994 494 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath78"> + <path d="M931 511 L946 511 L946 520 L931 520 L931 511 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath79"> + <path d="M805 225 L814 225 L814 235 L805 235 L805 225 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath80"> + <path d="M994 460 L1065 460 L1065 479 L994 479 L994 460 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath81"> + <path d="M931 481 L946 481 L946 490 L931 490 L931 481 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath82"> + <path d="M1010 279 L1020 279 L1020 288 L1010 288 L1010 279 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath83"> + <path d="M655 346 L712 346 L712 365 L655 365 L655 346 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath84"> + <path d="M419 361 L434 361 L434 370 L419 370 L419 361 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath85"> + <path d="M931 330 L940 330 L940 340 L931 340 L931 330 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath86"> + <path d="M651 364 L712 364 L712 383 L651 383 L651 364 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath87"> + <path d="M419 379 L434 379 L434 388 L419 388 L419 379 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath88"> + <path d="M943 330 L952 330 L952 340 L943 340 L943 330 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath89"> + <path d="M646 382 L716 382 L716 401 L646 401 L646 382 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath90"> + <path d="M419 397 L434 397 L434 406 L419 406 L419 397 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath91"> + <path d="M955 330 L964 330 L964 340 L955 340 L955 330 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath92"> + <path d="M481 162 L492 162 L492 173 L481 173 L481 162 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath93"> + <path d="M522 458 L533 458 L533 469 L522 469 L522 458 Z"/> + </clipPath> + </defs> + <g font-size="13px" fill="rgb(131,122,133)" font-family="'Segoe UI'" stroke-linejoin="round" stroke="rgb(131,122,133)" stroke-width="0" stroke-miterlimit="0"> + <rect x="114" y="24" clip-path="url(#clipPath1)" width="142" rx="4" opacity="0.255" ry="4" height="98" stroke="none"/> + <rect x="115" y="25" clip-path="url(#clipPath1)" width="142" rx="4" opacity="0.255" ry="4" height="98" stroke="none"/> + <rect x="113" y="23" clip-path="url(#clipPath2)" fill="url(#linearGradient1)" width="142" rx="4" ry="4" height="98" stroke="none"/> + </g> + <g font-size="13px" stroke-width="1.1" font-family="'Segoe UI'" stroke-linecap="butt"> + <rect x="113" y="23" clip-path="url(#clipPath2)" fill="none" width="141" rx="4" ry="4" height="97"/> + <image x="135" y="28" width="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAsklEQVR4XqWQ0QoB QRSG941sEhJ5F1HaViRCpKwoN25cUFI8khuvYvbq8IuaOuaftr34mmm+ztdpAhEJ 8qAesqIeLouC+PAGTHp34g2c56EasoGngeM0lKd5fDDpl9/9fcLTwGFSlNsplqsD eBrYj0tqbRt4GtgNy2rIBp4G1v0K/QN4GljGVUm2K0k2/4GngVlUU2vbwNPAqFtX QzbwNDDoNOgfwNNAr92UqOUGngay8gIKdwdeFkAbDAAAAABJRU5ErkJggg==" xlink:type="simple" xlink:actuate="onLoad" height="16" preserveAspectRatio="none" xlink:show="embed"/> + <text x="154" xml:space="preserve" y="42" clip-path="url(#clipPath4)" stroke="none">StateMachine</text> + <image x="118" y="52" width="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAa0lEQVR4XmNgGAUY YG6N/n9CGF0PCphaYfj/x8+LODFIHl0PCugqMsXQhIxB8uh6UEBtjuX/7z+ugfGP n1AMYwNpkDy6HhRQlGb7PyvJHicGyaProS2QtC8j30aQZooMAIGBNQDmBYoMIQQA VHKRZGFCvOoAAAAASUVORK5CYII=" xlink:type="simple" xlink:actuate="onLoad" height="16" preserveAspectRatio="none" xlink:show="embed" font-weight="bold"/> + <text x="137" xml:space="preserve" y="66" clip-path="url(#clipPath6)" font-weight="bold" stroke="none">identifier : EString</text> + <line y2="50" fill="none" x1="114" clip-path="url(#clipPath7)" x2="254" y1="50"/> + <rect x="468" y="468" clip-path="url(#clipPath8)" fill="rgb(131,122,133)" width="119" rx="4" opacity="0.255" ry="4" height="98" stroke="none"/> + <rect x="469" y="469" clip-path="url(#clipPath8)" fill="rgb(131,122,133)" width="119" rx="4" opacity="0.255" ry="4" height="98" stroke="none"/> + <rect x="467" y="467" clip-path="url(#clipPath9)" fill="url(#linearGradient2)" width="119" rx="4" ry="4" height="98" stroke="none"/> + <rect x="467" y="467" clip-path="url(#clipPath9)" fill="none" width="118" rx="4" ry="4" height="97" stroke="rgb(125,125,125)"/> + <image stroke="rgb(125,125,125)" width="16" xlink:show="embed" xlink:type="simple" fill="rgb(125,125,125)" preserveAspectRatio="none" height="16" font-style="italic" x="503" y="472" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAw0lEQVR4XmP4//8/ AyUYQgApZIyuCB8Ga0YHILG5Nfo4MUgJDMMNQLIdTP/4eRErxmkAMsBnwOxqA7AS GMbpgu8/rgE1QDGMDaSnV2AxAKoRJgDmL5iRgxVPLjdCNQCZA8J9pSYYzkbGIHm8 BnQWmWFoQsYgebwGNOebg/2PKwxA8ngNqMux+N/U1vi/qRU7BsnjNaAyywrD2cgY JI/XgJIMGwxNyBgkj9eAglRbvGEAksdrQG6K/f+sJNwYJI/XAFIxAHIn7dCPjVWK AAAAAElFTkSuQmCC" xlink:actuate="onLoad"/> + <text font-style="italic" x="522" xml:space="preserve" y="486" clip-path="url(#clipPath11)" stroke="none">State</text> + <image x="472" y="496" width="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAa0lEQVR4XmNgGAUY YG6N/n9CGF0PCphaYfj/x8+LODFIHl0PCugqMsXQhIxB8uh6UEBtjuX/7z+ugfGP n1AMYwNpkDy6HhRQlGb7PyvJHicGyaProS2QtC8j30aQZooMAIGBNQDmBYoMIQQA VHKRZGFCvOoAAAAASUVORK5CYII=" xlink:type="simple" xlink:actuate="onLoad" height="16" preserveAspectRatio="none" xlink:show="embed" font-weight="bold"/> + <text x="491" xml:space="preserve" y="510" clip-path="url(#clipPath13)" font-weight="bold" stroke="none">name : EString</text> + <line clip-path="url(#clipPath14)" fill="none" x1="468" x2="585" y1="494" y2="494" stroke="rgb(125,125,125)"/> + <rect x="815" y="468" clip-path="url(#clipPath15)" fill="rgb(131,122,133)" width="118" rx="4" opacity="0.255" ry="4" height="98" stroke="none"/> + <rect x="816" y="469" clip-path="url(#clipPath15)" fill="rgb(131,122,133)" width="118" rx="4" opacity="0.255" ry="4" height="98" stroke="none"/> + <rect x="814" y="467" clip-path="url(#clipPath16)" fill="url(#linearGradient3)" width="118" rx="4" ry="4" height="98" stroke="none"/> + <rect x="814" y="467" clip-path="url(#clipPath16)" fill="none" width="117" rx="4" ry="4" height="97"/> + <image x="835" y="472" width="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAsklEQVR4XqWQ0QoB QRSG941sEhJ5F1HaViRCpKwoN25cUFI8khuvYvbq8IuaOuaftr34mmm+ztdpAhEJ 8qAesqIeLouC+PAGTHp34g2c56EasoGngeM0lKd5fDDpl9/9fcLTwGFSlNsplqsD eBrYj0tqbRt4GtgNy2rIBp4G1v0K/QN4GljGVUm2K0k2/4GngVlUU2vbwNPAqFtX QzbwNDDoNOgfwNNAr92UqOUGngay8gIKdwdeFkAbDAAAAABJRU5ErkJggg==" xlink:type="simple" xlink:actuate="onLoad" height="16" preserveAspectRatio="none" xlink:show="embed"/> + <text x="854" xml:space="preserve" y="486" clip-path="url(#clipPath18)" stroke="none">Transition</text> + <line y2="494" fill="none" x1="815" clip-path="url(#clipPath19)" x2="931" y1="494"/> + <rect x="540" y="240" clip-path="url(#clipPath20)" fill="rgb(131,122,133)" width="118" rx="4" opacity="0.255" ry="4" height="98" stroke="none"/> + <rect x="541" y="241" clip-path="url(#clipPath20)" fill="rgb(131,122,133)" width="118" rx="4" opacity="0.255" ry="4" height="98" stroke="none"/> + <rect x="539" y="239" clip-path="url(#clipPath21)" fill="url(#linearGradient4)" width="118" rx="4" ry="4" height="98" stroke="none"/> + <rect x="539" y="239" clip-path="url(#clipPath21)" fill="none" width="117" rx="4" ry="4" height="97"/> + <image x="567" y="244" width="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAsklEQVR4XqWQ0QoB QRSG941sEhJ5F1HaViRCpKwoN25cUFI8khuvYvbq8IuaOuaftr34mmm+ztdpAhEJ 8qAesqIeLouC+PAGTHp34g2c56EasoGngeM0lKd5fDDpl9/9fcLTwGFSlNsplqsD eBrYj0tqbRt4GtgNy2rIBp4G1v0K/QN4GljGVUm2K0k2/4GngVlUU2vbwNPAqFtX QzbwNDDoNOgfwNNAr92UqOUGngay8gIKdwdeFkAbDAAAAABJRU5ErkJggg==" xlink:type="simple" xlink:actuate="onLoad" height="16" preserveAspectRatio="none" xlink:show="embed"/> + <text x="586" xml:space="preserve" y="258" clip-path="url(#clipPath23)" stroke="none">Trigger</text> + <line y2="266" fill="none" x1="540" clip-path="url(#clipPath24)" x2="656" y1="266"/> + <rect x="720" y="234" clip-path="url(#clipPath25)" fill="rgb(131,122,133)" width="118" rx="4" opacity="0.255" ry="4" height="98" stroke="none"/> + <rect x="721" y="235" clip-path="url(#clipPath25)" fill="rgb(131,122,133)" width="118" rx="4" opacity="0.255" ry="4" height="98" stroke="none"/> + <rect x="719" y="233" clip-path="url(#clipPath26)" fill="url(#linearGradient5)" width="118" rx="4" ry="4" height="98" stroke="none"/> + <rect x="719" y="233" clip-path="url(#clipPath26)" fill="none" width="117" rx="4" ry="4" height="97"/> + <image x="750" y="238" width="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAsklEQVR4XqWQ0QoB QRSG941sEhJ5F1HaViRCpKwoN25cUFI8khuvYvbq8IuaOuaftr34mmm+ztdpAhEJ 8qAesqIeLouC+PAGTHp34g2c56EasoGngeM0lKd5fDDpl9/9fcLTwGFSlNsplqsD eBrYj0tqbRt4GtgNy2rIBp4G1v0K/QN4GljGVUm2K0k2/4GngVlUU2vbwNPAqFtX QzbwNDDoNOgfwNNAr92UqOUGngay8gIKdwdeFkAbDAAAAABJRU5ErkJggg==" xlink:type="simple" xlink:actuate="onLoad" height="16" preserveAspectRatio="none" xlink:show="embed"/> + <text x="769" xml:space="preserve" y="252" clip-path="url(#clipPath28)" stroke="none">Guard</text> + <line y2="260" fill="none" x1="720" clip-path="url(#clipPath29)" x2="836" y1="260"/> + <rect x="894" y="234" clip-path="url(#clipPath30)" fill="rgb(131,122,133)" width="118" rx="4" opacity="0.255" ry="4" height="98" stroke="none"/> + <rect x="895" y="235" clip-path="url(#clipPath30)" fill="rgb(131,122,133)" width="118" rx="4" opacity="0.255" ry="4" height="98" stroke="none"/> + <rect x="893" y="233" clip-path="url(#clipPath31)" fill="url(#linearGradient6)" width="118" rx="4" ry="4" height="98" stroke="none"/> + <rect x="893" y="233" clip-path="url(#clipPath31)" fill="none" width="117" rx="4" ry="4" height="97"/> + <image x="924" y="238" width="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAsklEQVR4XqWQ0QoB QRSG941sEhJ5F1HaViRCpKwoN25cUFI8khuvYvbq8IuaOuaftr34mmm+ztdpAhEJ 8qAesqIeLouC+PAGTHp34g2c56EasoGngeM0lKd5fDDpl9/9fcLTwGFSlNsplqsD eBrYj0tqbRt4GtgNy2rIBp4G1v0K/QN4GljGVUm2K0k2/4GngVlUU2vbwNPAqFtX QzbwNDDoNOgfwNNAr92UqOUGngay8gIKdwdeFkAbDAAAAABJRU5ErkJggg==" xlink:type="simple" xlink:actuate="onLoad" height="16" preserveAspectRatio="none" xlink:show="embed"/> + <text x="943" xml:space="preserve" y="252" clip-path="url(#clipPath33)" stroke="none">Action</text> + <line y2="260" fill="none" x1="894" clip-path="url(#clipPath34)" x2="1010" y1="260"/> + <rect x="420" y="66" clip-path="url(#clipPath35)" fill="rgb(131,122,133)" width="132" rx="4" opacity="0.255" ry="4" height="98" stroke="none"/> + <rect x="421" y="67" clip-path="url(#clipPath35)" fill="rgb(131,122,133)" width="132" rx="4" opacity="0.255" ry="4" height="98" stroke="none"/> + <rect x="419" y="65" clip-path="url(#clipPath36)" fill="url(#linearGradient7)" width="132" rx="4" ry="4" height="98" stroke="none"/> + <rect x="419" y="65" clip-path="url(#clipPath36)" fill="none" width="131" rx="4" ry="4" height="97" stroke="rgb(125,125,125)"/> + <image stroke="rgb(125,125,125)" width="16" xlink:show="embed" xlink:type="simple" fill="rgb(125,125,125)" preserveAspectRatio="none" height="16" font-style="italic" x="447" y="70" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAw0lEQVR4XmP4//8/ AyUYQgApZIyuCB8Ga0YHILG5Nfo4MUgJDMMNQLIdTP/4eRErxmkAMsBnwOxqA7AS GMbpgu8/rgE1QDGMDaSnV2AxAKoRJgDmL5iRgxVPLjdCNQCZA8J9pSYYzkbGIHm8 BnQWmWFoQsYgebwGNOebg/2PKwxA8ngNqMux+N/U1vi/qRU7BsnjNaAyywrD2cgY JI/XgJIMGwxNyBgkj9eAglRbvGEAksdrQG6K/f+sJNwYJI/XAFIxAHIn7dCPjVWK AAAAAElFTkSuQmCC" xlink:actuate="onLoad"/> + <text font-style="italic" x="466" xml:space="preserve" y="84" clip-path="url(#clipPath38)" stroke="none">Expression</text> + <image x="424" y="94" width="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAa0lEQVR4XmNgGAUY YG6N/n9CGF0PCphaYfj/x8+LODFIHl0PCugqMsXQhIxB8uh6UEBtjuX/7z+ugfGP n1AMYwNpkDy6HhRQlGb7PyvJHicGyaProS2QtC8j30aQZooMAIGBNQDmBYoMIQQA VHKRZGFCvOoAAAAASUVORK5CYII=" xlink:type="simple" xlink:actuate="onLoad" height="16" preserveAspectRatio="none" xlink:show="embed" font-weight="bold"/> + <text x="443" xml:space="preserve" y="108" clip-path="url(#clipPath40)" font-weight="bold" stroke="none">content : EString</text> + <line clip-path="url(#clipPath41)" fill="none" x1="420" x2="550" y1="92" y2="92" stroke="rgb(125,125,125)"/> + <rect x="36" y="312" clip-path="url(#clipPath42)" fill="rgb(131,122,133)" width="118" rx="4" opacity="0.255" ry="4" height="98" stroke="none"/> + <rect x="37" y="313" clip-path="url(#clipPath42)" fill="rgb(131,122,133)" width="118" rx="4" opacity="0.255" ry="4" height="98" stroke="none"/> + <rect x="35" y="311" clip-path="url(#clipPath43)" fill="url(#linearGradient8)" width="118" rx="4" ry="4" height="98" stroke="none"/> + <rect x="35" y="311" clip-path="url(#clipPath43)" fill="none" width="117" rx="4" ry="4" height="97"/> + <image x="55" y="316" width="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAsklEQVR4XqWQ0QoB QRSG941sEhJ5F1HaViRCpKwoN25cUFI8khuvYvbq8IuaOuaftr34mmm+ztdpAhEJ 8qAesqIeLouC+PAGTHp34g2c56EasoGngeM0lKd5fDDpl9/9fcLTwGFSlNsplqsD eBrYj0tqbRt4GtgNy2rIBp4G1v0K/QN4GljGVUm2K0k2/4GngVlUU2vbwNPAqFtX QzbwNDDoNOgfwNNAr92UqOUGngay8gIKdwdeFkAbDAAAAABJRU5ErkJggg==" xlink:type="simple" xlink:actuate="onLoad" height="16" preserveAspectRatio="none" xlink:show="embed"/> + <text x="74" xml:space="preserve" y="330" clip-path="url(#clipPath45)" stroke="none">InitialState</text> + <line y2="338" fill="none" x1="36" clip-path="url(#clipPath46)" x2="152" y1="338"/> + <rect x="168" y="312" clip-path="url(#clipPath47)" fill="rgb(131,122,133)" width="118" rx="4" opacity="0.255" ry="4" height="98" stroke="none"/> + <rect x="169" y="313" clip-path="url(#clipPath47)" fill="rgb(131,122,133)" width="118" rx="4" opacity="0.255" ry="4" height="98" stroke="none"/> + <rect x="167" y="311" clip-path="url(#clipPath48)" fill="url(#linearGradient9)" width="118" rx="4" ry="4" height="98" stroke="none"/> + <rect x="167" y="311" clip-path="url(#clipPath48)" fill="none" width="117" rx="4" ry="4" height="97"/> + <image x="189" y="316" width="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAsklEQVR4XqWQ0QoB QRSG941sEhJ5F1HaViRCpKwoN25cUFI8khuvYvbq8IuaOuaftr34mmm+ztdpAhEJ 8qAesqIeLouC+PAGTHp34g2c56EasoGngeM0lKd5fDDpl9/9fcLTwGFSlNsplqsD eBrYj0tqbRt4GtgNy2rIBp4G1v0K/QN4GljGVUm2K0k2/4GngVlUU2vbwNPAqFtX QzbwNDDoNOgfwNNAr92UqOUGngay8gIKdwdeFkAbDAAAAABJRU5ErkJggg==" xlink:type="simple" xlink:actuate="onLoad" height="16" preserveAspectRatio="none" xlink:show="embed"/> + <text x="208" xml:space="preserve" y="330" clip-path="url(#clipPath50)" stroke="none">FinalState</text> + <line y2="338" fill="none" x1="168" clip-path="url(#clipPath51)" x2="284" y1="338"/> + <rect x="303" y="312" clip-path="url(#clipPath52)" fill="rgb(131,122,133)" width="118" rx="4" opacity="0.255" ry="4" height="98" stroke="none"/> + <rect x="304" y="313" clip-path="url(#clipPath52)" fill="rgb(131,122,133)" width="118" rx="4" opacity="0.255" ry="4" height="98" stroke="none"/> + <rect x="302" y="311" clip-path="url(#clipPath53)" fill="url(#linearGradient10)" width="118" rx="4" ry="4" height="98" stroke="none"/> + <rect x="302" y="311" clip-path="url(#clipPath53)" fill="none" width="117" rx="4" ry="4" height="97"/> + <image x="315" y="316" width="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAsklEQVR4XqWQ0QoB QRSG941sEhJ5F1HaViRCpKwoN25cUFI8khuvYvbq8IuaOuaftr34mmm+ztdpAhEJ 8qAesqIeLouC+PAGTHp34g2c56EasoGngeM0lKd5fDDpl9/9fcLTwGFSlNsplqsD eBrYj0tqbRt4GtgNy2rIBp4G1v0K/QN4GljGVUm2K0k2/4GngVlUU2vbwNPAqFtX QzbwNDDoNOgfwNNAr92UqOUGngay8gIKdwdeFkAbDAAAAABJRU5ErkJggg==" xlink:type="simple" xlink:actuate="onLoad" height="16" preserveAspectRatio="none" xlink:show="embed"/> + <text x="334" xml:space="preserve" y="330" clip-path="url(#clipPath55)" stroke="none">NormalState</text> + <line y2="338" fill="none" x1="303" clip-path="url(#clipPath56)" x2="419" y1="338"/> + <line y2="239" fill="none" x1="231" clip-path="url(#clipPath57)" x2="231" y1="121"/> + <line y2="239" fill="none" x1="231" clip-path="url(#clipPath57)" x2="360" y1="239"/> + <line y2="311" fill="none" x1="360" clip-path="url(#clipPath57)" x2="360" y1="239"/> + <text x="371" xml:space="preserve" y="287" clip-path="url(#clipPath58)" stroke="none">[0..*] states</text> + <polygon points=" 231 121 234 127 231 133 228 127" clip-path="url(#clipPath59)" stroke="none"/> + <polygon fill="none" points=" 231 121 234 127 231 133 228 127" clip-path="url(#clipPath59)"/> + <line y2="311" fill="none" x1="357" clip-path="url(#clipPath60)" x2="360" y1="304"/> + <line y2="304" fill="none" x1="360" clip-path="url(#clipPath60)" x2="363" y1="311"/> + <line y2="311" fill="none" x1="191" clip-path="url(#clipPath57)" x2="191" y1="121"/> + <text x="197" xml:space="preserve" y="289" clip-path="url(#clipPath61)" stroke="none">[0..*] finalstates</text> + <polygon points=" 191 121 194 127 191 133 188 127" clip-path="url(#clipPath62)" stroke="none"/> + <polygon fill="none" points=" 191 121 194 127 191 133 188 127" clip-path="url(#clipPath62)"/> + <line y2="311" fill="none" x1="188" clip-path="url(#clipPath63)" x2="191" y1="304"/> + <line y2="304" fill="none" x1="191" clip-path="url(#clipPath63)" x2="194" y1="311"/> + <line y2="311" fill="none" x1="131" clip-path="url(#clipPath57)" x2="131" y1="121"/> + <text x="23" xml:space="preserve" y="293" clip-path="url(#clipPath64)" font-weight="bold" stroke="none">[1..1] initialstate</text> + <polygon points=" 131 121 134 127 131 133 128 127" clip-path="url(#clipPath65)" stroke="none"/> + <polygon fill="none" points=" 131 121 134 127 131 133 128 127" clip-path="url(#clipPath65)"/> + <line y2="311" fill="none" x1="128" clip-path="url(#clipPath66)" x2="131" y1="304"/> + <line y2="304" fill="none" x1="131" clip-path="url(#clipPath66)" x2="134" y1="311"/> + <line y2="41" fill="none" x1="255" clip-path="url(#clipPath57)" x2="1127" y1="41"/> + <line y2="611" fill="none" x1="1127" clip-path="url(#clipPath57)" x2="1127" y1="41"/> + <line y2="611" fill="none" x1="1127" clip-path="url(#clipPath57)" x2="874" y1="611"/> + <line y2="565" fill="none" x1="874" clip-path="url(#clipPath57)" x2="874" y1="611"/> + <text x="348" xml:space="preserve" y="37" clip-path="url(#clipPath67)" stroke="none">[0..*] transitions</text> + <polygon points=" 255 41 261 38 267 41 261 44" clip-path="url(#clipPath68)" stroke="none"/> + <polygon fill="none" points=" 255 41 261 38 267 41 261 44" clip-path="url(#clipPath68)"/> + <line y2="565" fill="none" x1="877" clip-path="url(#clipPath69)" x2="874" y1="572"/> + <line y2="572" fill="none" x1="874" clip-path="url(#clipPath69)" x2="871" y1="565"/> + <line y2="533" fill="none" x1="814" clip-path="url(#clipPath57)" x2="586" y1="533"/> + <text x="667" xml:space="preserve" y="529" clip-path="url(#clipPath70)" font-weight="bold" stroke="none">[1..1] from</text> + <line y2="533" fill="none" x1="593" clip-path="url(#clipPath71)" x2="586" y1="530"/> + <line y2="536" fill="none" x1="586" clip-path="url(#clipPath71)" x2="593" y1="533"/> + <line y2="497" fill="none" x1="814" clip-path="url(#clipPath57)" x2="586" y1="497"/> + <text x="683" xml:space="preserve" y="487" clip-path="url(#clipPath72)" font-weight="bold" stroke="none">[1..1] to</text> + <line y2="497" fill="none" x1="593" clip-path="url(#clipPath73)" x2="586" y1="494"/> + <line y2="500" fill="none" x1="586" clip-path="url(#clipPath73)" x2="593" y1="497"/> + <line y2="545" fill="none" x1="932" clip-path="url(#clipPath57)" x2="1103" y1="545"/> + <line y2="203" fill="none" x1="1103" clip-path="url(#clipPath57)" x2="1103" y1="545"/> + <line y2="203" fill="none" x1="1103" clip-path="url(#clipPath57)" x2="629" y1="203"/> + <line y2="239" fill="none" x1="629" clip-path="url(#clipPath57)" x2="629" y1="203"/> + <text x="989" xml:space="preserve" y="541" clip-path="url(#clipPath74)" stroke="none">[0..1] trigger</text> + <polygon points=" 932 545 938 542 944 545 938 548" clip-path="url(#clipPath75)" stroke="none"/> + <polygon fill="none" points=" 932 545 938 542 944 545 938 548" clip-path="url(#clipPath75)"/> + <line y2="239" fill="none" x1="626" clip-path="url(#clipPath76)" x2="629" y1="232"/> + <line y2="232" fill="none" x1="629" clip-path="url(#clipPath76)" x2="632" y1="239"/> + <line y2="515" fill="none" x1="932" clip-path="url(#clipPath57)" x2="1097" y1="515"/> + <line y2="215" fill="none" x1="1097" clip-path="url(#clipPath57)" x2="1097" y1="515"/> + <line y2="215" fill="none" x1="1097" clip-path="url(#clipPath57)" x2="809" y1="215"/> + <line y2="233" fill="none" x1="809" clip-path="url(#clipPath57)" x2="809" y1="215"/> + <text x="995" xml:space="preserve" y="509" clip-path="url(#clipPath77)" stroke="none">[0..1] guard</text> + <polygon points=" 932 515 938 512 944 515 938 518" clip-path="url(#clipPath78)" stroke="none"/> + <polygon fill="none" points=" 932 515 938 512 944 515 938 518" clip-path="url(#clipPath78)"/> + <line y2="233" fill="none" x1="806" clip-path="url(#clipPath79)" x2="809" y1="226"/> + <line y2="226" fill="none" x1="809" clip-path="url(#clipPath79)" x2="812" y1="233"/> + <line y2="485" fill="none" x1="932" clip-path="url(#clipPath57)" x2="1091" y1="485"/> + <line y2="283" fill="none" x1="1091" clip-path="url(#clipPath57)" x2="1091" y1="485"/> + <line y2="283" fill="none" x1="1091" clip-path="url(#clipPath57)" x2="1011" y1="283"/> + <text x="995" xml:space="preserve" y="475" clip-path="url(#clipPath80)" stroke="none">[0..1] action</text> + <polygon points=" 932 485 938 482 944 485 938 488" clip-path="url(#clipPath81)" stroke="none"/> + <polygon fill="none" points=" 932 485 938 482 944 485 938 488" clip-path="url(#clipPath81)"/> + <line y2="283" fill="none" x1="1018" clip-path="url(#clipPath82)" x2="1011" y1="280"/> + <line y2="286" fill="none" x1="1011" clip-path="url(#clipPath82)" x2="1018" y1="283"/> + <line y2="365" fill="none" x1="420" clip-path="url(#clipPath57)" x2="935" y1="365"/> + <line y2="331" fill="none" x1="935" clip-path="url(#clipPath57)" x2="935" y1="365"/> + <text x="656" xml:space="preserve" y="361" clip-path="url(#clipPath83)" stroke="none">[0..1] do_</text> + <polygon points=" 420 365 426 362 432 365 426 368" clip-path="url(#clipPath84)" stroke="none"/> + <polygon fill="none" points=" 420 365 426 362 432 365 426 368" clip-path="url(#clipPath84)"/> + <line y2="331" fill="none" x1="938" clip-path="url(#clipPath85)" x2="935" y1="338"/> + <line y2="338" fill="none" x1="935" clip-path="url(#clipPath85)" x2="932" y1="331"/> + <line y2="383" fill="none" x1="420" clip-path="url(#clipPath57)" x2="947" y1="383"/> + <line y2="331" fill="none" x1="947" clip-path="url(#clipPath57)" x2="947" y1="383"/> + <text x="652" xml:space="preserve" y="379" clip-path="url(#clipPath86)" stroke="none">[0..1] exit_</text> + <polygon points=" 420 383 426 380 432 383 426 386" clip-path="url(#clipPath87)" stroke="none"/> + <polygon fill="none" points=" 420 383 426 380 432 383 426 386" clip-path="url(#clipPath87)"/> + <line y2="331" fill="none" x1="950" clip-path="url(#clipPath88)" x2="947" y1="338"/> + <line y2="338" fill="none" x1="947" clip-path="url(#clipPath88)" x2="944" y1="331"/> + <line y2="401" fill="none" x1="420" clip-path="url(#clipPath57)" x2="959" y1="401"/> + <line y2="331" fill="none" x1="959" clip-path="url(#clipPath57)" x2="959" y1="401"/> + <text x="647" xml:space="preserve" y="397" clip-path="url(#clipPath89)" stroke="none">[0..1] entry_</text> + <polygon points=" 420 401 426 398 432 401 426 404" clip-path="url(#clipPath90)" stroke="none"/> + <polygon fill="none" points=" 420 401 426 398 432 401 426 404" clip-path="url(#clipPath90)"/> + <line y2="331" fill="none" x1="962" clip-path="url(#clipPath91)" x2="959" y1="338"/> + <line y2="338" fill="none" x1="959" clip-path="url(#clipPath91)" x2="956" y1="331"/> + <line clip-path="url(#clipPath57)" fill="none" x1="599" x2="599" y1="239" y2="181" stroke="rgb(136,136,136)"/> + <line clip-path="url(#clipPath57)" fill="none" x1="599" x2="486" y1="181" y2="181" stroke="rgb(136,136,136)"/> + <line clip-path="url(#clipPath57)" fill="none" x1="486" x2="486" y1="181" y2="163" stroke="rgb(136,136,136)"/> + <polygon fill="white" clip-path="url(#clipPath92)" points=" 486 163 490 171 482 171" stroke="none"/> + <polygon fill="none" clip-path="url(#clipPath92)" points=" 486 163 490 171 482 171" stroke="rgb(136,136,136)"/> + <line clip-path="url(#clipPath57)" fill="none" x1="779" x2="779" y1="233" y2="181" stroke="rgb(136,136,136)"/> + <line clip-path="url(#clipPath57)" fill="none" x1="779" x2="486" y1="181" y2="181" stroke="rgb(136,136,136)"/> + <line clip-path="url(#clipPath57)" fill="none" x1="486" x2="486" y1="181" y2="163" stroke="rgb(136,136,136)"/> + <polygon fill="white" clip-path="url(#clipPath92)" points=" 486 163 490 171 482 171" stroke="none"/> + <polygon fill="none" clip-path="url(#clipPath92)" points=" 486 163 490 171 482 171" stroke="rgb(136,136,136)"/> + <line clip-path="url(#clipPath57)" fill="none" x1="953" x2="953" y1="233" y2="181" stroke="rgb(136,136,136)"/> + <line clip-path="url(#clipPath57)" fill="none" x1="953" x2="486" y1="181" y2="181" stroke="rgb(136,136,136)"/> + <line clip-path="url(#clipPath57)" fill="none" x1="486" x2="486" y1="181" y2="163" stroke="rgb(136,136,136)"/> + <polygon fill="white" clip-path="url(#clipPath92)" points=" 486 163 490 171 482 171" stroke="none"/> + <polygon fill="none" clip-path="url(#clipPath92)" points=" 486 163 490 171 482 171" stroke="rgb(136,136,136)"/> + <line clip-path="url(#clipPath57)" fill="none" x1="95" x2="95" y1="409" y2="451" stroke="rgb(136,136,136)"/> + <line clip-path="url(#clipPath57)" fill="none" x1="95" x2="527" y1="451" y2="451" stroke="rgb(136,136,136)"/> + <line clip-path="url(#clipPath57)" fill="none" x1="527" x2="527" y1="451" y2="467" stroke="rgb(136,136,136)"/> + <polygon fill="white" clip-path="url(#clipPath93)" points=" 527 467 523 459 531 459" stroke="none"/> + <polygon fill="none" clip-path="url(#clipPath93)" points=" 527 467 523 459 531 459" stroke="rgb(136,136,136)"/> + <line clip-path="url(#clipPath57)" fill="none" x1="227" x2="227" y1="409" y2="451" stroke="rgb(136,136,136)"/> + <line clip-path="url(#clipPath57)" fill="none" x1="227" x2="527" y1="451" y2="451" stroke="rgb(136,136,136)"/> + <line clip-path="url(#clipPath57)" fill="none" x1="527" x2="527" y1="451" y2="467" stroke="rgb(136,136,136)"/> + <polygon fill="white" clip-path="url(#clipPath93)" points=" 527 467 523 459 531 459" stroke="none"/> + <polygon fill="none" clip-path="url(#clipPath93)" points=" 527 467 523 459 531 459" stroke="rgb(136,136,136)"/> + <line clip-path="url(#clipPath57)" fill="none" x1="362" x2="362" y1="409" y2="451" stroke="rgb(136,136,136)"/> + <line clip-path="url(#clipPath57)" fill="none" x1="362" x2="527" y1="451" y2="451" stroke="rgb(136,136,136)"/> + <line clip-path="url(#clipPath57)" fill="none" x1="527" x2="527" y1="451" y2="467" stroke="rgb(136,136,136)"/> + <polygon fill="white" clip-path="url(#clipPath93)" points=" 527 467 523 459 531 459" stroke="none"/> + <polygon fill="none" clip-path="url(#clipPath93)" points=" 527 467 523 459 531 459" stroke="rgb(136,136,136)"/> + </g> + </g> +</svg> diff --git a/metamodel/swt.most.statemachine/plugin.properties b/metamodel/swt.most.statemachine/plugin.properties new file mode 100644 index 0000000000000000000000000000000000000000..d7a33a421c5314bc9f173538c94153cdbdb1bc12 --- /dev/null +++ b/metamodel/swt.most.statemachine/plugin.properties @@ -0,0 +1,4 @@ +# + +pluginName = swt.most.statemachine +providerName = www.example.org diff --git a/metamodel/swt.most.statemachine/plugin.xml b/metamodel/swt.most.statemachine/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..487605c81d3679922df19ec121218262b86d3ba4 --- /dev/null +++ b/metamodel/swt.most.statemachine/plugin.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.0"?> + +<!-- +--> + +<plugin> + + <extension point="org.eclipse.emf.ecore.generated_package"> + <!-- @generated statemachine --> + <package + uri="http://www.swt.org/most/statemachine" + class="swt.most.statemachine.StatemachinePackage" + genModel="model/statemachine.genmodel"/> + </extension> + +</plugin> diff --git a/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/Action.java b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/Action.java new file mode 100644 index 0000000000000000000000000000000000000000..409cd8b453526ee15075b20a96bfb0f7bda04476 --- /dev/null +++ b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/Action.java @@ -0,0 +1,16 @@ +/** + */ +package swt.most.statemachine; + +/** + * <!-- begin-user-doc --> + * A representation of the model object '<em><b>Action</b></em>'. + * <!-- end-user-doc --> + * + * + * @see swt.most.statemachine.StatemachinePackage#getAction() + * @model + * @generated + */ +public interface Action extends Expression { +} // Action diff --git a/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/Expression.java b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/Expression.java new file mode 100644 index 0000000000000000000000000000000000000000..271b7a38756aefcd6eee08051599d49910169945 --- /dev/null +++ b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/Expression.java @@ -0,0 +1,46 @@ +/** + */ +package swt.most.statemachine; + +import org.eclipse.emf.ecore.EObject; + +/** + * <!-- begin-user-doc --> + * A representation of the model object '<em><b>Expression</b></em>'. + * <!-- end-user-doc --> + * + * <p> + * The following features are supported: + * </p> + * <ul> + * <li>{@link swt.most.statemachine.Expression#getContent <em>Content</em>}</li> + * </ul> + * + * @see swt.most.statemachine.StatemachinePackage#getExpression() + * @model abstract="true" + * @generated + */ +public interface Expression extends EObject { + /** + * Returns the value of the '<em><b>Content</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the value of the '<em>Content</em>' attribute. + * @see #setContent(String) + * @see swt.most.statemachine.StatemachinePackage#getExpression_Content() + * @model required="true" + * @generated + */ + String getContent(); + + /** + * Sets the value of the '{@link swt.most.statemachine.Expression#getContent <em>Content</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>Content</em>' attribute. + * @see #getContent() + * @generated + */ + void setContent(String value); + +} // Expression diff --git a/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/FinalState.java b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/FinalState.java new file mode 100644 index 0000000000000000000000000000000000000000..a716cd4f5a1b8ec45322f521b73bd352416db4d5 --- /dev/null +++ b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/FinalState.java @@ -0,0 +1,16 @@ +/** + */ +package swt.most.statemachine; + +/** + * <!-- begin-user-doc --> + * A representation of the model object '<em><b>Final State</b></em>'. + * <!-- end-user-doc --> + * + * + * @see swt.most.statemachine.StatemachinePackage#getFinalState() + * @model + * @generated + */ +public interface FinalState extends State { +} // FinalState diff --git a/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/Guard.java b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/Guard.java new file mode 100644 index 0000000000000000000000000000000000000000..9e518c2ebb6ab85068e38d52ca7fa2fd735ee427 --- /dev/null +++ b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/Guard.java @@ -0,0 +1,16 @@ +/** + */ +package swt.most.statemachine; + +/** + * <!-- begin-user-doc --> + * A representation of the model object '<em><b>Guard</b></em>'. + * <!-- end-user-doc --> + * + * + * @see swt.most.statemachine.StatemachinePackage#getGuard() + * @model + * @generated + */ +public interface Guard extends Expression { +} // Guard diff --git a/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/InitialState.java b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/InitialState.java new file mode 100644 index 0000000000000000000000000000000000000000..876098d782c8935d9ddd422fed69e8b8fba51b9a --- /dev/null +++ b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/InitialState.java @@ -0,0 +1,16 @@ +/** + */ +package swt.most.statemachine; + +/** + * <!-- begin-user-doc --> + * A representation of the model object '<em><b>Initial State</b></em>'. + * <!-- end-user-doc --> + * + * + * @see swt.most.statemachine.StatemachinePackage#getInitialState() + * @model + * @generated + */ +public interface InitialState extends State { +} // InitialState diff --git a/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/NormalState.java b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/NormalState.java new file mode 100644 index 0000000000000000000000000000000000000000..f7b47cfcf14e6d2f3399b7d2e8d5850edc764751 --- /dev/null +++ b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/NormalState.java @@ -0,0 +1,90 @@ +/** + */ +package swt.most.statemachine; + +/** + * <!-- begin-user-doc --> + * A representation of the model object '<em><b>Normal State</b></em>'. + * <!-- end-user-doc --> + * + * <p> + * The following features are supported: + * </p> + * <ul> + * <li>{@link swt.most.statemachine.NormalState#getDo_ <em>Do </em>}</li> + * <li>{@link swt.most.statemachine.NormalState#getExit_ <em>Exit </em>}</li> + * <li>{@link swt.most.statemachine.NormalState#getEntry_ <em>Entry </em>}</li> + * </ul> + * + * @see swt.most.statemachine.StatemachinePackage#getNormalState() + * @model + * @generated + */ +public interface NormalState extends State { + /** + * Returns the value of the '<em><b>Do </b></em>' containment reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the value of the '<em>Do </em>' containment reference. + * @see #setDo_(Action) + * @see swt.most.statemachine.StatemachinePackage#getNormalState_Do_() + * @model containment="true" + * @generated + */ + Action getDo_(); + + /** + * Sets the value of the '{@link swt.most.statemachine.NormalState#getDo_ <em>Do </em>}' containment reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>Do </em>' containment reference. + * @see #getDo_() + * @generated + */ + void setDo_(Action value); + + /** + * Returns the value of the '<em><b>Exit </b></em>' containment reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the value of the '<em>Exit </em>' containment reference. + * @see #setExit_(Action) + * @see swt.most.statemachine.StatemachinePackage#getNormalState_Exit_() + * @model containment="true" + * @generated + */ + Action getExit_(); + + /** + * Sets the value of the '{@link swt.most.statemachine.NormalState#getExit_ <em>Exit </em>}' containment reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>Exit </em>' containment reference. + * @see #getExit_() + * @generated + */ + void setExit_(Action value); + + /** + * Returns the value of the '<em><b>Entry </b></em>' containment reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the value of the '<em>Entry </em>' containment reference. + * @see #setEntry_(Action) + * @see swt.most.statemachine.StatemachinePackage#getNormalState_Entry_() + * @model containment="true" + * @generated + */ + Action getEntry_(); + + /** + * Sets the value of the '{@link swt.most.statemachine.NormalState#getEntry_ <em>Entry </em>}' containment reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>Entry </em>' containment reference. + * @see #getEntry_() + * @generated + */ + void setEntry_(Action value); + +} // NormalState diff --git a/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/State.java b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/State.java new file mode 100644 index 0000000000000000000000000000000000000000..7a9e141a9773cdba38b5987c7a265b2c8edb3e5c --- /dev/null +++ b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/State.java @@ -0,0 +1,46 @@ +/** + */ +package swt.most.statemachine; + +import org.eclipse.emf.ecore.EObject; + +/** + * <!-- begin-user-doc --> + * A representation of the model object '<em><b>State</b></em>'. + * <!-- end-user-doc --> + * + * <p> + * The following features are supported: + * </p> + * <ul> + * <li>{@link swt.most.statemachine.State#getName <em>Name</em>}</li> + * </ul> + * + * @see swt.most.statemachine.StatemachinePackage#getState() + * @model abstract="true" + * @generated + */ +public interface State extends EObject { + /** + * Returns the value of the '<em><b>Name</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the value of the '<em>Name</em>' attribute. + * @see #setName(String) + * @see swt.most.statemachine.StatemachinePackage#getState_Name() + * @model id="true" required="true" + * @generated + */ + String getName(); + + /** + * Sets the value of the '{@link swt.most.statemachine.State#getName <em>Name</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>Name</em>' attribute. + * @see #getName() + * @generated + */ + void setName(String value); + +} // State diff --git a/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/StateMachine.java b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/StateMachine.java new file mode 100644 index 0000000000000000000000000000000000000000..13f1daac9c0e2a457ac623474190918abf8593e2 --- /dev/null +++ b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/StateMachine.java @@ -0,0 +1,110 @@ +/** + */ +package swt.most.statemachine; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EObject; + +/** + * <!-- begin-user-doc --> + * A representation of the model object '<em><b>State Machine</b></em>'. + * <!-- end-user-doc --> + * + * <p> + * The following features are supported: + * </p> + * <ul> + * <li>{@link swt.most.statemachine.StateMachine#getName <em>Name</em>}</li> + * <li>{@link swt.most.statemachine.StateMachine#getStates <em>States</em>}</li> + * <li>{@link swt.most.statemachine.StateMachine#getFinalstates <em>Finalstates</em>}</li> + * <li>{@link swt.most.statemachine.StateMachine#getInitialstate <em>Initialstate</em>}</li> + * <li>{@link swt.most.statemachine.StateMachine#getTransitions <em>Transitions</em>}</li> + * </ul> + * + * @see swt.most.statemachine.StatemachinePackage#getStateMachine() + * @model + * @generated + */ +public interface StateMachine extends EObject { + /** + * Returns the value of the '<em><b>Name</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the value of the '<em>Name</em>' attribute. + * @see #setName(String) + * @see swt.most.statemachine.StatemachinePackage#getStateMachine_Name() + * @model id="true" required="true" + * @generated + */ + String getName(); + + /** + * Sets the value of the '{@link swt.most.statemachine.StateMachine#getName <em>Name</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>Name</em>' attribute. + * @see #getName() + * @generated + */ + void setName(String value); + + /** + * Returns the value of the '<em><b>States</b></em>' containment reference list. + * The list contents are of type {@link swt.most.statemachine.NormalState}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the value of the '<em>States</em>' containment reference list. + * @see swt.most.statemachine.StatemachinePackage#getStateMachine_States() + * @model containment="true" + * @generated + */ + EList<NormalState> getStates(); + + /** + * Returns the value of the '<em><b>Finalstates</b></em>' containment reference list. + * The list contents are of type {@link swt.most.statemachine.FinalState}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the value of the '<em>Finalstates</em>' containment reference list. + * @see swt.most.statemachine.StatemachinePackage#getStateMachine_Finalstates() + * @model containment="true" + * @generated + */ + EList<FinalState> getFinalstates(); + + /** + * Returns the value of the '<em><b>Initialstate</b></em>' containment reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the value of the '<em>Initialstate</em>' containment reference. + * @see #setInitialstate(InitialState) + * @see swt.most.statemachine.StatemachinePackage#getStateMachine_Initialstate() + * @model containment="true" required="true" + * @generated + */ + InitialState getInitialstate(); + + /** + * Sets the value of the '{@link swt.most.statemachine.StateMachine#getInitialstate <em>Initialstate</em>}' containment reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>Initialstate</em>' containment reference. + * @see #getInitialstate() + * @generated + */ + void setInitialstate(InitialState value); + + /** + * Returns the value of the '<em><b>Transitions</b></em>' containment reference list. + * The list contents are of type {@link swt.most.statemachine.Transition}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the value of the '<em>Transitions</em>' containment reference list. + * @see swt.most.statemachine.StatemachinePackage#getStateMachine_Transitions() + * @model containment="true" + * @generated + */ + EList<Transition> getTransitions(); + +} // StateMachine diff --git a/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/StatemachineFactory.java b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/StatemachineFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..39d9f81adc5a15a91c23a91ac1762186fe0d0715 --- /dev/null +++ b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/StatemachineFactory.java @@ -0,0 +1,105 @@ +/** + */ +package swt.most.statemachine; + +import org.eclipse.emf.ecore.EFactory; + +/** + * <!-- begin-user-doc --> + * The <b>Factory</b> for the model. + * It provides a create method for each non-abstract class of the model. + * <!-- end-user-doc --> + * @see swt.most.statemachine.StatemachinePackage + * @generated + */ +public interface StatemachineFactory extends EFactory { + /** + * The singleton instance of the factory. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + StatemachineFactory eINSTANCE = swt.most.statemachine.impl.StatemachineFactoryImpl.init(); + + /** + * Returns a new object of class '<em>State Machine</em>'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return a new object of class '<em>State Machine</em>'. + * @generated + */ + StateMachine createStateMachine(); + + /** + * Returns a new object of class '<em>Transition</em>'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return a new object of class '<em>Transition</em>'. + * @generated + */ + Transition createTransition(); + + /** + * Returns a new object of class '<em>Trigger</em>'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return a new object of class '<em>Trigger</em>'. + * @generated + */ + Trigger createTrigger(); + + /** + * Returns a new object of class '<em>Guard</em>'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return a new object of class '<em>Guard</em>'. + * @generated + */ + Guard createGuard(); + + /** + * Returns a new object of class '<em>Action</em>'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return a new object of class '<em>Action</em>'. + * @generated + */ + Action createAction(); + + /** + * Returns a new object of class '<em>Initial State</em>'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return a new object of class '<em>Initial State</em>'. + * @generated + */ + InitialState createInitialState(); + + /** + * Returns a new object of class '<em>Final State</em>'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return a new object of class '<em>Final State</em>'. + * @generated + */ + FinalState createFinalState(); + + /** + * Returns a new object of class '<em>Normal State</em>'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return a new object of class '<em>Normal State</em>'. + * @generated + */ + NormalState createNormalState(); + + /** + * Returns the package supported by this factory. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the package supported by this factory. + * @generated + */ + StatemachinePackage getStatemachinePackage(); + +} //StatemachineFactory diff --git a/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/StatemachinePackage.java b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/StatemachinePackage.java new file mode 100644 index 0000000000000000000000000000000000000000..2741a66e384888621e78c5847f6835fbfe998397 --- /dev/null +++ b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/StatemachinePackage.java @@ -0,0 +1,1038 @@ +/** + */ +package swt.most.statemachine; + +import org.eclipse.emf.ecore.EAttribute; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.EReference; + +/** + * <!-- begin-user-doc --> + * The <b>Package</b> for the model. + * It contains accessors for the meta objects to represent + * <ul> + * <li>each class,</li> + * <li>each feature of each class,</li> + * <li>each operation of each class,</li> + * <li>each enum,</li> + * <li>and each data type</li> + * </ul> + * <!-- end-user-doc --> + * @see swt.most.statemachine.StatemachineFactory + * @model kind="package" + * @generated + */ +public interface StatemachinePackage extends EPackage { + /** + * The package name. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + String eNAME = "statemachine"; + + /** + * The package namespace URI. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + String eNS_URI = "http://www.swt.org/most/statemachine"; + + /** + * The package namespace name. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + String eNS_PREFIX = "statemachine"; + + /** + * The singleton instance of the package. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + StatemachinePackage eINSTANCE = swt.most.statemachine.impl.StatemachinePackageImpl.init(); + + /** + * The meta object id for the '{@link swt.most.statemachine.impl.StateMachineImpl <em>State Machine</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see swt.most.statemachine.impl.StateMachineImpl + * @see swt.most.statemachine.impl.StatemachinePackageImpl#getStateMachine() + * @generated + */ + int STATE_MACHINE = 0; + + /** + * The feature id for the '<em><b>Name</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int STATE_MACHINE__NAME = 0; + + /** + * The feature id for the '<em><b>States</b></em>' containment reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int STATE_MACHINE__STATES = 1; + + /** + * The feature id for the '<em><b>Finalstates</b></em>' containment reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int STATE_MACHINE__FINALSTATES = 2; + + /** + * The feature id for the '<em><b>Initialstate</b></em>' containment reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int STATE_MACHINE__INITIALSTATE = 3; + + /** + * The feature id for the '<em><b>Transitions</b></em>' containment reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int STATE_MACHINE__TRANSITIONS = 4; + + /** + * The number of structural features of the '<em>State Machine</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int STATE_MACHINE_FEATURE_COUNT = 5; + + /** + * The number of operations of the '<em>State Machine</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int STATE_MACHINE_OPERATION_COUNT = 0; + + /** + * The meta object id for the '{@link swt.most.statemachine.impl.StateImpl <em>State</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see swt.most.statemachine.impl.StateImpl + * @see swt.most.statemachine.impl.StatemachinePackageImpl#getState() + * @generated + */ + int STATE = 1; + + /** + * The feature id for the '<em><b>Name</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int STATE__NAME = 0; + + /** + * The number of structural features of the '<em>State</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int STATE_FEATURE_COUNT = 1; + + /** + * The number of operations of the '<em>State</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int STATE_OPERATION_COUNT = 0; + + /** + * The meta object id for the '{@link swt.most.statemachine.impl.TransitionImpl <em>Transition</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see swt.most.statemachine.impl.TransitionImpl + * @see swt.most.statemachine.impl.StatemachinePackageImpl#getTransition() + * @generated + */ + int TRANSITION = 2; + + /** + * The feature id for the '<em><b>From</b></em>' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int TRANSITION__FROM = 0; + + /** + * The feature id for the '<em><b>To</b></em>' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int TRANSITION__TO = 1; + + /** + * The feature id for the '<em><b>Trigger</b></em>' containment reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int TRANSITION__TRIGGER = 2; + + /** + * The feature id for the '<em><b>Guard</b></em>' containment reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int TRANSITION__GUARD = 3; + + /** + * The feature id for the '<em><b>Action</b></em>' containment reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int TRANSITION__ACTION = 4; + + /** + * The number of structural features of the '<em>Transition</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int TRANSITION_FEATURE_COUNT = 5; + + /** + * The number of operations of the '<em>Transition</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int TRANSITION_OPERATION_COUNT = 0; + + /** + * The meta object id for the '{@link swt.most.statemachine.impl.ExpressionImpl <em>Expression</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see swt.most.statemachine.impl.ExpressionImpl + * @see swt.most.statemachine.impl.StatemachinePackageImpl#getExpression() + * @generated + */ + int EXPRESSION = 6; + + /** + * The feature id for the '<em><b>Content</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EXPRESSION__CONTENT = 0; + + /** + * The number of structural features of the '<em>Expression</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EXPRESSION_FEATURE_COUNT = 1; + + /** + * The number of operations of the '<em>Expression</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EXPRESSION_OPERATION_COUNT = 0; + + /** + * The meta object id for the '{@link swt.most.statemachine.impl.TriggerImpl <em>Trigger</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see swt.most.statemachine.impl.TriggerImpl + * @see swt.most.statemachine.impl.StatemachinePackageImpl#getTrigger() + * @generated + */ + int TRIGGER = 3; + + /** + * The feature id for the '<em><b>Content</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int TRIGGER__CONTENT = EXPRESSION__CONTENT; + + /** + * The number of structural features of the '<em>Trigger</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int TRIGGER_FEATURE_COUNT = EXPRESSION_FEATURE_COUNT + 0; + + /** + * The number of operations of the '<em>Trigger</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int TRIGGER_OPERATION_COUNT = EXPRESSION_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link swt.most.statemachine.impl.GuardImpl <em>Guard</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see swt.most.statemachine.impl.GuardImpl + * @see swt.most.statemachine.impl.StatemachinePackageImpl#getGuard() + * @generated + */ + int GUARD = 4; + + /** + * The feature id for the '<em><b>Content</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int GUARD__CONTENT = EXPRESSION__CONTENT; + + /** + * The number of structural features of the '<em>Guard</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int GUARD_FEATURE_COUNT = EXPRESSION_FEATURE_COUNT + 0; + + /** + * The number of operations of the '<em>Guard</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int GUARD_OPERATION_COUNT = EXPRESSION_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link swt.most.statemachine.impl.ActionImpl <em>Action</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see swt.most.statemachine.impl.ActionImpl + * @see swt.most.statemachine.impl.StatemachinePackageImpl#getAction() + * @generated + */ + int ACTION = 5; + + /** + * The feature id for the '<em><b>Content</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int ACTION__CONTENT = EXPRESSION__CONTENT; + + /** + * The number of structural features of the '<em>Action</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int ACTION_FEATURE_COUNT = EXPRESSION_FEATURE_COUNT + 0; + + /** + * The number of operations of the '<em>Action</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int ACTION_OPERATION_COUNT = EXPRESSION_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link swt.most.statemachine.impl.InitialStateImpl <em>Initial State</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see swt.most.statemachine.impl.InitialStateImpl + * @see swt.most.statemachine.impl.StatemachinePackageImpl#getInitialState() + * @generated + */ + int INITIAL_STATE = 7; + + /** + * The feature id for the '<em><b>Name</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int INITIAL_STATE__NAME = STATE__NAME; + + /** + * The number of structural features of the '<em>Initial State</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int INITIAL_STATE_FEATURE_COUNT = STATE_FEATURE_COUNT + 0; + + /** + * The number of operations of the '<em>Initial State</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int INITIAL_STATE_OPERATION_COUNT = STATE_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link swt.most.statemachine.impl.FinalStateImpl <em>Final State</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see swt.most.statemachine.impl.FinalStateImpl + * @see swt.most.statemachine.impl.StatemachinePackageImpl#getFinalState() + * @generated + */ + int FINAL_STATE = 8; + + /** + * The feature id for the '<em><b>Name</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int FINAL_STATE__NAME = STATE__NAME; + + /** + * The number of structural features of the '<em>Final State</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int FINAL_STATE_FEATURE_COUNT = STATE_FEATURE_COUNT + 0; + + /** + * The number of operations of the '<em>Final State</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int FINAL_STATE_OPERATION_COUNT = STATE_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link swt.most.statemachine.impl.NormalStateImpl <em>Normal State</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see swt.most.statemachine.impl.NormalStateImpl + * @see swt.most.statemachine.impl.StatemachinePackageImpl#getNormalState() + * @generated + */ + int NORMAL_STATE = 9; + + /** + * The feature id for the '<em><b>Name</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int NORMAL_STATE__NAME = STATE__NAME; + + /** + * The feature id for the '<em><b>Do </b></em>' containment reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int NORMAL_STATE__DO_ = STATE_FEATURE_COUNT + 0; + + /** + * The feature id for the '<em><b>Exit </b></em>' containment reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int NORMAL_STATE__EXIT_ = STATE_FEATURE_COUNT + 1; + + /** + * The feature id for the '<em><b>Entry </b></em>' containment reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int NORMAL_STATE__ENTRY_ = STATE_FEATURE_COUNT + 2; + + /** + * The number of structural features of the '<em>Normal State</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int NORMAL_STATE_FEATURE_COUNT = STATE_FEATURE_COUNT + 3; + + /** + * The number of operations of the '<em>Normal State</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int NORMAL_STATE_OPERATION_COUNT = STATE_OPERATION_COUNT + 0; + + /** + * Returns the meta object for class '{@link swt.most.statemachine.StateMachine <em>State Machine</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for class '<em>State Machine</em>'. + * @see swt.most.statemachine.StateMachine + * @generated + */ + EClass getStateMachine(); + + /** + * Returns the meta object for the attribute '{@link swt.most.statemachine.StateMachine#getName <em>Name</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the attribute '<em>Name</em>'. + * @see swt.most.statemachine.StateMachine#getName() + * @see #getStateMachine() + * @generated + */ + EAttribute getStateMachine_Name(); + + /** + * Returns the meta object for the containment reference list '{@link swt.most.statemachine.StateMachine#getStates <em>States</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the containment reference list '<em>States</em>'. + * @see swt.most.statemachine.StateMachine#getStates() + * @see #getStateMachine() + * @generated + */ + EReference getStateMachine_States(); + + /** + * Returns the meta object for the containment reference list '{@link swt.most.statemachine.StateMachine#getFinalstates <em>Finalstates</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the containment reference list '<em>Finalstates</em>'. + * @see swt.most.statemachine.StateMachine#getFinalstates() + * @see #getStateMachine() + * @generated + */ + EReference getStateMachine_Finalstates(); + + /** + * Returns the meta object for the containment reference '{@link swt.most.statemachine.StateMachine#getInitialstate <em>Initialstate</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the containment reference '<em>Initialstate</em>'. + * @see swt.most.statemachine.StateMachine#getInitialstate() + * @see #getStateMachine() + * @generated + */ + EReference getStateMachine_Initialstate(); + + /** + * Returns the meta object for the containment reference list '{@link swt.most.statemachine.StateMachine#getTransitions <em>Transitions</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the containment reference list '<em>Transitions</em>'. + * @see swt.most.statemachine.StateMachine#getTransitions() + * @see #getStateMachine() + * @generated + */ + EReference getStateMachine_Transitions(); + + /** + * Returns the meta object for class '{@link swt.most.statemachine.State <em>State</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for class '<em>State</em>'. + * @see swt.most.statemachine.State + * @generated + */ + EClass getState(); + + /** + * Returns the meta object for the attribute '{@link swt.most.statemachine.State#getName <em>Name</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the attribute '<em>Name</em>'. + * @see swt.most.statemachine.State#getName() + * @see #getState() + * @generated + */ + EAttribute getState_Name(); + + /** + * Returns the meta object for class '{@link swt.most.statemachine.Transition <em>Transition</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for class '<em>Transition</em>'. + * @see swt.most.statemachine.Transition + * @generated + */ + EClass getTransition(); + + /** + * Returns the meta object for the reference '{@link swt.most.statemachine.Transition#getFrom <em>From</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the reference '<em>From</em>'. + * @see swt.most.statemachine.Transition#getFrom() + * @see #getTransition() + * @generated + */ + EReference getTransition_From(); + + /** + * Returns the meta object for the reference '{@link swt.most.statemachine.Transition#getTo <em>To</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the reference '<em>To</em>'. + * @see swt.most.statemachine.Transition#getTo() + * @see #getTransition() + * @generated + */ + EReference getTransition_To(); + + /** + * Returns the meta object for the containment reference '{@link swt.most.statemachine.Transition#getTrigger <em>Trigger</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the containment reference '<em>Trigger</em>'. + * @see swt.most.statemachine.Transition#getTrigger() + * @see #getTransition() + * @generated + */ + EReference getTransition_Trigger(); + + /** + * Returns the meta object for the containment reference '{@link swt.most.statemachine.Transition#getGuard <em>Guard</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the containment reference '<em>Guard</em>'. + * @see swt.most.statemachine.Transition#getGuard() + * @see #getTransition() + * @generated + */ + EReference getTransition_Guard(); + + /** + * Returns the meta object for the containment reference '{@link swt.most.statemachine.Transition#getAction <em>Action</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the containment reference '<em>Action</em>'. + * @see swt.most.statemachine.Transition#getAction() + * @see #getTransition() + * @generated + */ + EReference getTransition_Action(); + + /** + * Returns the meta object for class '{@link swt.most.statemachine.Trigger <em>Trigger</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for class '<em>Trigger</em>'. + * @see swt.most.statemachine.Trigger + * @generated + */ + EClass getTrigger(); + + /** + * Returns the meta object for class '{@link swt.most.statemachine.Guard <em>Guard</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for class '<em>Guard</em>'. + * @see swt.most.statemachine.Guard + * @generated + */ + EClass getGuard(); + + /** + * Returns the meta object for class '{@link swt.most.statemachine.Action <em>Action</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for class '<em>Action</em>'. + * @see swt.most.statemachine.Action + * @generated + */ + EClass getAction(); + + /** + * Returns the meta object for class '{@link swt.most.statemachine.Expression <em>Expression</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for class '<em>Expression</em>'. + * @see swt.most.statemachine.Expression + * @generated + */ + EClass getExpression(); + + /** + * Returns the meta object for the attribute '{@link swt.most.statemachine.Expression#getContent <em>Content</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the attribute '<em>Content</em>'. + * @see swt.most.statemachine.Expression#getContent() + * @see #getExpression() + * @generated + */ + EAttribute getExpression_Content(); + + /** + * Returns the meta object for class '{@link swt.most.statemachine.InitialState <em>Initial State</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for class '<em>Initial State</em>'. + * @see swt.most.statemachine.InitialState + * @generated + */ + EClass getInitialState(); + + /** + * Returns the meta object for class '{@link swt.most.statemachine.FinalState <em>Final State</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for class '<em>Final State</em>'. + * @see swt.most.statemachine.FinalState + * @generated + */ + EClass getFinalState(); + + /** + * Returns the meta object for class '{@link swt.most.statemachine.NormalState <em>Normal State</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for class '<em>Normal State</em>'. + * @see swt.most.statemachine.NormalState + * @generated + */ + EClass getNormalState(); + + /** + * Returns the meta object for the containment reference '{@link swt.most.statemachine.NormalState#getDo_ <em>Do </em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the containment reference '<em>Do </em>'. + * @see swt.most.statemachine.NormalState#getDo_() + * @see #getNormalState() + * @generated + */ + EReference getNormalState_Do_(); + + /** + * Returns the meta object for the containment reference '{@link swt.most.statemachine.NormalState#getExit_ <em>Exit </em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the containment reference '<em>Exit </em>'. + * @see swt.most.statemachine.NormalState#getExit_() + * @see #getNormalState() + * @generated + */ + EReference getNormalState_Exit_(); + + /** + * Returns the meta object for the containment reference '{@link swt.most.statemachine.NormalState#getEntry_ <em>Entry </em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the containment reference '<em>Entry </em>'. + * @see swt.most.statemachine.NormalState#getEntry_() + * @see #getNormalState() + * @generated + */ + EReference getNormalState_Entry_(); + + /** + * Returns the factory that creates the instances of the model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the factory that creates the instances of the model. + * @generated + */ + StatemachineFactory getStatemachineFactory(); + + /** + * <!-- begin-user-doc --> + * Defines literals for the meta objects that represent + * <ul> + * <li>each class,</li> + * <li>each feature of each class,</li> + * <li>each operation of each class,</li> + * <li>each enum,</li> + * <li>and each data type</li> + * </ul> + * <!-- end-user-doc --> + * @generated + */ + interface Literals { + /** + * The meta object literal for the '{@link swt.most.statemachine.impl.StateMachineImpl <em>State Machine</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see swt.most.statemachine.impl.StateMachineImpl + * @see swt.most.statemachine.impl.StatemachinePackageImpl#getStateMachine() + * @generated + */ + EClass STATE_MACHINE = eINSTANCE.getStateMachine(); + + /** + * The meta object literal for the '<em><b>Name</b></em>' attribute feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EAttribute STATE_MACHINE__NAME = eINSTANCE.getStateMachine_Name(); + + /** + * The meta object literal for the '<em><b>States</b></em>' containment reference list feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference STATE_MACHINE__STATES = eINSTANCE.getStateMachine_States(); + + /** + * The meta object literal for the '<em><b>Finalstates</b></em>' containment reference list feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference STATE_MACHINE__FINALSTATES = eINSTANCE.getStateMachine_Finalstates(); + + /** + * The meta object literal for the '<em><b>Initialstate</b></em>' containment reference feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference STATE_MACHINE__INITIALSTATE = eINSTANCE.getStateMachine_Initialstate(); + + /** + * The meta object literal for the '<em><b>Transitions</b></em>' containment reference list feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference STATE_MACHINE__TRANSITIONS = eINSTANCE.getStateMachine_Transitions(); + + /** + * The meta object literal for the '{@link swt.most.statemachine.impl.StateImpl <em>State</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see swt.most.statemachine.impl.StateImpl + * @see swt.most.statemachine.impl.StatemachinePackageImpl#getState() + * @generated + */ + EClass STATE = eINSTANCE.getState(); + + /** + * The meta object literal for the '<em><b>Name</b></em>' attribute feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EAttribute STATE__NAME = eINSTANCE.getState_Name(); + + /** + * The meta object literal for the '{@link swt.most.statemachine.impl.TransitionImpl <em>Transition</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see swt.most.statemachine.impl.TransitionImpl + * @see swt.most.statemachine.impl.StatemachinePackageImpl#getTransition() + * @generated + */ + EClass TRANSITION = eINSTANCE.getTransition(); + + /** + * The meta object literal for the '<em><b>From</b></em>' reference feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference TRANSITION__FROM = eINSTANCE.getTransition_From(); + + /** + * The meta object literal for the '<em><b>To</b></em>' reference feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference TRANSITION__TO = eINSTANCE.getTransition_To(); + + /** + * The meta object literal for the '<em><b>Trigger</b></em>' containment reference feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference TRANSITION__TRIGGER = eINSTANCE.getTransition_Trigger(); + + /** + * The meta object literal for the '<em><b>Guard</b></em>' containment reference feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference TRANSITION__GUARD = eINSTANCE.getTransition_Guard(); + + /** + * The meta object literal for the '<em><b>Action</b></em>' containment reference feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference TRANSITION__ACTION = eINSTANCE.getTransition_Action(); + + /** + * The meta object literal for the '{@link swt.most.statemachine.impl.TriggerImpl <em>Trigger</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see swt.most.statemachine.impl.TriggerImpl + * @see swt.most.statemachine.impl.StatemachinePackageImpl#getTrigger() + * @generated + */ + EClass TRIGGER = eINSTANCE.getTrigger(); + + /** + * The meta object literal for the '{@link swt.most.statemachine.impl.GuardImpl <em>Guard</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see swt.most.statemachine.impl.GuardImpl + * @see swt.most.statemachine.impl.StatemachinePackageImpl#getGuard() + * @generated + */ + EClass GUARD = eINSTANCE.getGuard(); + + /** + * The meta object literal for the '{@link swt.most.statemachine.impl.ActionImpl <em>Action</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see swt.most.statemachine.impl.ActionImpl + * @see swt.most.statemachine.impl.StatemachinePackageImpl#getAction() + * @generated + */ + EClass ACTION = eINSTANCE.getAction(); + + /** + * The meta object literal for the '{@link swt.most.statemachine.impl.ExpressionImpl <em>Expression</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see swt.most.statemachine.impl.ExpressionImpl + * @see swt.most.statemachine.impl.StatemachinePackageImpl#getExpression() + * @generated + */ + EClass EXPRESSION = eINSTANCE.getExpression(); + + /** + * The meta object literal for the '<em><b>Content</b></em>' attribute feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EAttribute EXPRESSION__CONTENT = eINSTANCE.getExpression_Content(); + + /** + * The meta object literal for the '{@link swt.most.statemachine.impl.InitialStateImpl <em>Initial State</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see swt.most.statemachine.impl.InitialStateImpl + * @see swt.most.statemachine.impl.StatemachinePackageImpl#getInitialState() + * @generated + */ + EClass INITIAL_STATE = eINSTANCE.getInitialState(); + + /** + * The meta object literal for the '{@link swt.most.statemachine.impl.FinalStateImpl <em>Final State</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see swt.most.statemachine.impl.FinalStateImpl + * @see swt.most.statemachine.impl.StatemachinePackageImpl#getFinalState() + * @generated + */ + EClass FINAL_STATE = eINSTANCE.getFinalState(); + + /** + * The meta object literal for the '{@link swt.most.statemachine.impl.NormalStateImpl <em>Normal State</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see swt.most.statemachine.impl.NormalStateImpl + * @see swt.most.statemachine.impl.StatemachinePackageImpl#getNormalState() + * @generated + */ + EClass NORMAL_STATE = eINSTANCE.getNormalState(); + + /** + * The meta object literal for the '<em><b>Do </b></em>' containment reference feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference NORMAL_STATE__DO_ = eINSTANCE.getNormalState_Do_(); + + /** + * The meta object literal for the '<em><b>Exit </b></em>' containment reference feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference NORMAL_STATE__EXIT_ = eINSTANCE.getNormalState_Exit_(); + + /** + * The meta object literal for the '<em><b>Entry </b></em>' containment reference feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference NORMAL_STATE__ENTRY_ = eINSTANCE.getNormalState_Entry_(); + + } + +} //StatemachinePackage diff --git a/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/Transition.java b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/Transition.java new file mode 100644 index 0000000000000000000000000000000000000000..d749bf51b4cb697af645d7faf680a04a3fb69f83 --- /dev/null +++ b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/Transition.java @@ -0,0 +1,138 @@ +/** + */ +package swt.most.statemachine; + +import org.eclipse.emf.ecore.EObject; + +/** + * <!-- begin-user-doc --> + * A representation of the model object '<em><b>Transition</b></em>'. + * <!-- end-user-doc --> + * + * <p> + * The following features are supported: + * </p> + * <ul> + * <li>{@link swt.most.statemachine.Transition#getFrom <em>From</em>}</li> + * <li>{@link swt.most.statemachine.Transition#getTo <em>To</em>}</li> + * <li>{@link swt.most.statemachine.Transition#getTrigger <em>Trigger</em>}</li> + * <li>{@link swt.most.statemachine.Transition#getGuard <em>Guard</em>}</li> + * <li>{@link swt.most.statemachine.Transition#getAction <em>Action</em>}</li> + * </ul> + * + * @see swt.most.statemachine.StatemachinePackage#getTransition() + * @model + * @generated + */ +public interface Transition extends EObject { + /** + * Returns the value of the '<em><b>From</b></em>' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the value of the '<em>From</em>' reference. + * @see #setFrom(State) + * @see swt.most.statemachine.StatemachinePackage#getTransition_From() + * @model required="true" + * @generated + */ + State getFrom(); + + /** + * Sets the value of the '{@link swt.most.statemachine.Transition#getFrom <em>From</em>}' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>From</em>' reference. + * @see #getFrom() + * @generated + */ + void setFrom(State value); + + /** + * Returns the value of the '<em><b>To</b></em>' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the value of the '<em>To</em>' reference. + * @see #setTo(State) + * @see swt.most.statemachine.StatemachinePackage#getTransition_To() + * @model required="true" + * @generated + */ + State getTo(); + + /** + * Sets the value of the '{@link swt.most.statemachine.Transition#getTo <em>To</em>}' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>To</em>' reference. + * @see #getTo() + * @generated + */ + void setTo(State value); + + /** + * Returns the value of the '<em><b>Trigger</b></em>' containment reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the value of the '<em>Trigger</em>' containment reference. + * @see #setTrigger(Trigger) + * @see swt.most.statemachine.StatemachinePackage#getTransition_Trigger() + * @model containment="true" + * @generated + */ + Trigger getTrigger(); + + /** + * Sets the value of the '{@link swt.most.statemachine.Transition#getTrigger <em>Trigger</em>}' containment reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>Trigger</em>' containment reference. + * @see #getTrigger() + * @generated + */ + void setTrigger(Trigger value); + + /** + * Returns the value of the '<em><b>Guard</b></em>' containment reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the value of the '<em>Guard</em>' containment reference. + * @see #setGuard(Guard) + * @see swt.most.statemachine.StatemachinePackage#getTransition_Guard() + * @model containment="true" + * @generated + */ + Guard getGuard(); + + /** + * Sets the value of the '{@link swt.most.statemachine.Transition#getGuard <em>Guard</em>}' containment reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>Guard</em>' containment reference. + * @see #getGuard() + * @generated + */ + void setGuard(Guard value); + + /** + * Returns the value of the '<em><b>Action</b></em>' containment reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the value of the '<em>Action</em>' containment reference. + * @see #setAction(Action) + * @see swt.most.statemachine.StatemachinePackage#getTransition_Action() + * @model containment="true" + * @generated + */ + Action getAction(); + + /** + * Sets the value of the '{@link swt.most.statemachine.Transition#getAction <em>Action</em>}' containment reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>Action</em>' containment reference. + * @see #getAction() + * @generated + */ + void setAction(Action value); + +} // Transition diff --git a/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/Trigger.java b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/Trigger.java new file mode 100644 index 0000000000000000000000000000000000000000..1ef1eaa97d349bd163f17a34c6d961cf8356bd35 --- /dev/null +++ b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/Trigger.java @@ -0,0 +1,16 @@ +/** + */ +package swt.most.statemachine; + +/** + * <!-- begin-user-doc --> + * A representation of the model object '<em><b>Trigger</b></em>'. + * <!-- end-user-doc --> + * + * + * @see swt.most.statemachine.StatemachinePackage#getTrigger() + * @model + * @generated + */ +public interface Trigger extends Expression { +} // Trigger diff --git a/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/impl/ActionImpl.java b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/impl/ActionImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..33a72fce796462459f2b1d74361cd2b8a74715c8 --- /dev/null +++ b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/impl/ActionImpl.java @@ -0,0 +1,37 @@ +/** + */ +package swt.most.statemachine.impl; + +import org.eclipse.emf.ecore.EClass; + +import swt.most.statemachine.Action; +import swt.most.statemachine.StatemachinePackage; + +/** + * <!-- begin-user-doc --> + * An implementation of the model object '<em><b>Action</b></em>'. + * <!-- end-user-doc --> + * + * @generated + */ +public class ActionImpl extends ExpressionImpl implements Action { + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ActionImpl() { + super(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EClass eStaticClass() { + return StatemachinePackage.Literals.ACTION; + } + +} //ActionImpl diff --git a/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/impl/ExpressionImpl.java b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/impl/ExpressionImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..57e6bda8aab0883c1649e7164fa1fc74cbb72b99 --- /dev/null +++ b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/impl/ExpressionImpl.java @@ -0,0 +1,165 @@ +/** + */ +package swt.most.statemachine.impl; + +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.ecore.EClass; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; +import org.eclipse.emf.ecore.impl.MinimalEObjectImpl; + +import swt.most.statemachine.Expression; +import swt.most.statemachine.StatemachinePackage; + +/** + * <!-- begin-user-doc --> + * An implementation of the model object '<em><b>Expression</b></em>'. + * <!-- end-user-doc --> + * <p> + * The following features are implemented: + * </p> + * <ul> + * <li>{@link swt.most.statemachine.impl.ExpressionImpl#getContent <em>Content</em>}</li> + * </ul> + * + * @generated + */ +public abstract class ExpressionImpl extends MinimalEObjectImpl.Container implements Expression { + /** + * The default value of the '{@link #getContent() <em>Content</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getContent() + * @generated + * @ordered + */ + protected static final String CONTENT_EDEFAULT = null; + + /** + * The cached value of the '{@link #getContent() <em>Content</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getContent() + * @generated + * @ordered + */ + protected String content = CONTENT_EDEFAULT; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ExpressionImpl() { + super(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EClass eStaticClass() { + return StatemachinePackage.Literals.EXPRESSION; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getContent() { + return content; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setContent(String newContent) { + String oldContent = content; + content = newContent; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, StatemachinePackage.EXPRESSION__CONTENT, oldContent, + content)); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case StatemachinePackage.EXPRESSION__CONTENT: + return getContent(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case StatemachinePackage.EXPRESSION__CONTENT: + setContent((String) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case StatemachinePackage.EXPRESSION__CONTENT: + setContent(CONTENT_EDEFAULT); + return; + } + super.eUnset(featureID); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case StatemachinePackage.EXPRESSION__CONTENT: + return CONTENT_EDEFAULT == null ? content != null : !CONTENT_EDEFAULT.equals(content); + } + return super.eIsSet(featureID); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String toString() { + if (eIsProxy()) + return super.toString(); + + StringBuilder result = new StringBuilder(super.toString()); + result.append(" (content: "); + result.append(content); + result.append(')'); + return result.toString(); + } + +} //ExpressionImpl diff --git a/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/impl/FinalStateImpl.java b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/impl/FinalStateImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..0c06cf37e3515f2501cf854f420d00d35a3e4db7 --- /dev/null +++ b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/impl/FinalStateImpl.java @@ -0,0 +1,37 @@ +/** + */ +package swt.most.statemachine.impl; + +import org.eclipse.emf.ecore.EClass; + +import swt.most.statemachine.FinalState; +import swt.most.statemachine.StatemachinePackage; + +/** + * <!-- begin-user-doc --> + * An implementation of the model object '<em><b>Final State</b></em>'. + * <!-- end-user-doc --> + * + * @generated + */ +public class FinalStateImpl extends StateImpl implements FinalState { + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected FinalStateImpl() { + super(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EClass eStaticClass() { + return StatemachinePackage.Literals.FINAL_STATE; + } + +} //FinalStateImpl diff --git a/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/impl/GuardImpl.java b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/impl/GuardImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..08665fdcfbfb144ea7c26a89faaae69ee705df36 --- /dev/null +++ b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/impl/GuardImpl.java @@ -0,0 +1,37 @@ +/** + */ +package swt.most.statemachine.impl; + +import org.eclipse.emf.ecore.EClass; + +import swt.most.statemachine.Guard; +import swt.most.statemachine.StatemachinePackage; + +/** + * <!-- begin-user-doc --> + * An implementation of the model object '<em><b>Guard</b></em>'. + * <!-- end-user-doc --> + * + * @generated + */ +public class GuardImpl extends ExpressionImpl implements Guard { + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected GuardImpl() { + super(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EClass eStaticClass() { + return StatemachinePackage.Literals.GUARD; + } + +} //GuardImpl diff --git a/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/impl/InitialStateImpl.java b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/impl/InitialStateImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..6cab99e70291abf6480b7acd9e3b42718b904488 --- /dev/null +++ b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/impl/InitialStateImpl.java @@ -0,0 +1,37 @@ +/** + */ +package swt.most.statemachine.impl; + +import org.eclipse.emf.ecore.EClass; + +import swt.most.statemachine.InitialState; +import swt.most.statemachine.StatemachinePackage; + +/** + * <!-- begin-user-doc --> + * An implementation of the model object '<em><b>Initial State</b></em>'. + * <!-- end-user-doc --> + * + * @generated + */ +public class InitialStateImpl extends StateImpl implements InitialState { + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected InitialStateImpl() { + super(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EClass eStaticClass() { + return StatemachinePackage.Literals.INITIAL_STATE; + } + +} //InitialStateImpl diff --git a/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/impl/NormalStateImpl.java b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/impl/NormalStateImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..d8f676aa6893825e36a5177562eb0d1b097d8959 --- /dev/null +++ b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/impl/NormalStateImpl.java @@ -0,0 +1,328 @@ +/** + */ +package swt.most.statemachine.impl; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; + +import swt.most.statemachine.Action; +import swt.most.statemachine.NormalState; +import swt.most.statemachine.StatemachinePackage; + +/** + * <!-- begin-user-doc --> + * An implementation of the model object '<em><b>Normal State</b></em>'. + * <!-- end-user-doc --> + * <p> + * The following features are implemented: + * </p> + * <ul> + * <li>{@link swt.most.statemachine.impl.NormalStateImpl#getDo_ <em>Do </em>}</li> + * <li>{@link swt.most.statemachine.impl.NormalStateImpl#getExit_ <em>Exit </em>}</li> + * <li>{@link swt.most.statemachine.impl.NormalStateImpl#getEntry_ <em>Entry </em>}</li> + * </ul> + * + * @generated + */ +public class NormalStateImpl extends StateImpl implements NormalState { + /** + * The cached value of the '{@link #getDo_() <em>Do </em>}' containment reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getDo_() + * @generated + * @ordered + */ + protected Action do_; + + /** + * The cached value of the '{@link #getExit_() <em>Exit </em>}' containment reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getExit_() + * @generated + * @ordered + */ + protected Action exit_; + + /** + * The cached value of the '{@link #getEntry_() <em>Entry </em>}' containment reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getEntry_() + * @generated + * @ordered + */ + protected Action entry_; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected NormalStateImpl() { + super(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EClass eStaticClass() { + return StatemachinePackage.Literals.NORMAL_STATE; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Action getDo_() { + return do_; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public NotificationChain basicSetDo_(Action newDo_, NotificationChain msgs) { + Action oldDo_ = do_; + do_ = newDo_; + if (eNotificationRequired()) { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, + StatemachinePackage.NORMAL_STATE__DO_, oldDo_, newDo_); + if (msgs == null) + msgs = notification; + else + msgs.add(notification); + } + return msgs; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setDo_(Action newDo_) { + if (newDo_ != do_) { + NotificationChain msgs = null; + if (do_ != null) + msgs = ((InternalEObject) do_).eInverseRemove(this, + EOPPOSITE_FEATURE_BASE - StatemachinePackage.NORMAL_STATE__DO_, null, msgs); + if (newDo_ != null) + msgs = ((InternalEObject) newDo_).eInverseAdd(this, + EOPPOSITE_FEATURE_BASE - StatemachinePackage.NORMAL_STATE__DO_, null, msgs); + msgs = basicSetDo_(newDo_, msgs); + if (msgs != null) + msgs.dispatch(); + } else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, StatemachinePackage.NORMAL_STATE__DO_, newDo_, + newDo_)); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Action getExit_() { + return exit_; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public NotificationChain basicSetExit_(Action newExit_, NotificationChain msgs) { + Action oldExit_ = exit_; + exit_ = newExit_; + if (eNotificationRequired()) { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, + StatemachinePackage.NORMAL_STATE__EXIT_, oldExit_, newExit_); + if (msgs == null) + msgs = notification; + else + msgs.add(notification); + } + return msgs; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setExit_(Action newExit_) { + if (newExit_ != exit_) { + NotificationChain msgs = null; + if (exit_ != null) + msgs = ((InternalEObject) exit_).eInverseRemove(this, + EOPPOSITE_FEATURE_BASE - StatemachinePackage.NORMAL_STATE__EXIT_, null, msgs); + if (newExit_ != null) + msgs = ((InternalEObject) newExit_).eInverseAdd(this, + EOPPOSITE_FEATURE_BASE - StatemachinePackage.NORMAL_STATE__EXIT_, null, msgs); + msgs = basicSetExit_(newExit_, msgs); + if (msgs != null) + msgs.dispatch(); + } else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, StatemachinePackage.NORMAL_STATE__EXIT_, newExit_, + newExit_)); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Action getEntry_() { + return entry_; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public NotificationChain basicSetEntry_(Action newEntry_, NotificationChain msgs) { + Action oldEntry_ = entry_; + entry_ = newEntry_; + if (eNotificationRequired()) { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, + StatemachinePackage.NORMAL_STATE__ENTRY_, oldEntry_, newEntry_); + if (msgs == null) + msgs = notification; + else + msgs.add(notification); + } + return msgs; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setEntry_(Action newEntry_) { + if (newEntry_ != entry_) { + NotificationChain msgs = null; + if (entry_ != null) + msgs = ((InternalEObject) entry_).eInverseRemove(this, + EOPPOSITE_FEATURE_BASE - StatemachinePackage.NORMAL_STATE__ENTRY_, null, msgs); + if (newEntry_ != null) + msgs = ((InternalEObject) newEntry_).eInverseAdd(this, + EOPPOSITE_FEATURE_BASE - StatemachinePackage.NORMAL_STATE__ENTRY_, null, msgs); + msgs = basicSetEntry_(newEntry_, msgs); + if (msgs != null) + msgs.dispatch(); + } else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, StatemachinePackage.NORMAL_STATE__ENTRY_, newEntry_, + newEntry_)); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case StatemachinePackage.NORMAL_STATE__DO_: + return basicSetDo_(null, msgs); + case StatemachinePackage.NORMAL_STATE__EXIT_: + return basicSetExit_(null, msgs); + case StatemachinePackage.NORMAL_STATE__ENTRY_: + return basicSetEntry_(null, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case StatemachinePackage.NORMAL_STATE__DO_: + return getDo_(); + case StatemachinePackage.NORMAL_STATE__EXIT_: + return getExit_(); + case StatemachinePackage.NORMAL_STATE__ENTRY_: + return getEntry_(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case StatemachinePackage.NORMAL_STATE__DO_: + setDo_((Action) newValue); + return; + case StatemachinePackage.NORMAL_STATE__EXIT_: + setExit_((Action) newValue); + return; + case StatemachinePackage.NORMAL_STATE__ENTRY_: + setEntry_((Action) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case StatemachinePackage.NORMAL_STATE__DO_: + setDo_((Action) null); + return; + case StatemachinePackage.NORMAL_STATE__EXIT_: + setExit_((Action) null); + return; + case StatemachinePackage.NORMAL_STATE__ENTRY_: + setEntry_((Action) null); + return; + } + super.eUnset(featureID); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case StatemachinePackage.NORMAL_STATE__DO_: + return do_ != null; + case StatemachinePackage.NORMAL_STATE__EXIT_: + return exit_ != null; + case StatemachinePackage.NORMAL_STATE__ENTRY_: + return entry_ != null; + } + return super.eIsSet(featureID); + } + +} //NormalStateImpl diff --git a/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/impl/StateImpl.java b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/impl/StateImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..360d1b9979863d26a80eb0b9569491c50640c1ea --- /dev/null +++ b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/impl/StateImpl.java @@ -0,0 +1,164 @@ +/** + */ +package swt.most.statemachine.impl; + +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.ecore.EClass; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; +import org.eclipse.emf.ecore.impl.MinimalEObjectImpl; + +import swt.most.statemachine.State; +import swt.most.statemachine.StatemachinePackage; + +/** + * <!-- begin-user-doc --> + * An implementation of the model object '<em><b>State</b></em>'. + * <!-- end-user-doc --> + * <p> + * The following features are implemented: + * </p> + * <ul> + * <li>{@link swt.most.statemachine.impl.StateImpl#getName <em>Name</em>}</li> + * </ul> + * + * @generated + */ +public abstract class StateImpl extends MinimalEObjectImpl.Container implements State { + /** + * The default value of the '{@link #getName() <em>Name</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getName() + * @generated + * @ordered + */ + protected static final String NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getName() <em>Name</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getName() + * @generated + * @ordered + */ + protected String name = NAME_EDEFAULT; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected StateImpl() { + super(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EClass eStaticClass() { + return StatemachinePackage.Literals.STATE; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getName() { + return name; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setName(String newName) { + String oldName = name; + name = newName; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, StatemachinePackage.STATE__NAME, oldName, name)); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case StatemachinePackage.STATE__NAME: + return getName(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case StatemachinePackage.STATE__NAME: + setName((String) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case StatemachinePackage.STATE__NAME: + setName(NAME_EDEFAULT); + return; + } + super.eUnset(featureID); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case StatemachinePackage.STATE__NAME: + return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name); + } + return super.eIsSet(featureID); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String toString() { + if (eIsProxy()) + return super.toString(); + + StringBuilder result = new StringBuilder(super.toString()); + result.append(" (name: "); + result.append(name); + result.append(')'); + return result.toString(); + } + +} //StateImpl diff --git a/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/impl/StateMachineImpl.java b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/impl/StateMachineImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..be0b08ad5fd026dab68e3cca54318194d78c1982 --- /dev/null +++ b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/impl/StateMachineImpl.java @@ -0,0 +1,375 @@ +/** + */ +package swt.most.statemachine.impl; + +import java.util.Collection; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; +import org.eclipse.emf.ecore.impl.MinimalEObjectImpl; + +import org.eclipse.emf.ecore.util.EObjectContainmentEList; +import org.eclipse.emf.ecore.util.InternalEList; + +import swt.most.statemachine.FinalState; +import swt.most.statemachine.InitialState; +import swt.most.statemachine.NormalState; +import swt.most.statemachine.StateMachine; +import swt.most.statemachine.StatemachinePackage; +import swt.most.statemachine.Transition; + +/** + * <!-- begin-user-doc --> + * An implementation of the model object '<em><b>State Machine</b></em>'. + * <!-- end-user-doc --> + * <p> + * The following features are implemented: + * </p> + * <ul> + * <li>{@link swt.most.statemachine.impl.StateMachineImpl#getName <em>Name</em>}</li> + * <li>{@link swt.most.statemachine.impl.StateMachineImpl#getStates <em>States</em>}</li> + * <li>{@link swt.most.statemachine.impl.StateMachineImpl#getFinalstates <em>Finalstates</em>}</li> + * <li>{@link swt.most.statemachine.impl.StateMachineImpl#getInitialstate <em>Initialstate</em>}</li> + * <li>{@link swt.most.statemachine.impl.StateMachineImpl#getTransitions <em>Transitions</em>}</li> + * </ul> + * + * @generated + */ +public class StateMachineImpl extends MinimalEObjectImpl.Container implements StateMachine { + /** + * The default value of the '{@link #getName() <em>Name</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getName() + * @generated + * @ordered + */ + protected static final String NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getName() <em>Name</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getName() + * @generated + * @ordered + */ + protected String name = NAME_EDEFAULT; + + /** + * The cached value of the '{@link #getStates() <em>States</em>}' containment reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getStates() + * @generated + * @ordered + */ + protected EList<NormalState> states; + + /** + * The cached value of the '{@link #getFinalstates() <em>Finalstates</em>}' containment reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getFinalstates() + * @generated + * @ordered + */ + protected EList<FinalState> finalstates; + + /** + * The cached value of the '{@link #getInitialstate() <em>Initialstate</em>}' containment reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getInitialstate() + * @generated + * @ordered + */ + protected InitialState initialstate; + + /** + * The cached value of the '{@link #getTransitions() <em>Transitions</em>}' containment reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getTransitions() + * @generated + * @ordered + */ + protected EList<Transition> transitions; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected StateMachineImpl() { + super(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EClass eStaticClass() { + return StatemachinePackage.Literals.STATE_MACHINE; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getName() { + return name; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setName(String newName) { + String oldName = name; + name = newName; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, StatemachinePackage.STATE_MACHINE__NAME, oldName, + name)); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EList<NormalState> getStates() { + if (states == null) { + states = new EObjectContainmentEList<NormalState>(NormalState.class, this, + StatemachinePackage.STATE_MACHINE__STATES); + } + return states; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EList<FinalState> getFinalstates() { + if (finalstates == null) { + finalstates = new EObjectContainmentEList<FinalState>(FinalState.class, this, + StatemachinePackage.STATE_MACHINE__FINALSTATES); + } + return finalstates; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public InitialState getInitialstate() { + return initialstate; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public NotificationChain basicSetInitialstate(InitialState newInitialstate, NotificationChain msgs) { + InitialState oldInitialstate = initialstate; + initialstate = newInitialstate; + if (eNotificationRequired()) { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, + StatemachinePackage.STATE_MACHINE__INITIALSTATE, oldInitialstate, newInitialstate); + if (msgs == null) + msgs = notification; + else + msgs.add(notification); + } + return msgs; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setInitialstate(InitialState newInitialstate) { + if (newInitialstate != initialstate) { + NotificationChain msgs = null; + if (initialstate != null) + msgs = ((InternalEObject) initialstate).eInverseRemove(this, + EOPPOSITE_FEATURE_BASE - StatemachinePackage.STATE_MACHINE__INITIALSTATE, null, msgs); + if (newInitialstate != null) + msgs = ((InternalEObject) newInitialstate).eInverseAdd(this, + EOPPOSITE_FEATURE_BASE - StatemachinePackage.STATE_MACHINE__INITIALSTATE, null, msgs); + msgs = basicSetInitialstate(newInitialstate, msgs); + if (msgs != null) + msgs.dispatch(); + } else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, StatemachinePackage.STATE_MACHINE__INITIALSTATE, + newInitialstate, newInitialstate)); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EList<Transition> getTransitions() { + if (transitions == null) { + transitions = new EObjectContainmentEList<Transition>(Transition.class, this, + StatemachinePackage.STATE_MACHINE__TRANSITIONS); + } + return transitions; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case StatemachinePackage.STATE_MACHINE__STATES: + return ((InternalEList<?>) getStates()).basicRemove(otherEnd, msgs); + case StatemachinePackage.STATE_MACHINE__FINALSTATES: + return ((InternalEList<?>) getFinalstates()).basicRemove(otherEnd, msgs); + case StatemachinePackage.STATE_MACHINE__INITIALSTATE: + return basicSetInitialstate(null, msgs); + case StatemachinePackage.STATE_MACHINE__TRANSITIONS: + return ((InternalEList<?>) getTransitions()).basicRemove(otherEnd, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case StatemachinePackage.STATE_MACHINE__NAME: + return getName(); + case StatemachinePackage.STATE_MACHINE__STATES: + return getStates(); + case StatemachinePackage.STATE_MACHINE__FINALSTATES: + return getFinalstates(); + case StatemachinePackage.STATE_MACHINE__INITIALSTATE: + return getInitialstate(); + case StatemachinePackage.STATE_MACHINE__TRANSITIONS: + return getTransitions(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @SuppressWarnings("unchecked") + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case StatemachinePackage.STATE_MACHINE__NAME: + setName((String) newValue); + return; + case StatemachinePackage.STATE_MACHINE__STATES: + getStates().clear(); + getStates().addAll((Collection<? extends NormalState>) newValue); + return; + case StatemachinePackage.STATE_MACHINE__FINALSTATES: + getFinalstates().clear(); + getFinalstates().addAll((Collection<? extends FinalState>) newValue); + return; + case StatemachinePackage.STATE_MACHINE__INITIALSTATE: + setInitialstate((InitialState) newValue); + return; + case StatemachinePackage.STATE_MACHINE__TRANSITIONS: + getTransitions().clear(); + getTransitions().addAll((Collection<? extends Transition>) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case StatemachinePackage.STATE_MACHINE__NAME: + setName(NAME_EDEFAULT); + return; + case StatemachinePackage.STATE_MACHINE__STATES: + getStates().clear(); + return; + case StatemachinePackage.STATE_MACHINE__FINALSTATES: + getFinalstates().clear(); + return; + case StatemachinePackage.STATE_MACHINE__INITIALSTATE: + setInitialstate((InitialState) null); + return; + case StatemachinePackage.STATE_MACHINE__TRANSITIONS: + getTransitions().clear(); + return; + } + super.eUnset(featureID); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case StatemachinePackage.STATE_MACHINE__NAME: + return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name); + case StatemachinePackage.STATE_MACHINE__STATES: + return states != null && !states.isEmpty(); + case StatemachinePackage.STATE_MACHINE__FINALSTATES: + return finalstates != null && !finalstates.isEmpty(); + case StatemachinePackage.STATE_MACHINE__INITIALSTATE: + return initialstate != null; + case StatemachinePackage.STATE_MACHINE__TRANSITIONS: + return transitions != null && !transitions.isEmpty(); + } + return super.eIsSet(featureID); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String toString() { + if (eIsProxy()) + return super.toString(); + + StringBuilder result = new StringBuilder(super.toString()); + result.append(" (name: "); + result.append(name); + result.append(')'); + return result.toString(); + } + +} //StateMachineImpl diff --git a/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/impl/StatemachineFactoryImpl.java b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/impl/StatemachineFactoryImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..881f4ddf9d7f9a156e8c84bc9715f96dea4cc015 --- /dev/null +++ b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/impl/StatemachineFactoryImpl.java @@ -0,0 +1,180 @@ +/** + */ +package swt.most.statemachine.impl; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EPackage; + +import org.eclipse.emf.ecore.impl.EFactoryImpl; + +import org.eclipse.emf.ecore.plugin.EcorePlugin; + +import swt.most.statemachine.*; + +/** + * <!-- begin-user-doc --> + * An implementation of the model <b>Factory</b>. + * <!-- end-user-doc --> + * @generated + */ +public class StatemachineFactoryImpl extends EFactoryImpl implements StatemachineFactory { + /** + * Creates the default factory implementation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static StatemachineFactory init() { + try { + StatemachineFactory theStatemachineFactory = (StatemachineFactory) EPackage.Registry.INSTANCE + .getEFactory(StatemachinePackage.eNS_URI); + if (theStatemachineFactory != null) { + return theStatemachineFactory; + } + } catch (Exception exception) { + EcorePlugin.INSTANCE.log(exception); + } + return new StatemachineFactoryImpl(); + } + + /** + * Creates an instance of the factory. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public StatemachineFactoryImpl() { + super(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public EObject create(EClass eClass) { + switch (eClass.getClassifierID()) { + case StatemachinePackage.STATE_MACHINE: + return createStateMachine(); + case StatemachinePackage.TRANSITION: + return createTransition(); + case StatemachinePackage.TRIGGER: + return createTrigger(); + case StatemachinePackage.GUARD: + return createGuard(); + case StatemachinePackage.ACTION: + return createAction(); + case StatemachinePackage.INITIAL_STATE: + return createInitialState(); + case StatemachinePackage.FINAL_STATE: + return createFinalState(); + case StatemachinePackage.NORMAL_STATE: + return createNormalState(); + default: + throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public StateMachine createStateMachine() { + StateMachineImpl stateMachine = new StateMachineImpl(); + return stateMachine; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Transition createTransition() { + TransitionImpl transition = new TransitionImpl(); + return transition; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Trigger createTrigger() { + TriggerImpl trigger = new TriggerImpl(); + return trigger; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Guard createGuard() { + GuardImpl guard = new GuardImpl(); + return guard; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Action createAction() { + ActionImpl action = new ActionImpl(); + return action; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public InitialState createInitialState() { + InitialStateImpl initialState = new InitialStateImpl(); + return initialState; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public FinalState createFinalState() { + FinalStateImpl finalState = new FinalStateImpl(); + return finalState; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public NormalState createNormalState() { + NormalStateImpl normalState = new NormalStateImpl(); + return normalState; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public StatemachinePackage getStatemachinePackage() { + return (StatemachinePackage) getEPackage(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @deprecated + * @generated + */ + @Deprecated + public static StatemachinePackage getPackage() { + return StatemachinePackage.eINSTANCE; + } + +} //StatemachineFactoryImpl diff --git a/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/impl/StatemachinePackageImpl.java b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/impl/StatemachinePackageImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..d39798863836a824db6440bd46324af8fd8a3144 --- /dev/null +++ b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/impl/StatemachinePackageImpl.java @@ -0,0 +1,565 @@ +/** + */ +package swt.most.statemachine.impl; + +import org.eclipse.emf.ecore.EAttribute; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.EReference; + +import org.eclipse.emf.ecore.impl.EPackageImpl; + +import swt.most.statemachine.Action; +import swt.most.statemachine.Expression; +import swt.most.statemachine.FinalState; +import swt.most.statemachine.Guard; +import swt.most.statemachine.InitialState; +import swt.most.statemachine.NormalState; +import swt.most.statemachine.State; +import swt.most.statemachine.StateMachine; +import swt.most.statemachine.StatemachineFactory; +import swt.most.statemachine.StatemachinePackage; +import swt.most.statemachine.Transition; +import swt.most.statemachine.Trigger; + +/** + * <!-- begin-user-doc --> + * An implementation of the model <b>Package</b>. + * <!-- end-user-doc --> + * @generated + */ +public class StatemachinePackageImpl extends EPackageImpl implements StatemachinePackage { + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private EClass stateMachineEClass = null; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private EClass stateEClass = null; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private EClass transitionEClass = null; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private EClass triggerEClass = null; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private EClass guardEClass = null; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private EClass actionEClass = null; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private EClass expressionEClass = null; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private EClass initialStateEClass = null; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private EClass finalStateEClass = null; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private EClass normalStateEClass = null; + + /** + * Creates an instance of the model <b>Package</b>, registered with + * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package + * package URI value. + * <p>Note: the correct way to create the package is via the static + * factory method {@link #init init()}, which also performs + * initialization of the package, or returns the registered package, + * if one already exists. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see org.eclipse.emf.ecore.EPackage.Registry + * @see swt.most.statemachine.StatemachinePackage#eNS_URI + * @see #init() + * @generated + */ + private StatemachinePackageImpl() { + super(eNS_URI, StatemachineFactory.eINSTANCE); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private static boolean isInited = false; + + /** + * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends. + * + * <p>This method is used to initialize {@link StatemachinePackage#eINSTANCE} when that field is accessed. + * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #eNS_URI + * @see #createPackageContents() + * @see #initializePackageContents() + * @generated + */ + public static StatemachinePackage init() { + if (isInited) + return (StatemachinePackage) EPackage.Registry.INSTANCE.getEPackage(StatemachinePackage.eNS_URI); + + // Obtain or create and register package + Object registeredStatemachinePackage = EPackage.Registry.INSTANCE.get(eNS_URI); + StatemachinePackageImpl theStatemachinePackage = registeredStatemachinePackage instanceof StatemachinePackageImpl + ? (StatemachinePackageImpl) registeredStatemachinePackage + : new StatemachinePackageImpl(); + + isInited = true; + + // Create package meta-data objects + theStatemachinePackage.createPackageContents(); + + // Initialize created meta-data + theStatemachinePackage.initializePackageContents(); + + // Mark meta-data to indicate it can't be changed + theStatemachinePackage.freeze(); + + // Update the registry and return the package + EPackage.Registry.INSTANCE.put(StatemachinePackage.eNS_URI, theStatemachinePackage); + return theStatemachinePackage; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EClass getStateMachine() { + return stateMachineEClass; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EAttribute getStateMachine_Name() { + return (EAttribute) stateMachineEClass.getEStructuralFeatures().get(0); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getStateMachine_States() { + return (EReference) stateMachineEClass.getEStructuralFeatures().get(1); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getStateMachine_Finalstates() { + return (EReference) stateMachineEClass.getEStructuralFeatures().get(2); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getStateMachine_Initialstate() { + return (EReference) stateMachineEClass.getEStructuralFeatures().get(3); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getStateMachine_Transitions() { + return (EReference) stateMachineEClass.getEStructuralFeatures().get(4); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EClass getState() { + return stateEClass; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EAttribute getState_Name() { + return (EAttribute) stateEClass.getEStructuralFeatures().get(0); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EClass getTransition() { + return transitionEClass; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getTransition_From() { + return (EReference) transitionEClass.getEStructuralFeatures().get(0); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getTransition_To() { + return (EReference) transitionEClass.getEStructuralFeatures().get(1); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getTransition_Trigger() { + return (EReference) transitionEClass.getEStructuralFeatures().get(2); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getTransition_Guard() { + return (EReference) transitionEClass.getEStructuralFeatures().get(3); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getTransition_Action() { + return (EReference) transitionEClass.getEStructuralFeatures().get(4); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EClass getTrigger() { + return triggerEClass; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EClass getGuard() { + return guardEClass; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EClass getAction() { + return actionEClass; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EClass getExpression() { + return expressionEClass; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EAttribute getExpression_Content() { + return (EAttribute) expressionEClass.getEStructuralFeatures().get(0); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EClass getInitialState() { + return initialStateEClass; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EClass getFinalState() { + return finalStateEClass; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EClass getNormalState() { + return normalStateEClass; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getNormalState_Do_() { + return (EReference) normalStateEClass.getEStructuralFeatures().get(0); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getNormalState_Exit_() { + return (EReference) normalStateEClass.getEStructuralFeatures().get(1); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getNormalState_Entry_() { + return (EReference) normalStateEClass.getEStructuralFeatures().get(2); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public StatemachineFactory getStatemachineFactory() { + return (StatemachineFactory) getEFactoryInstance(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private boolean isCreated = false; + + /** + * Creates the meta-model objects for the package. This method is + * guarded to have no affect on any invocation but its first. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void createPackageContents() { + if (isCreated) + return; + isCreated = true; + + // Create classes and their features + stateMachineEClass = createEClass(STATE_MACHINE); + createEAttribute(stateMachineEClass, STATE_MACHINE__NAME); + createEReference(stateMachineEClass, STATE_MACHINE__STATES); + createEReference(stateMachineEClass, STATE_MACHINE__FINALSTATES); + createEReference(stateMachineEClass, STATE_MACHINE__INITIALSTATE); + createEReference(stateMachineEClass, STATE_MACHINE__TRANSITIONS); + + stateEClass = createEClass(STATE); + createEAttribute(stateEClass, STATE__NAME); + + transitionEClass = createEClass(TRANSITION); + createEReference(transitionEClass, TRANSITION__FROM); + createEReference(transitionEClass, TRANSITION__TO); + createEReference(transitionEClass, TRANSITION__TRIGGER); + createEReference(transitionEClass, TRANSITION__GUARD); + createEReference(transitionEClass, TRANSITION__ACTION); + + triggerEClass = createEClass(TRIGGER); + + guardEClass = createEClass(GUARD); + + actionEClass = createEClass(ACTION); + + expressionEClass = createEClass(EXPRESSION); + createEAttribute(expressionEClass, EXPRESSION__CONTENT); + + initialStateEClass = createEClass(INITIAL_STATE); + + finalStateEClass = createEClass(FINAL_STATE); + + normalStateEClass = createEClass(NORMAL_STATE); + createEReference(normalStateEClass, NORMAL_STATE__DO_); + createEReference(normalStateEClass, NORMAL_STATE__EXIT_); + createEReference(normalStateEClass, NORMAL_STATE__ENTRY_); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private boolean isInitialized = false; + + /** + * Complete the initialization of the package and its meta-model. This + * method is guarded to have no affect on any invocation but its first. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void initializePackageContents() { + if (isInitialized) + return; + isInitialized = true; + + // Initialize package + setName(eNAME); + setNsPrefix(eNS_PREFIX); + setNsURI(eNS_URI); + + // Create type parameters + + // Set bounds for type parameters + + // Add supertypes to classes + triggerEClass.getESuperTypes().add(this.getExpression()); + guardEClass.getESuperTypes().add(this.getExpression()); + actionEClass.getESuperTypes().add(this.getExpression()); + initialStateEClass.getESuperTypes().add(this.getState()); + finalStateEClass.getESuperTypes().add(this.getState()); + normalStateEClass.getESuperTypes().add(this.getState()); + + // Initialize classes, features, and operations; add parameters + initEClass(stateMachineEClass, StateMachine.class, "StateMachine", !IS_ABSTRACT, !IS_INTERFACE, + IS_GENERATED_INSTANCE_CLASS); + initEAttribute(getStateMachine_Name(), ecorePackage.getEString(), "name", null, 1, 1, StateMachine.class, + !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getStateMachine_States(), this.getNormalState(), null, "states", null, 0, -1, StateMachine.class, + !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, + IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getStateMachine_Finalstates(), this.getFinalState(), null, "finalstates", null, 0, -1, + StateMachine.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, + !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getStateMachine_Initialstate(), this.getInitialState(), null, "initialstate", null, 1, 1, + StateMachine.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, + !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getStateMachine_Transitions(), this.getTransition(), null, "transitions", null, 0, -1, + StateMachine.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, + !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(stateEClass, State.class, "State", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEAttribute(getState_Name(), ecorePackage.getEString(), "name", null, 1, 1, State.class, !IS_TRANSIENT, + !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(transitionEClass, Transition.class, "Transition", !IS_ABSTRACT, !IS_INTERFACE, + IS_GENERATED_INSTANCE_CLASS); + initEReference(getTransition_From(), this.getState(), null, "from", null, 1, 1, Transition.class, !IS_TRANSIENT, + !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, + IS_ORDERED); + initEReference(getTransition_To(), this.getState(), null, "to", null, 1, 1, Transition.class, !IS_TRANSIENT, + !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, + IS_ORDERED); + initEReference(getTransition_Trigger(), this.getTrigger(), null, "trigger", null, 0, 1, Transition.class, + !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, + IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getTransition_Guard(), this.getGuard(), null, "guard", null, 0, 1, Transition.class, + !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, + IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getTransition_Action(), this.getAction(), null, "action", null, 0, 1, Transition.class, + !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, + IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(triggerEClass, Trigger.class, "Trigger", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + initEClass(guardEClass, Guard.class, "Guard", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + initEClass(actionEClass, Action.class, "Action", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + initEClass(expressionEClass, Expression.class, "Expression", IS_ABSTRACT, !IS_INTERFACE, + IS_GENERATED_INSTANCE_CLASS); + initEAttribute(getExpression_Content(), ecorePackage.getEString(), "content", null, 1, 1, Expression.class, + !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(initialStateEClass, InitialState.class, "InitialState", !IS_ABSTRACT, !IS_INTERFACE, + IS_GENERATED_INSTANCE_CLASS); + + initEClass(finalStateEClass, FinalState.class, "FinalState", !IS_ABSTRACT, !IS_INTERFACE, + IS_GENERATED_INSTANCE_CLASS); + + initEClass(normalStateEClass, NormalState.class, "NormalState", !IS_ABSTRACT, !IS_INTERFACE, + IS_GENERATED_INSTANCE_CLASS); + initEReference(getNormalState_Do_(), this.getAction(), null, "do_", null, 0, 1, NormalState.class, + !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, + IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getNormalState_Exit_(), this.getAction(), null, "exit_", null, 0, 1, NormalState.class, + !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, + IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getNormalState_Entry_(), this.getAction(), null, "entry_", null, 0, 1, NormalState.class, + !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, + IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + // Create resource + createResource(eNS_URI); + } + +} //StatemachinePackageImpl diff --git a/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/impl/TransitionImpl.java b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/impl/TransitionImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..5c7c30d0d09f628cf5547389f2cfd017ae7f528d --- /dev/null +++ b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/impl/TransitionImpl.java @@ -0,0 +1,456 @@ +/** + */ +package swt.most.statemachine.impl; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; +import org.eclipse.emf.ecore.impl.MinimalEObjectImpl; + +import swt.most.statemachine.Action; +import swt.most.statemachine.Guard; +import swt.most.statemachine.State; +import swt.most.statemachine.StatemachinePackage; +import swt.most.statemachine.Transition; +import swt.most.statemachine.Trigger; + +/** + * <!-- begin-user-doc --> + * An implementation of the model object '<em><b>Transition</b></em>'. + * <!-- end-user-doc --> + * <p> + * The following features are implemented: + * </p> + * <ul> + * <li>{@link swt.most.statemachine.impl.TransitionImpl#getFrom <em>From</em>}</li> + * <li>{@link swt.most.statemachine.impl.TransitionImpl#getTo <em>To</em>}</li> + * <li>{@link swt.most.statemachine.impl.TransitionImpl#getTrigger <em>Trigger</em>}</li> + * <li>{@link swt.most.statemachine.impl.TransitionImpl#getGuard <em>Guard</em>}</li> + * <li>{@link swt.most.statemachine.impl.TransitionImpl#getAction <em>Action</em>}</li> + * </ul> + * + * @generated + */ +public class TransitionImpl extends MinimalEObjectImpl.Container implements Transition { + /** + * The cached value of the '{@link #getFrom() <em>From</em>}' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getFrom() + * @generated + * @ordered + */ + protected State from; + + /** + * The cached value of the '{@link #getTo() <em>To</em>}' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getTo() + * @generated + * @ordered + */ + protected State to; + + /** + * The cached value of the '{@link #getTrigger() <em>Trigger</em>}' containment reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getTrigger() + * @generated + * @ordered + */ + protected Trigger trigger; + + /** + * The cached value of the '{@link #getGuard() <em>Guard</em>}' containment reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getGuard() + * @generated + * @ordered + */ + protected Guard guard; + + /** + * The cached value of the '{@link #getAction() <em>Action</em>}' containment reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getAction() + * @generated + * @ordered + */ + protected Action action; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TransitionImpl() { + super(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EClass eStaticClass() { + return StatemachinePackage.Literals.TRANSITION; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public State getFrom() { + if (from != null && from.eIsProxy()) { + InternalEObject oldFrom = (InternalEObject) from; + from = (State) eResolveProxy(oldFrom); + if (from != oldFrom) { + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachinePackage.TRANSITION__FROM, + oldFrom, from)); + } + } + return from; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public State basicGetFrom() { + return from; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setFrom(State newFrom) { + State oldFrom = from; + from = newFrom; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, StatemachinePackage.TRANSITION__FROM, oldFrom, from)); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public State getTo() { + if (to != null && to.eIsProxy()) { + InternalEObject oldTo = (InternalEObject) to; + to = (State) eResolveProxy(oldTo); + if (to != oldTo) { + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.RESOLVE, StatemachinePackage.TRANSITION__TO, oldTo, + to)); + } + } + return to; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public State basicGetTo() { + return to; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setTo(State newTo) { + State oldTo = to; + to = newTo; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, StatemachinePackage.TRANSITION__TO, oldTo, to)); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Trigger getTrigger() { + return trigger; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public NotificationChain basicSetTrigger(Trigger newTrigger, NotificationChain msgs) { + Trigger oldTrigger = trigger; + trigger = newTrigger; + if (eNotificationRequired()) { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, + StatemachinePackage.TRANSITION__TRIGGER, oldTrigger, newTrigger); + if (msgs == null) + msgs = notification; + else + msgs.add(notification); + } + return msgs; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setTrigger(Trigger newTrigger) { + if (newTrigger != trigger) { + NotificationChain msgs = null; + if (trigger != null) + msgs = ((InternalEObject) trigger).eInverseRemove(this, + EOPPOSITE_FEATURE_BASE - StatemachinePackage.TRANSITION__TRIGGER, null, msgs); + if (newTrigger != null) + msgs = ((InternalEObject) newTrigger).eInverseAdd(this, + EOPPOSITE_FEATURE_BASE - StatemachinePackage.TRANSITION__TRIGGER, null, msgs); + msgs = basicSetTrigger(newTrigger, msgs); + if (msgs != null) + msgs.dispatch(); + } else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, StatemachinePackage.TRANSITION__TRIGGER, newTrigger, + newTrigger)); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Guard getGuard() { + return guard; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public NotificationChain basicSetGuard(Guard newGuard, NotificationChain msgs) { + Guard oldGuard = guard; + guard = newGuard; + if (eNotificationRequired()) { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, + StatemachinePackage.TRANSITION__GUARD, oldGuard, newGuard); + if (msgs == null) + msgs = notification; + else + msgs.add(notification); + } + return msgs; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setGuard(Guard newGuard) { + if (newGuard != guard) { + NotificationChain msgs = null; + if (guard != null) + msgs = ((InternalEObject) guard).eInverseRemove(this, + EOPPOSITE_FEATURE_BASE - StatemachinePackage.TRANSITION__GUARD, null, msgs); + if (newGuard != null) + msgs = ((InternalEObject) newGuard).eInverseAdd(this, + EOPPOSITE_FEATURE_BASE - StatemachinePackage.TRANSITION__GUARD, null, msgs); + msgs = basicSetGuard(newGuard, msgs); + if (msgs != null) + msgs.dispatch(); + } else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, StatemachinePackage.TRANSITION__GUARD, newGuard, + newGuard)); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Action getAction() { + return action; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public NotificationChain basicSetAction(Action newAction, NotificationChain msgs) { + Action oldAction = action; + action = newAction; + if (eNotificationRequired()) { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, + StatemachinePackage.TRANSITION__ACTION, oldAction, newAction); + if (msgs == null) + msgs = notification; + else + msgs.add(notification); + } + return msgs; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setAction(Action newAction) { + if (newAction != action) { + NotificationChain msgs = null; + if (action != null) + msgs = ((InternalEObject) action).eInverseRemove(this, + EOPPOSITE_FEATURE_BASE - StatemachinePackage.TRANSITION__ACTION, null, msgs); + if (newAction != null) + msgs = ((InternalEObject) newAction).eInverseAdd(this, + EOPPOSITE_FEATURE_BASE - StatemachinePackage.TRANSITION__ACTION, null, msgs); + msgs = basicSetAction(newAction, msgs); + if (msgs != null) + msgs.dispatch(); + } else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, StatemachinePackage.TRANSITION__ACTION, newAction, + newAction)); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case StatemachinePackage.TRANSITION__TRIGGER: + return basicSetTrigger(null, msgs); + case StatemachinePackage.TRANSITION__GUARD: + return basicSetGuard(null, msgs); + case StatemachinePackage.TRANSITION__ACTION: + return basicSetAction(null, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case StatemachinePackage.TRANSITION__FROM: + if (resolve) + return getFrom(); + return basicGetFrom(); + case StatemachinePackage.TRANSITION__TO: + if (resolve) + return getTo(); + return basicGetTo(); + case StatemachinePackage.TRANSITION__TRIGGER: + return getTrigger(); + case StatemachinePackage.TRANSITION__GUARD: + return getGuard(); + case StatemachinePackage.TRANSITION__ACTION: + return getAction(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case StatemachinePackage.TRANSITION__FROM: + setFrom((State) newValue); + return; + case StatemachinePackage.TRANSITION__TO: + setTo((State) newValue); + return; + case StatemachinePackage.TRANSITION__TRIGGER: + setTrigger((Trigger) newValue); + return; + case StatemachinePackage.TRANSITION__GUARD: + setGuard((Guard) newValue); + return; + case StatemachinePackage.TRANSITION__ACTION: + setAction((Action) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case StatemachinePackage.TRANSITION__FROM: + setFrom((State) null); + return; + case StatemachinePackage.TRANSITION__TO: + setTo((State) null); + return; + case StatemachinePackage.TRANSITION__TRIGGER: + setTrigger((Trigger) null); + return; + case StatemachinePackage.TRANSITION__GUARD: + setGuard((Guard) null); + return; + case StatemachinePackage.TRANSITION__ACTION: + setAction((Action) null); + return; + } + super.eUnset(featureID); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case StatemachinePackage.TRANSITION__FROM: + return from != null; + case StatemachinePackage.TRANSITION__TO: + return to != null; + case StatemachinePackage.TRANSITION__TRIGGER: + return trigger != null; + case StatemachinePackage.TRANSITION__GUARD: + return guard != null; + case StatemachinePackage.TRANSITION__ACTION: + return action != null; + } + return super.eIsSet(featureID); + } + +} //TransitionImpl diff --git a/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/impl/TriggerImpl.java b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/impl/TriggerImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..f10d4ea5032a34a890c231a88855b065ed0cf4ec --- /dev/null +++ b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/impl/TriggerImpl.java @@ -0,0 +1,37 @@ +/** + */ +package swt.most.statemachine.impl; + +import org.eclipse.emf.ecore.EClass; + +import swt.most.statemachine.StatemachinePackage; +import swt.most.statemachine.Trigger; + +/** + * <!-- begin-user-doc --> + * An implementation of the model object '<em><b>Trigger</b></em>'. + * <!-- end-user-doc --> + * + * @generated + */ +public class TriggerImpl extends ExpressionImpl implements Trigger { + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TriggerImpl() { + super(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EClass eStaticClass() { + return StatemachinePackage.Literals.TRIGGER; + } + +} //TriggerImpl diff --git a/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/util/StatemachineAdapterFactory.java b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/util/StatemachineAdapterFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..5594669452be9663c0a5f0392bf90bfc0c454d8c --- /dev/null +++ b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/util/StatemachineAdapterFactory.java @@ -0,0 +1,290 @@ +/** + */ +package swt.most.statemachine.util; + +import org.eclipse.emf.common.notify.Adapter; +import org.eclipse.emf.common.notify.Notifier; + +import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl; + +import org.eclipse.emf.ecore.EObject; + +import swt.most.statemachine.*; + +/** + * <!-- begin-user-doc --> + * The <b>Adapter Factory</b> for the model. + * It provides an adapter <code>createXXX</code> method for each class of the model. + * <!-- end-user-doc --> + * @see swt.most.statemachine.StatemachinePackage + * @generated + */ +public class StatemachineAdapterFactory extends AdapterFactoryImpl { + /** + * The cached model package. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected static StatemachinePackage modelPackage; + + /** + * Creates an instance of the adapter factory. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public StatemachineAdapterFactory() { + if (modelPackage == null) { + modelPackage = StatemachinePackage.eINSTANCE; + } + } + + /** + * Returns whether this factory is applicable for the type of the object. + * <!-- begin-user-doc --> + * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model. + * <!-- end-user-doc --> + * @return whether this factory is applicable for the type of the object. + * @generated + */ + @Override + public boolean isFactoryForType(Object object) { + if (object == modelPackage) { + return true; + } + if (object instanceof EObject) { + return ((EObject) object).eClass().getEPackage() == modelPackage; + } + return false; + } + + /** + * The switch that delegates to the <code>createXXX</code> methods. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected StatemachineSwitch<Adapter> modelSwitch = new StatemachineSwitch<Adapter>() { + @Override + public Adapter caseStateMachine(StateMachine object) { + return createStateMachineAdapter(); + } + + @Override + public Adapter caseState(State object) { + return createStateAdapter(); + } + + @Override + public Adapter caseTransition(Transition object) { + return createTransitionAdapter(); + } + + @Override + public Adapter caseTrigger(Trigger object) { + return createTriggerAdapter(); + } + + @Override + public Adapter caseGuard(Guard object) { + return createGuardAdapter(); + } + + @Override + public Adapter caseAction(Action object) { + return createActionAdapter(); + } + + @Override + public Adapter caseExpression(Expression object) { + return createExpressionAdapter(); + } + + @Override + public Adapter caseInitialState(InitialState object) { + return createInitialStateAdapter(); + } + + @Override + public Adapter caseFinalState(FinalState object) { + return createFinalStateAdapter(); + } + + @Override + public Adapter caseNormalState(NormalState object) { + return createNormalStateAdapter(); + } + + @Override + public Adapter defaultCase(EObject object) { + return createEObjectAdapter(); + } + }; + + /** + * Creates an adapter for the <code>target</code>. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param target the object to adapt. + * @return the adapter for the <code>target</code>. + * @generated + */ + @Override + public Adapter createAdapter(Notifier target) { + return modelSwitch.doSwitch((EObject) target); + } + + /** + * Creates a new adapter for an object of class '{@link swt.most.statemachine.StateMachine <em>State Machine</em>}'. + * <!-- begin-user-doc --> + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * <!-- end-user-doc --> + * @return the new adapter. + * @see swt.most.statemachine.StateMachine + * @generated + */ + public Adapter createStateMachineAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link swt.most.statemachine.State <em>State</em>}'. + * <!-- begin-user-doc --> + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * <!-- end-user-doc --> + * @return the new adapter. + * @see swt.most.statemachine.State + * @generated + */ + public Adapter createStateAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link swt.most.statemachine.Transition <em>Transition</em>}'. + * <!-- begin-user-doc --> + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * <!-- end-user-doc --> + * @return the new adapter. + * @see swt.most.statemachine.Transition + * @generated + */ + public Adapter createTransitionAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link swt.most.statemachine.Trigger <em>Trigger</em>}'. + * <!-- begin-user-doc --> + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * <!-- end-user-doc --> + * @return the new adapter. + * @see swt.most.statemachine.Trigger + * @generated + */ + public Adapter createTriggerAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link swt.most.statemachine.Guard <em>Guard</em>}'. + * <!-- begin-user-doc --> + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * <!-- end-user-doc --> + * @return the new adapter. + * @see swt.most.statemachine.Guard + * @generated + */ + public Adapter createGuardAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link swt.most.statemachine.Action <em>Action</em>}'. + * <!-- begin-user-doc --> + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * <!-- end-user-doc --> + * @return the new adapter. + * @see swt.most.statemachine.Action + * @generated + */ + public Adapter createActionAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link swt.most.statemachine.Expression <em>Expression</em>}'. + * <!-- begin-user-doc --> + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * <!-- end-user-doc --> + * @return the new adapter. + * @see swt.most.statemachine.Expression + * @generated + */ + public Adapter createExpressionAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link swt.most.statemachine.InitialState <em>Initial State</em>}'. + * <!-- begin-user-doc --> + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * <!-- end-user-doc --> + * @return the new adapter. + * @see swt.most.statemachine.InitialState + * @generated + */ + public Adapter createInitialStateAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link swt.most.statemachine.FinalState <em>Final State</em>}'. + * <!-- begin-user-doc --> + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * <!-- end-user-doc --> + * @return the new adapter. + * @see swt.most.statemachine.FinalState + * @generated + */ + public Adapter createFinalStateAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link swt.most.statemachine.NormalState <em>Normal State</em>}'. + * <!-- begin-user-doc --> + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * <!-- end-user-doc --> + * @return the new adapter. + * @see swt.most.statemachine.NormalState + * @generated + */ + public Adapter createNormalStateAdapter() { + return null; + } + + /** + * Creates a new adapter for the default case. + * <!-- begin-user-doc --> + * This default implementation returns null. + * <!-- end-user-doc --> + * @return the new adapter. + * @generated + */ + public Adapter createEObjectAdapter() { + return null; + } + +} //StatemachineAdapterFactory diff --git a/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/util/StatemachineSwitch.java b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/util/StatemachineSwitch.java new file mode 100644 index 0000000000000000000000000000000000000000..0371d11a913f3fb93ffefb6ccbd45ee3b1ccacc3 --- /dev/null +++ b/metamodel/swt.most.statemachine/src-gen/swt/most/statemachine/util/StatemachineSwitch.java @@ -0,0 +1,322 @@ +/** + */ +package swt.most.statemachine.util; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EPackage; + +import org.eclipse.emf.ecore.util.Switch; + +import swt.most.statemachine.*; + +/** + * <!-- begin-user-doc --> + * The <b>Switch</b> for the model's inheritance hierarchy. + * It supports the call {@link #doSwitch(EObject) doSwitch(object)} + * to invoke the <code>caseXXX</code> method for each class of the model, + * starting with the actual class of the object + * and proceeding up the inheritance hierarchy + * until a non-null result is returned, + * which is the result of the switch. + * <!-- end-user-doc --> + * @see swt.most.statemachine.StatemachinePackage + * @generated + */ +public class StatemachineSwitch<T> extends Switch<T> { + /** + * The cached model package + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected static StatemachinePackage modelPackage; + + /** + * Creates an instance of the switch. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public StatemachineSwitch() { + if (modelPackage == null) { + modelPackage = StatemachinePackage.eINSTANCE; + } + } + + /** + * Checks whether this is a switch for the given package. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param ePackage the package in question. + * @return whether this is a switch for the given package. + * @generated + */ + @Override + protected boolean isSwitchFor(EPackage ePackage) { + return ePackage == modelPackage; + } + + /** + * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the first non-null result returned by a <code>caseXXX</code> call. + * @generated + */ + @Override + protected T doSwitch(int classifierID, EObject theEObject) { + switch (classifierID) { + case StatemachinePackage.STATE_MACHINE: { + StateMachine stateMachine = (StateMachine) theEObject; + T result = caseStateMachine(stateMachine); + if (result == null) + result = defaultCase(theEObject); + return result; + } + case StatemachinePackage.STATE: { + State state = (State) theEObject; + T result = caseState(state); + if (result == null) + result = defaultCase(theEObject); + return result; + } + case StatemachinePackage.TRANSITION: { + Transition transition = (Transition) theEObject; + T result = caseTransition(transition); + if (result == null) + result = defaultCase(theEObject); + return result; + } + case StatemachinePackage.TRIGGER: { + Trigger trigger = (Trigger) theEObject; + T result = caseTrigger(trigger); + if (result == null) + result = caseExpression(trigger); + if (result == null) + result = defaultCase(theEObject); + return result; + } + case StatemachinePackage.GUARD: { + Guard guard = (Guard) theEObject; + T result = caseGuard(guard); + if (result == null) + result = caseExpression(guard); + if (result == null) + result = defaultCase(theEObject); + return result; + } + case StatemachinePackage.ACTION: { + Action action = (Action) theEObject; + T result = caseAction(action); + if (result == null) + result = caseExpression(action); + if (result == null) + result = defaultCase(theEObject); + return result; + } + case StatemachinePackage.EXPRESSION: { + Expression expression = (Expression) theEObject; + T result = caseExpression(expression); + if (result == null) + result = defaultCase(theEObject); + return result; + } + case StatemachinePackage.INITIAL_STATE: { + InitialState initialState = (InitialState) theEObject; + T result = caseInitialState(initialState); + if (result == null) + result = caseState(initialState); + if (result == null) + result = defaultCase(theEObject); + return result; + } + case StatemachinePackage.FINAL_STATE: { + FinalState finalState = (FinalState) theEObject; + T result = caseFinalState(finalState); + if (result == null) + result = caseState(finalState); + if (result == null) + result = defaultCase(theEObject); + return result; + } + case StatemachinePackage.NORMAL_STATE: { + NormalState normalState = (NormalState) theEObject; + T result = caseNormalState(normalState); + if (result == null) + result = caseState(normalState); + if (result == null) + result = defaultCase(theEObject); + return result; + } + default: + return defaultCase(theEObject); + } + } + + /** + * Returns the result of interpreting the object as an instance of '<em>State Machine</em>'. + * <!-- begin-user-doc --> + * This implementation returns null; + * returning a non-null result will terminate the switch. + * <!-- end-user-doc --> + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of '<em>State Machine</em>'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseStateMachine(StateMachine object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of '<em>State</em>'. + * <!-- begin-user-doc --> + * This implementation returns null; + * returning a non-null result will terminate the switch. + * <!-- end-user-doc --> + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of '<em>State</em>'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseState(State object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of '<em>Transition</em>'. + * <!-- begin-user-doc --> + * This implementation returns null; + * returning a non-null result will terminate the switch. + * <!-- end-user-doc --> + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of '<em>Transition</em>'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseTransition(Transition object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of '<em>Trigger</em>'. + * <!-- begin-user-doc --> + * This implementation returns null; + * returning a non-null result will terminate the switch. + * <!-- end-user-doc --> + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of '<em>Trigger</em>'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseTrigger(Trigger object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of '<em>Guard</em>'. + * <!-- begin-user-doc --> + * This implementation returns null; + * returning a non-null result will terminate the switch. + * <!-- end-user-doc --> + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of '<em>Guard</em>'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseGuard(Guard object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of '<em>Action</em>'. + * <!-- begin-user-doc --> + * This implementation returns null; + * returning a non-null result will terminate the switch. + * <!-- end-user-doc --> + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of '<em>Action</em>'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseAction(Action object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of '<em>Expression</em>'. + * <!-- begin-user-doc --> + * This implementation returns null; + * returning a non-null result will terminate the switch. + * <!-- end-user-doc --> + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of '<em>Expression</em>'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseExpression(Expression object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of '<em>Initial State</em>'. + * <!-- begin-user-doc --> + * This implementation returns null; + * returning a non-null result will terminate the switch. + * <!-- end-user-doc --> + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of '<em>Initial State</em>'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseInitialState(InitialState object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of '<em>Final State</em>'. + * <!-- begin-user-doc --> + * This implementation returns null; + * returning a non-null result will terminate the switch. + * <!-- end-user-doc --> + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of '<em>Final State</em>'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseFinalState(FinalState object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of '<em>Normal State</em>'. + * <!-- begin-user-doc --> + * This implementation returns null; + * returning a non-null result will terminate the switch. + * <!-- end-user-doc --> + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of '<em>Normal State</em>'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseNormalState(NormalState object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of '<em>EObject</em>'. + * <!-- begin-user-doc --> + * This implementation returns null; + * returning a non-null result will terminate the switch, but this is the last case anyway. + * <!-- end-user-doc --> + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of '<em>EObject</em>'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) + * @generated + */ + @Override + public T defaultCase(EObject object) { + return null; + } + +} //StatemachineSwitch diff --git a/metamodel/swt.most.statemachine/src/.gitkeep b/metamodel/swt.most.statemachine/src/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..49cc8ef0e116cef009fe0bd72473a964bbd07f9b Binary files /dev/null and b/metamodel/swt.most.statemachine/src/.gitkeep differ diff --git a/model2model/examples-etl/.project b/model2model/examples-etl/.project new file mode 100644 index 0000000000000000000000000000000000000000..c330d4178d8c3792ddb37d83310c23f8fd821ccb --- /dev/null +++ b/model2model/examples-etl/.project @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>examples-etl</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + </buildSpec> + <natures> + <nature>org.eclipse.sirius.nature.modelingproject</nature> + </natures> +</projectDescription> diff --git a/model2model/examples-etl/.settings/org.eclipse.core.resources.prefs b/model2model/examples-etl/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000000000000000000000000000000000000..99f26c0203a7844de00dbfc56e6a35d8ed3c022c --- /dev/null +++ b/model2model/examples-etl/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/<project>=UTF-8 diff --git a/model2model/examples-etl/petrinets/garagedoor.petrinet b/model2model/examples-etl/petrinets/garagedoor.petrinet new file mode 100644 index 0000000000000000000000000000000000000000..7164feb9caddcc43a8437be6a11023ef23c470e9 --- /dev/null +++ b/model2model/examples-etl/petrinets/garagedoor.petrinet @@ -0,0 +1,81 @@ +<?xml version="1.0" encoding="ASCII"?> +<petrinet:PetriNet xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:petrinet="http://www.example.org/petrinet" name="Garage Door"> + <arcs xsi:type="petrinet:IncomingArc" target="//@elements.6" source="//@elements.0"/> + <arcs xsi:type="petrinet:OutgoingArc" source="//@elements.6" target="//@elements.1"/> + <arcs xsi:type="petrinet:IncomingArc" target="//@elements.7" source="//@elements.1"/> + <arcs xsi:type="petrinet:OutgoingArc" source="//@elements.7" target="//@elements.3"/> + <arcs xsi:type="petrinet:IncomingArc" target="//@elements.7" source="//@elements.8"/> + <arcs xsi:type="petrinet:OutgoingArc" source="//@elements.7" target="//@elements.9"/> + <arcs xsi:type="petrinet:IncomingArc" target="//@elements.10" source="//@elements.3"/> + <arcs xsi:type="petrinet:OutgoingArc" source="//@elements.10" target="//@elements.2"/> + <arcs xsi:type="petrinet:IncomingArc" target="//@elements.10" source="//@elements.11"/> + <arcs xsi:type="petrinet:OutgoingArc" source="//@elements.10" target="//@elements.12"/> + <arcs xsi:type="petrinet:IncomingArc" target="//@elements.13" source="//@elements.2"/> + <arcs xsi:type="petrinet:OutgoingArc" source="//@elements.13" target="//@elements.4"/> + <arcs xsi:type="petrinet:IncomingArc" target="//@elements.13" source="//@elements.14"/> + <arcs xsi:type="petrinet:OutgoingArc" source="//@elements.13" target="//@elements.15"/> + <arcs xsi:type="petrinet:IncomingArc" target="//@elements.16" source="//@elements.4"/> + <arcs xsi:type="petrinet:OutgoingArc" source="//@elements.16" target="//@elements.1"/> + <arcs xsi:type="petrinet:IncomingArc" target="//@elements.16" source="//@elements.17"/> + <arcs xsi:type="petrinet:OutgoingArc" source="//@elements.16" target="//@elements.18"/> + <arcs xsi:type="petrinet:IncomingArc" target="//@elements.19" source="//@elements.4"/> + <arcs xsi:type="petrinet:OutgoingArc" source="//@elements.19" target="//@elements.3"/> + <arcs xsi:type="petrinet:IncomingArc" target="//@elements.19" source="//@elements.20"/> + <arcs xsi:type="petrinet:OutgoingArc" source="//@elements.19" target="//@elements.21"/> + <arcs xsi:type="petrinet:IncomingArc" target="//@elements.22" source="//@elements.3"/> + <arcs xsi:type="petrinet:OutgoingArc" source="//@elements.22" target="//@elements.4"/> + <arcs xsi:type="petrinet:IncomingArc" target="//@elements.22" source="//@elements.23"/> + <arcs xsi:type="petrinet:OutgoingArc" source="//@elements.22" target="//@elements.24"/> + <arcs xsi:type="petrinet:IncomingArc" target="//@elements.25" source="//@elements.1"/> + <arcs xsi:type="petrinet:OutgoingArc" source="//@elements.25" target="//@elements.5"/> + <arcs xsi:type="petrinet:IncomingArc" target="//@elements.25" source="//@elements.26"/> + <arcs xsi:type="petrinet:IncomingArc" target="//@elements.27" source="//@elements.1"/> + <arcs xsi:type="petrinet:OutgoingArc" source="//@elements.27" target="//@elements.1"/> + <arcs xsi:type="petrinet:IncomingArc" target="//@elements.27" source="//@elements.28"/> + <arcs xsi:type="petrinet:IncomingArc" target="//@elements.29" source="//@elements.4"/> + <arcs xsi:type="petrinet:OutgoingArc" source="//@elements.29" target="//@elements.4"/> + <arcs xsi:type="petrinet:IncomingArc" target="//@elements.29" source="//@elements.30"/> + <arcs xsi:type="petrinet:IncomingArc" target="//@elements.31" source="//@elements.2"/> + <arcs xsi:type="petrinet:OutgoingArc" source="//@elements.31" target="//@elements.2"/> + <arcs xsi:type="petrinet:IncomingArc" target="//@elements.31" source="//@elements.32"/> + <arcs xsi:type="petrinet:IncomingArc" target="//@elements.33" source="//@elements.3"/> + <arcs xsi:type="petrinet:OutgoingArc" source="//@elements.33" target="//@elements.3"/> + <arcs xsi:type="petrinet:IncomingArc" target="//@elements.33" source="//@elements.34"/> + <elements xsi:type="petrinet:Place" identifier="initial"> + <token/> + </elements> + <elements xsi:type="petrinet:Place" identifier="Closed"/> + <elements xsi:type="petrinet:Place" identifier="Open"/> + <elements xsi:type="petrinet:Place" identifier="Opening"/> + <elements xsi:type="petrinet:Place" identifier="Closing"/> + <elements xsi:type="petrinet:Place" identifier="final"/> + <elements xsi:type="petrinet:Transition" identifier="default"/> + <elements xsi:type="petrinet:Transition" identifier="openDoor"/> + <elements xsi:type="petrinet:Place" identifier="openDoor"/> + <elements xsi:type="petrinet:Place" identifier="motor.upwards"/> + <elements xsi:type="petrinet:Transition" identifier="default"/> + <elements xsi:type="petrinet:Place" identifier="stopper"/> + <elements xsi:type="petrinet:Place" identifier="motor.stop"/> + <elements xsi:type="petrinet:Transition" identifier="closeDoor"/> + <elements xsi:type="petrinet:Place" identifier="closeDoor"/> + <elements xsi:type="petrinet:Place" identifier="motor.downwards"/> + <elements xsi:type="petrinet:Transition" identifier="default"/> + <elements xsi:type="petrinet:Place" identifier="stopper"/> + <elements xsi:type="petrinet:Place" identifier="motor.stop"/> + <elements xsi:type="petrinet:Transition" identifier="openDoor"/> + <elements xsi:type="petrinet:Place" identifier="openDoor"/> + <elements xsi:type="petrinet:Place" identifier="motor.upwards"/> + <elements xsi:type="petrinet:Transition" identifier="closeDoor"/> + <elements xsi:type="petrinet:Place" identifier="closeDoor"/> + <elements xsi:type="petrinet:Place" identifier="motor.downwards"/> + <elements xsi:type="petrinet:Transition" identifier="default"/> + <elements xsi:type="petrinet:Place" identifier="shutdown"/> + <elements xsi:type="petrinet:Transition" identifier="closeDoor"/> + <elements xsi:type="petrinet:Place" identifier="closeDoor"/> + <elements xsi:type="petrinet:Transition" identifier="closeDoor"/> + <elements xsi:type="petrinet:Place" identifier="closeDoor"/> + <elements xsi:type="petrinet:Transition" identifier="openDoor"/> + <elements xsi:type="petrinet:Place" identifier="openDoor"/> + <elements xsi:type="petrinet:Transition" identifier="openDoor"/> + <elements xsi:type="petrinet:Place" identifier="openDoor"/> +</petrinet:PetriNet> diff --git a/model2model/examples-etl/petrinets/garagedoor.svg b/model2model/examples-etl/petrinets/garagedoor.svg new file mode 100644 index 0000000000000000000000000000000000000000..37e83b86fcddabd568aa87e24019d774c829c344 --- /dev/null +++ b/model2model/examples-etl/petrinets/garagedoor.svg @@ -0,0 +1,625 @@ +<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-dasharray="none" shape-rendering="auto" font-family="'Dialog'" width="965" text-rendering="auto" fill-opacity="1" contentScriptType="text/ecmascript" color-interpolation="auto" color-rendering="auto" preserveAspectRatio="xMidYMid meet" font-size="12px" xmlns:diagram="http://www.eclipse.org/sirius/diagram/1.1.0" diagram:semanticRoot="platform:/resource/example/petrinets/garagedoor.petrinet#/" viewBox="0 0 965 748" fill="black" stroke="black" image-rendering="auto" stroke-miterlimit="10" zoomAndPan="magnify" version="1.0" stroke-linecap="square" stroke-linejoin="miter" contentStyleType="text/css" font-style="normal" height="748" stroke-width="1" stroke-dashoffset="0" font-weight="normal" stroke-opacity="1"> + <!--Generated by the Batik Graphics2D SVG Generator--> + <defs id="genericDefs"/> + <g> + <defs id="defs1"> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath1"> + <path d="M18 456 L50 456 L50 488 L18 488 L18 456 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath2"> + <path d="M9 427 L62 427 L62 457 L9 457 L9 427 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath3"> + <path d="M40 466 L62 466 L62 488 L40 488 L40 466 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath4"> + <path d="M198 456 L230 456 L230 488 L198 488 L198 456 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath5"> + <path d="M229 457 L294 457 L294 487 L229 487 L229 457 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath6"> + <path d="M875 456 L907 456 L907 488 L875 488 L875 456 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath7"> + <path d="M906 457 L962 457 L962 487 L906 487 L906 457 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath8"> + <path d="M539 167 L571 167 L571 199 L539 199 L539 167 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath9"> + <path d="M516 138 L599 138 L599 168 L516 168 L516 138 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath10"> + <path d="M539 558 L571 558 L571 590 L539 590 L539 558 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath11"> + <path d="M522 589 L593 589 L593 619 L522 619 L522 589 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath12"> + <path d="M18 345 L50 345 L50 377 L18 377 L18 345 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath13"> + <path d="M15 316 L57 316 L57 346 L15 346 L15 316 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath14"> + <path d="M246 102 L278 102 L278 134 L246 134 L246 102 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath15"> + <path d="M216 73 L313 73 L313 103 L216 103 L216 73 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath16"> + <path d="M371 102 L403 102 L403 134 L371 134 L371 102 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath17"> + <path d="M320 73 L460 73 L460 103 L320 103 L320 73 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath18"> + <path d="M683 102 L715 102 L715 134 L683 134 L683 102 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath19"> + <path d="M664 73 L738 73 L738 103 L664 103 L664 73 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath20"> + <path d="M785 102 L817 102 L817 134 L785 134 L785 102 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath21"> + <path d="M751 73 L855 73 L855 103 L751 103 L751 73 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath22"> + <path d="M808 627 L840 627 L840 659 L808 659 L808 627 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath23"> + <path d="M779 658 L874 658 L874 688 L779 688 L779 658 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath24"> + <path d="M671 627 L703 627 L703 659 L671 659 L671 627 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath25"> + <path d="M607 658 L773 658 L773 688 L607 688 L607 658 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath26"> + <path d="M389 627 L421 627 L421 659 L389 659 L389 627 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath27"> + <path d="M370 658 L444 658 L444 688 L370 688 L370 658 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath28"> + <path d="M257 627 L289 627 L289 659 L257 659 L257 627 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath29"> + <path d="M223 658 L327 658 L327 688 L223 688 L223 658 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath30"> + <path d="M503 389 L535 389 L535 421 L503 421 L503 389 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath31"> + <path d="M412 390 L509 390 L509 420 L412 420 L412 390 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath32"> + <path d="M400 316 L432 316 L432 348 L400 348 L400 316 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath33"> + <path d="M349 347 L489 347 L489 377 L349 377 L349 347 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath34"> + <path d="M575 204 L607 204 L607 236 L575 236 L575 204 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath35"> + <path d="M606 205 L701 205 L701 235 L606 235 L606 205 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath36"> + <path d="M719 274 L751 274 L751 306 L719 306 L719 274 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath37"> + <path d="M655 245 L821 245 L821 275 L655 275 L655 245 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath38"> + <path d="M169 274 L201 274 L201 306 L169 306 L169 274 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath39"> + <path d="M82 274 L175 274 L175 304 L82 304 L82 274 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath40"> + <path d="M269 360 L301 360 L301 392 L269 392 L269 360 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath41"> + <path d="M240 331 L335 331 L335 361 L240 361 L240 331 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath42"> + <path d="M671 702 L703 702 L703 734 L671 734 L671 702 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath43"> + <path d="M702 704 L797 704 L797 734 L702 734 L702 704 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath44"> + <path d="M808 360 L840 360 L840 392 L808 392 L808 360 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath45"> + <path d="M778 331 L875 331 L875 361 L778 361 L778 331 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath46"> + <path d="M437 38 L469 38 L469 70 L437 70 L437 38 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath47"> + <path d="M407 9 L504 9 L504 39 L407 39 L407 9 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath48"> + <path d="M113 441 L135 441 L135 503 L113 503 L113 441 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath49"> + <path d="M93 502 L160 502 L160 532 L93 532 L93 502 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath50"> + <path d="M322 152 L344 152 L344 214 L322 214 L322 152 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath51"> + <path d="M287 213 L384 213 L384 243 L287 243 L287 213 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath52"> + <path d="M737 152 L759 152 L759 214 L737 214 L737 152 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath53"> + <path d="M717 213 L784 213 L784 243 L717 243 L717 213 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath54"> + <path d="M737 543 L759 543 L759 605 L737 605 L737 543 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath55"> + <path d="M703 604 L798 604 L798 634 L703 634 L703 604 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath56"> + <path d="M322 543 L344 543 L344 605 L322 605 L322 543 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath57"> + <path d="M302 604 L369 604 L369 634 L302 634 L302 604 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath58"> + <path d="M484 274 L506 274 L506 336 L484 336 L484 274 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath59"> + <path d="M449 245 L546 245 L546 275 L449 275 L449 245 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath60"> + <path d="M611 274 L633 274 L633 336 L611 336 L611 274 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath61"> + <path d="M577 335 L672 335 L672 365 L577 365 L577 335 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath62"> + <path d="M137 330 L159 330 L159 392 L137 392 L137 330 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath63"> + <path d="M117 391 L184 391 L184 421 L117 421 L117 391 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath64"> + <path d="M352 403 L374 403 L374 465 L352 465 L352 403 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath65"> + <path d="M318 464 L413 464 L413 494 L318 494 L318 464 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath66"> + <path d="M539 648 L561 648 L561 710 L539 710 L539 648 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath67"> + <path d="M505 709 L600 709 L600 739 L505 739 L505 709 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath68"> + <path d="M748 403 L770 403 L770 465 L748 465 L748 403 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath69"> + <path d="M713 464 L810 464 L810 494 L713 494 L713 464 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath70"> + <path d="M544 38 L566 38 L566 100 L544 100 L544 38 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath71"> + <path d="M509 9 L606 9 L606 39 L509 39 L509 9 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath72"> + <path d="M-1 -1 L966 -1 L966 749 L-1 749 L-1 -1 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath73"> + <path d="M105 470 L117 470 L117 481 L105 481 L105 470 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath74"> + <path d="M314 177 L326 177 L326 188 L314 188 L314 177 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath75"> + <path d="M314 160 L326 160 L326 171 L314 171 L314 160 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath76"> + <path d="M729 178 L741 178 L741 189 L729 189 L729 178 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath77"> + <path d="M729 160 L741 160 L741 171 L729 171 L729 160 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath78"> + <path d="M756 566 L768 566 L768 577 L756 577 L756 566 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath79"> + <path d="M756 584 L768 584 L768 595 L756 595 L756 584 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath80"> + <path d="M341 565 L353 565 L353 576 L341 576 L341 565 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath81"> + <path d="M341 584 L353 584 L353 595 L341 595 L341 584 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath82"> + <path d="M503 302 L515 302 L515 313 L503 313 L503 302 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath83"> + <path d="M503 320 L515 320 L515 331 L503 331 L503 320 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath84"> + <path d="M603 300 L615 300 L615 311 L603 311 L603 300 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath85"> + <path d="M603 284 L615 284 L615 295 L603 295 L603 284 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath86"> + <path d="M156 356 L168 356 L168 367 L156 367 L156 356 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath87"> + <path d="M156 338 L168 338 L168 349 L156 349 L156 338 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath88"> + <path d="M344 434 L356 434 L356 445 L344 445 L344 434 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath89"> + <path d="M344 415 L356 415 L356 426 L344 426 L344 415 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath90"> + <path d="M531 674 L543 674 L543 685 L531 685 L531 674 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath91"> + <path d="M558 692 L570 692 L570 703 L558 703 L558 692 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath92"> + <path d="M767 428 L779 428 L779 439 L767 439 L767 428 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath93"> + <path d="M767 410 L779 410 L779 421 L767 421 L767 410 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath94"> + <path d="M536 64 L548 64 L548 75 L536 75 L536 64 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath95"> + <path d="M536 48 L548 48 L548 59 L536 59 L536 48 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath96"> + <path d="M190 470 L202 470 L202 481 L190 481 L190 470 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath97"> + <path d="M531 178 L543 178 L543 189 L531 189 L531 178 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath98"> + <path d="M382 131 L393 131 L393 143 L382 143 L382 131 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath99"> + <path d="M886 448 L897 448 L897 460 L886 460 L886 448 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath100"> + <path d="M793 131 L804 131 L804 143 L793 143 L793 131 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath101"> + <path d="M568 566 L580 566 L580 577 L568 577 L568 566 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath102"> + <path d="M682 619 L693 619 L693 631 L682 631 L682 619 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath103"> + <path d="M211 485 L222 485 L222 497 L211 497 L211 485 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath104"> + <path d="M268 619 L279 619 L279 631 L268 631 L268 619 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath105"> + <path d="M541 196 L552 196 L552 208 L541 208 L541 196 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath106"> + <path d="M429 321 L441 321 L441 332 L429 332 L429 321 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath107"> + <path d="M559 550 L570 550 L570 562 L559 562 L559 550 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath108"> + <path d="M711 284 L723 284 L723 295 L711 295 L711 284 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath109"> + <path d="M47 356 L59 356 L59 367 L47 367 L47 356 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath110"> + <path d="M223 485 L234 485 L234 497 L223 497 L223 485 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath111"> + <path d="M568 578 L580 578 L580 589 L568 589 L568 578 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath112"> + <path d="M877 485 L888 485 L888 497 L877 497 L877 485 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath113"> + <path d="M568 166 L580 166 L580 177 L568 177 L568 166 Z"/> + </clipPath> + </defs> + <g font-size="15px" fill="rgb(255,245,181)" font-family="'Segoe UI'" stroke-linejoin="round" stroke="rgb(255,245,181)" stroke-width="0" stroke-miterlimit="0"> + <circle r="14" clip-path="url(#clipPath1)" cx="33" cy="471" stroke="none"/> + </g> + <g font-size="15px" stroke-width="1.1" font-family="'Segoe UI'" stroke-linecap="butt"> + <circle fill="none" r="14.5" clip-path="url(#clipPath1)" cx="33.5" cy="471.5"/> + <text x="10" xml:space="preserve" font-size="20px" y="450" clip-path="url(#clipPath2)" stroke="none">initial</text> + <circle r="9" clip-path="url(#clipPath3)" cx="50" cy="476" stroke="none"/> + <circle fill="none" stroke-width="0.1" r="9.5" clip-path="url(#clipPath3)" cx="50.5" cy="476.5"/> + <circle clip-path="url(#clipPath4)" fill="rgb(255,245,181)" r="14" cx="213" cy="471" stroke="none" stroke-width="0.1"/> + <circle fill="none" r="14.5" clip-path="url(#clipPath4)" cx="213.5" cy="471.5"/> + <text x="230" xml:space="preserve" font-size="20px" y="480" clip-path="url(#clipPath5)" stroke="none">Closed</text> + <circle fill="rgb(255,245,181)" r="14" clip-path="url(#clipPath6)" cx="890" cy="471" stroke="none"/> + <circle fill="none" r="14.5" clip-path="url(#clipPath6)" cx="890.5" cy="471.5"/> + <text x="907" xml:space="preserve" font-size="20px" y="480" clip-path="url(#clipPath7)" stroke="none">Open</text> + <circle fill="rgb(255,245,181)" r="14" clip-path="url(#clipPath8)" cx="554" cy="182" stroke="none"/> + <circle fill="none" r="14.5" clip-path="url(#clipPath8)" cx="554.5" cy="182.5"/> + <text x="517" xml:space="preserve" font-size="20px" y="161" clip-path="url(#clipPath9)" stroke="none">Opening</text> + <circle fill="rgb(255,245,181)" r="14" clip-path="url(#clipPath10)" cx="554" cy="573" stroke="none"/> + <circle fill="none" r="14.5" clip-path="url(#clipPath10)" cx="554.5" cy="573.5"/> + <text x="523" xml:space="preserve" font-size="20px" y="612" clip-path="url(#clipPath11)" stroke="none">Closing</text> + <circle fill="rgb(255,245,181)" r="14" clip-path="url(#clipPath12)" cx="33" cy="360" stroke="none"/> + <circle fill="none" r="14.5" clip-path="url(#clipPath12)" cx="33.5" cy="360.5"/> + <text x="16" xml:space="preserve" font-size="20px" y="339" clip-path="url(#clipPath13)" stroke="none">final</text> + <circle fill="rgb(255,245,181)" r="14" clip-path="url(#clipPath14)" cx="261" cy="117" stroke="none"/> + <circle fill="none" r="14.5" clip-path="url(#clipPath14)" cx="261.5" cy="117.5"/> + <text x="217" xml:space="preserve" font-size="20px" y="96" clip-path="url(#clipPath15)" stroke="none">openDoor</text> + <circle fill="rgb(255,245,181)" r="14" clip-path="url(#clipPath16)" cx="386" cy="117" stroke="none"/> + <circle fill="none" r="14.5" clip-path="url(#clipPath16)" cx="386.5" cy="117.5"/> + <text x="321" xml:space="preserve" font-size="20px" y="96" clip-path="url(#clipPath17)" stroke="none">motor.upwards</text> + <circle fill="rgb(255,245,181)" r="14" clip-path="url(#clipPath18)" cx="698" cy="117" stroke="none"/> + <circle fill="none" r="14.5" clip-path="url(#clipPath18)" cx="698.5" cy="117.5"/> + <text x="665" xml:space="preserve" font-size="20px" y="96" clip-path="url(#clipPath19)" stroke="none">stopper</text> + <circle fill="rgb(255,245,181)" r="14" clip-path="url(#clipPath20)" cx="800" cy="117" stroke="none"/> + <circle fill="none" r="14.5" clip-path="url(#clipPath20)" cx="800.5" cy="117.5"/> + <text x="752" xml:space="preserve" font-size="20px" y="96" clip-path="url(#clipPath21)" stroke="none">motor.stop</text> + <circle fill="rgb(255,245,181)" r="14" clip-path="url(#clipPath22)" cx="823" cy="642" stroke="none"/> + <circle fill="none" r="14.5" clip-path="url(#clipPath22)" cx="823.5" cy="642.5"/> + <text x="780" xml:space="preserve" font-size="20px" y="681" clip-path="url(#clipPath23)" stroke="none">closeDoor</text> + <circle fill="rgb(255,245,181)" r="14" clip-path="url(#clipPath24)" cx="686" cy="642" stroke="none"/> + <circle fill="none" r="14.5" clip-path="url(#clipPath24)" cx="686.5" cy="642.5"/> + <text x="608" xml:space="preserve" font-size="20px" y="681" clip-path="url(#clipPath25)" stroke="none">motor.downwards</text> + <circle fill="rgb(255,245,181)" r="14" clip-path="url(#clipPath26)" cx="404" cy="642" stroke="none"/> + <circle fill="none" r="14.5" clip-path="url(#clipPath26)" cx="404.5" cy="642.5"/> + <text x="371" xml:space="preserve" font-size="20px" y="681" clip-path="url(#clipPath27)" stroke="none">stopper</text> + <circle fill="rgb(255,245,181)" r="14" clip-path="url(#clipPath28)" cx="272" cy="642" stroke="none"/> + <circle fill="none" r="14.5" clip-path="url(#clipPath28)" cx="272.5" cy="642.5"/> + <text x="224" xml:space="preserve" font-size="20px" y="681" clip-path="url(#clipPath29)" stroke="none">motor.stop</text> + <circle fill="rgb(255,245,181)" r="14" clip-path="url(#clipPath30)" cx="518" cy="404" stroke="none"/> + <circle fill="none" r="14.5" clip-path="url(#clipPath30)" cx="518.5" cy="404.5"/> + <text x="413" xml:space="preserve" font-size="20px" y="413" clip-path="url(#clipPath31)" stroke="none">openDoor</text> + <circle fill="rgb(255,245,181)" r="14" clip-path="url(#clipPath32)" cx="415" cy="331" stroke="none"/> + <circle fill="none" r="14.5" clip-path="url(#clipPath32)" cx="415.5" cy="331.5"/> + <text x="350" xml:space="preserve" font-size="20px" y="370" clip-path="url(#clipPath33)" stroke="none">motor.upwards</text> + <circle fill="rgb(255,245,181)" r="14" clip-path="url(#clipPath34)" cx="590" cy="219" stroke="none"/> + <circle fill="none" r="14.5" clip-path="url(#clipPath34)" cx="590.5" cy="219.5"/> + <text x="607" xml:space="preserve" font-size="20px" y="228" clip-path="url(#clipPath35)" stroke="none">closeDoor</text> + <circle fill="rgb(255,245,181)" r="14" clip-path="url(#clipPath36)" cx="734" cy="289" stroke="none"/> + <circle fill="none" r="14.5" clip-path="url(#clipPath36)" cx="734.5" cy="289.5"/> + <text x="656" xml:space="preserve" font-size="20px" y="268" clip-path="url(#clipPath37)" stroke="none">motor.downwards</text> + <circle fill="rgb(255,245,181)" r="14" clip-path="url(#clipPath38)" cx="184" cy="289" stroke="none"/> + <circle fill="none" r="14.5" clip-path="url(#clipPath38)" cx="184.5" cy="289.5"/> + <text x="83" xml:space="preserve" font-size="20px" y="297" clip-path="url(#clipPath39)" stroke="none">shutdown</text> + <circle fill="rgb(255,245,181)" r="14" clip-path="url(#clipPath40)" cx="284" cy="375" stroke="none"/> + <circle fill="none" r="14.5" clip-path="url(#clipPath40)" cx="284.5" cy="375.5"/> + <text x="241" xml:space="preserve" font-size="20px" y="354" clip-path="url(#clipPath41)" stroke="none">closeDoor</text> + <circle fill="rgb(255,245,181)" r="14" clip-path="url(#clipPath42)" cx="686" cy="717" stroke="none"/> + <circle fill="none" r="14.5" clip-path="url(#clipPath42)" cx="686.5" cy="717.5"/> + <text x="703" xml:space="preserve" font-size="20px" y="727" clip-path="url(#clipPath43)" stroke="none">closeDoor</text> + <circle fill="rgb(255,245,181)" r="14" clip-path="url(#clipPath44)" cx="823" cy="375" stroke="none"/> + <circle fill="none" r="14.5" clip-path="url(#clipPath44)" cx="823.5" cy="375.5"/> + <text x="779" xml:space="preserve" font-size="20px" y="354" clip-path="url(#clipPath45)" stroke="none">openDoor</text> + <circle fill="rgb(255,245,181)" r="14" clip-path="url(#clipPath46)" cx="452" cy="53" stroke="none"/> + <circle fill="none" r="14.5" clip-path="url(#clipPath46)" cx="452.5" cy="53.5"/> + <text x="408" xml:space="preserve" font-size="20px" y="32" clip-path="url(#clipPath47)" stroke="none">openDoor</text> + <rect x="114" y="442" clip-path="url(#clipPath48)" fill="rgb(253,206,137)" width="20" height="60" stroke="none"/> + <rect fill="none" x="114" width="19" height="59" y="442" clip-path="url(#clipPath48)"/> + <text x="94" xml:space="preserve" font-size="20px" y="525" clip-path="url(#clipPath49)" stroke="none">default</text> + <rect x="323" y="153" clip-path="url(#clipPath50)" fill="rgb(253,206,137)" width="20" height="60" stroke="none"/> + <rect fill="none" x="323" width="19" height="59" y="153" clip-path="url(#clipPath50)"/> + <text x="288" xml:space="preserve" font-size="20px" y="236" clip-path="url(#clipPath51)" stroke="none">openDoor</text> + <rect x="738" y="153" clip-path="url(#clipPath52)" fill="rgb(253,206,137)" width="20" height="60" stroke="none"/> + <rect fill="none" x="738" width="19" height="59" y="153" clip-path="url(#clipPath52)"/> + <text x="718" xml:space="preserve" font-size="20px" y="236" clip-path="url(#clipPath53)" stroke="none">default</text> + <rect x="738" y="544" clip-path="url(#clipPath54)" fill="rgb(253,206,137)" width="20" height="60" stroke="none"/> + <rect fill="none" x="738" width="19" height="59" y="544" clip-path="url(#clipPath54)"/> + <text x="704" xml:space="preserve" font-size="20px" y="627" clip-path="url(#clipPath55)" stroke="none">closeDoor</text> + <rect x="323" y="544" clip-path="url(#clipPath56)" fill="rgb(253,206,137)" width="20" height="60" stroke="none"/> + <rect fill="none" x="323" width="19" height="59" y="544" clip-path="url(#clipPath56)"/> + <text x="303" xml:space="preserve" font-size="20px" y="627" clip-path="url(#clipPath57)" stroke="none">default</text> + <rect x="485" y="275" clip-path="url(#clipPath58)" fill="rgb(253,206,137)" width="20" height="60" stroke="none"/> + <rect fill="none" x="485" width="19" height="59" y="275" clip-path="url(#clipPath58)"/> + <text x="450" xml:space="preserve" font-size="20px" y="268" clip-path="url(#clipPath59)" stroke="none">openDoor</text> + <rect x="612" y="275" clip-path="url(#clipPath60)" fill="rgb(253,206,137)" width="20" height="60" stroke="none"/> + <rect fill="none" x="612" width="19" height="59" y="275" clip-path="url(#clipPath60)"/> + <text x="578" xml:space="preserve" font-size="20px" y="358" clip-path="url(#clipPath61)" stroke="none">closeDoor</text> + <rect x="138" y="331" clip-path="url(#clipPath62)" fill="rgb(253,206,137)" width="20" height="60" stroke="none"/> + <rect fill="none" x="138" width="19" height="59" y="331" clip-path="url(#clipPath62)"/> + <text x="118" xml:space="preserve" font-size="20px" y="414" clip-path="url(#clipPath63)" stroke="none">default</text> + <rect x="353" y="404" clip-path="url(#clipPath64)" fill="rgb(253,206,137)" width="20" height="60" stroke="none"/> + <rect fill="none" x="353" width="19" height="59" y="404" clip-path="url(#clipPath64)"/> + <text x="319" xml:space="preserve" font-size="20px" y="487" clip-path="url(#clipPath65)" stroke="none">closeDoor</text> + <rect x="540" y="649" clip-path="url(#clipPath66)" fill="rgb(253,206,137)" width="20" height="60" stroke="none"/> + <rect fill="none" x="540" width="19" height="59" y="649" clip-path="url(#clipPath66)"/> + <text x="506" xml:space="preserve" font-size="20px" y="732" clip-path="url(#clipPath67)" stroke="none">closeDoor</text> + <rect x="749" y="404" clip-path="url(#clipPath68)" fill="rgb(253,206,137)" width="20" height="60" stroke="none"/> + <rect fill="none" x="749" width="19" height="59" y="404" clip-path="url(#clipPath68)"/> + <text x="714" xml:space="preserve" font-size="20px" y="487" clip-path="url(#clipPath69)" stroke="none">openDoor</text> + <rect x="545" y="39" clip-path="url(#clipPath70)" fill="rgb(253,206,137)" width="20" height="60" stroke="none"/> + <rect fill="none" x="545" width="19" height="59" y="39" clip-path="url(#clipPath70)"/> + <text x="510" xml:space="preserve" font-size="20px" y="32" clip-path="url(#clipPath71)" stroke="none">openDoor</text> + <line clip-path="url(#clipPath72)" fill="none" x1="49" x2="114" y1="475" y2="475" stroke-width="2.1"/> + <line clip-path="url(#clipPath73)" fill="none" x1="107" x2="114" y1="478" y2="475" stroke-width="2.1"/> + <line clip-path="url(#clipPath73)" fill="none" x1="114" x2="107" y1="475" y2="472" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="216" x2="216" y1="457" y2="182" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="216" x2="323" y1="182" y2="182" stroke-width="2.1"/> + <line clip-path="url(#clipPath74)" fill="none" x1="316" x2="323" y1="185" y2="182" stroke-width="2.1"/> + <line clip-path="url(#clipPath74)" fill="none" x1="323" x2="316" y1="182" y2="179" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="262" x2="262" y1="133" y2="165" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="262" x2="323" y1="165" y2="165" stroke-width="2.1"/> + <line clip-path="url(#clipPath75)" fill="none" x1="316" x2="323" y1="168" y2="165" stroke-width="2.1"/> + <line clip-path="url(#clipPath75)" fill="none" x1="323" x2="316" y1="165" y2="162" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="570" x2="738" y1="183" y2="183" stroke-width="2.1"/> + <line clip-path="url(#clipPath76)" fill="none" x1="731" x2="738" y1="186" y2="183" stroke-width="2.1"/> + <line clip-path="url(#clipPath76)" fill="none" x1="738" x2="731" y1="183" y2="180" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="699" x2="699" y1="133" y2="165" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="699" x2="738" y1="165" y2="165" stroke-width="2.1"/> + <line clip-path="url(#clipPath77)" fill="none" x1="731" x2="738" y1="168" y2="165" stroke-width="2.1"/> + <line clip-path="url(#clipPath77)" fill="none" x1="738" x2="731" y1="165" y2="162" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="894" x2="894" y1="487" y2="571" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="894" x2="758" y1="571" y2="571" stroke-width="2.1"/> + <line clip-path="url(#clipPath78)" fill="none" x1="765" x2="758" y1="568" y2="571" stroke-width="2.1"/> + <line clip-path="url(#clipPath78)" fill="none" x1="758" x2="765" y1="571" y2="574" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="824" x2="824" y1="628" y2="589" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="824" x2="758" y1="589" y2="589" stroke-width="2.1"/> + <line clip-path="url(#clipPath79)" fill="none" x1="765" x2="758" y1="586" y2="589" stroke-width="2.1"/> + <line clip-path="url(#clipPath79)" fill="none" x1="758" x2="765" y1="589" y2="592" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="540" x2="343" y1="570" y2="570" stroke-width="2.1"/> + <line clip-path="url(#clipPath80)" fill="none" x1="350" x2="343" y1="567" y2="570" stroke-width="2.1"/> + <line clip-path="url(#clipPath80)" fill="none" x1="343" x2="350" y1="570" y2="573" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="405" x2="405" y1="628" y2="589" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="405" x2="343" y1="589" y2="589" stroke-width="2.1"/> + <line clip-path="url(#clipPath81)" fill="none" x1="350" x2="343" y1="586" y2="589" stroke-width="2.1"/> + <line clip-path="url(#clipPath81)" fill="none" x1="343" x2="350" y1="589" y2="592" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="546" x2="546" y1="559" y2="307" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="546" x2="505" y1="307" y2="307" stroke-width="2.1"/> + <line clip-path="url(#clipPath82)" fill="none" x1="512" x2="505" y1="304" y2="307" stroke-width="2.1"/> + <line clip-path="url(#clipPath82)" fill="none" x1="505" x2="512" y1="307" y2="310" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="522" x2="522" y1="390" y2="325" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="522" x2="505" y1="325" y2="325" stroke-width="2.1"/> + <line clip-path="url(#clipPath83)" fill="none" x1="512" x2="505" y1="322" y2="325" stroke-width="2.1"/> + <line clip-path="url(#clipPath83)" fill="none" x1="505" x2="512" y1="325" y2="328" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="564" x2="564" y1="198" y2="305" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="564" x2="612" y1="305" y2="305" stroke-width="2.1"/> + <line clip-path="url(#clipPath84)" fill="none" x1="605" x2="612" y1="308" y2="305" stroke-width="2.1"/> + <line clip-path="url(#clipPath84)" fill="none" x1="612" x2="605" y1="305" y2="302" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="588" x2="588" y1="235" y2="289" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="588" x2="612" y1="289" y2="289" stroke-width="2.1"/> + <line clip-path="url(#clipPath85)" fill="none" x1="605" x2="612" y1="292" y2="289" stroke-width="2.1"/> + <line clip-path="url(#clipPath85)" fill="none" x1="612" x2="605" y1="289" y2="286" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="204" x2="204" y1="457" y2="361" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="204" x2="158" y1="361" y2="361" stroke-width="2.1"/> + <line clip-path="url(#clipPath86)" fill="none" x1="165" x2="158" y1="358" y2="361" stroke-width="2.1"/> + <line clip-path="url(#clipPath86)" fill="none" x1="158" x2="165" y1="361" y2="364" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="185" x2="185" y1="305" y2="343" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="185" x2="158" y1="343" y2="343" stroke-width="2.1"/> + <line clip-path="url(#clipPath87)" fill="none" x1="165" x2="158" y1="340" y2="343" stroke-width="2.1"/> + <line clip-path="url(#clipPath87)" fill="none" x1="158" x2="165" y1="343" y2="346" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="229" x2="229" y1="457" y2="439" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="229" x2="353" y1="439" y2="439" stroke-width="2.1"/> + <line clip-path="url(#clipPath88)" fill="none" x1="346" x2="353" y1="442" y2="439" stroke-width="2.1"/> + <line clip-path="url(#clipPath88)" fill="none" x1="353" x2="346" y1="439" y2="436" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="285" x2="285" y1="391" y2="420" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="285" x2="353" y1="420" y2="420" stroke-width="2.1"/> + <line clip-path="url(#clipPath89)" fill="none" x1="346" x2="353" y1="423" y2="420" stroke-width="2.1"/> + <line clip-path="url(#clipPath89)" fill="none" x1="353" x2="346" y1="420" y2="417" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="540" x2="516" y1="583" y2="583" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="516" x2="516" y1="583" y2="679" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="516" x2="540" y1="679" y2="679" stroke-width="2.1"/> + <line clip-path="url(#clipPath90)" fill="none" x1="533" x2="540" y1="682" y2="679" stroke-width="2.1"/> + <line clip-path="url(#clipPath90)" fill="none" x1="540" x2="533" y1="679" y2="676" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="672" x2="612" y1="714" y2="714" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="612" x2="612" y1="714" y2="697" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="612" x2="560" y1="697" y2="697" stroke-width="2.1"/> + <line clip-path="url(#clipPath91)" fill="none" x1="567" x2="560" y1="694" y2="697" stroke-width="2.1"/> + <line clip-path="url(#clipPath91)" fill="none" x1="560" x2="567" y1="697" y2="700" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="882" x2="882" y1="457" y2="433" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="882" x2="769" y1="433" y2="433" stroke-width="2.1"/> + <line clip-path="url(#clipPath92)" fill="none" x1="776" x2="769" y1="430" y2="433" stroke-width="2.1"/> + <line clip-path="url(#clipPath92)" fill="none" x1="769" x2="776" y1="433" y2="436" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="823" x2="823" y1="391" y2="415" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="823" x2="769" y1="415" y2="415" stroke-width="2.1"/> + <line clip-path="url(#clipPath93)" fill="none" x1="776" x2="769" y1="412" y2="415" stroke-width="2.1"/> + <line clip-path="url(#clipPath93)" fill="none" x1="769" x2="776" y1="415" y2="418" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="540" x2="504" y1="171" y2="171" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="504" x2="504" y1="171" y2="69" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="504" x2="545" y1="69" y2="69" stroke-width="2.1"/> + <line clip-path="url(#clipPath94)" fill="none" x1="538" x2="545" y1="72" y2="69" stroke-width="2.1"/> + <line clip-path="url(#clipPath94)" fill="none" x1="545" x2="538" y1="69" y2="66" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="468" x2="545" y1="53" y2="53" stroke-width="2.1"/> + <line clip-path="url(#clipPath95)" fill="none" x1="538" x2="545" y1="56" y2="53" stroke-width="2.1"/> + <line clip-path="url(#clipPath95)" fill="none" x1="545" x2="538" y1="53" y2="50" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="134" x2="199" y1="475" y2="475" stroke-width="2.1"/> + <line clip-path="url(#clipPath96)" fill="none" x1="192" x2="199" y1="478" y2="475" stroke-width="2.1"/> + <line clip-path="url(#clipPath96)" fill="none" x1="199" x2="192" y1="475" y2="472" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="343" x2="540" y1="183" y2="183" stroke-width="2.1"/> + <line clip-path="url(#clipPath97)" fill="none" x1="533" x2="540" y1="186" y2="183" stroke-width="2.1"/> + <line clip-path="url(#clipPath97)" fill="none" x1="540" x2="533" y1="183" y2="180" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="343" x2="387" y1="165" y2="165" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="387" x2="387" y1="165" y2="133" stroke-width="2.1"/> + <line clip-path="url(#clipPath98)" fill="none" x1="390" x2="387" y1="140" y2="133" stroke-width="2.1"/> + <line clip-path="url(#clipPath98)" fill="none" x1="387" x2="384" y1="133" y2="140" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="758" x2="891" y1="183" y2="183" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="891" x2="891" y1="183" y2="457" stroke-width="2.1"/> + <line clip-path="url(#clipPath99)" fill="none" x1="888" x2="891" y1="450" y2="457" stroke-width="2.1"/> + <line clip-path="url(#clipPath99)" fill="none" x1="891" x2="894" y1="457" y2="450" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="758" x2="798" y1="165" y2="165" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="798" x2="798" y1="165" y2="133" stroke-width="2.1"/> + <line clip-path="url(#clipPath100)" fill="none" x1="801" x2="798" y1="140" y2="133" stroke-width="2.1"/> + <line clip-path="url(#clipPath100)" fill="none" x1="798" x2="795" y1="133" y2="140" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="738" x2="570" y1="571" y2="571" stroke-width="2.1"/> + <line clip-path="url(#clipPath101)" fill="none" x1="577" x2="570" y1="568" y2="571" stroke-width="2.1"/> + <line clip-path="url(#clipPath101)" fill="none" x1="570" x2="577" y1="571" y2="574" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="738" x2="687" y1="589" y2="589" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="687" x2="687" y1="589" y2="628" stroke-width="2.1"/> + <line clip-path="url(#clipPath102)" fill="none" x1="684" x2="687" y1="621" y2="628" stroke-width="2.1"/> + <line clip-path="url(#clipPath102)" fill="none" x1="687" x2="690" y1="628" y2="621" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="323" x2="216" y1="570" y2="570" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="216" x2="216" y1="570" y2="487" stroke-width="2.1"/> + <line clip-path="url(#clipPath103)" fill="none" x1="219" x2="216" y1="494" y2="487" stroke-width="2.1"/> + <line clip-path="url(#clipPath103)" fill="none" x1="216" x2="213" y1="487" y2="494" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="323" x2="273" y1="589" y2="589" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="273" x2="273" y1="589" y2="628" stroke-width="2.1"/> + <line clip-path="url(#clipPath104)" fill="none" x1="270" x2="273" y1="621" y2="628" stroke-width="2.1"/> + <line clip-path="url(#clipPath104)" fill="none" x1="273" x2="276" y1="628" y2="621" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="485" x2="432" y1="307" y2="307" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="432" x2="432" y1="307" y2="246" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="432" x2="546" y1="246" y2="246" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="546" x2="546" y1="246" y2="198" stroke-width="2.1"/> + <line clip-path="url(#clipPath105)" fill="none" x1="549" x2="546" y1="205" y2="198" stroke-width="2.1"/> + <line clip-path="url(#clipPath105)" fill="none" x1="546" x2="543" y1="198" y2="205" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="485" x2="431" y1="326" y2="326" stroke-width="2.1"/> + <line clip-path="url(#clipPath106)" fill="none" x1="438" x2="431" y1="323" y2="326" stroke-width="2.1"/> + <line clip-path="url(#clipPath106)" fill="none" x1="431" x2="438" y1="326" y2="329" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="632" x2="678" y1="305" y2="305" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="678" x2="678" y1="305" y2="367" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="678" x2="564" y1="367" y2="367" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="564" x2="564" y1="367" y2="559" stroke-width="2.1"/> + <line clip-path="url(#clipPath107)" fill="none" x1="561" x2="564" y1="552" y2="559" stroke-width="2.1"/> + <line clip-path="url(#clipPath107)" fill="none" x1="564" x2="567" y1="559" y2="552" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="632" x2="720" y1="289" y2="289" stroke-width="2.1"/> + <line clip-path="url(#clipPath108)" fill="none" x1="713" x2="720" y1="292" y2="289" stroke-width="2.1"/> + <line clip-path="url(#clipPath108)" fill="none" x1="720" x2="713" y1="289" y2="286" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="138" x2="49" y1="361" y2="361" stroke-width="2.1"/> + <line clip-path="url(#clipPath109)" fill="none" x1="56" x2="49" y1="358" y2="361" stroke-width="2.1"/> + <line clip-path="url(#clipPath109)" fill="none" x1="49" x2="56" y1="361" y2="364" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="373" x2="425" y1="439" y2="439" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="425" x2="425" y1="439" y2="511" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="425" x2="228" y1="511" y2="511" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="228" x2="228" y1="511" y2="487" stroke-width="2.1"/> + <line clip-path="url(#clipPath110)" fill="none" x1="231" x2="228" y1="494" y2="487" stroke-width="2.1"/> + <line clip-path="url(#clipPath110)" fill="none" x1="228" x2="225" y1="487" y2="494" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="560" x2="594" y1="678" y2="678" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="594" x2="594" y1="678" y2="583" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="594" x2="570" y1="583" y2="583" stroke-width="2.1"/> + <line clip-path="url(#clipPath111)" fill="none" x1="577" x2="570" y1="580" y2="583" stroke-width="2.1"/> + <line clip-path="url(#clipPath111)" fill="none" x1="570" x2="577" y1="583" y2="586" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="749" x2="702" y1="434" y2="434" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="702" x2="702" y1="434" y2="511" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="702" x2="882" y1="511" y2="511" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="882" x2="882" y1="511" y2="487" stroke-width="2.1"/> + <line clip-path="url(#clipPath112)" fill="none" x1="885" x2="882" y1="494" y2="487" stroke-width="2.1"/> + <line clip-path="url(#clipPath112)" fill="none" x1="882" x2="879" y1="487" y2="494" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="565" x2="606" y1="69" y2="69" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="606" x2="606" y1="69" y2="171" stroke-width="2.1"/> + <line clip-path="url(#clipPath72)" fill="none" x1="606" x2="570" y1="171" y2="171" stroke-width="2.1"/> + <line clip-path="url(#clipPath113)" fill="none" x1="577" x2="570" y1="168" y2="171" stroke-width="2.1"/> + <line clip-path="url(#clipPath113)" fill="none" x1="570" x2="577" y1="171" y2="174" stroke-width="2.1"/> + </g> + </g> +</svg> diff --git a/model2model/examples-etl/petrinets/switch.petrinet b/model2model/examples-etl/petrinets/switch.petrinet new file mode 100644 index 0000000000000000000000000000000000000000..6c06fccecc453e2dc99d18ebef1a75743ba2daf2 --- /dev/null +++ b/model2model/examples-etl/petrinets/switch.petrinet @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="ASCII"?> +<petrinet:PetriNet xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:petrinet="http://www.example.org/petrinet" name="Switch"> + <arcs xsi:type="petrinet:IncomingArc" target="//@elements.3" source="//@elements.0"/> + <arcs xsi:type="petrinet:OutgoingArc" source="//@elements.3" target="//@elements.2"/> + <arcs xsi:type="petrinet:IncomingArc" target="//@elements.4" source="//@elements.2"/> + <arcs xsi:type="petrinet:OutgoingArc" source="//@elements.4" target="//@elements.1"/> + <arcs xsi:type="petrinet:IncomingArc" target="//@elements.4" source="//@elements.5"/> + <arcs xsi:type="petrinet:IncomingArc" target="//@elements.6" source="//@elements.1"/> + <arcs xsi:type="petrinet:OutgoingArc" source="//@elements.6" target="//@elements.2"/> + <arcs xsi:type="petrinet:IncomingArc" target="//@elements.6" source="//@elements.7"/> + <elements xsi:type="petrinet:Place" identifier="initial"> + <token/> + </elements> + <elements xsi:type="petrinet:Place" identifier="on"/> + <elements xsi:type="petrinet:Place" identifier="off"/> + <elements xsi:type="petrinet:Transition" identifier="default"/> + <elements xsi:type="petrinet:Transition" identifier="flip"/> + <elements xsi:type="petrinet:Place" identifier="flip"/> + <elements xsi:type="petrinet:Transition" identifier="flip"/> + <elements xsi:type="petrinet:Place" identifier="flip"/> +</petrinet:PetriNet> diff --git a/model2model/examples-etl/petrinets/switch.svg b/model2model/examples-etl/petrinets/switch.svg new file mode 100644 index 0000000000000000000000000000000000000000..9a34ece1e2968d8d3c31457b933e9cafa16321f9 --- /dev/null +++ b/model2model/examples-etl/petrinets/switch.svg @@ -0,0 +1,148 @@ +<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-dasharray="none" shape-rendering="auto" font-family="'Dialog'" width="410" text-rendering="auto" fill-opacity="1" contentScriptType="text/ecmascript" color-interpolation="auto" color-rendering="auto" preserveAspectRatio="xMidYMid meet" font-size="12px" xmlns:diagram="http://www.eclipse.org/sirius/diagram/1.1.0" diagram:semanticRoot="platform:/resource/example/petrinets/switch.petrinet#/" viewBox="0 0 410 234" fill="black" stroke="black" image-rendering="auto" stroke-miterlimit="10" zoomAndPan="magnify" version="1.0" stroke-linecap="square" stroke-linejoin="miter" contentStyleType="text/css" font-style="normal" height="234" stroke-width="1" stroke-dashoffset="0" font-weight="normal" stroke-opacity="1"> + <!--Generated by the Batik Graphics2D SVG Generator--> + <defs id="genericDefs"/> + <g> + <defs id="defs1"> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath1"> + <path d="M18 105 L50 105 L50 137 L18 137 L18 105 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath2"> + <path d="M9 76 L62 76 L62 106 L9 106 L9 76 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath3"> + <path d="M40 115 L62 115 L62 137 L40 137 L40 115 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath4"> + <path d="M340 106 L372 106 L372 138 L340 138 L340 106 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath5"> + <path d="M371 107 L401 107 L401 137 L371 137 L371 107 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath6"> + <path d="M160 105 L192 105 L192 137 L160 137 L160 105 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath7"> + <path d="M191 106 L221 106 L221 136 L191 136 L191 106 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath8"> + <path d="M160 28 L192 28 L192 60 L160 60 L160 28 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath9"> + <path d="M131 28 L164 28 L164 58 L131 58 L131 28 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath10"> + <path d="M340 193 L372 193 L372 225 L340 225 L340 193 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath11"> + <path d="M371 193 L404 193 L404 223 L371 223 L371 193 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath12"> + <path d="M100 90 L122 90 L122 152 L100 152 L100 90 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath13"> + <path d="M80 151 L147 151 L147 181 L80 181 L80 151 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath14"> + <path d="M250 46 L272 46 L272 108 L250 108 L250 46 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath15"> + <path d="M246 17 L279 17 L279 47 L246 47 L246 17 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath16"> + <path d="M250 134 L272 134 L272 196 L250 196 L250 134 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath17"> + <path d="M246 195 L279 195 L279 225 L246 225 L246 195 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath18"> + <path d="M-1 -1 L411 -1 L411 235 L-1 235 L-1 -1 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath19"> + <path d="M92 114 L104 114 L104 125 L92 125 L92 114 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath20"> + <path d="M242 72 L254 72 L254 83 L242 83 L242 72 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath21"> + <path d="M242 60 L254 60 L254 71 L242 71 L242 60 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath22"> + <path d="M269 160 L281 160 L281 171 L269 171 L269 160 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath23"> + <path d="M269 174 L281 174 L281 185 L269 185 L269 174 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath24"> + <path d="M152 114 L164 114 L164 125 L152 125 L152 114 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath25"> + <path d="M351 98 L362 98 L362 110 L351 110 L351 98 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath26"> + <path d="M171 134 L182 134 L182 146 L171 146 L171 134 Z"/> + </clipPath> + </defs> + <g font-size="15px" fill="rgb(255,245,181)" font-family="'Segoe UI'" stroke-linejoin="round" stroke="rgb(255,245,181)" stroke-width="0" stroke-miterlimit="0"> + <circle r="14" clip-path="url(#clipPath1)" cx="33" cy="120" stroke="none"/> + </g> + <g font-size="15px" stroke-width="1.1" font-family="'Segoe UI'" stroke-linecap="butt"> + <circle fill="none" r="14.5" clip-path="url(#clipPath1)" cx="33.5" cy="120.5"/> + <text x="10" xml:space="preserve" font-size="20px" y="99" clip-path="url(#clipPath2)" stroke="none">initial</text> + <circle r="9" clip-path="url(#clipPath3)" cx="50" cy="125" stroke="none"/> + <circle fill="none" stroke-width="0.1" r="9.5" clip-path="url(#clipPath3)" cx="50.5" cy="125.5"/> + <circle clip-path="url(#clipPath4)" fill="rgb(255,245,181)" r="14" cx="355" cy="121" stroke="none" stroke-width="0.1"/> + <circle fill="none" r="14.5" clip-path="url(#clipPath4)" cx="355.5" cy="121.5"/> + <text x="372" xml:space="preserve" font-size="20px" y="130" clip-path="url(#clipPath5)" stroke="none">on</text> + <circle fill="rgb(255,245,181)" r="14" clip-path="url(#clipPath6)" cx="175" cy="120" stroke="none"/> + <circle fill="none" r="14.5" clip-path="url(#clipPath6)" cx="175.5" cy="120.5"/> + <text x="192" xml:space="preserve" font-size="20px" y="129" clip-path="url(#clipPath7)" stroke="none">off</text> + <circle fill="rgb(255,245,181)" r="14" clip-path="url(#clipPath8)" cx="175" cy="43" stroke="none"/> + <circle fill="none" r="14.5" clip-path="url(#clipPath8)" cx="175.5" cy="43.5"/> + <text x="132" xml:space="preserve" font-size="20px" y="51" clip-path="url(#clipPath9)" stroke="none">flip</text> + <circle fill="rgb(255,245,181)" r="14" clip-path="url(#clipPath10)" cx="355" cy="208" stroke="none"/> + <circle fill="none" r="14.5" clip-path="url(#clipPath10)" cx="355.5" cy="208.5"/> + <text x="372" xml:space="preserve" font-size="20px" y="216" clip-path="url(#clipPath11)" stroke="none">flip</text> + <rect x="101" y="91" clip-path="url(#clipPath12)" fill="rgb(253,206,137)" width="20" height="60" stroke="none"/> + <rect fill="none" x="101" width="19" height="59" y="91" clip-path="url(#clipPath12)"/> + <text x="81" xml:space="preserve" font-size="20px" y="174" clip-path="url(#clipPath13)" stroke="none">default</text> + <rect x="251" y="47" clip-path="url(#clipPath14)" fill="rgb(253,206,137)" width="20" height="60" stroke="none"/> + <rect fill="none" x="251" width="19" height="59" y="47" clip-path="url(#clipPath14)"/> + <text x="247" xml:space="preserve" font-size="20px" y="40" clip-path="url(#clipPath15)" stroke="none">flip</text> + <rect x="251" y="135" clip-path="url(#clipPath16)" fill="rgb(253,206,137)" width="20" height="60" stroke="none"/> + <rect fill="none" x="251" width="19" height="59" y="135" clip-path="url(#clipPath16)"/> + <text x="247" xml:space="preserve" font-size="20px" y="218" clip-path="url(#clipPath17)" stroke="none">flip</text> + <line clip-path="url(#clipPath18)" fill="none" x1="49" x2="101" y1="119" y2="119" stroke-width="2.1"/> + <line clip-path="url(#clipPath19)" fill="none" x1="94" x2="101" y1="122" y2="119" stroke-width="2.1"/> + <line clip-path="url(#clipPath19)" fill="none" x1="101" x2="94" y1="119" y2="116" stroke-width="2.1"/> + <line clip-path="url(#clipPath18)" fill="none" x1="176" x2="176" y1="106" y2="77" stroke-width="2.1"/> + <line clip-path="url(#clipPath18)" fill="none" x1="176" x2="251" y1="77" y2="77" stroke-width="2.1"/> + <line clip-path="url(#clipPath20)" fill="none" x1="244" x2="251" y1="80" y2="77" stroke-width="2.1"/> + <line clip-path="url(#clipPath20)" fill="none" x1="251" x2="244" y1="77" y2="74" stroke-width="2.1"/> + <line clip-path="url(#clipPath18)" fill="none" x1="191" x2="221" y1="42" y2="42" stroke-width="2.1"/> + <line clip-path="url(#clipPath18)" fill="none" x1="221" x2="221" y1="42" y2="65" stroke-width="2.1"/> + <line clip-path="url(#clipPath18)" fill="none" x1="221" x2="251" y1="65" y2="65" stroke-width="2.1"/> + <line clip-path="url(#clipPath21)" fill="none" x1="244" x2="251" y1="68" y2="65" stroke-width="2.1"/> + <line clip-path="url(#clipPath21)" fill="none" x1="251" x2="244" y1="65" y2="62" stroke-width="2.1"/> + <line clip-path="url(#clipPath18)" fill="none" x1="357" x2="357" y1="137" y2="165" stroke-width="2.1"/> + <line clip-path="url(#clipPath18)" fill="none" x1="357" x2="271" y1="165" y2="165" stroke-width="2.1"/> + <line clip-path="url(#clipPath22)" fill="none" x1="278" x2="271" y1="162" y2="165" stroke-width="2.1"/> + <line clip-path="url(#clipPath22)" fill="none" x1="271" x2="278" y1="165" y2="168" stroke-width="2.1"/> + <line clip-path="url(#clipPath18)" fill="none" x1="341" x2="311" y1="207" y2="207" stroke-width="2.1"/> + <line clip-path="url(#clipPath18)" fill="none" x1="311" x2="311" y1="207" y2="179" stroke-width="2.1"/> + <line clip-path="url(#clipPath18)" fill="none" x1="311" x2="271" y1="179" y2="179" stroke-width="2.1"/> + <line clip-path="url(#clipPath23)" fill="none" x1="278" x2="271" y1="176" y2="179" stroke-width="2.1"/> + <line clip-path="url(#clipPath23)" fill="none" x1="271" x2="278" y1="179" y2="182" stroke-width="2.1"/> + <line clip-path="url(#clipPath18)" fill="none" x1="121" x2="161" y1="119" y2="119" stroke-width="2.1"/> + <line clip-path="url(#clipPath24)" fill="none" x1="154" x2="161" y1="122" y2="119" stroke-width="2.1"/> + <line clip-path="url(#clipPath24)" fill="none" x1="161" x2="154" y1="119" y2="116" stroke-width="2.1"/> + <line clip-path="url(#clipPath18)" fill="none" x1="271" x2="356" y1="77" y2="77" stroke-width="2.1"/> + <line clip-path="url(#clipPath18)" fill="none" x1="356" x2="356" y1="77" y2="107" stroke-width="2.1"/> + <line clip-path="url(#clipPath25)" fill="none" x1="353" x2="356" y1="100" y2="107" stroke-width="2.1"/> + <line clip-path="url(#clipPath25)" fill="none" x1="356" x2="359" y1="107" y2="100" stroke-width="2.1"/> + <line clip-path="url(#clipPath18)" fill="none" x1="251" x2="176" y1="164" y2="164" stroke-width="2.1"/> + <line clip-path="url(#clipPath18)" fill="none" x1="176" x2="176" y1="164" y2="136" stroke-width="2.1"/> + <line clip-path="url(#clipPath26)" fill="none" x1="179" x2="176" y1="143" y2="136" stroke-width="2.1"/> + <line clip-path="url(#clipPath26)" fill="none" x1="176" x2="173" y1="136" y2="143" stroke-width="2.1"/> + </g> + </g> +</svg> diff --git a/model2model/examples-etl/representations.aird b/model2model/examples-etl/representations.aird new file mode 100644 index 0000000000000000000000000000000000000000..081f6b9ee893623c58279bb795d8789660e6283f --- /dev/null +++ b/model2model/examples-etl/representations.aird @@ -0,0 +1,2932 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:description="http://www.eclipse.org/sirius/description/1.1.0" xmlns:description_1="http://www.eclipse.org/sirius/diagram/description/1.1.0" xmlns:diagram="http://www.eclipse.org/sirius/diagram/1.1.0" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.3/notation" xmlns:petrinet="http://www.example.org/petrinet" xmlns:statemachine="http://www.swt.org/most/statemachine" xmlns:style="http://www.eclipse.org/sirius/diagram/description/style/1.1.0" xmlns:viewpoint="http://www.eclipse.org/sirius/1.1.0" xsi:schemaLocation="http://www.eclipse.org/sirius/description/1.1.0 http://www.eclipse.org/sirius/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/style/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description/style"> + <viewpoint:DAnalysis uid="_JzAvsHIhEe2-Np0Hy5W05A" selectedViews="_faHbAHIhEe2-Np0Hy5W05A _5LE60HIlEe271L-91z2s1A" version="15.2.0.202303281325"> + <semanticResources>statemachines/garagedoor.statemachine</semanticResources> + <semanticResources>statemachines/switch.statemachine</semanticResources> + <semanticResources>petrinets/garagedoor.petrinet</semanticResources> + <semanticResources>petrinets/switch.petrinet</semanticResources> + <ownedViews xmi:type="viewpoint:DView" uid="_faHbAHIhEe2-Np0Hy5W05A"> + <viewpoint xmi:type="description:Viewpoint" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']"/> + <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_gwRVoHIhEe2-Np0Hy5W05A" name="Editor Switch" repPath="#_gwQHgHIhEe2-Np0Hy5W05A" changeId="1718631835427"> + <description xmi:type="description_1:DiagramDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']"/> + <target xmi:type="statemachine:StateMachine" href="statemachines/switch.statemachine#Switch"/> + </ownedRepresentationDescriptors> + <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_s4P0EXIhEe2-Np0Hy5W05A" name="Editor GarageDoor" repPath="#_s4PNAHIhEe2-Np0Hy5W05A" changeId="1718631816049"> + <description xmi:type="description_1:DiagramDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']"/> + <target xmi:type="statemachine:StateMachine" href="statemachines/garagedoor.statemachine#Garage Door"/> + </ownedRepresentationDescriptors> + </ownedViews> + <ownedViews xmi:type="viewpoint:DView" uid="_5LE60HIlEe271L-91z2s1A"> + <viewpoint xmi:type="description:Viewpoint" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']"/> + <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_7ZmGMXI4Ee2-kruQw0QW4w" name="Viewer GarageDoor" repPath="#_7ZlfIHI4Ee2-kruQw0QW4w" changeId="1718631816049"> + <description xmi:type="description_1:DiagramDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']"/> + <target xmi:type="petrinet:PetriNet" href="petrinets/garagedoor.petrinet#/"/> + </ownedRepresentationDescriptors> + <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_v4aYMCywEe-4er9RFtOKtQ" name="Viewer Switch" repPath="#_v4ZxICywEe-4er9RFtOKtQ" changeId="1718632424390"> + <description xmi:type="description_1:DiagramDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']"/> + <target xmi:type="petrinet:PetriNet" href="petrinets/switch.petrinet#/"/> + </ownedRepresentationDescriptors> + </ownedViews> + </viewpoint:DAnalysis> + <diagram:DSemanticDiagram uid="_gwQHgHIhEe2-Np0Hy5W05A"> + <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_gwR8sXIhEe2-Np0Hy5W05A" source="GMF_DIAGRAMS"> + <data xmi:type="notation:Diagram" xmi:id="_gwR8snIhEe2-Np0Hy5W05A" type="Sirius" element="_gwQHgHIhEe2-Np0Hy5W05A" measurementUnit="Pixel"> + <children xmi:type="notation:Node" xmi:id="_gw19YHIhEe2-Np0Hy5W05A" type="2001" element="_gwYqYHIhEe2-Np0Hy5W05A"> + <children xmi:type="notation:Node" xmi:id="_gw2kcHIhEe2-Np0Hy5W05A" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_gw2kcXIhEe2-Np0Hy5W05A" x="-9" y="31"/> + </children> + <children xmi:type="notation:Node" xmi:id="_gw8EB3IhEe2-Np0Hy5W05A" type="3002" element="_gwZ4gHIhEe2-Np0Hy5W05A"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_gw8ECHIhEe2-Np0Hy5W05A" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gw8ECXIhEe2-Np0Hy5W05A"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_gw19YXIhEe2-Np0Hy5W05A" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gw19YnIhEe2-Np0Hy5W05A" x="162" y="176" width="30" height="30"/> + </children> + <children xmi:type="notation:Node" xmi:id="_gw4ZoHIhEe2-Np0Hy5W05A" type="2003" element="_gwn68HIhEe2-Np0Hy5W05A"> + <children xmi:type="notation:Node" xmi:id="_gw5AsHIhEe2-Np0Hy5W05A" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_gw614HIhEe2-Np0Hy5W05A" type="7004"> + <children xmi:type="notation:Node" xmi:id="_gw8rEHIhEe2-Np0Hy5W05A" type="3010" element="_gwszcHIhEe2-Np0Hy5W05A"> + <styles xmi:type="notation:FontStyle" xmi:id="_gw8rEXIhEe2-Np0Hy5W05A" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_gw8rEnIhEe2-Np0Hy5W05A"/> + </children> + <styles xmi:type="notation:SortingStyle" xmi:id="_gw614XIhEe2-Np0Hy5W05A"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_gw614nIhEe2-Np0Hy5W05A"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_gw4ZoXIhEe2-Np0Hy5W05A" fontName="Segoe UI" fontHeight="12" bold="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gw4ZonIhEe2-Np0Hy5W05A" x="276" y="354"/> + </children> + <children xmi:type="notation:Node" xmi:id="_gw7c8HIhEe2-Np0Hy5W05A" type="2003" element="_gwrlUXIhEe2-Np0Hy5W05A"> + <children xmi:type="notation:Node" xmi:id="_gw7c83IhEe2-Np0Hy5W05A" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_gw7c9HIhEe2-Np0Hy5W05A" type="7004"> + <children xmi:type="notation:Node" xmi:id="_gw9SIHIhEe2-Np0Hy5W05A" type="3010" element="_gwuooHIhEe2-Np0Hy5W05A"> + <styles xmi:type="notation:FontStyle" xmi:id="_gw9SIXIhEe2-Np0Hy5W05A" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_gw9SInIhEe2-Np0Hy5W05A"/> + </children> + <styles xmi:type="notation:SortingStyle" xmi:id="_gw7c9XIhEe2-Np0Hy5W05A"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_gw7c9nIhEe2-Np0Hy5W05A"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_gw7c8XIhEe2-Np0Hy5W05A" fontName="Segoe UI" fontHeight="12" bold="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gw7c8nIhEe2-Np0Hy5W05A" x="292" y="112" width="194"/> + </children> + <children xmi:type="notation:Node" xmi:id="_gw8EAHIhEe2-Np0Hy5W05A" type="2003" element="_gwuoonIhEe2-Np0Hy5W05A"> + <children xmi:type="notation:Node" xmi:id="_gw8EA3IhEe2-Np0Hy5W05A" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_gw8EBHIhEe2-Np0Hy5W05A" type="7004"> + <styles xmi:type="notation:SortingStyle" xmi:id="_gw8EBXIhEe2-Np0Hy5W05A"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_gw8EBnIhEe2-Np0Hy5W05A"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_gw8EAXIhEe2-Np0Hy5W05A" fontName="Segoe UI" fontHeight="10" bold="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gw8EAnIhEe2-Np0Hy5W05A" x="283" y="48" height="40"/> + </children> + <styles xmi:type="notation:DiagramStyle" xmi:id="_gwR8s3IhEe2-Np0Hy5W05A"/> + <edges xmi:type="notation:Edge" xmi:id="_gw9SI3IhEe2-Np0Hy5W05A" type="4001" element="_gwv2wHIhEe2-Np0Hy5W05A" source="_gw19YHIhEe2-Np0Hy5W05A" target="_gw7c8HIhEe2-Np0Hy5W05A"> + <children xmi:type="notation:Node" xmi:id="_gw9SJ3IhEe2-Np0Hy5W05A" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gw9SKHIhEe2-Np0Hy5W05A" x="61" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_gw9SKXIhEe2-Np0Hy5W05A" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gw9SKnIhEe2-Np0Hy5W05A" x="-3" y="-26"/> + </children> + <children xmi:type="notation:Node" xmi:id="_gw9SK3IhEe2-Np0Hy5W05A" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gw9SLHIhEe2-Np0Hy5W05A" x="-26" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_gw9SJHIhEe2-Np0Hy5W05A" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_gw9SJXIhEe2-Np0Hy5W05A" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_gw9SJnIhEe2-Np0Hy5W05A" points="[0, 0, -206, -45]$[0, -14, -206, -59]$[115, -14, -91, -59]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gw_HUHIhEe2-Np0Hy5W05A" id="(0.5,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gw_uYHIhEe2-Np0Hy5W05A" id="(0.4739583333333333,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_gw_ubXIhEe2-Np0Hy5W05A" type="4001" element="_gw0vRXIhEe2-Np0Hy5W05A" source="_gw4ZoHIhEe2-Np0Hy5W05A" target="_gw7c8HIhEe2-Np0Hy5W05A"> + <children xmi:type="notation:Node" xmi:id="_gxAVcHIhEe2-Np0Hy5W05A" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gxAVcXIhEe2-Np0Hy5W05A" x="-9" y="23"/> + </children> + <children xmi:type="notation:Node" xmi:id="_gxAVcnIhEe2-Np0Hy5W05A" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gxAVc3IhEe2-Np0Hy5W05A" x="192" y="8"/> + </children> + <children xmi:type="notation:Node" xmi:id="_gxAVdHIhEe2-Np0Hy5W05A" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gxAVdXIhEe2-Np0Hy5W05A" x="-7"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_gw_ubnIhEe2-Np0Hy5W05A" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_gw_ub3IhEe2-Np0Hy5W05A" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_gw_ucHIhEe2-Np0Hy5W05A" points="[36, -38, 47, 188]$[36, -171, 47, 55]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gxAVdnIhEe2-Np0Hy5W05A" id="(0.5,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gxAVd3IhEe2-Np0Hy5W05A" id="(0.46875,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_gw_uYXIhEe2-Np0Hy5W05A" type="4001" element="_gw0vQHIhEe2-Np0Hy5W05A" source="_gw7c8HIhEe2-Np0Hy5W05A" target="_gw4ZoHIhEe2-Np0Hy5W05A"> + <children xmi:type="notation:Node" xmi:id="_gw_uZXIhEe2-Np0Hy5W05A" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gw_uZnIhEe2-Np0Hy5W05A" x="10" y="19"/> + </children> + <children xmi:type="notation:Node" xmi:id="_gw_uZ3IhEe2-Np0Hy5W05A" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gw_uaHIhEe2-Np0Hy5W05A" x="-4"/> + </children> + <children xmi:type="notation:Node" xmi:id="_gw_uaXIhEe2-Np0Hy5W05A" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gw_uanIhEe2-Np0Hy5W05A" x="9"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_gw_uYnIhEe2-Np0Hy5W05A" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_gw_uY3IhEe2-Np0Hy5W05A" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_gw_uZHIhEe2-Np0Hy5W05A" points="[-30, 55, -41, -171]$[-30, 188, -41, -38]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gw_ua3IhEe2-Np0Hy5W05A" id="(0.46875,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gw_ubHIhEe2-Np0Hy5W05A" id="(0.5,0.5)"/> + </edges> + </data> + </ownedAnnotationEntries> + <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_gw1WUnIhEe2-Np0Hy5W05A" source="DANNOTATION_CUSTOMIZATION_KEY"> + <data xmi:type="diagram:ComputedStyleDescriptionRegistry" uid="_gw1WU3IhEe2-Np0Hy5W05A"/> + </ownedAnnotationEntries> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_gwYqYHIhEe2-Np0Hy5W05A" name="initial" outgoingEdges="_gwv2wHIhEe2-Np0Hy5W05A" width="3" height="3"> + <target xmi:type="statemachine:InitialState" href="statemachines/switch.statemachine#initial"/> + <semanticElements xmi:type="statemachine:InitialState" href="statemachines/switch.statemachine#initial"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Dot" uid="_gwZ4gHIhEe2-Np0Hy5W05A" labelSize="12" showIcon="false" backgroundColor="0,0,0"> + <description xmi:type="style:DotDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@nodeMappings[name='Initial%20State']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@nodeMappings[name='Initial%20State']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_gwn68HIhEe2-Np0Hy5W05A" name="on" outgoingEdges="_gw0vRXIhEe2-Np0Hy5W05A" incomingEdges="_gw0vQHIhEe2-Np0Hy5W05A"> + <target xmi:type="statemachine:NormalState" href="statemachines/switch.statemachine#on"/> + <semanticElements xmi:type="statemachine:NormalState" href="statemachines/switch.statemachine#on"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_gwq-QHIhEe2-Np0Hy5W05A" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" backgroundColor="255,245,181" foregroundColor="255,245,181"> + <labelFormat>bold</labelFormat> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']"/> + <ownedElements xmi:type="diagram:DNodeListElement" uid="_gwszcHIhEe2-Np0Hy5W05A" name="do/ do_something"> + <target xmi:type="statemachine:Action" href="statemachines/switch.statemachine#//@states.0/@do_"/> + <semanticElements xmi:type="statemachine:Action" href="statemachines/switch.statemachine#//@states.0/@do_"/> + <ownedStyle xmi:type="diagram:Square" uid="_gwtagHIhEe2-Np0Hy5W05A" labelSize="12" showIcon="false" labelAlignment="LEFT" labelPosition="node" color="255,245,181"> + <description xmi:type="style:SquareDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']/@subNodeMappings[name='Do%20Activity']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']/@subNodeMappings[name='Do%20Activity']"/> + </ownedElements> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_gwrlUXIhEe2-Np0Hy5W05A" name="off" outgoingEdges="_gw0vQHIhEe2-Np0Hy5W05A" incomingEdges="_gwv2wHIhEe2-Np0Hy5W05A _gw0vRXIhEe2-Np0Hy5W05A"> + <target xmi:type="statemachine:NormalState" href="statemachines/switch.statemachine#off"/> + <semanticElements xmi:type="statemachine:NormalState" href="statemachines/switch.statemachine#off"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_gwrlUnIhEe2-Np0Hy5W05A" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" backgroundColor="255,245,181" foregroundColor="255,245,181"> + <labelFormat>bold</labelFormat> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']"/> + <ownedElements xmi:type="diagram:DNodeListElement" uid="_gwuooHIhEe2-Np0Hy5W05A" name="do/ do_nothing"> + <target xmi:type="statemachine:Action" href="statemachines/switch.statemachine#//@states.1/@do_"/> + <semanticElements xmi:type="statemachine:Action" href="statemachines/switch.statemachine#//@states.1/@do_"/> + <ownedStyle xmi:type="diagram:Square" uid="_gwuooXIhEe2-Np0Hy5W05A" labelSize="12" showIcon="false" labelAlignment="LEFT" labelPosition="node" color="255,245,181"> + <description xmi:type="style:SquareDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']/@subNodeMappings[name='Do%20Activity']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']/@subNodeMappings[name='Do%20Activity']"/> + </ownedElements> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_gwuoonIhEe2-Np0Hy5W05A" name="State Machine: Switch" height="4"> + <target xmi:type="statemachine:StateMachine" href="statemachines/switch.statemachine#Switch"/> + <semanticElements xmi:type="statemachine:StateMachine" href="statemachines/switch.statemachine#Switch"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_gwvPsHIhEe2-Np0Hy5W05A" labelSize="10" showIcon="false" borderColor="209,209,209" backgroundStyle="Liquid" backgroundColor="209,209,209"> + <labelFormat>bold</labelFormat> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='State%20Machine%20Label']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='State%20Machine%20Label']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_gwv2wHIhEe2-Np0Hy5W05A" sourceNode="_gwYqYHIhEe2-Np0Hy5W05A" targetNode="_gwrlUXIhEe2-Np0Hy5W05A"> + <target xmi:type="statemachine:Transition" href="statemachines/switch.statemachine#//@transitions.0"/> + <semanticElements xmi:type="statemachine:Transition" href="statemachines/switch.statemachine#//@transitions.0"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_gwv2wXIhEe2-Np0Hy5W05A" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_gwv2wnIhEe2-Np0Hy5W05A" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_gw0vQHIhEe2-Np0Hy5W05A" name="flip" sourceNode="_gwrlUXIhEe2-Np0Hy5W05A" targetNode="_gwn68HIhEe2-Np0Hy5W05A"> + <target xmi:type="statemachine:Transition" href="statemachines/switch.statemachine#//@transitions.1"/> + <semanticElements xmi:type="statemachine:Transition" href="statemachines/switch.statemachine#//@transitions.1"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_gw0vQXIhEe2-Np0Hy5W05A" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_gw0vQnIhEe2-Np0Hy5W05A" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_gw0vRXIhEe2-Np0Hy5W05A" name="flip" sourceNode="_gwn68HIhEe2-Np0Hy5W05A" targetNode="_gwrlUXIhEe2-Np0Hy5W05A"> + <target xmi:type="statemachine:Transition" href="statemachines/switch.statemachine#//@transitions.2"/> + <semanticElements xmi:type="statemachine:Transition" href="statemachines/switch.statemachine#//@transitions.2"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_gw0vRnIhEe2-Np0Hy5W05A" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_gw0vR3IhEe2-Np0Hy5W05A" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']"/> + </ownedDiagramElements> + <description xmi:type="description_1:DiagramDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']"/> + <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_gwQHgXIhEe2-Np0Hy5W05A"/> + <activatedLayers xmi:type="description_1:Layer" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer"/> + <target xmi:type="statemachine:StateMachine" href="statemachines/switch.statemachine#Switch"/> + </diagram:DSemanticDiagram> + <diagram:DSemanticDiagram uid="_s4PNAHIhEe2-Np0Hy5W05A"> + <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_s4QbIHIhEe2-Np0Hy5W05A" source="GMF_DIAGRAMS"> + <data xmi:type="notation:Diagram" xmi:id="_s4QbIXIhEe2-Np0Hy5W05A" type="Sirius" element="_s4PNAHIhEe2-Np0Hy5W05A" measurementUnit="Pixel"> + <children xmi:type="notation:Node" xmi:id="_s4ZlEHIhEe2-Np0Hy5W05A" type="2001" element="_s4RCMHIhEe2-Np0Hy5W05A"> + <children xmi:type="notation:Node" xmi:id="_s4ZlE3IhEe2-Np0Hy5W05A" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_s4ZlFHIhEe2-Np0Hy5W05A" x="31" y="1"/> + </children> + <children xmi:type="notation:Node" xmi:id="_s4baUXIhEe2-Np0Hy5W05A" type="3002" element="_s4RCMXIhEe2-Np0Hy5W05A"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_s4baUnIhEe2-Np0Hy5W05A" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s4baU3IhEe2-Np0Hy5W05A"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_s4ZlEXIhEe2-Np0Hy5W05A" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s4ZlEnIhEe2-Np0Hy5W05A" x="858" y="108" width="30" height="30"/> + </children> + <children xmi:type="notation:Node" xmi:id="_s4aMIHIhEe2-Np0Hy5W05A" type="2001" element="_s4RpQXIhEe2-Np0Hy5W05A"> + <children xmi:type="notation:Node" xmi:id="_s4aMI3IhEe2-Np0Hy5W05A" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_s4aMJHIhEe2-Np0Hy5W05A" x="31" y="1"/> + </children> + <children xmi:type="notation:Node" xmi:id="_s4cBUHIhEe2-Np0Hy5W05A" type="3002" element="_s4RpQnIhEe2-Np0Hy5W05A"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_s4cBUXIhEe2-Np0Hy5W05A" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s4cBUnIhEe2-Np0Hy5W05A"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_s4aMIXIhEe2-Np0Hy5W05A" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s4aMInIhEe2-Np0Hy5W05A" x="858" y="156" width="30" height="30"/> + </children> + <children xmi:type="notation:Node" xmi:id="_s4azMHIhEe2-Np0Hy5W05A" type="2003" element="_s4RpRHIhEe2-Np0Hy5W05A"> + <children xmi:type="notation:Node" xmi:id="_s4azM3IhEe2-Np0Hy5W05A" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_s4azNHIhEe2-Np0Hy5W05A" type="7004"> + <styles xmi:type="notation:SortingStyle" xmi:id="_s4azNXIhEe2-Np0Hy5W05A"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_s4azNnIhEe2-Np0Hy5W05A"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_s4azMXIhEe2-Np0Hy5W05A" fontName="Segoe UI" fontHeight="12" bold="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s4azMnIhEe2-Np0Hy5W05A" x="690" y="217" width="99"/> + </children> + <children xmi:type="notation:Node" xmi:id="_s4azN3IhEe2-Np0Hy5W05A" type="2003" element="_s4SQUXIhEe2-Np0Hy5W05A"> + <children xmi:type="notation:Node" xmi:id="_s4azOnIhEe2-Np0Hy5W05A" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_s4azO3IhEe2-Np0Hy5W05A" type="7004"> + <styles xmi:type="notation:SortingStyle" xmi:id="_s4azPHIhEe2-Np0Hy5W05A"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_s4azPXIhEe2-Np0Hy5W05A"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_s4azOHIhEe2-Np0Hy5W05A" fontName="Segoe UI" fontHeight="12" bold="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s4azOXIhEe2-Np0Hy5W05A" x="180" y="213" width="78"/> + </children> + <children xmi:type="notation:Node" xmi:id="_s4azPnIhEe2-Np0Hy5W05A" type="2003" element="_s4SQVHIhEe2-Np0Hy5W05A"> + <children xmi:type="notation:Node" xmi:id="_s4azQXIhEe2-Np0Hy5W05A" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_s4baQHIhEe2-Np0Hy5W05A" type="7004"> + <styles xmi:type="notation:SortingStyle" xmi:id="_s4baQXIhEe2-Np0Hy5W05A"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_s4baQnIhEe2-Np0Hy5W05A"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_s4azP3IhEe2-Np0Hy5W05A" fontName="Segoe UI" fontHeight="12" bold="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s4azQHIhEe2-Np0Hy5W05A" x="424" y="78" width="105"/> + </children> + <children xmi:type="notation:Node" xmi:id="_s4baQ3IhEe2-Np0Hy5W05A" type="2003" element="_s4SQV3IhEe2-Np0Hy5W05A"> + <children xmi:type="notation:Node" xmi:id="_s4baRnIhEe2-Np0Hy5W05A" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_s4baR3IhEe2-Np0Hy5W05A" type="7004"> + <styles xmi:type="notation:SortingStyle" xmi:id="_s4baSHIhEe2-Np0Hy5W05A"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_s4baSXIhEe2-Np0Hy5W05A"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_s4baRHIhEe2-Np0Hy5W05A" fontName="Segoe UI" fontHeight="12" bold="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s4baRXIhEe2-Np0Hy5W05A" x="428" y="300" width="97"/> + </children> + <children xmi:type="notation:Node" xmi:id="_s4baSnIhEe2-Np0Hy5W05A" type="2003" element="_s4S3YHIhEe2-Np0Hy5W05A"> + <children xmi:type="notation:Node" xmi:id="_s4baTXIhEe2-Np0Hy5W05A" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_s4baTnIhEe2-Np0Hy5W05A" type="7004"> + <styles xmi:type="notation:SortingStyle" xmi:id="_s4baT3IhEe2-Np0Hy5W05A"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_s4baUHIhEe2-Np0Hy5W05A"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_s4baS3IhEe2-Np0Hy5W05A" fontName="Segoe UI" fontHeight="10" bold="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s4baTHIhEe2-Np0Hy5W05A" x="186" y="6" height="40"/> + </children> + <styles xmi:type="notation:DiagramStyle" xmi:id="_s4QbInIhEe2-Np0Hy5W05A"/> + <edges xmi:type="notation:Edge" xmi:id="_s4cBU3IhEe2-Np0Hy5W05A" type="4001" element="_s4TecHIhEe2-Np0Hy5W05A" source="_s4ZlEHIhEe2-Np0Hy5W05A" target="_s4azMHIhEe2-Np0Hy5W05A"> + <children xmi:type="notation:Node" xmi:id="_s4coYHIhEe2-Np0Hy5W05A" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s4coYXIhEe2-Np0Hy5W05A" x="-20" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_s4coYnIhEe2-Np0Hy5W05A" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s4coY3IhEe2-Np0Hy5W05A" x="-5" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_s4coZHIhEe2-Np0Hy5W05A" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s4coZXIhEe2-Np0Hy5W05A" x="2" y="-10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_s4cBVHIhEe2-Np0Hy5W05A" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_s4cBVXIhEe2-Np0Hy5W05A" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_s4cBVnIhEe2-Np0Hy5W05A" points="[-15, -1, 136, -120]$[-119, -1, 32, -120]$[-119, 94, 32, -25]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_s4coZnIhEe2-Np0Hy5W05A" id="(0.5,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_s4coZ3IhEe2-Np0Hy5W05A" id="(0.32989690721649484,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_s4fErnIhEe2-Np0Hy5W05A" type="4001" element="_s4WhwHIhEe2-Np0Hy5W05A" source="_s4azMHIhEe2-Np0Hy5W05A" target="_s4aMIHIhEe2-Np0Hy5W05A"> + <children xmi:type="notation:Node" xmi:id="_s4frsHIhEe2-Np0Hy5W05A" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s4frsXIhEe2-Np0Hy5W05A" x="22" y="-12"/> + </children> + <children xmi:type="notation:Node" xmi:id="_s4frsnIhEe2-Np0Hy5W05A" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s4frs3IhEe2-Np0Hy5W05A" x="20" y="6"/> + </children> + <children xmi:type="notation:Node" xmi:id="_s4frtHIhEe2-Np0Hy5W05A" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s4frtXIhEe2-Np0Hy5W05A" x="-7" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_s4fEr3IhEe2-Np0Hy5W05A" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_s4fEsHIhEe2-Np0Hy5W05A" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_s4fEsXIhEe2-Np0Hy5W05A" points="[52, -25, -99, 46]$[52, -72, -99, -1]$[136, -72, -15, -1]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_s4frtnIhEe2-Np0Hy5W05A" id="(0.32989690721649484,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_s4frt3IhEe2-Np0Hy5W05A" id="(0.5,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_s4coaHIhEe2-Np0Hy5W05A" type="4001" element="_s4UFgHIhEe2-Np0Hy5W05A" source="_s4azMHIhEe2-Np0Hy5W05A" target="_s4azPnIhEe2-Np0Hy5W05A"> + <children xmi:type="notation:Node" xmi:id="_s4cobHIhEe2-Np0Hy5W05A" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s4cobXIhEe2-Np0Hy5W05A" x="45" y="17"/> + </children> + <children xmi:type="notation:Node" xmi:id="_s4dPcHIhEe2-Np0Hy5W05A" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s4dPcXIhEe2-Np0Hy5W05A" x="-5"/> + </children> + <children xmi:type="notation:Node" xmi:id="_s4dPcnIhEe2-Np0Hy5W05A" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s4dPc3IhEe2-Np0Hy5W05A" x="-5" y="-10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_s4coaXIhEe2-Np0Hy5W05A" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_s4coanIhEe2-Np0Hy5W05A" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_s4coa3IhEe2-Np0Hy5W05A" points="[17, -25, 274, 114]$[17, -139, 274, 0]$[-195, -139, 62, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_s4dPdHIhEe2-Np0Hy5W05A" id="(0.32989690721649484,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_s4dPdXIhEe2-Np0Hy5W05A" id="(0.39805825242718446,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_s4fruHIhEe2-Np0Hy5W05A" type="4001" element="_s4XI03IhEe2-Np0Hy5W05A" source="_s4azMHIhEe2-Np0Hy5W05A" target="_s4azMHIhEe2-Np0Hy5W05A"> + <children xmi:type="notation:Node" xmi:id="_s4gSwHIhEe2-Np0Hy5W05A" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s4gSwXIhEe2-Np0Hy5W05A" x="14" y="-24"/> + </children> + <children xmi:type="notation:Node" xmi:id="_s4gSwnIhEe2-Np0Hy5W05A" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s4gSw3IhEe2-Np0Hy5W05A" x="9" y="6"/> + </children> + <children xmi:type="notation:Node" xmi:id="_s4gSxHIhEe2-Np0Hy5W05A" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s4gSxXIhEe2-Np0Hy5W05A" x="-5" y="8"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_s4fruXIhEe2-Np0Hy5W05A" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_s4frunIhEe2-Np0Hy5W05A" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_s4fru3IhEe2-Np0Hy5W05A" points="[65, -4, 65, -4]$[82, -4, 82, -4]$[82, 40, 82, 40]$[34, 40, 34, 40]$[34, 26, 34, 26]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_s4g50HIhEe2-Np0Hy5W05A" id="(0.32989690721649484,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_s4g50XIhEe2-Np0Hy5W05A" id="(0.32989690721649484,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_s4d2jnIhEe2-Np0Hy5W05A" type="4001" element="_s4Usl3IhEe2-Np0Hy5W05A" source="_s4baQ3IhEe2-Np0Hy5W05A" target="_s4azMHIhEe2-Np0Hy5W05A"> + <children xmi:type="notation:Node" xmi:id="_s4edkHIhEe2-Np0Hy5W05A" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s4edkXIhEe2-Np0Hy5W05A" x="-36" y="-17"/> + </children> + <children xmi:type="notation:Node" xmi:id="_s4edknIhEe2-Np0Hy5W05A" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s4edk3IhEe2-Np0Hy5W05A" x="14" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_s4edlHIhEe2-Np0Hy5W05A" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s4edlXIhEe2-Np0Hy5W05A" x="-6" y="-131"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_s4d2j3IhEe2-Np0Hy5W05A" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_s4d2kHIhEe2-Np0Hy5W05A" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_s4d2kXIhEe2-Np0Hy5W05A" points="[36, 0, -199, 83]$[252, 0, 17, 83]$[252, -57, 17, 26]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_s4edlnIhEe2-Np0Hy5W05A" id="(0.6263157894736842,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_s4edl3IhEe2-Np0Hy5W05A" id="(0.32989690721649484,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_s4d2gnIhEe2-Np0Hy5W05A" type="4001" element="_s4UsknIhEe2-Np0Hy5W05A" source="_s4azN3IhEe2-Np0Hy5W05A" target="_s4baQ3IhEe2-Np0Hy5W05A"> + <children xmi:type="notation:Node" xmi:id="_s4d2hnIhEe2-Np0Hy5W05A" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s4d2h3IhEe2-Np0Hy5W05A" x="27" y="-14"/> + </children> + <children xmi:type="notation:Node" xmi:id="_s4d2iHIhEe2-Np0Hy5W05A" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s4d2iXIhEe2-Np0Hy5W05A" x="19"/> + </children> + <children xmi:type="notation:Node" xmi:id="_s4d2inIhEe2-Np0Hy5W05A" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s4d2i3IhEe2-Np0Hy5W05A" x="-100" y="-10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_s4d2g3IhEe2-Np0Hy5W05A" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_s4d2hHIhEe2-Np0Hy5W05A" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_s4d2hXIhEe2-Np0Hy5W05A" points="[-5, 26, -262, -61]$[-5, 87, -262, 0]$[198, 87, -59, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_s4d2jHIhEe2-Np0Hy5W05A" id="(0.6578947368421053,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_s4d2jXIhEe2-Np0Hy5W05A" id="(0.6263157894736842,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_s4jWEnIhEe2-Np0Hy5W05A" type="4001" element="_s4Xv6XIhEe2-Np0Hy5W05A" source="_s4azN3IhEe2-Np0Hy5W05A" target="_s4azN3IhEe2-Np0Hy5W05A"> + <children xmi:type="notation:Node" xmi:id="_s4jWFnIhEe2-Np0Hy5W05A" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s4jWF3IhEe2-Np0Hy5W05A" x="15" y="6"/> + </children> + <children xmi:type="notation:Node" xmi:id="_s4jWGHIhEe2-Np0Hy5W05A" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s4jWGXIhEe2-Np0Hy5W05A" x="-9" y="-22"/> + </children> + <children xmi:type="notation:Node" xmi:id="_s4jWGnIhEe2-Np0Hy5W05A" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s4jWG3IhEe2-Np0Hy5W05A" x="11" y="-6"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_s4jWE3IhEe2-Np0Hy5W05A" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_s4jWFHIhEe2-Np0Hy5W05A" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_s4jWFXIhEe2-Np0Hy5W05A" points="[-50, 0, -50, 0]$[-68, 0, -68, 0]$[-68, 44, -68, 44]$[-26, 44, -26, 44]$[-26, 26, -26, 26]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_s4jWHHIhEe2-Np0Hy5W05A" id="(0.6578947368421053,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_s4jWHXIhEe2-Np0Hy5W05A" id="(0.6578947368421053,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_s4dPdnIhEe2-Np0Hy5W05A" type="4001" element="_s4UFhXIhEe2-Np0Hy5W05A" source="_s4azPnIhEe2-Np0Hy5W05A" target="_s4azN3IhEe2-Np0Hy5W05A"> + <children xmi:type="notation:Node" xmi:id="_s4dPenIhEe2-Np0Hy5W05A" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s4dPe3IhEe2-Np0Hy5W05A" x="-52" y="17"/> + </children> + <children xmi:type="notation:Node" xmi:id="_s4dPfHIhEe2-Np0Hy5W05A" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s4dPfXIhEe2-Np0Hy5W05A" x="42" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_s4dPfnIhEe2-Np0Hy5W05A" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s4dPf3IhEe2-Np0Hy5W05A" x="-27" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_s4dPd3IhEe2-Np0Hy5W05A" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_s4dPeHIhEe2-Np0Hy5W05A" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_s4dPeXIhEe2-Np0Hy5W05A" points="[-41, 0, 194, -135]$[-237, 0, -2, -135]$[-237, 110, -2, -25]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_s4d2gHIhEe2-Np0Hy5W05A" id="(0.39805825242718446,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_s4d2gXIhEe2-Np0Hy5W05A" id="(0.6578947368421053,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_s4fEonIhEe2-Np0Hy5W05A" type="4001" element="_s4VTp3IhEe2-Np0Hy5W05A" source="_s4azPnIhEe2-Np0Hy5W05A" target="_s4baQ3IhEe2-Np0Hy5W05A"> + <children xmi:type="notation:Node" xmi:id="_s4fEpnIhEe2-Np0Hy5W05A" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s4fEp3IhEe2-Np0Hy5W05A" x="-50" y="-102" width="193" height="17"/> + </children> + <children xmi:type="notation:Node" xmi:id="_s4fEqHIhEe2-Np0Hy5W05A" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s4fEqXIhEe2-Np0Hy5W05A" x="-19" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_s4fEqnIhEe2-Np0Hy5W05A" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s4fEq3IhEe2-Np0Hy5W05A" x="-82" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_s4fEo3IhEe2-Np0Hy5W05A" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_s4fEpHIhEe2-Np0Hy5W05A" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_s4fEpXIhEe2-Np0Hy5W05A" points="[15, 26, -7, -196]$[15, 197, -7, -25]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_s4fErHIhEe2-Np0Hy5W05A" id="(0.39805825242718446,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_s4fErXIhEe2-Np0Hy5W05A" id="(0.6263157894736842,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_s4jWHnIhEe2-Np0Hy5W05A" type="4001" element="_s4YW9HIhEe2-Np0Hy5W05A" source="_s4azPnIhEe2-Np0Hy5W05A" target="_s4azPnIhEe2-Np0Hy5W05A"> + <children xmi:type="notation:Node" xmi:id="_s4j9IHIhEe2-Np0Hy5W05A" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s4j9IXIhEe2-Np0Hy5W05A" x="2" y="-18"/> + </children> + <children xmi:type="notation:Node" xmi:id="_s4j9InIhEe2-Np0Hy5W05A" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s4j9I3IhEe2-Np0Hy5W05A" x="-15"/> + </children> + <children xmi:type="notation:Node" xmi:id="_s4j9JHIhEe2-Np0Hy5W05A" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s4j9JXIhEe2-Np0Hy5W05A" x="15"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_s4jWH3IhEe2-Np0Hy5W05A" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_s4jWIHIhEe2-Np0Hy5W05A" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_s4jWIXIhEe2-Np0Hy5W05A" points="[-21, -25, -21, -25]$[-21, -42, -21, -42]$[39, -42, 39, -42]$[39, -25, 39, -25]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_s4j9JnIhEe2-Np0Hy5W05A" id="(0.39805825242718446,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_s4j9J3IhEe2-Np0Hy5W05A" id="(0.39805825242718446,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_s4edmHIhEe2-Np0Hy5W05A" type="4001" element="_s4VTonIhEe2-Np0Hy5W05A" source="_s4baQ3IhEe2-Np0Hy5W05A" target="_s4azPnIhEe2-Np0Hy5W05A"> + <children xmi:type="notation:Node" xmi:id="_s4ednHIhEe2-Np0Hy5W05A" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s4ednXIhEe2-Np0Hy5W05A" x="51" y="-88"/> + </children> + <children xmi:type="notation:Node" xmi:id="_s4ednnIhEe2-Np0Hy5W05A" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s4edn3IhEe2-Np0Hy5W05A" x="105" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_s4edoHIhEe2-Np0Hy5W05A" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s4edoXIhEe2-Np0Hy5W05A" x="9"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_s4edmXIhEe2-Np0Hy5W05A" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_s4edmnIhEe2-Np0Hy5W05A" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_s4edm3IhEe2-Np0Hy5W05A" points="[-24, -25, -2, 197]$[-24, -196, -2, 26]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_s4fEoHIhEe2-Np0Hy5W05A" id="(0.6263157894736842,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_s4fEoXIhEe2-Np0Hy5W05A" id="(0.39805825242718446,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_s4hg4HIhEe2-Np0Hy5W05A" type="4001" element="_s4Xv5HIhEe2-Np0Hy5W05A" source="_s4baQ3IhEe2-Np0Hy5W05A" target="_s4baQ3IhEe2-Np0Hy5W05A"> + <children xmi:type="notation:Node" xmi:id="_s4iH8HIhEe2-Np0Hy5W05A" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s4iH8XIhEe2-Np0Hy5W05A" x="-2" y="-14"/> + </children> + <children xmi:type="notation:Node" xmi:id="_s4ivAHIhEe2-Np0Hy5W05A" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s4ivAXIhEe2-Np0Hy5W05A" x="-5"/> + </children> + <children xmi:type="notation:Node" xmi:id="_s4ivAnIhEe2-Np0Hy5W05A" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s4ivA3IhEe2-Np0Hy5W05A" x="4" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_s4hg4XIhEe2-Np0Hy5W05A" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_s4hg4nIhEe2-Np0Hy5W05A" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_s4hg43IhEe2-Np0Hy5W05A" points="[17, 26, 17, 26]$[17, 41, 17, 41]$[-43, 41, -43, 41]$[-43, 26, -43, 26]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_s4jWEHIhEe2-Np0Hy5W05A" id="(0.6263157894736842,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_s4jWEXIhEe2-Np0Hy5W05A" id="(0.6263157894736842,0.5)"/> + </edges> + </data> + </ownedAnnotationEntries> + <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_s4YW-XIhEe2-Np0Hy5W05A" source="DANNOTATION_CUSTOMIZATION_KEY"> + <data xmi:type="diagram:ComputedStyleDescriptionRegistry" uid="_s4YW-nIhEe2-Np0Hy5W05A"/> + </ownedAnnotationEntries> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_s4RCMHIhEe2-Np0Hy5W05A" name="initial" outgoingEdges="_s4TecHIhEe2-Np0Hy5W05A" width="3" height="3"> + <target xmi:type="statemachine:InitialState" href="statemachines/garagedoor.statemachine#initial"/> + <semanticElements xmi:type="statemachine:InitialState" href="statemachines/garagedoor.statemachine#initial"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Dot" uid="_s4RCMXIhEe2-Np0Hy5W05A" labelSize="12" showIcon="false" backgroundColor="0,0,0"> + <description xmi:type="style:DotDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@nodeMappings[name='Initial%20State']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@nodeMappings[name='Initial%20State']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_s4RpQXIhEe2-Np0Hy5W05A" name="final" incomingEdges="_s4WhwHIhEe2-Np0Hy5W05A" width="3" height="3"> + <target xmi:type="statemachine:FinalState" href="statemachines/garagedoor.statemachine#final"/> + <semanticElements xmi:type="statemachine:FinalState" href="statemachines/garagedoor.statemachine#final"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Dot" uid="_s4RpQnIhEe2-Np0Hy5W05A" labelSize="12" showIcon="false" backgroundColor="209,209,209"> + <description xmi:type="style:DotDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@nodeMappings[name='Final%20State']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@nodeMappings[name='Final%20State']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_s4RpRHIhEe2-Np0Hy5W05A" name="Closed" outgoingEdges="_s4UFgHIhEe2-Np0Hy5W05A _s4WhwHIhEe2-Np0Hy5W05A _s4XI03IhEe2-Np0Hy5W05A" incomingEdges="_s4TecHIhEe2-Np0Hy5W05A _s4Usl3IhEe2-Np0Hy5W05A _s4XI03IhEe2-Np0Hy5W05A"> + <target xmi:type="statemachine:NormalState" href="statemachines/garagedoor.statemachine#Closed"/> + <semanticElements xmi:type="statemachine:NormalState" href="statemachines/garagedoor.statemachine#Closed"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_s4RpRXIhEe2-Np0Hy5W05A" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" backgroundColor="255,245,181" foregroundColor="255,245,181"> + <labelFormat>bold</labelFormat> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_s4SQUXIhEe2-Np0Hy5W05A" name="Open" outgoingEdges="_s4UsknIhEe2-Np0Hy5W05A _s4Xv6XIhEe2-Np0Hy5W05A" incomingEdges="_s4UFhXIhEe2-Np0Hy5W05A _s4Xv6XIhEe2-Np0Hy5W05A"> + <target xmi:type="statemachine:NormalState" href="statemachines/garagedoor.statemachine#Open"/> + <semanticElements xmi:type="statemachine:NormalState" href="statemachines/garagedoor.statemachine#Open"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_s4SQUnIhEe2-Np0Hy5W05A" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" backgroundColor="255,245,181" foregroundColor="255,245,181"> + <labelFormat>bold</labelFormat> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_s4SQVHIhEe2-Np0Hy5W05A" name="Opening" outgoingEdges="_s4UFhXIhEe2-Np0Hy5W05A _s4VTp3IhEe2-Np0Hy5W05A _s4YW9HIhEe2-Np0Hy5W05A" incomingEdges="_s4UFgHIhEe2-Np0Hy5W05A _s4VTonIhEe2-Np0Hy5W05A _s4YW9HIhEe2-Np0Hy5W05A"> + <target xmi:type="statemachine:NormalState" href="statemachines/garagedoor.statemachine#Opening"/> + <semanticElements xmi:type="statemachine:NormalState" href="statemachines/garagedoor.statemachine#Opening"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_s4SQVXIhEe2-Np0Hy5W05A" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" backgroundColor="255,245,181" foregroundColor="255,245,181"> + <labelFormat>bold</labelFormat> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_s4SQV3IhEe2-Np0Hy5W05A" name="Closing" outgoingEdges="_s4Usl3IhEe2-Np0Hy5W05A _s4VTonIhEe2-Np0Hy5W05A _s4Xv5HIhEe2-Np0Hy5W05A" incomingEdges="_s4UsknIhEe2-Np0Hy5W05A _s4VTp3IhEe2-Np0Hy5W05A _s4Xv5HIhEe2-Np0Hy5W05A"> + <target xmi:type="statemachine:NormalState" href="statemachines/garagedoor.statemachine#Closing"/> + <semanticElements xmi:type="statemachine:NormalState" href="statemachines/garagedoor.statemachine#Closing"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_s4SQWHIhEe2-Np0Hy5W05A" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" backgroundColor="255,245,181" foregroundColor="255,245,181"> + <labelFormat>bold</labelFormat> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='Normal%20State']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_s4S3YHIhEe2-Np0Hy5W05A" name="State Machine: Garage Door" height="4"> + <target xmi:type="statemachine:StateMachine" href="statemachines/garagedoor.statemachine#Garage Door"/> + <semanticElements xmi:type="statemachine:StateMachine" href="statemachines/garagedoor.statemachine#Garage Door"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_s4S3YXIhEe2-Np0Hy5W05A" labelSize="10" showIcon="false" borderColor="209,209,209" backgroundStyle="Liquid" backgroundColor="209,209,209"> + <labelFormat>bold</labelFormat> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='State%20Machine%20Label']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@containerMappings[name='State%20Machine%20Label']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_s4TecHIhEe2-Np0Hy5W05A" sourceNode="_s4RCMHIhEe2-Np0Hy5W05A" targetNode="_s4RpRHIhEe2-Np0Hy5W05A"> + <target xmi:type="statemachine:Transition" href="statemachines/garagedoor.statemachine#//@transitions.0"/> + <semanticElements xmi:type="statemachine:Transition" href="statemachines/garagedoor.statemachine#//@transitions.0"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_s4TecXIhEe2-Np0Hy5W05A" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_s4TecnIhEe2-Np0Hy5W05A" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_s4UFgHIhEe2-Np0Hy5W05A" name="openDoor / motor.upwards" sourceNode="_s4RpRHIhEe2-Np0Hy5W05A" targetNode="_s4SQVHIhEe2-Np0Hy5W05A"> + <target xmi:type="statemachine:Transition" href="statemachines/garagedoor.statemachine#//@transitions.1"/> + <semanticElements xmi:type="statemachine:Transition" href="statemachines/garagedoor.statemachine#//@transitions.1"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_s4UFgXIhEe2-Np0Hy5W05A" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_s4UFgnIhEe2-Np0Hy5W05A" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_s4UFhXIhEe2-Np0Hy5W05A" name=" [stopper] / motor.stop" sourceNode="_s4SQVHIhEe2-Np0Hy5W05A" targetNode="_s4SQUXIhEe2-Np0Hy5W05A"> + <target xmi:type="statemachine:Transition" href="statemachines/garagedoor.statemachine#//@transitions.2"/> + <semanticElements xmi:type="statemachine:Transition" href="statemachines/garagedoor.statemachine#//@transitions.2"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_s4UFhnIhEe2-Np0Hy5W05A" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_s4UFh3IhEe2-Np0Hy5W05A" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_s4UsknIhEe2-Np0Hy5W05A" name="closeDoor / motor.downwards" sourceNode="_s4SQUXIhEe2-Np0Hy5W05A" targetNode="_s4SQV3IhEe2-Np0Hy5W05A"> + <target xmi:type="statemachine:Transition" href="statemachines/garagedoor.statemachine#//@transitions.3"/> + <semanticElements xmi:type="statemachine:Transition" href="statemachines/garagedoor.statemachine#//@transitions.3"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_s4Usk3IhEe2-Np0Hy5W05A" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_s4UslHIhEe2-Np0Hy5W05A" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_s4Usl3IhEe2-Np0Hy5W05A" name=" [stopper] / motor.stop" sourceNode="_s4SQV3IhEe2-Np0Hy5W05A" targetNode="_s4RpRHIhEe2-Np0Hy5W05A"> + <target xmi:type="statemachine:Transition" href="statemachines/garagedoor.statemachine#//@transitions.4"/> + <semanticElements xmi:type="statemachine:Transition" href="statemachines/garagedoor.statemachine#//@transitions.4"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_s4UsmHIhEe2-Np0Hy5W05A" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_s4UsmXIhEe2-Np0Hy5W05A" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_s4VTonIhEe2-Np0Hy5W05A" name="openDoor / motor.upwards" sourceNode="_s4SQV3IhEe2-Np0Hy5W05A" targetNode="_s4SQVHIhEe2-Np0Hy5W05A"> + <target xmi:type="statemachine:Transition" href="statemachines/garagedoor.statemachine#//@transitions.5"/> + <semanticElements xmi:type="statemachine:Transition" href="statemachines/garagedoor.statemachine#//@transitions.5"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_s4VTo3IhEe2-Np0Hy5W05A" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_s4VTpHIhEe2-Np0Hy5W05A" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_s4VTp3IhEe2-Np0Hy5W05A" name="closeDoor / motor.downwards" sourceNode="_s4SQVHIhEe2-Np0Hy5W05A" targetNode="_s4SQV3IhEe2-Np0Hy5W05A"> + <target xmi:type="statemachine:Transition" href="statemachines/garagedoor.statemachine#//@transitions.6"/> + <semanticElements xmi:type="statemachine:Transition" href="statemachines/garagedoor.statemachine#//@transitions.6"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_s4V6sHIhEe2-Np0Hy5W05A" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_s4V6sXIhEe2-Np0Hy5W05A" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_s4WhwHIhEe2-Np0Hy5W05A" name=" [shutdown]" sourceNode="_s4RpRHIhEe2-Np0Hy5W05A" targetNode="_s4RpQXIhEe2-Np0Hy5W05A"> + <target xmi:type="statemachine:Transition" href="statemachines/garagedoor.statemachine#//@transitions.7"/> + <semanticElements xmi:type="statemachine:Transition" href="statemachines/garagedoor.statemachine#//@transitions.7"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_s4WhwXIhEe2-Np0Hy5W05A" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_s4XI0HIhEe2-Np0Hy5W05A" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_s4XI03IhEe2-Np0Hy5W05A" name="closeDoor" sourceNode="_s4RpRHIhEe2-Np0Hy5W05A" targetNode="_s4RpRHIhEe2-Np0Hy5W05A"> + <target xmi:type="statemachine:Transition" href="statemachines/garagedoor.statemachine#//@transitions.8"/> + <semanticElements xmi:type="statemachine:Transition" href="statemachines/garagedoor.statemachine#//@transitions.8"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_s4Xv4HIhEe2-Np0Hy5W05A" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_s4Xv4XIhEe2-Np0Hy5W05A" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_s4Xv5HIhEe2-Np0Hy5W05A" name="closeDoor" sourceNode="_s4SQV3IhEe2-Np0Hy5W05A" targetNode="_s4SQV3IhEe2-Np0Hy5W05A"> + <target xmi:type="statemachine:Transition" href="statemachines/garagedoor.statemachine#//@transitions.9"/> + <semanticElements xmi:type="statemachine:Transition" href="statemachines/garagedoor.statemachine#//@transitions.9"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_s4Xv5XIhEe2-Np0Hy5W05A" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_s4Xv5nIhEe2-Np0Hy5W05A" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_s4Xv6XIhEe2-Np0Hy5W05A" name="openDoor" sourceNode="_s4SQUXIhEe2-Np0Hy5W05A" targetNode="_s4SQUXIhEe2-Np0Hy5W05A"> + <target xmi:type="statemachine:Transition" href="statemachines/garagedoor.statemachine#//@transitions.10"/> + <semanticElements xmi:type="statemachine:Transition" href="statemachines/garagedoor.statemachine#//@transitions.10"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_s4YW8HIhEe2-Np0Hy5W05A" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_s4YW8XIhEe2-Np0Hy5W05A" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_s4YW9HIhEe2-Np0Hy5W05A" name="openDoor" sourceNode="_s4SQVHIhEe2-Np0Hy5W05A" targetNode="_s4SQVHIhEe2-Np0Hy5W05A"> + <target xmi:type="statemachine:Transition" href="statemachines/garagedoor.statemachine#//@transitions.11"/> + <semanticElements xmi:type="statemachine:Transition" href="statemachines/garagedoor.statemachine#//@transitions.11"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_s4YW9XIhEe2-Np0Hy5W05A" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_s4YW9nIhEe2-Np0Hy5W05A" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer/@edgeMappings[name='Transition']"/> + </ownedDiagramElements> + <description xmi:type="description_1:DiagramDescription" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']"/> + <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_s4P0EHIhEe2-Np0Hy5W05A"/> + <activatedLayers xmi:type="description_1:Layer" href="platform:/resource/swt.most.sirius.statemachine/description/statemachine.odesign#//@ownedViewpoints[name='gDSL']/@ownedRepresentations[name='StateMachine']/@defaultLayer"/> + <target xmi:type="statemachine:StateMachine" href="statemachines/garagedoor.statemachine#Garage Door"/> + </diagram:DSemanticDiagram> + <diagram:DSemanticDiagram uid="_7ZlfIHI4Ee2-kruQw0QW4w"> + <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_7ZmtQHI4Ee2-kruQw0QW4w" source="GMF_DIAGRAMS"> + <data xmi:type="notation:Diagram" xmi:id="_7ZmtQXI4Ee2-kruQw0QW4w" type="Sirius" element="_7ZlfIHI4Ee2-kruQw0QW4w" measurementUnit="Pixel"> + <children xmi:type="notation:Node" xmi:id="_7aFOYHI4Ee2-kruQw0QW4w" type="2001" element="_7Zn7YHI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7aF1cHI4Ee2-kruQw0QW4w" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_7aF1cXI4Ee2-kruQw0QW4w" x="31" y="1"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aUe8HI4Ee2-kruQw0QW4w" type="3001" element="_7ZvQJnI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7aUe83I4Ee2-kruQw0QW4w" type="5001"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_7aUe9HI4Ee2-kruQw0QW4w" y="5"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aUe-HI4Ee2-kruQw0QW4w" type="3002" element="_7ZvQJ3I4Ee2-kruQw0QW4w"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aUe-XI4Ee2-kruQw0QW4w" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aUe-nI4Ee2-kruQw0QW4w"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aUe8XI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aUe8nI4Ee2-kruQw0QW4w" x="22" y="10" width="20" height="20"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aUe9XI4Ee2-kruQw0QW4w" type="3002" element="_7Zn7YXI4Ee2-kruQw0QW4w"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aUe9nI4Ee2-kruQw0QW4w" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aUe93I4Ee2-kruQw0QW4w"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aFOYXI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aFOYnI4Ee2-kruQw0QW4w" x="31" y="678" width="30" height="30"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aF1cnI4Ee2-kruQw0QW4w" type="2001" element="_7ZoicXI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7aGcgHI4Ee2-kruQw0QW4w" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_7aGcgXI4Ee2-kruQw0QW4w" x="31" y="1"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aVGAHI4Ee2-kruQw0QW4w" type="3002" element="_7ZoicnI4Ee2-kruQw0QW4w"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aVGAXI4Ee2-kruQw0QW4w" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aVGAnI4Ee2-kruQw0QW4w"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aF1c3I4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aF1dHI4Ee2-kruQw0QW4w" x="211" y="678" width="30" height="30"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aGcgnI4Ee2-kruQw0QW4w" type="2001" element="_7ZoidHI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7aGchXI4Ee2-kruQw0QW4w" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_7aGchnI4Ee2-kruQw0QW4w" x="31" y="1"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aVGA3I4Ee2-kruQw0QW4w" type="3002" element="_7ZoidXI4Ee2-kruQw0QW4w"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aVGBHI4Ee2-kruQw0QW4w" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aVGBXI4Ee2-kruQw0QW4w"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aGcg3I4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aGchHI4Ee2-kruQw0QW4w" x="888" y="678" width="30" height="30"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aHDkHI4Ee2-kruQw0QW4w" type="2001" element="_7Zoid3I4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7aHDk3I4Ee2-kruQw0QW4w" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_7aHDlHI4Ee2-kruQw0QW4w" x="-23" y="-29"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aVGBnI4Ee2-kruQw0QW4w" type="3002" element="_7ZpJgHI4Ee2-kruQw0QW4w"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aVGB3I4Ee2-kruQw0QW4w" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aVGCHI4Ee2-kruQw0QW4w"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aHDkXI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aHDknI4Ee2-kruQw0QW4w" x="552" y="389" width="30" height="30"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aHqoHI4Ee2-kruQw0QW4w" type="2001" element="_7ZpJgnI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7aHqo3I4Ee2-kruQw0QW4w" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_7aHqpHI4Ee2-kruQw0QW4w" x="-17" y="31"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aVtEHI4Ee2-kruQw0QW4w" type="3002" element="_7ZpJg3I4Ee2-kruQw0QW4w"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aVtEXI4Ee2-kruQw0QW4w" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aVtEnI4Ee2-kruQw0QW4w"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aHqoXI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aHqonI4Ee2-kruQw0QW4w" x="552" y="780" width="30" height="30"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aHqpXI4Ee2-kruQw0QW4w" type="2001" element="_7ZpwkHI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7aHqqHI4Ee2-kruQw0QW4w" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_7aHqqXI4Ee2-kruQw0QW4w" x="-3" y="-29"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aVtE3I4Ee2-kruQw0QW4w" type="3002" element="_7ZpwkXI4Ee2-kruQw0QW4w"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aVtFHI4Ee2-kruQw0QW4w" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aVtFXI4Ee2-kruQw0QW4w"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aHqpnI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aHqp3I4Ee2-kruQw0QW4w" x="31" y="567" width="30" height="30"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aIRsHI4Ee2-kruQw0QW4w" type="2001" element="_7Zpwk3I4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7aJf0HI4Ee2-kruQw0QW4w" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_7aJf0XI4Ee2-kruQw0QW4w" x="-30" y="-29"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aVtFnI4Ee2-kruQw0QW4w" type="3002" element="_7ZpwlHI4Ee2-kruQw0QW4w"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aVtF3I4Ee2-kruQw0QW4w" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aVtGHI4Ee2-kruQw0QW4w"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aIRsXI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aIRsnI4Ee2-kruQw0QW4w" x="259" y="324" width="30" height="30"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aJf0nI4Ee2-kruQw0QW4w" type="2001" element="_7ZqXoHI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7aKG4HI4Ee2-kruQw0QW4w" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_7aKG4XI4Ee2-kruQw0QW4w" x="-51" y="-29"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aVtGXI4Ee2-kruQw0QW4w" type="3002" element="_7ZqXoXI4Ee2-kruQw0QW4w"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aVtGnI4Ee2-kruQw0QW4w" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aVtG3I4Ee2-kruQw0QW4w"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aJf03I4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aJf1HI4Ee2-kruQw0QW4w" x="384" y="324" width="30" height="30"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aKG4nI4Ee2-kruQw0QW4w" type="2001" element="_7ZqXo3I4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7aKG5XI4Ee2-kruQw0QW4w" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_7aKG5nI4Ee2-kruQw0QW4w" x="-19" y="-29"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aWUIHI4Ee2-kruQw0QW4w" type="3002" element="_7ZqXpHI4Ee2-kruQw0QW4w"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aWUIXI4Ee2-kruQw0QW4w" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aWUInI4Ee2-kruQw0QW4w"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aKG43I4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aKG5HI4Ee2-kruQw0QW4w" x="696" y="324" width="30" height="30"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aKG53I4Ee2-kruQw0QW4w" type="2001" element="_7Zq-sHI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7aKG6nI4Ee2-kruQw0QW4w" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_7aKG63I4Ee2-kruQw0QW4w" x="-34" y="-29"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aWUI3I4Ee2-kruQw0QW4w" type="3002" element="_7Zq-sXI4Ee2-kruQw0QW4w"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aWUJHI4Ee2-kruQw0QW4w" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aWUJXI4Ee2-kruQw0QW4w"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aKG6HI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aKG6XI4Ee2-kruQw0QW4w" x="798" y="324" width="30" height="30"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aKt8HI4Ee2-kruQw0QW4w" type="2001" element="_7Zq-s3I4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7aKt83I4Ee2-kruQw0QW4w" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_7aKt9HI4Ee2-kruQw0QW4w" x="-29" y="31"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aW7MHI4Ee2-kruQw0QW4w" type="3002" element="_7Zq-tHI4Ee2-kruQw0QW4w"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aW7MXI4Ee2-kruQw0QW4w" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aW7MnI4Ee2-kruQw0QW4w"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aKt8XI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aKt8nI4Ee2-kruQw0QW4w" x="821" y="849" width="30" height="30"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aKt9XI4Ee2-kruQw0QW4w" type="2001" element="_7Zq-tnI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7aKt-HI4Ee2-kruQw0QW4w" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_7aKt-XI4Ee2-kruQw0QW4w" x="-64" y="31"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aW7M3I4Ee2-kruQw0QW4w" type="3002" element="_7ZrlwHI4Ee2-kruQw0QW4w"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aW7NHI4Ee2-kruQw0QW4w" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aW7NXI4Ee2-kruQw0QW4w"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aKt9nI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aKt93I4Ee2-kruQw0QW4w" x="684" y="849" width="30" height="30"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aKt-nI4Ee2-kruQw0QW4w" type="2001" element="_7ZrlwnI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7aLVAHI4Ee2-kruQw0QW4w" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_7aLVAXI4Ee2-kruQw0QW4w" x="-19" y="31"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aW7NnI4Ee2-kruQw0QW4w" type="3002" element="_7Zrlw3I4Ee2-kruQw0QW4w"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aW7N3I4Ee2-kruQw0QW4w" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aW7OHI4Ee2-kruQw0QW4w"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aKt-3I4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aKt_HI4Ee2-kruQw0QW4w" x="402" y="849" width="30" height="30"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aLVAnI4Ee2-kruQw0QW4w" type="2001" element="_7ZrlxXI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7aLVBXI4Ee2-kruQw0QW4w" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_7aLVBnI4Ee2-kruQw0QW4w" x="-34" y="31"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aW7OXI4Ee2-kruQw0QW4w" type="3002" element="_7ZrlxnI4Ee2-kruQw0QW4w"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aW7OnI4Ee2-kruQw0QW4w" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aW7O3I4Ee2-kruQw0QW4w"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aLVA3I4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aLVBHI4Ee2-kruQw0QW4w" x="270" y="849" width="30" height="30"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aLVB3I4Ee2-kruQw0QW4w" type="2001" element="_7ZsM0XI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7aLVCnI4Ee2-kruQw0QW4w" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_7aLVC3I4Ee2-kruQw0QW4w" x="-91" y="1"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aW7PHI4Ee2-kruQw0QW4w" type="3002" element="_7ZsM0nI4Ee2-kruQw0QW4w"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aW7PXI4Ee2-kruQw0QW4w" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aW7PnI4Ee2-kruQw0QW4w"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aLVCHI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aLVCXI4Ee2-kruQw0QW4w" x="516" y="611" width="30" height="30"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aL8EHI4Ee2-kruQw0QW4w" type="2001" element="_7ZsM1HI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7aL8E3I4Ee2-kruQw0QW4w" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_7aL8FHI4Ee2-kruQw0QW4w" x="-51" y="31"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aW7P3I4Ee2-kruQw0QW4w" type="3002" element="_7ZsM1XI4Ee2-kruQw0QW4w"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aW7QHI4Ee2-kruQw0QW4w" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aW7QXI4Ee2-kruQw0QW4w"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aL8EXI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aL8EnI4Ee2-kruQw0QW4w" x="413" y="538" width="30" height="30"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aL8FXI4Ee2-kruQw0QW4w" type="2001" element="_7Zsz4XI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7aL8GHI4Ee2-kruQw0QW4w" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_7aL8GXI4Ee2-kruQw0QW4w" x="31" y="1"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aXiQHI4Ee2-kruQw0QW4w" type="3002" element="_7Zsz4nI4Ee2-kruQw0QW4w"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aXiQXI4Ee2-kruQw0QW4w" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aXiQnI4Ee2-kruQw0QW4w"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aL8FnI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aL8F3I4Ee2-kruQw0QW4w" x="588" y="426" width="30" height="30"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aL8GnI4Ee2-kruQw0QW4w" type="2001" element="_7Zsz5HI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7aMjIHI4Ee2-kruQw0QW4w" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_7aMjIXI4Ee2-kruQw0QW4w" x="-64" y="-29"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aXiQ3I4Ee2-kruQw0QW4w" type="3002" element="_7Zta8HI4Ee2-kruQw0QW4w"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aXiRHI4Ee2-kruQw0QW4w" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aXiRXI4Ee2-kruQw0QW4w"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aL8G3I4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aL8HHI4Ee2-kruQw0QW4w" x="732" y="496" width="30" height="30"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aMjInI4Ee2-kruQw0QW4w" type="2001" element="_7Zta8nI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7aMjJXI4Ee2-kruQw0QW4w" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_7aMjJnI4Ee2-kruQw0QW4w" x="-87"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aXiRnI4Ee2-kruQw0QW4w" type="3002" element="_7Zta83I4Ee2-kruQw0QW4w"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aXiR3I4Ee2-kruQw0QW4w" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aXiSHI4Ee2-kruQw0QW4w"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aMjI3I4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aMjJHI4Ee2-kruQw0QW4w" x="182" y="496" width="30" height="30"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aMjJ3I4Ee2-kruQw0QW4w" type="2001" element="_7ZuCAXI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7aNKMHI4Ee2-kruQw0QW4w" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_7aNKMXI4Ee2-kruQw0QW4w" x="-29" y="-29"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aXiSXI4Ee2-kruQw0QW4w" type="3002" element="_7ZupEHI4Ee2-kruQw0QW4w"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aXiSnI4Ee2-kruQw0QW4w" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aXiS3I4Ee2-kruQw0QW4w"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aMjKHI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aMjKXI4Ee2-kruQw0QW4w" x="282" y="582" width="30" height="30"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aNKMnI4Ee2-kruQw0QW4w" type="2001" element="_7ZupEnI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7aNKNXI4Ee2-kruQw0QW4w" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_7aNKNnI4Ee2-kruQw0QW4w" x="31" y="2"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aXiTHI4Ee2-kruQw0QW4w" type="3002" element="_7ZupE3I4Ee2-kruQw0QW4w"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aXiTXI4Ee2-kruQw0QW4w" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aXiTnI4Ee2-kruQw0QW4w"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aNKM3I4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aNKNHI4Ee2-kruQw0QW4w" x="684" y="924" width="30" height="30"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aNKN3I4Ee2-kruQw0QW4w" type="2001" element="_7ZvQIHI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7aNxQHI4Ee2-kruQw0QW4w" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_7aNxQXI4Ee2-kruQw0QW4w" x="-30" y="-29"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aXiT3I4Ee2-kruQw0QW4w" type="3002" element="_7ZvQIXI4Ee2-kruQw0QW4w"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aXiUHI4Ee2-kruQw0QW4w" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aXiUXI4Ee2-kruQw0QW4w"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aNKOHI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aNKOXI4Ee2-kruQw0QW4w" x="821" y="582" width="30" height="30"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aNxQnI4Ee2-kruQw0QW4w" type="2001" element="_7ZvQI3I4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7aNxRXI4Ee2-kruQw0QW4w" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_7aNxRnI4Ee2-kruQw0QW4w" x="-30" y="-29"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aYJUHI4Ee2-kruQw0QW4w" type="3002" element="_7ZvQJHI4Ee2-kruQw0QW4w"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aYJUXI4Ee2-kruQw0QW4w" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aYJUnI4Ee2-kruQw0QW4w"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aNxQ3I4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aNxRHI4Ee2-kruQw0QW4w" x="450" y="260" width="30" height="30"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aOYUHI4Ee2-kruQw0QW4w" type="2001" element="_7Zv3MHI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7aOYU3I4Ee2-kruQw0QW4w" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_7aOYVHI4Ee2-kruQw0QW4w" x="-20" y="61"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aYJU3I4Ee2-kruQw0QW4w" type="3003" element="_7ZweQHI4Ee2-kruQw0QW4w"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aYJVHI4Ee2-kruQw0QW4w" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aYJVXI4Ee2-kruQw0QW4w"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aOYUXI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aOYUnI4Ee2-kruQw0QW4w" x="126" y="663" width="20" height="60"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aO_YHI4Ee2-kruQw0QW4w" type="2001" element="_7ZweQnI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7aO_Y3I4Ee2-kruQw0QW4w" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_7aO_ZHI4Ee2-kruQw0QW4w" x="-35" y="61"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aYJVnI4Ee2-kruQw0QW4w" type="3003" element="_7ZweQ3I4Ee2-kruQw0QW4w"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aYJV3I4Ee2-kruQw0QW4w" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aYJWHI4Ee2-kruQw0QW4w"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aO_YXI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aO_YnI4Ee2-kruQw0QW4w" x="335" y="374" width="20" height="60"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aPmcHI4Ee2-kruQw0QW4w" type="2001" element="_7ZweRXI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7aPmc3I4Ee2-kruQw0QW4w" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_7aPmdHI4Ee2-kruQw0QW4w" x="-20" y="61"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aYJWXI4Ee2-kruQw0QW4w" type="3003" element="_7ZweRnI4Ee2-kruQw0QW4w"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aYJWnI4Ee2-kruQw0QW4w" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aYJW3I4Ee2-kruQw0QW4w"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aPmcXI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aPmcnI4Ee2-kruQw0QW4w" x="750" y="374" width="20" height="60"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aPmdXI4Ee2-kruQw0QW4w" type="2001" element="_7ZweSHI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7aQNgHI4Ee2-kruQw0QW4w" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_7aQNgXI4Ee2-kruQw0QW4w" x="-34" y="61"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aYJXHI4Ee2-kruQw0QW4w" type="3003" element="_7ZweSXI4Ee2-kruQw0QW4w"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aYJXXI4Ee2-kruQw0QW4w" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aYJXnI4Ee2-kruQw0QW4w"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aPmdnI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aPmd3I4Ee2-kruQw0QW4w" x="750" y="765" width="20" height="60"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aQNgnI4Ee2-kruQw0QW4w" type="2001" element="_7ZxFUXI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7aQNhXI4Ee2-kruQw0QW4w" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_7aQNhnI4Ee2-kruQw0QW4w" x="-20" y="61"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aYwYHI4Ee2-kruQw0QW4w" type="3003" element="_7ZxFUnI4Ee2-kruQw0QW4w"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aYwYXI4Ee2-kruQw0QW4w" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aYwYnI4Ee2-kruQw0QW4w"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aQNg3I4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aQNhHI4Ee2-kruQw0QW4w" x="335" y="765" width="20" height="60"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aQNh3I4Ee2-kruQw0QW4w" type="2001" element="_7ZxFVHI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7aQ0kHI4Ee2-kruQw0QW4w" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_7aQ0kXI4Ee2-kruQw0QW4w" x="-35" y="-29"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aYwY3I4Ee2-kruQw0QW4w" type="3003" element="_7ZxFVXI4Ee2-kruQw0QW4w"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aYwZHI4Ee2-kruQw0QW4w" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aYwZXI4Ee2-kruQw0QW4w"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aQNiHI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aQNiXI4Ee2-kruQw0QW4w" x="497" y="496" width="20" height="60"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aQ0knI4Ee2-kruQw0QW4w" type="2001" element="_7ZxFV3I4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7aRboHI4Ee2-kruQw0QW4w" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_7aRboXI4Ee2-kruQw0QW4w" x="-34" y="61"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aYwZnI4Ee2-kruQw0QW4w" type="3003" element="_7ZxFWHI4Ee2-kruQw0QW4w"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aYwZ3I4Ee2-kruQw0QW4w" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aYwaHI4Ee2-kruQw0QW4w"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aQ0k3I4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aQ0lHI4Ee2-kruQw0QW4w" x="624" y="496" width="20" height="60"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aRbonI4Ee2-kruQw0QW4w" type="2001" element="_7ZxFWnI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7aRbpXI4Ee2-kruQw0QW4w" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_7aRbpnI4Ee2-kruQw0QW4w" x="-20" y="61"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aYwaXI4Ee2-kruQw0QW4w" type="3003" element="_7ZxsYHI4Ee2-kruQw0QW4w"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aYwanI4Ee2-kruQw0QW4w" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aYwa3I4Ee2-kruQw0QW4w"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aRbo3I4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aRbpHI4Ee2-kruQw0QW4w" x="150" y="552" width="20" height="60"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aSCsHI4Ee2-kruQw0QW4w" type="2001" element="_7ZxsYnI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7aSCs3I4Ee2-kruQw0QW4w" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_7aSCtHI4Ee2-kruQw0QW4w" x="-34" y="61"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aZXcHI4Ee2-kruQw0QW4w" type="3003" element="_7ZxsY3I4Ee2-kruQw0QW4w"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aZXcXI4Ee2-kruQw0QW4w" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aZXcnI4Ee2-kruQw0QW4w"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aSCsXI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aSCsnI4Ee2-kruQw0QW4w" x="365" y="625" width="20" height="60"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aSpwHI4Ee2-kruQw0QW4w" type="2001" element="_7ZxsZXI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7aTQ0HI4Ee2-kruQw0QW4w" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_7aTQ0XI4Ee2-kruQw0QW4w" x="-34" y="61"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aZXc3I4Ee2-kruQw0QW4w" type="3003" element="_7ZxsZnI4Ee2-kruQw0QW4w"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aZXdHI4Ee2-kruQw0QW4w" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aZXdXI4Ee2-kruQw0QW4w"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aSpwXI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aSpwnI4Ee2-kruQw0QW4w" x="552" y="870" width="20" height="60"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aT34HI4Ee2-kruQw0QW4w" type="2001" element="_7ZxsaHI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7aT343I4Ee2-kruQw0QW4w" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_7aT35HI4Ee2-kruQw0QW4w" x="-35" y="61"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aZXdnI4Ee2-kruQw0QW4w" type="3003" element="_7ZxsaXI4Ee2-kruQw0QW4w"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aZXd3I4Ee2-kruQw0QW4w" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aZXeHI4Ee2-kruQw0QW4w"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aT34XI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aT34nI4Ee2-kruQw0QW4w" x="761" y="625" width="20" height="60"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aT35XI4Ee2-kruQw0QW4w" type="2001" element="_7Zxsa3I4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7aT36HI4Ee2-kruQw0QW4w" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_7aT36XI4Ee2-kruQw0QW4w" x="-35" y="-29"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aZXeXI4Ee2-kruQw0QW4w" type="3003" element="_7ZxsbHI4Ee2-kruQw0QW4w"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aZXenI4Ee2-kruQw0QW4w" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aZXe3I4Ee2-kruQw0QW4w"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_7aT35nI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aT353I4Ee2-kruQw0QW4w" x="557" y="260" width="20" height="60"/> + </children> + <styles xmi:type="notation:DiagramStyle" xmi:id="_7ZmtQnI4Ee2-kruQw0QW4w"/> + <edges xmi:type="notation:Edge" xmi:id="_7aZ-gHI4Ee2-kruQw0QW4w" type="4001" element="_7Zy6gHI4Ee2-kruQw0QW4w" source="_7aFOYHI4Ee2-kruQw0QW4w" target="_7aOYUHI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7aalkHI4Ee2-kruQw0QW4w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aalkXI4Ee2-kruQw0QW4w" x="21" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aalknI4Ee2-kruQw0QW4w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aalk3I4Ee2-kruQw0QW4w" x="12" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aallHI4Ee2-kruQw0QW4w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aallXI4Ee2-kruQw0QW4w" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_7aZ-gXI4Ee2-kruQw0QW4w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_7aZ-gnI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7aZ-g3I4Ee2-kruQw0QW4w" points="[15, 18, -75, -27]$[80, 18, -10, -27]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7aallnI4Ee2-kruQw0QW4w" id="(0.5,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7aall3I4Ee2-kruQw0QW4w" id="(0.5,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_7aalmHI4Ee2-kruQw0QW4w" type="4001" element="_7ZzhknI4Ee2-kruQw0QW4w" source="_7aF1cnI4Ee2-kruQw0QW4w" target="_7aO_YHI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7abMoHI4Ee2-kruQw0QW4w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7abMoXI4Ee2-kruQw0QW4w" x="94" y="66"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7abMonI4Ee2-kruQw0QW4w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7abMo3I4Ee2-kruQw0QW4w" x="11" y="8"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7abMpHI4Ee2-kruQw0QW4w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7abMpXI4Ee2-kruQw0QW4w" x="1" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_7aalmXI4Ee2-kruQw0QW4w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_7aalmnI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7aalm3I4Ee2-kruQw0QW4w" points="[2, 0, -117, 244]$[2, -275, -117, -31]$[109, -275, -10, -31]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7abMpnI4Ee2-kruQw0QW4w" id="(0.5,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7abMp3I4Ee2-kruQw0QW4w" id="(0.5,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_7akWkHI4Ee2-kruQw0QW4w" type="4001" element="_7Z5oOnI4Ee2-kruQw0QW4w" source="_7aF1cnI4Ee2-kruQw0QW4w" target="_7aRbonI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7akWlHI4Ee2-kruQw0QW4w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7akWlXI4Ee2-kruQw0QW4w" x="15" y="-14"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7akWlnI4Ee2-kruQw0QW4w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7akWl3I4Ee2-kruQw0QW4w" x="49" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7akWmHI4Ee2-kruQw0QW4w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7akWmXI4Ee2-kruQw0QW4w" x="1" y="7"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_7akWkXI4Ee2-kruQw0QW4w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_7akWknI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7akWk3I4Ee2-kruQw0QW4w" points="[-10, 0, 56, 66]$[-10, -96, 56, -30]$[-56, -96, 10, -30]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7akWmnI4Ee2-kruQw0QW4w" id="(0.5,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7akWm3I4Ee2-kruQw0QW4w" id="(0.5,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_7akWqHI4Ee2-kruQw0QW4w" type="4001" element="_7Z6PSXI4Ee2-kruQw0QW4w" source="_7aF1cnI4Ee2-kruQw0QW4w" target="_7aSCsHI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7ak9oHI4Ee2-kruQw0QW4w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7ak9oXI4Ee2-kruQw0QW4w" x="9" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7ak9onI4Ee2-kruQw0QW4w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7ak9o3I4Ee2-kruQw0QW4w" x="54" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7ak9pHI4Ee2-kruQw0QW4w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7ak9pXI4Ee2-kruQw0QW4w" x="-1" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_7akWqXI4Ee2-kruQw0QW4w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_7akWqnI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7akWq3I4Ee2-kruQw0QW4w" points="[15, 0, -134, -7]$[15, -18, -134, -25]$[139, -18, -10, -25]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7ak9pnI4Ee2-kruQw0QW4w" id="(0.5,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7ak9p3I4Ee2-kruQw0QW4w" id="(0.5,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_7aoA_nI4Ee2-kruQw0QW4w" type="4001" element="_7Z8rgHI4Ee2-kruQw0QW4w" source="_7aOYUHI4Ee2-kruQw0QW4w" target="_7aF1cnI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7aooAHI4Ee2-kruQw0QW4w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aooAXI4Ee2-kruQw0QW4w" x="4" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aooAnI4Ee2-kruQw0QW4w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aooA3I4Ee2-kruQw0QW4w" x="-4" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aooBHI4Ee2-kruQw0QW4w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aooBXI4Ee2-kruQw0QW4w" x="-11" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_7aoA_3I4Ee2-kruQw0QW4w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_7aoBAHI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7aoBAXI4Ee2-kruQw0QW4w" points="[10, 33, -80, -12]$[75, 33, -15, -12]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7aooBnI4Ee2-kruQw0QW4w" id="(0.5,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7aooB3I4Ee2-kruQw0QW4w" id="(0.5,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_7arESHI4Ee2-kruQw0QW4w" type="4001" element="_7Z_u1XI4Ee2-kruQw0QW4w" source="_7aQNgnI4Ee2-kruQw0QW4w" target="_7aF1cnI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7arETHI4Ee2-kruQw0QW4w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7arETXI4Ee2-kruQw0QW4w" x="12" y="41"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7arrUHI4Ee2-kruQw0QW4w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7arrUXI4Ee2-kruQw0QW4w" x="-21" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7arrUnI4Ee2-kruQw0QW4w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7arrU3I4Ee2-kruQw0QW4w" x="14"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_7arESXI4Ee2-kruQw0QW4w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_7arESnI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7arES3I4Ee2-kruQw0QW4w" points="[-10, 26, 109, 83]$[-117, 26, 2, 83]$[-117, -57, 2, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7arrVHI4Ee2-kruQw0QW4w" id="(0.5,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7arrVXI4Ee2-kruQw0QW4w" id="(0.5,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_7atgjnI4Ee2-kruQw0QW4w" type="4001" element="_7aBkAHI4Ee2-kruQw0QW4w" source="_7aSCsHI4Ee2-kruQw0QW4w" target="_7aF1cnI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7atgknI4Ee2-kruQw0QW4w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7atgk3I4Ee2-kruQw0QW4w" x="84" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7atglHI4Ee2-kruQw0QW4w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7atglXI4Ee2-kruQw0QW4w" x="-89" y="82"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7atglnI4Ee2-kruQw0QW4w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7atgl3I4Ee2-kruQw0QW4w" x="-17" y="-10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_7atgj3I4Ee2-kruQw0QW4w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_7atgkHI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7atgkXI4Ee2-kruQw0QW4w" points="[10, -25, 159, -18]$[62, -25, 211, -18]$[62, 47, 211, 54]$[-135, 47, 14, 54]$[-135, 23, 14, 30]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7atgmHI4Ee2-kruQw0QW4w" id="(0.5,1.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7atgmXI4Ee2-kruQw0QW4w" id="(0.5,0.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_7aeP8nI4Ee2-kruQw0QW4w" type="4001" element="_7Z1Wx3I4Ee2-kruQw0QW4w" source="_7aGcgnI4Ee2-kruQw0QW4w" target="_7aPmdXI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7aeP9nI4Ee2-kruQw0QW4w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aeP93I4Ee2-kruQw0QW4w" x="-26" y="54"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aeP-HI4Ee2-kruQw0QW4w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aeP-XI4Ee2-kruQw0QW4w" x="24"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aeP-nI4Ee2-kruQw0QW4w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aeP-3I4Ee2-kruQw0QW4w" x="25" y="-10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_7aeP83I4Ee2-kruQw0QW4w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_7aeP9HI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7aeP9XI4Ee2-kruQw0QW4w" points="[3, 30, 146, -117]$[3, 114, 146, -33]$[-133, 114, 10, -33]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7ae3AHI4Ee2-kruQw0QW4w" id="(0.5,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7ae3AXI4Ee2-kruQw0QW4w" id="(0.5,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_7amLwnI4Ee2-kruQw0QW4w" type="4001" element="_7Z7dYnI4Ee2-kruQw0QW4w" source="_7aGcgnI4Ee2-kruQw0QW4w" target="_7aT34HI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7amLxnI4Ee2-kruQw0QW4w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7amLx3I4Ee2-kruQw0QW4w" x="-24" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7amLyHI4Ee2-kruQw0QW4w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7amLyXI4Ee2-kruQw0QW4w" x="-12"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7amLynI4Ee2-kruQw0QW4w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7amLy3I4Ee2-kruQw0QW4w" y="-10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_7amLw3I4Ee2-kruQw0QW4w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_7amLxHI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7amLxXI4Ee2-kruQw0QW4w" points="[-9, -30, 123, 53]$[-9, -54, 123, 29]$[-122, -54, 10, 29]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7amLzHI4Ee2-kruQw0QW4w" id="(0.5,1.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7amLzXI4Ee2-kruQw0QW4w" id="(0.5,0.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_7apPGHI4Ee2-kruQw0QW4w" type="4001" element="_7Z-gsHI4Ee2-kruQw0QW4w" source="_7aPmcHI4Ee2-kruQw0QW4w" target="_7aGcgnI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7ap2IHI4Ee2-kruQw0QW4w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7ap2IXI4Ee2-kruQw0QW4w" x="-60" y="71"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7ap2InI4Ee2-kruQw0QW4w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7ap2I3I4Ee2-kruQw0QW4w" x="2" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7ap2JHI4Ee2-kruQw0QW4w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7ap2JXI4Ee2-kruQw0QW4w" x="-221" y="50"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_7apPGXI4Ee2-kruQw0QW4w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_7apPGnI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7apPG3I4Ee2-kruQw0QW4w" points="[10, 30, -133, -304]$[143, 30, 0, -304]$[143, 304, 0, -30]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7ap2JnI4Ee2-kruQw0QW4w" id="(0.5,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7ap2J3I4Ee2-kruQw0QW4w" id="(0.5,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_7auHmHI4Ee2-kruQw0QW4w" type="4001" element="_7aBkCnI4Ee2-kruQw0QW4w" source="_7aT34HI4Ee2-kruQw0QW4w" target="_7aGcgnI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7auHnHI4Ee2-kruQw0QW4w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7auHnXI4Ee2-kruQw0QW4w" x="93" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7auHnnI4Ee2-kruQw0QW4w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7auHn3I4Ee2-kruQw0QW4w" x="65" y="-146"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7auHoHI4Ee2-kruQw0QW4w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7auHoXI4Ee2-kruQw0QW4w" x="26" y="-10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_7auHmXI4Ee2-kruQw0QW4w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_7auHmnI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7auHm3I4Ee2-kruQw0QW4w" points="[-10, 30, -142, -53]$[-57, 30, -189, -53]$[-57, 107, -189, 24]$[123, 107, -9, 24]$[123, 83, -9, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7auuoHI4Ee2-kruQw0QW4w" id="(0.5,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7auuoXI4Ee2-kruQw0QW4w" id="(0.5,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_7acawnI4Ee2-kruQw0QW4w" type="4001" element="_7Z0vsnI4Ee2-kruQw0QW4w" source="_7aHDkHI4Ee2-kruQw0QW4w" target="_7aPmcHI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7acaxnI4Ee2-kruQw0QW4w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7acax3I4Ee2-kruQw0QW4w" x="-38" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7acayHI4Ee2-kruQw0QW4w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7acayXI4Ee2-kruQw0QW4w" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7acaynI4Ee2-kruQw0QW4w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7acay3I4Ee2-kruQw0QW4w" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_7acaw3I4Ee2-kruQw0QW4w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_7acaxHI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7acaxXI4Ee2-kruQw0QW4w" points="[15, 15, -178, -30]$[183, 15, -10, -30]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7adB0HI4Ee2-kruQw0QW4w" id="(0.5,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7adB0XI4Ee2-kruQw0QW4w" id="(0.5,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_7ajvgnI4Ee2-kruQw0QW4w" type="4001" element="_7Z5oMHI4Ee2-kruQw0QW4w" source="_7aHDkHI4Ee2-kruQw0QW4w" target="_7aQ0knI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7ajvhnI4Ee2-kruQw0QW4w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7ajvh3I4Ee2-kruQw0QW4w" x="29" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7ajviHI4Ee2-kruQw0QW4w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7ajviXI4Ee2-kruQw0QW4w" x="30"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7ajvinI4Ee2-kruQw0QW4w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7ajvi3I4Ee2-kruQw0QW4w" x="2" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_7ajvg3I4Ee2-kruQw0QW4w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_7ajvhHI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7ajvhXI4Ee2-kruQw0QW4w" points="[9, 0, -58, -77]$[9, 107, -58, 30]$[57, 107, -10, 30]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7ajvjHI4Ee2-kruQw0QW4w" id="(0.5,1.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7ajvjXI4Ee2-kruQw0QW4w" id="(0.5,0.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_7amy3HI4Ee2-kruQw0QW4w" type="4001" element="_7Z7dbHI4Ee2-kruQw0QW4w" source="_7aHDkHI4Ee2-kruQw0QW4w" target="_7aT35XI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7anZ4XI4Ee2-kruQw0QW4w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7anZ4nI4Ee2-kruQw0QW4w" x="20"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7anZ43I4Ee2-kruQw0QW4w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7anZ5HI4Ee2-kruQw0QW4w" x="-1" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7anZ5XI4Ee2-kruQw0QW4w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7anZ5nI4Ee2-kruQw0QW4w" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_7amy3XI4Ee2-kruQw0QW4w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_7amy3nI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7anZ4HI4Ee2-kruQw0QW4w" points="[-15, -27, -15, 132]$[-51, -27, -51, 132]$[-51, -129, -51, 30]$[-10, -129, -10, 30]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7aoA8HI4Ee2-kruQw0QW4w" id="(0.5,1.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7aoA8XI4Ee2-kruQw0QW4w" id="(0.5,0.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_7aooCHI4Ee2-kruQw0QW4w" type="4001" element="_7Z9SlHI4Ee2-kruQw0QW4w" source="_7aO_YHI4Ee2-kruQw0QW4w" target="_7aHDkHI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7aooDHI4Ee2-kruQw0QW4w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aooDXI4Ee2-kruQw0QW4w" x="36" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aooDnI4Ee2-kruQw0QW4w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aooD3I4Ee2-kruQw0QW4w" x="13" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aooEHI4Ee2-kruQw0QW4w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aooEXI4Ee2-kruQw0QW4w" x="19" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_7aooCXI4Ee2-kruQw0QW4w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_7aooCnI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7aooC3I4Ee2-kruQw0QW4w" points="[10, 30, -212, -15]$[207, 30, -15, -15]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7aooEnI4Ee2-kruQw0QW4w" id="(0.5,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7aooE3I4Ee2-kruQw0QW4w" id="(0.5,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_7asSYnI4Ee2-kruQw0QW4w" type="4001" element="_7aAV5HI4Ee2-kruQw0QW4w" source="_7aQNh3I4Ee2-kruQw0QW4w" target="_7aHDkHI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7asSZnI4Ee2-kruQw0QW4w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7asSZ3I4Ee2-kruQw0QW4w" x="3" y="51"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7asSaHI4Ee2-kruQw0QW4w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7asSaXI4Ee2-kruQw0QW4w" x="18" y="40"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7asSanI4Ee2-kruQw0QW4w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7asSa3I4Ee2-kruQw0QW4w" x="-60" y="-92"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_7asSY3I4Ee2-kruQw0QW4w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_7asSZHI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7asSZXI4Ee2-kruQw0QW4w" points="[-10, 32, -70, 109]$[-63, 32, -123, 109]$[-63, -29, -123, 48]$[51, -29, -9, 48]$[51, -77, -9, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7asSbHI4Ee2-kruQw0QW4w" id="(0.5,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7asSbXI4Ee2-kruQw0QW4w" id="(0.5,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_7auuonI4Ee2-kruQw0QW4w" type="4001" element="_7aBkD3I4Ee2-kruQw0QW4w" source="_7aT35XI4Ee2-kruQw0QW4w" target="_7aHDkHI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7auupnI4Ee2-kruQw0QW4w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7auup3I4Ee2-kruQw0QW4w" x="-48" y="-3"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7auuqHI4Ee2-kruQw0QW4w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7auuqXI4Ee2-kruQw0QW4w" x="25" y="31"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7auuqnI4Ee2-kruQw0QW4w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7auuq3I4Ee2-kruQw0QW4w" x="-9"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_7auuo3I4Ee2-kruQw0QW4w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_7auupHI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7auupXI4Ee2-kruQw0QW4w" points="[10, 30, 10, -129]$[51, 30, 51, -129]$[51, 132, 51, -27]$[15, 132, 15, -27]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7auurHI4Ee2-kruQw0QW4w" id="(0.5,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7auurXI4Ee2-kruQw0QW4w" id="(0.5,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_7agFIHI4Ee2-kruQw0QW4w" type="4001" element="_7Z2k4HI4Ee2-kruQw0QW4w" source="_7aHqoHI4Ee2-kruQw0QW4w" target="_7aQNgnI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7agsMHI4Ee2-kruQw0QW4w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7agsMXI4Ee2-kruQw0QW4w" x="45" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7ahTQHI4Ee2-kruQw0QW4w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7ahTQXI4Ee2-kruQw0QW4w" x="1" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7ah6UHI4Ee2-kruQw0QW4w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7ah6UXI4Ee2-kruQw0QW4w" x="-16" y="-10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_7agFIXI4Ee2-kruQw0QW4w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_7agFInI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7agFI3I4Ee2-kruQw0QW4w" points="[-15, 11, 207, -34]$[-212, 11, 10, -34]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7ah6UnI4Ee2-kruQw0QW4w" id="(0.5,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7ah6U3I4Ee2-kruQw0QW4w" id="(0.5,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_7aiha3I4Ee2-kruQw0QW4w" type="4001" element="_7Z3L9HI4Ee2-kruQw0QW4w" source="_7aHqoHI4Ee2-kruQw0QW4w" target="_7aQNh3I4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7ajIc3I4Ee2-kruQw0QW4w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7ajIdHI4Ee2-kruQw0QW4w" x="-16" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7ajIdXI4Ee2-kruQw0QW4w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7ajIdnI4Ee2-kruQw0QW4w" x="36" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7ajId3I4Ee2-kruQw0QW4w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7ajIeHI4Ee2-kruQw0QW4w" x="-89" y="5"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_7ajIcHI4Ee2-kruQw0QW4w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_7ajIcXI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7ajIcnI4Ee2-kruQw0QW4w" points="[-9, 0, 51, 224]$[-9, -252, 51, -28]$[-50, -252, 10, -28]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7ajIeXI4Ee2-kruQw0QW4w" id="(0.5,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7ajIenI4Ee2-kruQw0QW4w" id="(0.5,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_7alksnI4Ee2-kruQw0QW4w" type="4001" element="_7Z62VHI4Ee2-kruQw0QW4w" source="_7aHqoHI4Ee2-kruQw0QW4w" target="_7aSpwHI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7alktnI4Ee2-kruQw0QW4w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7alkt3I4Ee2-kruQw0QW4w" x="-22"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7alkuHI4Ee2-kruQw0QW4w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7alkuXI4Ee2-kruQw0QW4w" x="-5" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7alkunI4Ee2-kruQw0QW4w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7alku3I4Ee2-kruQw0QW4w" x="6" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_7alks3I4Ee2-kruQw0QW4w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_7alktHI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7alktXI4Ee2-kruQw0QW4w" points="[-15, 24, -10, -126]$[-39, 24, -34, -126]$[-39, 120, -34, -30]$[-15, 120, -10, -30]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7alkvHI4Ee2-kruQw0QW4w" id="(0.5,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7alkvXI4Ee2-kruQw0QW4w" id="(0.5,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_7aqdNnI4Ee2-kruQw0QW4w" type="4001" element="_7Z_Hx3I4Ee2-kruQw0QW4w" source="_7aPmdXI4Ee2-kruQw0QW4w" target="_7aHqoHI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7aqdOnI4Ee2-kruQw0QW4w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aqdO3I4Ee2-kruQw0QW4w" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aqdPHI4Ee2-kruQw0QW4w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aqdPXI4Ee2-kruQw0QW4w" x="36" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aqdPnI4Ee2-kruQw0QW4w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aqdP3I4Ee2-kruQw0QW4w" y="-10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_7aqdN3I4Ee2-kruQw0QW4w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_7aqdOHI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7aqdOXI4Ee2-kruQw0QW4w" points="[-10, -33, 183, 12]$[-178, -33, 15, 12]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7aqdQHI4Ee2-kruQw0QW4w" id="(0.5,1.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7aqdQXI4Ee2-kruQw0QW4w" id="(0.5,0.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_7as5cHI4Ee2-kruQw0QW4w" type="4001" element="_7aA88HI4Ee2-kruQw0QW4w" source="_7aQ0knI4Ee2-kruQw0QW4w" target="_7aHqoHI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7as5dHI4Ee2-kruQw0QW4w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7as5dXI4Ee2-kruQw0QW4w" x="-12" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7as5dnI4Ee2-kruQw0QW4w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7as5d3I4Ee2-kruQw0QW4w" x="43" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7as5eHI4Ee2-kruQw0QW4w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7as5eXI4Ee2-kruQw0QW4w" x="28" y="-10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_7as5cXI4Ee2-kruQw0QW4w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_7as5cnI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7as5c3I4Ee2-kruQw0QW4w" points="[10, 30, 77, -284]$[56, 30, 123, -284]$[56, 92, 123, -222]$[-58, 92, 9, -222]$[-58, 284, 9, -30]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7as5enI4Ee2-kruQw0QW4w" id="(0.5,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7as5e3I4Ee2-kruQw0QW4w" id="(0.5,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_7atgmnI4Ee2-kruQw0QW4w" type="4001" element="_7aBkBXI4Ee2-kruQw0QW4w" source="_7aSpwHI4Ee2-kruQw0QW4w" target="_7aHqoHI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7auHkHI4Ee2-kruQw0QW4w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7auHkXI4Ee2-kruQw0QW4w" x="27" y="-1"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7auHknI4Ee2-kruQw0QW4w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7auHk3I4Ee2-kruQw0QW4w" x="13" y="-28"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7auHlHI4Ee2-kruQw0QW4w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7auHlXI4Ee2-kruQw0QW4w" x="-2" y="-25"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_7atgm3I4Ee2-kruQw0QW4w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_7atgnHI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7atgnXI4Ee2-kruQw0QW4w" points="[10, -31, 5, 119]$[44, -31, 39, 119]$[44, -126, 39, 24]$[20, -126, 15, 24]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7auHlnI4Ee2-kruQw0QW4w" id="(0.5,1.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7auHl3I4Ee2-kruQw0QW4w" id="(0.5,0.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_7atggnI4Ee2-kruQw0QW4w" type="4001" element="_7aA8-nI4Ee2-kruQw0QW4w" source="_7aRbonI4Ee2-kruQw0QW4w" target="_7aHqpXI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7atghnI4Ee2-kruQw0QW4w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7atgh3I4Ee2-kruQw0QW4w" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7atgiHI4Ee2-kruQw0QW4w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7atgiXI4Ee2-kruQw0QW4w" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7atginI4Ee2-kruQw0QW4w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7atgi3I4Ee2-kruQw0QW4w" y="-10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_7atgg3I4Ee2-kruQw0QW4w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_7atghHI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7atghXI4Ee2-kruQw0QW4w" points="[-10, 30, 104, -15]$[-99, 30, 15, -15]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7atgjHI4Ee2-kruQw0QW4w" id="(0.5,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7atgjXI4Ee2-kruQw0QW4w" id="(0.5,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_7abMqHI4Ee2-kruQw0QW4w" type="4001" element="_7Z0IonI4Ee2-kruQw0QW4w" source="_7aIRsHI4Ee2-kruQw0QW4w" target="_7aO_YHI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7abzsHI4Ee2-kruQw0QW4w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7abzsXI4Ee2-kruQw0QW4w" x="21" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7abzsnI4Ee2-kruQw0QW4w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7abzs3I4Ee2-kruQw0QW4w" x="-4" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7abztHI4Ee2-kruQw0QW4w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7abztXI4Ee2-kruQw0QW4w" x="-6" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_7abMqXI4Ee2-kruQw0QW4w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_7abMqnI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7abMq3I4Ee2-kruQw0QW4w" points="[0, 30, -71, -80]$[0, 62, -71, -48]$[61, 62, -10, -48]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7acawHI4Ee2-kruQw0QW4w" id="(0.5,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7acawXI4Ee2-kruQw0QW4w" id="(0.5,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_7aooFHI4Ee2-kruQw0QW4w" type="4001" element="_7Z95onI4Ee2-kruQw0QW4w" source="_7aO_YHI4Ee2-kruQw0QW4w" target="_7aJf0nI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7apPEHI4Ee2-kruQw0QW4w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7apPEXI4Ee2-kruQw0QW4w" x="3" y="-5"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7apPEnI4Ee2-kruQw0QW4w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7apPE3I4Ee2-kruQw0QW4w" x="4" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7apPFHI4Ee2-kruQw0QW4w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7apPFXI4Ee2-kruQw0QW4w" x="-12"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_7aooFXI4Ee2-kruQw0QW4w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_7aooFnI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7aooF3I4Ee2-kruQw0QW4w" points="[10, 12, -44, 32]$[54, 12, 0, 32]$[54, -20, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7apPFnI4Ee2-kruQw0QW4w" id="(0.5,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7apPF3I4Ee2-kruQw0QW4w" id="(0.5,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_7ado4HI4Ee2-kruQw0QW4w" type="4001" element="_7Z1WwnI4Ee2-kruQw0QW4w" source="_7aKG4nI4Ee2-kruQw0QW4w" target="_7aPmcHI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7ado5HI4Ee2-kruQw0QW4w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7ado5XI4Ee2-kruQw0QW4w" x="3" y="-4"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7ado5nI4Ee2-kruQw0QW4w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7ado53I4Ee2-kruQw0QW4w" x="14" y="-8"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7ado6HI4Ee2-kruQw0QW4w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7ado6XI4Ee2-kruQw0QW4w" x="-2" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_7ado4XI4Ee2-kruQw0QW4w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_7ado4nI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7ado43I4Ee2-kruQw0QW4w" points="[0, 30, -49, -80]$[0, 62, -49, -48]$[39, 62, -10, -48]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7aeP8HI4Ee2-kruQw0QW4w" id="(0.5,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7aeP8XI4Ee2-kruQw0QW4w" id="(0.5,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_7ap2KHI4Ee2-kruQw0QW4w" type="4001" element="_7Z_HwnI4Ee2-kruQw0QW4w" source="_7aPmcHI4Ee2-kruQw0QW4w" target="_7aKG53I4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7ap2LHI4Ee2-kruQw0QW4w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7ap2LXI4Ee2-kruQw0QW4w" x="-2" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aqdMHI4Ee2-kruQw0QW4w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aqdMXI4Ee2-kruQw0QW4w" x="9" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aqdMnI4Ee2-kruQw0QW4w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aqdM3I4Ee2-kruQw0QW4w" x="-15"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_7ap2KXI4Ee2-kruQw0QW4w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_7ap2KnI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7ap2K3I4Ee2-kruQw0QW4w" points="[10, 12, -43, 32]$[50, 12, -3, 32]$[50, -20, -3, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7aqdNHI4Ee2-kruQw0QW4w" id="(0.5,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7aqdNXI4Ee2-kruQw0QW4w" id="(0.5,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_7ae3AnI4Ee2-kruQw0QW4w" type="4001" element="_7Z191HI4Ee2-kruQw0QW4w" source="_7aKt8HI4Ee2-kruQw0QW4w" target="_7aPmdXI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7ae3BnI4Ee2-kruQw0QW4w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7ae3B3I4Ee2-kruQw0QW4w" x="-13" y="-13"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7ae3CHI4Ee2-kruQw0QW4w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7ae3CXI4Ee2-kruQw0QW4w" x="3"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7afeEHI4Ee2-kruQw0QW4w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7afeEXI4Ee2-kruQw0QW4w" x="-60" y="-19"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_7ae3A3I4Ee2-kruQw0QW4w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_7ae3BHI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7ae3BXI4Ee2-kruQw0QW4w" points="[0, 0, 76, 24]$[0, -39, 76, -15]$[-66, -39, 10, -15]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7afeEnI4Ee2-kruQw0QW4w" id="(0.5,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7afeE3I4Ee2-kruQw0QW4w" id="(0.5,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_7aqdQnI4Ee2-kruQw0QW4w" type="4001" element="_7Z_u0HI4Ee2-kruQw0QW4w" source="_7aPmdXI4Ee2-kruQw0QW4w" target="_7aKt9XI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7arEQHI4Ee2-kruQw0QW4w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7arEQXI4Ee2-kruQw0QW4w" x="4"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7arEQnI4Ee2-kruQw0QW4w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7arEQ3I4Ee2-kruQw0QW4w" x="6" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7arERHI4Ee2-kruQw0QW4w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7arERXI4Ee2-kruQw0QW4w" x="-35" y="-5"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_7aqdQ3I4Ee2-kruQw0QW4w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_7aqdRHI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7aqdRXI4Ee2-kruQw0QW4w" points="[-10, 45, 51, -69]$[-61, 45, 0, -69]$[-61, 84, 0, -30]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7arERnI4Ee2-kruQw0QW4w" id="(0.5,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7arER3I4Ee2-kruQw0QW4w" id="(0.5,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_7ah6VHI4Ee2-kruQw0QW4w" type="4001" element="_7Z2k5XI4Ee2-kruQw0QW4w" source="_7aKt-nI4Ee2-kruQw0QW4w" target="_7aQNgnI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7aihY3I4Ee2-kruQw0QW4w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aihZHI4Ee2-kruQw0QW4w" x="-3" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aihZXI4Ee2-kruQw0QW4w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aihZnI4Ee2-kruQw0QW4w" x="24" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aihZ3I4Ee2-kruQw0QW4w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aihaHI4Ee2-kruQw0QW4w" x="-1" y="-10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_7aihYHI4Ee2-kruQw0QW4w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_7aihYXI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7aihYnI4Ee2-kruQw0QW4w" points="[0, 0, 72, 24]$[0, -39, 72, -15]$[-62, -39, 10, -15]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7aihaXI4Ee2-kruQw0QW4w" id="(0.5,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7aihanI4Ee2-kruQw0QW4w" id="(0.5,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_7arrVnI4Ee2-kruQw0QW4w" type="4001" element="_7Z_u2nI4Ee2-kruQw0QW4w" source="_7aQNgnI4Ee2-kruQw0QW4w" target="_7aLVAnI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7arrWnI4Ee2-kruQw0QW4w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7arrW3I4Ee2-kruQw0QW4w" x="6"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7arrXHI4Ee2-kruQw0QW4w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7arrXXI4Ee2-kruQw0QW4w" x="-13" y="-7"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7arrXnI4Ee2-kruQw0QW4w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7arrX3I4Ee2-kruQw0QW4w" x="-10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_7arrV3I4Ee2-kruQw0QW4w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_7arrWHI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7arrWXI4Ee2-kruQw0QW4w" points="[-10, 45, 50, -69]$[-60, 45, 0, -69]$[-60, 84, 0, -30]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7asSYHI4Ee2-kruQw0QW4w" id="(0.5,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7asSYXI4Ee2-kruQw0QW4w" id="(0.5,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_7ajIe3I4Ee2-kruQw0QW4w" type="4001" element="_7Z4aEHI4Ee2-kruQw0QW4w" source="_7aLVB3I4Ee2-kruQw0QW4w" target="_7aQNh3I4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7ajIf3I4Ee2-kruQw0QW4w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7ajIgHI4Ee2-kruQw0QW4w" x="-3" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7ajIgXI4Ee2-kruQw0QW4w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7ajIgnI4Ee2-kruQw0QW4w" x="16" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7ajIg3I4Ee2-kruQw0QW4w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7ajIhHI4Ee2-kruQw0QW4w" x="-14" y="-27"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_7ajIfHI4Ee2-kruQw0QW4w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_7ajIfXI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7ajIfnI4Ee2-kruQw0QW4w" points="[3, 0, 27, 55]$[3, -65, 27, -10]$[-14, -65, 10, -10]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7ajvgHI4Ee2-kruQw0QW4w" id="(0.5,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7ajvgXI4Ee2-kruQw0QW4w" id="(0.5,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_7asSbnI4Ee2-kruQw0QW4w" type="4001" element="_7aAV6XI4Ee2-kruQw0QW4w" source="_7aQNh3I4Ee2-kruQw0QW4w" target="_7aL8EHI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7asScnI4Ee2-kruQw0QW4w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7asSc3I4Ee2-kruQw0QW4w" x="-11" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7asSdHI4Ee2-kruQw0QW4w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7asSdXI4Ee2-kruQw0QW4w" x="21" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7asSdnI4Ee2-kruQw0QW4w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7asSd3I4Ee2-kruQw0QW4w" x="-4" y="-10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_7asSb3I4Ee2-kruQw0QW4w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_7asScHI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7asScXI4Ee2-kruQw0QW4w" points="[-68, 0, 11, -72]$[-68, 72, 11, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7asSeHI4Ee2-kruQw0QW4w" id="(0.5,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7asSeXI4Ee2-kruQw0QW4w" id="(0.5,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_7ajvjnI4Ee2-kruQw0QW4w" type="4001" element="_7Z5oNXI4Ee2-kruQw0QW4w" source="_7aL8FXI4Ee2-kruQw0QW4w" target="_7aQ0knI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7ajvknI4Ee2-kruQw0QW4w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7ajvk3I4Ee2-kruQw0QW4w" x="14" y="-16"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7ajvlHI4Ee2-kruQw0QW4w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7ajvlXI4Ee2-kruQw0QW4w" x="8"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7ajvlnI4Ee2-kruQw0QW4w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7ajvl3I4Ee2-kruQw0QW4w" x="2" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_7ajvj3I4Ee2-kruQw0QW4w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_7ajvkHI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7ajvkXI4Ee2-kruQw0QW4w" points="[-3, 30, -34, -100]$[-3, 84, -34, -46]$[21, 84, -10, -46]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7ajvmHI4Ee2-kruQw0QW4w" id="(0.5,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7ajvmXI4Ee2-kruQw0QW4w" id="(0.5,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_7as5fHI4Ee2-kruQw0QW4w" type="4001" element="_7aA89XI4Ee2-kruQw0QW4w" source="_7aQ0knI4Ee2-kruQw0QW4w" target="_7aL8GnI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7as5gHI4Ee2-kruQw0QW4w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7as5gXI4Ee2-kruQw0QW4w" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7as5gnI4Ee2-kruQw0QW4w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7as5g3I4Ee2-kruQw0QW4w" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7as5hHI4Ee2-kruQw0QW4w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7as5hXI4Ee2-kruQw0QW4w" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_7as5fXI4Ee2-kruQw0QW4w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_7as5fnI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7as5f3I4Ee2-kruQw0QW4w" points="[10, 14, -103, -16]$[98, 14, -15, -16]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7atggHI4Ee2-kruQw0QW4w" id="(0.5,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7atggXI4Ee2-kruQw0QW4w" id="(0.5,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_7akWnHI4Ee2-kruQw0QW4w" type="4001" element="_7Z6PRHI4Ee2-kruQw0QW4w" source="_7aMjInI4Ee2-kruQw0QW4w" target="_7aRbonI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7akWoHI4Ee2-kruQw0QW4w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7akWoXI4Ee2-kruQw0QW4w" x="-16" y="9"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7akWonI4Ee2-kruQw0QW4w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7akWo3I4Ee2-kruQw0QW4w" x="37" y="3"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7akWpHI4Ee2-kruQw0QW4w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7akWpXI4Ee2-kruQw0QW4w" x="8" y="-10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_7akWnXI4Ee2-kruQw0QW4w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_7akWnnI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7akWn3I4Ee2-kruQw0QW4w" points="[0, 30, 37, -86]$[0, 68, 37, -48]$[-27, 68, 10, -48]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7akWpnI4Ee2-kruQw0QW4w" id="(0.5,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7akWp3I4Ee2-kruQw0QW4w" id="(0.5,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_7ak9qHI4Ee2-kruQw0QW4w" type="4001" element="_7Z6PTnI4Ee2-kruQw0QW4w" source="_7aMjJ3I4Ee2-kruQw0QW4w" target="_7aSCsHI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7ak9rHI4Ee2-kruQw0QW4w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7ak9rXI4Ee2-kruQw0QW4w" x="28" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7ak9rnI4Ee2-kruQw0QW4w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7ak9r3I4Ee2-kruQw0QW4w" x="23" y="-11"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7ak9sHI4Ee2-kruQw0QW4w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7ak9sXI4Ee2-kruQw0QW4w" x="-3" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_7ak9qXI4Ee2-kruQw0QW4w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_7ak9qnI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7ak9q3I4Ee2-kruQw0QW4w" points="[0, 30, -78, -73]$[0, 59, -78, -44]$[68, 59, -10, -44]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7alksHI4Ee2-kruQw0QW4w" id="(0.5,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7alksXI4Ee2-kruQw0QW4w" id="(0.5,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_7alkvnI4Ee2-kruQw0QW4w" type="4001" element="_7Z62WXI4Ee2-kruQw0QW4w" source="_7aNKMnI4Ee2-kruQw0QW4w" target="_7aSpwHI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7alkwnI4Ee2-kruQw0QW4w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7alkw3I4Ee2-kruQw0QW4w" x="6" y="34"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7alkxHI4Ee2-kruQw0QW4w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7alkxXI4Ee2-kruQw0QW4w" x="1" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7alkxnI4Ee2-kruQw0QW4w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7alkx3I4Ee2-kruQw0QW4w" x="-40" y="-27"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_7alkv3I4Ee2-kruQw0QW4w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_7alkwHI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7alkwXI4Ee2-kruQw0QW4w" points="[-15, 11, 122, 5]$[-75, 11, 62, 5]$[-75, -6, 62, -12]$[-127, -6, 10, -12]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7amLwHI4Ee2-kruQw0QW4w" id="(0.5,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7amLwXI4Ee2-kruQw0QW4w" id="(0.5,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_7amy0HI4Ee2-kruQw0QW4w" type="4001" element="_7Z7dZ3I4Ee2-kruQw0QW4w" source="_7aNKN3I4Ee2-kruQw0QW4w" target="_7aT34HI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7amy1HI4Ee2-kruQw0QW4w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7amy1XI4Ee2-kruQw0QW4w" x="-5" y="5"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7amy1nI4Ee2-kruQw0QW4w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7amy13I4Ee2-kruQw0QW4w" x="-5" y="3"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7amy2HI4Ee2-kruQw0QW4w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7amy2XI4Ee2-kruQw0QW4w" x="-2" y="-10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_7amy0XI4Ee2-kruQw0QW4w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_7amy0nI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7amy03I4Ee2-kruQw0QW4w" points="[-1, 30, 64, -73]$[-1, 54, 64, -49]$[-55, 54, 10, -49]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7amy2nI4Ee2-kruQw0QW4w" id="(0.5,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7amy23I4Ee2-kruQw0QW4w" id="(0.5,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_7aoA8nI4Ee2-kruQw0QW4w" type="4001" element="_7Z8EdHI4Ee2-kruQw0QW4w" source="_7aNxQnI4Ee2-kruQw0QW4w" target="_7aT35XI4Ee2-kruQw0QW4w"> + <children xmi:type="notation:Node" xmi:id="_7aoA9nI4Ee2-kruQw0QW4w" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aoA93I4Ee2-kruQw0QW4w" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aoA-HI4Ee2-kruQw0QW4w" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aoA-XI4Ee2-kruQw0QW4w" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_7aoA-nI4Ee2-kruQw0QW4w" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7aoA-3I4Ee2-kruQw0QW4w" x="-14" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_7aoA83I4Ee2-kruQw0QW4w" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_7aoA9HI4Ee2-kruQw0QW4w" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7aoA9XI4Ee2-kruQw0QW4w" points="[15, 14, -87, -46]$[92, 14, -10, -46]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7aoA_HI4Ee2-kruQw0QW4w" id="(0.5,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7aoA_XI4Ee2-kruQw0QW4w" id="(0.5,1.0)"/> + </edges> + </data> + </ownedAnnotationEntries> + <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_7aCLEnI4Ee2-kruQw0QW4w" source="DANNOTATION_CUSTOMIZATION_KEY"> + <data xmi:type="diagram:ComputedStyleDescriptionRegistry" uid="_7aCLE3I4Ee2-kruQw0QW4w"/> + </ownedAnnotationEntries> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_7Zn7YHI4Ee2-kruQw0QW4w" name="initial" outgoingEdges="_7Zy6gHI4Ee2-kruQw0QW4w" width="3" height="3"> + <target xmi:type="petrinet:Place" href="petrinets/garagedoor.petrinet#//@elements.0"/> + <semanticElements xmi:type="petrinet:Place" href="petrinets/garagedoor.petrinet#//@elements.0"/> + <ownedBorderedNodes xmi:type="diagram:DNode" uid="_7ZvQJnI4Ee2-kruQw0QW4w" name="''" width="2" height="2"> + <target xmi:type="petrinet:Token" href="petrinets/garagedoor.petrinet#//@elements.0/@token"/> + <semanticElements xmi:type="petrinet:Token" href="petrinets/garagedoor.petrinet#//@elements.0/@token"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Dot" uid="_7ZvQJ3I4Ee2-kruQw0QW4w" labelSize="12" showIcon="false" labelAlignment="LEFT" labelPosition="node" backgroundColor="0,0,0"> + <description xmi:type="style:DotDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']/@borderedNodeMappings[name='Token']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']/@borderedNodeMappings[name='Token']"/> + </ownedBorderedNodes> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Dot" uid="_7Zn7YXI4Ee2-kruQw0QW4w" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" strokeSizeComputationExpression="3" backgroundColor="255,245,181"> + <description xmi:type="style:DotDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_7ZoicXI4Ee2-kruQw0QW4w" name="Closed" outgoingEdges="_7ZzhknI4Ee2-kruQw0QW4w _7Z5oOnI4Ee2-kruQw0QW4w _7Z6PSXI4Ee2-kruQw0QW4w" incomingEdges="_7Z8rgHI4Ee2-kruQw0QW4w _7Z_u1XI4Ee2-kruQw0QW4w _7aBkAHI4Ee2-kruQw0QW4w" width="3" height="3"> + <target xmi:type="petrinet:Place" href="petrinets/garagedoor.petrinet#//@elements.1"/> + <semanticElements xmi:type="petrinet:Place" href="petrinets/garagedoor.petrinet#//@elements.1"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Dot" uid="_7ZoicnI4Ee2-kruQw0QW4w" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" strokeSizeComputationExpression="3" backgroundColor="255,245,181"> + <description xmi:type="style:DotDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_7ZoidHI4Ee2-kruQw0QW4w" name="Open" outgoingEdges="_7Z1Wx3I4Ee2-kruQw0QW4w _7Z7dYnI4Ee2-kruQw0QW4w" incomingEdges="_7Z-gsHI4Ee2-kruQw0QW4w _7aBkCnI4Ee2-kruQw0QW4w" width="3" height="3"> + <target xmi:type="petrinet:Place" href="petrinets/garagedoor.petrinet#//@elements.2"/> + <semanticElements xmi:type="petrinet:Place" href="petrinets/garagedoor.petrinet#//@elements.2"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Dot" uid="_7ZoidXI4Ee2-kruQw0QW4w" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" strokeSizeComputationExpression="3" backgroundColor="255,245,181"> + <description xmi:type="style:DotDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_7Zoid3I4Ee2-kruQw0QW4w" name="Opening" outgoingEdges="_7Z0vsnI4Ee2-kruQw0QW4w _7Z5oMHI4Ee2-kruQw0QW4w _7Z7dbHI4Ee2-kruQw0QW4w" incomingEdges="_7Z9SlHI4Ee2-kruQw0QW4w _7aAV5HI4Ee2-kruQw0QW4w _7aBkD3I4Ee2-kruQw0QW4w" width="3" height="3"> + <target xmi:type="petrinet:Place" href="petrinets/garagedoor.petrinet#//@elements.3"/> + <semanticElements xmi:type="petrinet:Place" href="petrinets/garagedoor.petrinet#//@elements.3"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Dot" uid="_7ZpJgHI4Ee2-kruQw0QW4w" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" strokeSizeComputationExpression="3" backgroundColor="255,245,181"> + <description xmi:type="style:DotDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_7ZpJgnI4Ee2-kruQw0QW4w" name="Closing" outgoingEdges="_7Z2k4HI4Ee2-kruQw0QW4w _7Z3L9HI4Ee2-kruQw0QW4w _7Z62VHI4Ee2-kruQw0QW4w" incomingEdges="_7Z_Hx3I4Ee2-kruQw0QW4w _7aA88HI4Ee2-kruQw0QW4w _7aBkBXI4Ee2-kruQw0QW4w" width="3" height="3"> + <target xmi:type="petrinet:Place" href="petrinets/garagedoor.petrinet#//@elements.4"/> + <semanticElements xmi:type="petrinet:Place" href="petrinets/garagedoor.petrinet#//@elements.4"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Dot" uid="_7ZpJg3I4Ee2-kruQw0QW4w" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" strokeSizeComputationExpression="3" backgroundColor="255,245,181"> + <description xmi:type="style:DotDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_7ZpwkHI4Ee2-kruQw0QW4w" name="final" incomingEdges="_7aA8-nI4Ee2-kruQw0QW4w" width="3" height="3"> + <target xmi:type="petrinet:Place" href="petrinets/garagedoor.petrinet#//@elements.5"/> + <semanticElements xmi:type="petrinet:Place" href="petrinets/garagedoor.petrinet#//@elements.5"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Dot" uid="_7ZpwkXI4Ee2-kruQw0QW4w" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" strokeSizeComputationExpression="3" backgroundColor="255,245,181"> + <description xmi:type="style:DotDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_7Zpwk3I4Ee2-kruQw0QW4w" name="openDoor" outgoingEdges="_7Z0IonI4Ee2-kruQw0QW4w" width="3" height="3"> + <target xmi:type="petrinet:Place" href="petrinets/garagedoor.petrinet#//@elements.8"/> + <semanticElements xmi:type="petrinet:Place" href="petrinets/garagedoor.petrinet#//@elements.8"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Dot" uid="_7ZpwlHI4Ee2-kruQw0QW4w" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" strokeSizeComputationExpression="3" backgroundColor="255,245,181"> + <description xmi:type="style:DotDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_7ZqXoHI4Ee2-kruQw0QW4w" name="motor.upwards" incomingEdges="_7Z95onI4Ee2-kruQw0QW4w" width="3" height="3"> + <target xmi:type="petrinet:Place" href="petrinets/garagedoor.petrinet#//@elements.9"/> + <semanticElements xmi:type="petrinet:Place" href="petrinets/garagedoor.petrinet#//@elements.9"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Dot" uid="_7ZqXoXI4Ee2-kruQw0QW4w" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" strokeSizeComputationExpression="3" backgroundColor="255,245,181"> + <description xmi:type="style:DotDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_7ZqXo3I4Ee2-kruQw0QW4w" name="stopper" outgoingEdges="_7Z1WwnI4Ee2-kruQw0QW4w" width="3" height="3"> + <target xmi:type="petrinet:Place" href="petrinets/garagedoor.petrinet#//@elements.11"/> + <semanticElements xmi:type="petrinet:Place" href="petrinets/garagedoor.petrinet#//@elements.11"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Dot" uid="_7ZqXpHI4Ee2-kruQw0QW4w" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" strokeSizeComputationExpression="3" backgroundColor="255,245,181"> + <description xmi:type="style:DotDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_7Zq-sHI4Ee2-kruQw0QW4w" name="motor.stop" incomingEdges="_7Z_HwnI4Ee2-kruQw0QW4w" width="3" height="3"> + <target xmi:type="petrinet:Place" href="petrinets/garagedoor.petrinet#//@elements.12"/> + <semanticElements xmi:type="petrinet:Place" href="petrinets/garagedoor.petrinet#//@elements.12"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Dot" uid="_7Zq-sXI4Ee2-kruQw0QW4w" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" strokeSizeComputationExpression="3" backgroundColor="255,245,181"> + <description xmi:type="style:DotDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_7Zq-s3I4Ee2-kruQw0QW4w" name="closeDoor" outgoingEdges="_7Z191HI4Ee2-kruQw0QW4w" width="3" height="3"> + <target xmi:type="petrinet:Place" href="petrinets/garagedoor.petrinet#//@elements.14"/> + <semanticElements xmi:type="petrinet:Place" href="petrinets/garagedoor.petrinet#//@elements.14"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Dot" uid="_7Zq-tHI4Ee2-kruQw0QW4w" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" strokeSizeComputationExpression="3" backgroundColor="255,245,181"> + <description xmi:type="style:DotDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_7Zq-tnI4Ee2-kruQw0QW4w" name="motor.downwards" incomingEdges="_7Z_u0HI4Ee2-kruQw0QW4w" width="3" height="3"> + <target xmi:type="petrinet:Place" href="petrinets/garagedoor.petrinet#//@elements.15"/> + <semanticElements xmi:type="petrinet:Place" href="petrinets/garagedoor.petrinet#//@elements.15"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Dot" uid="_7ZrlwHI4Ee2-kruQw0QW4w" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" strokeSizeComputationExpression="3" backgroundColor="255,245,181"> + <description xmi:type="style:DotDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_7ZrlwnI4Ee2-kruQw0QW4w" name="stopper" outgoingEdges="_7Z2k5XI4Ee2-kruQw0QW4w" width="3" height="3"> + <target xmi:type="petrinet:Place" href="petrinets/garagedoor.petrinet#//@elements.17"/> + <semanticElements xmi:type="petrinet:Place" href="petrinets/garagedoor.petrinet#//@elements.17"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Dot" uid="_7Zrlw3I4Ee2-kruQw0QW4w" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" strokeSizeComputationExpression="3" backgroundColor="255,245,181"> + <description xmi:type="style:DotDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_7ZrlxXI4Ee2-kruQw0QW4w" name="motor.stop" incomingEdges="_7Z_u2nI4Ee2-kruQw0QW4w" width="3" height="3"> + <target xmi:type="petrinet:Place" href="petrinets/garagedoor.petrinet#//@elements.18"/> + <semanticElements xmi:type="petrinet:Place" href="petrinets/garagedoor.petrinet#//@elements.18"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Dot" uid="_7ZrlxnI4Ee2-kruQw0QW4w" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" strokeSizeComputationExpression="3" backgroundColor="255,245,181"> + <description xmi:type="style:DotDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_7ZsM0XI4Ee2-kruQw0QW4w" name="openDoor" outgoingEdges="_7Z4aEHI4Ee2-kruQw0QW4w" width="3" height="3"> + <target xmi:type="petrinet:Place" href="petrinets/garagedoor.petrinet#//@elements.20"/> + <semanticElements xmi:type="petrinet:Place" href="petrinets/garagedoor.petrinet#//@elements.20"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Dot" uid="_7ZsM0nI4Ee2-kruQw0QW4w" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" strokeSizeComputationExpression="3" backgroundColor="255,245,181"> + <description xmi:type="style:DotDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_7ZsM1HI4Ee2-kruQw0QW4w" name="motor.upwards" incomingEdges="_7aAV6XI4Ee2-kruQw0QW4w" width="3" height="3"> + <target xmi:type="petrinet:Place" href="petrinets/garagedoor.petrinet#//@elements.21"/> + <semanticElements xmi:type="petrinet:Place" href="petrinets/garagedoor.petrinet#//@elements.21"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Dot" uid="_7ZsM1XI4Ee2-kruQw0QW4w" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" strokeSizeComputationExpression="3" backgroundColor="255,245,181"> + <description xmi:type="style:DotDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_7Zsz4XI4Ee2-kruQw0QW4w" name="closeDoor" outgoingEdges="_7Z5oNXI4Ee2-kruQw0QW4w" width="3" height="3"> + <target xmi:type="petrinet:Place" href="petrinets/garagedoor.petrinet#//@elements.23"/> + <semanticElements xmi:type="petrinet:Place" href="petrinets/garagedoor.petrinet#//@elements.23"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Dot" uid="_7Zsz4nI4Ee2-kruQw0QW4w" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" strokeSizeComputationExpression="3" backgroundColor="255,245,181"> + <description xmi:type="style:DotDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_7Zsz5HI4Ee2-kruQw0QW4w" name="motor.downwards" incomingEdges="_7aA89XI4Ee2-kruQw0QW4w" width="3" height="3"> + <target xmi:type="petrinet:Place" href="petrinets/garagedoor.petrinet#//@elements.24"/> + <semanticElements xmi:type="petrinet:Place" href="petrinets/garagedoor.petrinet#//@elements.24"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Dot" uid="_7Zta8HI4Ee2-kruQw0QW4w" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" strokeSizeComputationExpression="3" backgroundColor="255,245,181"> + <description xmi:type="style:DotDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_7Zta8nI4Ee2-kruQw0QW4w" name="shutdown" outgoingEdges="_7Z6PRHI4Ee2-kruQw0QW4w" width="3" height="3"> + <target xmi:type="petrinet:Place" href="petrinets/garagedoor.petrinet#//@elements.26"/> + <semanticElements xmi:type="petrinet:Place" href="petrinets/garagedoor.petrinet#//@elements.26"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Dot" uid="_7Zta83I4Ee2-kruQw0QW4w" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" strokeSizeComputationExpression="3" backgroundColor="255,245,181"> + <description xmi:type="style:DotDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_7ZuCAXI4Ee2-kruQw0QW4w" name="closeDoor" outgoingEdges="_7Z6PTnI4Ee2-kruQw0QW4w" width="3" height="3"> + <target xmi:type="petrinet:Place" href="petrinets/garagedoor.petrinet#//@elements.28"/> + <semanticElements xmi:type="petrinet:Place" href="petrinets/garagedoor.petrinet#//@elements.28"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Dot" uid="_7ZupEHI4Ee2-kruQw0QW4w" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" strokeSizeComputationExpression="3" backgroundColor="255,245,181"> + <description xmi:type="style:DotDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_7ZupEnI4Ee2-kruQw0QW4w" name="closeDoor" outgoingEdges="_7Z62WXI4Ee2-kruQw0QW4w" width="3" height="3"> + <target xmi:type="petrinet:Place" href="petrinets/garagedoor.petrinet#//@elements.30"/> + <semanticElements xmi:type="petrinet:Place" href="petrinets/garagedoor.petrinet#//@elements.30"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Dot" uid="_7ZupE3I4Ee2-kruQw0QW4w" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" strokeSizeComputationExpression="3" backgroundColor="255,245,181"> + <description xmi:type="style:DotDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_7ZvQIHI4Ee2-kruQw0QW4w" name="openDoor" outgoingEdges="_7Z7dZ3I4Ee2-kruQw0QW4w" width="3" height="3"> + <target xmi:type="petrinet:Place" href="petrinets/garagedoor.petrinet#//@elements.32"/> + <semanticElements xmi:type="petrinet:Place" href="petrinets/garagedoor.petrinet#//@elements.32"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Dot" uid="_7ZvQIXI4Ee2-kruQw0QW4w" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" strokeSizeComputationExpression="3" backgroundColor="255,245,181"> + <description xmi:type="style:DotDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_7ZvQI3I4Ee2-kruQw0QW4w" name="openDoor" outgoingEdges="_7Z8EdHI4Ee2-kruQw0QW4w" width="3" height="3"> + <target xmi:type="petrinet:Place" href="petrinets/garagedoor.petrinet#//@elements.34"/> + <semanticElements xmi:type="petrinet:Place" href="petrinets/garagedoor.petrinet#//@elements.34"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Dot" uid="_7ZvQJHI4Ee2-kruQw0QW4w" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" strokeSizeComputationExpression="3" backgroundColor="255,245,181"> + <description xmi:type="style:DotDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_7Zv3MHI4Ee2-kruQw0QW4w" name="default" outgoingEdges="_7Z8rgHI4Ee2-kruQw0QW4w" incomingEdges="_7Zy6gHI4Ee2-kruQw0QW4w" width="2" height="6"> + <target xmi:type="petrinet:Transition" href="petrinets/garagedoor.petrinet#//@elements.6"/> + <semanticElements xmi:type="petrinet:Transition" href="petrinets/garagedoor.petrinet#//@elements.6"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Square" uid="_7ZweQHI4Ee2-kruQw0QW4w" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" width="2" height="6" color="253,206,137"> + <description xmi:type="style:SquareDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Transition']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_7ZweQnI4Ee2-kruQw0QW4w" name="openDoor" outgoingEdges="_7Z9SlHI4Ee2-kruQw0QW4w _7Z95onI4Ee2-kruQw0QW4w" incomingEdges="_7ZzhknI4Ee2-kruQw0QW4w _7Z0IonI4Ee2-kruQw0QW4w" width="2" height="6"> + <target xmi:type="petrinet:Transition" href="petrinets/garagedoor.petrinet#//@elements.7"/> + <semanticElements xmi:type="petrinet:Transition" href="petrinets/garagedoor.petrinet#//@elements.7"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Square" uid="_7ZweQ3I4Ee2-kruQw0QW4w" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" width="2" height="6" color="253,206,137"> + <description xmi:type="style:SquareDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Transition']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_7ZweRXI4Ee2-kruQw0QW4w" name="default" outgoingEdges="_7Z-gsHI4Ee2-kruQw0QW4w _7Z_HwnI4Ee2-kruQw0QW4w" incomingEdges="_7Z0vsnI4Ee2-kruQw0QW4w _7Z1WwnI4Ee2-kruQw0QW4w" width="2" height="6"> + <target xmi:type="petrinet:Transition" href="petrinets/garagedoor.petrinet#//@elements.10"/> + <semanticElements xmi:type="petrinet:Transition" href="petrinets/garagedoor.petrinet#//@elements.10"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Square" uid="_7ZweRnI4Ee2-kruQw0QW4w" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" width="2" height="6" color="253,206,137"> + <description xmi:type="style:SquareDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Transition']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_7ZweSHI4Ee2-kruQw0QW4w" name="closeDoor" outgoingEdges="_7Z_Hx3I4Ee2-kruQw0QW4w _7Z_u0HI4Ee2-kruQw0QW4w" incomingEdges="_7Z1Wx3I4Ee2-kruQw0QW4w _7Z191HI4Ee2-kruQw0QW4w" width="2" height="6"> + <target xmi:type="petrinet:Transition" href="petrinets/garagedoor.petrinet#//@elements.13"/> + <semanticElements xmi:type="petrinet:Transition" href="petrinets/garagedoor.petrinet#//@elements.13"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Square" uid="_7ZweSXI4Ee2-kruQw0QW4w" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" width="2" height="6" color="253,206,137"> + <description xmi:type="style:SquareDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Transition']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_7ZxFUXI4Ee2-kruQw0QW4w" name="default" outgoingEdges="_7Z_u1XI4Ee2-kruQw0QW4w _7Z_u2nI4Ee2-kruQw0QW4w" incomingEdges="_7Z2k4HI4Ee2-kruQw0QW4w _7Z2k5XI4Ee2-kruQw0QW4w" width="2" height="6"> + <target xmi:type="petrinet:Transition" href="petrinets/garagedoor.petrinet#//@elements.16"/> + <semanticElements xmi:type="petrinet:Transition" href="petrinets/garagedoor.petrinet#//@elements.16"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Square" uid="_7ZxFUnI4Ee2-kruQw0QW4w" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" width="2" height="6" color="253,206,137"> + <description xmi:type="style:SquareDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Transition']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_7ZxFVHI4Ee2-kruQw0QW4w" name="openDoor" outgoingEdges="_7aAV5HI4Ee2-kruQw0QW4w _7aAV6XI4Ee2-kruQw0QW4w" incomingEdges="_7Z3L9HI4Ee2-kruQw0QW4w _7Z4aEHI4Ee2-kruQw0QW4w" width="2" height="6"> + <target xmi:type="petrinet:Transition" href="petrinets/garagedoor.petrinet#//@elements.19"/> + <semanticElements xmi:type="petrinet:Transition" href="petrinets/garagedoor.petrinet#//@elements.19"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Square" uid="_7ZxFVXI4Ee2-kruQw0QW4w" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" width="2" height="6" color="253,206,137"> + <description xmi:type="style:SquareDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Transition']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_7ZxFV3I4Ee2-kruQw0QW4w" name="closeDoor" outgoingEdges="_7aA88HI4Ee2-kruQw0QW4w _7aA89XI4Ee2-kruQw0QW4w" incomingEdges="_7Z5oMHI4Ee2-kruQw0QW4w _7Z5oNXI4Ee2-kruQw0QW4w" width="2" height="6"> + <target xmi:type="petrinet:Transition" href="petrinets/garagedoor.petrinet#//@elements.22"/> + <semanticElements xmi:type="petrinet:Transition" href="petrinets/garagedoor.petrinet#//@elements.22"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Square" uid="_7ZxFWHI4Ee2-kruQw0QW4w" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" width="2" height="6" color="253,206,137"> + <description xmi:type="style:SquareDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Transition']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_7ZxFWnI4Ee2-kruQw0QW4w" name="default" outgoingEdges="_7aA8-nI4Ee2-kruQw0QW4w" incomingEdges="_7Z5oOnI4Ee2-kruQw0QW4w _7Z6PRHI4Ee2-kruQw0QW4w" width="2" height="6"> + <target xmi:type="petrinet:Transition" href="petrinets/garagedoor.petrinet#//@elements.25"/> + <semanticElements xmi:type="petrinet:Transition" href="petrinets/garagedoor.petrinet#//@elements.25"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Square" uid="_7ZxsYHI4Ee2-kruQw0QW4w" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" width="2" height="6" color="253,206,137"> + <description xmi:type="style:SquareDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Transition']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_7ZxsYnI4Ee2-kruQw0QW4w" name="closeDoor" outgoingEdges="_7aBkAHI4Ee2-kruQw0QW4w" incomingEdges="_7Z6PSXI4Ee2-kruQw0QW4w _7Z6PTnI4Ee2-kruQw0QW4w" width="2" height="6"> + <target xmi:type="petrinet:Transition" href="petrinets/garagedoor.petrinet#//@elements.27"/> + <semanticElements xmi:type="petrinet:Transition" href="petrinets/garagedoor.petrinet#//@elements.27"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Square" uid="_7ZxsY3I4Ee2-kruQw0QW4w" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" width="2" height="6" color="253,206,137"> + <description xmi:type="style:SquareDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Transition']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_7ZxsZXI4Ee2-kruQw0QW4w" name="closeDoor" outgoingEdges="_7aBkBXI4Ee2-kruQw0QW4w" incomingEdges="_7Z62VHI4Ee2-kruQw0QW4w _7Z62WXI4Ee2-kruQw0QW4w" width="2" height="6"> + <target xmi:type="petrinet:Transition" href="petrinets/garagedoor.petrinet#//@elements.29"/> + <semanticElements xmi:type="petrinet:Transition" href="petrinets/garagedoor.petrinet#//@elements.29"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Square" uid="_7ZxsZnI4Ee2-kruQw0QW4w" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" width="2" height="6" color="253,206,137"> + <description xmi:type="style:SquareDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Transition']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_7ZxsaHI4Ee2-kruQw0QW4w" name="openDoor" outgoingEdges="_7aBkCnI4Ee2-kruQw0QW4w" incomingEdges="_7Z7dYnI4Ee2-kruQw0QW4w _7Z7dZ3I4Ee2-kruQw0QW4w" width="2" height="6"> + <target xmi:type="petrinet:Transition" href="petrinets/garagedoor.petrinet#//@elements.31"/> + <semanticElements xmi:type="petrinet:Transition" href="petrinets/garagedoor.petrinet#//@elements.31"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Square" uid="_7ZxsaXI4Ee2-kruQw0QW4w" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" width="2" height="6" color="253,206,137"> + <description xmi:type="style:SquareDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Transition']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_7Zxsa3I4Ee2-kruQw0QW4w" name="openDoor" outgoingEdges="_7aBkD3I4Ee2-kruQw0QW4w" incomingEdges="_7Z7dbHI4Ee2-kruQw0QW4w _7Z8EdHI4Ee2-kruQw0QW4w" width="2" height="6"> + <target xmi:type="petrinet:Transition" href="petrinets/garagedoor.petrinet#//@elements.33"/> + <semanticElements xmi:type="petrinet:Transition" href="petrinets/garagedoor.petrinet#//@elements.33"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Square" uid="_7ZxsbHI4Ee2-kruQw0QW4w" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" width="2" height="6" color="253,206,137"> + <description xmi:type="style:SquareDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Transition']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_7Zy6gHI4Ee2-kruQw0QW4w" sourceNode="_7Zn7YHI4Ee2-kruQw0QW4w" targetNode="_7Zv3MHI4Ee2-kruQw0QW4w"> + <target xmi:type="petrinet:IncomingArc" href="petrinets/garagedoor.petrinet#//@arcs.0"/> + <semanticElements xmi:type="petrinet:IncomingArc" href="petrinets/garagedoor.petrinet#//@arcs.0"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_7Zy6gXI4Ee2-kruQw0QW4w" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_7Zy6gnI4Ee2-kruQw0QW4w" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_7ZzhknI4Ee2-kruQw0QW4w" sourceNode="_7ZoicXI4Ee2-kruQw0QW4w" targetNode="_7ZweQnI4Ee2-kruQw0QW4w"> + <target xmi:type="petrinet:IncomingArc" href="petrinets/garagedoor.petrinet#//@arcs.2"/> + <semanticElements xmi:type="petrinet:IncomingArc" href="petrinets/garagedoor.petrinet#//@arcs.2"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_7Zzhk3I4Ee2-kruQw0QW4w" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_7ZzhlHI4Ee2-kruQw0QW4w" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_7Z0IonI4Ee2-kruQw0QW4w" sourceNode="_7Zpwk3I4Ee2-kruQw0QW4w" targetNode="_7ZweQnI4Ee2-kruQw0QW4w"> + <target xmi:type="petrinet:IncomingArc" href="petrinets/garagedoor.petrinet#//@arcs.4"/> + <semanticElements xmi:type="petrinet:IncomingArc" href="petrinets/garagedoor.petrinet#//@arcs.4"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_7Z0Io3I4Ee2-kruQw0QW4w" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_7Z0IpHI4Ee2-kruQw0QW4w" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_7Z0vsnI4Ee2-kruQw0QW4w" sourceNode="_7Zoid3I4Ee2-kruQw0QW4w" targetNode="_7ZweRXI4Ee2-kruQw0QW4w"> + <target xmi:type="petrinet:IncomingArc" href="petrinets/garagedoor.petrinet#//@arcs.6"/> + <semanticElements xmi:type="petrinet:IncomingArc" href="petrinets/garagedoor.petrinet#//@arcs.6"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_7Z0vs3I4Ee2-kruQw0QW4w" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_7Z0vtHI4Ee2-kruQw0QW4w" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_7Z1WwnI4Ee2-kruQw0QW4w" sourceNode="_7ZqXo3I4Ee2-kruQw0QW4w" targetNode="_7ZweRXI4Ee2-kruQw0QW4w"> + <target xmi:type="petrinet:IncomingArc" href="petrinets/garagedoor.petrinet#//@arcs.8"/> + <semanticElements xmi:type="petrinet:IncomingArc" href="petrinets/garagedoor.petrinet#//@arcs.8"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_7Z1Ww3I4Ee2-kruQw0QW4w" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_7Z1WxHI4Ee2-kruQw0QW4w" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_7Z1Wx3I4Ee2-kruQw0QW4w" sourceNode="_7ZoidHI4Ee2-kruQw0QW4w" targetNode="_7ZweSHI4Ee2-kruQw0QW4w"> + <target xmi:type="petrinet:IncomingArc" href="petrinets/garagedoor.petrinet#//@arcs.10"/> + <semanticElements xmi:type="petrinet:IncomingArc" href="petrinets/garagedoor.petrinet#//@arcs.10"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_7Z190HI4Ee2-kruQw0QW4w" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_7Z190XI4Ee2-kruQw0QW4w" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_7Z191HI4Ee2-kruQw0QW4w" sourceNode="_7Zq-s3I4Ee2-kruQw0QW4w" targetNode="_7ZweSHI4Ee2-kruQw0QW4w"> + <target xmi:type="petrinet:IncomingArc" href="petrinets/garagedoor.petrinet#//@arcs.12"/> + <semanticElements xmi:type="petrinet:IncomingArc" href="petrinets/garagedoor.petrinet#//@arcs.12"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_7Z191XI4Ee2-kruQw0QW4w" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_7Z191nI4Ee2-kruQw0QW4w" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_7Z2k4HI4Ee2-kruQw0QW4w" sourceNode="_7ZpJgnI4Ee2-kruQw0QW4w" targetNode="_7ZxFUXI4Ee2-kruQw0QW4w"> + <target xmi:type="petrinet:IncomingArc" href="petrinets/garagedoor.petrinet#//@arcs.14"/> + <semanticElements xmi:type="petrinet:IncomingArc" href="petrinets/garagedoor.petrinet#//@arcs.14"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_7Z2k4XI4Ee2-kruQw0QW4w" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_7Z2k4nI4Ee2-kruQw0QW4w" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_7Z2k5XI4Ee2-kruQw0QW4w" sourceNode="_7ZrlwnI4Ee2-kruQw0QW4w" targetNode="_7ZxFUXI4Ee2-kruQw0QW4w"> + <target xmi:type="petrinet:IncomingArc" href="petrinets/garagedoor.petrinet#//@arcs.16"/> + <semanticElements xmi:type="petrinet:IncomingArc" href="petrinets/garagedoor.petrinet#//@arcs.16"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_7Z3L8HI4Ee2-kruQw0QW4w" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_7Z3L8XI4Ee2-kruQw0QW4w" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_7Z3L9HI4Ee2-kruQw0QW4w" sourceNode="_7ZpJgnI4Ee2-kruQw0QW4w" targetNode="_7ZxFVHI4Ee2-kruQw0QW4w"> + <target xmi:type="petrinet:IncomingArc" href="petrinets/garagedoor.petrinet#//@arcs.18"/> + <semanticElements xmi:type="petrinet:IncomingArc" href="petrinets/garagedoor.petrinet#//@arcs.18"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_7Z3zAHI4Ee2-kruQw0QW4w" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_7Z3zAXI4Ee2-kruQw0QW4w" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_7Z4aEHI4Ee2-kruQw0QW4w" sourceNode="_7ZsM0XI4Ee2-kruQw0QW4w" targetNode="_7ZxFVHI4Ee2-kruQw0QW4w"> + <target xmi:type="petrinet:IncomingArc" href="petrinets/garagedoor.petrinet#//@arcs.20"/> + <semanticElements xmi:type="petrinet:IncomingArc" href="petrinets/garagedoor.petrinet#//@arcs.20"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_7Z5BIHI4Ee2-kruQw0QW4w" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_7Z5BIXI4Ee2-kruQw0QW4w" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_7Z5oMHI4Ee2-kruQw0QW4w" sourceNode="_7Zoid3I4Ee2-kruQw0QW4w" targetNode="_7ZxFV3I4Ee2-kruQw0QW4w"> + <target xmi:type="petrinet:IncomingArc" href="petrinets/garagedoor.petrinet#//@arcs.22"/> + <semanticElements xmi:type="petrinet:IncomingArc" href="petrinets/garagedoor.petrinet#//@arcs.22"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_7Z5oMXI4Ee2-kruQw0QW4w" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_7Z5oMnI4Ee2-kruQw0QW4w" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_7Z5oNXI4Ee2-kruQw0QW4w" sourceNode="_7Zsz4XI4Ee2-kruQw0QW4w" targetNode="_7ZxFV3I4Ee2-kruQw0QW4w"> + <target xmi:type="petrinet:IncomingArc" href="petrinets/garagedoor.petrinet#//@arcs.24"/> + <semanticElements xmi:type="petrinet:IncomingArc" href="petrinets/garagedoor.petrinet#//@arcs.24"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_7Z5oNnI4Ee2-kruQw0QW4w" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_7Z5oN3I4Ee2-kruQw0QW4w" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_7Z5oOnI4Ee2-kruQw0QW4w" sourceNode="_7ZoicXI4Ee2-kruQw0QW4w" targetNode="_7ZxFWnI4Ee2-kruQw0QW4w"> + <target xmi:type="petrinet:IncomingArc" href="petrinets/garagedoor.petrinet#//@arcs.26"/> + <semanticElements xmi:type="petrinet:IncomingArc" href="petrinets/garagedoor.petrinet#//@arcs.26"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_7Z6PQHI4Ee2-kruQw0QW4w" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_7Z6PQXI4Ee2-kruQw0QW4w" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_7Z6PRHI4Ee2-kruQw0QW4w" sourceNode="_7Zta8nI4Ee2-kruQw0QW4w" targetNode="_7ZxFWnI4Ee2-kruQw0QW4w"> + <target xmi:type="petrinet:IncomingArc" href="petrinets/garagedoor.petrinet#//@arcs.28"/> + <semanticElements xmi:type="petrinet:IncomingArc" href="petrinets/garagedoor.petrinet#//@arcs.28"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_7Z6PRXI4Ee2-kruQw0QW4w" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_7Z6PRnI4Ee2-kruQw0QW4w" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_7Z6PSXI4Ee2-kruQw0QW4w" sourceNode="_7ZoicXI4Ee2-kruQw0QW4w" targetNode="_7ZxsYnI4Ee2-kruQw0QW4w"> + <target xmi:type="petrinet:IncomingArc" href="petrinets/garagedoor.petrinet#//@arcs.29"/> + <semanticElements xmi:type="petrinet:IncomingArc" href="petrinets/garagedoor.petrinet#//@arcs.29"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_7Z6PSnI4Ee2-kruQw0QW4w" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_7Z6PS3I4Ee2-kruQw0QW4w" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_7Z6PTnI4Ee2-kruQw0QW4w" sourceNode="_7ZuCAXI4Ee2-kruQw0QW4w" targetNode="_7ZxsYnI4Ee2-kruQw0QW4w"> + <target xmi:type="petrinet:IncomingArc" href="petrinets/garagedoor.petrinet#//@arcs.31"/> + <semanticElements xmi:type="petrinet:IncomingArc" href="petrinets/garagedoor.petrinet#//@arcs.31"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_7Z62UHI4Ee2-kruQw0QW4w" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_7Z62UXI4Ee2-kruQw0QW4w" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_7Z62VHI4Ee2-kruQw0QW4w" sourceNode="_7ZpJgnI4Ee2-kruQw0QW4w" targetNode="_7ZxsZXI4Ee2-kruQw0QW4w"> + <target xmi:type="petrinet:IncomingArc" href="petrinets/garagedoor.petrinet#//@arcs.32"/> + <semanticElements xmi:type="petrinet:IncomingArc" href="petrinets/garagedoor.petrinet#//@arcs.32"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_7Z62VXI4Ee2-kruQw0QW4w" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_7Z62VnI4Ee2-kruQw0QW4w" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_7Z62WXI4Ee2-kruQw0QW4w" sourceNode="_7ZupEnI4Ee2-kruQw0QW4w" targetNode="_7ZxsZXI4Ee2-kruQw0QW4w"> + <target xmi:type="petrinet:IncomingArc" href="petrinets/garagedoor.petrinet#//@arcs.34"/> + <semanticElements xmi:type="petrinet:IncomingArc" href="petrinets/garagedoor.petrinet#//@arcs.34"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_7Z62WnI4Ee2-kruQw0QW4w" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_7Z62W3I4Ee2-kruQw0QW4w" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_7Z7dYnI4Ee2-kruQw0QW4w" sourceNode="_7ZoidHI4Ee2-kruQw0QW4w" targetNode="_7ZxsaHI4Ee2-kruQw0QW4w"> + <target xmi:type="petrinet:IncomingArc" href="petrinets/garagedoor.petrinet#//@arcs.35"/> + <semanticElements xmi:type="petrinet:IncomingArc" href="petrinets/garagedoor.petrinet#//@arcs.35"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_7Z7dY3I4Ee2-kruQw0QW4w" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_7Z7dZHI4Ee2-kruQw0QW4w" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_7Z7dZ3I4Ee2-kruQw0QW4w" sourceNode="_7ZvQIHI4Ee2-kruQw0QW4w" targetNode="_7ZxsaHI4Ee2-kruQw0QW4w"> + <target xmi:type="petrinet:IncomingArc" href="petrinets/garagedoor.petrinet#//@arcs.37"/> + <semanticElements xmi:type="petrinet:IncomingArc" href="petrinets/garagedoor.petrinet#//@arcs.37"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_7Z7daHI4Ee2-kruQw0QW4w" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_7Z7daXI4Ee2-kruQw0QW4w" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_7Z7dbHI4Ee2-kruQw0QW4w" sourceNode="_7Zoid3I4Ee2-kruQw0QW4w" targetNode="_7Zxsa3I4Ee2-kruQw0QW4w"> + <target xmi:type="petrinet:IncomingArc" href="petrinets/garagedoor.petrinet#//@arcs.38"/> + <semanticElements xmi:type="petrinet:IncomingArc" href="petrinets/garagedoor.petrinet#//@arcs.38"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_7Z8EcHI4Ee2-kruQw0QW4w" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_7Z8EcXI4Ee2-kruQw0QW4w" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_7Z8EdHI4Ee2-kruQw0QW4w" sourceNode="_7ZvQI3I4Ee2-kruQw0QW4w" targetNode="_7Zxsa3I4Ee2-kruQw0QW4w"> + <target xmi:type="petrinet:IncomingArc" href="petrinets/garagedoor.petrinet#//@arcs.40"/> + <semanticElements xmi:type="petrinet:IncomingArc" href="petrinets/garagedoor.petrinet#//@arcs.40"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_7Z8EdXI4Ee2-kruQw0QW4w" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_7Z8EdnI4Ee2-kruQw0QW4w" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_7Z8rgHI4Ee2-kruQw0QW4w" sourceNode="_7Zv3MHI4Ee2-kruQw0QW4w" targetNode="_7ZoicXI4Ee2-kruQw0QW4w"> + <target xmi:type="petrinet:OutgoingArc" href="petrinets/garagedoor.petrinet#//@arcs.1"/> + <semanticElements xmi:type="petrinet:OutgoingArc" href="petrinets/garagedoor.petrinet#//@arcs.1"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_7Z9SkHI4Ee2-kruQw0QW4w" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='OutgoingArc']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_7Z9SkXI4Ee2-kruQw0QW4w" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='OutgoingArc']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_7Z9SlHI4Ee2-kruQw0QW4w" sourceNode="_7ZweQnI4Ee2-kruQw0QW4w" targetNode="_7Zoid3I4Ee2-kruQw0QW4w"> + <target xmi:type="petrinet:OutgoingArc" href="petrinets/garagedoor.petrinet#//@arcs.3"/> + <semanticElements xmi:type="petrinet:OutgoingArc" href="petrinets/garagedoor.petrinet#//@arcs.3"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_7Z9SlXI4Ee2-kruQw0QW4w" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='OutgoingArc']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_7Z9SlnI4Ee2-kruQw0QW4w" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='OutgoingArc']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_7Z95onI4Ee2-kruQw0QW4w" sourceNode="_7ZweQnI4Ee2-kruQw0QW4w" targetNode="_7ZqXoHI4Ee2-kruQw0QW4w"> + <target xmi:type="petrinet:OutgoingArc" href="petrinets/garagedoor.petrinet#//@arcs.5"/> + <semanticElements xmi:type="petrinet:OutgoingArc" href="petrinets/garagedoor.petrinet#//@arcs.5"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_7Z95o3I4Ee2-kruQw0QW4w" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='OutgoingArc']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_7Z95pHI4Ee2-kruQw0QW4w" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='OutgoingArc']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_7Z-gsHI4Ee2-kruQw0QW4w" sourceNode="_7ZweRXI4Ee2-kruQw0QW4w" targetNode="_7ZoidHI4Ee2-kruQw0QW4w"> + <target xmi:type="petrinet:OutgoingArc" href="petrinets/garagedoor.petrinet#//@arcs.7"/> + <semanticElements xmi:type="petrinet:OutgoingArc" href="petrinets/garagedoor.petrinet#//@arcs.7"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_7Z-gsXI4Ee2-kruQw0QW4w" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='OutgoingArc']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_7Z-gsnI4Ee2-kruQw0QW4w" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='OutgoingArc']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_7Z_HwnI4Ee2-kruQw0QW4w" sourceNode="_7ZweRXI4Ee2-kruQw0QW4w" targetNode="_7Zq-sHI4Ee2-kruQw0QW4w"> + <target xmi:type="petrinet:OutgoingArc" href="petrinets/garagedoor.petrinet#//@arcs.9"/> + <semanticElements xmi:type="petrinet:OutgoingArc" href="petrinets/garagedoor.petrinet#//@arcs.9"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_7Z_Hw3I4Ee2-kruQw0QW4w" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='OutgoingArc']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_7Z_HxHI4Ee2-kruQw0QW4w" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='OutgoingArc']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_7Z_Hx3I4Ee2-kruQw0QW4w" sourceNode="_7ZweSHI4Ee2-kruQw0QW4w" targetNode="_7ZpJgnI4Ee2-kruQw0QW4w"> + <target xmi:type="petrinet:OutgoingArc" href="petrinets/garagedoor.petrinet#//@arcs.11"/> + <semanticElements xmi:type="petrinet:OutgoingArc" href="petrinets/garagedoor.petrinet#//@arcs.11"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_7Z_HyHI4Ee2-kruQw0QW4w" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='OutgoingArc']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_7Z_HyXI4Ee2-kruQw0QW4w" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='OutgoingArc']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_7Z_u0HI4Ee2-kruQw0QW4w" sourceNode="_7ZweSHI4Ee2-kruQw0QW4w" targetNode="_7Zq-tnI4Ee2-kruQw0QW4w"> + <target xmi:type="petrinet:OutgoingArc" href="petrinets/garagedoor.petrinet#//@arcs.13"/> + <semanticElements xmi:type="petrinet:OutgoingArc" href="petrinets/garagedoor.petrinet#//@arcs.13"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_7Z_u0XI4Ee2-kruQw0QW4w" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='OutgoingArc']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_7Z_u0nI4Ee2-kruQw0QW4w" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='OutgoingArc']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_7Z_u1XI4Ee2-kruQw0QW4w" sourceNode="_7ZxFUXI4Ee2-kruQw0QW4w" targetNode="_7ZoicXI4Ee2-kruQw0QW4w"> + <target xmi:type="petrinet:OutgoingArc" href="petrinets/garagedoor.petrinet#//@arcs.15"/> + <semanticElements xmi:type="petrinet:OutgoingArc" href="petrinets/garagedoor.petrinet#//@arcs.15"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_7Z_u1nI4Ee2-kruQw0QW4w" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='OutgoingArc']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_7Z_u13I4Ee2-kruQw0QW4w" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='OutgoingArc']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_7Z_u2nI4Ee2-kruQw0QW4w" sourceNode="_7ZxFUXI4Ee2-kruQw0QW4w" targetNode="_7ZrlxXI4Ee2-kruQw0QW4w"> + <target xmi:type="petrinet:OutgoingArc" href="petrinets/garagedoor.petrinet#//@arcs.17"/> + <semanticElements xmi:type="petrinet:OutgoingArc" href="petrinets/garagedoor.petrinet#//@arcs.17"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_7aAV4HI4Ee2-kruQw0QW4w" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='OutgoingArc']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_7aAV4XI4Ee2-kruQw0QW4w" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='OutgoingArc']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_7aAV5HI4Ee2-kruQw0QW4w" sourceNode="_7ZxFVHI4Ee2-kruQw0QW4w" targetNode="_7Zoid3I4Ee2-kruQw0QW4w"> + <target xmi:type="petrinet:OutgoingArc" href="petrinets/garagedoor.petrinet#//@arcs.19"/> + <semanticElements xmi:type="petrinet:OutgoingArc" href="petrinets/garagedoor.petrinet#//@arcs.19"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_7aAV5XI4Ee2-kruQw0QW4w" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='OutgoingArc']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_7aAV5nI4Ee2-kruQw0QW4w" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='OutgoingArc']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_7aAV6XI4Ee2-kruQw0QW4w" sourceNode="_7ZxFVHI4Ee2-kruQw0QW4w" targetNode="_7ZsM1HI4Ee2-kruQw0QW4w"> + <target xmi:type="petrinet:OutgoingArc" href="petrinets/garagedoor.petrinet#//@arcs.21"/> + <semanticElements xmi:type="petrinet:OutgoingArc" href="petrinets/garagedoor.petrinet#//@arcs.21"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_7aAV6nI4Ee2-kruQw0QW4w" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='OutgoingArc']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_7aAV63I4Ee2-kruQw0QW4w" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='OutgoingArc']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_7aA88HI4Ee2-kruQw0QW4w" sourceNode="_7ZxFV3I4Ee2-kruQw0QW4w" targetNode="_7ZpJgnI4Ee2-kruQw0QW4w"> + <target xmi:type="petrinet:OutgoingArc" href="petrinets/garagedoor.petrinet#//@arcs.23"/> + <semanticElements xmi:type="petrinet:OutgoingArc" href="petrinets/garagedoor.petrinet#//@arcs.23"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_7aA88XI4Ee2-kruQw0QW4w" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='OutgoingArc']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_7aA88nI4Ee2-kruQw0QW4w" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='OutgoingArc']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_7aA89XI4Ee2-kruQw0QW4w" sourceNode="_7ZxFV3I4Ee2-kruQw0QW4w" targetNode="_7Zsz5HI4Ee2-kruQw0QW4w"> + <target xmi:type="petrinet:OutgoingArc" href="petrinets/garagedoor.petrinet#//@arcs.25"/> + <semanticElements xmi:type="petrinet:OutgoingArc" href="petrinets/garagedoor.petrinet#//@arcs.25"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_7aA89nI4Ee2-kruQw0QW4w" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='OutgoingArc']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_7aA893I4Ee2-kruQw0QW4w" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='OutgoingArc']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_7aA8-nI4Ee2-kruQw0QW4w" sourceNode="_7ZxFWnI4Ee2-kruQw0QW4w" targetNode="_7ZpwkHI4Ee2-kruQw0QW4w"> + <target xmi:type="petrinet:OutgoingArc" href="petrinets/garagedoor.petrinet#//@arcs.27"/> + <semanticElements xmi:type="petrinet:OutgoingArc" href="petrinets/garagedoor.petrinet#//@arcs.27"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_7aA8-3I4Ee2-kruQw0QW4w" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='OutgoingArc']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_7aA8_HI4Ee2-kruQw0QW4w" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='OutgoingArc']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_7aBkAHI4Ee2-kruQw0QW4w" sourceNode="_7ZxsYnI4Ee2-kruQw0QW4w" targetNode="_7ZoicXI4Ee2-kruQw0QW4w"> + <target xmi:type="petrinet:OutgoingArc" href="petrinets/garagedoor.petrinet#//@arcs.30"/> + <semanticElements xmi:type="petrinet:OutgoingArc" href="petrinets/garagedoor.petrinet#//@arcs.30"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_7aBkAXI4Ee2-kruQw0QW4w" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='OutgoingArc']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_7aBkAnI4Ee2-kruQw0QW4w" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='OutgoingArc']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_7aBkBXI4Ee2-kruQw0QW4w" sourceNode="_7ZxsZXI4Ee2-kruQw0QW4w" targetNode="_7ZpJgnI4Ee2-kruQw0QW4w"> + <target xmi:type="petrinet:OutgoingArc" href="petrinets/garagedoor.petrinet#//@arcs.33"/> + <semanticElements xmi:type="petrinet:OutgoingArc" href="petrinets/garagedoor.petrinet#//@arcs.33"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_7aBkBnI4Ee2-kruQw0QW4w" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='OutgoingArc']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_7aBkB3I4Ee2-kruQw0QW4w" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='OutgoingArc']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_7aBkCnI4Ee2-kruQw0QW4w" sourceNode="_7ZxsaHI4Ee2-kruQw0QW4w" targetNode="_7ZoidHI4Ee2-kruQw0QW4w"> + <target xmi:type="petrinet:OutgoingArc" href="petrinets/garagedoor.petrinet#//@arcs.36"/> + <semanticElements xmi:type="petrinet:OutgoingArc" href="petrinets/garagedoor.petrinet#//@arcs.36"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_7aBkC3I4Ee2-kruQw0QW4w" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='OutgoingArc']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_7aBkDHI4Ee2-kruQw0QW4w" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='OutgoingArc']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_7aBkD3I4Ee2-kruQw0QW4w" sourceNode="_7Zxsa3I4Ee2-kruQw0QW4w" targetNode="_7Zoid3I4Ee2-kruQw0QW4w"> + <target xmi:type="petrinet:OutgoingArc" href="petrinets/garagedoor.petrinet#//@arcs.39"/> + <semanticElements xmi:type="petrinet:OutgoingArc" href="petrinets/garagedoor.petrinet#//@arcs.39"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_7aBkEHI4Ee2-kruQw0QW4w" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='OutgoingArc']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_7aBkEXI4Ee2-kruQw0QW4w" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='OutgoingArc']"/> + </ownedDiagramElements> + <description xmi:type="description_1:DiagramDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']"/> + <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_7ZmGMHI4Ee2-kruQw0QW4w"/> + <activatedLayers xmi:type="description_1:Layer" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer"/> + <target xmi:type="petrinet:PetriNet" href="petrinets/garagedoor.petrinet#/"/> + </diagram:DSemanticDiagram> + <diagram:DSemanticDiagram uid="_v4ZxICywEe-4er9RFtOKtQ"> + <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_v4aYMiywEe-4er9RFtOKtQ" source="GMF_DIAGRAMS"> + <data xmi:type="notation:Diagram" xmi:id="_v4aYMyywEe-4er9RFtOKtQ" type="Sirius" element="_v4ZxICywEe-4er9RFtOKtQ" measurementUnit="Pixel"> + <children xmi:type="notation:Node" xmi:id="_v4iUACywEe-4er9RFtOKtQ" type="2001" element="_v4a_QCywEe-4er9RFtOKtQ"> + <children xmi:type="notation:Node" xmi:id="_v4iUAyywEe-4er9RFtOKtQ" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_v4iUBCywEe-4er9RFtOKtQ" x="31" y="-1"/> + </children> + <children xmi:type="notation:Node" xmi:id="_v4oaoCywEe-4er9RFtOKtQ" type="3001" element="_v4c0diywEe-4er9RFtOKtQ"> + <children xmi:type="notation:Node" xmi:id="_v4oaoyywEe-4er9RFtOKtQ" type="5001"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_v4oapCywEe-4er9RFtOKtQ" y="5"/> + </children> + <children xmi:type="notation:Node" xmi:id="_v4pBsyywEe-4er9RFtOKtQ" type="3002" element="_v4dbgCywEe-4er9RFtOKtQ"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_v4pBtCywEe-4er9RFtOKtQ" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v4pBtSywEe-4er9RFtOKtQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_v4oaoSywEe-4er9RFtOKtQ" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v4oaoiywEe-4er9RFtOKtQ" x="22" width="20" height="20"/> + </children> + <children xmi:type="notation:Node" xmi:id="_v4pBsCywEe-4er9RFtOKtQ" type="3002" element="_v4bmUCywEe-4er9RFtOKtQ"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_v4pBsSywEe-4er9RFtOKtQ" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v4pBsiywEe-4er9RFtOKtQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_v4iUASywEe-4er9RFtOKtQ" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v4iUAiywEe-4er9RFtOKtQ" x="217" y="210" width="30" height="30"/> + </children> + <children xmi:type="notation:Node" xmi:id="_v4i7ECywEe-4er9RFtOKtQ" type="2001" element="_v4cNYSywEe-4er9RFtOKtQ"> + <children xmi:type="notation:Node" xmi:id="_v4i7EyywEe-4er9RFtOKtQ" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_v4i7FCywEe-4er9RFtOKtQ" x="-29" y="-2"/> + </children> + <children xmi:type="notation:Node" xmi:id="_v4pBtiywEe-4er9RFtOKtQ" type="3002" element="_v4cNYiywEe-4er9RFtOKtQ"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_v4pBtyywEe-4er9RFtOKtQ" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v4pBuCywEe-4er9RFtOKtQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_v4i7ESywEe-4er9RFtOKtQ" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v4i7EiywEe-4er9RFtOKtQ" x="651" y="210" width="30" height="30"/> + </children> + <children xmi:type="notation:Node" xmi:id="_v4jiICywEe-4er9RFtOKtQ" type="2001" element="_v4cNZCywEe-4er9RFtOKtQ"> + <children xmi:type="notation:Node" xmi:id="_v4jiIyywEe-4er9RFtOKtQ" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_v4jiJCywEe-4er9RFtOKtQ" x="31" y="-2"/> + </children> + <children xmi:type="notation:Node" xmi:id="_v4pBuSywEe-4er9RFtOKtQ" type="3002" element="_v4cNZSywEe-4er9RFtOKtQ"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_v4pBuiywEe-4er9RFtOKtQ" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v4pBuyywEe-4er9RFtOKtQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_v4jiISywEe-4er9RFtOKtQ" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v4jiIiywEe-4er9RFtOKtQ" x="392" y="210" width="30" height="30"/> + </children> + <children xmi:type="notation:Node" xmi:id="_v4jiJSywEe-4er9RFtOKtQ" type="2001" element="_v4c0cCywEe-4er9RFtOKtQ"> + <children xmi:type="notation:Node" xmi:id="_v4kJMCywEe-4er9RFtOKtQ" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_v4kJMSywEe-4er9RFtOKtQ" x="-2" y="31"/> + </children> + <children xmi:type="notation:Node" xmi:id="_v4powCywEe-4er9RFtOKtQ" type="3002" element="_v4c0cSywEe-4er9RFtOKtQ"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_v4powSywEe-4er9RFtOKtQ" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v4powiywEe-4er9RFtOKtQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_v4jiJiywEe-4er9RFtOKtQ" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v4jiJyywEe-4er9RFtOKtQ" x="421" y="357" width="30" height="30"/> + </children> + <children xmi:type="notation:Node" xmi:id="_v4kJMiywEe-4er9RFtOKtQ" type="2001" element="_v4c0cyywEe-4er9RFtOKtQ"> + <children xmi:type="notation:Node" xmi:id="_v4kJNSywEe-4er9RFtOKtQ" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_v4kJNiywEe-4er9RFtOKtQ" x="-2" y="-33"/> + </children> + <children xmi:type="notation:Node" xmi:id="_v4powyywEe-4er9RFtOKtQ" type="3002" element="_v4c0dCywEe-4er9RFtOKtQ"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_v4poxCywEe-4er9RFtOKtQ" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v4poxSywEe-4er9RFtOKtQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_v4kJMyywEe-4er9RFtOKtQ" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v4kJNCywEe-4er9RFtOKtQ" x="427" y="91" width="30" height="30"/> + </children> + <children xmi:type="notation:Node" xmi:id="_v4kwQCywEe-4er9RFtOKtQ" type="2001" element="_v4dbgiywEe-4er9RFtOKtQ"> + <children xmi:type="notation:Node" xmi:id="_v4kwQyywEe-4er9RFtOKtQ" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_v4kwRCywEe-4er9RFtOKtQ" x="-27" y="61"/> + </children> + <children xmi:type="notation:Node" xmi:id="_v4poxiywEe-4er9RFtOKtQ" type="3003" element="_v4dbgyywEe-4er9RFtOKtQ"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_v4poxyywEe-4er9RFtOKtQ" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v4poyCywEe-4er9RFtOKtQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_v4kwQSywEe-4er9RFtOKtQ" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v4kwQiywEe-4er9RFtOKtQ" x="308" y="203" width="20" height="60"/> + </children> + <children xmi:type="notation:Node" xmi:id="_v4lXUCywEe-4er9RFtOKtQ" type="2001" element="_v4dbhSywEe-4er9RFtOKtQ"> + <children xmi:type="notation:Node" xmi:id="_v4lXUyywEe-4er9RFtOKtQ" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_v4lXVCywEe-4er9RFtOKtQ" x="-7" y="-33"/> + </children> + <children xmi:type="notation:Node" xmi:id="_v4qP0CywEe-4er9RFtOKtQ" type="3003" element="_v4eCkCywEe-4er9RFtOKtQ"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_v4qP0SywEe-4er9RFtOKtQ" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v4qP0iywEe-4er9RFtOKtQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_v4lXUSywEe-4er9RFtOKtQ" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v4lXUiywEe-4er9RFtOKtQ" x="518" y="287" width="20" height="60"/> + </children> + <children xmi:type="notation:Node" xmi:id="_v4lXVSywEe-4er9RFtOKtQ" type="2001" element="_v4eCkiywEe-4er9RFtOKtQ"> + <children xmi:type="notation:Node" xmi:id="_v4l-YCywEe-4er9RFtOKtQ" type="5002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_v4l-YSywEe-4er9RFtOKtQ" x="-7" y="61"/> + </children> + <children xmi:type="notation:Node" xmi:id="_v4qP0yywEe-4er9RFtOKtQ" type="3003" element="_v4eCkyywEe-4er9RFtOKtQ"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_v4qP1CywEe-4er9RFtOKtQ" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v4qP1SywEe-4er9RFtOKtQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_v4lXViywEe-4er9RFtOKtQ" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v4lXVyywEe-4er9RFtOKtQ" x="525" y="144" width="20" height="60"/> + </children> + <styles xmi:type="notation:DiagramStyle" xmi:id="_v4aYNCywEe-4er9RFtOKtQ"/> + <edges xmi:type="notation:Edge" xmi:id="_v4qP1iywEe-4er9RFtOKtQ" type="4001" element="_v4epoCywEe-4er9RFtOKtQ" source="_v4iUACywEe-4er9RFtOKtQ" target="_v4kwQCywEe-4er9RFtOKtQ"> + <children xmi:type="notation:Node" xmi:id="_v4q24CywEe-4er9RFtOKtQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v4q24SywEe-4er9RFtOKtQ" x="-3" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_v4q24iywEe-4er9RFtOKtQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v4q24yywEe-4er9RFtOKtQ" x="-3" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_v4q25CywEe-4er9RFtOKtQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v4q25SywEe-4er9RFtOKtQ" x="-1" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_v4qP1yywEe-4er9RFtOKtQ" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_v4qP2CywEe-4er9RFtOKtQ" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_v4qP2SywEe-4er9RFtOKtQ" points="[15, 21, -71, -32]$[76, 21, -10, -32]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_v4q25iywEe-4er9RFtOKtQ" id="(0.5,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_v4q25yywEe-4er9RFtOKtQ" id="(0.5,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_v4q26CywEe-4er9RFtOKtQ" type="4001" element="_v4fQsiywEe-4er9RFtOKtQ" source="_v4jiICywEe-4er9RFtOKtQ" target="_v4lXUCywEe-4er9RFtOKtQ"> + <children xmi:type="notation:Node" xmi:id="_v4rd8CywEe-4er9RFtOKtQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v4rd8SywEe-4er9RFtOKtQ" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_v4rd8iywEe-4er9RFtOKtQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v4rd8yywEe-4er9RFtOKtQ" x="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_v4rd9CywEe-4er9RFtOKtQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v4rd9SywEe-4er9RFtOKtQ" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_v4q26SywEe-4er9RFtOKtQ" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_v4q26iywEe-4er9RFtOKtQ" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_v4q26yywEe-4er9RFtOKtQ" points="[2, 0, -119, -47]$[2, 82, -119, 35]$[111, 82, -10, 35]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_v4rd9iywEe-4er9RFtOKtQ" id="(0.5,1.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_v4rd9yywEe-4er9RFtOKtQ" id="(0.5,0.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_v4rd-CywEe-4er9RFtOKtQ" type="4001" element="_v4fQtyywEe-4er9RFtOKtQ" source="_v4jiJSywEe-4er9RFtOKtQ" target="_v4lXUCywEe-4er9RFtOKtQ"> + <children xmi:type="notation:Node" xmi:id="_v4rd_CywEe-4er9RFtOKtQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v4rd_SywEe-4er9RFtOKtQ" x="-11" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_v4rd_iywEe-4er9RFtOKtQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v4rd_yywEe-4er9RFtOKtQ" x="-10" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_v4reACywEe-4er9RFtOKtQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v4reASywEe-4er9RFtOKtQ" x="-18" y="-22"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_v4rd-SywEe-4er9RFtOKtQ" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_v4rd-iywEe-4er9RFtOKtQ" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_v4rd-yywEe-4er9RFtOKtQ" points="[15, 14, -77, 24]$[92, 14, 0, 24]$[92, -10, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_v4sFACywEe-4er9RFtOKtQ" id="(0.5,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_v4sFASywEe-4er9RFtOKtQ" id="(0.5,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_v4sFAiywEe-4er9RFtOKtQ" type="4001" element="_v4f3wCywEe-4er9RFtOKtQ" source="_v4i7ECywEe-4er9RFtOKtQ" target="_v4lXVSywEe-4er9RFtOKtQ"> + <children xmi:type="notation:Node" xmi:id="_v4sFBiywEe-4er9RFtOKtQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v4sFByywEe-4er9RFtOKtQ" x="-39" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_v4sFCCywEe-4er9RFtOKtQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v4sFCSywEe-4er9RFtOKtQ" x="21" y="-69"/> + </children> + <children xmi:type="notation:Node" xmi:id="_v4sFCiywEe-4er9RFtOKtQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v4sFCyywEe-4er9RFtOKtQ" x="-5" y="-10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_v4sFAyywEe-4er9RFtOKtQ" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_v4sFBCywEe-4er9RFtOKtQ" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_v4sFBSywEe-4er9RFtOKtQ" points="[6, 0, 137, 6]$[6, -35, 137, -29]$[-121, -35, 10, -29]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_v4sFDCywEe-4er9RFtOKtQ" id="(0.5,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_v4sFDSywEe-4er9RFtOKtQ" id="(0.5,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_v4sFDiywEe-4er9RFtOKtQ" type="4001" element="_v4f3xSywEe-4er9RFtOKtQ" source="_v4kJMiywEe-4er9RFtOKtQ" target="_v4lXVSywEe-4er9RFtOKtQ"> + <children xmi:type="notation:Node" xmi:id="_v4sFEiywEe-4er9RFtOKtQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v4sFEyywEe-4er9RFtOKtQ" x="-52" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_v4sFFCywEe-4er9RFtOKtQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v4sFFSywEe-4er9RFtOKtQ" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_v4sFFiywEe-4er9RFtOKtQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v4sFFyywEe-4er9RFtOKtQ" x="-10" y="61"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_v4sFDyywEe-4er9RFtOKtQ" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_v4sFECywEe-4er9RFtOKtQ" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_v4sFESywEe-4er9RFtOKtQ" points="[15, 15, -78, -98]$[93, 15, 0, -98]$[93, 53, 0, -60]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_v4sFGCywEe-4er9RFtOKtQ" id="(0.5,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_v4sFGSywEe-4er9RFtOKtQ" id="(0.5,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_v4sFGiywEe-4er9RFtOKtQ" type="4001" element="_v4ge0CywEe-4er9RFtOKtQ" source="_v4kwQCywEe-4er9RFtOKtQ" target="_v4jiICywEe-4er9RFtOKtQ"> + <children xmi:type="notation:Node" xmi:id="_v4ssECywEe-4er9RFtOKtQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v4ssESywEe-4er9RFtOKtQ" x="25" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_v4ssEiywEe-4er9RFtOKtQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v4ssEyywEe-4er9RFtOKtQ" x="16" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_v4ssFCywEe-4er9RFtOKtQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v4ssFSywEe-4er9RFtOKtQ" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_v4sFGyywEe-4er9RFtOKtQ" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_v4sFHCywEe-4er9RFtOKtQ" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_v4sFHSywEe-4er9RFtOKtQ" points="[10, 28, -79, -9]$[74, 28, -15, -9]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_v4ssFiywEe-4er9RFtOKtQ" id="(0.5,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_v4ssFyywEe-4er9RFtOKtQ" id="(0.5,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_v4ssGCywEe-4er9RFtOKtQ" type="4001" element="_v4ge1SywEe-4er9RFtOKtQ" source="_v4lXUCywEe-4er9RFtOKtQ" target="_v4i7ECywEe-4er9RFtOKtQ"> + <children xmi:type="notation:Node" xmi:id="_v4ssHCywEe-4er9RFtOKtQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v4ssHSywEe-4er9RFtOKtQ" x="-43" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_v4ssHiywEe-4er9RFtOKtQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v4ssHyywEe-4er9RFtOKtQ" x="-4" y="4"/> + </children> + <children xmi:type="notation:Node" xmi:id="_v4ssICywEe-4er9RFtOKtQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v4ssISywEe-4er9RFtOKtQ" x="15" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_v4ssGSywEe-4er9RFtOKtQ" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_v4ssGiywEe-4er9RFtOKtQ" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_v4ssGyywEe-4er9RFtOKtQ" points="[10, 35, -128, 82]$[144, 35, 6, 82]$[144, -47, 6, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_v4tTICywEe-4er9RFtOKtQ" id="(0.5,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_v4tTISywEe-4er9RFtOKtQ" id="(0.5,1.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_v4tTIiywEe-4er9RFtOKtQ" type="4001" element="_v4hF4iywEe-4er9RFtOKtQ" source="_v4lXVSywEe-4er9RFtOKtQ" target="_v4jiICywEe-4er9RFtOKtQ"> + <children xmi:type="notation:Node" xmi:id="_v4tTJiywEe-4er9RFtOKtQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v4tTJyywEe-4er9RFtOKtQ" x="-74" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_v4tTKCywEe-4er9RFtOKtQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v4tTKSywEe-4er9RFtOKtQ" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_v4tTKiywEe-4er9RFtOKtQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v4tTKyywEe-4er9RFtOKtQ" x="6" y="-10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_v4tTIyywEe-4er9RFtOKtQ" routing="Rectilinear"/> + <styles xmi:type="notation:FontStyle" xmi:id="_v4tTJCywEe-4er9RFtOKtQ" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_v4tTJSywEe-4er9RFtOKtQ" points="[-10, 31, 118, -65]$[-128, 31, 0, -65]$[-128, 66, 0, -30]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_v4tTLCywEe-4er9RFtOKtQ" id="(0.5,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_v4tTLSywEe-4er9RFtOKtQ" id="(0.5,1.0)"/> + </edges> + </data> + </ownedAnnotationEntries> + <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_v4hF5yywEe-4er9RFtOKtQ" source="DANNOTATION_CUSTOMIZATION_KEY"> + <data xmi:type="diagram:ComputedStyleDescriptionRegistry" uid="_v4hF6CywEe-4er9RFtOKtQ"/> + </ownedAnnotationEntries> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_v4a_QCywEe-4er9RFtOKtQ" name="initial" outgoingEdges="_v4epoCywEe-4er9RFtOKtQ" width="3" height="3"> + <target xmi:type="petrinet:Place" href="petrinets/switch.petrinet#//@elements.0"/> + <semanticElements xmi:type="petrinet:Place" href="petrinets/switch.petrinet#//@elements.0"/> + <ownedBorderedNodes xmi:type="diagram:DNode" uid="_v4c0diywEe-4er9RFtOKtQ" name="''" width="2" height="2"> + <target xmi:type="petrinet:Token" href="petrinets/switch.petrinet#//@elements.0/@token"/> + <semanticElements xmi:type="petrinet:Token" href="petrinets/switch.petrinet#//@elements.0/@token"/> + <ownedStyle xmi:type="diagram:Dot" uid="_v4dbgCywEe-4er9RFtOKtQ" labelSize="12" showIcon="false" labelAlignment="LEFT" labelPosition="node" backgroundColor="0,0,0"> + <description xmi:type="style:DotDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']/@borderedNodeMappings[name='Token']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']/@borderedNodeMappings[name='Token']"/> + </ownedBorderedNodes> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Dot" uid="_v4bmUCywEe-4er9RFtOKtQ" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" strokeSizeComputationExpression="3" backgroundColor="255,245,181"> + <description xmi:type="style:DotDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_v4cNYSywEe-4er9RFtOKtQ" name="on" outgoingEdges="_v4f3wCywEe-4er9RFtOKtQ" incomingEdges="_v4ge1SywEe-4er9RFtOKtQ" width="3" height="3"> + <target xmi:type="petrinet:Place" href="petrinets/switch.petrinet#//@elements.1"/> + <semanticElements xmi:type="petrinet:Place" href="petrinets/switch.petrinet#//@elements.1"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Dot" uid="_v4cNYiywEe-4er9RFtOKtQ" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" strokeSizeComputationExpression="3" backgroundColor="255,245,181"> + <description xmi:type="style:DotDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_v4cNZCywEe-4er9RFtOKtQ" name="off" outgoingEdges="_v4fQsiywEe-4er9RFtOKtQ" incomingEdges="_v4ge0CywEe-4er9RFtOKtQ _v4hF4iywEe-4er9RFtOKtQ" width="3" height="3"> + <target xmi:type="petrinet:Place" href="petrinets/switch.petrinet#//@elements.2"/> + <semanticElements xmi:type="petrinet:Place" href="petrinets/switch.petrinet#//@elements.2"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Dot" uid="_v4cNZSywEe-4er9RFtOKtQ" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" strokeSizeComputationExpression="3" backgroundColor="255,245,181"> + <description xmi:type="style:DotDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_v4c0cCywEe-4er9RFtOKtQ" name="flip" outgoingEdges="_v4fQtyywEe-4er9RFtOKtQ" width="3" height="3"> + <target xmi:type="petrinet:Place" href="petrinets/switch.petrinet#//@elements.5"/> + <semanticElements xmi:type="petrinet:Place" href="petrinets/switch.petrinet#//@elements.5"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Dot" uid="_v4c0cSywEe-4er9RFtOKtQ" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" strokeSizeComputationExpression="3" backgroundColor="255,245,181"> + <description xmi:type="style:DotDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_v4c0cyywEe-4er9RFtOKtQ" name="flip" outgoingEdges="_v4f3xSywEe-4er9RFtOKtQ" width="3" height="3"> + <target xmi:type="petrinet:Place" href="petrinets/switch.petrinet#//@elements.7"/> + <semanticElements xmi:type="petrinet:Place" href="petrinets/switch.petrinet#//@elements.7"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Dot" uid="_v4c0dCywEe-4er9RFtOKtQ" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" strokeSizeComputationExpression="3" backgroundColor="255,245,181"> + <description xmi:type="style:DotDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Place']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_v4dbgiywEe-4er9RFtOKtQ" name="default" outgoingEdges="_v4ge0CywEe-4er9RFtOKtQ" incomingEdges="_v4epoCywEe-4er9RFtOKtQ" width="2" height="6"> + <target xmi:type="petrinet:Transition" href="petrinets/switch.petrinet#//@elements.3"/> + <semanticElements xmi:type="petrinet:Transition" href="petrinets/switch.petrinet#//@elements.3"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Square" uid="_v4dbgyywEe-4er9RFtOKtQ" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" width="2" height="6" color="253,206,137"> + <description xmi:type="style:SquareDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Transition']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_v4dbhSywEe-4er9RFtOKtQ" name="flip" outgoingEdges="_v4ge1SywEe-4er9RFtOKtQ" incomingEdges="_v4fQsiywEe-4er9RFtOKtQ _v4fQtyywEe-4er9RFtOKtQ" width="2" height="6"> + <target xmi:type="petrinet:Transition" href="petrinets/switch.petrinet#//@elements.4"/> + <semanticElements xmi:type="petrinet:Transition" href="petrinets/switch.petrinet#//@elements.4"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Square" uid="_v4eCkCywEe-4er9RFtOKtQ" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" width="2" height="6" color="253,206,137"> + <description xmi:type="style:SquareDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Transition']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNode" uid="_v4eCkiywEe-4er9RFtOKtQ" name="flip" outgoingEdges="_v4hF4iywEe-4er9RFtOKtQ" incomingEdges="_v4f3wCywEe-4er9RFtOKtQ _v4f3xSywEe-4er9RFtOKtQ" width="2" height="6"> + <target xmi:type="petrinet:Transition" href="petrinets/switch.petrinet#//@elements.6"/> + <semanticElements xmi:type="petrinet:Transition" href="petrinets/switch.petrinet#//@elements.6"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Square" uid="_v4eCkyywEe-4er9RFtOKtQ" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" width="2" height="6" color="253,206,137"> + <description xmi:type="style:SquareDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Transition']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@nodeMappings[name='Transition']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_v4epoCywEe-4er9RFtOKtQ" sourceNode="_v4a_QCywEe-4er9RFtOKtQ" targetNode="_v4dbgiywEe-4er9RFtOKtQ"> + <target xmi:type="petrinet:IncomingArc" href="petrinets/switch.petrinet#//@arcs.0"/> + <semanticElements xmi:type="petrinet:IncomingArc" href="petrinets/switch.petrinet#//@arcs.0"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_v4epoSywEe-4er9RFtOKtQ" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_v4epoiywEe-4er9RFtOKtQ" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_v4fQsiywEe-4er9RFtOKtQ" sourceNode="_v4cNZCywEe-4er9RFtOKtQ" targetNode="_v4dbhSywEe-4er9RFtOKtQ"> + <target xmi:type="petrinet:IncomingArc" href="petrinets/switch.petrinet#//@arcs.2"/> + <semanticElements xmi:type="petrinet:IncomingArc" href="petrinets/switch.petrinet#//@arcs.2"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_v4fQsyywEe-4er9RFtOKtQ" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_v4fQtCywEe-4er9RFtOKtQ" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_v4fQtyywEe-4er9RFtOKtQ" sourceNode="_v4c0cCywEe-4er9RFtOKtQ" targetNode="_v4dbhSywEe-4er9RFtOKtQ"> + <target xmi:type="petrinet:IncomingArc" href="petrinets/switch.petrinet#//@arcs.4"/> + <semanticElements xmi:type="petrinet:IncomingArc" href="petrinets/switch.petrinet#//@arcs.4"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_v4fQuCywEe-4er9RFtOKtQ" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_v4fQuSywEe-4er9RFtOKtQ" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_v4f3wCywEe-4er9RFtOKtQ" sourceNode="_v4cNYSywEe-4er9RFtOKtQ" targetNode="_v4eCkiywEe-4er9RFtOKtQ"> + <target xmi:type="petrinet:IncomingArc" href="petrinets/switch.petrinet#//@arcs.5"/> + <semanticElements xmi:type="petrinet:IncomingArc" href="petrinets/switch.petrinet#//@arcs.5"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_v4f3wSywEe-4er9RFtOKtQ" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_v4f3wiywEe-4er9RFtOKtQ" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_v4f3xSywEe-4er9RFtOKtQ" sourceNode="_v4c0cyywEe-4er9RFtOKtQ" targetNode="_v4eCkiywEe-4er9RFtOKtQ"> + <target xmi:type="petrinet:IncomingArc" href="petrinets/switch.petrinet#//@arcs.7"/> + <semanticElements xmi:type="petrinet:IncomingArc" href="petrinets/switch.petrinet#//@arcs.7"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_v4f3xiywEe-4er9RFtOKtQ" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_v4f3xyywEe-4er9RFtOKtQ" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='IncomingArc']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_v4ge0CywEe-4er9RFtOKtQ" sourceNode="_v4dbgiywEe-4er9RFtOKtQ" targetNode="_v4cNZCywEe-4er9RFtOKtQ"> + <target xmi:type="petrinet:OutgoingArc" href="petrinets/switch.petrinet#//@arcs.1"/> + <semanticElements xmi:type="petrinet:OutgoingArc" href="petrinets/switch.petrinet#//@arcs.1"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_v4ge0SywEe-4er9RFtOKtQ" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='OutgoingArc']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_v4ge0iywEe-4er9RFtOKtQ" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='OutgoingArc']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_v4ge1SywEe-4er9RFtOKtQ" sourceNode="_v4dbhSywEe-4er9RFtOKtQ" targetNode="_v4cNYSywEe-4er9RFtOKtQ"> + <target xmi:type="petrinet:OutgoingArc" href="petrinets/switch.petrinet#//@arcs.3"/> + <semanticElements xmi:type="petrinet:OutgoingArc" href="petrinets/switch.petrinet#//@arcs.3"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_v4ge1iywEe-4er9RFtOKtQ" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='OutgoingArc']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_v4ge1yywEe-4er9RFtOKtQ" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='OutgoingArc']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_v4hF4iywEe-4er9RFtOKtQ" sourceNode="_v4eCkiywEe-4er9RFtOKtQ" targetNode="_v4cNZCywEe-4er9RFtOKtQ"> + <target xmi:type="petrinet:OutgoingArc" href="petrinets/switch.petrinet#//@arcs.6"/> + <semanticElements xmi:type="petrinet:OutgoingArc" href="petrinets/switch.petrinet#//@arcs.6"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_v4hF4yywEe-4er9RFtOKtQ" size="2" routingStyle="manhattan" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='OutgoingArc']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_v4hF5CywEe-4er9RFtOKtQ" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer/@edgeMappings[name='OutgoingArc']"/> + </ownedDiagramElements> + <description xmi:type="description_1:DiagramDescription" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']"/> + <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_v4ZxISywEe-4er9RFtOKtQ"/> + <activatedLayers xmi:type="description_1:Layer" href="platform:/resource/swt.most.sirius.petrinet/description/petrinet.odesign#//@ownedViewpoints[name='Viewer']/@ownedRepresentations[name='Petrinet%20Viewer']/@defaultLayer"/> + <target xmi:type="petrinet:PetriNet" href="petrinets/switch.petrinet#/"/> + </diagram:DSemanticDiagram> +</xmi:XMI> diff --git a/model2model/examples-etl/statemachines/garagedoor.statemachine b/model2model/examples-etl/statemachines/garagedoor.statemachine new file mode 100644 index 0000000000000000000000000000000000000000..7e44c6fd1941ac4b5bb590516b2ae01299c04221 --- /dev/null +++ b/model2model/examples-etl/statemachines/garagedoor.statemachine @@ -0,0 +1,49 @@ +<?xml version="1.0" encoding="UTF-8"?> +<statemachine:StateMachine xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:statemachine="http://www.swt.org/most/statemachine" name="Garage Door"> + <states name="Closed"/> + <states name="Open"/> + <states name="Opening"/> + <states name="Closing"/> + <finalstates name="final"/> + <initialstate name="initial"/> + <transitions from="//@initialstate" to="//@states.0"/> + <transitions from="//@states.0" to="//@states.2"> + <trigger content="openDoor"/> + <action content="motor.upwards"/> + </transitions> + <transitions from="//@states.2" to="//@states.1"> + <guard content="stopper"/> + <action content="motor.stop"/> + </transitions> + <transitions from="//@states.1" to="//@states.3"> + <trigger content="closeDoor"/> + <action content="motor.downwards"/> + </transitions> + <transitions from="//@states.3" to="//@states.0"> + <guard content="stopper"/> + <action content="motor.stop"/> + </transitions> + <transitions from="//@states.3" to="//@states.2"> + <trigger content="openDoor"/> + <action content="motor.upwards"/> + </transitions> + <transitions from="//@states.2" to="//@states.3"> + <trigger content="closeDoor"/> + <action content="motor.downwards"/> + </transitions> + <transitions from="//@states.0" to="//@finalstates.0"> + <guard content="shutdown"/> + </transitions> + <transitions from="//@states.0" to="//@states.0"> + <trigger content="closeDoor"/> + </transitions> + <transitions from="//@states.3" to="//@states.3"> + <trigger content="closeDoor"/> + </transitions> + <transitions from="//@states.1" to="//@states.1"> + <trigger content="openDoor"/> + </transitions> + <transitions from="//@states.2" to="//@states.2"> + <trigger content="openDoor"/> + </transitions> +</statemachine:StateMachine> diff --git a/model2model/examples-etl/statemachines/garagedoor.svg b/model2model/examples-etl/statemachines/garagedoor.svg new file mode 100644 index 0000000000000000000000000000000000000000..26c9a75a9419846b0f9b8c31f159e9cfb257d411 --- /dev/null +++ b/model2model/examples-etl/statemachines/garagedoor.svg @@ -0,0 +1,280 @@ +<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-dasharray="none" shape-rendering="auto" font-family="'Dialog'" width="845" text-rendering="auto" fill-opacity="1" contentScriptType="text/ecmascript" color-interpolation="auto" color-rendering="auto" preserveAspectRatio="xMidYMid meet" font-size="12px" xmlns:diagram="http://www.eclipse.org/sirius/diagram/1.1.0" diagram:semanticRoot="platform:/resource/example/statemachines/garagedoor.statemachine#Garage Door" viewBox="0 0 845 417" fill="black" stroke="black" image-rendering="auto" stroke-miterlimit="10" zoomAndPan="magnify" version="1.0" stroke-linecap="square" stroke-linejoin="miter" contentStyleType="text/css" font-style="normal" height="417" stroke-width="1" stroke-dashoffset="0" font-weight="normal" stroke-opacity="1"> + <!--Generated by the Batik Graphics2D SVG Generator--> + <defs id="genericDefs"/> + <g> + <defs id="defs1"> + <linearGradient x1="588" x2="685" y1="210" gradientUnits="userSpaceOnUse" y2="284" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient1" xlink:show="other" spreadMethod="pad"> + <stop stop-opacity="1" stop-color="rgb(255,245,181)" offset="0%"/> + <stop stop-opacity="1" stop-color="rgb(255,245,181)" offset="100%"/> + </linearGradient> + <linearGradient x1="78" x2="154" y1="211" gradientUnits="userSpaceOnUse" y2="274" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient2" xlink:show="other" spreadMethod="pad"> + <stop stop-opacity="1" stop-color="rgb(255,245,181)" offset="0%"/> + <stop stop-opacity="1" stop-color="rgb(255,245,181)" offset="100%"/> + </linearGradient> + <linearGradient x1="322" x2="425" y1="69" gradientUnits="userSpaceOnUse" y2="146" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient3" xlink:show="other" spreadMethod="pad"> + <stop stop-opacity="1" stop-color="rgb(255,245,181)" offset="0%"/> + <stop stop-opacity="1" stop-color="rgb(255,245,181)" offset="100%"/> + </linearGradient> + <linearGradient x1="326" x2="421" y1="293" gradientUnits="userSpaceOnUse" y2="366" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient4" xlink:show="other" spreadMethod="pad"> + <stop stop-opacity="1" stop-color="rgb(255,245,181)" offset="0%"/> + <stop stop-opacity="1" stop-color="rgb(255,245,181)" offset="100%"/> + </linearGradient> + <linearGradient x1="84" x2="310" y1="-35" gradientUnits="userSpaceOnUse" y2="100" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient5" xlink:show="other" spreadMethod="pad"> + <stop stop-opacity="1" stop-color="rgb(209,209,209)" offset="0%"/> + <stop stop-opacity="1" stop-color="rgb(209,209,209)" offset="100%"/> + </linearGradient> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath1"> + <path d="M755 111 L787 111 L787 143 L755 143 L755 111 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath2"> + <path d="M786 112 L839 112 L839 142 L786 142 L786 112 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath3"> + <path d="M755 159 L787 159 L787 191 L755 191 L755 159 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath4"> + <path d="M786 160 L828 160 L828 190 L786 190 L786 160 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath5"> + <path d="M587 220 L688 220 L688 275 L587 275 L587 220 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath6"> + <path d="M587 220 L686 220 L686 273 L587 273 L587 220 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath7"> + <path d="M604 225 L673 225 L673 255 L604 255 L604 225 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath8"> + <path d="M588 258 L685 258 L685 272 L588 272 L588 258 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath9"> + <path d="M77 216 L157 216 L157 271 L77 271 L77 216 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath10"> + <path d="M77 216 L155 216 L155 269 L77 269 L77 216 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath11"> + <path d="M90 221 L148 221 L148 251 L90 251 L90 221 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath12"> + <path d="M78 254 L154 254 L154 268 L78 268 L78 254 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath13"> + <path d="M321 81 L428 81 L428 136 L321 136 L321 81 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath14"> + <path d="M321 81 L426 81 L426 134 L321 134 L321 81 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath15"> + <path d="M332 86 L419 86 L419 116 L332 116 L332 86 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath16"> + <path d="M322 119 L425 119 L425 133 L322 133 L322 119 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath17"> + <path d="M325 303 L424 303 L424 358 L325 358 L325 303 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath18"> + <path d="M325 303 L422 303 L422 356 L325 356 L325 303 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath19"> + <path d="M338 308 L413 308 L413 338 L338 338 L338 308 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath20"> + <path d="M326 341 L421 341 L421 355 L326 355 L326 341 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath21"> + <path d="M83 9 L313 9 L313 57 L83 57 L83 9 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath22"> + <path d="M83 9 L311 9 L311 55 L83 55 L83 9 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath23"> + <path d="M83 13 L315 13 L315 38 L83 38 L83 13 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath24"> + <path d="M83 41 L311 41 L311 55 L83 55 L83 41 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath25"> + <path d="M-1 -1 L846 -1 L846 418 L-1 418 L-1 -1 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath26"> + <path d="M647 212 L658 212 L658 224 L647 224 L647 212 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath27"> + <path d="M461 81 L628 81 L628 100 L461 100 L461 81 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath28"> + <path d="M423 102 L435 102 L435 113 L423 113 L423 102 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath29"> + <path d="M152 81 L292 81 L292 100 L152 100 L152 81 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath30"> + <path d="M121 208 L132 208 L132 220 L121 220 L121 208 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath31"> + <path d="M131 306 L315 306 L315 325 L131 325 L131 306 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath32"> + <path d="M317 324 L329 324 L329 335 L317 335 L317 324 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath33"> + <path d="M452 303 L592 303 L592 322 L452 322 L452 303 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath34"> + <path d="M632 270 L643 270 L643 282 L632 282 L632 270 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath35"> + <path d="M191 159 L358 159 L358 178 L191 178 L191 159 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath36"> + <path d="M356 131 L367 131 L367 143 L356 143 L356 131 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath37"> + <path d="M383 159 L581 159 L581 178 L383 178 L383 159 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath38"> + <path d="M373 295 L384 295 L384 307 L373 307 L373 295 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath39"> + <path d="M677 153 L750 153 L750 172 L677 172 L677 153 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath40"> + <path d="M747 169 L759 169 L759 180 L747 180 L747 169 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath41"> + <path d="M695 291 L760 291 L760 310 L695 310 L695 291 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath42"> + <path d="M649 270 L660 270 L660 282 L649 282 L649 270 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath43"> + <path d="M343 375 L408 375 L408 394 L343 394 L343 375 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath44"> + <path d="M337 353 L348 353 L348 365 L337 365 L337 353 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath45"> + <path d="M23 291 L88 291 L88 310 L23 310 L23 291 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath46"> + <path d="M97 266 L108 266 L108 278 L97 278 L97 266 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath47"> + <path d="M343 38 L408 38 L408 57 L343 57 L343 38 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath48"> + <path d="M397 73 L408 73 L408 85 L397 85 L397 73 Z"/> + </clipPath> + </defs> + <g stroke-miterlimit="0" stroke-width="0" font-size="15px" font-family="'Segoe UI'" stroke-linejoin="round"> + <circle r="14" clip-path="url(#clipPath1)" cx="770" cy="126" stroke="none"/> + </g> + <g font-size="15px" stroke-width="0.1" font-family="'Segoe UI'" stroke-linecap="butt"> + <circle fill="none" r="14.5" clip-path="url(#clipPath1)" cx="770.5" cy="126.5"/> + <text x="787" xml:space="preserve" font-size="20px" y="135" clip-path="url(#clipPath2)" stroke="none">initial</text> + <circle fill="rgb(209,209,209)" r="14" clip-path="url(#clipPath3)" cx="770" cy="174" stroke="none"/> + <circle fill="none" r="14.5" clip-path="url(#clipPath3)" cx="770.5" cy="174.5"/> + <text x="787" xml:space="preserve" font-size="20px" y="183" clip-path="url(#clipPath4)" stroke="none">final</text> + </g> + <g stroke-linecap="butt" font-size="20px" fill="rgb(131,122,133)" font-family="'Segoe UI'" stroke="rgb(131,122,133)" font-weight="bold" stroke-width="0.1"> + <rect x="589" y="222" clip-path="url(#clipPath5)" width="97" rx="5" opacity="0.255" ry="5" height="51" stroke="none"/> + <rect x="590" y="223" clip-path="url(#clipPath5)" width="97" rx="5" opacity="0.255" ry="5" height="51" stroke="none"/> + <rect x="588" y="221" clip-path="url(#clipPath6)" fill="url(#linearGradient1)" width="97" rx="5" ry="5" height="51" stroke="none"/> + <rect x="588" y="221" clip-path="url(#clipPath6)" fill="none" width="96" rx="5" ry="5" height="50" stroke="black" stroke-width="1.1"/> + <text x="605" y="248" clip-path="url(#clipPath7)" fill="black" stroke="none" stroke-width="1.1" xml:space="preserve">Closed</text> + <line clip-path="url(#clipPath8)" fill="none" x1="589" x2="684" y1="259" y2="259" stroke="black" stroke-width="1.1"/> + <rect x="79" y="218" clip-path="url(#clipPath9)" width="76" rx="5" opacity="0.255" ry="5" height="51" stroke="none" stroke-width="1.1"/> + <rect x="80" y="219" clip-path="url(#clipPath9)" width="76" rx="5" opacity="0.255" ry="5" height="51" stroke="none" stroke-width="1.1"/> + <rect x="78" y="217" clip-path="url(#clipPath10)" fill="url(#linearGradient2)" width="76" rx="5" ry="5" height="51" stroke="none" stroke-width="1.1"/> + <rect x="78" y="217" clip-path="url(#clipPath10)" fill="none" width="75" rx="5" ry="5" height="50" stroke="black" stroke-width="1.1"/> + <text x="91" y="244" clip-path="url(#clipPath11)" fill="black" stroke="none" stroke-width="1.1" xml:space="preserve">Open</text> + <line clip-path="url(#clipPath12)" fill="none" x1="79" x2="153" y1="255" y2="255" stroke="black" stroke-width="1.1"/> + <rect x="323" y="83" clip-path="url(#clipPath13)" width="103" rx="5" opacity="0.255" ry="5" height="51" stroke="none" stroke-width="1.1"/> + <rect x="324" y="84" clip-path="url(#clipPath13)" width="103" rx="5" opacity="0.255" ry="5" height="51" stroke="none" stroke-width="1.1"/> + <rect x="322" y="82" clip-path="url(#clipPath14)" fill="url(#linearGradient3)" width="103" rx="5" ry="5" height="51" stroke="none" stroke-width="1.1"/> + <rect x="322" y="82" clip-path="url(#clipPath14)" fill="none" width="102" rx="5" ry="5" height="50" stroke="black" stroke-width="1.1"/> + <text x="333" y="109" clip-path="url(#clipPath15)" fill="black" stroke="none" stroke-width="1.1" xml:space="preserve">Opening</text> + <line clip-path="url(#clipPath16)" fill="none" x1="323" x2="424" y1="120" y2="120" stroke="black" stroke-width="1.1"/> + <rect x="327" y="305" clip-path="url(#clipPath17)" width="95" rx="5" opacity="0.255" ry="5" height="51" stroke="none" stroke-width="1.1"/> + <rect x="328" y="306" clip-path="url(#clipPath17)" width="95" rx="5" opacity="0.255" ry="5" height="51" stroke="none" stroke-width="1.1"/> + <rect x="326" y="304" clip-path="url(#clipPath18)" fill="url(#linearGradient4)" width="95" rx="5" ry="5" height="51" stroke="none" stroke-width="1.1"/> + <rect x="326" y="304" clip-path="url(#clipPath18)" fill="none" width="94" rx="5" ry="5" height="50" stroke="black" stroke-width="1.1"/> + <text x="339" y="331" clip-path="url(#clipPath19)" fill="black" stroke="none" stroke-width="1.1" xml:space="preserve">Closing</text> + <line clip-path="url(#clipPath20)" fill="none" x1="327" x2="420" y1="342" y2="342" stroke="black" stroke-width="1.1"/> + <rect x="85" y="11" clip-path="url(#clipPath21)" width="226" rx="5" opacity="0.255" ry="5" height="44" stroke="none" stroke-width="1.1"/> + <rect x="86" y="12" clip-path="url(#clipPath21)" width="226" rx="5" opacity="0.255" ry="5" height="44" stroke="none" stroke-width="1.1"/> + </g> + <g stroke-linecap="butt" font-size="16px" fill="url(#linearGradient5)" font-family="'Segoe UI'" stroke="url(#linearGradient5)" font-weight="bold" stroke-width="1.1"> + <rect x="84" y="10" clip-path="url(#clipPath22)" width="226" rx="5" ry="5" height="44" stroke="none"/> + <text fill="black" x="84" xml:space="preserve" y="32" clip-path="url(#clipPath23)" stroke="none">State Machine: Garage Door</text> + <line clip-path="url(#clipPath24)" fill="none" x1="84" x2="310" y1="42" y2="42" stroke="rgb(209,209,209)"/> + </g> + <g font-size="13px" stroke-width="2.1" font-family="'Segoe UI'" stroke-linecap="butt"> + <line y2="126" fill="none" x1="756" clip-path="url(#clipPath25)" x2="652" y1="126"/> + <line y2="221" fill="none" x1="652" clip-path="url(#clipPath25)" x2="652" y1="126"/> + <line y2="221" fill="none" x1="649" clip-path="url(#clipPath26)" x2="652" y1="214"/> + <line y2="214" fill="none" x1="652" clip-path="url(#clipPath26)" x2="655" y1="221"/> + <line y2="107" fill="none" x1="637" clip-path="url(#clipPath25)" x2="637" y1="221"/> + <line y2="107" fill="none" x1="637" clip-path="url(#clipPath25)" x2="425" y1="107"/> + <text x="462" xml:space="preserve" y="96" clip-path="url(#clipPath27)" stroke="none">openDoor / motor.upwards</text> + <line y2="107" fill="none" x1="432" clip-path="url(#clipPath28)" x2="425" y1="104"/> + <line y2="110" fill="none" x1="425" clip-path="url(#clipPath28)" x2="432" y1="107"/> + <line y2="107" fill="none" x1="322" clip-path="url(#clipPath25)" x2="126" y1="107"/> + <line y2="217" fill="none" x1="126" clip-path="url(#clipPath25)" x2="126" y1="107"/> + <text x="153" xml:space="preserve" y="96" clip-path="url(#clipPath29)" stroke="none"> [stopper] / motor.stop</text> + <line y2="217" fill="none" x1="123" clip-path="url(#clipPath30)" x2="126" y1="210"/> + <line y2="210" fill="none" x1="126" clip-path="url(#clipPath30)" x2="129" y1="217"/> + <line y2="329" fill="none" x1="123" clip-path="url(#clipPath25)" x2="123" y1="268"/> + <line y2="329" fill="none" x1="123" clip-path="url(#clipPath25)" x2="326" y1="329"/> + <text x="132" xml:space="preserve" y="321" clip-path="url(#clipPath31)" stroke="none">closeDoor / motor.downwards</text> + <line y2="329" fill="none" x1="319" clip-path="url(#clipPath32)" x2="326" y1="332"/> + <line y2="326" fill="none" x1="326" clip-path="url(#clipPath32)" x2="319" y1="329"/> + <line y2="329" fill="none" x1="421" clip-path="url(#clipPath25)" x2="637" y1="329"/> + <line y2="272" fill="none" x1="637" clip-path="url(#clipPath25)" x2="637" y1="329"/> + <text x="453" xml:space="preserve" y="318" clip-path="url(#clipPath33)" stroke="none"> [stopper] / motor.stop</text> + <line y2="272" fill="none" x1="640" clip-path="url(#clipPath34)" x2="637" y1="279"/> + <line y2="279" fill="none" x1="637" clip-path="url(#clipPath34)" x2="634" y1="272"/> + <line y2="133" fill="none" x1="361" clip-path="url(#clipPath25)" x2="361" y1="304"/> + <text x="192" xml:space="preserve" y="174" clip-path="url(#clipPath35)" stroke="none">openDoor / motor.upwards</text> + <line y2="133" fill="none" x1="364" clip-path="url(#clipPath36)" x2="361" y1="140"/> + <line y2="140" fill="none" x1="361" clip-path="url(#clipPath36)" x2="358" y1="133"/> + <line y2="304" fill="none" x1="378" clip-path="url(#clipPath25)" x2="378" y1="133"/> + <text x="391" xml:space="preserve" y="174" clip-path="url(#clipPath37)" stroke="none">closeDoor / motor.downwards</text> + <line y2="304" fill="none" x1="375" clip-path="url(#clipPath38)" x2="378" y1="297"/> + <line y2="297" fill="none" x1="378" clip-path="url(#clipPath38)" x2="381" y1="304"/> + <line y2="174" fill="none" x1="672" clip-path="url(#clipPath25)" x2="672" y1="221"/> + <line y2="174" fill="none" x1="672" clip-path="url(#clipPath25)" x2="756" y1="174"/> + <text x="678" xml:space="preserve" y="168" clip-path="url(#clipPath39)" stroke="none"> [shutdown]</text> + <line y2="174" fill="none" x1="749" clip-path="url(#clipPath40)" x2="756" y1="177"/> + <line y2="171" fill="none" x1="756" clip-path="url(#clipPath40)" x2="749" y1="174"/> + <line y2="242" fill="none" x1="685" clip-path="url(#clipPath25)" x2="702" y1="242"/> + <line y2="286" fill="none" x1="702" clip-path="url(#clipPath25)" x2="702" y1="242"/> + <line y2="286" fill="none" x1="702" clip-path="url(#clipPath25)" x2="654" y1="286"/> + <line y2="272" fill="none" x1="654" clip-path="url(#clipPath25)" x2="654" y1="286"/> + <text x="696" xml:space="preserve" y="306" clip-path="url(#clipPath41)" stroke="none">closeDoor</text> + <line y2="272" fill="none" x1="657" clip-path="url(#clipPath42)" x2="654" y1="279"/> + <line y2="279" fill="none" x1="654" clip-path="url(#clipPath42)" x2="651" y1="272"/> + <line y2="370" fill="none" x1="402" clip-path="url(#clipPath25)" x2="402" y1="355"/> + <line y2="370" fill="none" x1="402" clip-path="url(#clipPath25)" x2="342" y1="370"/> + <line y2="355" fill="none" x1="342" clip-path="url(#clipPath25)" x2="342" y1="370"/> + <text x="344" xml:space="preserve" y="390" clip-path="url(#clipPath43)" stroke="none">closeDoor</text> + <line y2="355" fill="none" x1="345" clip-path="url(#clipPath44)" x2="342" y1="362"/> + <line y2="362" fill="none" x1="342" clip-path="url(#clipPath44)" x2="339" y1="355"/> + <line y2="242" fill="none" x1="78" clip-path="url(#clipPath25)" x2="60" y1="242"/> + <line y2="286" fill="none" x1="60" clip-path="url(#clipPath25)" x2="60" y1="242"/> + <line y2="286" fill="none" x1="60" clip-path="url(#clipPath25)" x2="102" y1="286"/> + <line y2="268" fill="none" x1="102" clip-path="url(#clipPath25)" x2="102" y1="286"/> + <text x="24" xml:space="preserve" y="306" clip-path="url(#clipPath45)" stroke="none">openDoor</text> + <line y2="268" fill="none" x1="105" clip-path="url(#clipPath46)" x2="102" y1="275"/> + <line y2="275" fill="none" x1="102" clip-path="url(#clipPath46)" x2="99" y1="268"/> + <line y2="65" fill="none" x1="342" clip-path="url(#clipPath25)" x2="342" y1="82"/> + <line y2="65" fill="none" x1="342" clip-path="url(#clipPath25)" x2="402" y1="65"/> + <line y2="82" fill="none" x1="402" clip-path="url(#clipPath25)" x2="402" y1="65"/> + <text x="344" xml:space="preserve" y="53" clip-path="url(#clipPath47)" stroke="none">openDoor</text> + <line y2="82" fill="none" x1="399" clip-path="url(#clipPath48)" x2="402" y1="75"/> + <line y2="75" fill="none" x1="402" clip-path="url(#clipPath48)" x2="405" y1="82"/> + </g> + </g> +</svg> diff --git a/model2model/examples-etl/statemachines/switch.statemachine b/model2model/examples-etl/statemachines/switch.statemachine new file mode 100644 index 0000000000000000000000000000000000000000..e69b2686f6ad45dbc26fcbe03cde993863643c97 --- /dev/null +++ b/model2model/examples-etl/statemachines/switch.statemachine @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<statemachine:StateMachine xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:statemachine="http://www.swt.org/most/statemachine" name="Switch"> + <states name="on"> + <do_ content="do_something"/> + </states> + <states name="off"> + <do_ content="do_nothing"/> + </states> + <initialstate name="initial"/> + <transitions from="//@initialstate" to="//@states.1"/> + <transitions from="//@states.1" to="//@states.0"> + <trigger content="flip"/> + </transitions> + <transitions from="//@states.0" to="//@states.1"> + <trigger content="flip"/> + </transitions> +</statemachine:StateMachine> diff --git a/model2model/examples-etl/statemachines/switch.svg b/model2model/examples-etl/statemachines/switch.svg new file mode 100644 index 0000000000000000000000000000000000000000..31ee45986067e22fc3c8999f35f5659ac858f5bd --- /dev/null +++ b/model2model/examples-etl/statemachines/switch.svg @@ -0,0 +1,132 @@ +<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-dasharray="none" shape-rendering="auto" font-family="'Dialog'" width="337" text-rendering="auto" fill-opacity="1" contentScriptType="text/ecmascript" color-interpolation="auto" color-rendering="auto" preserveAspectRatio="xMidYMid meet" font-size="12px" xmlns:diagram="http://www.eclipse.org/sirius/diagram/1.1.0" diagram:semanticRoot="platform:/resource/example/statemachines/switch.statemachine#Switch" viewBox="0 0 337 397" fill="black" stroke="black" image-rendering="auto" stroke-miterlimit="10" zoomAndPan="magnify" version="1.0" stroke-linecap="square" stroke-linejoin="miter" contentStyleType="text/css" font-style="normal" height="397" stroke-width="1" stroke-dashoffset="0" font-weight="normal" stroke-opacity="1"> + <!--Generated by the Batik Graphics2D SVG Generator--> + <defs id="genericDefs"/> + <g> + <defs id="defs1"> + <linearGradient x1="133" x2="325" y1="286" gradientUnits="userSpaceOnUse" y2="416" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient1" xlink:show="other" spreadMethod="pad"> + <stop stop-opacity="1" stop-color="rgb(255,245,181)" offset="0%"/> + <stop stop-opacity="1" stop-color="rgb(255,245,181)" offset="100%"/> + </linearGradient> + <linearGradient x1="133" x2="325" y1="40" gradientUnits="userSpaceOnUse" y2="170" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient2" xlink:show="other" spreadMethod="pad"> + <stop stop-opacity="1" stop-color="rgb(255,245,181)" offset="0%"/> + <stop stop-opacity="1" stop-color="rgb(255,245,181)" offset="100%"/> + </linearGradient> + <linearGradient x1="140" x2="318" y1="-23" gradientUnits="userSpaceOnUse" y2="88" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient3" xlink:show="other" spreadMethod="pad"> + <stop stop-opacity="1" stop-color="rgb(209,209,209)" offset="0%"/> + <stop stop-opacity="1" stop-color="rgb(209,209,209)" offset="100%"/> + </linearGradient> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath1"> + <path d="M18 137 L50 137 L50 169 L18 169 L18 137 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath2"> + <path d="M9 168 L62 168 L62 198 L9 198 L9 168 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath3"> + <path d="M132 315 L328 315 L328 388 L132 388 L132 315 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath4"> + <path d="M132 315 L326 315 L326 386 L132 386 L132 315 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath5"> + <path d="M216 320 L248 320 L248 350 L216 350 L216 320 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath6"> + <path d="M137 355 L325 355 L325 385 L137 385 L137 355 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath7"> + <path d="M133 353 L325 353 L325 385 L133 385 L133 353 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath8"> + <path d="M132 69 L328 69 L328 142 L132 142 L132 69 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath9"> + <path d="M132 69 L326 69 L326 140 L132 140 L132 69 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath10"> + <path d="M214 74 L248 74 L248 104 L214 104 L214 74 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath11"> + <path d="M137 109 L301 109 L301 139 L137 139 L137 109 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath12"> + <path d="M133 107 L325 107 L325 139 L133 139 L133 107 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath13"> + <path d="M139 9 L321 9 L321 57 L139 57 L139 9 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath14"> + <path d="M139 9 L319 9 L319 55 L139 55 L139 9 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath15"> + <path d="M139 13 L323 13 L323 38 L139 38 L139 13 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath16"> + <path d="M139 41 L319 41 L319 55 L139 55 L139 41 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath17"> + <path d="M-1 -1 L338 -1 L338 398 L-1 398 L-1 -1 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath18"> + <path d="M124 95 L136 95 L136 106 L124 106 L124 95 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath19"> + <path d="M270 207 L292 207 L292 226 L270 226 L270 207 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath20"> + <path d="M248 307 L259 307 L259 319 L248 319 L248 307 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath21"> + <path d="M168 207 L190 207 L190 226 L168 226 L168 207 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath22"> + <path d="M194 137 L205 137 L205 149 L194 149 L194 137 Z"/> + </clipPath> + </defs> + <g stroke-miterlimit="0" stroke-width="0" font-size="15px" font-family="'Segoe UI'" stroke-linejoin="round"> + <circle r="14" clip-path="url(#clipPath1)" cx="33" cy="152" stroke="none"/> + </g> + <g font-size="15px" stroke-width="0.1" font-family="'Segoe UI'" stroke-linecap="butt"> + <circle fill="none" r="14.5" clip-path="url(#clipPath1)" cx="33.5" cy="152.5"/> + <text x="10" xml:space="preserve" font-size="20px" y="191" clip-path="url(#clipPath2)" stroke="none">initial</text> + </g> + <g stroke-linecap="butt" font-size="20px" fill="rgb(131,122,133)" font-family="'Segoe UI'" stroke="rgb(131,122,133)" font-weight="bold" stroke-width="0.1"> + <rect x="134" y="317" clip-path="url(#clipPath3)" width="192" rx="5" opacity="0.255" ry="5" height="69" stroke="none"/> + <rect x="135" y="318" clip-path="url(#clipPath3)" width="192" rx="5" opacity="0.255" ry="5" height="69" stroke="none"/> + <rect x="133" y="316" clip-path="url(#clipPath4)" fill="url(#linearGradient1)" width="192" rx="5" ry="5" height="69" stroke="none"/> + <rect x="133" y="316" clip-path="url(#clipPath4)" fill="none" width="191" rx="5" ry="5" height="68" stroke="black" stroke-width="1.1"/> + <text x="217" y="343" clip-path="url(#clipPath5)" fill="black" stroke="none" stroke-width="1.1" xml:space="preserve">on</text> + </g> + <g font-size="20px" stroke-width="1.1" font-family="'Segoe UI'" stroke-linecap="butt"> + <text x="138" xml:space="preserve" y="378" clip-path="url(#clipPath6)" stroke="none">do/ do_something</text> + <line y2="354" fill="none" x1="134" clip-path="url(#clipPath7)" x2="324" y1="354"/> + <rect x="134" y="71" clip-path="url(#clipPath8)" fill="rgb(131,122,133)" width="192" rx="5" opacity="0.255" ry="5" height="69" stroke="none"/> + <rect x="135" y="72" clip-path="url(#clipPath8)" fill="rgb(131,122,133)" width="192" rx="5" opacity="0.255" ry="5" height="69" stroke="none"/> + <rect x="133" y="70" clip-path="url(#clipPath9)" fill="url(#linearGradient2)" width="192" rx="5" ry="5" height="69" stroke="none"/> + <rect x="133" y="70" clip-path="url(#clipPath9)" fill="none" width="191" rx="5" ry="5" height="68"/> + <text x="215" xml:space="preserve" y="97" clip-path="url(#clipPath10)" font-weight="bold" stroke="none">off</text> + <text x="138" xml:space="preserve" y="132" clip-path="url(#clipPath11)" stroke="none">do/ do_nothing</text> + <line y2="108" fill="none" x1="134" clip-path="url(#clipPath12)" x2="324" y1="108"/> + </g> + <g stroke-linecap="butt" font-size="16px" fill="rgb(131,122,133)" font-family="'Segoe UI'" stroke="rgb(131,122,133)" font-weight="bold" stroke-width="1.1"> + <rect x="141" y="11" clip-path="url(#clipPath13)" width="178" rx="5" opacity="0.255" ry="5" height="44" stroke="none"/> + <rect x="142" y="12" clip-path="url(#clipPath13)" width="178" rx="5" opacity="0.255" ry="5" height="44" stroke="none"/> + <rect x="140" y="10" clip-path="url(#clipPath14)" fill="url(#linearGradient3)" width="178" rx="5" ry="5" height="44" stroke="none"/> + <text fill="black" x="140" xml:space="preserve" y="32" clip-path="url(#clipPath15)" stroke="none">State Machine: Switch</text> + <line clip-path="url(#clipPath16)" fill="none" x1="140" x2="318" y1="42" y2="42" stroke="rgb(209,209,209)"/> + </g> + <g font-size="13px" stroke-width="2.1" font-family="'Segoe UI'" stroke-linecap="butt"> + <line y2="100" fill="none" x1="34" clip-path="url(#clipPath17)" x2="34" y1="138"/> + <line y2="100" fill="none" x1="34" clip-path="url(#clipPath17)" x2="133" y1="100"/> + <line y2="100" fill="none" x1="126" clip-path="url(#clipPath18)" x2="133" y1="103"/> + <line y2="97" fill="none" x1="133" clip-path="url(#clipPath18)" x2="126" y1="100"/> + <line y2="316" fill="none" x1="253" clip-path="url(#clipPath17)" x2="253" y1="139"/> + <text x="271" xml:space="preserve" y="222" clip-path="url(#clipPath19)" stroke="none">flip</text> + <line y2="316" fill="none" x1="250" clip-path="url(#clipPath20)" x2="253" y1="309"/> + <line y2="309" fill="none" x1="253" clip-path="url(#clipPath20)" x2="256" y1="316"/> + <line y2="139" fill="none" x1="199" clip-path="url(#clipPath17)" x2="199" y1="316"/> + <text x="169" xml:space="preserve" y="222" clip-path="url(#clipPath21)" stroke="none">flip</text> + <line y2="139" fill="none" x1="202" clip-path="url(#clipPath22)" x2="199" y1="146"/> + <line y2="146" fill="none" x1="199" clip-path="url(#clipPath22)" x2="196" y1="139"/> + </g> + </g> +</svg> diff --git a/model2model/swt.most.statemachine.to.petrinet.etl/.project b/model2model/swt.most.statemachine.to.petrinet.etl/.project new file mode 100644 index 0000000000000000000000000000000000000000..b6c3018499b6e820cc029d8d6ffd8e7d952992e4 --- /dev/null +++ b/model2model/swt.most.statemachine.to.petrinet.etl/.project @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>swt.most.etl.statemachine</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + </buildSpec> + <natures> + </natures> +</projectDescription> diff --git a/model2model/swt.most.statemachine.to.petrinet.etl/StatechartToPetrinets-GarageDoor.launch b/model2model/swt.most.statemachine.to.petrinet.etl/StatechartToPetrinets-GarageDoor.launch new file mode 100644 index 0000000000000000000000000000000000000000..e1b0e5cc086a32ba77b19d8fc46dec08e8c88dd5 --- /dev/null +++ b/model2model/swt.most.statemachine.to.petrinet.etl/StatechartToPetrinets-GarageDoor.launch @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<launchConfiguration type="org.epsilon.etl.eclipse.dt.launching.EtlLaunchConfigurationDelegate"> + <booleanAttribute key="fine_grained_profiling" value="false"/> + <stringAttribute key="implementation_name" value="Parallel (Declarative operations)"/> + <listAttribute key="models"> + <listEntry value="#Mon Jun 17 15:47:19 CEST 2024 aliases= cached=true concurrent=false expand=true fileBasedMetamodelUri= isMetamodelFileBased=false metamodelFile= metamodelUri=http\://www.swt.org/most/statemachine modelFile=/examples-etl/statemachines/garagedoor.statemachine modelUri=platform\:/resource/examples-etl/statemachines/garagedoor.statemachine name=source readOnLoad=true reuseUnmodifiedFileBasedMetamodels=true storeOnDisposal=false type=EMF validate=false"/> + <listEntry value="#Mon Jun 17 15:47:39 CEST 2024 aliases= cached=true concurrent=false expand=true fileBasedMetamodelUri= isMetamodelFileBased=false metamodelFile= metamodelUri=http\://www.example.org/petrinet modelFile=/examples-etl/petrinets/garagedoor.petrinet modelUri=platform\:/resource/examples-etl/petrinets/garagedoor.petrinet name=target readOnLoad=false reuseUnmodifiedFileBasedMetamodels=true storeOnDisposal=true type=EMF validate=false"/> + </listAttribute> + <booleanAttribute key="org.eclipse.debug.core.ATTR_FORCE_SYSTEM_CONSOLE_ENCODING" value="false"/> + <intAttribute key="parallelism" value="7"/> + <listAttribute key="parameters"/> + <booleanAttribute key="profile_model_loading" value="false"/> + <booleanAttribute key="profiling_enabled" value="false"/> + <booleanAttribute key="reset_profiler" value="false"/> + <stringAttribute key="source" value="/swt.most.etl.statemachine/StatechartToPetrinets.etl"/> +</launchConfiguration> diff --git a/model2model/swt.most.statemachine.to.petrinet.etl/StatechartToPetrinets-Switch.launch b/model2model/swt.most.statemachine.to.petrinet.etl/StatechartToPetrinets-Switch.launch new file mode 100644 index 0000000000000000000000000000000000000000..2488b8f3ae578da236ba6e047426e2669573e009 --- /dev/null +++ b/model2model/swt.most.statemachine.to.petrinet.etl/StatechartToPetrinets-Switch.launch @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<launchConfiguration type="org.epsilon.etl.eclipse.dt.launching.EtlLaunchConfigurationDelegate"> + <booleanAttribute key="fine_grained_profiling" value="false"/> + <stringAttribute key="implementation_name" value="Parallel (Declarative operations)"/> + <listAttribute key="models"> + <listEntry value="#Mon Jun 17 15:50:00 CEST 2024 aliases= cached=true concurrent=false expand=true fileBasedMetamodelUri= isMetamodelFileBased=false metamodelFile= metamodelUri=http\://www.swt.org/most/statemachine modelFile=/examples-etl/statemachines/switch.statemachine modelUri=platform\:/resource/examples-etl/statemachines/switch.statemachine name=source readOnLoad=true reuseUnmodifiedFileBasedMetamodels=true storeOnDisposal=false type=EMF validate=false"/> + <listEntry value="#Mon Jun 17 15:50:51 CEST 2024 aliases= cached=true concurrent=false expand=true fileBasedMetamodelUri= isMetamodelFileBased=false metamodelFile= metamodelUri=http\://www.example.org/petrinet modelFile=/examples-etl/petrinets/switch.petrinet modelUri=platform\:/resource/examples-etl/petrinets/switch.petrinet name=target readOnLoad=false reuseUnmodifiedFileBasedMetamodels=true storeOnDisposal=true type=EMF validate=false"/> + </listAttribute> + <booleanAttribute key="org.eclipse.debug.core.ATTR_FORCE_SYSTEM_CONSOLE_ENCODING" value="false"/> + <intAttribute key="parallelism" value="7"/> + <listAttribute key="parameters"/> + <booleanAttribute key="profile_model_loading" value="false"/> + <booleanAttribute key="profiling_enabled" value="false"/> + <booleanAttribute key="reset_profiler" value="false"/> + <stringAttribute key="source" value="/swt.most.etl.statemachine/StatechartToPetrinets.etl"/> +</launchConfiguration> diff --git a/model2model/swt.most.statemachine.to.petrinet.etl/StatechartToPetrinets.etl b/model2model/swt.most.statemachine.to.petrinet.etl/StatechartToPetrinets.etl new file mode 100644 index 0000000000000000000000000000000000000000..65614675227dde22d1774364ae9c91fe9bab1b4d --- /dev/null +++ b/model2model/swt.most.statemachine.to.petrinet.etl/StatechartToPetrinets.etl @@ -0,0 +1,129 @@ + +// A normal Transformation Rule triggers ones per element in the source model. +// this rule will create a Petri Net out of a State Machine and will fill it with transformed sub-elements from the source model. +rule StateMachineToPerinet + transform s : source!StateMachine + to t : target!PetriNet { + + ("Start transforming State Machine '"+ s.name +"' into a Petri Net!").println(); + + t.name = s.name; + + t.elements.add(s.initialstate.equivalent()); + + for (state in s.states) { + t.elements.add(state.equivalent()); + } + + for (state in s.finalstates) { + t.elements.add(state.equivalent()); + } + + for (transition in s.transitions) { + t.processTransition(transition); + } + + "Transformation finished!".println(); + +} + + +// Lazy Transformation Rules will not automatically trigger a transformation per source model element. +// They can be triggered by calling x.equivalent(). x must be an element of the source model datatype. (source!Datatype) +// Note x.equivalent() will only trigger the transformation once and will after the first call only return a reference to the created element. +// They are used for simple transformations. +@lazy +rule NormalStateToPlace + transform s : source!NormalState + to t : target!Place { + t.identifier = s.name; +} + +@lazy +rule InitialStateToPlace + transform s : source!InitialState + to t : target!Place { + t.identifier = s.name; + t.token = new target!Token; +} + +@lazy +rule FinalStateToPlace + transform s : source!FinalState + to t : target!Place { + t.identifier = s.name; +} + +@lazy +rule TransitionToTransition + transform s : source!Transition + to t : target!Transition { + if(s.trigger <> null){ + t.identifier = s.trigger.content; + }else{ + t.identifier = "default"; + } +} + +// If you need a complex transformation, you can define our own functions. +// Please note that functions are not automatically called per source model element. You need to call them from a rule. +// In this case, a State Machine Transition is transformed into multiple Petri Net elements (Transition and Arcs). +function target!PetriNet processTransition(transition : source!Transition){ + + // Process a State Machine Transition in a Petri Net Transition and two Arcs. + // Call the lazy rule to create the Transition + var pTransition = transition.equivalent(); + self.elements.add(pTransition); + + // Add the arcs as completly new elements + var pIncomingArc = new target!IncomingArc; + pIncomingArc.Target = pTransition; + pIncomingArc.Source = transition.from.equivalent(); + self.arcs.add(pIncomingArc); + + var pOutgoingArc = new target!OutgoingArc; + pOutgoingArc.Target = transition.To.equivalent(); + pOutgoingArc.Source = pTransition; + self.arcs.add(pOutgoingArc); + + // Process the trigger statement to a Place and an Arc to the current Petri Net Transition. + // By later placing a Token in the Place the "guard" is active and the Transition can fire. + if(transition.trigger <> null){ + var triggerPlace = new target!Place; + triggerPlace.identifier = transition.trigger.content; + self.elements.add(triggerPlace); + + var triggerIncomingArc = new target!IncomingArc; + triggerIncomingArc.Target = pTransition; + triggerIncomingArc.Source = triggerPlace; + self.arcs.add(triggerIncomingArc); + } + + // Process a guard statement to a Place and an Arc to the current Petri Net Transition. + // By later placing a Token in the Place the "guard" is active and the Transition can fire. + if(transition.Guard <> null){ + var guardPlace = new target!Place; + guardPlace.identifier = transition.Guard.content; + self.elements.add(guardPlace); + + var guardIncomingArc = new target!IncomingArc; + guardIncomingArc.Target = pTransition; + guardIncomingArc.Source = guardPlace; + self.arcs.add(guardIncomingArc); + } + + // Process an action statement to a Place and an Arc from the current petri net Transition. + // If the Transition is fired a token is placed in the Place, symbolizing a done or pending action. + if(transition.action <> null){ + var actionPlace = new target!Place; + actionPlace.identifier = transition.action.content; + self.elements.add(actionPlace); + + var actionOutgoingArc = new target!OutgoingArc; + actionOutgoingArc.Target = actionPlace; + actionOutgoingArc.Source = pTransition; + self.arcs.add(actionOutgoingArc); + } + + +} diff --git a/model2model/swt.most.statemachine.validation.evl/.project b/model2model/swt.most.statemachine.validation.evl/.project new file mode 100644 index 0000000000000000000000000000000000000000..8cebe1d150db19c4e7974c37d8f3b9c347c2a382 --- /dev/null +++ b/model2model/swt.most.statemachine.validation.evl/.project @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>swt.most.statemachine.validation.evl</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + </buildSpec> + <natures> + </natures> +</projectDescription> diff --git a/model2model/swt.most.statemachine.validation.evl/model/garagedoor.statemachine b/model2model/swt.most.statemachine.validation.evl/model/garagedoor.statemachine new file mode 100644 index 0000000000000000000000000000000000000000..358692a49a51bb03409f2120a99b2a075680ff95 --- /dev/null +++ b/model2model/swt.most.statemachine.validation.evl/model/garagedoor.statemachine @@ -0,0 +1,51 @@ +<?xml version="1.0" encoding="UTF-8"?> +<statemachine:StateMachine xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:statemachine="http://www.swt.org/most/statemachine" name="Garage Door"> + <states name="Closed"/> + <states name="Open"/> + <states name="Opening"/> + <states name="Closing"/> + <finalstates name="final"/> + <initialstate name="initial"/> + <transitions from="initial" to="Closed"/> + <transitions from="Closed" to="Opening"> + <trigger content="openDoor"/> + <action content="motor.upwards"/> + </transitions> + <transitions from="Opening" to="Open"> + <action content="motor.stop"/> + </transitions> + <transitions from="Open" to="Closing"> + <trigger content="closeDoor"/> + <action content="motor.downwards"/> + </transitions> + <transitions from="Closing" to="Closed"> + <guard content="stopper"/> + <action content="motor.stop"/> + </transitions> + <transitions from="Closing" to="Opening"> + <trigger content="openDoor"/> + <action content="motor.upwards"/> + </transitions> + <transitions from="Opening" to="Closing"> + <trigger content="closeDoor"/> + <action content="motor.downwards"/> + </transitions> + <transitions from="Closed" to="final"> + <guard content="shutdown"/> + </transitions> + <transitions from="Closed" to="Closed"> + <trigger content="closeDoor"/> + </transitions> + <transitions from="Closing" to="Closing"> + <trigger content="closeDoor"/> + </transitions> + <transitions from="Open" to="Open"> + <trigger content="openDoor"/> + </transitions> + <transitions from="Opening" to="Opening"> + <trigger content="openDoor"/> + </transitions> + <transitions from="final" to="initial"> + <guard content="end"/> + </transitions> +</statemachine:StateMachine> diff --git a/model2model/swt.most.statemachine.validation.evl/statemachine-validation.evl b/model2model/swt.most.statemachine.validation.evl/statemachine-validation.evl new file mode 100644 index 0000000000000000000000000000000000000000..c732864ee53bfa5d0532a3c72ba5c4ab081eb70e --- /dev/null +++ b/model2model/swt.most.statemachine.validation.evl/statemachine-validation.evl @@ -0,0 +1,55 @@ +pre{ + var maxStates = 3; +} + +context Transition { + + guard: not self.from.instanceOf(InitialState) + + critique emptyTransition { + check : (self.Trigger <> null) or (self.Guard <> null) + message : "Transition [" + self.from.name + "-" + self.to.name + "] has no guard or event" + } +} + + +context Transition { + + constraint TransitionToInitialState { + check : not self.to.instanceOf(InitialState) + message : "Transition [" + self.from.name + "-" + self.to.name + "] ends in an Initial State" + } + + constraint TransitionFromFinalState { + check : not self.from.instanceOf(FinalState) + message : "Transition [" + self.from.name + "-" + self.to.name + "] starts in a Final State" + fix { + title: "Delete Transition" + do { + delete self; + } + } + + } + +} + + +context StateMachine { + + critique CheckNumberOfStates{ + check { + var numberS = 0; + numberS = self.states.size(); + return numberS > 1 and numberS < maxStates; + } + message { + if(numberS == 0){ + return "No States are present in the State Machine. Check if the model was saved correctly!"; + }else if(numberS > maxStates){ + return numberS + " States are found. The statemachine is quite big. Please check if the behaivior can be split up!"; + } + } + } + +} diff --git a/model2model/swt.most.statemachine.validation.evl/validation GarageDoor.launch b/model2model/swt.most.statemachine.validation.evl/validation GarageDoor.launch new file mode 100644 index 0000000000000000000000000000000000000000..2e03350d75a0e09ccd54f442edc38eb1ea0e83fc --- /dev/null +++ b/model2model/swt.most.statemachine.validation.evl/validation GarageDoor.launch @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<launchConfiguration type="org.epsilon.evl.eclipse.dt.launching.EvlLaunchConfigurationDelegate"> + <booleanAttribute key="fine_grained_profiling" value="false"/> + <stringAttribute key="implementation_name" value="Parallel (Annotations)"/> + <listAttribute key="models"> + <listEntry value="#Mon Jun 17 17:13:45 CEST 2024 aliases= cached=true concurrent=false expand=true fileBasedMetamodelUri= isMetamodelFileBased=false metamodelFile= metamodelUri=http\://www.swt.org/most/statemachine modelFile=/swt.most.statemachine.validation.evl/model/garagedoor.statemachine modelUri=platform\:/resource/swt.most.statemachine.validation.evl/model/garagedoor.statemachine name=source readOnLoad=true reuseUnmodifiedFileBasedMetamodels=true storeOnDisposal=false type=EMF validate=false"/> + </listAttribute> + <booleanAttribute key="optimizeConstraintTrace" value="true"/> + <booleanAttribute key="optimizeConstraints" value="false"/> + <booleanAttribute key="org.eclipse.debug.core.ATTR_FORCE_SYSTEM_CONSOLE_ENCODING" value="false"/> + <intAttribute key="parallelism" value="7"/> + <listAttribute key="parameters"/> + <booleanAttribute key="profile_model_loading" value="false"/> + <booleanAttribute key="profiling_enabled" value="false"/> + <booleanAttribute key="reset_profiler" value="false"/> + <booleanAttribute key="shortCircuit" value="false"/> + <stringAttribute key="source" value="/swt.most.statemachine.validation.evl/statemachine-validation.evl"/> +</launchConfiguration> diff --git a/model2text/swt.most.statemachine.to.java.egl/.project b/model2text/swt.most.statemachine.to.java.egl/.project new file mode 100644 index 0000000000000000000000000000000000000000..7ecab28b3aa135dab13e9d8ed1975c6766f1232e --- /dev/null +++ b/model2text/swt.most.statemachine.to.java.egl/.project @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>swt.most.statemachine.to.java.egl</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + </buildSpec> + <natures> + </natures> +</projectDescription> diff --git a/model2text/swt.most.statemachine.to.java.egl/generateJava-GarageDoor.launch b/model2text/swt.most.statemachine.to.java.egl/generateJava-GarageDoor.launch new file mode 100644 index 0000000000000000000000000000000000000000..06bbf48c8ce953f47b943091d8e4ecdddf2aef47 --- /dev/null +++ b/model2text/swt.most.statemachine.to.java.egl/generateJava-GarageDoor.launch @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<launchConfiguration type="org.epsilon.egl.eclipse.dt.launching.EglLaunchConfigurationDelegate"> + <booleanAttribute key="appendToFile" value="false"/> + <listAttribute key="defaultFormatters"/> + <intAttribute key="egxGenerateTo" value="1"/> + <booleanAttribute key="fine_grained_profiling" value="false"/> + <intAttribute key="generateTo" value="1"/> + <stringAttribute key="implementation_name" value="Sequential EGX"/> + <listAttribute key="models"> + <listEntry value="#Mon Jun 17 16:56:01 CEST 2024 aliases= cached=true concurrent=false expand=true fileBasedMetamodelUri= isMetamodelFileBased=false metamodelFile= metamodelUri=http\://www.swt.org/most/statemachine modelFile=/swt.most.statemachine.to.java.egl/model/garagedoor.statemachine modelUri=platform\:/resource/swt.most.statemachine.to.java.egl/model/garagedoor.statemachine name=source readOnLoad=true reuseUnmodifiedFileBasedMetamodels=true storeOnDisposal=false type=EMF validate=false"/> + </listAttribute> + <booleanAttribute key="org.eclipse.debug.core.ATTR_FORCE_SYSTEM_CONSOLE_ENCODING" value="false"/> + <stringAttribute key="outputDirPath" value=""/> + <stringAttribute key="outputFilePath" value=""/> + <listAttribute key="parameters"/> + <booleanAttribute key="produceTrace" value="false"/> + <booleanAttribute key="profile_model_loading" value="false"/> + <booleanAttribute key="profiling_enabled" value="false"/> + <booleanAttribute key="reset_profiler" value="false"/> + <stringAttribute key="source" value="/swt.most.statemachine.to.java.egl/generator-code/generate.egx"/> + <stringAttribute key="templateFactoryType" value="org.eclipse.epsilon.egl.EglFileGeneratingTemplateFactory"/> + <stringAttribute key="traceDestination" value=""/> +</launchConfiguration> diff --git a/model2text/swt.most.statemachine.to.java.egl/generateJava-Switch.launch b/model2text/swt.most.statemachine.to.java.egl/generateJava-Switch.launch new file mode 100644 index 0000000000000000000000000000000000000000..900f6a8ee55aca25b4fabd528a0cbd7fc9bc4c2d --- /dev/null +++ b/model2text/swt.most.statemachine.to.java.egl/generateJava-Switch.launch @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<launchConfiguration type="org.epsilon.egl.eclipse.dt.launching.EglLaunchConfigurationDelegate"> + <booleanAttribute key="appendToFile" value="false"/> + <listAttribute key="defaultFormatters"/> + <intAttribute key="egxGenerateTo" value="1"/> + <booleanAttribute key="fine_grained_profiling" value="false"/> + <intAttribute key="generateTo" value="1"/> + <stringAttribute key="implementation_name" value="Sequential EGX"/> + <listAttribute key="models"> + <listEntry value="#Mon Jun 17 16:45:56 CEST 2024 aliases= cached=true concurrent=false expand=true fileBasedMetamodelUri= isMetamodelFileBased=false metamodelFile= metamodelUri=http\://www.swt.org/most/statemachine modelFile=/swt.most.statemachine.to.java.egl/model/switch.statemachine modelUri=platform\:/resource/swt.most.statemachine.to.java.egl/model/switch.statemachine name=source readOnLoad=true reuseUnmodifiedFileBasedMetamodels=true storeOnDisposal=false type=EMF validate=false"/> + </listAttribute> + <booleanAttribute key="org.eclipse.debug.core.ATTR_FORCE_SYSTEM_CONSOLE_ENCODING" value="false"/> + <stringAttribute key="outputDirPath" value=""/> + <stringAttribute key="outputFilePath" value=""/> + <listAttribute key="parameters"/> + <booleanAttribute key="produceTrace" value="false"/> + <booleanAttribute key="profile_model_loading" value="false"/> + <booleanAttribute key="profiling_enabled" value="false"/> + <booleanAttribute key="reset_profiler" value="false"/> + <stringAttribute key="source" value="/swt.most.statemachine.to.java.egl/generator-code/generate.egx"/> + <stringAttribute key="templateFactoryType" value="org.eclipse.epsilon.egl.EglFileGeneratingTemplateFactory"/> + <stringAttribute key="traceDestination" value=""/> +</launchConfiguration> diff --git a/model2text/swt.most.statemachine.to.java.egl/generator-code/functions.eol b/model2text/swt.most.statemachine.to.java.egl/generator-code/functions.eol new file mode 100644 index 0000000000000000000000000000000000000000..bb4e0a982983c4020dbc22c15f68b882b7403d12 --- /dev/null +++ b/model2text/swt.most.statemachine.to.java.egl/generator-code/functions.eol @@ -0,0 +1,15 @@ +function String normalize(upperCase:Boolean) : String { + + var result = self.replaceAll(' ', '').trim(); + + if(upperCase){ + return result.firstToUpperCase(); + }else{ + return result; + } + +} + +function StateMachine uniqueTrigger() : Set { + return self.transitions.select(t | t.trigger <> null).asSet(); +} \ No newline at end of file diff --git a/model2text/swt.most.statemachine.to.java.egl/generator-code/generate.egx b/model2text/swt.most.statemachine.to.java.egl/generator-code/generate.egx new file mode 100644 index 0000000000000000000000000000000000000000..f907e3dbb59cb2da42faf6a65df7840f1a1cf513 --- /dev/null +++ b/model2text/swt.most.statemachine.to.java.egl/generator-code/generate.egx @@ -0,0 +1,9 @@ +import "functions.eol"; + +rule StateMachineToJava + transform aStateMachine : source!StateMachine { + + template : "template-statemachine.egl" + + target : "../src-gen/" + aStateMachine.name.normalize(true) + ".java" +} \ No newline at end of file diff --git a/model2text/swt.most.statemachine.to.java.egl/generator-code/template-statemachine.egl b/model2text/swt.most.statemachine.to.java.egl/generator-code/template-statemachine.egl new file mode 100644 index 0000000000000000000000000000000000000000..c2cbfe6f79fa5127d2eb0630ffbc4ea4789e08db --- /dev/null +++ b/model2text/swt.most.statemachine.to.java.egl/generator-code/template-statemachine.egl @@ -0,0 +1,104 @@ +[%import "functions.eol";%] +public class [%= aStateMachine.name.normalize(true)%]{ + + // Some parts of the implementation are simplified, + // because implementing them would require more information then the state machine model provides. + + // Attributes of the state machine + // Current active state + private State currentState = new [%=aStateMachine.name.normalize(true)%](); + + // Constructor of the state machine + // Also triggers the default (not named) Transition + public [%=aStateMachine.name.normalize(true)%](){ + this._default(); + } + + // Triggers used in the state machine + // Default trigger for transitions without trigger + // This method is always automatically activated as soon as the state is entered or a time interval has passed + public void _default(){ currentState._default(); } + // Triggers that were extracted from the state machine transitions + [%for (trigger : String in aStateMachine.uniqueTrigger()){%] + [%if (trigger <> null and trigger.content.size() > 0){%] + public void [%=trigger.content.normalize(false)%][%if (not trigger.content.normalize(false).endsWith('()')){%]()[%}%]{ currentState.[%=trigger.content.normalize(false)%][%if (not trigger.endsWith('()')){%]()[%}%]; } + [%}%] + [%}%] + + + // States as inner classes + // Abstract state for the usage of polymorphism in the pattern + private abstract class State{ + public void _default(){ /* by default, do nothing */ } + [%for (trigger : String in aStateMachine.uniqueTrigger()){%] + [%if (trigger <> null and trigger.size() > 0){%] + public void [%=trigger.content.normalize(false)%][%if (not trigger.content.normalize(false).endsWith('()')){%]()[%}%]{ /* by default, do nothing */ } + [%}%] + [%}%] + } + + // Initial state + private class [%=aStateMachine.initialstate.name.normalize(true)%]{ + [%for (t : Transition in aStateMachine.transitions){%] + [%if (t.from.name.matches(aStateMachine.initialstate.name)){%] + // Initial states should only have one default transition without guards and actions + public void _default(){ + currentState = new [%=t.to.name.normalize(true)%](); + currentState._default(); + } + [%}%] + [%}%] + } + + // Normal states + [%for (s : NormalState in aStateMachine.states){%] + private class [%=s.name.normalize(true)%] extends State{ + [%for (t : Transition in aStateMachine.transitions){%] + [%if (t.from.name.matches(s.name)){%] + [%if (t.trigger = null or t.trigger.content.size() = 0){%] + public void _default(){ + [%if (t.guard <> null and t.guard.content.size() > 0){%] + if([%=t.guard.content.normalize(false)%]){ // Special guard, notation simplified in this example + [%}else{%] + if(true){ // No guard + [%}%] + [%if (t.action <> null and t.action.content.size() > 0){%] + [%=t.action.content.normalize(false)%][%if (not t.action.content.normalize(false).endsWith('()')){%]()[%}%]; // Action + [%}%] + currentState = new [%=t.to.name.normalize(true)%](); + currentState._default(); + } + } + + [%}%] + [%if (t.trigger <> null and t.trigger.content.size() > 0){%] + public void [%=t.trigger.content.normalize(false)%][%if (not t.trigger.content.endsWith('()')){%]()[%}%]{ + [%if (t.guard <> null and t.guard.content.size() > 0){%] + if([%=t.guard.content.normalize(false)%]){ // Special guard, notation simplified in this example + [%}else{%] + if(true){ // No guard + [%}%] + [%if (t.action <> null and t.action.content.size() > 0){%] + [%=t.action.content.normalize(false)%][%if (not t.action.content.normalize(false).endsWith('()')){%]()[%}%]; // Action + [%}%] + currentState = new [%=t.to.name.normalize(true)%](); + currentState._default(); + } + } + + [%}%] + [%}%] + [%}%] + } + + [%}%] + + // Final states + [%for (s : FinalState in aStateMachine.finalstates){%] + private class [%=s.name.normalize(true)%] extends State{ + // A final state is only a flow sink without functionality + } + + [%}%] + +} \ No newline at end of file diff --git a/model2text/swt.most.statemachine.to.java.egl/model/garagedoor.statemachine b/model2text/swt.most.statemachine.to.java.egl/model/garagedoor.statemachine new file mode 100644 index 0000000000000000000000000000000000000000..7e44c6fd1941ac4b5bb590516b2ae01299c04221 --- /dev/null +++ b/model2text/swt.most.statemachine.to.java.egl/model/garagedoor.statemachine @@ -0,0 +1,49 @@ +<?xml version="1.0" encoding="UTF-8"?> +<statemachine:StateMachine xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:statemachine="http://www.swt.org/most/statemachine" name="Garage Door"> + <states name="Closed"/> + <states name="Open"/> + <states name="Opening"/> + <states name="Closing"/> + <finalstates name="final"/> + <initialstate name="initial"/> + <transitions from="//@initialstate" to="//@states.0"/> + <transitions from="//@states.0" to="//@states.2"> + <trigger content="openDoor"/> + <action content="motor.upwards"/> + </transitions> + <transitions from="//@states.2" to="//@states.1"> + <guard content="stopper"/> + <action content="motor.stop"/> + </transitions> + <transitions from="//@states.1" to="//@states.3"> + <trigger content="closeDoor"/> + <action content="motor.downwards"/> + </transitions> + <transitions from="//@states.3" to="//@states.0"> + <guard content="stopper"/> + <action content="motor.stop"/> + </transitions> + <transitions from="//@states.3" to="//@states.2"> + <trigger content="openDoor"/> + <action content="motor.upwards"/> + </transitions> + <transitions from="//@states.2" to="//@states.3"> + <trigger content="closeDoor"/> + <action content="motor.downwards"/> + </transitions> + <transitions from="//@states.0" to="//@finalstates.0"> + <guard content="shutdown"/> + </transitions> + <transitions from="//@states.0" to="//@states.0"> + <trigger content="closeDoor"/> + </transitions> + <transitions from="//@states.3" to="//@states.3"> + <trigger content="closeDoor"/> + </transitions> + <transitions from="//@states.1" to="//@states.1"> + <trigger content="openDoor"/> + </transitions> + <transitions from="//@states.2" to="//@states.2"> + <trigger content="openDoor"/> + </transitions> +</statemachine:StateMachine> diff --git a/model2text/swt.most.statemachine.to.java.egl/model/switch.statemachine b/model2text/swt.most.statemachine.to.java.egl/model/switch.statemachine new file mode 100644 index 0000000000000000000000000000000000000000..e69b2686f6ad45dbc26fcbe03cde993863643c97 --- /dev/null +++ b/model2text/swt.most.statemachine.to.java.egl/model/switch.statemachine @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<statemachine:StateMachine xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:statemachine="http://www.swt.org/most/statemachine" name="Switch"> + <states name="on"> + <do_ content="do_something"/> + </states> + <states name="off"> + <do_ content="do_nothing"/> + </states> + <initialstate name="initial"/> + <transitions from="//@initialstate" to="//@states.1"/> + <transitions from="//@states.1" to="//@states.0"> + <trigger content="flip"/> + </transitions> + <transitions from="//@states.0" to="//@states.1"> + <trigger content="flip"/> + </transitions> +</statemachine:StateMachine> diff --git a/model2text/swt.most.statemachine.to.java.egl/src-gen/GarageDoor.java b/model2text/swt.most.statemachine.to.java.egl/src-gen/GarageDoor.java new file mode 100644 index 0000000000000000000000000000000000000000..5c4cf6ce241ec029d558109dd4f7d0b355030fb0 --- /dev/null +++ b/model2text/swt.most.statemachine.to.java.egl/src-gen/GarageDoor.java @@ -0,0 +1,142 @@ +public class GarageDoor{ + + // Some parts of the implementation are simplified, + // because implementing them would require more information then the state machine model provides. + + // Attributes of the state machine + // Current active state + private State currentState = new GarageDoor(); + + // Constructor of the state machine + // Also triggers the default (not named) Transition + public GarageDoor(){ + this._default(); + } + + // Triggers used in the state machine + // Default trigger for transitions without trigger + // This method is always automatically activated as soon as the state is entered or a time interval has passed + public void _default(){ currentState._default(); } + // Triggers that were extracted from the state machine transitions + + + // States as inner classes + // Abstract state for the usage of polymorphism in the pattern + private abstract class State{ + public void _default(){ /* by default, do nothing */ } + } + + // Initial state + private class Initial{ + // Initial states should only have one default transition without guards and actions + public void _default(){ + currentState = new Closed(); + currentState._default(); + } + } + + // Normal states + private class Closed extends State{ + public void openDoor(){ + if(true){ // No guard + motor.upwards(); // Action + currentState = new Opening(); + currentState._default(); + } + } + + public void _default(){ + if(shutdown){ // Special guard, notation simplified in this example + currentState = new Final(); + currentState._default(); + } + } + + public void closeDoor(){ + if(true){ // No guard + currentState = new Closed(); + currentState._default(); + } + } + + } + + private class Open extends State{ + public void closeDoor(){ + if(true){ // No guard + motor.downwards(); // Action + currentState = new Closing(); + currentState._default(); + } + } + + public void openDoor(){ + if(true){ // No guard + currentState = new Open(); + currentState._default(); + } + } + + } + + private class Opening extends State{ + public void _default(){ + if(stopper){ // Special guard, notation simplified in this example + motor.stop(); // Action + currentState = new Open(); + currentState._default(); + } + } + + public void closeDoor(){ + if(true){ // No guard + motor.downwards(); // Action + currentState = new Closing(); + currentState._default(); + } + } + + public void openDoor(){ + if(true){ // No guard + currentState = new Opening(); + currentState._default(); + } + } + + } + + private class Closing extends State{ + public void _default(){ + if(stopper){ // Special guard, notation simplified in this example + motor.stop(); // Action + currentState = new Closed(); + currentState._default(); + } + } + + public void openDoor(){ + if(true){ // No guard + motor.upwards(); // Action + currentState = new Opening(); + currentState._default(); + } + } + + public void closeDoor(){ + if(true){ // No guard + currentState = new Closing(); + currentState._default(); + } + } + + } + + + + // Final states + private class Final extends State{ + // A final state is only a flow sink without functionality + } + + +} \ No newline at end of file diff --git a/model2text/swt.most.statemachine.to.java.egl/src-gen/Switch.java b/model2text/swt.most.statemachine.to.java.egl/src-gen/Switch.java new file mode 100644 index 0000000000000000000000000000000000000000..5483d1d0be69bdf6eaf92c670e094532ac9b01f8 --- /dev/null +++ b/model2text/swt.most.statemachine.to.java.egl/src-gen/Switch.java @@ -0,0 +1,63 @@ +public class Switch{ + + // Some parts of the implementation are simplified, + // because implementing them would require more information then the state machine model provides. + + // Attributes of the state machine + // Current active state + private State currentState = new Switch(); + + // Constructor of the state machine + // Also triggers the default (not named) Transition + public Switch(){ + this._default(); + } + + // Triggers used in the state machine + // Default trigger for transitions without trigger + // This method is always automatically activated as soon as the state is entered or a time interval has passed + public void _default(){ currentState._default(); } + // Triggers that were extracted from the state machine transitions + + + // States as inner classes + // Abstract state for the usage of polymorphism in the pattern + private abstract class State{ + public void _default(){ /* by default, do nothing */ } + } + + // Initial state + private class Initial{ + // Initial states should only have one default transition without guards and actions + public void _default(){ + currentState = new Off(); + currentState._default(); + } + } + + // Normal states + private class On extends State{ + public void flip(){ + if(true){ // No guard + currentState = new Off(); + currentState._default(); + } + } + + } + + private class Off extends State{ + public void flip(){ + if(true){ // No guard + currentState = new On(); + currentState._default(); + } + } + + } + + + + // Final states + +} \ No newline at end of file