View | Details | Raw Unified | Return to bug 143666 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/eclipse/gmf/tests/gen/CodegenReconcileTest.java (-126 / +5 lines)
Lines 18-27 Link Here
18
import org.eclipse.emf.common.util.EList;
18
import org.eclipse.emf.common.util.EList;
19
import org.eclipse.emf.ecore.EAttribute;
19
import org.eclipse.emf.ecore.EAttribute;
20
import org.eclipse.emf.ecore.EClass;
20
import org.eclipse.emf.ecore.EClass;
21
import org.eclipse.emf.ecore.EReference;
22
import org.eclipse.emf.ecore.EStructuralFeature;
21
import org.eclipse.emf.ecore.EStructuralFeature;
23
import org.eclipse.emf.ecore.ETypedElement;
24
import org.eclipse.emf.ecore.EcoreFactory;
25
import org.eclipse.emf.ecore.EcorePackage;
22
import org.eclipse.emf.ecore.EcorePackage;
26
import org.eclipse.emf.ecore.util.EcoreUtil;
23
import org.eclipse.emf.ecore.util.EcoreUtil;
27
import org.eclipse.gmf.codegen.gmfgen.GMFGenPackage;
24
import org.eclipse.gmf.codegen.gmfgen.GMFGenPackage;
Lines 30-61 Link Here
30
import org.eclipse.gmf.codegen.gmfgen.GenEditorGenerator;
27
import org.eclipse.gmf.codegen.gmfgen.GenEditorGenerator;
31
import org.eclipse.gmf.codegen.gmfgen.GenNode;
28
import org.eclipse.gmf.codegen.gmfgen.GenNode;
32
import org.eclipse.gmf.codegen.gmfgen.GenPlugin;
29
import org.eclipse.gmf.codegen.gmfgen.GenPlugin;
33
import org.eclipse.gmf.gmfgraph.Canvas;
34
import org.eclipse.gmf.gmfgraph.Compartment;
35
import org.eclipse.gmf.gmfgraph.Connection;
36
import org.eclipse.gmf.gmfgraph.Figure;
37
import org.eclipse.gmf.gmfgraph.FigureGallery;
38
import org.eclipse.gmf.gmfgraph.GMFGraphFactory;
39
import org.eclipse.gmf.gmfgraph.Node;
40
import org.eclipse.gmf.internal.codegen.GMFGenConfig;
30
import org.eclipse.gmf.internal.codegen.GMFGenConfig;
41
import org.eclipse.gmf.internal.common.reconcile.DefaultDecisionMaker;
31
import org.eclipse.gmf.internal.common.reconcile.DefaultDecisionMaker;
42
import org.eclipse.gmf.internal.common.reconcile.Reconciler;
32
import org.eclipse.gmf.internal.common.reconcile.Reconciler;
43
import org.eclipse.gmf.internal.common.reconcile.ReconcilerConfigBase;
33
import org.eclipse.gmf.internal.common.reconcile.ReconcilerConfigBase;
44
import org.eclipse.gmf.mappings.ChildReference;
45
import org.eclipse.gmf.mappings.CompartmentMapping;
46
import org.eclipse.gmf.mappings.GMFMapFactory;
47
import org.eclipse.gmf.mappings.NodeMapping;
48
import org.eclipse.gmf.tests.ConfiguredTestCase;
34
import org.eclipse.gmf.tests.ConfiguredTestCase;
35
import org.eclipse.gmf.tests.setup.CompartmentsSessionSetup;
49
import org.eclipse.gmf.tests.setup.DiaDefSetup;
36
import org.eclipse.gmf.tests.setup.DiaDefSetup;
50
import org.eclipse.gmf.tests.setup.DiaDefSource;
51
import org.eclipse.gmf.tests.setup.DiaGenSetup;
37
import org.eclipse.gmf.tests.setup.DiaGenSetup;
52
import org.eclipse.gmf.tests.setup.DomainModelSetup;
53
import org.eclipse.gmf.tests.setup.DomainModelSource;
54
import org.eclipse.gmf.tests.setup.MapDefSource;
38
import org.eclipse.gmf.tests.setup.MapDefSource;
55
import org.eclipse.gmf.tests.setup.MapSetup;
39
import org.eclipse.gmf.tests.setup.MapSetup;
56
import org.eclipse.gmf.tests.setup.ToolDefSetup;
40
import org.eclipse.gmf.tests.setup.ToolDefSetup;
57
import org.eclipse.gmf.tests.setup.ToolDefSource;
58
import org.eclipse.gmf.tests.setup.DomainModelSource.NodeData;
59
41
60
public class CodegenReconcileTest extends ConfiguredTestCase {
42
public class CodegenReconcileTest extends ConfiguredTestCase {
61
43
Lines 67-73 Link Here
67
49
68
	protected void setUp() throws Exception {
50
	protected void setUp() throws Exception {
69
		super.setUp();
51
		super.setUp();
70
		MapDefSource mapDefSource = new MapSetup().init(new DiaDefSetup(null).init(), getSetup().getDomainModel(), new ToolDefSetup());
52
		MapDefSource mapDefSource = new MapSetup().init(new DiaDefSetup().init(), getSetup().getDomainModel(), new ToolDefSetup());
71
		DiaGenSetup diaGenSetup = new DiaGenSetup().init(mapDefSource);
53
		DiaGenSetup diaGenSetup = new DiaGenSetup().init(mapDefSource);
72
		myEditorGen = diaGenSetup.getGenDiagram().getEditorGen();
54
		myEditorGen = diaGenSetup.getGenDiagram().getEditorGen();
73
	}
55
	}
Lines 140-244 Link Here
140
		
122
		
141
		checkUserChange(new GenPluginChange());
123
		checkUserChange(new GenPluginChange());
142
	}
124
	}
143
	
144
	
