Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 231167

Summary: NullPointerException in PinnablePaletteStackFigure$HeaderListLayout
Product: [Tools] GEF Reporter: Anthony Hunter <ahunter.eclipse>
Component: GEF-Legacy GEF (MVC)Assignee: Anthony Hunter <ahunter.eclipse>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: P3 CC: mdelder
Version: 3.4   
Target Milestone: 3.4.0 (Ganymede) RC1   
Hardware: All   
OS: All   
Whiteboard:

Description Anthony Hunter CLA 2008-05-08 13:57:26 EDT
!ENTRY org.eclipse.ui 4 0 2008-05-08 13:54:43.061
!MESSAGE Unhandled event loop exception
!STACK 0
java.lang.NullPointerException
	at org.eclipse.gef.internal.ui.palette.editparts.PinnablePaletteStackFigure$HeaderListLayout.layout(PinnablePaletteStackFigure.java:211)
	at org.eclipse.draw2d.Figure.layout(Figure.java:1029)
	at org.eclipse.draw2d.Figure.validate(Figure.java:1739)
	at org.eclipse.draw2d.Figure.validate(Figure.java:1741)
	at org.eclipse.draw2d.Figure.validate(Figure.java:1741)
	at org.eclipse.draw2d.Figure.validate(Figure.java:1741)
	at org.eclipse.draw2d.Viewport.validate(Viewport.java:363)
	at org.eclipse.draw2d.Figure.validate(Figure.java:1741)
	at org.eclipse.draw2d.ScrollPane.validate(ScrollPane.java:323)
	at org.eclipse.draw2d.Figure.validate(Figure.java:1741)
	at org.eclipse.draw2d.Figure.validate(Figure.java:1741)
	at org.eclipse.draw2d.Figure.validate(Figure.java:1741)
	at org.eclipse.draw2d.Figure.validate(Figure.java:1741)
	at org.eclipse.draw2d.Viewport.validate(Viewport.java:363)
	at org.eclipse.draw2d.Figure.validate(Figure.java:1741)
	at org.eclipse.draw2d.DeferredUpdateManager.performValidation(DeferredUpdateManager.java:207)
	at org.eclipse.draw2d.DeferredUpdateManager.performUpdate(DeferredUpdateManager.java:179)
	at org.eclipse.draw2d.LightweightSystem.controlResized(LightweightSystem.java:122)
	at org.eclipse.draw2d.LightweightSystem$1.controlResized(LightweightSystem.java:102)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:221)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1002)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1026)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1007)
	at org.eclipse.swt.widgets.Control.sendResize(Control.java:2454)
	at org.eclipse.swt.widgets.Composite.sendResize(Composite.java:849)
	at org.eclipse.swt.widgets.Composite.setBounds(Composite.java:898)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:2582)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:2578)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:2645)
	at org.eclipse.gef.ui.palette.FlyoutPaletteComposite$PaletteComposite.layout(FlyoutPaletteComposite.java:1015)
	at org.eclipse.gef.ui.palette.FlyoutPaletteComposite$10.handleEvent(FlyoutPaletteComposite.java:980)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1002)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1026)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1007)
	at org.eclipse.swt.widgets.Control.sendResize(Control.java:2454)
	at org.eclipse.swt.widgets.Composite.sendResize(Composite.java:849)
	at org.eclipse.swt.widgets.Composite.setBounds(Composite.java:898)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:2582)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:2578)
	at org.eclipse.gef.ui.palette.FlyoutPaletteComposite.layoutComponentsEast(FlyoutPaletteComposite.java:389)
	at org.eclipse.gef.ui.palette.FlyoutPaletteComposite.layout(FlyoutPaletteComposite.java:364)
	at org.eclipse.gef.ui.palette.FlyoutPaletteComposite$21.handleEvent(FlyoutPaletteComposite.java:209)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1002)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1026)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1007)
	at org.eclipse.swt.widgets.Control.sendResize(Control.java:2454)
	at org.eclipse.swt.widgets.Composite.sendResize(Composite.java:849)
	at org.eclipse.swt.widgets.Composite.setBounds(Composite.java:898)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:2582)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:2578)
	at org.eclipse.swt.layout.FillLayout.layout(FillLayout.java:198)
	at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1144)
	at org.eclipse.swt.widgets.Composite.WM_SIZE(Composite.java:1533)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:3854)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4485)
	at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method)
	at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:2341)
	at org.eclipse.swt.widgets.Scrollable.callWindowProc(Scrollable.java:77)
	at org.eclipse.swt.widgets.Control.WM_WINDOWPOSCHANGED(Control.java:4586)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:3864)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4485)
	at org.eclipse.swt.internal.win32.OS.SetWindowPos(Native Method)
	at org.eclipse.swt.widgets.Widget.SetWindowPos(Widget.java:1301)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:2621)
	at org.eclipse.swt.widgets.Composite.setBounds(Composite.java:892)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:2582)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:2578)
	at org.eclipse.swt.layout.FillLayout.layout(FillLayout.java:198)
	at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1144)
	at org.eclipse.swt.widgets.Composite.WM_SIZE(Composite.java:1533)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:3854)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4485)
	at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method)
	at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:2341)
	at org.eclipse.swt.widgets.Scrollable.callWindowProc(Scrollable.java:77)
	at org.eclipse.swt.widgets.Control.WM_WINDOWPOSCHANGED(Control.java:4586)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:3864)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4485)
	at org.eclipse.swt.internal.win32.OS.EndDeferWindowPos(Native Method)
	at org.eclipse.swt.widgets.Composite.resizeChildren(Composite.java:822)
	at org.eclipse.swt.widgets.Composite.resizeChildren(Composite.java:788)
	at org.eclipse.swt.widgets.Composite.setResizeChildren(Composite.java:1012)
	at org.eclipse.swt.widgets.Composite.WM_SIZE(Composite.java:1537)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:3854)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4485)
	at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method)
	at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:2341)
	at org.eclipse.swt.widgets.Scrollable.callWindowProc(Scrollable.java:77)
	at org.eclipse.swt.widgets.Control.WM_WINDOWPOSCHANGED(Control.java:4586)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:3864)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4485)
	at org.eclipse.swt.internal.win32.OS.SetWindowPos(Native Method)
	at org.eclipse.swt.widgets.Widget.SetWindowPos(Widget.java:1301)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:2621)
	at org.eclipse.swt.widgets.Composite.setBounds(Composite.java:892)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:2582)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:2578)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:2645)
	at org.eclipse.ui.internal.PartSashContainer.setBounds(PartSashContainer.java:848)
	at org.eclipse.ui.internal.LayoutTree.doSetBounds(LayoutTree.java:547)
	at org.eclipse.ui.internal.LayoutTree.setBounds(LayoutTree.java:538)
	at org.eclipse.ui.internal.LayoutTreeNode.doSetBounds(LayoutTreeNode.java:536)
	at org.eclipse.ui.internal.LayoutTree.setBounds(LayoutTree.java:538)
	at org.eclipse.ui.internal.LayoutTreeNode.doSetBounds(LayoutTreeNode.java:537)
	at org.eclipse.ui.internal.LayoutTree.setBounds(LayoutTree.java:538)
	at org.eclipse.ui.internal.LayoutTreeNode.doSetBounds(LayoutTreeNode.java:505)
	at org.eclipse.ui.internal.LayoutTree.setBounds(LayoutTree.java:538)
	at org.eclipse.ui.internal.PartSashContainer.resizeSashes(PartSashContainer.java:807)
	at org.eclipse.ui.internal.PartSashContainer.access$1(PartSashContainer.java:797)
	at org.eclipse.ui.internal.PartSashContainer$1.controlResized(PartSashContainer.java:171)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:221)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1002)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1026)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1007)
	at org.eclipse.swt.widgets.Control.WM_SIZE(Control.java:4429)
	at org.eclipse.swt.widgets.Scrollable.WM_SIZE(Scrollable.java:357)
	at org.eclipse.swt.widgets.Composite.WM_SIZE(Composite.java:1522)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:3854)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4485)
	at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method)
	at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:2341)
	at org.eclipse.swt.widgets.Scrollable.callWindowProc(Scrollable.java:77)
	at org.eclipse.swt.widgets.Control.WM_WINDOWPOSCHANGED(Control.java:4586)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:3864)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4485)
	at org.eclipse.swt.internal.win32.OS.SetWindowPos(Native Method)
	at org.eclipse.swt.widgets.Widget.SetWindowPos(Widget.java:1301)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:2621)
	at org.eclipse.swt.widgets.Composite.setBounds(Composite.java:892)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:2582)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:2578)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:2645)
	at org.eclipse.swt.custom.StackLayout.layout(StackLayout.java:116)
	at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1144)
	at org.eclipse.swt.widgets.Composite.WM_SIZE(Composite.java:1533)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:3854)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4485)
	at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method)
	at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:2341)
	at org.eclipse.swt.widgets.Scrollable.callWindowProc(Scrollable.java:77)
	at org.eclipse.swt.widgets.Control.WM_WINDOWPOSCHANGED(Control.java:4586)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:3864)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4498)
	at org.eclipse.swt.internal.win32.OS.EndDeferWindowPos(Native Method)
	at org.eclipse.swt.widgets.Composite.resizeChildren(Composite.java:822)
	at org.eclipse.swt.widgets.Composite.resizeChildren(Composite.java:788)
	at org.eclipse.swt.widgets.Composite.setResizeChildren(Composite.java:1012)
	at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1145)
	at org.eclipse.swt.widgets.Composite.setLayoutDeferred(Composite.java:972)
	at org.eclipse.ui.internal.WorkbenchWindow.updateActionBars(WorkbenchWindow.java:2991)
	at org.eclipse.ui.internal.WorkbenchWindow.largeUpdateEnd(WorkbenchWindow.java:3042)
	at org.eclipse.ui.internal.Workbench.largeUpdateEnd(Workbench.java:3182)
	at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(WorkbenchPage.java:2696)
	at org.eclipse.ui.internal.WorkbenchPage.access$11(WorkbenchPage.java:2685)
	at org.eclipse.ui.internal.WorkbenchPage$10.run(WorkbenchPage.java:2637)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
	at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2632)
	at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2616)
	at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2607)
	at org.eclipse.ui.ide.IDE.openEditor(IDE.java:644)
	at org.eclipse.ui.ide.IDE.openEditor(IDE.java:603)
	at org.eclipse.ui.actions.OpenFileAction.openFile(OpenFileAction.java:98)
	at org.eclipse.ui.actions.OpenSystemEditorAction.run(OpenSystemEditorAction.java:98)
	at org.eclipse.ui.actions.BaseSelectionListenerAction.runWithEvent(BaseSelectionListenerAction.java:168)
	at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:582)
	at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:499)
	at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:410)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1002)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3780)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3379)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2351)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2315)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2181)
	at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:477)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:472)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:112)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:379)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:59)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:39)
	at java.lang.reflect.Method.invoke(Method.java:612)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1212)
Comment 1 Anthony Hunter CLA 2008-05-08 13:58:26 EDT
Looks like layout() is being called and there is not yet an active tool:

activeToolFigure.setBounds(r.getResized(-pinSize.width, 0));

Adding protection code for this case.
Comment 2 Anthony Hunter CLA 2008-05-08 14:56:00 EDT
Committed to HEAD.