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 9af377031..167e5aaad 100644 --- a/src/main/java/de/neemann/digital/draw/library/ElementLibrary.java +++ b/src/main/java/de/neemann/digital/draw/library/ElementLibrary.java @@ -304,6 +304,7 @@ public class ElementLibrary implements Iterable */ public void addListener(LibraryListener listener) { listeners.add(listener); + LOGGER.debug("added library listener "+listener.getClass().getSimpleName()+", listeners: "+listeners.size()); } /** @@ -313,6 +314,7 @@ public class ElementLibrary implements Iterable */ public void removeListener(LibraryListener listener) { listeners.remove(listener); + LOGGER.debug("removed library listener "+listener.getClass().getSimpleName()+", listeners: "+listeners.size()); } diff --git a/src/main/java/de/neemann/digital/gui/InsertHistory.java b/src/main/java/de/neemann/digital/gui/InsertHistory.java index fe8bc8073..6c1982663 100644 --- a/src/main/java/de/neemann/digital/gui/InsertHistory.java +++ b/src/main/java/de/neemann/digital/gui/InsertHistory.java @@ -1,6 +1,5 @@ package de.neemann.digital.gui; -import de.neemann.digital.draw.library.ElementLibrary; import de.neemann.digital.draw.library.LibraryListener; import de.neemann.digital.draw.library.LibraryNode; @@ -25,13 +24,11 @@ public class InsertHistory implements LibraryListener { /** * Creates a new instance * - * @param library the library - * @param bar the toolbar to put the elements to + * @param bar the toolbar to put the elements to */ - public InsertHistory(ElementLibrary library, JToolBar bar) { + public InsertHistory(JToolBar bar) { this.bar = bar; wrappers = new ArrayList<>(); - library.addListener(this); } /** @@ -82,10 +79,16 @@ public class InsertHistory implements LibraryListener { return false; } + + @Override + public void libraryChanged(LibraryNode node) { + removeAllCustomComponents(); + } + /** - * remove custom components + * remove all custom components */ - public void removeCustom() { + private void removeAllCustomComponents() { Iterator it = wrappers.iterator(); while (it.hasNext()) { WrapperAction w = it.next(); @@ -97,11 +100,6 @@ public class InsertHistory implements LibraryListener { bar.revalidate(); } - @Override - public void libraryChanged(LibraryNode node) { - - } - private final class WrapperAction extends AbstractAction { private final InsertAction action; private int componentPosition; diff --git a/src/main/java/de/neemann/digital/gui/LibrarySelector.java b/src/main/java/de/neemann/digital/gui/LibrarySelector.java index 29e8179a1..e4cabb797 100644 --- a/src/main/java/de/neemann/digital/gui/LibrarySelector.java +++ b/src/main/java/de/neemann/digital/gui/LibrarySelector.java @@ -35,7 +35,6 @@ public class LibrarySelector implements LibraryListener { */ public LibrarySelector(ElementLibrary library, ShapeFactory shapeFactory) { this.library = library; - library.addListener(this); this.shapeFactory = shapeFactory; } diff --git a/src/main/java/de/neemann/digital/gui/Main.java b/src/main/java/de/neemann/digital/gui/Main.java index 42ac42715..6cb503e50 100644 --- a/src/main/java/de/neemann/digital/gui/Main.java +++ b/src/main/java/de/neemann/digital/gui/Main.java @@ -222,8 +222,10 @@ public class Main extends JFrame implements ClosingWindowListener.ConfirmSave, E toolBar.addSeparator(); - insertHistory = new InsertHistory(library, toolBar); + insertHistory = new InsertHistory(toolBar); + library.addListener(insertHistory); final LibrarySelector librarySelector = new LibrarySelector(library, shapeFactory); + library.addListener(librarySelector); menuBar.add(librarySelector.buildMenu(insertHistory, circuitComponent)); addWindowListener(new ClosingWindowListener(this, this)); diff --git a/src/main/java/de/neemann/gui/ToolTipAction.java b/src/main/java/de/neemann/gui/ToolTipAction.java index ef392f494..947bdf1c8 100644 --- a/src/main/java/de/neemann/gui/ToolTipAction.java +++ b/src/main/java/de/neemann/gui/ToolTipAction.java @@ -37,7 +37,7 @@ public abstract class ToolTipAction extends AbstractAction { * @param icon the icon to set */ public void setIcon(Icon icon) { - putValue("SmallIcon", icon); + putValue(Action.SMALL_ICON, icon); this.icon = icon; }