[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[news.eclipse.tools.gef] Re: Initializing the Grpahical Viewer leads to an exception

Pratik Shah wrote:
What does the getModelChildren() method of your EditPart (the one that's
experiencing the NPE) look like?  You should be able to figure out the
problem if you step through the AbstractEditPart#refreshChildren() method.

protected List getModelChildren() { IProjectElement temp = (IProjectElement) getModel(); List ret = new ArrayList(); IProjectSubElement[] elem = temp.getSubElements(); if (elem == null) return ret; // just in case... for (int i=0; i < elem.length; i++) { ret.add(elem[i]); } return ret; }


Some intensive debugging gave me the impression that there might be a connection to the Edges in my graph. Seems like the sourceConnections/targetCOnnections collections are null in AbstractGraphicalEditPart but the addNotify() (?) method seems to assume something else.



"Ralf Gitzel" <rgitzel@xxxxxxxxxxxxxxxxxxxxx> wrote in message
news:coi739$eh$1@xxxxxxxxxxxxxxxxxx

Hi,

My GEF editor class has the following method which is similar to the one
found in the example programs:

 protected void initializeGraphicalViewer()
  {
  initToolBar();
  model = project.getModels()[0];
  try
  {
  getGraphicalViewer().setContents(model);
  } catch (Exception e)
  {
   System.out.println("Caught exception");
   e.printStackTrace();
  }
  }

Surprisingly enough, I get the following output:

Caught exception
java.lang.IndexOutOfBoundsException: Figure.add(...) invalid index
at org.eclipse.draw2d.Figure.add(Figure.java:110)
at org.eclipse.draw2d.Figure.add(Figure.java:157)
at


org.eclipse.gef.editparts.AbstractGraphicalEditPart.addChildVisual(AbstractG raphicalEditPart.java:198)

at


org.eclipse.gef.editparts.AbstractEditPart.addChild(AbstractEditPart.java:19 5)

at


org.eclipse.gef.editparts.AbstractEditPart.refreshChildren(AbstractEditPart. java:750)

at


org.eclipse.gef.editparts.AbstractEditPart.refresh(AbstractEditPart.java:700 )

at


org.eclipse.gef.editparts.AbstractGraphicalEditPart.refresh(AbstractGraphica lEditPart.java:554)

at


org.eclipse.gef.editparts.AbstractEditPart.addNotify(AbstractEditPart.java:2 33)

at


org.eclipse.gef.editparts.AbstractGraphicalEditPart.addNotify(AbstractGraphi calEditPart.java:212)

at


org.eclipse.gef.editparts.AbstractEditPart.addChild(AbstractEditPart.java:19 6)

at


org.eclipse.gef.editparts.ScalableRootEditPart.setContents(ScalableRootEditP art.java:379)

at


org.eclipse.gef.ui.parts.AbstractEditPartViewer.setContents(AbstractEditPart Viewer.java:581)

at


org.eclipse.gef.ui.parts.AbstractEditPartViewer.setContents(AbstractEditPart Viewer.java:590)

at


omega.test.plugin.editors.OMEGAGraphicalEditor.initializeGraphicalViewer(OME GAGraphicalEditor.java:67)

at


org.eclipse.gef.ui.parts.GraphicalEditor.createGraphicalViewer(GraphicalEdit or.java:138)

at


org.eclipse.gef.ui.parts.GraphicalEditor.createPartControl(GraphicalEditor.j ava:148)

at org.eclipse.ui.internal.PartPane$2.run(PartPane.java:137)
at


org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java :616)

at org.eclipse.core.runtime.Platform.run(Platform.java:747)
at org.eclipse.ui.internal.PartPane.createChildControl(PartPane.java:133)
at org.eclipse.ui.internal.PartPane.createControl(PartPane.java:205)
at


org.eclipse.ui.internal.PartStack.refreshPresentationSelection(PartStack.jav a:939)

at org.eclipse.ui.internal.PartStack.setSelection(PartStack.java:921)
at org.eclipse.ui.internal.EditorStack.setSelection(EditorStack.java:196)
at org.eclipse.ui.internal.PartStack.showPart(PartStack.java:1020)
at org.eclipse.ui.internal.PartStack.add(PartStack.java:290)
at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:121)
at


org.eclipse.ui.internal.EditorSashContainer.addEditor(EditorSashContainer.ja va:59)

at


org.eclipse.ui.internal.EditorAreaHelper.openEditor(EditorAreaHelper.java:26 6)

at org.eclipse.ui.internal.EditorManager$4.run(EditorManager.java:694)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:69)
at


org.eclipse.ui.internal.EditorManager.createEditorTab(EditorManager.java:683 )

at


org.eclipse.ui.internal.EditorManager.openInternalEditor(EditorManager.java: 779)

at


org.eclipse.ui.internal.EditorManager.openEditorFromDescriptor(EditorManager .java:582)

at

org.eclipse.ui.internal.EditorManager.openEditor(EditorManager.java:570)

at


org.eclipse.ui.internal.WorkbenchPage.busyOpenEditorBatched(WorkbenchPage.ja va:2244)

at


org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(WorkbenchPage.java:2177 )

at org.eclipse.ui.internal.WorkbenchPage.access$6(WorkbenchPage.java:2169)
at org.eclipse.ui.internal.WorkbenchPage$9.run(WorkbenchPage.java:2156)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:69)
at
org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2151)
at org.eclipse.ui.ide.IDE.openEditor(IDE.java:299)
at org.eclipse.ui.actions.OpenFileAction.openFile(OpenFileAction.java:96)
at


org.eclipse.ui.actions.OpenSystemEditorAction.run(OpenSystemEditorAction.jav a:94)

at


org.eclipse.ui.views.navigator.OpenActionGroup.runDefaultAction(OpenActionGr oup.java:111)

at


org.eclipse.ui.views.navigator.MainActionGroup.runDefaultAction(MainActionGr oup.java:293)

at


org.eclipse.ui.views.navigator.ResourceNavigator.handleOpen(ResourceNavigato r.java:624)

at


org.eclipse.ui.views.navigator.ResourceNavigator$6.open(ResourceNavigator.ja va:388)

at


org.eclipse.jface.viewers.StructuredViewer$2.run(StructuredViewer.java:429)

at


org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java :616)

at org.eclipse.core.runtime.Platform.run(Platform.java:747)
at


org.eclipse.jface.viewers.StructuredViewer.fireOpen(StructuredViewer.java:42 7)

at


org.eclipse.jface.viewers.StructuredViewer.handleOpen(StructuredViewer.java: 635)

at


org.eclipse.jface.viewers.StructuredViewer$6.handleOpen(StructuredViewer.jav a:731)

at

org.eclipse.jface.util.OpenStrategy.fireOpenEvent(OpenStrategy.java:211)

at org.eclipse.jface.util.OpenStrategy.access$2(OpenStrategy.java:206)
at

org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:238)

at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:82)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:796)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:2772)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2431)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1377)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1348)
at


org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:254)

at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:141)
at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:96)
at


org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator. java:335)

at


org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:273)

at


org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:129)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.core.launcher.Main.basicRun(Main.java:185)
at org.eclipse.core.launcher.Main.run(Main.java:704)
at org.eclipse.core.launcher.Main.main(Main.java:688)


When I do not catch the exception (which seem to occur only *sometimes*(?)), the editor is not created, producing an entry in the log. However, when I catch the exception, everything seems to work fine. Yet, removing the offending command leads to an empty editor (as expected). I have no idea what this is all about and any pointers would be greatly appreciated.

Thanks,
    Ralf