// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.plugins.czechaddress.gui.utils; import java.util.ArrayList; import java.util.List; import javax.swing.event.TreeModelEvent; import javax.swing.event.TreeModelListener; import javax.swing.tree.TreeModel; import javax.swing.tree.TreePath; /** * Class for shorter and faster implementations of {@link TreeModel}s. * * <p>This creates a list of {@link TreeModelListener}s and implements * method for adding and removing them. Moreover it allows to notify all * listeners with the generic message telling that the whole tree * has changed.</p> * * @author Radomír Černoch, radomir.cernoch@gmail.com */ public abstract class HalfCookedTreeModel implements TreeModel { List<TreeModelListener> listeneres = new ArrayList<>(); protected String root; @Override public Object getRoot() { return root; } @Override public void addTreeModelListener(TreeModelListener l) { listeneres.add(l); } @Override public void removeTreeModelListener(TreeModelListener l) { listeneres.remove(l); } @Override public boolean isLeaf(Object node) { return getChildCount(node) == 0; } @Override public void valueForPathChanged(TreePath path, Object newValue) { } public void notifyAllListeners() { TreeModelEvent evt = new TreeModelEvent(this, new Object[] {root}); for (TreeModelListener l : listeneres) { l.treeNodesChanged(evt); } } }