### Eclipse Workspace Patch 1.0 #P org.eclipse.gmf.tests Index: src/org/eclipse/gmf/tests/gen/LabelSupportTest.java =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/tests/org.eclipse.gmf.tests/src/org/eclipse/gmf/tests/gen/LabelSupportTest.java,v retrieving revision 1.1 diff -u -r1.1 LabelSupportTest.java --- src/org/eclipse/gmf/tests/gen/LabelSupportTest.java 21 Apr 2006 17:44:54 -0000 1.1 +++ src/org/eclipse/gmf/tests/gen/LabelSupportTest.java 28 Apr 2006 14:01:23 -0000 @@ -17,13 +17,18 @@ import org.eclipse.draw2d.IFigure; import org.eclipse.draw2d.RectangleFigure; import org.eclipse.emf.codegen.util.CodeGenUtil; +import org.eclipse.gmf.gmfgraph.Alignment; +import org.eclipse.gmf.gmfgraph.BorderLayout; +import org.eclipse.gmf.gmfgraph.BorderLayoutData; import org.eclipse.gmf.gmfgraph.CustomFigure; import org.eclipse.gmf.gmfgraph.Dimension; import org.eclipse.gmf.gmfgraph.Figure; import org.eclipse.gmf.gmfgraph.GMFGraphFactory; import org.eclipse.gmf.gmfgraph.Label; import org.eclipse.gmf.gmfgraph.LabeledContainer; +import org.eclipse.gmf.gmfgraph.Node; import org.eclipse.gmf.gmfgraph.Rectangle; +import org.eclipse.gmf.gmfgraph.RoundedRectangle; public class LabelSupportTest extends FigureCodegenTestBase { private static final String LABEL_NAME = "Typename"; @@ -50,6 +55,33 @@ performChecks(labeledContainer, "LabeledContainerAlreadyHasLabel_DoesItNeedOneMore", LABEL_NAME); } + public void testDeepLabelGraphdefOnly(){ + Rectangle root = GMFGraphFactory.eINSTANCE.createRectangle(); + root.setName("Root"); + BorderLayout layout = GMFGraphFactory.eINSTANCE.createBorderLayout(); + root.setLayout(layout); + + RoundedRectangle padding = GMFGraphFactory.eINSTANCE.createRoundedRectangle(); + padding.setName("Padding"); + BorderLayoutData paddingData = GMFGraphFactory.eINSTANCE.createBorderLayoutData(); + paddingData.setAlignment(Alignment.FILL_LITERAL); + padding.setLayoutData(paddingData); + + Rectangle intermediateLabelContainer = GMFGraphFactory.eINSTANCE.createRectangle(); + intermediateLabelContainer.setName("intermediateLabelContainer"); + BorderLayoutData labelData = GMFGraphFactory.eINSTANCE.createBorderLayoutData(); + labelData.setAlignment(Alignment.BEGINNING_LITERAL); + labelData.setVertical(true); + intermediateLabelContainer.setLayoutData(labelData); + + addLabel(intermediateLabelContainer, LABEL_NAME); + + root.getChildren().add(intermediateLabelContainer); + root.getChildren().add(padding); + + performTests(root, combineChecks(new GenericFigureCheck(root), new LabelAccessorCheck(LABEL_NAME))); + } + private void performChecks(Figure parent, String parentName, String labelName){ parent.setName(parentName); @@ -58,12 +90,20 @@ prefSize.setDy(60); parent.setPreferredSize(prefSize); + addLabel(parent, labelName); + + performTests(parent, combineChecks(new GenericFigureCheck(parent), new LabelAccessorCheck(LABEL_NAME))); + } + + private void addLabel(Figure parent, String labelName) { Label label = GMFGraphFactory.eINSTANCE.createLabel(); label.setName(labelName); - parent.getChildren().add(label); + Node labelNode = GMFGraphFactory.eINSTANCE.createNode(); + labelNode.setName("LabelNode"); + labelNode.setFigure(label); - performTests(parent, combineChecks(new GenericFigureCheck(parent), new LabelAccessorCheck(LABEL_NAME))); + parent.getChildren().add(label); } private static class LabelAccessorCheck extends FigureCheck { #P org.eclipse.gmf.graphdef Index: src/org/eclipse/gmf/gmfgraph/impl/LabeledContainerImpl.java =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.graphdef/src/org/eclipse/gmf/gmfgraph/impl/LabeledContainerImpl.java,v retrieving revision 1.7 diff -u -r1.7 LabeledContainerImpl.java --- src/org/eclipse/gmf/gmfgraph/impl/LabeledContainerImpl.java 24 Feb 2006 13:52:14 -0000 1.7 +++ src/org/eclipse/gmf/gmfgraph/impl/LabeledContainerImpl.java 28 Apr 2006 14:01:28 -0000 @@ -16,9 +16,11 @@ import org.eclipse.emf.ecore.impl.ENotificationImpl; import org.eclipse.emf.ecore.impl.EObjectImpl; import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList; +import org.eclipse.emf.ecore.util.EObjectWithInverseResolvingEList; import org.eclipse.emf.ecore.util.InternalEList; import org.eclipse.gmf.gmfgraph.Border; import org.eclipse.gmf.gmfgraph.Color; +import org.eclipse.gmf.gmfgraph.DiagramElement; import org.eclipse.gmf.gmfgraph.Dimension; import org.eclipse.gmf.gmfgraph.Figure; import org.eclipse.gmf.gmfgraph.FigureMarker; @@ -53,6 +55,7 @@ *
  • {@link org.eclipse.gmf.gmfgraph.impl.LabeledContainerImpl#getBorder Border}
  • *
  • {@link org.eclipse.gmf.gmfgraph.impl.LabeledContainerImpl#getLocation Location}
  • *
  • {@link org.eclipse.gmf.gmfgraph.impl.LabeledContainerImpl#getSize Size}
  • + *
  • {@link org.eclipse.gmf.gmfgraph.impl.LabeledContainerImpl#getReferencingElements Referencing Elements}
  • * *

    * @@ -210,6 +213,16 @@ protected Point size = null; /** + * The cached value of the '{@link #getReferencingElements() Referencing Elements}' reference list. + * + * + * @see #getReferencingElements() + * @generated + * @ordered + */ + protected EList referencingElements = null; + + /** * * * @generated @@ -791,6 +804,18 @@ * * @generated */ + public EList getReferencingElements() { + if (referencingElements == null) { + referencingElements = new EObjectWithInverseResolvingEList(DiagramElement.class, this, GMFGraphPackage.LABELED_CONTAINER__REFERENCING_ELEMENTS, GMFGraphPackage.DIAGRAM_ELEMENT__FIGURE); + } + return referencingElements; + } + + /** + * + * + * @generated + */ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) { switch (featureID) { case GMFGraphPackage.LABELED_CONTAINER__LAYOUT_DATA: @@ -803,6 +828,8 @@ return eBasicSetContainer(otherEnd, GMFGraphPackage.LABELED_CONTAINER__PARENT, msgs); case GMFGraphPackage.LABELED_CONTAINER__CHILDREN: return ((InternalEList)getChildren()).basicAdd(otherEnd, msgs); + case GMFGraphPackage.LABELED_CONTAINER__REFERENCING_ELEMENTS: + return ((InternalEList)getReferencingElements()).basicAdd(otherEnd, msgs); } return super.eInverseAdd(otherEnd, featureID, msgs); } @@ -842,6 +869,8 @@ return basicSetLocation(null, msgs); case GMFGraphPackage.LABELED_CONTAINER__SIZE: return basicSetSize(null, msgs); + case GMFGraphPackage.LABELED_CONTAINER__REFERENCING_ELEMENTS: + return ((InternalEList)getReferencingElements()).basicRemove(otherEnd, msgs); } return super.eInverseRemove(otherEnd, featureID, msgs); } @@ -896,6 +925,8 @@ return getLocation(); case GMFGraphPackage.LABELED_CONTAINER__SIZE: return getSize(); + case GMFGraphPackage.LABELED_CONTAINER__REFERENCING_ELEMENTS: + return getReferencingElements(); } return super.eGet(featureID, resolve, coreType); } @@ -950,6 +981,10 @@ case GMFGraphPackage.LABELED_CONTAINER__SIZE: setSize((Point)newValue); return; + case GMFGraphPackage.LABELED_CONTAINER__REFERENCING_ELEMENTS: + getReferencingElements().clear(); + getReferencingElements().addAll((Collection)newValue); + return; } super.eSet(featureID, newValue); } @@ -1003,6 +1038,9 @@ case GMFGraphPackage.LABELED_CONTAINER__SIZE: setSize((Point)null); return; + case GMFGraphPackage.LABELED_CONTAINER__REFERENCING_ELEMENTS: + getReferencingElements().clear(); + return; } super.eUnset(featureID); } @@ -1044,6 +1082,8 @@ return location != null; case GMFGraphPackage.LABELED_CONTAINER__SIZE: return size != null; + case GMFGraphPackage.LABELED_CONTAINER__REFERENCING_ELEMENTS: + return referencingElements != null && !referencingElements.isEmpty(); } return super.eIsSet(featureID); } Index: src/org/eclipse/gmf/gmfgraph/impl/CustomFigureImpl.java =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.graphdef/src/org/eclipse/gmf/gmfgraph/impl/CustomFigureImpl.java,v retrieving revision 1.7 diff -u -r1.7 CustomFigureImpl.java --- src/org/eclipse/gmf/gmfgraph/impl/CustomFigureImpl.java 24 Feb 2006 13:52:14 -0000 1.7 +++ src/org/eclipse/gmf/gmfgraph/impl/CustomFigureImpl.java 28 Apr 2006 14:01:26 -0000 @@ -17,12 +17,14 @@ import org.eclipse.emf.ecore.impl.EObjectImpl; import org.eclipse.emf.ecore.util.EObjectContainmentEList; import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList; +import org.eclipse.emf.ecore.util.EObjectWithInverseResolvingEList; import org.eclipse.emf.ecore.util.InternalEList; import org.eclipse.gmf.gmfgraph.Border; import org.eclipse.gmf.gmfgraph.Color; import org.eclipse.gmf.gmfgraph.CustomAttribute; import org.eclipse.gmf.gmfgraph.CustomClass; import org.eclipse.gmf.gmfgraph.CustomFigure; +import org.eclipse.gmf.gmfgraph.DiagramElement; import org.eclipse.gmf.gmfgraph.Dimension; import org.eclipse.gmf.gmfgraph.Figure; import org.eclipse.gmf.gmfgraph.FigureMarker; @@ -56,6 +58,7 @@ *
  • {@link org.eclipse.gmf.gmfgraph.impl.CustomFigureImpl#getBorder Border}
  • *
  • {@link org.eclipse.gmf.gmfgraph.impl.CustomFigureImpl#getLocation Location}
  • *
  • {@link org.eclipse.gmf.gmfgraph.impl.CustomFigureImpl#getSize Size}
  • + *
  • {@link org.eclipse.gmf.gmfgraph.impl.CustomFigureImpl#getReferencingElements Referencing Elements}
  • *
  • {@link org.eclipse.gmf.gmfgraph.impl.CustomFigureImpl#getQualifiedClassName Qualified Class Name}
  • *
  • {@link org.eclipse.gmf.gmfgraph.impl.CustomFigureImpl#getBundleName Bundle Name}
  • *
  • {@link org.eclipse.gmf.gmfgraph.impl.CustomFigureImpl#getAttributes Attributes}
  • @@ -216,6 +219,16 @@ protected Point size = null; /** + * The cached value of the '{@link #getReferencingElements() Referencing Elements}' reference list. + * + * + * @see #getReferencingElements() + * @generated + * @ordered + */ + protected EList referencingElements = null; + + /** * The default value of the '{@link #getQualifiedClassName() Qualified Class Name}' attribute. * * @@ -847,6 +860,18 @@ * * @generated */ + public EList getReferencingElements() { + if (referencingElements == null) { + referencingElements = new EObjectWithInverseResolvingEList(DiagramElement.class, this, GMFGraphPackage.CUSTOM_FIGURE__REFERENCING_ELEMENTS, GMFGraphPackage.DIAGRAM_ELEMENT__FIGURE); + } + return referencingElements; + } + + /** + * + * + * @generated + */ public String getQualifiedClassName() { return qualifiedClassName; } @@ -913,6 +938,8 @@ return eBasicSetContainer(otherEnd, GMFGraphPackage.CUSTOM_FIGURE__PARENT, msgs); case GMFGraphPackage.CUSTOM_FIGURE__CHILDREN: return ((InternalEList)getChildren()).basicAdd(otherEnd, msgs); + case GMFGraphPackage.CUSTOM_FIGURE__REFERENCING_ELEMENTS: + return ((InternalEList)getReferencingElements()).basicAdd(otherEnd, msgs); } return super.eInverseAdd(otherEnd, featureID, msgs); } @@ -952,6 +979,8 @@ return basicSetLocation(null, msgs); case GMFGraphPackage.CUSTOM_FIGURE__SIZE: return basicSetSize(null, msgs); + case GMFGraphPackage.CUSTOM_FIGURE__REFERENCING_ELEMENTS: + return ((InternalEList)getReferencingElements()).basicRemove(otherEnd, msgs); case GMFGraphPackage.CUSTOM_FIGURE__ATTRIBUTES: return ((InternalEList)getAttributes()).basicRemove(otherEnd, msgs); } @@ -1008,6 +1037,8 @@ return getLocation(); case GMFGraphPackage.CUSTOM_FIGURE__SIZE: return getSize(); + case GMFGraphPackage.CUSTOM_FIGURE__REFERENCING_ELEMENTS: + return getReferencingElements(); case GMFGraphPackage.CUSTOM_FIGURE__QUALIFIED_CLASS_NAME: return getQualifiedClassName(); case GMFGraphPackage.CUSTOM_FIGURE__BUNDLE_NAME: @@ -1068,6 +1099,10 @@ case GMFGraphPackage.CUSTOM_FIGURE__SIZE: setSize((Point)newValue); return; + case GMFGraphPackage.CUSTOM_FIGURE__REFERENCING_ELEMENTS: + getReferencingElements().clear(); + getReferencingElements().addAll((Collection)newValue); + return; case GMFGraphPackage.CUSTOM_FIGURE__QUALIFIED_CLASS_NAME: setQualifiedClassName((String)newValue); return; @@ -1131,6 +1166,9 @@ case GMFGraphPackage.CUSTOM_FIGURE__SIZE: setSize((Point)null); return; + case GMFGraphPackage.CUSTOM_FIGURE__REFERENCING_ELEMENTS: + getReferencingElements().clear(); + return; case GMFGraphPackage.CUSTOM_FIGURE__QUALIFIED_CLASS_NAME: setQualifiedClassName(QUALIFIED_CLASS_NAME_EDEFAULT); return; @@ -1181,6 +1219,8 @@ return location != null; case GMFGraphPackage.CUSTOM_FIGURE__SIZE: return size != null; + case GMFGraphPackage.CUSTOM_FIGURE__REFERENCING_ELEMENTS: + return referencingElements != null && !referencingElements.isEmpty(); case GMFGraphPackage.CUSTOM_FIGURE__QUALIFIED_CLASS_NAME: return QUALIFIED_CLASS_NAME_EDEFAULT == null ? qualifiedClassName != null : !QUALIFIED_CLASS_NAME_EDEFAULT.equals(qualifiedClassName); case GMFGraphPackage.CUSTOM_FIGURE__BUNDLE_NAME: Index: src/org/eclipse/gmf/gmfgraph/impl/GMFGraphPackageImpl.java =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.graphdef/src/org/eclipse/gmf/gmfgraph/impl/GMFGraphPackageImpl.java,v retrieving revision 1.16 diff -u -r1.16 GMFGraphPackageImpl.java --- src/org/eclipse/gmf/gmfgraph/impl/GMFGraphPackageImpl.java 20 Apr 2006 13:59:38 -0000 1.16 +++ src/org/eclipse/gmf/gmfgraph/impl/GMFGraphPackageImpl.java 28 Apr 2006 14:01:27 -0000 @@ -1057,6 +1057,15 @@ * * @generated */ + public EReference getFigure_ReferencingElements() { + return (EReference)figureEClass.getEStructuralFeatures().get(11); + } + + /** + * + * + * @generated + */ public EClass getFigureRef() { return figureRefEClass; } @@ -2205,6 +2214,7 @@ createEReference(figureEClass, FIGURE__BORDER); createEReference(figureEClass, FIGURE__LOCATION); createEReference(figureEClass, FIGURE__SIZE); + createEReference(figureEClass, FIGURE__REFERENCING_ELEMENTS); figureRefEClass = createEClass(FIGURE_REF); createEReference(figureRefEClass, FIGURE_REF__FIGURE); @@ -2472,7 +2482,7 @@ initEAttribute(getIdentity_Name(), ecorePackage.getEString(), "name", null, 1, 1, Identity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEClass(diagramElementEClass, DiagramElement.class, "DiagramElement", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); - initEReference(getDiagramElement_Figure(), this.getFigure(), null, "figure", null, 1, 1, DiagramElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getDiagramElement_Figure(), this.getFigure(), this.getFigure_ReferencingElements(), "figure", null, 1, 1, DiagramElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEReference(getDiagramElement_Facets(), this.getVisualFacet(), null, "facets", null, 0, -1, DiagramElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); EOperation op = addEOperation(diagramElementEClass, this.getVisualFacet(), "find", 0, 1); @@ -2522,6 +2532,7 @@ initEReference(getFigure_Border(), this.getBorder(), null, "border", null, 0, 1, Figure.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEReference(getFigure_Location(), this.getPoint(), null, "location", null, 0, 1, Figure.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEReference(getFigure_Size(), this.getPoint(), null, "size", null, 0, 1, Figure.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getFigure_ReferencingElements(), this.getDiagramElement(), this.getDiagramElement_Figure(), "referencingElements", null, 0, -1, Figure.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEClass(figureRefEClass, FigureRef.class, "FigureRef", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); initEReference(getFigureRef_Figure(), this.getFigure(), null, "figure", null, 1, 1, FigureRef.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); Index: src/org/eclipse/gmf/gmfgraph/impl/ShapeImpl.java =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.graphdef/src/org/eclipse/gmf/gmfgraph/impl/ShapeImpl.java,v retrieving revision 1.8 diff -u -r1.8 ShapeImpl.java --- src/org/eclipse/gmf/gmfgraph/impl/ShapeImpl.java 24 Feb 2006 13:52:14 -0000 1.8 +++ src/org/eclipse/gmf/gmfgraph/impl/ShapeImpl.java 28 Apr 2006 14:01:28 -0000 @@ -19,9 +19,11 @@ import org.eclipse.emf.ecore.impl.ENotificationImpl; import org.eclipse.emf.ecore.impl.EObjectImpl; import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList; +import org.eclipse.emf.ecore.util.EObjectWithInverseResolvingEList; import org.eclipse.emf.ecore.util.InternalEList; import org.eclipse.gmf.gmfgraph.Border; import org.eclipse.gmf.gmfgraph.Color; +import org.eclipse.gmf.gmfgraph.DiagramElement; import org.eclipse.gmf.gmfgraph.Dimension; import org.eclipse.gmf.gmfgraph.Figure; import org.eclipse.gmf.gmfgraph.FigureMarker; @@ -58,6 +60,7 @@ *
  • {@link org.eclipse.gmf.gmfgraph.impl.ShapeImpl#getBorder Border}
  • *
  • {@link org.eclipse.gmf.gmfgraph.impl.ShapeImpl#getLocation Location}
  • *
  • {@link org.eclipse.gmf.gmfgraph.impl.ShapeImpl#getSize Size}
  • + *
  • {@link org.eclipse.gmf.gmfgraph.impl.ShapeImpl#getReferencingElements Referencing Elements}
  • *
  • {@link org.eclipse.gmf.gmfgraph.impl.ShapeImpl#isOutline Outline}
  • *
  • {@link org.eclipse.gmf.gmfgraph.impl.ShapeImpl#isFill Fill}
  • *
  • {@link org.eclipse.gmf.gmfgraph.impl.ShapeImpl#getLineWidth Line Width}
  • @@ -222,6 +225,16 @@ protected Point size = null; /** + * The cached value of the '{@link #getReferencingElements() Referencing Elements}' reference list. + * + * + * @see #getReferencingElements() + * @generated + * @ordered + */ + protected EList referencingElements = null; + + /** * The default value of the '{@link #isOutline() Outline}' attribute. * * @@ -921,6 +934,18 @@ /** * * + * @generated + */ + public EList getReferencingElements() { + if (referencingElements == null) { + referencingElements = new EObjectWithInverseResolvingEList(DiagramElement.class, this, GMFGraphPackage.SHAPE__REFERENCING_ELEMENTS, GMFGraphPackage.DIAGRAM_ELEMENT__FIGURE); + } + return referencingElements; + } + + /** + * + * * @generated NOT */ public EList getResolvedChildren() { @@ -954,6 +979,8 @@ return eBasicSetContainer(otherEnd, GMFGraphPackage.SHAPE__PARENT, msgs); case GMFGraphPackage.SHAPE__CHILDREN: return ((InternalEList)getChildren()).basicAdd(otherEnd, msgs); + case GMFGraphPackage.SHAPE__REFERENCING_ELEMENTS: + return ((InternalEList)getReferencingElements()).basicAdd(otherEnd, msgs); } return super.eInverseAdd(otherEnd, featureID, msgs); } @@ -993,6 +1020,8 @@ return basicSetLocation(null, msgs); case GMFGraphPackage.SHAPE__SIZE: return basicSetSize(null, msgs); + case GMFGraphPackage.SHAPE__REFERENCING_ELEMENTS: + return ((InternalEList)getReferencingElements()).basicRemove(otherEnd, msgs); } return super.eInverseRemove(otherEnd, featureID, msgs); } @@ -1047,6 +1076,8 @@ return getLocation(); case GMFGraphPackage.SHAPE__SIZE: return getSize(); + case GMFGraphPackage.SHAPE__REFERENCING_ELEMENTS: + return getReferencingElements(); case GMFGraphPackage.SHAPE__OUTLINE: return isOutline() ? Boolean.TRUE : Boolean.FALSE; case GMFGraphPackage.SHAPE__FILL: @@ -1115,6 +1146,10 @@ case GMFGraphPackage.SHAPE__SIZE: setSize((Point)newValue); return; + case GMFGraphPackage.SHAPE__REFERENCING_ELEMENTS: + getReferencingElements().clear(); + getReferencingElements().addAll((Collection)newValue); + return; case GMFGraphPackage.SHAPE__OUTLINE: setOutline(((Boolean)newValue).booleanValue()); return; @@ -1186,6 +1221,9 @@ case GMFGraphPackage.SHAPE__SIZE: setSize((Point)null); return; + case GMFGraphPackage.SHAPE__REFERENCING_ELEMENTS: + getReferencingElements().clear(); + return; case GMFGraphPackage.SHAPE__OUTLINE: setOutline(OUTLINE_EDEFAULT); return; @@ -1245,6 +1283,8 @@ return location != null; case GMFGraphPackage.SHAPE__SIZE: return size != null; + case GMFGraphPackage.SHAPE__REFERENCING_ELEMENTS: + return referencingElements != null && !referencingElements.isEmpty(); case GMFGraphPackage.SHAPE__OUTLINE: return outline != OUTLINE_EDEFAULT; case GMFGraphPackage.SHAPE__FILL: Index: src/org/eclipse/gmf/gmfgraph/impl/LabelImpl.java =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.graphdef/src/org/eclipse/gmf/gmfgraph/impl/LabelImpl.java,v retrieving revision 1.7 diff -u -r1.7 LabelImpl.java --- src/org/eclipse/gmf/gmfgraph/impl/LabelImpl.java 24 Feb 2006 13:52:14 -0000 1.7 +++ src/org/eclipse/gmf/gmfgraph/impl/LabelImpl.java 28 Apr 2006 14:01:27 -0000 @@ -16,9 +16,11 @@ import org.eclipse.emf.ecore.impl.ENotificationImpl; import org.eclipse.emf.ecore.impl.EObjectImpl; import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList; +import org.eclipse.emf.ecore.util.EObjectWithInverseResolvingEList; import org.eclipse.emf.ecore.util.InternalEList; import org.eclipse.gmf.gmfgraph.Border; import org.eclipse.gmf.gmfgraph.Color; +import org.eclipse.gmf.gmfgraph.DiagramElement; import org.eclipse.gmf.gmfgraph.Dimension; import org.eclipse.gmf.gmfgraph.Figure; import org.eclipse.gmf.gmfgraph.FigureMarker; @@ -53,6 +55,7 @@ *
  • {@link org.eclipse.gmf.gmfgraph.impl.LabelImpl#getBorder Border}
  • *
  • {@link org.eclipse.gmf.gmfgraph.impl.LabelImpl#getLocation Location}
  • *
  • {@link org.eclipse.gmf.gmfgraph.impl.LabelImpl#getSize Size}
  • + *
  • {@link org.eclipse.gmf.gmfgraph.impl.LabelImpl#getReferencingElements Referencing Elements}
  • *
  • {@link org.eclipse.gmf.gmfgraph.impl.LabelImpl#getText Text}
  • * *

    @@ -211,6 +214,16 @@ protected Point size = null; /** + * The cached value of the '{@link #getReferencingElements() Referencing Elements}' reference list. + * + * + * @see #getReferencingElements() + * @generated + * @ordered + */ + protected EList referencingElements = null; + + /** * The default value of the '{@link #getText() Text}' attribute. * * @@ -812,6 +825,18 @@ * * @generated */ + public EList getReferencingElements() { + if (referencingElements == null) { + referencingElements = new EObjectWithInverseResolvingEList(DiagramElement.class, this, GMFGraphPackage.LABEL__REFERENCING_ELEMENTS, GMFGraphPackage.DIAGRAM_ELEMENT__FIGURE); + } + return referencingElements; + } + + /** + * + * + * @generated + */ public String getText() { return text; } @@ -845,6 +870,8 @@ return eBasicSetContainer(otherEnd, GMFGraphPackage.LABEL__PARENT, msgs); case GMFGraphPackage.LABEL__CHILDREN: return ((InternalEList)getChildren()).basicAdd(otherEnd, msgs); + case GMFGraphPackage.LABEL__REFERENCING_ELEMENTS: + return ((InternalEList)getReferencingElements()).basicAdd(otherEnd, msgs); } return super.eInverseAdd(otherEnd, featureID, msgs); } @@ -884,6 +911,8 @@ return basicSetLocation(null, msgs); case GMFGraphPackage.LABEL__SIZE: return basicSetSize(null, msgs); + case GMFGraphPackage.LABEL__REFERENCING_ELEMENTS: + return ((InternalEList)getReferencingElements()).basicRemove(otherEnd, msgs); } return super.eInverseRemove(otherEnd, featureID, msgs); } @@ -938,6 +967,8 @@ return getLocation(); case GMFGraphPackage.LABEL__SIZE: return getSize(); + case GMFGraphPackage.LABEL__REFERENCING_ELEMENTS: + return getReferencingElements(); case GMFGraphPackage.LABEL__TEXT: return getText(); } @@ -994,6 +1025,10 @@ case GMFGraphPackage.LABEL__SIZE: setSize((Point)newValue); return; + case GMFGraphPackage.LABEL__REFERENCING_ELEMENTS: + getReferencingElements().clear(); + getReferencingElements().addAll((Collection)newValue); + return; case GMFGraphPackage.LABEL__TEXT: setText((String)newValue); return; @@ -1050,6 +1085,9 @@ case GMFGraphPackage.LABEL__SIZE: setSize((Point)null); return; + case GMFGraphPackage.LABEL__REFERENCING_ELEMENTS: + getReferencingElements().clear(); + return; case GMFGraphPackage.LABEL__TEXT: setText(TEXT_EDEFAULT); return; @@ -1094,6 +1132,8 @@ return location != null; case GMFGraphPackage.LABEL__SIZE: return size != null; + case GMFGraphPackage.LABEL__REFERENCING_ELEMENTS: + return referencingElements != null && !referencingElements.isEmpty(); case GMFGraphPackage.LABEL__TEXT: return TEXT_EDEFAULT == null ? text != null : !TEXT_EDEFAULT.equals(text); } Index: src/org/eclipse/gmf/gmfgraph/impl/DiagramElementImpl.java =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.graphdef/src/org/eclipse/gmf/gmfgraph/impl/DiagramElementImpl.java,v retrieving revision 1.3 diff -u -r1.3 DiagramElementImpl.java --- src/org/eclipse/gmf/gmfgraph/impl/DiagramElementImpl.java 22 Feb 2006 22:01:35 -0000 1.3 +++ src/org/eclipse/gmf/gmfgraph/impl/DiagramElementImpl.java 28 Apr 2006 14:01:26 -0000 @@ -149,11 +149,33 @@ * * @generated */ - public void setFigure(Figure newFigure) { + public NotificationChain basicSetFigure(Figure newFigure, NotificationChain msgs) { Figure oldFigure = figure; figure = newFigure; - if (eNotificationRequired()) - eNotify(new ENotificationImpl(this, Notification.SET, GMFGraphPackage.DIAGRAM_ELEMENT__FIGURE, oldFigure, figure)); + if (eNotificationRequired()) { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, GMFGraphPackage.DIAGRAM_ELEMENT__FIGURE, oldFigure, newFigure); + if (msgs == null) msgs = notification; else msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setFigure(Figure newFigure) { + if (newFigure != figure) { + NotificationChain msgs = null; + if (figure != null) + msgs = ((InternalEObject)figure).eInverseRemove(this, GMFGraphPackage.FIGURE__REFERENCING_ELEMENTS, Figure.class, msgs); + if (newFigure != null) + msgs = ((InternalEObject)newFigure).eInverseAdd(this, GMFGraphPackage.FIGURE__REFERENCING_ELEMENTS, Figure.class, msgs); + msgs = basicSetFigure(newFigure, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, GMFGraphPackage.DIAGRAM_ELEMENT__FIGURE, newFigure, newFigure)); } /** @@ -194,8 +216,25 @@ * * @generated */ + public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case GMFGraphPackage.DIAGRAM_ELEMENT__FIGURE: + if (figure != null) + msgs = ((InternalEObject)figure).eInverseRemove(this, GMFGraphPackage.FIGURE__REFERENCING_ELEMENTS, Figure.class, msgs); + return basicSetFigure((Figure)otherEnd, msgs); + } + return super.eInverseAdd(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { switch (featureID) { + case GMFGraphPackage.DIAGRAM_ELEMENT__FIGURE: + return basicSetFigure(null, msgs); case GMFGraphPackage.DIAGRAM_ELEMENT__FACETS: return ((InternalEList)getFacets()).basicRemove(otherEnd, msgs); } Index: models/gmfgraph.ecore =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.graphdef/models/gmfgraph.ecore,v retrieving revision 1.17 diff -u -r1.17 gmfgraph.ecore --- models/gmfgraph.ecore 20 Apr 2006 13:59:38 -0000 1.17 +++ models/gmfgraph.ecore 28 Apr 2006 14:01:24 -0000 @@ -44,7 +44,7 @@ + eType="#//Figure" eOpposite="#//Figure/referencingElements"/> @@ -117,6 +117,8 @@ containment="true"/> + Index: models/gmfgraph.genmodel =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.graphdef/models/gmfgraph.genmodel,v retrieving revision 1.15 diff -u -r1.15 gmfgraph.genmodel --- models/gmfgraph.genmodel 20 Apr 2006 13:59:38 -0000 1.15 +++ models/gmfgraph.genmodel 28 Apr 2006 14:01:25 -0000 @@ -119,6 +119,7 @@ + Index: src/org/eclipse/gmf/gmfgraph/DiagramElement.java =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.graphdef/src/org/eclipse/gmf/gmfgraph/DiagramElement.java,v retrieving revision 1.3 diff -u -r1.3 DiagramElement.java --- src/org/eclipse/gmf/gmfgraph/DiagramElement.java 24 Feb 2006 13:52:14 -0000 1.3 +++ src/org/eclipse/gmf/gmfgraph/DiagramElement.java 28 Apr 2006 14:01:25 -0000 @@ -28,6 +28,7 @@ public interface DiagramElement extends Identity { /** * Returns the value of the 'Figure' reference. + * It is bidirectional and its opposite is '{@link org.eclipse.gmf.gmfgraph.Figure#getReferencingElements Referencing Elements}'. * *

    * If the meaning of the 'Figure' reference isn't clear, @@ -37,7 +38,8 @@ * @return the value of the 'Figure' reference. * @see #setFigure(Figure) * @see org.eclipse.gmf.gmfgraph.GMFGraphPackage#getDiagramElement_Figure() - * @model required="true" + * @see org.eclipse.gmf.gmfgraph.Figure#getReferencingElements + * @model opposite="referencingElements" required="true" * @generated */ Figure getFigure(); Index: src/org/eclipse/gmf/gmfgraph/Figure.java =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.graphdef/src/org/eclipse/gmf/gmfgraph/Figure.java,v retrieving revision 1.6 diff -u -r1.6 Figure.java --- src/org/eclipse/gmf/gmfgraph/Figure.java 24 Feb 2006 13:52:14 -0000 1.6 +++ src/org/eclipse/gmf/gmfgraph/Figure.java 28 Apr 2006 14:01:25 -0000 @@ -31,6 +31,7 @@ *

  • {@link org.eclipse.gmf.gmfgraph.Figure#getBorder Border}
  • *
  • {@link org.eclipse.gmf.gmfgraph.Figure#getLocation Location}
  • *
  • {@link org.eclipse.gmf.gmfgraph.Figure#getSize Size}
  • + *
  • {@link org.eclipse.gmf.gmfgraph.Figure#getReferencingElements Referencing Elements}
  • * *

    * @@ -317,4 +318,22 @@ */ void setSize(Point value); + /** + * Returns the value of the 'Referencing Elements' reference list. + * The list contents are of type {@link org.eclipse.gmf.gmfgraph.DiagramElement}. + * It is bidirectional and its opposite is '{@link org.eclipse.gmf.gmfgraph.DiagramElement#getFigure Figure}'. + * + *

    + * If the meaning of the 'Referencing Elements' reference list isn't clear, + * there really should be more of a description here... + *

    + * + * @return the value of the 'Referencing Elements' reference list. + * @see org.eclipse.gmf.gmfgraph.GMFGraphPackage#getFigure_ReferencingElements() + * @see org.eclipse.gmf.gmfgraph.DiagramElement#getFigure + * @model type="org.eclipse.gmf.gmfgraph.DiagramElement" opposite="figure" + * @generated + */ + EList getReferencingElements(); + } // Figure Index: src/org/eclipse/gmf/gmfgraph/GMFGraphPackage.java =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.graphdef/src/org/eclipse/gmf/gmfgraph/GMFGraphPackage.java,v retrieving revision 1.12 diff -u -r1.12 GMFGraphPackage.java --- src/org/eclipse/gmf/gmfgraph/GMFGraphPackage.java 20 Apr 2006 13:59:38 -0000 1.12 +++ src/org/eclipse/gmf/gmfgraph/GMFGraphPackage.java 28 Apr 2006 14:01:26 -0000 @@ -897,13 +897,22 @@ int FIGURE__SIZE = FIGURE_MARKER_FEATURE_COUNT + 11; /** + * The feature id for the 'Referencing Elements' reference list. + * + * + * @generated + * @ordered + */ + int FIGURE__REFERENCING_ELEMENTS = FIGURE_MARKER_FEATURE_COUNT + 12; + + /** * The number of structural features of the 'Figure' class. * * * @generated * @ordered */ - int FIGURE_FEATURE_COUNT = FIGURE_MARKER_FEATURE_COUNT + 12; + int FIGURE_FEATURE_COUNT = FIGURE_MARKER_FEATURE_COUNT + 13; /** * The meta object id for the '{@link org.eclipse.gmf.gmfgraph.impl.FigureRefImpl Figure Ref}' class. @@ -1106,6 +1115,15 @@ int CONNECTION_FIGURE__SIZE = FIGURE__SIZE; /** + * The feature id for the 'Referencing Elements' reference list. + * + * + * @generated + * @ordered + */ + int CONNECTION_FIGURE__REFERENCING_ELEMENTS = FIGURE__REFERENCING_ELEMENTS; + + /** * The number of structural features of the 'Connection Figure' class. * * @@ -1260,6 +1278,15 @@ int DECORATION_FIGURE__SIZE = FIGURE__SIZE; /** + * The feature id for the 'Referencing Elements' reference list. + * + * + * @generated + * @ordered + */ + int DECORATION_FIGURE__REFERENCING_ELEMENTS = FIGURE__REFERENCING_ELEMENTS; + + /** * The number of structural features of the 'Decoration Figure' class. * * @@ -1414,6 +1441,15 @@ int SHAPE__SIZE = FIGURE__SIZE; /** + * The feature id for the 'Referencing Elements' reference list. + * + * + * @generated + * @ordered + */ + int SHAPE__REFERENCING_ELEMENTS = FIGURE__REFERENCING_ELEMENTS; + + /** * The feature id for the 'Outline' attribute. * * @@ -1631,6 +1667,15 @@ int LABEL__SIZE = FIGURE__SIZE; /** + * The feature id for the 'Referencing Elements' reference list. + * + * + * @generated + * @ordered + */ + int LABEL__REFERENCING_ELEMENTS = FIGURE__REFERENCING_ELEMENTS; + + /** * The feature id for the 'Text' attribute. * * @@ -1794,6 +1839,15 @@ int LABELED_CONTAINER__SIZE = FIGURE__SIZE; /** + * The feature id for the 'Referencing Elements' reference list. + * + * + * @generated + * @ordered + */ + int LABELED_CONTAINER__REFERENCING_ELEMENTS = FIGURE__REFERENCING_ELEMENTS; + + /** * The number of structural features of the 'Labeled Container' class. * * @@ -1948,6 +2002,15 @@ int RECTANGLE__SIZE = SHAPE__SIZE; /** + * The feature id for the 'Referencing Elements' reference list. + * + * + * @generated + * @ordered + */ + int RECTANGLE__REFERENCING_ELEMENTS = SHAPE__REFERENCING_ELEMENTS; + + /** * The feature id for the 'Outline' attribute. * * @@ -2165,6 +2228,15 @@ int ROUNDED_RECTANGLE__SIZE = SHAPE__SIZE; /** + * The feature id for the 'Referencing Elements' reference list. + * + * + * @generated + * @ordered + */ + int ROUNDED_RECTANGLE__REFERENCING_ELEMENTS = SHAPE__REFERENCING_ELEMENTS; + + /** * The feature id for the 'Outline' attribute. * * @@ -2400,6 +2472,15 @@ int ELLIPSE__SIZE = SHAPE__SIZE; /** + * The feature id for the 'Referencing Elements' reference list. + * + * + * @generated + * @ordered + */ + int ELLIPSE__REFERENCING_ELEMENTS = SHAPE__REFERENCING_ELEMENTS; + + /** * The feature id for the 'Outline' attribute. * * @@ -2617,6 +2698,15 @@ int POLYLINE__SIZE = SHAPE__SIZE; /** + * The feature id for the 'Referencing Elements' reference list. + * + * + * @generated + * @ordered + */ + int POLYLINE__REFERENCING_ELEMENTS = SHAPE__REFERENCING_ELEMENTS; + + /** * The feature id for the 'Outline' attribute. * * @@ -2843,6 +2933,15 @@ int POLYGON__SIZE = POLYLINE__SIZE; /** + * The feature id for the 'Referencing Elements' reference list. + * + * + * @generated + * @ordered + */ + int POLYGON__REFERENCING_ELEMENTS = POLYLINE__REFERENCING_ELEMENTS; + + /** * The feature id for the 'Outline' attribute. * * @@ -3069,6 +3168,15 @@ int POLYLINE_CONNECTION__SIZE = POLYLINE__SIZE; /** + * The feature id for the 'Referencing Elements' reference list. + * + * + * @generated + * @ordered + */ + int POLYLINE_CONNECTION__REFERENCING_ELEMENTS = POLYLINE__REFERENCING_ELEMENTS; + + /** * The feature id for the 'Outline' attribute. * * @@ -3313,6 +3421,15 @@ int POLYLINE_DECORATION__SIZE = POLYLINE__SIZE; /** + * The feature id for the 'Referencing Elements' reference list. + * + * + * @generated + * @ordered + */ + int POLYLINE_DECORATION__REFERENCING_ELEMENTS = POLYLINE__REFERENCING_ELEMENTS; + + /** * The feature id for the 'Outline' attribute. * * @@ -3539,6 +3656,15 @@ int POLYGON_DECORATION__SIZE = POLYGON__SIZE; /** + * The feature id for the 'Referencing Elements' reference list. + * + * + * @generated + * @ordered + */ + int POLYGON_DECORATION__REFERENCING_ELEMENTS = POLYGON__REFERENCING_ELEMENTS; + + /** * The feature id for the 'Outline' attribute. * * @@ -3811,6 +3937,15 @@ int CUSTOM_FIGURE__SIZE = FIGURE__SIZE; /** + * The feature id for the 'Referencing Elements' reference list. + * + * + * @generated + * @ordered + */ + int CUSTOM_FIGURE__REFERENCING_ELEMENTS = FIGURE__REFERENCING_ELEMENTS; + + /** * The feature id for the 'Qualified Class Name' attribute. * * @@ -3992,6 +4127,15 @@ int CUSTOM_DECORATION__SIZE = CUSTOM_FIGURE__SIZE; /** + * The feature id for the 'Referencing Elements' reference list. + * + * + * @generated + * @ordered + */ + int CUSTOM_DECORATION__REFERENCING_ELEMENTS = CUSTOM_FIGURE__REFERENCING_ELEMENTS; + + /** * The feature id for the 'Qualified Class Name' attribute. * * @@ -4173,6 +4317,15 @@ int CUSTOM_CONNECTION__SIZE = CUSTOM_FIGURE__SIZE; /** + * The feature id for the 'Referencing Elements' reference list. + * + * + * @generated + * @ordered + */ + int CUSTOM_CONNECTION__REFERENCING_ELEMENTS = CUSTOM_FIGURE__REFERENCING_ELEMENTS; + + /** * The feature id for the 'Qualified Class Name' attribute. * * @@ -5825,6 +5978,17 @@ EReference getFigure_Size(); /** + * Returns the meta object for the reference list '{@link org.eclipse.gmf.gmfgraph.Figure#getReferencingElements Referencing Elements}'. + * + * + * @return the meta object for the reference list 'Referencing Elements'. + * @see org.eclipse.gmf.gmfgraph.Figure#getReferencingElements() + * @see #getFigure() + * @generated + */ + EReference getFigure_ReferencingElements(); + + /** * Returns the meta object for class '{@link org.eclipse.gmf.gmfgraph.FigureRef Figure Ref}'. * * #P org.eclipse.gmf.graphdef.codegen Index: templates/layoutData/BorderLayoutData.javajet =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.graphdef.codegen/templates/layoutData/BorderLayoutData.javajet,v retrieving revision 1.2 diff -u -r1.2 BorderLayoutData.javajet --- templates/layoutData/BorderLayoutData.javajet 15 Feb 2006 14:44:35 -0000 1.2 +++ templates/layoutData/BorderLayoutData.javajet 28 Apr 2006 14:01:30 -0000 @@ -36,5 +36,5 @@ throw new IllegalArgumentException("Unknown Alignment: " + gmfLayoutData.getAlignment()); } %> - <%=argsBundle.getManagerVariableName()%>.setConstraint(<%=figureVarName%>, <%=dispatcher.getImportManager().getImportedName("org.eclipse.draw2d.BorderLayout")%>.<%=constantName%>); + Object <%=argsBundle.getConstraintVariableName()%> = <%=dispatcher.getImportManager().getImportedName("org.eclipse.draw2d.BorderLayout")%>.<%=constantName%>; Index: templates/layoutData/XYLayoutData.javajet =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.graphdef.codegen/templates/layoutData/XYLayoutData.javajet,v retrieving revision 1.2 diff -u -r1.2 XYLayoutData.javajet --- templates/layoutData/XYLayoutData.javajet 13 Mar 2006 17:53:19 -0000 1.2 +++ templates/layoutData/XYLayoutData.javajet 28 Apr 2006 14:01:30 -0000 @@ -30,4 +30,3 @@ <% } %> - <%=layoutManagerVarName%>.setConstraint(<%=figureVarName%>, <%=layoutConstraintVarName%>); Index: templates/layoutData/GridLayoutData.javajet =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.graphdef.codegen/templates/layoutData/GridLayoutData.javajet,v retrieving revision 1.3 diff -u -r1.3 GridLayoutData.javajet --- templates/layoutData/GridLayoutData.javajet 13 Mar 2006 17:53:19 -0000 1.3 +++ templates/layoutData/GridLayoutData.javajet 28 Apr 2006 14:01:30 -0000 @@ -28,5 +28,4 @@ <%=layoutConstraintVarName%>.verticalSpan = <%=gmfLayoutData.getVerticalSpan()%>; <%=layoutConstraintVarName%>.grabExcessHorizontalSpace = <%=gmfLayoutData.isGrabExcessHorizontalSpace()%>; <%=layoutConstraintVarName%>.grabExcessVerticalSpace = <%=gmfLayoutData.isGrabExcessVerticalSpace()%>; - <%=layoutManagerVarName%>.setConstraint(<%=figureVarName%>, <%=layoutConstraintVarName%>); Index: templates/layoutData/CustomLayoutData.javajet =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.graphdef.codegen/templates/layoutData/CustomLayoutData.javajet,v retrieving revision 1.3 diff -u -r1.3 CustomLayoutData.javajet --- templates/layoutData/CustomLayoutData.javajet 13 Mar 2006 17:53:19 -0000 1.3 +++ templates/layoutData/CustomLayoutData.javajet 28 Apr 2006 14:01:30 -0000 @@ -8,4 +8,4 @@ %> <%=layoutImplClassName%> <%=args.getConstraintVariableName()%> = new <%=layoutImplClassName%>(); <%=dispatcher.dispatch("customAttributes", new Object[] {layoutData, dispatcher, args.getConstraintVariableName()})%> -<%=args.getManagerVariableName()%>.setConstraint(<%=args.getVariableName()%>, <%=args.getConstraintVariableName()%>); + Index: src/org/eclipse/gmf/graphdef/codegen/templates/InitGridLayoutDataGenerator.java =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.graphdef.codegen/src/org/eclipse/gmf/graphdef/codegen/templates/InitGridLayoutDataGenerator.java,v retrieving revision 1.4 diff -u -r1.4 InitGridLayoutDataGenerator.java --- src/org/eclipse/gmf/graphdef/codegen/templates/InitGridLayoutDataGenerator.java 7 Apr 2006 14:49:17 -0000 1.4 +++ src/org/eclipse/gmf/graphdef/codegen/templates/InitGridLayoutDataGenerator.java 28 Apr 2006 14:01:30 -0000 @@ -38,11 +38,8 @@ protected final String TEXT_21 = ".grabExcessHorizontalSpace = "; protected final String TEXT_22 = ";" + NL + "\t\t\t"; protected final String TEXT_23 = ".grabExcessVerticalSpace = "; - protected final String TEXT_24 = ";" + NL + "\t\t\t"; - protected final String TEXT_25 = ".setConstraint("; - protected final String TEXT_26 = ", "; - protected final String TEXT_27 = ");" + NL; - protected final String TEXT_28 = NL; + protected final String TEXT_24 = ";" + NL; + protected final String TEXT_25 = NL; public String generate(Object argument) { @@ -109,13 +106,7 @@ stringBuffer.append(TEXT_23); stringBuffer.append(gmfLayoutData.isGrabExcessVerticalSpace()); stringBuffer.append(TEXT_24); - stringBuffer.append(layoutManagerVarName); stringBuffer.append(TEXT_25); - stringBuffer.append(figureVarName); - stringBuffer.append(TEXT_26); - stringBuffer.append(layoutConstraintVarName); - stringBuffer.append(TEXT_27); - stringBuffer.append(TEXT_28); return stringBuffer.toString(); } } Index: src/org/eclipse/gmf/graphdef/codegen/templates/InitCustomLayoutDataGenerator.java =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.graphdef.codegen/src/org/eclipse/gmf/graphdef/codegen/templates/InitCustomLayoutDataGenerator.java,v retrieving revision 1.4 diff -u -r1.4 InitCustomLayoutDataGenerator.java --- src/org/eclipse/gmf/graphdef/codegen/templates/InitCustomLayoutDataGenerator.java 7 Apr 2006 14:49:17 -0000 1.4 +++ src/org/eclipse/gmf/graphdef/codegen/templates/InitCustomLayoutDataGenerator.java 28 Apr 2006 14:01:29 -0000 @@ -21,10 +21,7 @@ protected final String TEXT_4 = "();"; protected final String TEXT_5 = NL; protected final String TEXT_6 = NL; - protected final String TEXT_7 = ".setConstraint("; - protected final String TEXT_8 = ", "; - protected final String TEXT_9 = ");"; - protected final String TEXT_10 = NL; + protected final String TEXT_7 = NL; public String generate(Object argument) { @@ -45,13 +42,7 @@ stringBuffer.append(TEXT_5); stringBuffer.append(dispatcher.dispatch("customAttributes", new Object[] {layoutData, dispatcher, args.getConstraintVariableName()})); stringBuffer.append(TEXT_6); - stringBuffer.append(args.getManagerVariableName()); stringBuffer.append(TEXT_7); - stringBuffer.append(args.getVariableName()); - stringBuffer.append(TEXT_8); - stringBuffer.append(args.getConstraintVariableName()); - stringBuffer.append(TEXT_9); - stringBuffer.append(TEXT_10); return stringBuffer.toString(); } } Index: src/org/eclipse/gmf/graphdef/codegen/templates/FigureChildrenGenerator.java =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.graphdef.codegen/src/org/eclipse/gmf/graphdef/codegen/templates/FigureChildrenGenerator.java,v retrieving revision 1.7 diff -u -r1.7 FigureChildrenGenerator.java --- src/org/eclipse/gmf/graphdef/codegen/templates/FigureChildrenGenerator.java 14 Apr 2006 14:37:44 -0000 1.7 +++ src/org/eclipse/gmf/graphdef/codegen/templates/FigureChildrenGenerator.java 28 Apr 2006 14:01:29 -0000 @@ -2,6 +2,9 @@ import org.eclipse.gmf.gmfgraph.*; import org.eclipse.gmf.graphdef.codegen.*; +import org.eclipse.gmf.common.codegen.*; +import org.eclipse.gmf.gmfgraph.util.*; +import org.eclipse.emf.codegen.util.CodeGenUtil; import java.util.*; public class FigureChildrenGenerator @@ -16,63 +19,129 @@ } protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl; - protected final String TEXT_1 = ""; + protected final String TEXT_1 = NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate void createContents(){"; protected final String TEXT_2 = NL + "\t\t"; - protected final String TEXT_3 = NL + "\t\t"; - protected final String TEXT_4 = ".add("; - protected final String TEXT_5 = ");" + NL + "\t\t"; - protected final String TEXT_6 = NL; + protected final String TEXT_3 = NL + "\t\tsetFigure"; + protected final String TEXT_4 = "("; + protected final String TEXT_5 = ");"; + protected final String TEXT_6 = NL + "\t\t"; + protected final String TEXT_7 = NL + "\t\t"; + protected final String TEXT_8 = ".add("; + protected final String TEXT_9 = ", "; + protected final String TEXT_10 = ");"; + protected final String TEXT_11 = NL + "\t}" + NL + "\t"; + protected final String TEXT_12 = NL + "\t\t" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate "; + protected final String TEXT_13 = " f"; + protected final String TEXT_14 = "; " + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic "; + protected final String TEXT_15 = " getFigure"; + protected final String TEXT_16 = "() {" + NL + "\t\treturn f"; + protected final String TEXT_17 = ";" + NL + "\t}" + NL + "\t" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate void setFigure"; + protected final String TEXT_18 = "("; + protected final String TEXT_19 = " fig){" + NL + "\t\tf"; + protected final String TEXT_20 = " = fig;" + NL + "\t}" + NL; public String generate(Object argument) { final StringBuffer stringBuffer = new StringBuffer(); -Object[] args = (Object[]) argument; -List/*
    */ figureChildren = (List) args[0]; -final GraphDefDispatcher dispatcher = (GraphDefDispatcher) args[1]; -GraphDefDispatcher.LayoutArgs parentArgs = (GraphDefDispatcher.LayoutArgs) args[2]; +GraphDefDispatcher.LayoutArgs parentArgs = (GraphDefDispatcher.LayoutArgs) argument; +final Figure root = parentArgs.getFigure(); +final GraphDefDispatcher dispatcher = parentArgs.getDispatcher(); +final ImportAssistant importManager = dispatcher.getImportManager(); + +final List/*
    */ fieldsRequired = new LinkedList/*
    */(); +final Stack/*GraphDefDispatcher.LayoutArgs*/ contextStack = new Stack/*GraphDefDispatcher.LayoutArgs*/(); +final LinkedList queue = new LinkedList(); +final Object marker = new Object(); + +class FieldSupport { + private final Figure myRoot; + + public FieldSupport(Figure root){ + myRoot = root; + } + + public boolean isFieldRequired(Figure descendant){ + return myRoot.equals(descendant.getParent()) || !descendant.getReferencingElements().isEmpty(); + } +} +final FieldSupport fieldSupport = new FieldSupport(root); + stringBuffer.append(TEXT_1); -LinkedList l = new LinkedList(); -l.addAll(figureChildren); -final Object marker = new Object(); -Stack figureVarNamesStack = new Stack(); +queue.addAll(root.getChildren()); int figureCount = 0; -while (!l.isEmpty()) { - Object _nxt = l.removeFirst(); - if (_nxt == marker) { - parentArgs = (GraphDefDispatcher.LayoutArgs) figureVarNamesStack.pop(); +while (!queue.isEmpty()){ + Object _nxt = queue.removeFirst(); + if (_nxt == marker){ + parentArgs = (GraphDefDispatcher.LayoutArgs)contextStack.pop(); continue; } - final FigureMarker figureMarker = (FigureMarker) _nxt; - if (figureMarker instanceof FigureRef) { + if (_nxt instanceof FigureRef) { throw new IllegalStateException("FIXME: sorry, don't support FigureRef for a while"); } - final String figureVarName = "fig_" + figureCount; - final String layoutManagerVarName = "layouter" + figureCount; - final String layoutDataVarName = "layData" + figureCount; + final Figure nextChild = (Figure) _nxt; + final String childVarName = "fig_" + figureCount; + final String childLayoutManager = "layouter" + figureCount; + final String childConstraint = "layData" + figureCount; figureCount++; - // FIXME instantiate - FigureRef - dispatch to 'instantiate' template? - GraphDefDispatcher.LayoutArgs nextLevelArgs = dispatcher.createLayoutArgs((Figure) figureMarker, figureVarName, layoutManagerVarName, layoutDataVarName); + + // FIXME instantiate - FigureRef - dispatch to 'instantiate' template? + GraphDefDispatcher.LayoutArgs nextLevelArgs = dispatcher.createLayoutArgs(nextChild, childVarName, childLayoutManager, childConstraint); stringBuffer.append(TEXT_2); stringBuffer.append(dispatcher.dispatch("instantiate", nextLevelArgs)); + +if (fieldSupport.isFieldRequired(nextChild)){ + fieldsRequired.add(nextChild); stringBuffer.append(TEXT_3); - stringBuffer.append(parentArgs.getVariableName()); + stringBuffer.append(nextChild.getName()); stringBuffer.append(TEXT_4); - stringBuffer.append(figureVarName); + stringBuffer.append(childVarName); stringBuffer.append(TEXT_5); - stringBuffer.append(dispatcher.dispatch("createLayoutData", dispatcher.createLayoutArgs(nextLevelArgs, parentArgs.getManagerVariableName(), layoutDataVarName))); + } + stringBuffer.append(TEXT_6); + stringBuffer.append(dispatcher.dispatch("createLayoutData", nextLevelArgs)); + stringBuffer.append(TEXT_7); + stringBuffer.append(parentArgs.getVariableName()); + stringBuffer.append(TEXT_8); + stringBuffer.append(childVarName); + stringBuffer.append(TEXT_9); + stringBuffer.append(childConstraint); + stringBuffer.append(TEXT_10); -if (_nxt instanceof Figure && !((Figure) _nxt).getChildren().isEmpty()) { - l.addFirst(marker); - l.addAll(0, ((Figure) _nxt).getChildren()); - figureVarNamesStack.push(parentArgs); - parentArgs = nextLevelArgs; // go on processing children of new parentFigure -} // if + if (!nextChild.getChildren().isEmpty()) { + queue.addFirst(marker); + queue.addAll(0, nextChild.getChildren()); + contextStack.push(parentArgs); + parentArgs = nextLevelArgs; // go on processing children of new parentFigure + } } // while - stringBuffer.append(TEXT_6); + stringBuffer.append(TEXT_11); + + final FigureQualifiedNameSwitch fqnSwitch = dispatcher.getFQNSwitch(); + for (Iterator fieldFigures = fieldsRequired.iterator(); fieldFigures.hasNext();){ + Figure next = (Figure)fieldFigures.next(); + final String nextClassName = fqnSwitch.get(next, importManager); + stringBuffer.append(TEXT_12); + stringBuffer.append(nextClassName); + stringBuffer.append(TEXT_13); + stringBuffer.append(CodeGenUtil.capName(next.getName())); + stringBuffer.append(TEXT_14); + stringBuffer.append(nextClassName); + stringBuffer.append(TEXT_15); + stringBuffer.append(next.getName()); + stringBuffer.append(TEXT_16); + stringBuffer.append(CodeGenUtil.capName(next.getName())); + stringBuffer.append(TEXT_17); + stringBuffer.append(next.getName()); + stringBuffer.append(TEXT_18); + stringBuffer.append(nextClassName); + stringBuffer.append(TEXT_19); + stringBuffer.append(CodeGenUtil.capName(next.getName())); + stringBuffer.append(TEXT_20); + } return stringBuffer.toString(); } } Index: src/org/eclipse/gmf/graphdef/codegen/templates/InitXYLayoutDataGenerator.java =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.graphdef.codegen/src/org/eclipse/gmf/graphdef/codegen/templates/InitXYLayoutDataGenerator.java,v retrieving revision 1.3 diff -u -r1.3 InitXYLayoutDataGenerator.java --- src/org/eclipse/gmf/graphdef/codegen/templates/InitXYLayoutDataGenerator.java 7 Apr 2006 14:49:17 -0000 1.3 +++ src/org/eclipse/gmf/graphdef/codegen/templates/InitXYLayoutDataGenerator.java 28 Apr 2006 14:01:30 -0000 @@ -29,11 +29,7 @@ protected final String TEXT_12 = ";" + NL + "\t\t\t"; protected final String TEXT_13 = ".height = "; protected final String TEXT_14 = ";"; - protected final String TEXT_15 = NL + "\t\t\t"; - protected final String TEXT_16 = ".setConstraint("; - protected final String TEXT_17 = ", "; - protected final String TEXT_18 = ");"; - protected final String TEXT_19 = NL; + protected final String TEXT_15 = NL; public String generate(Object argument) { @@ -88,13 +84,6 @@ } stringBuffer.append(TEXT_15); - stringBuffer.append(layoutManagerVarName); - stringBuffer.append(TEXT_16); - stringBuffer.append(figureVarName); - stringBuffer.append(TEXT_17); - stringBuffer.append(layoutConstraintVarName); - stringBuffer.append(TEXT_18); - stringBuffer.append(TEXT_19); return stringBuffer.toString(); } } Index: src/org/eclipse/gmf/graphdef/codegen/templates/TopFigureGenerator.java =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.graphdef.codegen/src/org/eclipse/gmf/graphdef/codegen/templates/TopFigureGenerator.java,v retrieving revision 1.8 diff -u -r1.8 TopFigureGenerator.java --- src/org/eclipse/gmf/graphdef/codegen/templates/TopFigureGenerator.java 21 Apr 2006 17:47:10 -0000 1.8 +++ src/org/eclipse/gmf/graphdef/codegen/templates/TopFigureGenerator.java 28 Apr 2006 14:01:30 -0000 @@ -25,36 +25,14 @@ protected final String TEXT_5 = "() {"; protected final String TEXT_6 = "\t" + NL + "\t\t"; protected final String TEXT_7 = NL + "\t\t"; - protected final String TEXT_8 = NL + "\t\t" + NL + "\t\t"; - protected final String TEXT_9 = " "; - protected final String TEXT_10 = " = createFigure"; - protected final String TEXT_11 = "();" + NL + "\t\tsetFigure"; - protected final String TEXT_12 = "("; - protected final String TEXT_13 = ");" + NL + "\t\tadd("; - protected final String TEXT_14 = ");" + NL + "\t\t"; - protected final String TEXT_15 = "\t\t"; - protected final String TEXT_16 = NL + "\t}" + NL; - protected final String TEXT_17 = NL + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate "; - protected final String TEXT_18 = " f"; - protected final String TEXT_19 = "; " + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic "; - protected final String TEXT_20 = " getFigure"; - protected final String TEXT_21 = "() {" + NL + "\t\treturn f"; - protected final String TEXT_22 = ";" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void setFigure"; - protected final String TEXT_23 = "("; - protected final String TEXT_24 = " figure) {" + NL + "\t\tf"; - protected final String TEXT_25 = " = figure;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate "; - protected final String TEXT_26 = " createFigure"; - protected final String TEXT_27 = "() {"; - protected final String TEXT_28 = NL; - protected final String TEXT_29 = NL; - protected final String TEXT_30 = NL + "\t\treturn "; - protected final String TEXT_31 = ";" + NL + "\t}" + NL; - protected final String TEXT_32 = NL; - protected final String TEXT_33 = NL; - protected final String TEXT_34 = NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate boolean myUseLocalCoordinates = "; - protected final String TEXT_35 = ";" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected boolean useLocalCoordinates() {" + NL + "\t\treturn myUseLocalCoordinates;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void setUseLocalCoordinates(boolean useLocalCoordinates) {" + NL + "\t\tmyUseLocalCoordinates = useLocalCoordinates;" + NL + "\t}" + NL + "\t"; - protected final String TEXT_36 = NL + "}"; - protected final String TEXT_37 = NL; + protected final String TEXT_8 = NL + "\t\tcreateContents();" + NL + "\t}" + NL; + protected final String TEXT_9 = NL; + protected final String TEXT_10 = NL; + protected final String TEXT_11 = NL; + protected final String TEXT_12 = NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate boolean myUseLocalCoordinates = "; + protected final String TEXT_13 = ";" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected boolean useLocalCoordinates() {" + NL + "\t\treturn myUseLocalCoordinates;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void setUseLocalCoordinates(boolean useLocalCoordinates) {" + NL + "\t\tmyUseLocalCoordinates = useLocalCoordinates;" + NL + "\t}" + NL + "\t"; + protected final String TEXT_14 = NL + "}"; + protected final String TEXT_15 = NL; public String generate(Object argument) { @@ -82,65 +60,12 @@ stringBuffer.append(dispatcher.dispatch("createLayout", dispatcherArgs)); stringBuffer.append(TEXT_7); stringBuffer.append(dispatcher.dispatch(figure, dispatcherArgs)); - -for (Iterator it = figure.getChildren().iterator(); it.hasNext();) { - Figure next = (Figure) it.next(); - final String childVarName = "child" + next.getName(); stringBuffer.append(TEXT_8); - stringBuffer.append(fqnSwitch.get(next, importManager)); stringBuffer.append(TEXT_9); - stringBuffer.append(childVarName); + stringBuffer.append(dispatcher.dispatch("Children", dispatcherArgs)); stringBuffer.append(TEXT_10); - stringBuffer.append(next.getName()); - stringBuffer.append(TEXT_11); - stringBuffer.append(next.getName()); - stringBuffer.append(TEXT_12); - stringBuffer.append(childVarName); - stringBuffer.append(TEXT_13); - stringBuffer.append(childVarName); - stringBuffer.append(TEXT_14); - stringBuffer.append(dispatcher.dispatch("createLayoutData", dispatcher.createLayoutArgs(next, childVarName, dispatcherArgs.getManagerVariableName(), "layoutData" + next.getName()))); - stringBuffer.append(TEXT_15); - } - stringBuffer.append(TEXT_16); - -int fc = 0; -for (Iterator it = figure.getChildren().iterator(); it.hasNext(); fc++) { - Figure next = (Figure) it.next(); - final String nextClassName = fqnSwitch.get(next, importManager); - stringBuffer.append(TEXT_17); - stringBuffer.append(nextClassName); - stringBuffer.append(TEXT_18); - stringBuffer.append(next.getName()); - stringBuffer.append(TEXT_19); - stringBuffer.append(nextClassName); - stringBuffer.append(TEXT_20); - stringBuffer.append(next.getName()); - stringBuffer.append(TEXT_21); - stringBuffer.append(next.getName()); - stringBuffer.append(TEXT_22); - stringBuffer.append(next.getName()); - stringBuffer.append(TEXT_23); - stringBuffer.append(nextClassName); - stringBuffer.append(TEXT_24); - stringBuffer.append(next.getName()); - stringBuffer.append(TEXT_25); - stringBuffer.append(nextClassName); - stringBuffer.append(TEXT_26); - stringBuffer.append(next.getName()); - stringBuffer.append(TEXT_27); - GraphDefDispatcher.LayoutArgs childFigureArgs = dispatcher.createLayoutArgs(next, next.getName(), "layoutManager" + next.getName(), null); - stringBuffer.append(TEXT_28); - stringBuffer.append(dispatcher.dispatch("instantiate", childFigureArgs)); - stringBuffer.append(TEXT_29); - stringBuffer.append(dispatcher.dispatch("Children", new Object[] {next.getChildren(), dispatcher, childFigureArgs})); - stringBuffer.append(TEXT_30); - stringBuffer.append(next.getName()); - stringBuffer.append(TEXT_31); - } - stringBuffer.append(TEXT_32); if (false == figure instanceof Polyline) {/*no much sense to define useLocalCoordinates for polyline and its descendants*/ - stringBuffer.append(TEXT_33); + stringBuffer.append(TEXT_11); // simple heuristic to detect need for local coordinates boolean useLocalDefaultValue = false; @@ -151,13 +76,13 @@ } } - stringBuffer.append(TEXT_34); + stringBuffer.append(TEXT_12); stringBuffer.append(useLocalDefaultValue); - stringBuffer.append(TEXT_35); + stringBuffer.append(TEXT_13); } - stringBuffer.append(TEXT_36); + stringBuffer.append(TEXT_14); importManager.emitSortedImports(); - stringBuffer.append(TEXT_37); + stringBuffer.append(TEXT_15); return stringBuffer.toString(); } } Index: src/org/eclipse/gmf/graphdef/codegen/templates/InitBorderLayoutDataGenerator.java =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.graphdef.codegen/src/org/eclipse/gmf/graphdef/codegen/templates/InitBorderLayoutDataGenerator.java,v retrieving revision 1.3 diff -u -r1.3 InitBorderLayoutDataGenerator.java --- src/org/eclipse/gmf/graphdef/codegen/templates/InitBorderLayoutDataGenerator.java 7 Apr 2006 14:49:17 -0000 1.3 +++ src/org/eclipse/gmf/graphdef/codegen/templates/InitBorderLayoutDataGenerator.java 28 Apr 2006 14:01:29 -0000 @@ -16,12 +16,11 @@ protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl; protected final String TEXT_1 = ""; - protected final String TEXT_2 = NL + "\t\t"; - protected final String TEXT_3 = ".setConstraint("; - protected final String TEXT_4 = ", "; - protected final String TEXT_5 = "."; - protected final String TEXT_6 = ");" + NL; - protected final String TEXT_7 = NL; + protected final String TEXT_2 = NL + "\tObject "; + protected final String TEXT_3 = " = "; + protected final String TEXT_4 = "."; + protected final String TEXT_5 = ";" + NL; + protected final String TEXT_6 = NL; public String generate(Object argument) { @@ -63,15 +62,13 @@ } stringBuffer.append(TEXT_2); - stringBuffer.append(argsBundle.getManagerVariableName()); + stringBuffer.append(argsBundle.getConstraintVariableName()); stringBuffer.append(TEXT_3); - stringBuffer.append(figureVarName); - stringBuffer.append(TEXT_4); stringBuffer.append(dispatcher.getImportManager().getImportedName("org.eclipse.draw2d.BorderLayout")); - stringBuffer.append(TEXT_5); + stringBuffer.append(TEXT_4); stringBuffer.append(constantName); + stringBuffer.append(TEXT_5); stringBuffer.append(TEXT_6); - stringBuffer.append(TEXT_7); return stringBuffer.toString(); } } Index: src/org/eclipse/gmf/graphdef/codegen/templates/NewLayoutDataGenerator.java =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.graphdef.codegen/src/org/eclipse/gmf/graphdef/codegen/templates/NewLayoutDataGenerator.java,v retrieving revision 1.3 diff -u -r1.3 NewLayoutDataGenerator.java --- src/org/eclipse/gmf/graphdef/codegen/templates/NewLayoutDataGenerator.java 7 Apr 2006 14:49:17 -0000 1.3 +++ src/org/eclipse/gmf/graphdef/codegen/templates/NewLayoutDataGenerator.java 28 Apr 2006 14:01:30 -0000 @@ -17,7 +17,9 @@ protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl; protected final String TEXT_1 = ""; protected final String TEXT_2 = "\t\t\t"; - protected final String TEXT_3 = NL; + protected final String TEXT_3 = NL + "\t\tObject "; + protected final String TEXT_4 = " = null;"; + protected final String TEXT_5 = NL; public String generate(Object argument) { @@ -37,8 +39,12 @@ stringBuffer.append(TEXT_1); stringBuffer.append(dispatcher.dispatch(gmfLayoutData, argsBundle)); stringBuffer.append(TEXT_2); - } + } else { stringBuffer.append(TEXT_3); + stringBuffer.append(argsBundle.getConstraintVariableName()); + stringBuffer.append(TEXT_4); + } + stringBuffer.append(TEXT_5); return stringBuffer.toString(); } } Index: templates/new/LayoutData.javajet =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.graphdef.codegen/templates/new/LayoutData.javajet,v retrieving revision 1.2 diff -u -r1.2 LayoutData.javajet --- templates/new/LayoutData.javajet 13 Feb 2006 18:17:57 -0000 1.2 +++ templates/new/LayoutData.javajet 28 Apr 2006 14:01:30 -0000 @@ -13,4 +13,6 @@ if (gmfLayoutData != null && figureInstance.eContainer() instanceof Figure && ((Figure) figureInstance.eContainer()).getLayout() != null) {%> <%=dispatcher.dispatch(gmfLayoutData, argsBundle)%> +<%} else {%> + Object <%=argsBundle.getConstraintVariableName()%> = null; <%}%> Index: templates/top/Figure.javajet =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.graphdef.codegen/templates/top/Figure.javajet,v retrieving revision 1.7 diff -u -r1.7 Figure.javajet --- templates/top/Figure.javajet 21 Apr 2006 17:47:10 -0000 1.7 +++ templates/top/Figure.javajet 28 Apr 2006 14:01:30 -0000 @@ -24,54 +24,10 @@ %> <%=dispatcher.dispatch("createLayout", dispatcherArgs)%> <%=dispatcher.dispatch(figure, dispatcherArgs)%> -<% -for (Iterator it = figure.getChildren().iterator(); it.hasNext();) { - Figure next = (Figure) it.next(); - final String childVarName = "child" + next.getName();%> - - <%=fqnSwitch.get(next, importManager)%> <%=childVarName%> = createFigure<%=next.getName()%>(); - setFigure<%=next.getName()%>(<%=childVarName%>); - add(<%=childVarName%>); - <%=dispatcher.dispatch("createLayoutData", dispatcher.createLayoutArgs(next, childVarName, dispatcherArgs.getManagerVariableName(), "layoutData" + next.getName()))%> -<%}%> - } - -<% -int fc = 0; -for (Iterator it = figure.getChildren().iterator(); it.hasNext(); fc++) { - Figure next = (Figure) it.next(); - final String nextClassName = fqnSwitch.get(next, importManager);%> - - /** - * @generated - */ - private <%=nextClassName%> f<%=next.getName()%>; - - /** - * @generated - */ - public <%=nextClassName%> getFigure<%=next.getName()%>() { - return f<%=next.getName()%>; + createContents(); } - /** - * @generated - */ - protected void setFigure<%=next.getName()%>(<%=nextClassName%> figure) { - f<%=next.getName()%> = figure; - } - - /** - * @generated - */ - private <%=nextClassName%> createFigure<%=next.getName()%>() { -<% GraphDefDispatcher.LayoutArgs childFigureArgs = dispatcher.createLayoutArgs(next, next.getName(), "layoutManager" + next.getName(), null);%> -<%=dispatcher.dispatch("instantiate", childFigureArgs)%> -<%=dispatcher.dispatch("Children", new Object[] {next.getChildren(), dispatcher, childFigureArgs})%> - return <%=next.getName()%>; - } - -<%}%> +<%=dispatcher.dispatch("Children", dispatcherArgs)%> <%if (false == figure instanceof Polyline) {/*no much sense to define useLocalCoordinates for polyline and its descendants*/%> <%@ include file="localCoordinates.jetinc"%> Index: templates/children/Figure.javajet =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.graphdef.codegen/templates/children/Figure.javajet,v retrieving revision 1.6 diff -u -r1.6 Figure.javajet --- templates/children/Figure.javajet 14 Apr 2006 14:37:44 -0000 1.6 +++ templates/children/Figure.javajet 28 Apr 2006 14:01:30 -0000 @@ -1,43 +1,97 @@ <%@ jet package="org.eclipse.gmf.graphdef.codegen.templates" class="FigureChildrenGenerator" - imports="org.eclipse.gmf.gmfgraph.* org.eclipse.gmf.graphdef.codegen.* java.util.*"%> + imports="org.eclipse.gmf.gmfgraph.* org.eclipse.gmf.graphdef.codegen.* org.eclipse.gmf.common.codegen.* org.eclipse.gmf.gmfgraph.util.* org.eclipse.emf.codegen.util.CodeGenUtil java.util.*"%> <% -Object[] args = (Object[]) argument; -List/*
    */ figureChildren = (List) args[0]; -final GraphDefDispatcher dispatcher = (GraphDefDispatcher) args[1]; -GraphDefDispatcher.LayoutArgs parentArgs = (GraphDefDispatcher.LayoutArgs) args[2]; +GraphDefDispatcher.LayoutArgs parentArgs = (GraphDefDispatcher.LayoutArgs) argument; +final Figure root = parentArgs.getFigure(); +final GraphDefDispatcher dispatcher = parentArgs.getDispatcher(); +final ImportAssistant importManager = dispatcher.getImportManager(); + +final List/*
    */ fieldsRequired = new LinkedList/*
    */(); +final Stack/*GraphDefDispatcher.LayoutArgs*/ contextStack = new Stack/*GraphDefDispatcher.LayoutArgs*/(); +final LinkedList queue = new LinkedList(); +final Object marker = new Object(); + +class FieldSupport { + private final Figure myRoot; + + public FieldSupport(Figure root){ + myRoot = root; + } + + public boolean isFieldRequired(Figure descendant){ + return myRoot.equals(descendant.getParent()) || !descendant.getReferencingElements().isEmpty(); + } +} +final FieldSupport fieldSupport = new FieldSupport(root); + %> + /** + * @generated + */ + private void createContents(){ <% -LinkedList l = new LinkedList(); -l.addAll(figureChildren); -final Object marker = new Object(); -Stack figureVarNamesStack = new Stack(); +queue.addAll(root.getChildren()); int figureCount = 0; -while (!l.isEmpty()) { - Object _nxt = l.removeFirst(); - if (_nxt == marker) { - parentArgs = (GraphDefDispatcher.LayoutArgs) figureVarNamesStack.pop(); +while (!queue.isEmpty()){ + Object _nxt = queue.removeFirst(); + if (_nxt == marker){ + parentArgs = (GraphDefDispatcher.LayoutArgs)contextStack.pop(); continue; } - final FigureMarker figureMarker = (FigureMarker) _nxt; - if (figureMarker instanceof FigureRef) { + if (_nxt instanceof FigureRef) { throw new IllegalStateException("FIXME: sorry, don't support FigureRef for a while"); } - final String figureVarName = "fig_" + figureCount; - final String layoutManagerVarName = "layouter" + figureCount; - final String layoutDataVarName = "layData" + figureCount; + final Figure nextChild = (Figure) _nxt; + final String childVarName = "fig_" + figureCount; + final String childLayoutManager = "layouter" + figureCount; + final String childConstraint = "layData" + figureCount; figureCount++; - // FIXME instantiate - FigureRef - dispatch to 'instantiate' template? - GraphDefDispatcher.LayoutArgs nextLevelArgs = dispatcher.createLayoutArgs((Figure) figureMarker, figureVarName, layoutManagerVarName, layoutDataVarName);%> + + // FIXME instantiate - FigureRef - dispatch to 'instantiate' template? + GraphDefDispatcher.LayoutArgs nextLevelArgs = dispatcher.createLayoutArgs(nextChild, childVarName, childLayoutManager, childConstraint);%> <%=dispatcher.dispatch("instantiate", nextLevelArgs)%> - <%=parentArgs.getVariableName()%>.add(<%=figureVarName%>); - <%=dispatcher.dispatch("createLayoutData", dispatcher.createLayoutArgs(nextLevelArgs, parentArgs.getManagerVariableName(), layoutDataVarName))%> <% -if (_nxt instanceof Figure && !((Figure) _nxt).getChildren().isEmpty()) { - l.addFirst(marker); - l.addAll(0, ((Figure) _nxt).getChildren()); - figureVarNamesStack.push(parentArgs); - parentArgs = nextLevelArgs; // go on processing children of new parentFigure -} // if +if (fieldSupport.isFieldRequired(nextChild)){ + fieldsRequired.add(nextChild); %> + setFigure<%=nextChild.getName()%>(<%=childVarName%>); +<%}%> + <%=dispatcher.dispatch("createLayoutData", nextLevelArgs)%> + <%=parentArgs.getVariableName()%>.add(<%=childVarName%>, <%=childConstraint%>); +<% + if (!nextChild.getChildren().isEmpty()) { + queue.addFirst(marker); + queue.addAll(0, nextChild.getChildren()); + contextStack.push(parentArgs); + parentArgs = nextLevelArgs; // go on processing children of new parentFigure + } } // while %> + } + +<% + final FigureQualifiedNameSwitch fqnSwitch = dispatcher.getFQNSwitch(); + for (Iterator fieldFigures = fieldsRequired.iterator(); fieldFigures.hasNext();){ + Figure next = (Figure)fieldFigures.next(); + final String nextClassName = fqnSwitch.get(next, importManager);%> + + /** + * @generated + */ + private <%=nextClassName%> f<%=CodeGenUtil.capName(next.getName())%>; + + /** + * @generated + */ + public <%=nextClassName%> getFigure<%=next.getName()%>() { + return f<%=CodeGenUtil.capName(next.getName())%>; + } + + /** + * @generated + */ + private void setFigure<%=next.getName()%>(<%=nextClassName%> fig){ + f<%=CodeGenUtil.capName(next.getName())%> = fig; + } + +<% }%> \ No newline at end of file Index: src/org/eclipse/gmf/graphdef/codegen/FieldSupport.java =================================================================== RCS file: src/org/eclipse/gmf/graphdef/codegen/FieldSupport.java diff -N src/org/eclipse/gmf/graphdef/codegen/FieldSupport.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src/org/eclipse/gmf/graphdef/codegen/FieldSupport.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2006 Borland Software Corporation + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Michael Golubev (Borland) - initial API and implementation + */ + +package org.eclipse.gmf.graphdef.codegen; + +import org.eclipse.gmf.gmfgraph.Figure; + +public class FieldSupport { + private final Figure myRoot; + + public FieldSupport(Figure root){ + myRoot = root; + } + + public boolean isFieldRequired(Figure descendant){ + return myRoot.equals(descendant.getParent()) || !descendant.getReferencingElements().isEmpty(); + } + +} #P org.eclipse.gmf.graphdef.edit Index: plugin.properties =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.graphdef.edit/plugin.properties,v retrieving revision 1.15 diff -u -r1.15 plugin.properties --- plugin.properties 20 Apr 2006 13:59:39 -0000 1.15 +++ plugin.properties 28 Apr 2006 14:01:31 -0000 @@ -240,10 +240,11 @@ _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? - + _UI_Direction_NORTH_SOUTH_literal = NORTH_SOUTH _UI_Direction_EAST_WEST_literal = EAST_WEST _UI_Direction_NSEW_literal = NSEW _UI_LabelOffsetFacet_type = Label Offset Facet _UI_LabelOffsetFacet_x_feature = X _UI_LabelOffsetFacet_y_feature = Y +_UI_Figure_referencingElements_feature = Referencing Elements