<?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/2005/GenModel" packageNamePrefix="org.eclipse.epf.diagram.add"
    modelID="ADD"
    sameFileForDiagramAndModel="true"
    diagramFileExtension="add"
    templateDirectory="">
  <diagram
      visualID="79"
      editPartClassName="ActivityDetailDiagramEditPart"
      itemSemanticEditPolicyClassName="ActivityDetailDiagramItemSemanticEditPolicy"
      notationViewFactoryClassName="ActivityDetailDiagramViewFactory"
      iconProviderPriority="Low"
      canonicalEditPolicyClassName="ActivityDetailDiagramCanonicalEditPolicy">
    <diagramRunTimeClass
        href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Diagram"/>
    <elementType
        xsi:type="gmfgen:MetamodelType"
        editHelperClassName="ActivityDetailDiagramEditHelper"/>
    <viewmap
        xsi:type="gmfgen:FigureViewmap"
        figureQualifiedClassName="org.eclipse.draw2d.FreeformLayer"/>
    <domainDiagramElement
        href="../../org.eclipse.epf.diagram.model/model/diagram.genmodel#//model/ActivityDetailDiagram"/>
    <childNodes
        visualID="2001"
        editPartClassName="RoleNodeEditPart"
        itemSemanticEditPolicyClassName="RoleNodeItemSemanticEditPolicy"
        notationViewFactoryClassName="RoleNodeViewFactory"
        canonicalEditPolicyClassName="RoleNodeCanonicalEditPolicy"
        graphicalNodeEditPolicyClassName="RoleNodeGraphicalNodeEditPolicy"
        containers="//@diagram/@topLevelNodes.0">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <elementType
          xsi:type="gmfgen:MetamodelType"
          editHelperClassName="RoleNodeEditHelper"/>
      <viewmap
          xsi:type="gmfgen:InnerClassViewmap"
          className="RoleNodeFigure"
          classBody="&#xD;&#xA;&#xD;&#xA;/**&#xD;&#xA; * @generated&#xD;&#xA; */&#xD;&#xA;public class RoleNodeFigure extends org.eclipse.draw2d.RectangleFigure {&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public RoleNodeFigure() {&#x9;&#xD;&#xA;&#x9;&#x9;&#xD;&#xA;&#xD;&#xA;&#x9;&#x9;&#xD;&#xA;&#x9;&#x9;this.setOutline(false);&#xD;&#xA;&#x9;&#x9;this.setBackgroundColor(ROLENODEFIGURE_BACK&#xD;&#xA;&#xD;&#xA;);&#xD;&#xA;&#x9;&#x9;createContents();&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private void createContents(){&#xD;&#xA;&#x9;&#x9;org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig_0 = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel();&#xD;&#xA;fig_0.setText(&quot;&lt;...>&quot;);&#xD;&#xA;&#x9;&#x9;fig_0.setFont(&#xD;&#xA;&#x9;&#x9;&#x9;ROLENODENAMEFIGURE_FONT);&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;&#x9;setFigureRoleNodeNameFigure(fig_0);&#xD;&#xA;&#x9;&#x9;&#xD;&#xA;&#x9;&#x9;Object layData0 = null;&#xD;&#xA;&#xD;&#xA;&#x9;&#x9;this.add(fig_0, layData0);&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;&#xD;&#xA;&#x9;&#x9;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fRoleNodeNameFigure; &#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel getFigureRoleNodeNameFigure() {&#xD;&#xA;&#x9;&#x9;return fRoleNodeNameFigure;&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private void setFigureRoleNodeNameFigure(org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig){&#xD;&#xA;&#x9;&#x9;fRoleNodeNameFigure = fig;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private boolean myUseLocalCoordinates = false;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;protected boolean useLocalCoordinates() {&#xD;&#xA;&#x9;&#x9;return myUseLocalCoordinates;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;protected void setUseLocalCoordinates(boolean useLocalCoordinates) {&#xD;&#xA;&#x9;&#x9;myUseLocalCoordinates = useLocalCoordinates;&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;&#xD;&#xA;&#xD;&#xA;}&#xD;&#xA;&#x9;&#xD;&#xA;&#x9;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public static final org.eclipse.swt.graphics.Color ROLENODEFIGURE_BACK = new org.eclipse.swt.graphics.Color(null, 255, 255, 156);&#xD;&#xA;&#x9;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public static final org.eclipse.swt.graphics.Font ROLENODENAMEFIGURE_FONT = new org.eclipse.swt.graphics.Font(org.eclipse.swt.widgets.Display.getCurrent(), &quot;Arial&quot;, 8, org.eclipse.swt.SWT.NORMAL);&#xD;&#xA;">
        <attributes
            xsi:type="gmfgen:StyleAttributes"
            fixedBackground="true"/>
        <requiredPluginIDs>org.eclipse.draw2d</requiredPluginIDs>
        <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
      </viewmap>
      <modelFacet>
        <metaClass
            href="../../org.eclipse.epf.diagram.model/model/diagram.genmodel#//model/RoleNode"/>
        <containmentMetaFeature
            href="../../org.eclipse.epf.diagram.model/model/diagram.genmodel#//model/NodeContainer/nodes"/>
        <childMetaFeature
            href="../../org.eclipse.epf.diagram.model/model/diagram.genmodel#//model/NodeContainer/nodes"/>
      </modelFacet>
      <labels
          visualID="4001"
          editPartClassName="RoleNodeNameEditPart"
          itemSemanticEditPolicyClassName="RoleNodeNameItemSemanticEditPolicy"
          notationViewFactoryClassName="RoleNodeNameViewFactory">
        <diagramRunTimeClass
            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
        <viewmap
            xsi:type="gmfgen:ParentAssignedViewmap"
            getterName="getFigureRoleNodeNameFigure"
            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel">
          <attributes
              xsi:type="gmfgen:StyleAttributes"
              fixedFont="true"/>
        </viewmap>
        <modelFacet
            xsi:type="gmfgen:FeatureLabelModelFacet">
          <metaFeature
              href="../../org.eclipse.epf.diagram.model/model/diagram.genmodel#//model/NamedNode/name"/>
        </modelFacet>
      </labels>
    </childNodes>
    <childNodes
        visualID="2002"
        editPartClassName="TaskNodeEditPart"
        itemSemanticEditPolicyClassName="TaskNodeItemSemanticEditPolicy"
        notationViewFactoryClassName="TaskNodeViewFactory"
        canonicalEditPolicyClassName="TaskNodeCanonicalEditPolicy"
        graphicalNodeEditPolicyClassName="TaskNodeGraphicalNodeEditPolicy"
        containers="//@diagram/@topLevelNodes.0">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <elementType
          xsi:type="gmfgen:MetamodelType"
          editHelperClassName="TaskNodeEditHelper"/>
      <viewmap
          xsi:type="gmfgen:InnerClassViewmap"
          className="TaskNodeFigure"
          classBody="&#xD;&#xA;&#xD;&#xA;/**&#xD;&#xA; * @generated&#xD;&#xA; */&#xD;&#xA;public class TaskNodeFigure extends org.eclipse.draw2d.RectangleFigure {&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public TaskNodeFigure() {&#x9;&#xD;&#xA;&#x9;&#x9;&#xD;&#xA;&#xD;&#xA;&#x9;&#x9;&#xD;&#xA;&#x9;&#x9;this.setOutline(false);&#xD;&#xA;&#x9;&#x9;this.setLineWidth(0);&#xD;&#xA;&#x9;&#x9;this.setBackgroundColor(TASKNODEFIGURE_BACK&#xD;&#xA;&#xD;&#xA;);&#xD;&#xA;&#x9;&#x9;createContents();&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private void createContents(){&#xD;&#xA;&#x9;&#x9;org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig_0 = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel();&#xD;&#xA;fig_0.setText(&quot;&lt;...>&quot;);&#xD;&#xA;&#x9;&#x9;fig_0.setFont(&#xD;&#xA;&#x9;&#x9;&#x9;TASKNODENAMEFIGURE_FONT);&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;&#x9;setFigureTaskNodeNameFigure(fig_0);&#xD;&#xA;&#x9;&#x9;&#xD;&#xA;&#x9;&#x9;Object layData0 = null;&#xD;&#xA;&#xD;&#xA;&#x9;&#x9;this.add(fig_0, layData0);&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;&#xD;&#xA;&#x9;&#x9;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fTaskNodeNameFigure; &#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel getFigureTaskNodeNameFigure() {&#xD;&#xA;&#x9;&#x9;return fTaskNodeNameFigure;&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private void setFigureTaskNodeNameFigure(org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig){&#xD;&#xA;&#x9;&#x9;fTaskNodeNameFigure = fig;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private boolean myUseLocalCoordinates = false;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;protected boolean useLocalCoordinates() {&#xD;&#xA;&#x9;&#x9;return myUseLocalCoordinates;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;protected void setUseLocalCoordinates(boolean useLocalCoordinates) {&#xD;&#xA;&#x9;&#x9;myUseLocalCoordinates = useLocalCoordinates;&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;&#xD;&#xA;&#xD;&#xA;}&#xD;&#xA;&#x9;&#xD;&#xA;&#x9;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public static final org.eclipse.swt.graphics.Font TASKNODENAMEFIGURE_FONT = new org.eclipse.swt.graphics.Font(org.eclipse.swt.widgets.Display.getCurrent(), &quot;Arial&quot;, 8, org.eclipse.swt.SWT.NORMAL);&#xD;&#xA;&#x9;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public static final org.eclipse.swt.graphics.Color TASKNODEFIGURE_BACK = new org.eclipse.swt.graphics.Color(null, 255, 255, 156);&#xD;&#xA;">
        <attributes
            xsi:type="gmfgen:StyleAttributes"
            fixedBackground="true"/>
        <requiredPluginIDs>org.eclipse.draw2d</requiredPluginIDs>
        <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
      </viewmap>
      <modelFacet>
        <metaClass
            href="../../org.eclipse.epf.diagram.model/model/diagram.genmodel#//model/TaskNode"/>
        <containmentMetaFeature
            href="../../org.eclipse.epf.diagram.model/model/diagram.genmodel#//model/NodeContainer/nodes"/>
        <childMetaFeature
            href="../../org.eclipse.epf.diagram.model/model/diagram.genmodel#//model/NodeContainer/nodes"/>
      </modelFacet>
      <labels
          visualID="4002"
          editPartClassName="TaskNodeNameEditPart"
          itemSemanticEditPolicyClassName="TaskNodeNameItemSemanticEditPolicy"
          notationViewFactoryClassName="TaskNodeNameViewFactory">
        <diagramRunTimeClass
            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
        <viewmap
            xsi:type="gmfgen:ParentAssignedViewmap"
            getterName="getFigureTaskNodeNameFigure"
            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel">
          <attributes
              xsi:type="gmfgen:StyleAttributes"
              fixedFont="true"/>
        </viewmap>
        <modelFacet
            xsi:type="gmfgen:FeatureLabelModelFacet">
          <metaFeature
              href="../../org.eclipse.epf.diagram.model/model/diagram.genmodel#//model/NamedNode/name"/>
        </modelFacet>
      </labels>
    </childNodes>
    <childNodes
        visualID="2003"
        editPartClassName="WorkProductDescriptorNodeEditPart"
        itemSemanticEditPolicyClassName="WorkProductDescriptorNodeItemSemanticEditPolicy"
        notationViewFactoryClassName="WorkProductDescriptorNodeViewFactory"
        canonicalEditPolicyClassName="WorkProductDescriptorNodeCanonicalEditPolicy"
        graphicalNodeEditPolicyClassName="WorkProductDescriptorNodeGraphicalNodeEditPolicy"
        containers="//@diagram/@topLevelNodes.1">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <elementType
          xsi:type="gmfgen:MetamodelType"
          editHelperClassName="WorkProductDescriptorNodeEditHelper"/>
      <viewmap
          xsi:type="gmfgen:InnerClassViewmap"
          className="WorkProductDescriptorNodeFigure"
          classBody="&#xD;&#xA;&#xD;&#xA;/**&#xD;&#xA; * @generated&#xD;&#xA; */&#xD;&#xA;public class WorkProductDescriptorNodeFigure extends org.eclipse.draw2d.RectangleFigure {&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public WorkProductDescriptorNodeFigure() {&#x9;&#xD;&#xA;&#x9;&#x9;&#xD;&#xA;&#xD;&#xA;&#x9;&#x9;&#xD;&#xA;&#x9;&#x9;this.setOutline(false);&#xD;&#xA;&#x9;&#x9;this.setBackgroundColor(WORKPRODUCTDESCRIPTORNODEFIGURE_BACK&#xD;&#xA;&#xD;&#xA;);&#xD;&#xA;&#x9;&#x9;createContents();&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private void createContents(){&#xD;&#xA;&#x9;&#x9;org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig_0 = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel();&#xD;&#xA;fig_0.setText(&quot;&lt;...>&quot;);&#xD;&#xA;&#x9;&#x9;fig_0.setFont(&#xD;&#xA;&#x9;&#x9;&#x9;WORKPRODUCTNODENAMEFIGURE_FONT);&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;&#x9;setFigureWorkProductNodeNameFigure(fig_0);&#xD;&#xA;&#x9;&#x9;&#xD;&#xA;&#x9;&#x9;Object layData0 = null;&#xD;&#xA;&#xD;&#xA;&#x9;&#x9;this.add(fig_0, layData0);&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;&#xD;&#xA;&#x9;&#x9;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fWorkProductNodeNameFigure; &#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel getFigureWorkProductNodeNameFigure() {&#xD;&#xA;&#x9;&#x9;return fWorkProductNodeNameFigure;&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private void setFigureWorkProductNodeNameFigure(org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig){&#xD;&#xA;&#x9;&#x9;fWorkProductNodeNameFigure = fig;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private boolean myUseLocalCoordinates = false;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;protected boolean useLocalCoordinates() {&#xD;&#xA;&#x9;&#x9;return myUseLocalCoordinates;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;protected void setUseLocalCoordinates(boolean useLocalCoordinates) {&#xD;&#xA;&#x9;&#x9;myUseLocalCoordinates = useLocalCoordinates;&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;&#xD;&#xA;&#xD;&#xA;}&#xD;&#xA;&#x9;&#xD;&#xA;&#x9;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public static final org.eclipse.swt.graphics.Font WORKPRODUCTNODENAMEFIGURE_FONT = new org.eclipse.swt.graphics.Font(org.eclipse.swt.widgets.Display.getCurrent(), &quot;Arial&quot;, 8, org.eclipse.swt.SWT.NORMAL);&#xD;&#xA;&#x9;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public static final org.eclipse.swt.graphics.Color WORKPRODUCTDESCRIPTORNODEFIGURE_BACK = new org.eclipse.swt.graphics.Color(null, 255, 255, 205);&#xD;&#xA;">
        <attributes
            xsi:type="gmfgen:StyleAttributes"
            fixedBackground="true"/>
        <requiredPluginIDs>org.eclipse.draw2d</requiredPluginIDs>
        <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
      </viewmap>
      <modelFacet>
        <metaClass
            href="../../org.eclipse.epf.diagram.model/model/diagram.genmodel#//model/WorkProductDescriptorNode"/>
        <containmentMetaFeature
            href="../../org.eclipse.epf.diagram.model/model/diagram.genmodel#//model/NodeContainer/nodes"/>
        <childMetaFeature
            href="../../org.eclipse.epf.diagram.model/model/diagram.genmodel#//model/NodeContainer/nodes"/>
      </modelFacet>
      <labels
          visualID="4003"
          editPartClassName="WorkProductDescriptorNodeNameEditPart"
          itemSemanticEditPolicyClassName="WorkProductDescriptorNodeNameItemSemanticEditPolicy"
          notationViewFactoryClassName="WorkProductDescriptorNodeNameViewFactory">
        <diagramRunTimeClass
            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
        <viewmap
            xsi:type="gmfgen:ParentAssignedViewmap"
            getterName="getFigureWorkProductNodeNameFigure"
            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel">
          <attributes
              xsi:type="gmfgen:StyleAttributes"
              fixedFont="true"/>
        </viewmap>
        <modelFacet
            xsi:type="gmfgen:FeatureLabelModelFacet">
          <metaFeature
              href="../../org.eclipse.epf.diagram.model/model/diagram.genmodel#//model/NamedNode/name"/>
        </modelFacet>
      </labels>
    </childNodes>
    <topLevelNodes
        visualID="1001"
        editPartClassName="RoleTaskCompositeEditPart"
        itemSemanticEditPolicyClassName="RoleTaskCompositeItemSemanticEditPolicy"
        notationViewFactoryClassName="RoleTaskCompositeViewFactory"
        childNodes="//@diagram/@childNodes.0 //@diagram/@childNodes.1"
        canonicalEditPolicyClassName="RoleTaskCompositeCanonicalEditPolicy"
        compartments="//@diagram/@compartments.0"
        graphicalNodeEditPolicyClassName="RoleTaskCompositeGraphicalNodeEditPolicy">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <elementType
          xsi:type="gmfgen:MetamodelType"
          editHelperClassName="RoleTaskCompositeEditHelper"/>
      <viewmap
          xsi:type="gmfgen:InnerClassViewmap"
          layoutType="TOOLBAR_LAYOUT"
          className="RoleTaskCompositeFigure"
          classBody="&#xD;&#xA;&#xD;&#xA;/**&#xD;&#xA; * @generated&#xD;&#xA; */&#xD;&#xA;public class RoleTaskCompositeFigure extends org.eclipse.draw2d.RectangleFigure {&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public RoleTaskCompositeFigure() {&#x9;&#xD;&#xA;&#x9;&#x9;&#xD;&#xA;&#x9;&#x9;org.eclipse.draw2d.ToolbarLayout myGenLayoutManager = new org.eclipse.draw2d.ToolbarLayout();&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;myGenLayoutManager.setStretchMinorAxis(false);&#xD;&#xA;&#x9;&#x9;myGenLayoutManager.setMinorAlignment(org.eclipse.draw2d.ToolbarLayout.ALIGN_CENTER);&#x9;&#x9;&#xD;&#xA;&#x9;&#x9;myGenLayoutManager.setSpacing(5);&#xD;&#xA;&#x9;&#x9;myGenLayoutManager.setVertical(false);&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;&#xD;&#xA;&#x9;&#x9;this.setLayoutManager(myGenLayoutManager);&#xD;&#xA;&#xD;&#xA;&#x9;&#x9;&#xD;&#xA;&#x9;&#x9;this.setBackgroundColor(ROLETASKCOMPOSITEFIGURE_BACK&#xD;&#xA;&#xD;&#xA;);&#xD;&#xA;&#x9;&#x9;this.setBorder(&#x9;&#xD;&#xA;new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(0), getMapMode().DPtoLP(0), getMapMode().DPtoLP(0), getMapMode().DPtoLP(0))&#xD;&#xA;);&#xD;&#xA;&#x9;&#x9;createContents();&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private void createContents(){&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private boolean myUseLocalCoordinates = false;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;protected boolean useLocalCoordinates() {&#xD;&#xA;&#x9;&#x9;return myUseLocalCoordinates;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;protected void setUseLocalCoordinates(boolean useLocalCoordinates) {&#xD;&#xA;&#x9;&#x9;myUseLocalCoordinates = useLocalCoordinates;&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;&#xD;&#xA;&#xD;&#xA;}&#xD;&#xA;&#x9;&#xD;&#xA;&#x9;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public static final org.eclipse.swt.graphics.Color ROLETASKCOMPOSITEFIGURE_BACK = new org.eclipse.swt.graphics.Color(null, 255, 255, 156);&#xD;&#xA;">
        <attributes
            xsi:type="gmfgen:StyleAttributes"
            fixedBackground="true"/>
        <requiredPluginIDs>org.eclipse.draw2d</requiredPluginIDs>
        <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
      </viewmap>
      <modelFacet>
        <metaClass
            href="../../org.eclipse.epf.diagram.model/model/diagram.genmodel#//model/RoleTaskComposite"/>
        <containmentMetaFeature
            href="../../org.eclipse.epf.diagram.model/model/diagram.genmodel#//model/NodeContainer/nodes"/>
        <childMetaFeature
            href="../../org.eclipse.epf.diagram.model/model/diagram.genmodel#//model/NodeContainer/nodes"/>
      </modelFacet>
    </topLevelNodes>
    <topLevelNodes
        visualID="1002"
        editPartClassName="WorkProductCompositeEditPart"
        itemSemanticEditPolicyClassName="WorkProductCompositeItemSemanticEditPolicy"
        notationViewFactoryClassName="WorkProductCompositeViewFactory"
        childNodes="//@diagram/@childNodes.2"
        canonicalEditPolicyClassName="WorkProductCompositeCanonicalEditPolicy"
        compartments="//@diagram/@compartments.1"
        graphicalNodeEditPolicyClassName="WorkProductCompositeGraphicalNodeEditPolicy">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <elementType
          xsi:type="gmfgen:MetamodelType"
          editHelperClassName="WorkProductCompositeEditHelper"/>
      <viewmap
          xsi:type="gmfgen:InnerClassViewmap"
          layoutType="TOOLBAR_LAYOUT"
          className="WorkProductCompositeFigure"
          classBody="&#xD;&#xA;&#xD;&#xA;/**&#xD;&#xA; * @generated&#xD;&#xA; */&#xD;&#xA;public class WorkProductCompositeFigure extends org.eclipse.draw2d.RectangleFigure {&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public WorkProductCompositeFigure() {&#x9;&#xD;&#xA;&#x9;&#x9;&#xD;&#xA;&#x9;&#x9;org.eclipse.draw2d.ToolbarLayout myGenLayoutManager = new org.eclipse.draw2d.ToolbarLayout();&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;myGenLayoutManager.setStretchMinorAxis(false);&#xD;&#xA;&#x9;&#x9;myGenLayoutManager.setMinorAlignment(org.eclipse.draw2d.ToolbarLayout.ALIGN_CENTER);&#x9;&#x9;&#xD;&#xA;&#x9;&#x9;myGenLayoutManager.setSpacing(5);&#xD;&#xA;&#x9;&#x9;myGenLayoutManager.setVertical(true);&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;&#xD;&#xA;&#x9;&#x9;this.setLayoutManager(myGenLayoutManager);&#xD;&#xA;&#xD;&#xA;&#x9;&#x9;&#xD;&#xA;&#x9;&#x9;this.setBackgroundColor(WORKPRODUCTCOMPOSITEFIGURE_BACK&#xD;&#xA;&#xD;&#xA;);&#xD;&#xA;&#x9;&#x9;this.setBorder(&#x9;&#xD;&#xA;new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(0), getMapMode().DPtoLP(0), getMapMode().DPtoLP(0), getMapMode().DPtoLP(0))&#xD;&#xA;);&#xD;&#xA;&#x9;&#x9;createContents();&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private void createContents(){&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private boolean myUseLocalCoordinates = false;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;protected boolean useLocalCoordinates() {&#xD;&#xA;&#x9;&#x9;return myUseLocalCoordinates;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;protected void setUseLocalCoordinates(boolean useLocalCoordinates) {&#xD;&#xA;&#x9;&#x9;myUseLocalCoordinates = useLocalCoordinates;&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;&#xD;&#xA;&#xD;&#xA;}&#xD;&#xA;&#x9;&#xD;&#xA;&#x9;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public static final org.eclipse.swt.graphics.Color WORKPRODUCTCOMPOSITEFIGURE_BACK = new org.eclipse.swt.graphics.Color(null, 255, 255, 205);&#xD;&#xA;">
        <attributes
            xsi:type="gmfgen:StyleAttributes"
            fixedBackground="true"/>
        <requiredPluginIDs>org.eclipse.draw2d</requiredPluginIDs>
        <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
      </viewmap>
      <modelFacet>
        <metaClass
            href="../../org.eclipse.epf.diagram.model/model/diagram.genmodel#//model/WorkProductComposite"/>
        <containmentMetaFeature
            href="../../org.eclipse.epf.diagram.model/model/diagram.genmodel#//model/NodeContainer/nodes"/>
        <childMetaFeature
            href="../../org.eclipse.epf.diagram.model/model/diagram.genmodel#//model/NodeContainer/nodes"/>
      </modelFacet>
    </topLevelNodes>
    <links
        visualID="3001"
        editPartClassName="LinkEditPart"
        itemSemanticEditPolicyClassName="LinkItemSemanticEditPolicy"
        notationViewFactoryClassName="LinkViewFactory">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Edge"/>
      <elementType
          xsi:type="gmfgen:MetamodelType"
          editHelperClassName="LinkEditHelper"/>
      <viewmap
          xsi:type="gmfgen:InnerClassViewmap"
          className="LinkFigure"
          classBody="&#xD;&#xA;&#xD;&#xA;/**&#xD;&#xA; * @generated&#xD;&#xA; */&#xD;&#xA;public class LinkFigure extends org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx {&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public LinkFigure() {&#xD;&#xA;&#x9;&#x9;this.setForegroundColor(org.eclipse.draw2d.ColorConstants.black&#xD;&#xA;&#xD;&#xA;);&#xD;&#xA;&#x9;&#x9;setTargetDecoration(createTargetDecoration());&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private org.eclipse.draw2d.PolylineDecoration createTargetDecoration() {&#xD;&#xA;org.eclipse.draw2d.PolylineDecoration df = new org.eclipse.draw2d.PolylineDecoration();&#xD;&#xA;// dispatchNext?&#xD;&#xA;&#xD;&#xA;&#x9;&#x9;org.eclipse.draw2d.geometry.PointList pl = new org.eclipse.draw2d.geometry.PointList();&#xD;&#xA;&#x9;&#x9;pl.addPoint(-1, 1);&#xD;&#xA;&#x9;&#x9;pl.addPoint(0, 0);&#xD;&#xA;&#x9;&#x9;pl.addPoint(-1, -1);&#xD;&#xA;&#x9;&#x9;df.setTemplate(pl);&#xD;&#xA;&#x9;&#x9;df.setScale(getMapMode().DPtoLP(7), getMapMode().DPtoLP(3));&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;&#x9;return df;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;}&#xD;&#xA;&#x9;&#xD;&#xA;">
        <attributes
            xsi:type="gmfgen:StyleAttributes"
            fixedForeground="true"/>
        <requiredPluginIDs>org.eclipse.draw2d</requiredPluginIDs>
        <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
      </viewmap>
      <modelFacet
          xsi:type="gmfgen:TypeLinkModelFacet">
        <metaClass
            href="../../org.eclipse.epf.diagram.model/model/diagram.genmodel#//model/Link"/>
        <containmentMetaFeature
            href="../../org.eclipse.epf.diagram.model/model/diagram.genmodel#//model/Node/outgoingConnections"/>
        <childMetaFeature
            href="../../org.eclipse.epf.diagram.model/model/diagram.genmodel#//model/Node/outgoingConnections"/>
        <sourceMetaFeature
            href="../../org.eclipse.epf.diagram.model/model/diagram.genmodel#//model/Link/source"/>
        <targetMetaFeature
            href="../../org.eclipse.epf.diagram.model/model/diagram.genmodel#//model/Link/target"/>
      </modelFacet>
      <labels
          visualID="4004"
          editPartClassName="LinkNameEditPart"
          itemSemanticEditPolicyClassName="LinkNameItemSemanticEditPolicy"
          notationViewFactoryClassName="LinkNameViewFactory">
        <diagramRunTimeClass
            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
        <viewmap
            xsi:type="gmfgen:FigureViewmap"
            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel">
          <attributes
              xsi:type="gmfgen:LabelOffsetAttributes"
              y="40"/>
          <requiredPluginIDs>org.eclipse.draw2d</requiredPluginIDs>
          <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
        </viewmap>
        <modelFacet
            xsi:type="gmfgen:FeatureLabelModelFacet"
            editPattern="">
          <metaFeature
              href="../../org.eclipse.epf.diagram.model/model/diagram.genmodel#//model/Link/name"/>
        </modelFacet>
      </labels>
    </links>
    <compartments
        visualID="5001"
        editPartClassName="RoleTaskCompositeRoleTaskCompartmentEditPart"
        itemSemanticEditPolicyClassName="RoleTaskCompositeRoleTaskCompartmentItemSemanticEditPolicy"
        notationViewFactoryClassName="RoleTaskCompositeRoleTaskCompartmentViewFactory"
        canonicalEditPolicyClassName="RoleTaskCompositeRoleTaskCompartmentCanonicalEditPolicy"
        title="RoleTaskCompartment"
        canCollapse="false"
        needsTitle="false"
        node="//@diagram/@topLevelNodes.0">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <viewmap
          xsi:type="gmfgen:FigureViewmap"
          figureQualifiedClassName="org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure">
        <requiredPluginIDs>org.eclipse.draw2d</requiredPluginIDs>
        <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
      </viewmap>
    </compartments>
    <compartments
        visualID="5002"
        editPartClassName="WorkProductCompositeWorkProductCompartmentEditPart"
        itemSemanticEditPolicyClassName="WorkProductCompositeWorkProductCompartmentItemSemanticEditPolicy"
        notationViewFactoryClassName="WorkProductCompositeWorkProductCompartmentViewFactory"
        canonicalEditPolicyClassName="WorkProductCompositeWorkProductCompartmentCanonicalEditPolicy"
        title="WorkProductCompartment"
        canCollapse="false"
        needsTitle="false"
        node="//@diagram/@topLevelNodes.1">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <viewmap
          xsi:type="gmfgen:FigureViewmap"
          figureQualifiedClassName="org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure">
        <requiredPluginIDs>org.eclipse.draw2d</requiredPluginIDs>
        <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
      </viewmap>
    </compartments>
    <palette>
      <groups
          title="Nodes"
          collapse="true">
        <entries
            xsi:type="gmfgen:ToolEntry"
            title="RoleNode"
            description="Create new RoleNode"
            genNodes="//@diagram/@childNodes.0"/>
        <entries
            xsi:type="gmfgen:ToolEntry"
            title="RoleTaskComposite"
            description="Create new RoleTaskComposite"
            genNodes="//@diagram/@topLevelNodes.0"/>
        <entries
            xsi:type="gmfgen:ToolEntry"
            title="TaskNode"
            description="Create new TaskNode"
            genNodes="//@diagram/@childNodes.1"/>
        <entries
            xsi:type="gmfgen:ToolEntry"
            title="WorkProductDescriptorNode"
            description="Create new WorkProducNode"
            genNodes="//@diagram/@childNodes.2"/>
        <entries
            xsi:type="gmfgen:ToolEntry"
            title="WorkProductComposite"
            description="Create new WorkProductComposite"
            genNodes="//@diagram/@topLevelNodes.1"/>
      </groups>
      <groups
          title="Links"
          collapse="true">
        <entries
            xsi:type="gmfgen:ToolEntry"
            title="Link"
            description="Create new link"
            genLinks="//@diagram/@links.0"/>
      </groups>
    </palette>
  </diagram>
  <plugin
      iD="org.eclipse.epf.diagram.add"
      name="Activity Detail Diagram Plugin"
      provider="EPF"
      printingEnabled="true"
      activatorClassName="ActivityDetailDiagramEditorPlugin"/>
  <editor
      className="ActivityDetailDiagramEditor"
      iD="org.eclipse.epf.diagram.add.part.ActivityDetailDiagramEditorID"/>
  <domainGenModel
      href="../../org.eclipse.epf.diagram.model/model/diagram.genmodel#/"/>
</gmfgen:GenEditorGenerator>
