added InsertHistory as a LibraryListener

This commit is contained in:
helmut.neemann 2017-03-27 11:05:28 +02:00
parent 83a97053d4
commit 10d5e48520
5 changed files with 16 additions and 15 deletions

View File

@ -304,6 +304,7 @@ public class ElementLibrary implements Iterable<ElementLibrary.ElementContainer>
*/ */
public void addListener(LibraryListener listener) { public void addListener(LibraryListener listener) {
listeners.add(listener); listeners.add(listener);
LOGGER.debug("added library listener "+listener.getClass().getSimpleName()+", listeners: "+listeners.size());
} }
/** /**
@ -313,6 +314,7 @@ public class ElementLibrary implements Iterable<ElementLibrary.ElementContainer>
*/ */
public void removeListener(LibraryListener listener) { public void removeListener(LibraryListener listener) {
listeners.remove(listener); listeners.remove(listener);
LOGGER.debug("removed library listener "+listener.getClass().getSimpleName()+", listeners: "+listeners.size());
} }

View File

@ -1,6 +1,5 @@
package de.neemann.digital.gui; 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.LibraryListener;
import de.neemann.digital.draw.library.LibraryNode; import de.neemann.digital.draw.library.LibraryNode;
@ -25,13 +24,11 @@ public class InsertHistory implements LibraryListener {
/** /**
* Creates a new instance * 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; this.bar = bar;
wrappers = new ArrayList<>(); wrappers = new ArrayList<>();
library.addListener(this);
} }
/** /**
@ -82,10 +79,16 @@ public class InsertHistory implements LibraryListener {
return false; return false;
} }
@Override
public void libraryChanged(LibraryNode node) {
removeAllCustomComponents();
}
/** /**
* remove custom components * remove all custom components
*/ */
public void removeCustom() { private void removeAllCustomComponents() {
Iterator<WrapperAction> it = wrappers.iterator(); Iterator<WrapperAction> it = wrappers.iterator();
while (it.hasNext()) { while (it.hasNext()) {
WrapperAction w = it.next(); WrapperAction w = it.next();
@ -97,11 +100,6 @@ public class InsertHistory implements LibraryListener {
bar.revalidate(); bar.revalidate();
} }
@Override
public void libraryChanged(LibraryNode node) {
}
private final class WrapperAction extends AbstractAction { private final class WrapperAction extends AbstractAction {
private final InsertAction action; private final InsertAction action;
private int componentPosition; private int componentPosition;

View File

@ -35,7 +35,6 @@ public class LibrarySelector implements LibraryListener {
*/ */
public LibrarySelector(ElementLibrary library, ShapeFactory shapeFactory) { public LibrarySelector(ElementLibrary library, ShapeFactory shapeFactory) {
this.library = library; this.library = library;
library.addListener(this);
this.shapeFactory = shapeFactory; this.shapeFactory = shapeFactory;
} }

View File

@ -222,8 +222,10 @@ public class Main extends JFrame implements ClosingWindowListener.ConfirmSave, E
toolBar.addSeparator(); toolBar.addSeparator();
insertHistory = new InsertHistory(library, toolBar); insertHistory = new InsertHistory(toolBar);
library.addListener(insertHistory);
final LibrarySelector librarySelector = new LibrarySelector(library, shapeFactory); final LibrarySelector librarySelector = new LibrarySelector(library, shapeFactory);
library.addListener(librarySelector);
menuBar.add(librarySelector.buildMenu(insertHistory, circuitComponent)); menuBar.add(librarySelector.buildMenu(insertHistory, circuitComponent));
addWindowListener(new ClosingWindowListener(this, this)); addWindowListener(new ClosingWindowListener(this, this));

View File

@ -37,7 +37,7 @@ public abstract class ToolTipAction extends AbstractAction {
* @param icon the icon to set * @param icon the icon to set
*/ */
public void setIcon(Icon icon) { public void setIcon(Icon icon) {
putValue("SmallIcon", icon); putValue(Action.SMALL_ICON, icon);
this.icon = icon; this.icon = icon;
} }