<?xml version="1.0" encoding="UTF-8"?>
<gmfgen:GenEditorGenerator
    xmi:version="2.0"
    xmlns:xmi="http://www.omg.org/XMI"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:gmfgen="http://www.eclipse.org/gmf/2009/GenModel"
    copyrightText="">
  <diagram
      visualID="1000"
      editPartClassName="ComponentEditPart"
      itemSemanticEditPolicyClassName="ComponentItemSemanticEditPolicy"
      canonicalEditPolicyClassName="ComponentCanonicalEditPolicy"
      iconProviderPriority="Low"
      validationProviderPriority="Low"
      validationEnabled="true"
      validationDecorators="true"
      liveValidationUIFeedback="true">
    <diagramRunTimeClass
        href="platform:/plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Diagram"/>
    <elementType
        xsi:type="gmfgen:MetamodelType"
        editHelperClassName="ComponentEditHelper"/>
    <viewmap
        xsi:type="gmfgen:FigureViewmap"
        figureQualifiedClassName="org.eclipse.draw2d.FreeformLayer"/>
    <containsShortcutsTo>scl</containsShortcutsTo>
    <shortcutsProvidedFor>scl</shortcutsProvidedFor>
    <domainDiagramElement
        href="scl.genmodel#//scl/Component"/>
    <childNodes
        xsi:type="gmfgen:GenChildSideAffixedNode"
        visualID="3001"
        editPartClassName="Port2EditPart"
        itemSemanticEditPolicyClassName="Port2ItemSemanticEditPolicy"
        canonicalEditPolicyClassName="Port2CanonicalEditPolicy"
        graphicalNodeEditPolicyClassName="Port2GraphicalNodeEditPolicy"
        createCommandClassName="Port2CreateCommand"
        containers="//@diagram/@topLevelNodes.0 //@diagram/@childNodes.1"
        preferredSideName="NORTH">
      <diagramRunTimeClass
          href="platform:/plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <elementType
          xsi:type="gmfgen:MetamodelType"
          editHelperClassName="PortEditHelper"/>
      <viewmap
          xsi:type="gmfgen:InnerClassViewmap"
          className="PortFigure"
          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class PortFigure extends org.eclipse.draw2d.Ellipse {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public PortFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setPreferredSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(15)&#xA;, getMapMode().DPtoLP(15)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;">
        <attributes
            xsi:type="gmfgen:DefaultSizeAttributes"
            width="15"
            height="15"/>
      </viewmap>
      <modelFacet>
        <metaClass
            href="scl.genmodel#//scl/Port"/>
        <containmentMetaFeature
            href="scl.genmodel#//scl/Component/ports"/>
        <childMetaFeature
            href="scl.genmodel#//scl/Component/ports"/>
      </modelFacet>
      <labels
          xsi:type="gmfgen:GenExternalNodeLabel"
          visualID="5001"
          editPartClassName="PortName2EditPart"
          itemSemanticEditPolicyClassName="PortName2ItemSemanticEditPolicy">
        <diagramRunTimeClass
            href="platform:/plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
        <viewmap
            xsi:type="gmfgen:InnerClassViewmap"
            className="PortLabelFigure"
            classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class PortLabelFigure extends org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public PortLabelFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setText(&quot;Port&quot;);&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;"/>
        <modelFacet
            xsi:type="gmfgen:FeatureLabelModelFacet"
            parser="//@labelParsers/@implementations.0">
          <metaFeatures
              href="scl.genmodel#//scl/Port/name"/>
        </modelFacet>
      </labels>
    </childNodes>
    <childNodes
        visualID="3002"
        editPartClassName="Component3EditPart"
        itemSemanticEditPolicyClassName="Component3ItemSemanticEditPolicy"
        canonicalEditPolicyClassName="Component3CanonicalEditPolicy"
        childNodes="//@diagram/@childNodes.0"
        compartments="//@diagram/@compartments.1"
        graphicalNodeEditPolicyClassName="Component2GraphicalNodeEditPolicy"
        createCommandClassName="Component2CreateCommand"
        containers="//@diagram/@compartments.1 //@diagram/@compartments.0">
      <diagramRunTimeClass
          href="platform:/plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <elementType
          xsi:type="gmfgen:SpecializationType"
          metamodelType="//@diagram/@elementType"/>
      <viewmap
          xsi:type="gmfgen:InnerClassViewmap"
          className="ComponentFigure"
          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class ComponentFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureComponentLabelFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fComponentSubcomponentsCompartmentFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public ComponentFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;&#x9;this.setBackgroundColor(THIS_BACK&#xA;);&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureComponentLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;&#xA;fFigureComponentLabelFigure.setText(&quot;Component&quot;);&#xA;fFigureComponentLabelFigure.setMaximumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(10000)&#xA;, getMapMode().DPtoLP(50)&#xA;));&#xA;&#xA;this.add(fFigureComponentLabelFigure);&#xA;&#xA;&#xA;&#xA;fComponentSubcomponentsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;&#xA;fComponentSubcomponentsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fComponentSubcomponentsCompartmentFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureComponentLabelFigure() {&#xA;&#x9;&#x9;return fFigureComponentLabelFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getComponentSubcomponentsCompartmentFigure() {&#xA;&#x9;&#x9;return fComponentSubcomponentsCompartmentFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;/**&#xA; * @generated&#xA; */&#xA;static final org.eclipse.swt.graphics.Color THIS_BACK = new org.eclipse.swt.graphics.Color(null, 232, 232, 232);&#xA;&#xA;">
        <attributes
            xsi:type="gmfgen:StyleAttributes"
            fixedBackground="true"/>
      </viewmap>
      <behaviour
          xsi:type="gmfgen:OpenDiagramBehaviour"/>
      <modelFacet>
        <metaClass
            href="scl.genmodel#//scl/Component"/>
        <containmentMetaFeature
            href="scl.genmodel#//scl/Component/subcomponents"/>
        <childMetaFeature
            href="scl.genmodel#//scl/Component/subcomponents"/>
      </modelFacet>
      <labels
          visualID="5002"
          editPartClassName="ComponentName2EditPart"
          itemSemanticEditPolicyClassName="ComponentName2ItemSemanticEditPolicy"
          elementIcon="true">
        <diagramRunTimeClass
            href="platform:/plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
        <viewmap
            xsi:type="gmfgen:ParentAssignedViewmap"
            getterName="getFigureComponentLabelFigure"
            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>
        <modelFacet
            xsi:type="gmfgen:FeatureLabelModelFacet"
            parser="//@labelParsers/@implementations.0">
          <metaFeatures
              href="scl.genmodel#//scl/Component/name"/>
        </modelFacet>
      </labels>
    </childNodes>
    <topLevelNodes
        visualID="2001"
        editPartClassName="Component2EditPart"
        itemSemanticEditPolicyClassName="Component2ItemSemanticEditPolicy"
        canonicalEditPolicyClassName="Component2CanonicalEditPolicy"
        childNodes="//@diagram/@childNodes.0"
        compartments="//@diagram/@compartments.0"
        graphicalNodeEditPolicyClassName="ComponentGraphicalNodeEditPolicy"
        createCommandClassName="ComponentCreateCommand">
      <diagramRunTimeClass
          href="platform:/plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <elementType
          xsi:type="gmfgen:SpecializationType"
          metamodelType="//@diagram/@elementType"/>
      <viewmap
          xsi:type="gmfgen:InnerClassViewmap"
          className="ComponentFigure"
          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class ComponentFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureComponentLabelFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fComponentSubcomponentsCompartmentFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public ComponentFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;&#x9;this.setBackgroundColor(THIS_BACK&#xA;);&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureComponentLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;&#xA;fFigureComponentLabelFigure.setText(&quot;Component&quot;);&#xA;fFigureComponentLabelFigure.setMaximumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(10000)&#xA;, getMapMode().DPtoLP(50)&#xA;));&#xA;&#xA;this.add(fFigureComponentLabelFigure);&#xA;&#xA;&#xA;&#xA;fComponentSubcomponentsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;&#xA;fComponentSubcomponentsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fComponentSubcomponentsCompartmentFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureComponentLabelFigure() {&#xA;&#x9;&#x9;return fFigureComponentLabelFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getComponentSubcomponentsCompartmentFigure() {&#xA;&#x9;&#x9;return fComponentSubcomponentsCompartmentFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;/**&#xA; * @generated&#xA; */&#xA;static final org.eclipse.swt.graphics.Color THIS_BACK = new org.eclipse.swt.graphics.Color(null, 232, 232, 232);&#xA;&#xA;">
        <attributes
            xsi:type="gmfgen:StyleAttributes"
            fixedBackground="true"/>
      </viewmap>
      <behaviour
          xsi:type="gmfgen:OpenDiagramBehaviour"/>
      <behaviour
          xsi:type="gmfgen:OpenDiagramBehaviour"/>
      <modelFacet>
        <metaClass
            href="scl.genmodel#//scl/Component"/>
        <containmentMetaFeature
            href="scl.genmodel#//scl/Component/subcomponents"/>
        <childMetaFeature
            href="scl.genmodel#//scl/Component/subcomponents"/>
      </modelFacet>
      <labels
          visualID="5003"
          editPartClassName="ComponentNameEditPart"
          itemSemanticEditPolicyClassName="ComponentNameItemSemanticEditPolicy"
          elementIcon="true">
        <diagramRunTimeClass
            href="platform:/plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
        <viewmap
            xsi:type="gmfgen:ParentAssignedViewmap"
            getterName="getFigureComponentLabelFigure"
            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>
        <modelFacet
            xsi:type="gmfgen:FeatureLabelModelFacet"
            parser="//@labelParsers/@implementations.0">
          <metaFeatures
              href="scl.genmodel#//scl/Component/name"/>
        </modelFacet>
      </labels>
    </topLevelNodes>
    <topLevelNodes
        visualID="2002"
        editPartClassName="PortEditPart"
        itemSemanticEditPolicyClassName="PortItemSemanticEditPolicy"
        canonicalEditPolicyClassName="PortCanonicalEditPolicy"
        graphicalNodeEditPolicyClassName="PortGraphicalNodeEditPolicy"
        createCommandClassName="PortCreateCommand">
      <diagramRunTimeClass
          href="platform:/plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <elementType
          xsi:type="gmfgen:SpecializationType"
          metamodelType="//@diagram/@childNodes.0/@elementType"/>
      <viewmap
          xsi:type="gmfgen:InnerClassViewmap"
          className="PortFigure"
          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class PortFigure extends org.eclipse.draw2d.Ellipse {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public PortFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setPreferredSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(15)&#xA;, getMapMode().DPtoLP(15)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;">
        <attributes
            xsi:type="gmfgen:DefaultSizeAttributes"
            width="15"
            height="15"/>
      </viewmap>
      <modelFacet>
        <metaClass
            href="scl.genmodel#//scl/Port"/>
        <containmentMetaFeature
            href="scl.genmodel#//scl/Component/ports"/>
        <childMetaFeature
            href="scl.genmodel#//scl/Component/ports"/>
      </modelFacet>
      <labels
          xsi:type="gmfgen:GenExternalNodeLabel"
          visualID="5004"
          editPartClassName="PortNameEditPart"
          itemSemanticEditPolicyClassName="PortNameItemSemanticEditPolicy">
        <diagramRunTimeClass
            href="platform:/plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
        <viewmap
            xsi:type="gmfgen:InnerClassViewmap"
            className="PortLabelFigure"
            classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class PortLabelFigure extends org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public PortLabelFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setText(&quot;Port&quot;);&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;"/>
        <modelFacet
            xsi:type="gmfgen:FeatureLabelModelFacet"
            parser="//@labelParsers/@implementations.0">
          <metaFeatures
              href="scl.genmodel#//scl/Port/name"/>
        </modelFacet>
      </labels>
    </topLevelNodes>
    <links
        visualID="4001"
        editPartClassName="ConnectorEditPart"
        itemSemanticEditPolicyClassName="ConnectorItemSemanticEditPolicy"
        createCommandClassName="ConnectorCreateCommand"
        reorientCommandClassName="ConnectorReorientCommand">
      <diagramRunTimeClass
          href="platform:/plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Edge"/>
      <elementType
          xsi:type="gmfgen:MetamodelType"
          editHelperClassName="ConnectorEditHelper"/>
      <viewmap
          xsi:type="gmfgen:InnerClassViewmap"
          className="ConnectorFigure"
          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class ConnectorFigure extends org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public ConnectorFigure() {&#xA;&#x9;&#x9;&#xA;&#x9;&#x9;setTargetDecoration(createTargetDecoration());&#xA;&#x9;}&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RotatableDecoration createTargetDecoration() {&#xA;&#x9;&#x9;org.eclipse.draw2d.PolylineDecoration df = new org.eclipse.draw2d.PolylineDecoration();&#xA;&#x9;&#x9;return df;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;"/>
      <modelFacet
          xsi:type="gmfgen:TypeLinkModelFacet">
        <metaClass
            href="scl.genmodel#//scl/Connector"/>
        <containmentMetaFeature
            href="scl.genmodel#//scl/Port/outgoing"/>
        <childMetaFeature
            href="scl.genmodel#//scl/Port/outgoing"/>
        <sourceMetaFeature
            href="scl.genmodel#//scl/Connector/from"/>
        <targetMetaFeature
            href="scl.genmodel#//scl/Connector/to"/>
      </modelFacet>
      <labels
          visualID="6001"
          editPartClassName="ConnectorNameEditPart"
          itemSemanticEditPolicyClassName="ConnectorNameItemSemanticEditPolicy">
        <diagramRunTimeClass
            href="platform:/plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
        <viewmap
            xsi:type="gmfgen:InnerClassViewmap"
            className="ConnectorLabelFigure"
            classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class ConnectorLabelFigure extends org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public ConnectorLabelFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setText(&quot;Connector&quot;);&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;">
          <attributes
              xsi:type="gmfgen:LabelOffsetAttributes"
              y="40"/>
        </viewmap>
        <modelFacet
            xsi:type="gmfgen:FeatureLabelModelFacet"
            parser="//@labelParsers/@implementations.0">
          <metaFeatures
              href="scl.genmodel#//scl/Connector/name"/>
        </modelFacet>
      </labels>
    </links>
    <compartments
        visualID="7001"
        editPartClassName="ComponentComponentSubcomponentsCompartmentEditPart"
        itemSemanticEditPolicyClassName="ComponentComponentSubcomponentsCompartmentItemSemanticEditPolicy"
        canonicalEditPolicyClassName="ComponentComponentSubcomponentsCompartmentCanonicalEditPolicy"
        childNodes="//@diagram/@childNodes.1"
        title="ComponentSubcomponentsCompartment"
        needsTitle="false"
        node="//@diagram/@topLevelNodes.0"
        listLayout="false">
      <diagramRunTimeClass
          href="platform:/plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <viewmap
          xsi:type="gmfgen:ParentAssignedViewmap"
          getterName="getComponentSubcomponentsCompartmentFigure"
          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>
    </compartments>
    <compartments
        visualID="7002"
        editPartClassName="ComponentComponentSubcomponentsCompartment2EditPart"
        itemSemanticEditPolicyClassName="ComponentComponentSubcomponentsCompartment2ItemSemanticEditPolicy"
        canonicalEditPolicyClassName="ComponentComponentSubcomponentsCompartment2CanonicalEditPolicy"
        childNodes="//@diagram/@childNodes.1"
        title="ComponentSubcomponentsCompartment"
        needsTitle="false"
        node="//@diagram/@childNodes.1"
        listLayout="false">
      <diagramRunTimeClass
          href="platform:/plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <viewmap
          xsi:type="gmfgen:ParentAssignedViewmap"
          getterName="getComponentSubcomponentsCompartmentFigure"
          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>
    </compartments>
    <palette>
      <groups
          title="Objects"
          collapse="true">
        <entries
            xsi:type="gmfgen:ToolEntry"
            title="Component"
            description="Create new Component"
            genNodes="//@diagram/@topLevelNodes.0 //@diagram/@childNodes.1"/>
        <entries
            xsi:type="gmfgen:ToolEntry"
            title="Port"
            description="Create new Port"
            genNodes="//@diagram/@childNodes.0 //@diagram/@topLevelNodes.1"/>
      </groups>
      <groups
          title="Connections"
          collapse="true">
        <entries
            xsi:type="gmfgen:ToolEntry"
            title="Connector"
            description="Create new Connector"
            genLinks="//@diagram/@links.0"/>
      </groups>
    </palette>
    <preferencePages
        xsi:type="gmfgen:GenStandardPreferencePage"
        iD="org.eclipse.epsilon.eugenia.examples.scl.diagram.general"
        name="Scl Diagram">
      <children
          xsi:type="gmfgen:GenStandardPreferencePage"
          iD="org.eclipse.epsilon.eugenia.examples.scl.diagram.appearance"
          name="Appearance"
          kind="Appearance"/>
      <children
          xsi:type="gmfgen:GenStandardPreferencePage"
          iD="org.eclipse.epsilon.eugenia.examples.scl.diagram.connections"
          name="Connections"
          kind="Connections"/>
      <children
          xsi:type="gmfgen:GenStandardPreferencePage"
          iD="org.eclipse.epsilon.eugenia.examples.scl.diagram.printing"
          name="Printing"
          kind="Printing"/>
      <children
          xsi:type="gmfgen:GenStandardPreferencePage"
          iD="org.eclipse.epsilon.eugenia.examples.scl.diagram.rulersAndGrid"
          name="Rulers And Grid"
          kind="RulersAndGrid"/>
    </preferencePages>
  </diagram>
  <plugin
      printingEnabled="true">
    <requiredPlugins>org.eclipse.gmf.tooling.runtime</requiredPlugins>
    <requiredPlugins>org.eclipse.draw2d</requiredPlugins>
    <requiredPlugins>org.eclipse.gmf.runtime.draw2d.ui</requiredPlugins>
  </plugin>
  <editor/>
  <navigator>
    <childReferences
        child="//@diagram"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.0"
        child="//@diagram/@childNodes.0"/>
    <childReferences
        parent="//@diagram/@childNodes.1"
        child="//@diagram/@childNodes.0"/>
    <childReferences
        parent="//@diagram/@childNodes.1"
        child="//@diagram/@childNodes.1"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.0"
        child="//@diagram/@childNodes.1"/>
    <childReferences
        parent="//@diagram"
        child="//@diagram/@topLevelNodes.0"/>
    <childReferences
        parent="//@diagram"
        child="//@diagram/@topLevelNodes.1"/>
    <childReferences
        parent="//@diagram"
        child="//@diagram/@links.0"
        groupName="links"
        groupIcon="icons/linksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.0"
        child="//@diagram/@topLevelNodes.1"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.1"
        child="//@diagram/@links.0"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.0"
        child="//@diagram/@childNodes.0"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@childNodes.0"
        child="//@diagram/@links.0"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.0"
        child="//@diagram/@topLevelNodes.1"
        referenceType="in_source"
        groupName="source"
        groupIcon="icons/linkSourceNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.1"
        child="//@diagram/@links.0"
        referenceType="out_target"
        groupName="outgoing links"
        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.0"
        child="//@diagram/@childNodes.0"
        referenceType="in_source"
        groupName="source"
        groupIcon="icons/linkSourceNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@childNodes.0"
        child="//@diagram/@links.0"
        referenceType="out_target"
        groupName="outgoing links"
        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>
  </navigator>
  <diagramUpdater/>
  <propertySheet>
    <tabs
        xsi:type="gmfgen:GenStandardPropertyTab"
        iD="appearance"/>
    <tabs
        xsi:type="gmfgen:GenStandardPropertyTab"
        iD="diagram"/>
    <tabs
        xsi:type="gmfgen:GenCustomPropertyTab"
        iD="domain"
        label="Core">
      <filter
          xsi:type="gmfgen:TypeTabFilter">
        <types>org.eclipse.gmf.runtime.notation.View</types>
        <types>org.eclipse.gef.EditPart</types>
        <generatedTypes>abstractNavigatorItem</generatedTypes>
      </filter>
    </tabs>
  </propertySheet>
  <domainGenModel
      href="scl.genmodel#/"/>
  <labelParsers
      extensibleViaService="true">
    <implementations
        xsi:type="gmfgen:PredefinedParser"
        uses="//@diagram/@childNodes.0/@labels.0/@modelFacet //@diagram/@childNodes.1/@labels.0/@modelFacet //@diagram/@topLevelNodes.0/@labels.0/@modelFacet //@diagram/@topLevelNodes.1/@labels.0/@modelFacet //@diagram/@links.0/@labels.0/@modelFacet"/>
  </labelParsers>
  <contextMenus
      context="//@diagram">
    <items
        xsi:type="gmfgen:LoadResourceAction"/>
  </contextMenus>
</gmfgen:GenEditorGenerator>
