From d2f6f22ce5acfa866ecf24ba152d615eb4a14e18 Mon Sep 17 00:00:00 2001 From: Andrew Auclair Date: Fri, 17 Nov 2023 17:29:06 -0500 Subject: [PATCH] 0.10.0 snapshot uncaught exception in removeNotify in JFormDesigner (#127) * Fixes issue #126 Adding null checks to fix exceptions when using JFormDesigner. --- .../api/RootDockingPanelAPI.java | 34 ++++++++++++------- 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/docking-api/src/ModernDocking/api/RootDockingPanelAPI.java b/docking-api/src/ModernDocking/api/RootDockingPanelAPI.java index b88433be..b0eede18 100644 --- a/docking-api/src/ModernDocking/api/RootDockingPanelAPI.java +++ b/docking-api/src/ModernDocking/api/RootDockingPanelAPI.java @@ -37,11 +37,11 @@ of this software and associated documentation files (the "Software"), to deal * Panel that should be added to each frame that should support docking */ public class RootDockingPanelAPI extends DockingPanel { - private DockingAPI docking; + private DockingAPI docking = null; - private Window window; + private Window window = null; - private DockingPanel panel; + private DockingPanel panel = null; private JPanel emptyPanel = new JPanel(); @@ -51,17 +51,17 @@ public class RootDockingPanelAPI extends DockingPanel { /** * South toolbar of this panel. Only created if pinning is supported. */ - private DockableToolbar southToolbar; + private DockableToolbar southToolbar = null; /** * West toolbar of this panel. Only created if pinning is supported. */ - private DockableToolbar westToolbar; + private DockableToolbar westToolbar = null; /** * East toolbar of this panel. Only created if pinning is supported. */ - private DockableToolbar eastToolbar; + private DockableToolbar eastToolbar = null; - private EnumSet supportedToolbars; + private EnumSet supportedToolbars = EnumSet.noneOf(ToolbarLocation.class); /** * Create root panel with GridBagLayout as the layout @@ -238,8 +238,12 @@ private boolean removeExistingPanel() { @Override public void removeNotify() { - Window rootWindow = (Window) SwingUtilities.getRoot(this); - docking.deregisterDockingPanel(rootWindow); + // this class has a default constructor which could be called and docking would be null + if (docking != null) { + Window rootWindow = (Window) SwingUtilities.getRoot(this); + + docking.deregisterDockingPanel(rootWindow); + } super.removeNotify(); } @@ -428,9 +432,15 @@ private void createContents() { * Hide all unpinned panels on the west, south and east toolbars */ public void hideUnpinnedPanels() { - westToolbar.hideAll(); - southToolbar.hideAll(); - eastToolbar.hideAll(); + if (westToolbar != null) { + westToolbar.hideAll(); + } + if (southToolbar != null) { + southToolbar.hideAll(); + } + if (eastToolbar != null) { + eastToolbar.hideAll(); + } } /**