145
	public void testReconcileCompartmentIsListlayout(){
146
		class ConfigWithCompartments implements DiaDefSetup.Config {
147
			public void setupCanvasDef(Canvas canvasDef) {
148
				FigureGallery oneMoreGallery = GMFGraphFactory.eINSTANCE.createFigureGallery();
149
				canvasDef.getFigures().add(oneMoreGallery);
150
				Figure compartmentFigure = GMFGraphFactory.eINSTANCE.createRectangle();
151
				oneMoreGallery.getFigures().add(compartmentFigure);
152
				Compartment compartment = createCompartment(compartmentFigure, "CompartmentA", true, true);
153
				canvasDef.getCompartments().add(compartment);
154
			}
155
			
156
			public void setupLinkDef(Connection linkDef) {
157
				// 
158
			}
159
			
160
			public void setupNodeDef(Node nodeDef) {
161
				// 
162
			}
163
164
			private Compartment createCompartment(Figure figure, String name, boolean collapsible, boolean needsTitle){
165
				Compartment result = GMFGraphFactory.eINSTANCE.createCompartment();
166
				result.setCollapsible(true);
167
				result.setFigure(figure);
168
				result.setName(name);
169
				result.setNeedsTitle(needsTitle);
170
				return result;
171
			}
172
		}
173
174
		class DiaDefSetupWithCompartments extends DiaDefSetup {
175
			public DiaDefSetupWithCompartments(){
176
				super(new ConfigWithCompartments());
177
			}
178
			
179
			public Compartment getCompartment(){
180
				return (Compartment)getCanvasDef().getCompartments().get(0);
181
			}
182
		}
183
		
184
		class DomainSetupWithChildren extends DomainModelSetup {
185
			private NodeData myChildOfA;
186
			
187
			public DomainModelSetup init() {
188
				DomainModelSetup result = super.init();
189
190
				EClass childClass = EcoreFactory.eINSTANCE.createEClass();
191
				childClass.setName("ChildOfA");
192
				EAttribute childLabel = EcoreFactory.eINSTANCE.createEAttribute();
193
				childLabel.setName("childLabel");
194
				childLabel.setEType(EcorePackage.eINSTANCE.getEString());
195
				childClass.getEStructuralFeatures().add(childLabel);
196
				result.getModel().getEClassifiers().add(childClass);
197
				
198
				EReference containment = EcoreFactory.eINSTANCE.createEReference();
199
				containment.setContainment(true);
200
				containment.setName("childrenOfA");
201
				containment.setEType(childClass);
202
				containment.setUpperBound(ETypedElement.UNBOUNDED_MULTIPLICITY);
203
				result.getNodeA().getEClass().getEStructuralFeatures().add(containment);
204
				
205
				myChildOfA = new NodeData(childClass, childLabel, containment);
206
				return result;
207
			}
208
			
209
			public NodeData getChildOfA() {
210
				return myChildOfA;
211
			}
212
		}
213
		
214
		class MapSetupWithCompartments extends MapSetup {
215
			public MapSetup init(DiaDefSource ddSource, DomainModelSource domainSource, ToolDefSource toolDef) {
216
				Assert.assertTrue(domainSource instanceof DomainSetupWithChildren);
217
				Assert.assertTrue(ddSource instanceof DiaDefSetupWithCompartments);
218
				
219
				DomainSetupWithChildren domainWithChildren = (DomainSetupWithChildren)domainSource;
220
				DiaDefSetupWithCompartments diaDefSetupWithCompartments = (DiaDefSetupWithCompartments)ddSource;
221
				Assert.assertNotNull(diaDefSetupWithCompartments.getCompartment());
222
				
223
				MapSetup result = super.init(ddSource, domainSource, toolDef);
224
				
225
				NodeData childOfAData = domainWithChildren.getChildOfA();
226
				NodeMapping childOfAMapping = createNodeMapping(ddSource.getNodeDef(), childOfAData.getEClass(), ddSource.getLabelDef(), childOfAData.getNameAttr(), childOfAData.getContainment(), false);
227
				
228
				ChildReference childOfAReference = GMFMapFactory.eINSTANCE.createChildReference();
229
				childOfAReference.setOwnedChild(childOfAMapping);
230
				childOfAReference.setChildrenFeature(childOfAData.getContainment());
231
				result.getNodeA().getChildren().add(childOfAReference);
232
				
233
				CompartmentMapping childOfACompartment = GMFMapFactory.eINSTANCE.createCompartmentMapping();
234
				childOfACompartment.setCompartment(diaDefSetupWithCompartments.getCompartment());
235
				childOfACompartment.getChildren().add(childOfAReference);
236
				result.getNodeA().getCompartments().add(childOfACompartment);
237
238
				return result;
239
			}
240
		}
241
125
126
	public void testReconcileCompartmentIsListlayout(){
242
		class CompartmentChange extends Assert implements UserChange {
127
		class CompartmentChange extends Assert implements UserChange {
243
			private int myCompartmentsTotalCount;
128
			private int myCompartmentsTotalCount;
244
			private final EStructuralFeature myGenCompartmentFeature;
129
			private final EStructuralFeature myGenCompartmentFeature;
Lines 294-306 Link Here
294
			}
179
			}
295
		}
180
		}
296
		
181
		
297
		DiaDefSetupWithCompartments ddSource = new DiaDefSetupWithCompartments();
182
		MapDefSource mapDefSource = CompartmentsSessionSetup.newInstance().getMapModel();
298
		DomainSetupWithChildren domainSetup = new DomainSetupWithChildren();
299
		MapSetupWithCompartments mapDefSource = new MapSetupWithCompartments();
300
		mapDefSource.init(ddSource.init(), domainSetup.init(), new ToolDefSetup());
301
		
302
		assertFalse(mapDefSource.getNodeA().getCompartments().isEmpty());
303
304
		DiaGenSetup diaGenSetup = new DiaGenSetup().init(mapDefSource);
183
		DiaGenSetup diaGenSetup = new DiaGenSetup().init(mapDefSource);
305
		myEditorGen = diaGenSetup.getGenDiagram().getEditorGen();
184
		myEditorGen = diaGenSetup.getGenDiagram().getEditorGen();
306
		
185
		
Lines 320-326 Link Here
320
	}
199
	}
321
	
200
	
322
	public void testReconcileGenNodes() throws Exception {
201
	public void testReconcileGenNodes() throws Exception {
323
		MapDefSource mapDefSource = new MapSetup().init(new DiaDefSetup(null).init(), getSetup().getDomainModel(), new ToolDefSetup());
202
		MapDefSource mapDefSource = new MapSetup().init(new DiaDefSetup().init(), getSetup().getDomainModel(), new ToolDefSetup());
324
		DiaGenSetup diaGenSetup = new DiaGenSetup().init(mapDefSource);
203
		DiaGenSetup diaGenSetup = new DiaGenSetup().init(mapDefSource);
325
		myEditorGen = diaGenSetup.getGenDiagram().getEditorGen();
204
		myEditorGen = diaGenSetup.getGenDiagram().getEditorGen();
326
			
205
			
(-)src/org/eclipse/gmf/tests/gen/CompilationTest.java (-2 / +2 lines)
Lines 70-76 Link Here
70
		domainModel.getNodeA().getNameAttr().setName("attribute");
70
		domainModel.getNodeA().getNameAttr().setName("attribute");
71
		domainModel.getNodeB().getNameAttr().setName("class");
71
		domainModel.getNodeB().getNameAttr().setName("class");
72
		domainModel.getDiagramElement().setName("Diagram");
72
		domainModel.getDiagramElement().setName("Diagram");
73
		MapDefSource mapSource = new MapSetup().init(new DiaDefSetup(null).init(), domainModel, new ToolDefSetup());
73
		MapDefSource mapSource = new MapSetup().init(new DiaDefSetup().init(), domainModel, new ToolDefSetup());
74
		DiaGenSource gmfGenSource = new DiaGenSetup().init(mapSource);
74
		DiaGenSource gmfGenSource = new DiaGenSetup().init(mapSource);
75
		generateAndCompile(gmfGenSource);
75
		generateAndCompile(gmfGenSource);
76
	}
76
	}
