From da3f2311e593405a5dcc6f4d8d56ad9db5d3bf2a Mon Sep 17 00:00:00 2001 From: hneemann Date: Tue, 18 Jul 2017 20:48:27 +0200 Subject: [PATCH] scan of library only at startup --- .../digital/draw/library/ElementLibrary.java | 22 ++++------- .../draw/library/ElementLibraryFolder.java | 39 +++++++------------ 2 files changed, 21 insertions(+), 40 deletions(-) diff --git a/src/main/java/de/neemann/digital/draw/library/ElementLibrary.java b/src/main/java/de/neemann/digital/draw/library/ElementLibrary.java index 0388bd0df..a7b4e25e9 100644 --- a/src/main/java/de/neemann/digital/draw/library/ElementLibrary.java +++ b/src/main/java/de/neemann/digital/draw/library/ElementLibrary.java @@ -67,7 +67,6 @@ public class ElementLibrary implements Iterable private final LibraryNode root; private ShapeFactory shapeFactory; private ElementLibraryFolder custom; - private ElementLibraryFolder library; private File rootLibraryPath; /** @@ -161,7 +160,10 @@ public class ElementLibrary implements Iterable populateNodeMap(); custom = new ElementLibraryFolder(root, Lang.get("menu_custom")); - library = new ElementLibraryFolder(root, Lang.get("menu_library")); + + File libPath = Settings.getInstance().get(Keys.SETTINGS_LIBRARY_PATH); + if (libPath != null && libPath.exists()) + new ElementLibraryFolder(root, Lang.get("menu_library")).scanFolder(libPath); isProgrammable.clear(); root.traverse(libraryNode -> { @@ -296,22 +298,12 @@ public class ElementLibrary implements Iterable private void rescanFolder() throws IOException { LOGGER.debug("rescan folder"); - File libPath = Settings.getInstance().get(Keys.SETTINGS_LIBRARY_PATH); - if (libPath != null && !libPath.exists()) libPath = null; - - LibraryNode cn1 = library.scanFolder(libPath); - LibraryNode cn2 = custom.scanFolder(rootLibraryPath); + LibraryNode cn = custom.scanFolder(rootLibraryPath); populateNodeMap(); - if (cn1 == root || cn2 == root) { - fireLibraryChanged(root); - } else { - if (cn1 != null) - fireLibraryChanged(cn1); - if (cn2 != null) - fireLibraryChanged(cn2); - } + if (cn != null) + fireLibraryChanged(cn); } /** diff --git a/src/main/java/de/neemann/digital/draw/library/ElementLibraryFolder.java b/src/main/java/de/neemann/digital/draw/library/ElementLibraryFolder.java index 0c413570f..d6ac7fdb4 100644 --- a/src/main/java/de/neemann/digital/draw/library/ElementLibraryFolder.java +++ b/src/main/java/de/neemann/digital/draw/library/ElementLibraryFolder.java @@ -22,7 +22,7 @@ public class ElementLibraryFolder { /** * create a new folder manager * - * @param root the root node + * @param root the root node * @param menuTitle string to show in menu */ public ElementLibraryFolder(LibraryNode root, String menuTitle) { @@ -37,15 +37,6 @@ public class ElementLibraryFolder { return node; } - private boolean hasChanged(File path) { - File lp = lastPath; - lastPath = path; - - if (lp == path) return false; - - return lp == null || !lp.equals(path); - } - /** * scans the given folder * @@ -54,23 +45,21 @@ public class ElementLibraryFolder { */ public LibraryNode scanFolder(File path) { LibraryNode changedNode = null; - if (hasChanged(path)) { - if (path != null) { - if (node == null) { - node = new LibraryNode(menuTitle); - root.add(node); - changedNode = root; - } else { - node.removeAll(); - changedNode = node; - } - int num = scanFolder(path, node); - LOGGER.debug("found " + num + " files in " + path); - } else if (node != null) { - root.remove(node); - node = null; + if (path != null) { + if (node == null) { + node = new LibraryNode(menuTitle); + root.add(node); changedNode = root; + } else { + node.removeAll(); + changedNode = node; } + int num = scanFolder(path, node); + LOGGER.debug("found " + num + " files in " + path); + } else if (node != null) { + root.remove(node); + node = null; + changedNode = root; } return changedNode; }