Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » GMF (Graphical Modeling Framework) » reusing a GMF-generated editor as a viewer
reusing a GMF-generated editor as a viewer [message #122464] Sat, 28 April 2007 22:21 Go to next message
Eclipse UserFriend
Originally posted by: chaves.inf.ufsc.nospam.br

The UML2tools has a GMF-based editor for the UML class diagram. I want
to create a model viewer (an read-only with no toolbars, no need for
persisting diagrams) by reusing it.

How can I do that?

I thought I could just create a Diagram using the ViewService:

diagram = ViewService.createDiagram(
package_,
PackageEditPart.MODEL_ID,
UMLDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);

And then from the createPartControl method in my editor, I would do the
following:

viewer = new DiagramGraphicalViewer();
viewer.createControl(parent);
viewer.setEditPartFactory(new UMLEditPartFactory());
viewer.setContents(diagram);

The problem is that the above explodes with a NPE deep in GEF code. I am
not familiar enough with GMF or GEF to understand what can be causing
that. I included the NPE below in case anyone here can figure it out.
The NPE happens on the second line of the following method in
GraphicalViewerImpl:

public void registerAccessibleEditPart(AccessibleEditPart acc) {
Assert.isNotNull(acc);
getEventDispatcher().putAccessible(acc);
}

Thanks for any clues,

Rafael

java.lang.NullPointerException
at
org.eclipse.gef.ui.parts.GraphicalViewerImpl.registerAccessi bleEditPart(GraphicalViewerImpl.java:273)
at
org.eclipse.gef.editparts.AbstractEditPart.registerAccessibi lity(AbstractEditPart.java:768)
at
org.eclipse.gef.editparts.AbstractEditPart.register(Abstract EditPart.java:759)
at
org.eclipse.gef.editparts.AbstractEditPart.addNotify(Abstrac tEditPart.java:229)
at
org.eclipse.gef.editparts.AbstractGraphicalEditPart.addNotif y(AbstractGraphicalEditPart.java:212)
at
org.eclipse.gef.editparts.AbstractEditPart.addChild(Abstract EditPart.java:198)
at
org.eclipse.gef.editparts.SimpleRootEditPart.setContents(Sim pleRootEditPart.java:101)
at
org.eclipse.gef.ui.parts.AbstractEditPartViewer.setContents( AbstractEditPartViewer.java:601)
at
org.eclipse.gef.ui.parts.AbstractEditPartViewer.setContents( AbstractEditPartViewer.java:610)
at
mypackage.ClassDiagramViewer.createPartControl(ClassDiagramV iewer.java:84)
at
org.eclipse.ui.internal.EditorReference.createPartHelper(Edi torReference.java:663)
at
org.eclipse.ui.internal.EditorReference.createPart(EditorRef erence.java:422)
at
org.eclipse.ui.internal.WorkbenchPartReference.getPart(Workb enchPartReference.java:592)
at
org.eclipse.ui.internal.EditorAreaHelper.setVisibleEditor(Ed itorAreaHelper.java:263)
at
org.eclipse.ui.internal.EditorManager.setVisibleEditor(Edito rManager.java:1405)
at
org.eclipse.ui.internal.EditorManager$5.runWithException(Edi torManager.java:939)
at
org.eclipse.ui.internal.StartupThreading$StartupRunnable.run (StartupThreading.java:31)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:3 5)
at
org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchr onizer.java:123)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.jav a:3650)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java :3287)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2260)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:21 76)
at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:463)
at
org.eclipse.core.databinding.observable.Realm.runWithDefault (Realm.java:289)
at
org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:458)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
at
org.eclipse.ui.internal.ide.application.IDEApplication.start (IDEApplication.java:101)
at
org.eclipse.equinox.internal.app.EclipseAppHandle.run(Eclips eAppHandle.java:146)
at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:106)
at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:76)
at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:356)
at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:171)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce ssorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java: 476)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:416)
at org.eclipse.equinox.launcher.Main.run(Main.java:1141)
at org.eclipse.equinox.launcher.Main.main(Main.java:1116)
Re: reusing a GMF-generated editor as a viewer [message #122605 is a reply to message #122464] Mon, 30 April 2007 15:42 Go to previous message
Cherie Revells is currently offline Cherie RevellsFriend
Messages: 299
Registered: July 2009
Senior Member
Rafael,

Take a look at the code in
OffscreenEditPartFactory.createDiagramEditPart(Diagram diagram, Shell
shell, PreferencesHint preferencesHint). It does something similar.

Regards,
Cherie

Rafael Chaves wrote:
> The UML2tools has a GMF-based editor for the UML class diagram. I want
> to create a model viewer (an read-only with no toolbars, no need for
> persisting diagrams) by reusing it.
>
> How can I do that?
>
> I thought I could just create a Diagram using the ViewService:
>
> diagram = ViewService.createDiagram(
> package_,
> PackageEditPart.MODEL_ID,
> UMLDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);
>
> And then from the createPartControl method in my editor, I would do the
> following:
>
> viewer = new DiagramGraphicalViewer();
> viewer.createControl(parent);
> viewer.setEditPartFactory(new UMLEditPartFactory());
> viewer.setContents(diagram);
>
> The problem is that the above explodes with a NPE deep in GEF code. I am
> not familiar enough with GMF or GEF to understand what can be causing
> that. I included the NPE below in case anyone here can figure it out.
> The NPE happens on the second line of the following method in
> GraphicalViewerImpl:
>
> public void registerAccessibleEditPart(AccessibleEditPart acc) {
> Assert.isNotNull(acc);
> getEventDispatcher().putAccessible(acc);
> }
>
> Thanks for any clues,
>
> Rafael
>
> java.lang.NullPointerException
> at
> org.eclipse.gef.ui.parts.GraphicalViewerImpl.registerAccessi bleEditPart(GraphicalViewerImpl.java:273)
>
> at
> org.eclipse.gef.editparts.AbstractEditPart.registerAccessibi lity(AbstractEditPart.java:768)
>
> at
> org.eclipse.gef.editparts.AbstractEditPart.register(Abstract EditPart.java:759)
>
> at
> org.eclipse.gef.editparts.AbstractEditPart.addNotify(Abstrac tEditPart.java:229)
>
> at
> org.eclipse.gef.editparts.AbstractGraphicalEditPart.addNotif y(AbstractGraphicalEditPart.java:212)
>
> at
> org.eclipse.gef.editparts.AbstractEditPart.addChild(Abstract EditPart.java:198)
>
> at
> org.eclipse.gef.editparts.SimpleRootEditPart.setContents(Sim pleRootEditPart.java:101)
>
> at
> org.eclipse.gef.ui.parts.AbstractEditPartViewer.setContents( AbstractEditPartViewer.java:601)
>
> at
> org.eclipse.gef.ui.parts.AbstractEditPartViewer.setContents( AbstractEditPartViewer.java:610)
>
> at
> mypackage.ClassDiagramViewer.createPartControl(ClassDiagramV iewer.java:84)
> at
> org.eclipse.ui.internal.EditorReference.createPartHelper(Edi torReference.java:663)
>
> at
> org.eclipse.ui.internal.EditorReference.createPart(EditorRef erence.java:422)
>
> at
> org.eclipse.ui.internal.WorkbenchPartReference.getPart(Workb enchPartReference.java:592)
>
> at
> org.eclipse.ui.internal.EditorAreaHelper.setVisibleEditor(Ed itorAreaHelper.java:263)
>
> at
> org.eclipse.ui.internal.EditorManager.setVisibleEditor(Edito rManager.java:1405)
>
> at
> org.eclipse.ui.internal.EditorManager$5.runWithException(Edi torManager.java:939)
>
> at
> org.eclipse.ui.internal.StartupThreading$StartupRunnable.run (StartupThreading.java:31)
>
> at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:3 5)
> at
> org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchr onizer.java:123)
>
> at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.jav a:3650)
> at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java :3287)
> at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2260)
> at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:21 76)
> at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:463)
> at
> org.eclipse.core.databinding.observable.Realm.runWithDefault (Realm.java:289)
>
> at
> org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:458)
> at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
> at
> org.eclipse.ui.internal.ide.application.IDEApplication.start (IDEApplication.java:101)
>
> at
> org.eclipse.equinox.internal.app.EclipseAppHandle.run(Eclips eAppHandle.java:146)
>
> at
> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:106)
>
> at
> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:76)
>
> at
> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:356)
>
> at
> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:171)
>
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce ssorImpl.java:39)
>
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl.java:25)
>
> at java.lang.reflect.Method.invoke(Method.java:585)
> at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java: 476)
> at org.eclipse.equinox.launcher.Main.basicRun(Main.java:416)
> at org.eclipse.equinox.launcher.Main.run(Main.java:1141)
> at org.eclipse.equinox.launcher.Main.main(Main.java:1116)
Previous Topic:Three way EditPart overlapping contained in a top node
Next Topic:Problems launching Help Contents
Goto Forum:
  


Current Time: Fri Apr 26 18:21:55 GMT 2024

Powered by FUDForum. Page generated in 0.03032 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top