Lines 83-89 Link Here
83
83
84
	public void testCompileMultiPackageDomain() throws Exception {
84
	public void testCompileMultiPackageDomain() throws Exception {
85
		DomainModelSource ds = new MultiplePackagesDomainModelSetup().init();
85
		DomainModelSource ds = new MultiplePackagesDomainModelSetup().init();
86
		MapDefSource ms = new MapSetup().init(new DiaDefSetup(null).init(), ds, new ToolDefSetup());
86
		MapDefSource ms = new MapSetup().init(new DiaDefSetup().init(), ds, new ToolDefSetup());
87
87
88
		final HashSet additionalPacks = new HashSet(8);
88
		final HashSet additionalPacks = new HashSet(8);
89
		additionalPacks.add(ds.getNodeA().getEClass().getEPackage());
89
		additionalPacks.add(ds.getNodeA().getEClass().getEPackage());
(-)src/org/eclipse/gmf/tests/gef/DiagramNodeTest.java (-2 / +21 lines)
Lines 18-32 Link Here
18
import org.eclipse.gef.RequestConstants;
18
import org.eclipse.gef.RequestConstants;
19
import org.eclipse.gef.commands.Command;
19
import org.eclipse.gef.commands.Command;
20
import org.eclipse.gef.requests.ChangeBoundsRequest;
20
import org.eclipse.gef.requests.ChangeBoundsRequest;
21
import org.eclipse.gmf.codegen.gmfgen.GenCompartment;
21
import org.eclipse.gmf.runtime.draw2d.ui.figures.FigureUtilities;
22
import org.eclipse.gmf.runtime.draw2d.ui.figures.FigureUtilities;
22
import org.eclipse.gmf.runtime.notation.FillStyle;
23
import org.eclipse.gmf.runtime.notation.FillStyle;
23
import org.eclipse.gmf.runtime.notation.LineStyle;
24
import org.eclipse.gmf.runtime.notation.LineStyle;
24
import org.eclipse.gmf.runtime.notation.Location;
25
import org.eclipse.gmf.runtime.notation.Location;
25
import org.eclipse.gmf.runtime.notation.Node;
26
import org.eclipse.gmf.runtime.notation.Node;
27
import org.eclipse.gmf.runtime.notation.NotationFactory;
26
import org.eclipse.gmf.runtime.notation.NotationPackage;
28
import org.eclipse.gmf.runtime.notation.NotationPackage;
27
import org.eclipse.gmf.runtime.notation.Size;
29
import org.eclipse.gmf.runtime.notation.Size;
28
import org.eclipse.gmf.runtime.notation.View;
30
import org.eclipse.gmf.runtime.notation.View;
29
import org.eclipse.gmf.tests.rt.GeneratedCanvasTest;
31
import org.eclipse.gmf.tests.rt.GeneratedCanvasTest;
32
import org.eclipse.gmf.tests.setup.DiaGenSource;
33
import org.eclipse.gmf.tests.setup.RTSetup;
34
import org.eclipse.gmf.tests.setup.RTSource;
30
import org.eclipse.swt.graphics.RGB;
35
import org.eclipse.swt.graphics.RGB;
31
36
32
public class DiagramNodeTest extends GeneratedCanvasTest {
37
public class DiagramNodeTest extends GeneratedCanvasTest {
Lines 42-54 Link Here
42
	protected EditPart getNodeEditPart() {
47
	protected EditPart getNodeEditPart() {
43
		return myNodeEditPart;
48
		return myNodeEditPart;
44
	}
49
	}
45
50
	
46
	// TODO EditPartViewer[Source|Setup]
51
	// TODO EditPartViewer[Source|Setup]
47
	protected void setUp() throws Exception {
52
	protected void setUp() throws Exception {
48
		super.setUp();
53
		super.setUp();
49
		myNodeEditPart = findEditPart(getCanvasInstance().getNode());
54
		myNodeEditPart = findEditPart(getCanvasInstance().getNode());
50
	}
55
	}
51
56
	
57
	protected RTSource createCanvasInstance() throws Exception {
58
		class RTSetupExt extends RTSetup {
59
			protected void initDiagramFileContents(DomainInstanceProducer instanceProducer, DiaGenSource genSource) {
60
				super.initDiagramFileContents(instanceProducer, genSource);
61
				Node compartment = NotationFactory.eINSTANCE.createNode();
62
				GenCompartment genCompartment = (GenCompartment) getSetup().getGenModel().getNodeA().getCompartments().get(0); 
63
				compartment.setType(String.valueOf(genCompartment.getVisualID()));
64
				getNode().getTransientChildren().add(compartment);
65
				assertTrue(getNode().getChildren().contains(compartment));
66
			}
67
		}
68
		return new RTSetupExt().init(getSetup().getGenProject().getBundle(), getSetup().getGenModel());
69
	}
70
	
52
	public void testChangeBounds() {
71
	public void testChangeBounds() {
53
		final Point originalLocation = getLocation();
72
		final Point originalLocation = getLocation();
54
		final Dimension originalSize = getSize();
73
		final Dimension originalSize = getSize();
(-)src/org/eclipse/gmf/tests/setup/TestSetupTest.java (-4 / +4 lines)
Lines 71-77 Link Here
71
	}
71
	}
72
72
73
	public void testDiaDefSetupNoConfig() {
73
	public void testDiaDefSetupNoConfig() {
74
		DiaDefSource s = new DiaDefSetup(null).init();
74
		DiaDefSource s = new DiaDefSetup().init();
75
		doDiaDefTests(s);
75
		doDiaDefTests(s);
76
	}
76
	}
77
77
Lines 79-85 Link Here
79
		final boolean[] setupCanvasDef = {false};
79
		final boolean[] setupCanvasDef = {false};
80
		final boolean[] setupLinkDef = {false};
80
		final boolean[] setupLinkDef = {false};
81
		final boolean[] setupNodeDef = {false};
81
		final boolean[] setupNodeDef = {false};
82
		DiaDefSource s = new DiaDefSetup(new DiaDefSetup.Config() {
82
		DiaDefSource s = new DiaDefSetup() {
83
			public void setupCanvasDef(Canvas canvasDef) {
83
			public void setupCanvasDef(Canvas canvasDef) {
84
				setupCanvasDef[0] = true;
84
				setupCanvasDef[0] = true;
85
			}
85
			}
Lines 89-95 Link Here
89
			public void setupNodeDef(Node nodeDef) {
89
			public void setupNodeDef(Node nodeDef) {
90
				setupNodeDef[0] = true;
90
				setupNodeDef[0] = true;
91
			}
91
			}
92
		}).init();
92
		}.init();
93
		assertTrue("DiaDefGenerateSetup.Config.setupNodeDef()", setupNodeDef[0]);
93
		assertTrue("DiaDefGenerateSetup.Config.setupNodeDef()", setupNodeDef[0]);
94
		assertTrue("DiaDefGenerateSetup.Config.setupLinkDef()", setupLinkDef[0]);
94
		assertTrue("DiaDefGenerateSetup.Config.setupLinkDef()", setupLinkDef[0]);
95
		assertTrue("DiaDefGenerateSetup.Config.setupCanvasDef()", setupCanvasDef[0]);
95
		assertTrue("DiaDefGenerateSetup.Config.setupCanvasDef()", setupCanvasDef[0]);
Lines 141-147 Link Here
141
141
142
	public void testDiaGenSetupMap() {
142
	public void testDiaGenSetupMap() {
143
		DomainModelSource ds = new DomainModelSetup().init();
143
		DomainModelSource ds = new DomainModelSetup().init();
144
		MapDefSource ms = new MapSetup().init(new DiaDefSetup(null).init(), ds, new ToolDefSetup());
144
		MapDefSource ms = new MapSetup().init(new DiaDefSetup().init(), ds, new ToolDefSetup());
145
		doDiaGenTests(new DiaGenSetup().init(ms));
145
		doDiaGenTests(new DiaGenSetup().init(ms));
146
	}
146
	}
147
147
(-)src/org/eclipse/gmf/tests/setup/SessionSetup.java (-1 / +1 lines)
Lines 115-121 Link Here
115
	}
115
	}
116
116
117
	protected DiaDefSource createGraphDefModel() {
117
	protected DiaDefSource createGraphDefModel() {
118
		return new DiaDefSetup(null);
118
		return new DiaDefSetup();
119
	}
119
	}
120
120
121
	public static RuntimeWorkspaceSetup getRuntimeWorkspaceSetup() throws Exception {
121
	public static RuntimeWorkspaceSetup getRuntimeWorkspaceSetup() throws Exception {
(-)src/org/eclipse/gmf/tests/setup/GenProjectBaseSetup.java (-1 / +1 lines)
Lines 92-98 Link Here
92
			Plugin.getInstance().getLog().log(generatorStatus);
92
			Plugin.getInstance().getLog().log(generatorStatus);
93
		}
93
		}
94
		if (generatorStatus.getSeverity() == IStatus.ERROR) {
94
		if (generatorStatus.getSeverity() == IStatus.ERROR) {
95
			Assert.fail("GMF editor generation produced errors:" + generatorStatus.getMessage()); //$NON-NLS-1$
95
			Assert.fail("GMF editor generation produced errors:" + generatorStatus.toString()); //$NON-NLS-1$
96
		}
96
		}
97
	}
97
	}
