From f4ccb8afab6cedaa388660709d624510392a1c6f Mon Sep 17 00:00:00 2001 From: Dongyue Mou <mou@fortiss.org> Date: Tue, 6 Dec 2011 15:50:37 +0000 Subject: [PATCH] added opposite references to IConnector, IConnection and IHierarchicalElement for convenient model navigation and data binding refs 301 --- .../trunk/model/base.ecore | 32 ++++++++++++++++--- .../trunk/model/base.genmodel | 7 +++- 2 files changed, 34 insertions(+), 5 deletions(-) diff --git a/org.fortiss.tooling.base/trunk/model/base.ecore b/org.fortiss.tooling.base/trunk/model/base.ecore index 115d1e239..c7a15f016 100644 --- a/org.fortiss.tooling.base/trunk/model/base.ecore +++ b/org.fortiss.tooling.base/trunk/model/base.ecore @@ -10,7 +10,7 @@ <details key="documentation" value="Super class of first class model elements."/> </eAnnotations> <eStructuralFeatures xsi:type="ecore:EReference" name="specifications" upperBound="-1" - eType="#//element/IModelElementSpecification" containment="true"> + eType="#//element/IModelElementSpecification" containment="true" eOpposite="#//element/IModelElementSpecification/specificationOf"> <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> <details key="documentation" value="List of model element specifications providing additional model element properties."/> </eAnnotations> @@ -27,6 +27,12 @@ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> <details key="documentation" value="Super class of model element specifications. Such specifications provide additional plugable properties."/> </eAnnotations> + <eStructuralFeatures xsi:type="ecore:EReference" name="specificationOf" eType="#//element/IModelElement" + eOpposite="#//element/IModelElement/specifications"> + <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> + <details key="documentation" value="The ModelElement which owns this specification"/> + </eAnnotations> + </eStructuralFeatures> </eClassifiers> <eClassifiers xsi:type="ecore:EClass" name="IModelElementReference" abstract="true" interface="true"> @@ -46,17 +52,23 @@ <details key="documentation" value="Super class of hierarchic model elements."/> </eAnnotations> <eStructuralFeatures xsi:type="ecore:EReference" name="connections" upperBound="-1" - eType="#//element/IConnection" containment="true"> + eType="#//element/IConnection" containment="true" eOpposite="#//element/IConnection/owner"> <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> <details key="documentation" value="List of aggregated connection model elements. Usually a hierarchic element aggregates all connections of its direct sub-structure."/> </eAnnotations> </eStructuralFeatures> <eStructuralFeatures xsi:type="ecore:EReference" name="connectors" upperBound="-1" - eType="#//element/IConnector" containment="true"> + eType="#//element/IConnector" containment="true" eOpposite="#//element/IConnector/owner"> <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> <details key="documentation" value="List of aggregated connectors."/> </eAnnotations> </eStructuralFeatures> + <eStructuralFeatures xsi:type="ecore:EReference" name="container" eType="#//element/IHierarchicElementContainer" + eOpposite="#//element/IHierarchicElementContainer/containedElements"> + <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> + <details key="documentation" value="The container which this element belongs to"/> + </eAnnotations> + </eStructuralFeatures> </eClassifiers> <eClassifiers xsi:type="ecore:EClass" name="IHierarchicElementContainer" abstract="true" interface="true"> @@ -64,7 +76,7 @@ <details key="documentation" value="Super class of containers of hierarchic model elements."/> </eAnnotations> <eStructuralFeatures xsi:type="ecore:EReference" name="containedElements" upperBound="-1" - eType="#//element/IHierarchicElement" containment="true"> + eType="#//element/IHierarchicElement" containment="true" eOpposite="#//element/IHierarchicElement/container"> <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> <details key="documentation" value="The contained hierarchic model elements."/> </eAnnotations> @@ -87,6 +99,12 @@ <details key="documentation" value="The outgoing connections."/> </eAnnotations> </eStructuralFeatures> + <eStructuralFeatures xsi:type="ecore:EReference" name="owner" eType="#//element/IHierarchicElement" + eOpposite="#//element/IHierarchicElement/connectors"> + <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> + <details key="documentation" value="The ModelElement which owns this connector"/> + </eAnnotations> + </eStructuralFeatures> </eClassifiers> <eClassifiers xsi:type="ecore:EClass" name="IConnection" abstract="true" interface="true" eSuperTypes="#//element/IModelElement"> @@ -105,6 +123,12 @@ <details key="documentation" value="The connection's target connector."/> </eAnnotations> </eStructuralFeatures> + <eStructuralFeatures xsi:type="ecore:EReference" name="owner" eType="#//element/IHierarchicElement" + eOpposite="#//element/IHierarchicElement/connections"> + <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> + <details key="documentation" value="The ModelElement which owns this connection"/> + </eAnnotations> + </eStructuralFeatures> </eClassifiers> <eClassifiers xsi:type="ecore:EClass" name="IHiddenSpecification" abstract="true" interface="true" eSuperTypes="#//element/IModelElementSpecification"> diff --git a/org.fortiss.tooling.base/trunk/model/base.genmodel b/org.fortiss.tooling.base/trunk/model/base.genmodel index 39ca72659..c4edb8b0e 100644 --- a/org.fortiss.tooling.base/trunk/model/base.genmodel +++ b/org.fortiss.tooling.base/trunk/model/base.genmodel @@ -15,7 +15,9 @@ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference base.ecore#//element/IModelElement/referencedBy"/> </genClasses> - <genClasses image="false" ecoreClass="base.ecore#//element/IModelElementSpecification"/> + <genClasses image="false" ecoreClass="base.ecore#//element/IModelElementSpecification"> + <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference base.ecore#//element/IModelElementSpecification/specificationOf"/> + </genClasses> <genClasses image="false" ecoreClass="base.ecore#//element/IModelElementReference"> <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference base.ecore#//element/IModelElementReference/reference"/> @@ -23,6 +25,7 @@ <genClasses image="false" ecoreClass="base.ecore#//element/IHierarchicElement"> <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference base.ecore#//element/IHierarchicElement/connections"/> <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference base.ecore#//element/IHierarchicElement/connectors"/> + <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference base.ecore#//element/IHierarchicElement/container"/> </genClasses> <genClasses image="false" ecoreClass="base.ecore#//element/IHierarchicElementContainer"> <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference base.ecore#//element/IHierarchicElementContainer/containedElements"/> @@ -32,12 +35,14 @@ ecoreFeature="ecore:EReference base.ecore#//element/IConnector/incoming"/> <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference base.ecore#//element/IConnector/outgoing"/> + <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference base.ecore#//element/IConnector/owner"/> </genClasses> <genClasses image="false" ecoreClass="base.ecore#//element/IConnection"> <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference base.ecore#//element/IConnection/source"/> <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference base.ecore#//element/IConnection/target"/> + <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference base.ecore#//element/IConnection/owner"/> </genClasses> <genClasses image="false" ecoreClass="base.ecore#//element/IHiddenSpecification"/> <genClasses ecoreClass="base.ecore#//element/IAnnotatedSpecification"/> -- GitLab