mirror of
https://github.com/hneemann/Digital.git
synced 2025-09-24 04:42:51 -04:00
fixed an issue to make library reimport working, see #645
This commit is contained in:
parent
3362c09b62
commit
fafdfe5600
@ -399,7 +399,7 @@ public final class Main extends JFrame implements ClosingWindowListener.ConfirmS
|
||||
componentOnPane = split;
|
||||
} else {
|
||||
if (treeModel != null) {
|
||||
library.removeListener(treeModel);
|
||||
treeModel.close();
|
||||
treeModel = null;
|
||||
}
|
||||
getContentPane().add(circuitScrollPanel);
|
||||
|
@ -22,6 +22,7 @@ import java.util.Iterator;
|
||||
*/
|
||||
public class LibraryTreeModel implements TreeModel, LibraryListener {
|
||||
private final LibraryNode root;
|
||||
private final ElementLibrary library;
|
||||
private final Filter filter;
|
||||
private final ArrayList<TreeModelListener> listeners = new ArrayList<>();
|
||||
private final HashMap<LibraryNode, Container> map;
|
||||
@ -43,11 +44,19 @@ public class LibraryTreeModel implements TreeModel, LibraryListener {
|
||||
*/
|
||||
public LibraryTreeModel(ElementLibrary library, Filter filter) {
|
||||
root = library.getRoot();
|
||||
this.library = library;
|
||||
this.filter = filter;
|
||||
map = new HashMap<>();
|
||||
library.addListener(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Called to detach the model from the library
|
||||
*/
|
||||
public void close() {
|
||||
library.removeListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getRoot() {
|
||||
return root;
|
||||
@ -89,11 +98,17 @@ public class LibraryTreeModel implements TreeModel, LibraryListener {
|
||||
|
||||
@Override
|
||||
public void libraryChanged(LibraryNode node) {
|
||||
if (map.remove(node) == null)
|
||||
if (node.isLeaf()) {
|
||||
map.remove(node);
|
||||
TreeModelEvent treeModelEvent = new TreeModelEvent(this, new TreePath(node.getPath()));
|
||||
for (TreeModelListener l : listeners)
|
||||
l.treeNodesChanged(treeModelEvent);
|
||||
} else {
|
||||
map.clear();
|
||||
final TreeModelEvent treeModelEvent = new TreeModelEvent(this, new TreePath(node.getPath()));
|
||||
for (TreeModelListener l : listeners)
|
||||
l.treeStructureChanged(treeModelEvent);
|
||||
TreeModelEvent treeModelEvent = new TreeModelEvent(this, new TreePath(root.getPath()));
|
||||
for (TreeModelListener l : listeners)
|
||||
l.treeStructureChanged(treeModelEvent);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -143,8 +158,11 @@ public class LibraryTreeModel implements TreeModel, LibraryListener {
|
||||
if (filter.accept(ln))
|
||||
list.add(ln);
|
||||
} else {
|
||||
if (getContainer(ln).size() > 0)
|
||||
Container c = new Container(ln, filter);
|
||||
if (c.size() > 0) {
|
||||
list.add(ln);
|
||||
map.put(ln, c);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -80,8 +80,9 @@ public class SelectTree extends JTree {
|
||||
if (!oldModel.isFiltered() && newModel.isFiltered())
|
||||
storedExpanded = getExpandedDescendants(new TreePath(getModel().getRoot()));
|
||||
|
||||
boolean restore = oldModel.isFiltered() && !newModel.isFiltered();
|
||||
oldModel.close();
|
||||
|
||||
boolean restore = oldModel.isFiltered() && !newModel.isFiltered();
|
||||
super.setModel(newModel);
|
||||
if (restore && storedExpanded != null) {
|
||||
while (storedExpanded.hasMoreElements())
|
||||
|
Loading…
x
Reference in New Issue
Block a user