98
}
98
}
(-)src/org/eclipse/gmf/tests/setup/LinksSessionSetup.java (-1 / +1 lines)
Lines 95-101 Link Here
95
95
96
	protected MapDefSource createMapModel() {
96
	protected MapDefSource createMapModel() {
97
		MapSetup mapDefSource = new LinksMapSetup();
97
		MapSetup mapDefSource = new LinksMapSetup();
98
		return mapDefSource.init(new DiaDefSetup(null).init(), getDomainModel(), new ToolDefSetup());
98
		return mapDefSource.init(new DiaDefSetup().init(), getDomainModel(), new ToolDefSetup());
99
	}
99
	}
100
	
100
	
101
	/*
101
	/*
(-)src/org/eclipse/gmf/tests/setup/DiaDefSetup.java (-26 / +32 lines)
Lines 21-42 Link Here
21
import org.eclipse.gmf.gmfgraph.Label;
21
import org.eclipse.gmf.gmfgraph.Label;
22
import org.eclipse.gmf.gmfgraph.Node;
22
import org.eclipse.gmf.gmfgraph.Node;
23
23
24
/**
25
 * This class is intended to be subclassed
26
 * It is allowed to override setup* methods to tweak setup for managed gmfgraph instances.
27
 */
24
public class DiaDefSetup implements DiaDefSource {
28
public class DiaDefSetup implements DiaDefSource {
25
	private Canvas myCanvasDef;
29
	private Canvas myCanvasDef;
26
	private Node myNodeDef;
30
	private Node myNodeDef;
27
	private Connection myLinkDef;
31
	private Connection myLinkDef;
28
	private final Config myConfig;
29
	private FigureGallery myFigureContainer;
32
	private FigureGallery myFigureContainer;
30
	private DiagramLabel myLabelDef;
33
	private DiagramLabel myLabelDef;
31
34
32
	/**
35
	/**
33
	 * @param config could be <code>null</code>
34
	 */
35
	public DiaDefSetup(Config config) {
36
		myConfig = config;
37
	}
38
39
	/**
40
	 * @return <code>this</code> for convenience
36
	 * @return <code>this</code> for convenience
41
	 */
37
	 */
42
	public final DiaDefSetup init() {
38
	public final DiaDefSetup init() {
Lines 50-59 Link Here
50
		myCanvasDef.getNodes().add(myNodeDef);
46
		myCanvasDef.getNodes().add(myNodeDef);
51
		myCanvasDef.getConnections().add(myLinkDef);
47
		myCanvasDef.getConnections().add(myLinkDef);
52
		myCanvasDef.getLabels().add(myLabelDef);
48
		myCanvasDef.getLabels().add(myLabelDef);
49
		
50
		commonSetupCanvasDef(myCanvasDef);
51
		commonSetupNodeDef(myNodeDef);
52
		commonSetupLinkDef(myLinkDef);
53
		commonSetupLabelDef(myLabelDef);
54
		
53
		setupCanvasDef(myCanvasDef);
55
		setupCanvasDef(myCanvasDef);
54
		setupNodeDef(myNodeDef);
56
		setupNodeDef(myNodeDef);
55
		setupLinkDef(myLinkDef);
57
		setupLinkDef(myLinkDef);
56
		setupLabelDef(myLabelDef);
58
		setupLabelDef(myLabelDef);
59
		
57
		confineInResource();
60
		confineInResource();
58
		return this;
61
		return this;
59
	}
62
	}
Lines 62-94 Link Here
62
		new ResourceImpl(URI.createURI("uri://org.eclipse.gmf/tests/GMFGraphSetup")).getContents().add(myCanvasDef);
65
		new ResourceImpl(URI.createURI("uri://org.eclipse.gmf/tests/GMFGraphSetup")).getContents().add(myCanvasDef);
63
	}
66
	}
64
67
65
	protected void setupCanvasDef(Canvas canvasDef) {
68
	private void commonSetupCanvasDef(Canvas canvasDef) {
66
		canvasDef.setName("Test-dd-canvas");
69
		canvasDef.setName("Test-dd-canvas");
67
		if (myConfig != null) {
68
			myConfig.setupCanvasDef(canvasDef);
69
		}
70
	}
70
	}
