### 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