I've sometimes a NPE during application startup. I can't track it down to a problem in my code or somewhere in the JDK (using WinVista & JDK1.6). It seems to me that the dockingwindow tries to remove a tooltiptext that was never set. The exception hasn't occurred every time during startup (loading docks from ObjectOutputStream) but maybe in 2 of 3 startups.
This is the FULL stack trace.
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.ArrayTable.remove(ArrayTable.java:211)
at javax.swing.InputMap.remove(InputMap.java:121)
at javax.swing.ToolTipManager.unregisterComponent(ToolTipManager.java:391)
at javax.swing.JComponent.setToolTipText(JComponent.java:2958)
at net.infonode.docking.internalutil.InternalDockingUtil.updateButtons(Unknown Source)
at net.infonode.docking.WindowTab.updateTabButtons(Unknown Source)
at net.infonode.docking.DockingWindow.updateButtonVisibility(Unknown Source)
at net.infonode.docking.View.updateButtonVisibility(Unknown Source)
at net.infonode.docking.DockingWindow.updateButtonVisibility(Unknown Source)
at net.infonode.docking.TabWindow.doUpdateButtonVisibility(Unknown Source)
at net.infonode.docking.TabWindow.updateButtonVisibility(Unknown Source)
at net.infonode.docking.AbstractTabWindow$6.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
Logged In: YES
user_id=362035
Originator: NO
I also see this NPE, but it happens every time. I'm running Java 6 on Win XP Pro and IDW 1.5.0. I'll attach the source code which reliably causes the problem on my system. Unfortunately, it's difficult for me to determine more details because the IDW library is provided without debug information so I can't step through the code execution in a debugger. I'd build the code with debug but the source code packaging doesn't include the build scripts and I haven't been able to locate any public SVN or CVS repository. How do your users typically diagnose bugs in the library?
Logged In: YES
user_id=362035
Originator: NO
Apparently, I can only attach files for new issues, not for comments so I'll paste the code here (sorry about any strange formatting).
package net.infonode.docking;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;
import net.infonode.docking.theme.BlueHighlightDockingTheme;
import net.infonode.docking.theme.DockingWindowsTheme;
import net.infonode.docking.util.DockingUtil;
import net.infonode.docking.util.ViewMap;
import net.infonode.util.Direction;
public class DockingExample1 {
private static RootWindow rootWindow;
public static void main(String[] args) throws Exception {
View[] views = new View[5];
ViewMap viewMap = new ViewMap();
for (int i = 0; i < views.length; i++) {
views[i] = new View("View " + i, null, new JLabel("This is view " + i + "!"));
viewMap.addView(i, views[i]);
}
rootWindow = DockingUtil.createRootWindow(viewMap, true);
rootWindow.setWindow(
new SplitWindow(true, 0.4f,
new SplitWindow(false, views[0],
new SplitWindow(false, views[1], views[2])),
new TabWindow(new DockingWindow[] {
views[3], views[4] })));
rootWindow.getWindowBar(Direction.DOWN).setEnabled(true);
DockingWindowsTheme theme = new BlueHighlightDockingTheme();
// Apply theme
rootWindow.getRootWindowProperties().addSuperObject(
theme.getRootWindowProperties());
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JFrame frame = new JFrame("Test");
frame.getContentPane().add(rootWindow);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(600, 500);
frame.setVisible(true);
}
});
}
}
Logged In: YES
user_id=362035
Originator: NO
Here's the full stack trace for my example application...
Exception in thread "main" java.lang.NullPointerException
at javax.swing.ArrayTable.remove(ArrayTable.java:188)
at javax.swing.ActionMap.remove(ActionMap.java:118)
at javax.swing.ToolTipManager.unregisterComponent(ToolTipManager.java:394)
at javax.swing.JComponent.setToolTipText(JComponent.java:2963)
at net.infonode.docking.internalutil.InternalDockingUtil.updateButtons(Unknown Source)
at net.infonode.docking.WindowTab.updateTabButtons(Unknown Source)
at net.infonode.docking.DockingWindow.updateButtonVisibility(Unknown Source)
at net.infonode.docking.View.updateButtonVisibility(Unknown Source)
at net.infonode.docking.DockingWindow.updateButtonVisibility(Unknown Source)
at net.infonode.docking.TabWindow.doUpdateButtonVisibility(Unknown Source)
at net.infonode.docking.TabWindow.access$000(Unknown Source)
at net.infonode.docking.TabWindow$4.tabAdded(Unknown Source)
at net.infonode.tabbedpanel.TabbedPanel.fireAddedEvent(Unknown Source)
at net.infonode.tabbedpanel.TabbedPanel.access$1300(Unknown Source)
at net.infonode.tabbedpanel.TabbedPanel$4.componentAdded(Unknown Source)
at net.infonode.gui.draggable.DraggableComponentBox.fireAddedEvent(Unknown Source)
at net.infonode.gui.draggable.DraggableComponentBox.insertDraggableComponent(Unknown Source)
at net.infonode.tabbedpanel.TabbedPanel.doInsertTab(Unknown Source)
at net.infonode.tabbedpanel.TabbedPanel.insertTab(Unknown Source)
at net.infonode.docking.AbstractTabWindow.addTabNoSelect(Unknown Source)
at net.infonode.docking.TabWindow.addTabNoSelect(Unknown Source)
at net.infonode.docking.AbstractTabWindow.addTab(Unknown Source)
at net.infonode.docking.TabWindow.addTab(Unknown Source)
at net.infonode.docking.AbstractTabWindow.addTab(Unknown Source)
at net.infonode.docking.TabWindow.<init>(Unknown Source)
at net.infonode.docking.TabWindow.<init>(Unknown Source)
at net.infonode.docking.TabWindow.<init>(Unknown Source)
at net.infonode.docking.DockingWindow.getContentWindow(Unknown Source)
at net.infonode.docking.SplitWindow$3.run(Unknown Source)
at net.infonode.docking.DockingWindow$8.run(Unknown Source)
at net.infonode.docking.FocusManager.pinFocus(Unknown Source)
at net.infonode.docking.DockingWindow.optimizeAfter(Unknown Source)
at net.infonode.docking.SplitWindow.setWindows(Unknown Source)
at net.infonode.docking.SplitWindow.<init>(Unknown Source)
at net.infonode.docking.SplitWindow.<init>(Unknown Source)
at net.infonode.docking.SplitWindow.<init>(Unknown Source)
at net.infonode.docking.DockingExample1.main(DockingExample1.java:29)
Logged In: YES
user_id=669570
Originator: YES
Do the initialization in the Event Thread (invokeLater) then this exception disappears.
Logged In: YES
user_id=362035
Originator: NO
OK, thanks.
Logged In: YES
user_id=2171295
Originator: NO
Is there any confirmation on a work-around to avoid this bug?
Logged In: YES
user_id=2171295
Originator: NO
please disregard the previous post