71
71
72
	protected void setupNodeDef(Node nodeDef) {
72
	private void commonSetupNodeDef(Node nodeDef) {
73
		nodeDef.setName("Test-dd-node");
73
		nodeDef.setName("Test-dd-node");
74
		nodeDef.setFigure(GMFGraphFactory.eINSTANCE.createRoundedRectangle());
74
		nodeDef.setFigure(GMFGraphFactory.eINSTANCE.createRoundedRectangle());
75
		nodeDef.getNodeFigure().setName("nf1");
75
		nodeDef.getNodeFigure().setName("nf1");
76
		myFigureContainer.getFigures().add(nodeDef.getFigure());
76
		myFigureContainer.getFigures().add(nodeDef.getFigure());
77
		if (myConfig != null) {
78
			myConfig.setupNodeDef(nodeDef);
79
		}
80
	}
77
	}
81
78
82
	protected void setupLinkDef(Connection linkDef) {
79
	private void commonSetupLinkDef(Connection linkDef) {
83
		linkDef.setName("Test-dd-link");
80
		linkDef.setName("Test-dd-link");
84
		linkDef.setFigure(GMFGraphFactory.eINSTANCE.createPolylineConnection());
81
		linkDef.setFigure(GMFGraphFactory.eINSTANCE.createPolylineConnection());
85
		linkDef.getConnectionFigure().setName("lf1");
82
		linkDef.getConnectionFigure().setName("lf1");
86
		myFigureContainer.getFigures().add(linkDef.getFigure());
83
		myFigureContainer.getFigures().add(linkDef.getFigure());
87
		if (myConfig != null) {
88
			myConfig.setupLinkDef(linkDef);
89
		}
90
	}
84
	}
91
	protected void setupLabelDef(DiagramLabel labelDef) {
85
	
86
	private void commonSetupLabelDef(DiagramLabel labelDef) {
92
		labelDef.setName("TestLabel");
87
		labelDef.setName("TestLabel");
93
		Label figure; 
88
		Label figure; 
94
		labelDef.setFigure(figure = GMFGraphFactory.eINSTANCE.createLabel());
89
		labelDef.setFigure(figure = GMFGraphFactory.eINSTANCE.createLabel());
Lines 96-101 Link Here
96
		myFigureContainer.getFigures().add(labelDef.getFigure());
91
		myFigureContainer.getFigures().add(labelDef.getFigure());
97
	}
92
	}
98
93
94
	protected void setupCanvasDef(Canvas canvasDef) {
95
		//hook for subclasses
96
	}
97
98
	protected void setupNodeDef(Node nodeDef) {
99
		//hook for subclasses
100
	}
101
102
	protected void setupLinkDef(Connection linkDef) {
103
		//hook for subclasses
104
	}
105
106
	protected void setupLabelDef(DiagramLabel labelDef) {
107
		//hook for subclasses
108
	}
109
99
	public final Canvas getCanvasDef() {
110
	public final Canvas getCanvasDef() {
100
		return myCanvasDef;
111
		return myCanvasDef;
101
	}
112
	}
Lines 116-124 Link Here
116
		return myFigureContainer;
127
		return myFigureContainer;
117
	}
128
	}
118
129
119
	public interface Config {
120
		void setupCanvasDef(Canvas canvasDef);
121
		void setupNodeDef(Node nodeDef);
122
		void setupLinkDef(Connection linkDef);
123
	}
124
}
130
}
(-)src/org/eclipse/gmf/tests/setup/RTSetup.java (-11 / +23 lines)
Lines 55-87 Link Here
55
	private Diagram myCanvas;
55
	private Diagram myCanvas;
56
	private Node myNode;
56
	private Node myNode;
57
	private Edge myLink;
57
	private Edge myLink;
58
	
59
	private EObject myDiagramElement;
58
60
59
	public RTSetup() {
61
	public RTSetup() {
60
	}
62
	}
61
63
62
	public final RTSetup init(Bundle b, DiaGenSource genSource) {
64
	public final RTSetup init(Bundle b, DiaGenSource genSource) {
63
		return init(new CoolDomainInstanceProducer(b), genSource);
65
		initDiagramFileContents(new CoolDomainInstanceProducer(b), genSource);
66
		saveDiagramFile();
67
		return this;
64
	}
68
	}
65
69
66
	public final RTSetup init(DiaGenSource genSource) {
70
	public final RTSetup init(DiaGenSource genSource) {
67
		return init(new NaiveDomainInstanceProducer(), genSource);
71
		initDiagramFileContents(new NaiveDomainInstanceProducer(), genSource);
72
		saveDiagramFile();
73
		return this;
68
	}
74
	}
69
75
70
	/**
76
	/**
71
	 * @return <code>this</code> for convenience
77
	 * @return <code>this</code> for convenience
72
	 */
78
	 */
73
	public final RTSetup init(DomainInstanceProducer instanceProducer, DiaGenSource genSource) {
79
	protected void initDiagramFileContents(DomainInstanceProducer instanceProducer, DiaGenSource genSource) {
74
		myCanvas = NotationFactory.eINSTANCE.createDiagram();
80
		myCanvas = NotationFactory.eINSTANCE.createDiagram();
75
		myNode = NotationFactory.eINSTANCE.createNode();
81
		myNode = NotationFactory.eINSTANCE.createNode();
76
		myLink = NotationFactory.eINSTANCE.createEdge();
82
		myLink = NotationFactory.eINSTANCE.createEdge();
77
		myCanvas.getPersistedChildren().add(myNode);
83
		myCanvas.getPersistedChildren().add(myNode);
78
		myCanvas.getPersistedEdges().add(myLink);
84
		myCanvas.getPersistedEdges().add(myLink);
79
85
80
		final EObject diagramElement = instanceProducer.createInstance(genSource.getGenDiagram().getDomainDiagramElement());
86
		myDiagramElement = instanceProducer.createInstance(genSource.getGenDiagram().getDomainDiagramElement());
81
		myCanvas.setElement(diagramElement);
87
		myCanvas.setElement(myDiagramElement);
82
		myCanvas.setType(genSource.getGenDiagram().getEditorGen().getModelID());
88
		myCanvas.setType(genSource.getGenDiagram().getEditorGen().getModelID());
83
		EObject nodeElement = instanceProducer.createInstance(genSource.getNodeA().getDomainMetaClass());
89
		EObject nodeElement = instanceProducer.createInstance(genSource.getNodeA().getDomainMetaClass());
84
		instanceProducer.setFeatureValue(diagramElement, nodeElement, genSource.getNodeA().getModelFacet().getContainmentMetaFeature());
90
		instanceProducer.setFeatureValue(myDiagramElement, nodeElement, genSource.getNodeA().getModelFacet().getContainmentMetaFeature());
85
		myNode.setElement(nodeElement);
91
		myNode.setElement(nodeElement);
86
		myNode.setType(String.valueOf(genSource.getNodeA().getVisualID()));
92
		myNode.setType(String.valueOf(genSource.getNodeA().getVisualID()));
87
		//myNode.setVisualID(genSource.getGenNode().getVisualID());
93
		//myNode.setVisualID(genSource.getGenNode().getVisualID());
Lines 110-115 Link Here
110
			nodeElement.eSet(genSource.getGenLink().getContainmentMetaFeature().getEcoreFeature(), linkElement);
116
			nodeElement.eSet(genSource.getGenLink().getContainmentMetaFeature().getEcoreFeature(), linkElement);
111
		}
117
		}
