Bug 74707 - [Palette] Repopulate PaletteRoot causes null pointer in PaletteViewer
Summary: [Palette] Repopulate PaletteRoot causes null pointer in PaletteViewer
Status: NEW
Alias: None
Product: GEF
Classification: Tools
Component: GEF-Legacy GEF (MVC) (show other bugs)
Version: 3.0   Edit
Hardware: PC Windows 2000
: P3 normal (vote)
Target Milestone: ---   Edit
Assignee: gef-inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2004-09-22 15:40 EDT by Erik Johnson CLA
Modified: 2010-11-04 07:34 EDT (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Erik Johnson CLA 2004-09-22 15:40:06 EDT
See
http://dev.eclipse.org/newslists/news.eclipse.tools.gef/msg08383.html

Summary: 
If a PaletteRoot instance for a palette is repopulated by removing all children 
and adding the updated list of palette entries and the editor is open, when a 
tool in the palette is selected, there is a null pointer in the graphical 
viewer.

There is a work around by adding a listener to the palette root and when the 
children change, obtain the palette viewer and setActiveTool(null); however it 
would be much cleaner if the PaletteViewer clears the active tool reference if 
the referenced active tool has been removed.  External listeners should not 
need to know when to update the palette viewer.

Exception stack trace:
java.lang.NullPointerException
 at
org.eclipse.gef.ui.palette.PaletteViewer.setActiveTool(PaletteViewer.java:36
1)
 at
org.eclipse.gef.internal.ui.palette.editparts.ToolEntryEditPart$2.actionPerf
ormed(ToolEntryEditPart.java:256)
 at org.eclipse.draw2d.Clickable.fireActionPerformed(Clickable.java:200)
 at org.eclipse.draw2d.Clickable$1.actionPerformed(Clickable.java:172)
 at org.eclipse.draw2d.ButtonModel.fireActionPerformed(ButtonModel.java:131)
 at org.eclipse.draw2d.ToggleModel.fireActionPerformed(ToggleModel.java:28)
 at
org.eclipse.draw2d.ButtonModel$DefaultFiringBehavior.released(ButtonModel.ja
va:484)
 at org.eclipse.draw2d.ButtonModel.fireReleased(ButtonModel.java:169)
 at org.eclipse.draw2d.ButtonModel.setPressed(ButtonModel.java:444)
 at
org.eclipse.gef.internal.ui.palette.editparts.ToolEntryEditPart$OtherToggleB
uttonTracker.handleButtonUp(ToolEntryEditPart.java:159)
 at org.eclipse.gef.tools.AbstractTool.mouseUp(AbstractTool.java:1042)
 at org.eclipse.gef.tools.SelectionTool.mouseUp(SelectionTool.java:535)
 at org.eclipse.gef.EditDomain.mouseUp(EditDomain.java:241)
 at
org.eclipse.gef.ui.parts.DomainEventDispatcher.dispatchMouseReleased(DomainE
ventDispatcher.java:344)
 at
org.eclipse.draw2d.LightweightSystem$EventHandler.mouseUp(LightweightSystem.
java:516)
 at
org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:136)
 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(NativeMethodAccessorImpl.java:39
)
 at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
.java:25)
 at java.lang.reflect.Method.invoke(Method.java:324)
 at org.eclipse.core.launcher.Main.basicRun(Main.java:183)
 at org.eclipse.core.launcher.Main.run(Main.java:644)
 at org.eclipse.core.launcher.Main.main(Main.java:628)