diff --git a/src/main/java/org/dockfx/DockNode.java b/src/main/java/org/dockfx/DockNode.java index 047b2dc..314e641 100644 --- a/src/main/java/org/dockfx/DockNode.java +++ b/src/main/java/org/dockfx/DockNode.java @@ -185,8 +185,7 @@ private static FXMLLoader loadNode(String FXMLPath) { FXMLLoader loader = new FXMLLoader(); try { loader.load(DockNode.class.getResourceAsStream(FXMLPath)); - } - catch (Exception e) { + } catch (Exception e) { e.printStackTrace(); loader.setRoot(new StackPane(new Label("Could not load FXML file"))); } @@ -260,8 +259,10 @@ public void setDockTitleBar(DockNodeTitleBar dockTitleBar) { } public void showTitleBar(boolean show) { - dockTitleBar.setVisible(show); - dockTitleBar.setManaged(show); + if (null != dockTitleBar) { + dockTitleBar.setVisible(show); + dockTitleBar.setManaged(show); + } } public Stage getStage() { @@ -650,7 +651,7 @@ protected void setDockPane(DockPane newDockPane) { if (null != dockPane) { dockPane.closedProperty().removeListener(dockPaneCloseListener); } - + this.dockPane = newDockPane; if (null != newDockPane) { @@ -672,7 +673,7 @@ private final void dockImpl(DockPane newDockPane) { */ public DockPane undock() { DockPane oldDockPane = null; - + if (dockPane != null) { oldDockPane = dockPane; dockPane.undock(this); @@ -680,7 +681,7 @@ public DockPane undock() { } //this.dockedProperty.set(false); this.tabbedProperty.set(false); - + return oldDockPane; } @@ -707,6 +708,7 @@ public void focus() { } private final DockPaneCloseListener dockPaneCloseListener = new DockPaneCloseListener(); + private final class DockPaneCloseListener implements ChangeListener { @Override public void changed(ObservableValue observable, Boolean oldValue, Boolean newValue) { diff --git a/src/main/java/org/dockfx/DockPane.java b/src/main/java/org/dockfx/DockPane.java index f70ce0b..dfae61a 100644 --- a/src/main/java/org/dockfx/DockPane.java +++ b/src/main/java/org/dockfx/DockPane.java @@ -1119,7 +1119,9 @@ public void handle(DockEvent event) { if (event.getEventType() == DockEvent.DOCK_RELEASED && event.getContents() != null) { if (dockPosDrag != null && dockIndicatorOverlay.isShowing()) { DockNode dockNode = ((DockPane) event.getContents()).getOnlyChild(); - dockNode.dock(this, dockPosDrag, dockAreaDrag); + if (null != dockNode) { + dockNode.dock(this, dockPosDrag, dockAreaDrag); + } } } @@ -1137,7 +1139,7 @@ public void handle(DockEvent event) { public void storeLayout(String filePath) { storeLayout(filePath, generateLayout()); } - + public Map generateLayout() { HashMap contents = new HashMap<>(); @@ -1170,17 +1172,16 @@ public Map generateLayout() { if (null != this.root) { contents.put("_DockedNodes", checkPane(this.root)); } - + return contents; } - public void storeLayout(String fileName, Map contents) { + public static void storeLayout(String fileName, Map contents) { try (XMLEncoder e = new XMLEncoder( new BufferedOutputStream( new FileOutputStream(fileName)))) { e.writeObject(contents); - } - catch (FileNotFoundException e1) { + } catch (FileNotFoundException e1) { e1.printStackTrace(); } } @@ -1251,15 +1252,14 @@ public void applyLayout(Map contents, DelayOpenHandler de } } - public HashMap loadLayout(String filePath) throws FileNotFoundException { + public static HashMap loadLayout(String filePath) throws FileNotFoundException { return loadLayout(new BufferedInputStream(new FileInputStream(filePath))); } - - public HashMap loadLayout(InputStream is) { + + public static HashMap loadLayout(InputStream is) { try (XMLDecoder e = new XMLDecoder(is)) { return (HashMap) e.readObject(); - } - catch (ArrayIndexOutOfBoundsException ex) { + } catch (ArrayIndexOutOfBoundsException ex) { // empty file } diff --git a/src/main/java/org/dockfx/demo/DockFX.java b/src/main/java/org/dockfx/demo/DockFX.java index d419455..0aa28b6 100644 --- a/src/main/java/org/dockfx/demo/DockFX.java +++ b/src/main/java/org/dockfx/demo/DockFX.java @@ -104,7 +104,7 @@ public void start(Stage primaryStage) { tabsDock.dock(dockPane, DockPos.TOP); DockNode tableDock = new DockNode(tableView); // let's disable our table from being undocked - tableDock.setDockTitleBar(null); + //tableDock.setDockTitleBar(null); tableDock.setPrefSize(300, 100); tableDock.dock(dockPane, DockPos.BOTTOM);