112
		*/
118
		*/
119
	}
120
	
121
	private void saveDiagramFile(){
113
        TransactionalEditingDomain ted = DiagramEditingDomainFactory.getInstance().createEditingDomain();        
122
        TransactionalEditingDomain ted = DiagramEditingDomainFactory.getInstance().createEditingDomain();        
114
		ResourceSet rs = ted.getResourceSet();
123
		ResourceSet rs = ted.getResourceSet();
115
		URI uri = URI.createURI("uri://fake/z"); //$NON-NLS-1$
124
		URI uri = URI.createURI("uri://fake/z"); //$NON-NLS-1$
Lines 123-129 Link Here
123
			protected IStatus doExecute(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
132
			protected IStatus doExecute(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
124
				diagramFile.getContents().clear();				
133
				diagramFile.getContents().clear();				
125
				diagramFile.getContents().add(getCanvas());
134
				diagramFile.getContents().add(getCanvas());
126
				diagramFile.getContents().add(diagramElement);					
135
				diagramFile.getContents().add(getDiagramElement());					
127
				return Status.OK_STATUS;
136
				return Status.OK_STATUS;
128
			};
137
			};
129
		};
138
		};
Lines 134-141 Link Here
134
			e.printStackTrace();
143
			e.printStackTrace();
135
			Assert.fail("Failed to set diagram resource contents"); //$NON-NLS-1$
144
			Assert.fail("Failed to set diagram resource contents"); //$NON-NLS-1$
136
		}
145
		}
137
		
138
		return this;
139
	}
146
	}
