Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 40355 Details for
Bug 140162
Implement tests for the lite generator fuctionality
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
First part: refactoring of the current tests
140162.patch (text/plain), 46.31 KB, created by
Boris Blajer
on 2006-05-04 10:40:54 EDT
(
hide
)
Description:
First part: refactoring of the current tests
Filename:
MIME Type:
Creator:
Boris Blajer
Created:
2006-05-04 10:40:54 EDT
Size:
46.31 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.gmf.tests >Index: src/org/eclipse/gmf/tests/rt/RuntimeDiagramTestBase.java >=================================================================== >RCS file: /cvsroot/technology/org.eclipse.gmf/tests/org.eclipse.gmf.tests/src/org/eclipse/gmf/tests/rt/RuntimeDiagramTestBase.java,v >retrieving revision 1.12 >diff -u -r1.12 RuntimeDiagramTestBase.java >--- src/org/eclipse/gmf/tests/rt/RuntimeDiagramTestBase.java 13 Apr 2006 22:22:27 -0000 1.12 >+++ src/org/eclipse/gmf/tests/rt/RuntimeDiagramTestBase.java 4 May 2006 14:12:16 -0000 >@@ -10,40 +10,18 @@ > */ > package org.eclipse.gmf.tests.rt; > >-import java.util.Arrays; >- > import junit.framework.Assert; > >-import org.eclipse.draw2d.geometry.Point; > import org.eclipse.emf.common.notify.Adapter; > import org.eclipse.emf.common.notify.Notification; > import org.eclipse.emf.common.notify.impl.AdapterImpl; >-import org.eclipse.emf.ecore.EObject; >-import org.eclipse.emf.ecore.EStructuralFeature; >-import org.eclipse.emf.transaction.TransactionalEditingDomain; >-import org.eclipse.gef.EditPart; >-import org.eclipse.gef.RequestConstants; > import org.eclipse.gef.commands.Command; > import org.eclipse.gmf.codegen.gmfgen.GenCommonBase; >-import org.eclipse.gmf.runtime.diagram.core.edithelpers.CreateElementRequestAdapter; >-import org.eclipse.gmf.runtime.diagram.core.preferences.PreferencesHint; >-import org.eclipse.gmf.runtime.diagram.ui.commands.EtoolsProxyCommand; >-import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >-import org.eclipse.gmf.runtime.diagram.ui.requests.CreateConnectionViewAndElementRequest; >-import org.eclipse.gmf.runtime.diagram.ui.requests.CreateUnspecifiedTypeRequest; >-import org.eclipse.gmf.runtime.diagram.ui.requests.EditCommandRequestWrapper; >-import org.eclipse.gmf.runtime.diagram.ui.requests.CreateConnectionViewAndElementRequest.ConnectionViewAndElementDescriptor; >-import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand; >-import org.eclipse.gmf.runtime.emf.type.core.IElementType; >-import org.eclipse.gmf.runtime.emf.type.core.IHintedType; >-import org.eclipse.gmf.runtime.emf.type.core.commands.SetValueCommand; >-import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; >-import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest; >+import org.eclipse.gmf.codegen.gmfgen.GenLink; > import org.eclipse.gmf.runtime.notation.Diagram; > import org.eclipse.gmf.runtime.notation.Edge; > import org.eclipse.gmf.runtime.notation.Node; > import org.eclipse.gmf.runtime.notation.View; >-import org.eclipse.gmf.tests.EPath; > import org.eclipse.gmf.tests.setup.DiaGenSource; > import org.eclipse.gmf.tests.setup.LinksSessionSetup; > import org.eclipse.gmf.tests.setup.SessionSetup; >@@ -69,7 +47,7 @@ > return LinksSessionSetup.newInstance(); > } > >- protected Node createNode(final IElementType metamodelType, View notationContainer) { >+ protected Node createNode(GenCommonBase nodeType, View notationContainer) { > final Object[] newObjHolder = new Object[1]; > > Adapter adapter = new AdapterImpl() { >@@ -84,12 +62,10 @@ > return true; > } > }; >+ Command cmd = getViewerConfiguration().getCreateNodeCommand(notationContainer, nodeType); >+ Assert.assertNotNull("No command is available for request", cmd); //$NON-NLS-1$ > notationContainer.eAdapters().add(adapter); >- > try { >- CreateUnspecifiedTypeRequest req = new CreateUnspecifiedTypeRequest(Arrays.asList(new IElementType[] { metamodelType }), PreferencesHint.USE_DEFAULTS); >- Command cmd = findEditPart(notationContainer).getCommand(req); >- Assert.assertNotNull("No command is available for request", cmd); //$NON-NLS-1$ > execute(cmd); > } catch (Exception e) { > e.printStackTrace(); >@@ -100,14 +76,12 @@ > return newObjHolder[0] instanceof Node ? (Node) newObjHolder[0] : null; > } > >- protected boolean canStartLinkFrom(IElementType metamodelType, View source) { >- CreateRelationshipRequest req = new CreateRelationshipRequest(source.getElement(), null, metamodelType); >- EditCommandRequestWrapper wrapper = new EditCommandRequestWrapper(req); >- Command cmd = findEditPart(source).getCommand(wrapper); >+ protected boolean canStartLinkFrom(GenLink linkType, View source) { >+ Command cmd = getViewerConfiguration().getStartLinkCommand(source, linkType); > return cmd != null && cmd.canExecute(); > } > >- protected Edge createLink(IElementType metamodelType, View source, View target) { >+ protected Edge createLink(GenLink linkType, View source, View target) { > final Object[] newObjHolder = new Object[1]; > > Adapter adapter = new AdapterImpl() { >@@ -125,37 +99,11 @@ > Diagram diagram = getDiagram(); > diagram.eAdapters().add(adapter); > try { >- CreateRelationshipRequest relationShipReq = new CreateRelationshipRequest(metamodelType); >- relationShipReq.setSource(source.getElement()); >- if (target != null) { >- relationShipReq.setTarget(target.getElement()); >- } >- >- ConnectionViewAndElementDescriptor desc = new ConnectionViewAndElementDescriptor(new CreateElementRequestAdapter(relationShipReq), metamodelType instanceof IHintedType ? ((IHintedType) metamodelType).getSemanticHint() : "", PreferencesHint.USE_DEFAULTS); >- >- CreateConnectionViewAndElementRequest req = new CreateConnectionViewAndElementRequest(desc); >- req.setType(RequestConstants.REQ_CONNECTION_START); >- >- EditPart sourceEditPart = findEditPart(source); >- req.setSourceEditPart(sourceEditPart); >- // Note: initializes the sourceCommand in the request >- Command sourceCmd = sourceEditPart.getCommand(req); >- if (sourceCmd == null || !sourceCmd.canExecute()) { >+ Command targetCmd = getViewerConfiguration().getCreateLinkCommand(source, target, linkType); >+ if (targetCmd == null || !targetCmd.canExecute()) { > return null; > } >- >- EditPart targetEditPart = target != null ? findEditPart(target) : null; >- if (targetEditPart != null) { >- req.setType(RequestConstants.REQ_CONNECTION_END); >- req.setTargetEditPart(targetEditPart); >- req.setLocation(new Point(0, 0)); >- sourceEditPart.getCommand(req); >- Command targetCmd = targetEditPart.getCommand(req); >- if (targetCmd == null || !targetCmd.canExecute()) { >- return null; >- } >- execute(targetCmd); >- } >+ execute(targetCmd); > } catch (Exception e) { > e.printStackTrace(); > Assert.fail("Edge creation failure: " + e.getLocalizedMessage()); //$NON-NLS-1$ >@@ -165,30 +113,6 @@ > return newObjHolder[0] instanceof Edge ? (Edge) newObjHolder[0] : null; > } > >- protected IElementType getElementType(GenCommonBase genElement) { >- Class clazz = null; >- try { >- clazz = loadGeneratedClass(getGenModel().getGenDiagram().getElementTypesQualifiedClassName()); >- } catch (Exception e) { >- e.printStackTrace(); >- fail("ElementTypes class not loaded. " + e.getLocalizedMessage()); //$NON-NLS-1$ >- } >- String identifier = genElement.getUniqueIdentifier(); >- try { >- Object type = clazz.getField(identifier).get(null); >- assert type != null : "Metatype field in the ElementTypes class should be initialized"; //$NON-NLS-1$ >- assert type instanceof IElementType : IElementType.class.getName() + ": metamodel type class required"; //$NON-NLS-1$ >- return (IElementType) type; >- } catch (NoSuchFieldException e) { >- fail("Metamodel type " + identifier + " is not registered"); //$NON-NLS-1$ //$NON-NLS-2$ >- } catch (Exception e) { >- e.printStackTrace(); >- fail("Can't access metamodel type " + identifier); //$NON-NLS-1$ >- } >- >- return null; >- } >- > /** > * Sets structural feature value of the business element associated with the > * given notation element. >@@ -204,21 +128,6 @@ > * if the given name does not refer existing feature > */ > protected void setBusinessElementStructuralFeature(View view, String featureName, Object value) { >- EObject instance = view.getElement(); >- assertNotNull("No business element bound to notation element", instance); //$NON-NLS-1$ >- EObject resultObj = EPath.findLocalFeature(instance.eClass(), featureName); >- if (!(resultObj instanceof EStructuralFeature)) { >- throw new IllegalArgumentException("Not existing feature: " + featureName); //$NON-NLS-1$ >- } >- >- EStructuralFeature feature = (EStructuralFeature) resultObj; >- SetRequest setReq = new SetRequest(instance, feature, value); >- EditPart editPart = findEditPart(view); >- assertTrue("IGraphicalEditPart expected", editPart instanceof IGraphicalEditPart); //$NON-NLS-1$ >- >- TransactionalEditingDomain txEditDomain = ((IGraphicalEditPart) editPart).getEditingDomain(); >- CompositeTransactionalCommand modelCmd = new CompositeTransactionalCommand(txEditDomain, "Set feature"); //$NON-NLS-1$ >- modelCmd.compose(new SetValueCommand(setReq)); >- new EtoolsProxyCommand(modelCmd).execute(); >+ getViewerConfiguration().setBusinessElementStructuralFeature(view, featureName, value); > } > } >Index: src/org/eclipse/gmf/tests/rt/ElementInitializerTest.java >=================================================================== >RCS file: /cvsroot/technology/org.eclipse.gmf/tests/org.eclipse.gmf.tests/src/org/eclipse/gmf/tests/rt/ElementInitializerTest.java,v >retrieving revision 1.3 >diff -u -r1.3 ElementInitializerTest.java >--- src/org/eclipse/gmf/tests/rt/ElementInitializerTest.java 13 Apr 2006 12:09:29 -0000 1.3 >+++ src/org/eclipse/gmf/tests/rt/ElementInitializerTest.java 4 May 2006 14:12:16 -0000 >@@ -17,7 +17,6 @@ > import org.eclipse.emf.ecore.EEnumLiteral; > import org.eclipse.emf.ecore.EObject; > import org.eclipse.emf.ecore.EStructuralFeature; >-import org.eclipse.gmf.runtime.emf.type.core.IElementType; > import org.eclipse.gmf.runtime.notation.Node; > > /** >@@ -33,14 +32,10 @@ > > protected void setUp() throws Exception { > super.setUp(); >- IElementType nodeAMetaType = getElementType(getGenModel().getNodeA()); >- assertNotNull("NodeA element type is not registered", nodeAMetaType); >- Node nodeA = createNode(nodeAMetaType, getDiagram()); >+ Node nodeA = createNode(getGenModel().getNodeA(), getDiagram()); > this.nodeAElement = nodeA.getElement(); >- IElementType nodeBMetaType = getElementType(getGenModel().getNodeB()); >- assertNotNull("NodeB element type is not registered", nodeBMetaType); >- Node nodeB = createNode(nodeBMetaType, getDiagram()); >- this.nodeBElement = nodeB.getElement(); >+ Node nodeB = createNode(getGenModel().getNodeB(), getDiagram()); >+ this.nodeBElement = nodeB.getElement(); > assertNotNull("Tested node A element not available", nodeAElement); //$NON-NLS-1$ > assertNotNull("Tested node B element not available", nodeBElement); //$NON-NLS-1$ > } >Index: src/org/eclipse/gmf/tests/rt/LinkCreationConstraintsTest.java >=================================================================== >RCS file: /cvsroot/technology/org.eclipse.gmf/tests/org.eclipse.gmf.tests/src/org/eclipse/gmf/tests/rt/LinkCreationConstraintsTest.java,v >retrieving revision 1.9 >diff -u -r1.9 LinkCreationConstraintsTest.java >--- src/org/eclipse/gmf/tests/rt/LinkCreationConstraintsTest.java 13 Apr 2006 12:09:29 -0000 1.9 >+++ src/org/eclipse/gmf/tests/rt/LinkCreationConstraintsTest.java 4 May 2006 14:12:16 -0000 >@@ -12,7 +12,6 @@ > > import org.eclipse.gmf.codegen.gmfgen.GenLink; > import org.eclipse.gmf.codegen.gmfgen.GenNode; >-import org.eclipse.gmf.runtime.emf.type.core.IElementType; > import org.eclipse.gmf.runtime.notation.Diagram; > import org.eclipse.gmf.runtime.notation.Edge; > import org.eclipse.gmf.runtime.notation.Node; >@@ -23,58 +22,49 @@ > super(name); > } > >- public void testCreateConstrainedLinks() throws Exception { >- IElementType nodeMetaType = getElementType(getTargetGenNode()); >- assertNotNull("Node element type is not registered", nodeMetaType); >- IElementType linkMetaType = getElementType(getClassGenLink()); >- assertNotNull("Link element type is not registered", linkMetaType); >- IElementType containerMetaType = getElementType(getSourceGenNode()); >- assertNotNull("Container element type is not registered", containerMetaType); >- IElementType referenceLinkMetaType = getElementType(getRefGenLink()); >- assertNotNull("Reference link element type is not registered", referenceLinkMetaType); >- >+ public void testCreateConstrainedLinks() throws Exception { > Diagram diagram = (Diagram)getDiagramEditPart().getModel(); >- Node sourceContainerNode = createNode(containerMetaType, diagram); >+ Node sourceContainerNode = createNode(getSourceGenNode(), diagram); > setBusinessElementStructuralFeature(sourceContainerNode, "acceptLinkKind", null); //$NON-NLS-1$ > >- Node targetNode = createNode(nodeMetaType, diagram); >+ Node targetNode = createNode(getTargetGenNode(), diagram); > assertNotNull(findEditPart(targetNode)); > setBusinessElementStructuralFeature(sourceContainerNode, "acceptLinkKind", null); //$NON-NLS-1$ > assertFalse("Can start link without acceptedLinkKind", //$NON-NLS-1$ >- canStartLinkFrom(referenceLinkMetaType, sourceContainerNode)); >+ canStartLinkFrom(getRefGenLink(), sourceContainerNode)); > > String linkKind = "kind1"; //$NON-NLS-1$ > setBusinessElementStructuralFeature(sourceContainerNode, "acceptLinkKind", linkKind); //$NON-NLS-1$ > assertTrue("Allow start link with acceptedLinkKind", //$NON-NLS-1$ >- canStartLinkFrom(referenceLinkMetaType, sourceContainerNode)); >+ canStartLinkFrom(getRefGenLink(), sourceContainerNode)); > > assertNull("Do not create link to node with different linkKind", //$NON-NLS-1$ >- createLink(referenceLinkMetaType, sourceContainerNode, targetNode)); >+ createLink(getRefGenLink(), sourceContainerNode, targetNode)); > // set the same link kind to target node > setBusinessElementStructuralFeature(targetNode, "acceptLinkKind", linkKind); //$NON-NLS-1$ >- Edge link = createLink(referenceLinkMetaType, sourceContainerNode, targetNode); >+ Edge link = createLink(getRefGenLink(), sourceContainerNode, targetNode); > assertNotNull("Link start should be allowed", link); //$NON-NLS-1$ > // once create, refect 2nd link creation due to multiplicity 0..1 > assertNull("Do not create already existing link", //$NON-NLS-1$ >- createLink(referenceLinkMetaType, sourceContainerNode, targetNode)); >+ createLink(getRefGenLink(), sourceContainerNode, targetNode)); > assertFalse("Do allow start for 2nd link", //$NON-NLS-1$ >- canStartLinkFrom(referenceLinkMetaType, sourceContainerNode)); >+ canStartLinkFrom(getRefGenLink(), sourceContainerNode)); > > // test link with Class > assertNotNull("Should create link for nodes with equal acceptLinkKind", //$NON-NLS-1$ >- createLink(linkMetaType, sourceContainerNode, targetNode)); >+ createLink(getClassGenLink(), sourceContainerNode, targetNode)); > // set different acceptLinkKind > setBusinessElementStructuralFeature(sourceContainerNode, "acceptLinkKind", null); //$NON-NLS-1$ > assertTrue("Should start link with no restriction", //$NON-NLS-1$ >- canStartLinkFrom(linkMetaType, sourceContainerNode)); >+ canStartLinkFrom(getClassGenLink(), sourceContainerNode)); > assertNull("Should not create link for nodes with different acceptLinkKind", //$NON-NLS-1$ >- createLink(linkMetaType, sourceContainerNode, targetNode)); >+ createLink(getClassGenLink(), sourceContainerNode, targetNode)); > // set the same acceptLinkKind to target node > setBusinessElementStructuralFeature(targetNode, "acceptLinkKind", "kind1"); //$NON-NLS-1$ //$NON-NLS-2$ > setBusinessElementStructuralFeature(sourceContainerNode, "acceptLinkKind", "kind1"); //$NON-NLS-1$ //$NON-NLS-2$ >- assertTrue(canStartLinkFrom(linkMetaType, sourceContainerNode)); >+ assertTrue(canStartLinkFrom(getClassGenLink(), sourceContainerNode)); > assertNotNull("Should create link for nodes with equal acceptLinkKind", //$NON-NLS-1$ >- createLink(linkMetaType, sourceContainerNode, targetNode)); >+ createLink(getClassGenLink(), sourceContainerNode, targetNode)); > } > > private GenLink getRefGenLink() { >Index: src/org/eclipse/gmf/tests/rt/AuditRulesTest.java >=================================================================== >RCS file: /cvsroot/technology/org.eclipse.gmf/tests/org.eclipse.gmf.tests/src/org/eclipse/gmf/tests/rt/AuditRulesTest.java,v >retrieving revision 1.9 >diff -u -r1.9 AuditRulesTest.java >--- src/org/eclipse/gmf/tests/rt/AuditRulesTest.java 25 Apr 2006 19:15:52 -0000 1.9 >+++ src/org/eclipse/gmf/tests/rt/AuditRulesTest.java 4 May 2006 14:12:16 -0000 >@@ -44,7 +44,6 @@ > import org.eclipse.gmf.mappings.MappingEntry; > import org.eclipse.gmf.mappings.NodeMapping; > import org.eclipse.gmf.mappings.NotationElementTarget; >-import org.eclipse.gmf.runtime.emf.type.core.IElementType; > import org.eclipse.gmf.runtime.notation.NotationPackage; > import org.eclipse.gmf.tests.setup.MapDefSource; > >@@ -103,9 +102,9 @@ > EClass target = findCanonicalEClass(getTargetEClass(audit)); > EObject validatedInstance = null; > if(NotationPackage.eINSTANCE.getView().isSuperTypeOf(target)) { >- IElementType nodeAMetaType = getElementType(getSetup().getGenModel().getNodeA()); >- assertNotNull("Node element type is not registered", nodeAMetaType); >- validatedInstance = createNode(nodeAMetaType, getDiagram()); >+// IElementType nodeAMetaType = getElementType(getSetup().getGenModel().getNodeA()); >+// assertNotNull("Node element type is not registered", nodeAMetaType); >+ validatedInstance = createNode(getSetup().getGenModel().getNodeA(), getDiagram()); > } else { > validatedInstance = target.getEPackage().getEFactoryInstance().create(target); > } >Index: src/org/eclipse/gmf/tests/rt/GeneratedCanvasTest.java >=================================================================== >RCS file: /cvsroot/technology/org.eclipse.gmf/tests/org.eclipse.gmf.tests/src/org/eclipse/gmf/tests/rt/GeneratedCanvasTest.java,v >retrieving revision 1.2 >diff -u -r1.2 GeneratedCanvasTest.java >--- src/org/eclipse/gmf/tests/rt/GeneratedCanvasTest.java 28 Feb 2006 17:23:13 -0000 1.2 >+++ src/org/eclipse/gmf/tests/rt/GeneratedCanvasTest.java 4 May 2006 14:12:16 -0000 >@@ -11,33 +11,17 @@ > */ > package org.eclipse.gmf.tests.rt; > >-import java.util.Collections; >-import java.util.List; >- >-import org.eclipse.draw2d.GraphicsSource; >-import org.eclipse.draw2d.IFigure; >-import org.eclipse.draw2d.LightweightSystem; >-import org.eclipse.draw2d.UpdateManager; >-import org.eclipse.draw2d.geometry.Rectangle; > import org.eclipse.gef.EditPart; >-import org.eclipse.gef.EditPartFactory; >-import org.eclipse.gef.EditPartViewer; > import org.eclipse.gef.commands.Command; > import org.eclipse.gef.commands.CommandStack; >-import org.eclipse.gef.ui.parts.GraphicalViewerImpl; >-import org.eclipse.gmf.runtime.diagram.core.listener.DiagramEventBroker; >-import org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart; >-import org.eclipse.gmf.runtime.diagram.ui.parts.DiagramCommandStack; >-import org.eclipse.gmf.runtime.diagram.ui.parts.DiagramEditDomain; >-import org.eclipse.gmf.runtime.diagram.ui.parts.IDiagramEditDomain; >-import org.eclipse.gmf.runtime.diagram.ui.parts.IDiagramGraphicalViewer; >+import org.eclipse.gmf.runtime.notation.Diagram; > import org.eclipse.gmf.runtime.notation.View; > import org.eclipse.gmf.tests.ConfiguredTestCase; > import org.eclipse.gmf.tests.setup.RTSetup; > import org.eclipse.gmf.tests.setup.RTSource; >+import org.eclipse.gmf.tests.setup.GeneratorConfiguration.ViewerConfiguration; > import org.eclipse.swt.SWT; > import org.eclipse.swt.widgets.Composite; >-import org.eclipse.swt.widgets.Display; > import org.eclipse.swt.widgets.Shell; > import org.osgi.framework.Bundle; > >@@ -46,7 +30,7 @@ > */ > public abstract class GeneratedCanvasTest extends ConfiguredTestCase { > >- private EditPartViewer myViewer; >+ private ViewerConfiguration myViewerConfiguration; > private Composite myParentShell; > private Bundle myGenProject; > private RTSource myRTSource; >@@ -58,14 +42,8 @@ > protected void setUp() throws Exception { > super.setUp(); > myGenProject = getSetup().getGenProject().getBundle(); >- String epFactoryClassName = getSetup().getGenModel().getGenDiagram().getEditPartFactoryQualifiedClassName(); >- Class epFactory = loadGeneratedClass(epFactoryClassName); >- assert EditPartFactory.class.isAssignableFrom(epFactory); >- myViewer = createViewer(); >- myViewer.setEditPartFactory((EditPartFactory) epFactory.newInstance()); >- > myRTSource = createCanvasInstance(); >- myViewer.setContents(myRTSource.getCanvas()); >+ myViewerConfiguration = createViewerConfiguration(myRTSource.getCanvas()); > } > > protected final RTSource getCanvasInstance() { >@@ -77,19 +55,24 @@ > } > > protected final EditPart getDiagramEditPart() { >- return myViewer.getContents(); >+ return myViewerConfiguration.getViewer().getContents(); >+ } >+ >+ public ViewerConfiguration getViewerConfiguration() { >+ return myViewerConfiguration; > } > > protected void tearDown() throws Exception { > if (myParentShell != null) { > myParentShell.dispose(); > myParentShell = null; >+ myViewerConfiguration.dispose(); > } > super.tearDown(); > } > > protected final EditPart findEditPart(View notationElement) { >- return (EditPart) myViewer.getEditPartRegistry().get(notationElement); >+ return (EditPart) myViewerConfiguration.findEditPart(notationElement); > } > > protected final Class loadGeneratedClass(String qualifiedClassName) throws ClassNotFoundException { >@@ -105,71 +88,11 @@ > } > > protected final CommandStack getCommandStack() { >- return myViewer.getEditDomain().getCommandStack(); >+ return myViewerConfiguration.getViewer().getEditDomain().getCommandStack(); > } > >- private EditPartViewer createViewer() { >- // make sure there's display for current thread >- Display.getDefault(); >- >- FakeViewer gv = new FakeViewer(); >+ protected ViewerConfiguration createViewerConfiguration(Diagram canvas) throws Exception { > myParentShell = new Shell(SWT.NONE); >- gv.createControl(myParentShell); >- DiagramEditDomain ded = new DiagramEditDomain(null); >- gv.setEditDomain(ded); >- gv.getEditDomain().setCommandStack(new DiagramCommandStack(ded)); >- return gv; >- } >- >- >- private static final class FakeViewer extends GraphicalViewerImpl implements IDiagramGraphicalViewer{ >- >- private FakeViewer() { >- /* >- * When extends DiagramGraphicalViewer, don't forget to >- * super.hookWorkspacePreferenceStore(new PreferenceStore()); >- */ >- } >- >- public void setContents(Object contents) { >- GraphicalEditPart epart = (GraphicalEditPart)getEditPartFactory().createEditPart(null, contents); >- DiagramEventBroker.startListening(epart.getEditingDomain()); >- super.setContents(epart); >- } >- >- protected LightweightSystem createLightweightSystem() { >- final UpdateManager NO_MANAGER = new UpdateManager() { >- public void addDirtyRegion(IFigure figure, int x, int y, int w, int h) {} >- public void addInvalidFigure(IFigure figure) {} >- public void performUpdate() {} >- public void performUpdate(Rectangle exposed) {} >- public void setGraphicsSource(GraphicsSource gs) {} >- public void setRoot(IFigure figure) {} >- }; >- >- return new LightweightSystem() { >- { >- setUpdateManager(NO_MANAGER); >- } >- >- public UpdateManager getUpdateManager() { >- return NO_MANAGER; >- } >- }; >- } >- >- public IDiagramEditDomain getDiagramEditDomain() { >- return (IDiagramEditDomain) super.getEditDomain(); >- } >- >- public List findEditPartsForElement(String elementIdStr, Class editPartClass) { >- return Collections.EMPTY_LIST; >- } >- >- public void registerEditPartForElement(String elementIdStr, EditPart ep) { >- } >- >- public void unregisterEditPartForElement(String elementIdStr, EditPart ep) { >- } >+ return getSetup().getGeneratorConfiguration().createViewerConfiguration(myParentShell, getSetup(), canvas); > } > } >Index: src/org/eclipse/gmf/tests/setup/SessionSetup.java >=================================================================== >RCS file: /cvsroot/technology/org.eclipse.gmf/tests/org.eclipse.gmf.tests/src/org/eclipse/gmf/tests/setup/SessionSetup.java,v >retrieving revision 1.9 >diff -u -r1.9 SessionSetup.java >--- src/org/eclipse/gmf/tests/setup/SessionSetup.java 8 Feb 2006 18:53:33 -0000 1.9 >+++ src/org/eclipse/gmf/tests/setup/SessionSetup.java 4 May 2006 14:12:16 -0000 >@@ -27,6 +27,7 @@ > private int myUses; > private static RuntimeWorkspaceSetup myRuntimeWorkspaceSetup; > protected static boolean factoryClosed = false; >+ private GeneratorConfiguration myGeneratorConfiguration; > > /** > * Use factory method {@link #newInstance()} instead >@@ -81,7 +82,18 @@ > } > > protected GenProjectSetup createGenProject() throws BundleException, Exception { >- return new GenProjectSetup().init(getRuntimeWorkspaceSetup(), getGenModel()); >+ return new GenProjectSetup(getGeneratorConfiguration()).init(getRuntimeWorkspaceSetup(), getGenModel()); >+ } >+ >+ public GeneratorConfiguration getGeneratorConfiguration() { >+ if (myGeneratorConfiguration == null) { >+ myGeneratorConfiguration = createGeneratorConfiguration(); >+ } >+ return myGeneratorConfiguration; >+ } >+ >+ protected GeneratorConfiguration createGeneratorConfiguration() { >+ return new RuntimeBasedGeneratorConfiguration(); > } > > public MapDefSource getMapModel() { >Index: src/org/eclipse/gmf/tests/setup/GenProjectBaseSetup.java >=================================================================== >RCS file: /cvsroot/technology/org.eclipse.gmf/tests/org.eclipse.gmf.tests/src/org/eclipse/gmf/tests/setup/GenProjectBaseSetup.java,v >retrieving revision 1.7 >diff -u -r1.7 GenProjectBaseSetup.java >--- src/org/eclipse/gmf/tests/setup/GenProjectBaseSetup.java 8 Feb 2006 00:19:09 -0000 1.7 >+++ src/org/eclipse/gmf/tests/setup/GenProjectBaseSetup.java 4 May 2006 14:12:16 -0000 >@@ -26,9 +26,10 @@ > import org.eclipse.core.runtime.NullProgressMonitor; > import org.eclipse.emf.codegen.ecore.genmodel.GenModel; > import org.eclipse.gmf.codegen.gmfgen.GenDiagram; >-import org.eclipse.gmf.codegen.util.Generator; >+import org.eclipse.gmf.common.codegen.GeneratorBase; > import org.eclipse.gmf.tests.CompileUtil; > import org.eclipse.gmf.tests.Plugin; >+import org.eclipse.gmf.tests.setup.GeneratorConfiguration; > > /** > * Generates and (by default) compiles gmf plugins. >@@ -37,6 +38,11 @@ > public class GenProjectBaseSetup { > private final Set projectsToInit = new LinkedHashSet(); > private CompileUtil compileUtil; >+ private GeneratorConfiguration myGeneratorFactory; >+ >+ public GenProjectBaseSetup(GeneratorConfiguration generatorFactory) { >+ myGeneratorFactory = generatorFactory; >+ } > > public void generateAndCompile(RuntimeWorkspaceSetup rtWorkspace, DiaGenSource diaGenSource) throws Exception { > rtWorkspace.ensureJava14(); >@@ -51,7 +57,7 @@ > domainGenModel.generateEdit(new NullProgressMonitor()); > projectsToInit.add(domainGenModel.getEditPluginID()); > >- Generator generator = new Generator(d); >+ GeneratorBase generator = myGeneratorFactory.createGenerator(d); > generator.run(); > hookGeneratorStatus(generator.getRunStatus()); > final String gmfEditorId = d.getEditorGen().getPlugin().getID(); >Index: src/org/eclipse/gmf/tests/setup/GenProjectSetup.java >=================================================================== >RCS file: /cvsroot/technology/org.eclipse.gmf/tests/org.eclipse.gmf.tests/src/org/eclipse/gmf/tests/setup/GenProjectSetup.java,v >retrieving revision 1.15 >diff -u -r1.15 GenProjectSetup.java >--- src/org/eclipse/gmf/tests/setup/GenProjectSetup.java 13 Apr 2006 14:20:49 -0000 1.15 >+++ src/org/eclipse/gmf/tests/setup/GenProjectSetup.java 4 May 2006 14:12:16 -0000 >@@ -20,6 +20,7 @@ > import org.eclipse.core.runtime.IRegistryChangeListener; > import org.eclipse.core.runtime.RegistryFactory; > import org.eclipse.gmf.tests.Plugin; >+import org.eclipse.gmf.tests.setup.GeneratorConfiguration; > import org.eclipse.swt.widgets.Display; > import org.osgi.framework.Bundle; > import org.osgi.framework.BundleException; >@@ -32,7 +33,8 @@ > > private Bundle myBundle; > >- public GenProjectSetup() { >+ public GenProjectSetup(GeneratorConfiguration generatorFactory) { >+ super(generatorFactory); > } > > /** >Index: src/org/eclipse/gmf/tests/gen/CompilationTest.java >=================================================================== >RCS file: /cvsroot/technology/org.eclipse.gmf/tests/org.eclipse.gmf.tests/src/org/eclipse/gmf/tests/gen/CompilationTest.java,v >retrieving revision 1.10 >diff -u -r1.10 CompilationTest.java >--- src/org/eclipse/gmf/tests/gen/CompilationTest.java 7 Mar 2006 16:41:23 -0000 1.10 >+++ src/org/eclipse/gmf/tests/gen/CompilationTest.java 4 May 2006 14:12:16 -0000 >@@ -18,11 +18,13 @@ > > import org.eclipse.emf.common.util.URI; > import org.eclipse.gmf.tests.Plugin; >+import org.eclipse.gmf.tests.setup.RuntimeBasedGeneratorConfiguration; > import org.eclipse.gmf.tests.setup.DiaDefSetup; > import org.eclipse.gmf.tests.setup.DiaGenFileSetup; > import org.eclipse.gmf.tests.setup.DiaGenSource; > import org.eclipse.gmf.tests.setup.DomainModelSource; > import org.eclipse.gmf.tests.setup.GenProjectBaseSetup; >+import org.eclipse.gmf.tests.setup.GeneratorConfiguration; > import org.eclipse.gmf.tests.setup.MapDefSource; > import org.eclipse.gmf.tests.setup.MapSetup; > import org.eclipse.gmf.tests.setup.MultiPackageGenSetup; >@@ -46,13 +48,13 @@ > public void testCompileDistinctModelAndDiagramFiles() throws Exception { > DiaGenSource gmfGenSource = loadSource(); > gmfGenSource.getGenDiagram().getEditorGen().setSameFileForDiagramAndModel(false); >- new GenProjectBaseSetup().generateAndCompile(SessionSetup.getRuntimeWorkspaceSetup(), gmfGenSource); >+ generateAndCompile(gmfGenSource); > } > > public void testCompileSingleDiagramFile() throws Exception { > DiaGenSource gmfGenSource = loadSource(); > gmfGenSource.getGenDiagram().getEditorGen().setSameFileForDiagramAndModel(true); >- new GenProjectBaseSetup().generateAndCompile(SessionSetup.getRuntimeWorkspaceSetup(), gmfGenSource); >+ generateAndCompile(gmfGenSource); > } > > private DiaGenSource loadSource() throws IOException { >@@ -72,7 +74,15 @@ > > DiaGenSource gmfGenSource = new MultiPackageGenSetup(additionalPacks).init(ms); > >- new GenProjectBaseSetup().generateAndCompile(SessionSetup.getRuntimeWorkspaceSetup(), gmfGenSource); >+ generateAndCompile(gmfGenSource); >+ } >+ >+ protected void generateAndCompile(DiaGenSource genSource) throws Exception { >+ new GenProjectBaseSetup(getGeneratorConfiguration()).generateAndCompile(SessionSetup.getRuntimeWorkspaceSetup(), genSource); >+ } >+ >+ protected GeneratorConfiguration getGeneratorConfiguration() { >+ return new RuntimeBasedGeneratorConfiguration(); > } > > protected void tearDown() throws Exception { >Index: META-INF/MANIFEST.MF >=================================================================== >RCS file: /cvsroot/technology/org.eclipse.gmf/tests/org.eclipse.gmf.tests/META-INF/MANIFEST.MF,v >retrieving revision 1.19 >diff -u -r1.19 MANIFEST.MF >--- META-INF/MANIFEST.MF 12 Apr 2006 18:16:38 -0000 1.19 >+++ META-INF/MANIFEST.MF 4 May 2006 14:12:16 -0000 >@@ -19,3 +19,9 @@ > org.eclipse.gmf.codegen.ui;bundle-version="[1.0.0,2.0.0)" > Bundle-Activator: org.eclipse.gmf.tests.Plugin > Eclipse-LazyStart: true >+Export-Package: org.eclipse.gmf.tests;x-friends:="org.eclipse.gmf.tests.lite", >+ org.eclipse.gmf.tests.gef;x-friends:="org.eclipse.gmf.tests.lite", >+ org.eclipse.gmf.tests.gen;x-friends:="org.eclipse.gmf.tests.lite", >+ org.eclipse.gmf.tests.rt;x-friends:="org.eclipse.gmf.tests.lite", >+ org.eclipse.gmf.tests.setup;x-friends:="org.eclipse.gmf.tests.lite", >+ org.eclipse.gmf.tests.tr;x-friends:="org.eclipse.gmf.tests.lite" >Index: src/org/eclipse/gmf/tests/setup/NoUpdateViewer.java >=================================================================== >RCS file: src/org/eclipse/gmf/tests/setup/NoUpdateViewer.java >diff -N src/org/eclipse/gmf/tests/setup/NoUpdateViewer.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/gmf/tests/setup/NoUpdateViewer.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,42 @@ >+/** >+ * Copyright (c) 2006 Eclipse.org >+ * >+ * 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: >+ * bblajer - initial API and implementation >+ */ >+package org.eclipse.gmf.tests.setup; >+ >+import org.eclipse.draw2d.GraphicsSource; >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.LightweightSystem; >+import org.eclipse.draw2d.UpdateManager; >+import org.eclipse.draw2d.geometry.Rectangle; >+import org.eclipse.gef.ui.parts.GraphicalViewerImpl; >+ >+public class NoUpdateViewer extends GraphicalViewerImpl { >+ protected LightweightSystem createLightweightSystem() { >+ final UpdateManager NO_MANAGER = new UpdateManager() { >+ public void addDirtyRegion(IFigure figure, int x, int y, int w, int h) {} >+ public void addInvalidFigure(IFigure figure) {} >+ public void performUpdate() {} >+ public void performUpdate(Rectangle exposed) {} >+ public void setGraphicsSource(GraphicsSource gs) {} >+ public void setRoot(IFigure figure) {} >+ }; >+ >+ return new LightweightSystem() { >+ { >+ setUpdateManager(NO_MANAGER); >+ } >+ >+ public UpdateManager getUpdateManager() { >+ return NO_MANAGER; >+ } >+ }; >+ } >+} >Index: src/org/eclipse/gmf/tests/setup/GeneratorConfiguration.java >=================================================================== >RCS file: src/org/eclipse/gmf/tests/setup/GeneratorConfiguration.java >diff -N src/org/eclipse/gmf/tests/setup/GeneratorConfiguration.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/gmf/tests/setup/GeneratorConfiguration.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,30 @@ >+package org.eclipse.gmf.tests.setup; >+ >+import org.eclipse.gef.EditPart; >+import org.eclipse.gef.EditPartViewer; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gmf.codegen.gmfgen.GenCommonBase; >+import org.eclipse.gmf.codegen.gmfgen.GenDiagram; >+import org.eclipse.gmf.common.codegen.GeneratorBase; >+import org.eclipse.gmf.runtime.notation.Diagram; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.swt.widgets.Composite; >+ >+public interface GeneratorConfiguration { >+ public GeneratorBase createGenerator(GenDiagram diagram); >+ >+ /** >+ * Encapsulates differences in the way viewer is created and operated in different configurations. >+ */ >+ public static interface ViewerConfiguration { >+ public EditPart findEditPart(View notationElement); >+ public EditPartViewer getViewer(); >+ public Command getCreateNodeCommand(View parentView, GenCommonBase nodeType); >+ public Command getStartLinkCommand(View source, GenCommonBase linkType); >+ public Command getCreateLinkCommand(View source, View target, GenCommonBase linkType); >+ public void setBusinessElementStructuralFeature(View view, String featureName, Object value); >+ public void dispose(); >+ } >+ >+ public ViewerConfiguration createViewerConfiguration(Composite parent, SessionSetup setup, Diagram canvas) throws Exception; >+} >Index: src/org/eclipse/gmf/tests/setup/RuntimeBasedGeneratorConfiguration.java >=================================================================== >RCS file: src/org/eclipse/gmf/tests/setup/RuntimeBasedGeneratorConfiguration.java >diff -N src/org/eclipse/gmf/tests/setup/RuntimeBasedGeneratorConfiguration.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/gmf/tests/setup/RuntimeBasedGeneratorConfiguration.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,247 @@ >+/* >+ * 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: >+ * Boris Blajer (Borland) - initial API and implementation >+ */ >+package org.eclipse.gmf.tests.setup; >+ >+import java.util.Arrays; >+import java.util.Collections; >+import java.util.List; >+ >+import junit.framework.Assert; >+ >+import org.eclipse.draw2d.geometry.Point; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.ecore.EStructuralFeature; >+import org.eclipse.emf.transaction.TransactionalEditingDomain; >+import org.eclipse.gef.EditPart; >+import org.eclipse.gef.EditPartFactory; >+import org.eclipse.gef.EditPartViewer; >+import org.eclipse.gef.RequestConstants; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gmf.codegen.gmfgen.GenCommonBase; >+import org.eclipse.gmf.codegen.gmfgen.GenDiagram; >+import org.eclipse.gmf.codegen.util.Generator; >+import org.eclipse.gmf.common.codegen.GeneratorBase; >+import org.eclipse.gmf.runtime.diagram.core.edithelpers.CreateElementRequestAdapter; >+import org.eclipse.gmf.runtime.diagram.core.listener.DiagramEventBroker; >+import org.eclipse.gmf.runtime.diagram.core.preferences.PreferencesHint; >+import org.eclipse.gmf.runtime.diagram.ui.commands.EtoolsProxyCommand; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.parts.DiagramCommandStack; >+import org.eclipse.gmf.runtime.diagram.ui.parts.DiagramEditDomain; >+import org.eclipse.gmf.runtime.diagram.ui.parts.IDiagramEditDomain; >+import org.eclipse.gmf.runtime.diagram.ui.parts.IDiagramGraphicalViewer; >+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateConnectionViewAndElementRequest; >+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateUnspecifiedTypeRequest; >+import org.eclipse.gmf.runtime.diagram.ui.requests.EditCommandRequestWrapper; >+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateConnectionViewAndElementRequest.ConnectionViewAndElementDescriptor; >+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.emf.type.core.IHintedType; >+import org.eclipse.gmf.runtime.emf.type.core.commands.SetValueCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest; >+import org.eclipse.gmf.runtime.notation.Diagram; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.gmf.tests.EPath; >+import org.eclipse.swt.widgets.Composite; >+import org.eclipse.swt.widgets.Display; >+import org.osgi.framework.Bundle; >+ >+public class RuntimeBasedGeneratorConfiguration implements GeneratorConfiguration { >+ public GeneratorBase createGenerator(GenDiagram diagram) { >+ return new Generator(diagram.getEditorGen()); >+ } >+ >+ public ViewerConfiguration createViewerConfiguration(Composite parent, SessionSetup sessionSetup, Diagram canvas) throws Exception { >+ EditPartViewer viewer = createViewer(parent); >+ String epFactoryClassName = sessionSetup.getGenModel().getGenDiagram().getEditPartFactoryQualifiedClassName(); >+ Class epFactory = sessionSetup.getGenProject().getBundle().loadClass(epFactoryClassName); >+ assert EditPartFactory.class.isAssignableFrom(epFactory); >+ viewer.setEditPartFactory((EditPartFactory) epFactory.newInstance()); >+ viewer.setContents(canvas); >+ return createViewerConfiguration(sessionSetup, viewer); >+ } >+ >+ protected ViewerConfiguration createViewerConfiguration(SessionSetup sessionSetup, EditPartViewer viewer) throws Exception { >+ return new DefaultViewerConfiguration(sessionSetup, viewer); >+ } >+ >+ private EditPartViewer createViewer(Composite parent) { >+ // make sure there's display for current thread >+ Display.getDefault(); >+ >+ EditPartViewer gv = createViewerInstance(); >+ gv.createControl(parent); >+ DiagramEditDomain ded = new DiagramEditDomain(null); >+ gv.setEditDomain(ded); >+ gv.getEditDomain().setCommandStack(new DiagramCommandStack(ded)); >+ return gv; >+ } >+ >+ protected EditPartViewer createViewerInstance() { >+ return new FakeViewer(); >+ } >+ >+ protected static class DefaultViewerConfiguration implements ViewerConfiguration { >+ private EditPartViewer myViewer; >+ private Bundle myGenProject; >+ private SessionSetup mySessionSetup; >+ >+ public DefaultViewerConfiguration(SessionSetup sessionSetup, EditPartViewer viewer) throws Exception { >+ myViewer = viewer; >+ mySessionSetup = sessionSetup; >+ myGenProject = sessionSetup.getGenProject().getBundle(); >+ } >+ >+ public EditPartViewer getViewer() { >+ return myViewer; >+ } >+ >+ public EditPart findEditPart(View notationElement) { >+ return (EditPart) myViewer.getEditPartRegistry().get(notationElement); >+ } >+ >+ public void setBusinessElementStructuralFeature(View view, String featureName, Object value) { >+ EObject instance = view.getElement(); >+ Assert.assertNotNull("No business element bound to notation element", instance); //$NON-NLS-1$ >+ EObject resultObj = EPath.findLocalFeature(instance.eClass(), featureName); >+ if (!(resultObj instanceof EStructuralFeature)) { >+ throw new IllegalArgumentException("Not existing feature: " + featureName); //$NON-NLS-1$ >+ } >+ >+ EStructuralFeature feature = (EStructuralFeature) resultObj; >+ SetRequest setReq = new SetRequest(instance, feature, value); >+ EditPart editPart = findEditPart(view); >+ Assert.assertTrue("IGraphicalEditPart expected", editPart instanceof IGraphicalEditPart); //$NON-NLS-1$ >+ >+ TransactionalEditingDomain txEditDomain = ((IGraphicalEditPart) editPart).getEditingDomain(); >+ CompositeTransactionalCommand modelCmd = new CompositeTransactionalCommand(txEditDomain, "Set feature"); //$NON-NLS-1$ >+ modelCmd.compose(new SetValueCommand(setReq)); >+ new EtoolsProxyCommand(modelCmd).execute(); >+ } >+ >+ public void dispose() { >+ myViewer = null; >+ } >+ >+ public Command getCreateNodeCommand(View parentView, GenCommonBase nodeType) { >+ IElementType metamodelType = getElementType(nodeType); >+ CreateUnspecifiedTypeRequest req = new CreateUnspecifiedTypeRequest(Arrays.asList(new IElementType[] { metamodelType }), PreferencesHint.USE_DEFAULTS); >+ return findEditPart(parentView).getCommand(req); >+ } >+ >+ public Command getStartLinkCommand(View source, GenCommonBase linkType) { >+ IElementType metamodelType = getElementType(linkType); >+ CreateRelationshipRequest req = new CreateRelationshipRequest(source.getElement(), null, metamodelType); >+ EditCommandRequestWrapper wrapper = new EditCommandRequestWrapper(req); >+ return findEditPart(source).getCommand(wrapper); >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.gmf.tests.setup.GeneratorConfiguration.ViewerConfiguration#getCreateLinkCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.gmf.runtime.notation.View, org.eclipse.gmf.codegen.gmfgen.GenCommonBase) >+ */ >+ public Command getCreateLinkCommand(View source, View target, GenCommonBase linkType) { >+ IElementType metamodelType = getElementType(linkType); >+ CreateRelationshipRequest relationShipReq = new CreateRelationshipRequest(metamodelType); >+ relationShipReq.setSource(source.getElement()); >+ if (target != null) { >+ relationShipReq.setTarget(target.getElement()); >+ } >+ >+ ConnectionViewAndElementDescriptor desc = new ConnectionViewAndElementDescriptor(new CreateElementRequestAdapter(relationShipReq), metamodelType instanceof IHintedType ? ((IHintedType) metamodelType).getSemanticHint() : "", PreferencesHint.USE_DEFAULTS); >+ >+ CreateConnectionViewAndElementRequest req = new CreateConnectionViewAndElementRequest(desc); >+ req.setType(RequestConstants.REQ_CONNECTION_START); >+ >+ EditPart sourceEditPart = findEditPart(source); >+ req.setSourceEditPart(sourceEditPart); >+ // Note: initializes the sourceCommand in the request >+ Command sourceCmd = sourceEditPart.getCommand(req); >+ if (sourceCmd == null || !sourceCmd.canExecute()) { >+ return null; >+ } >+ >+ EditPart targetEditPart = target != null ? findEditPart(target) : null; >+ if (targetEditPart != null) { >+ req.setType(RequestConstants.REQ_CONNECTION_END); >+ req.setTargetEditPart(targetEditPart); >+ req.setLocation(new Point(0, 0)); >+ sourceEditPart.getCommand(req); >+ Command targetCmd = targetEditPart.getCommand(req); >+ return targetCmd; >+ } >+ return null; >+ } >+ >+ protected final Class loadGeneratedClass(String qualifiedClassName) throws ClassNotFoundException { >+ return myGenProject.loadClass(qualifiedClassName); >+ } >+ >+ protected DiaGenSource getGenModel() { >+ return mySessionSetup.getGenModel(); >+ } >+ >+ private IElementType getElementType(GenCommonBase genElement) { >+ Class clazz = null; >+ try { >+ clazz = loadGeneratedClass(getGenModel().getGenDiagram().getElementTypesQualifiedClassName()); >+ } catch (Exception e) { >+ e.printStackTrace(); >+ Assert.fail("ElementTypes class not loaded. " + e.getLocalizedMessage()); //$NON-NLS-1$ >+ } >+ String identifier = genElement.getUniqueIdentifier(); >+ try { >+ Object type = clazz.getField(identifier).get(null); >+ assert type != null : "Metatype field in the ElementTypes class should be initialized"; //$NON-NLS-1$ >+ assert type instanceof IElementType : IElementType.class.getName() + ": metamodel type class required"; //$NON-NLS-1$ >+ return (IElementType) type; >+ } catch (NoSuchFieldException e) { >+ Assert.fail("Metamodel type " + identifier + " is not registered"); //$NON-NLS-1$ //$NON-NLS-2$ >+ } catch (Exception e) { >+ e.printStackTrace(); >+ Assert.fail("Can't access metamodel type " + identifier); //$NON-NLS-1$ >+ } >+ >+ return null; >+ } >+ } >+ >+ private static final class FakeViewer extends NoUpdateViewer implements IDiagramGraphicalViewer{ >+ private FakeViewer() { >+ /* >+ * When extends DiagramGraphicalViewer, don't forget to >+ * super.hookWorkspacePreferenceStore(new PreferenceStore()); >+ */ >+ } >+ >+ public void setContents(Object contents) { >+ GraphicalEditPart epart = (GraphicalEditPart)getEditPartFactory().createEditPart(null, contents); >+ DiagramEventBroker.startListening(epart.getEditingDomain()); >+ super.setContents(epart); >+ } >+ >+ public IDiagramEditDomain getDiagramEditDomain() { >+ return (IDiagramEditDomain) super.getEditDomain(); >+ } >+ >+ public List findEditPartsForElement(String elementIdStr, Class editPartClass) { >+ return Collections.EMPTY_LIST; >+ } >+ >+ public void registerEditPartForElement(String elementIdStr, EditPart ep) { >+ } >+ >+ public void unregisterEditPartForElement(String elementIdStr, EditPart ep) { >+ } >+ } >+}
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 140162
: 40355 |
42150
|
42153