140
147
141
	public final Diagram getCanvas() {
148
	public final Diagram getCanvas() {
Lines 149-159 Link Here
149
	public Edge getLink() {
156
	public Edge getLink() {
150
		return myLink;
157
		return myLink;
151
	}
158
	}
159
	
160
	protected EObject getDiagramElement(){
161
		return myDiagramElement;
162
	}
152
163
153
	private interface DomainInstanceProducer {
164
	protected interface DomainInstanceProducer {
154
		EObject createInstance(GenClass genClass);
165
		EObject createInstance(GenClass genClass);
155
		void setFeatureValue(EObject src, EObject value, GenFeature genFeature);
166
		void setFeatureValue(EObject src, EObject value, GenFeature genFeature);
156
	};
167
	}
168
	
157
	private static class NaiveDomainInstanceProducer implements DomainInstanceProducer {
169
	private static class NaiveDomainInstanceProducer implements DomainInstanceProducer {
158
		public EObject createInstance(GenClass genClass) {
170
		public EObject createInstance(GenClass genClass) {
159
			return createInstance(genClass.getEcoreClass());
171
			return createInstance(genClass.getEcoreClass());
(-)src/org/eclipse/gmf/tests/tr/RunTimeModelTransformerTest.java (-10 / +15 lines)
Lines 21-31 Link Here
21
import org.eclipse.gmf.bridge.genmodel.DiagramRunTimeModelTransformer;
21
import org.eclipse.gmf.bridge.genmodel.DiagramRunTimeModelTransformer;
22
import org.eclipse.gmf.gmfgraph.Node;
22
import org.eclipse.gmf.gmfgraph.Node;
23
import org.eclipse.gmf.runtime.notation.NotationPackage;
23
import org.eclipse.gmf.runtime.notation.NotationPackage;
24
import org.eclipse.gmf.tests.setup.DiaDefSetup;
24
25
25
public class RunTimeModelTransformerTest extends AbstractMappingTransformerTest {
26
public class RunTimeModelTransformerTest extends AbstractMappingTransformerTest {
26
	public RunTimeModelTransformerTest(String name) {
27
	public RunTimeModelTransformerTest(String name) {
27
		super(name);
28
		super(name);
28
	}
29
	}
30
	
31
	protected DiaDefSetup createDiaDefSetup() {
32
		return new DiaDefSetup(){
33
			protected void setupNodeDef(Node nodeDef) {
34
				super.setupNodeDef(nodeDef);
35
//				RunTimeProperty rtp = DiagramDefinitionFactory.eINSTANCE.createRunTimeProperty();
36
//				rtp.setName("someProp");
37
//				nodeDef.getProperties().add(rtp);
38
//				rtp = DiagramDefinitionFactory.eINSTANCE.createRunTimeProperty();
39
//				rtp.setName("prop1");
40
//				nodeDef.getProperties().add(rtp);
41
			}
42
		};
43
	}
29
44
30
	public void testRunTimeModelTransform() {
45
	public void testRunTimeModelTransform() {
31
		DiagramRunTimeModelTransformer drtModelTransformer = new DiagramRunTimeModelTransformer("pack11", "uri://eclipse/gmf/tests");
46
		DiagramRunTimeModelTransformer drtModelTransformer = new DiagramRunTimeModelTransformer("pack11", "uri://eclipse/gmf/tests");
Lines 47-62 Link Here
47
		assertTrue("rt model class for link definition should extend appropiate class from basic RT model", checkSuperclass(c, NotationPackage.eINSTANCE.getEdge()));
62
		assertTrue("rt model class for link definition should extend appropiate class from basic RT model", checkSuperclass(c, NotationPackage.eINSTANCE.getEdge()));
48
	}
63
	}
49
64
50
	public void setupNodeDef(Node nodeDef) {
51
		super.setupNodeDef(nodeDef);
52
//		RunTimeProperty rtp = DiagramDefinitionFactory.eINSTANCE.createRunTimeProperty();
53
//		rtp.setName("someProp");
54
//		nodeDef.getProperties().add(rtp);
55
//		rtp = DiagramDefinitionFactory.eINSTANCE.createRunTimeProperty();
56
//		rtp.setName("prop1");
57
//		nodeDef.getProperties().add(rtp);
58
	}
59
60
	private void doTestRunTimeModelPropertiesTransform(EClass nodeRTClass) {
65
	private void doTestRunTimeModelPropertiesTransform(EClass nodeRTClass) {
61
		EStructuralFeature sf = nodeRTClass.getEStructuralFeature("prop1");
66
		EStructuralFeature sf = nodeRTClass.getEStructuralFeature("prop1");
62
		assertNotNull("There should be 'prop1' structural feature in generated diagramNode EClass", sf);
67
		assertNotNull("There should be 'prop1' structural feature in generated diagramNode EClass", sf);
(-)src/org/eclipse/gmf/tests/tr/AbstractMappingTransformerTest.java (-13 / +7 lines)
Lines 25-31 Link Here
25
import org.eclipse.gmf.tests.setup.MapSetup;
25
import org.eclipse.gmf.tests.setup.MapSetup;
26
import org.eclipse.gmf.tests.setup.ToolDefSetup;
26
import org.eclipse.gmf.tests.setup.ToolDefSetup;
27
27
28
public abstract class AbstractMappingTransformerTest extends ConfiguredTestCase implements DiaDefSetup.Config {
28
public abstract class AbstractMappingTransformerTest extends ConfiguredTestCase {
29
	private MapDefSource myMapDef;
29
	private MapDefSource myMapDef;
30
	private DiaDefSetup myDiaDef;
30
	private DiaDefSetup myDiaDef;
31
31
Lines 35-44 Link Here
35
35
36
	protected void setUp() throws Exception {
36
	protected void setUp() throws Exception {
37
		super.setUp();
37
		super.setUp();
38
		myDiaDef = new DiaDefSetup(this);
38
		myDiaDef = createDiaDefSetup();
39
		myDiaDef.init();
39
		myDiaDef.init();
40
		myMapDef = initMapModel(myDiaDef);
40
		myMapDef = initMapModel(myDiaDef);
41
	}
41
	}
42
	
43
	protected DiaDefSetup createDiaDefSetup(){
44
		return new DiaDefSetup();
45
	}
46
	
42
	protected MapDefSource initMapModel(DiaDefSource graphDef) {
47
	protected MapDefSource initMapModel(DiaDefSource graphDef) {
43
		return new MapSetup().init(graphDef, getSetup().getDomainModel(), new ToolDefSetup());
48
		return new MapSetup().init(graphDef, getSetup().getDomainModel(), new ToolDefSetup());
44
	}
49
	}
Lines 71-85 Link Here
71
		return myMapDef.getClassLink();
76
		return myMapDef.getClassLink();
72
	}
77
	}
73
78
74
	// no-op
75
	public void setupCanvasDef(Canvas canvasDef) {
76
	}
77
78
	// no-op
79
	public void setupLinkDef(Connection linkDef) {
80
	}
81
82
	// no-op
83
	public void setupNodeDef(Node nodeDef) {
84
	}
85
}
79
}
(-)src/org/eclipse/gmf/tests/AllTests.java (-1 / +3 lines)
Lines 39-44 Link Here
39
import org.eclipse.gmf.tests.rt.ElementInitializerTest;
39
import org.eclipse.gmf.tests.rt.ElementInitializerTest;
40
import org.eclipse.gmf.tests.rt.LinkCreationConstraintsTest;
40
import org.eclipse.gmf.tests.rt.LinkCreationConstraintsTest;
41
import org.eclipse.gmf.tests.rt.MetricRulesTest;
41
import org.eclipse.gmf.tests.rt.MetricRulesTest;
42
import org.eclipse.gmf.tests.setup.CompartmentsSessionSetup;
42
import org.eclipse.gmf.tests.setup.LinksSessionSetup;
43
import org.eclipse.gmf.tests.setup.LinksSessionSetup;
43
import org.eclipse.gmf.tests.setup.SessionSetup;
44
import org.eclipse.gmf.tests.setup.SessionSetup;
44
import org.eclipse.gmf.tests.setup.TestSetupTest;
45
import org.eclipse.gmf.tests.setup.TestSetupTest;
Lines 58-63 Link Here
58
		
59
		
59
		final SessionSetup sessionSetup = SessionSetup.newInstance();
60
		final SessionSetup sessionSetup = SessionSetup.newInstance();
60
		final LinksSessionSetup sessionSetup2 = (LinksSessionSetup) LinksSessionSetup.newInstance();
61
		final LinksSessionSetup sessionSetup2 = (LinksSessionSetup) LinksSessionSetup.newInstance();
62
		final SessionSetup compartmentsSession = CompartmentsSessionSetup.newInstance();
61
		SessionSetup.disallowSingleTestCaseUse();
63
		SessionSetup.disallowSingleTestCaseUse();
62
		
64
		
63
		
65
		
Lines 87-93 Link Here
87
		// fires new runtime workbench initialization
89
		// fires new runtime workbench initialization
88
		suite.addTestSuite(CompilationTest.class);
90
		suite.addTestSuite(CompilationTest.class);
89
91
90
		suite.addTest(feed(DiagramNodeTest.class, sessionSetup));
92
		suite.addTest(feed(DiagramNodeTest.class, compartmentsSession));
91
		suite.addTest(feed(NamingStrategyTest.class, sessionSetup));
93
		suite.addTest(feed(NamingStrategyTest.class, sessionSetup));
92
		suite.addTest(feed(GenModelTransformerBasicRTTest.class, sessionSetup));
94
		suite.addTest(feed(GenModelTransformerBasicRTTest.class, sessionSetup));
93
95
(-)src/org/eclipse/gmf/tests/setup/CompartmentsSessionSetup.java (+174 lines)
Added Link Here
1
/*
2
 * Copyright (c) 2006 Borland Software Corporation
3
 * 
4
 * All rights reserved. This program and the accompanying materials
5
 * are made available under the terms of the Eclipse Public License v1.0
6
 * which accompanies this distribution, and is available at
7
 * http://www.eclipse.org/legal/epl-v10.html
8
 *
9
 * Contributors:
10
 *    Michael Golubev (Borland) - initial API and implementation
11
 */
12
13
package org.eclipse.gmf.tests.setup;
14
15
import junit.framework.Assert;
16
17
import org.eclipse.emf.ecore.EAttribute;
18
import org.eclipse.emf.ecore.EClass;
19
import org.eclipse.emf.ecore.EReference;
20
import org.eclipse.emf.ecore.ETypedElement;
21
import org.eclipse.emf.ecore.EcoreFactory;
22
import org.eclipse.emf.ecore.EcorePackage;
23
import org.eclipse.gmf.gmfgraph.Canvas;
24
import org.eclipse.gmf.gmfgraph.Compartment;
25
import org.eclipse.gmf.gmfgraph.Figure;
26
import org.eclipse.gmf.gmfgraph.FigureGallery;
27
import org.eclipse.gmf.gmfgraph.GMFGraphFactory;
28
import org.eclipse.gmf.gmfgraph.Node;
29
import org.eclipse.gmf.mappings.ChildReference;
30
import org.eclipse.gmf.mappings.CompartmentMapping;
31
import org.eclipse.gmf.mappings.GMFMapFactory;
32
import org.eclipse.gmf.mappings.NodeMapping;
33
import org.eclipse.gmf.tests.setup.DomainModelSource.NodeData;
34
35
public class CompartmentsSessionSetup extends SessionSetup {
36
	protected CompartmentsSessionSetup() {
37
		//
38
	}
39
40
	public static SessionSetup newInstance() {
41
		if (factoryClosed) {
42
			return null;
43
		}
44
		return new CompartmentsSessionSetup();
45
	}
46
	
47
	protected DomainModelSource createDomainModel() {
48
		return new DomainSetupWithChildren().init();
49
	}
50
	
51
	protected DiaDefSource createGraphDefModel() {
52
		return new DiaDefSetupWithCompartments().init();
53
	}
54
	
55
	protected MapDefSource createMapModel() {
56
		MapDefSource mapDefSource = new MapSetupWithCompartments().init(getGraphDefModel(), getDomainModel(), new ToolDefSetup());
57
		Assert.assertFalse(mapDefSource.getNodeA().getCompartments().isEmpty());
58
		CompartmentMapping compartmentMapping = (CompartmentMapping) mapDefSource.getNodeA().getCompartments().get(0);
59
		Assert.assertSame(mapDefSource.getNodeA(), compartmentMapping.getParentNode());
60
		return mapDefSource;
61
	}
62
	
63
	protected DiaGenSource createGenModel() {
64
		DiaGenSource result = new DiaGenSetup().init(getMapModel());
65
		Assert.assertFalse(result.getNodeA().getCompartments().isEmpty());
66
		return result;
67
	}
68
	
69
	public DomainModelSourceExtension getDomainModelExtension() {
70
		return (DomainModelSourceExtension)getDomainModel();
71
	}
72
	
73
	public DiaDefSourceExtension getGraphDefModelExtension() {
74
		return (DiaDefSourceExtension)getGraphDefModel();
75
	}
76
	
77
	public static interface DiaDefSourceExtension extends DiaDefSource {
78
		public Compartment getCompartment();
79
	}
80
	
81
	public static interface DomainModelSourceExtension extends DomainModelSource {
82
		public NodeData getChildOfA();
83
	}
84
	
85
	protected static class DiaDefSetupWithCompartments extends DiaDefSetup implements DiaDefSourceExtension {
86
		public void setupCanvasDef(Canvas canvasDef) {
87
			FigureGallery oneMoreGallery = GMFGraphFactory.eINSTANCE.createFigureGallery();
88
			canvasDef.getFigures().add(oneMoreGallery);
89
			Figure compartmentFigure = GMFGraphFactory.eINSTANCE.createRectangle();
90
			oneMoreGallery.getFigures().add(compartmentFigure);
91
			Compartment compartment = createCompartment(compartmentFigure, "CompartmentA", true, true);
92
			canvasDef.getCompartments().add(compartment);
93
		}
94
		
95
		protected void setupNodeDef(Node nodeDef) {
96
			Figure figure = (Figure)nodeDef.getFigure();
97
			figure.setLayout(GMFGraphFactory.eINSTANCE.createBorderLayout());
98
		}
99
		
100
		public Compartment getCompartment(){
101
			return (Compartment)getCanvasDef().getCompartments().get(0);
102
		}
103
104
		private Compartment createCompartment(Figure figure, String name, boolean collapsible, boolean needsTitle){
105
			Compartment result = GMFGraphFactory.eINSTANCE.createCompartment();
106
			result.setCollapsible(true);
107
			result.setFigure(figure);
108
			result.setName(name);
109
			result.setNeedsTitle(needsTitle);
110
			return result;
111
		}
112
113
	}
114
	
115
	protected static class DomainSetupWithChildren extends DomainModelSetup implements DomainModelSourceExtension {
116
		private NodeData myChildOfA;
117
		
118
		public DomainModelSetup init() {
119
			DomainModelSetup result = super.init();
120
121
			EClass childClass = EcoreFactory.eINSTANCE.createEClass();
122
			childClass.setName("ChildOfA");
123
			EAttribute childLabel = EcoreFactory.eINSTANCE.createEAttribute();
124
			childLabel.setName("childLabel");
125
			childLabel.setEType(EcorePackage.eINSTANCE.getEString());
126
			childClass.getEStructuralFeatures().add(childLabel);
127
			result.getModel().getEClassifiers().add(childClass);
128
			
129
			EReference containment = EcoreFactory.eINSTANCE.createEReference();
130
			containment.setContainment(true);
131
			containment.setName("childrenOfA");
132
			containment.setEType(childClass);
133
			containment.setUpperBound(ETypedElement.UNBOUNDED_MULTIPLICITY);
134
			result.getNodeA().getEClass().getEStructuralFeatures().add(containment);
135
			
136
			myChildOfA = new NodeData(childClass, childLabel, containment);
137
			return result;
138
		}
139
		
140
		public NodeData getChildOfA() {
141
			return myChildOfA;
142
		}
143
	}
144
	
145
	protected static class MapSetupWithCompartments extends MapSetup {
146
		public MapSetup init(DiaDefSource ddSource, DomainModelSource domainSource, ToolDefSource toolDef) {
147
			Assert.assertTrue(domainSource instanceof DomainSetupWithChildren);
148
			Assert.assertTrue(ddSource instanceof DiaDefSetupWithCompartments);
149
			
150
			DomainSetupWithChildren domainWithChildren = (DomainSetupWithChildren)domainSource;
151
			DiaDefSetupWithCompartments diaDefSetupWithCompartments = (DiaDefSetupWithCompartments)ddSource;
152
			Assert.assertNotNull(diaDefSetupWithCompartments.getCompartment());
153
			
154
			MapSetup result = super.init(ddSource, domainSource, toolDef);
155
			
156
			NodeData childOfAData = domainWithChildren.getChildOfA();
157
			NodeMapping childOfAMapping = createNodeMapping(ddSource.getNodeDef(), childOfAData.getEClass(), ddSource.getLabelDef(), childOfAData.getNameAttr(), childOfAData.getContainment(), false);
158
			
159
			ChildReference childOfAReference = GMFMapFactory.eINSTANCE.createChildReference();
160
			childOfAReference.setOwnedChild(childOfAMapping);
161
			childOfAReference.setChildrenFeature(childOfAData.getContainment());
162
			childOfAReference.setContainmentFeature(childOfAData.getContainment());
163
			result.getNodeA().getChildren().add(childOfAReference);
164
			
165
			CompartmentMapping childOfACompartment = GMFMapFactory.eINSTANCE.createCompartmentMapping();
166
			childOfACompartment.setCompartment(diaDefSetupWithCompartments.getCompartment());
167
			childOfACompartment.getChildren().add(childOfAReference);
168
			result.getNodeA().getCompartments().add(childOfACompartment);
169
170
			return result;
171
		}
172
	}
173
	
174
}

Return to bug 143666