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;
|
componentOnPane = split;
|
||||||
} else {
|
} else {
|
||||||
if (treeModel != null) {
|
if (treeModel != null) {
|
||||||
library.removeListener(treeModel);
|
treeModel.close();
|
||||||
treeModel = null;
|
treeModel = null;
|
||||||
}
|
}
|
||||||
getContentPane().add(circuitScrollPanel);
|
getContentPane().add(circuitScrollPanel);
|
||||||
|
@ -22,6 +22,7 @@ import java.util.Iterator;
|
|||||||
*/
|
*/
|
||||||
public class LibraryTreeModel implements TreeModel, LibraryListener {
|
public class LibraryTreeModel implements TreeModel, LibraryListener {
|
||||||
private final LibraryNode root;
|
private final LibraryNode root;
|
||||||
|
private final ElementLibrary library;
|
||||||
private final Filter filter;
|
private final Filter filter;
|
||||||
private final ArrayList<TreeModelListener> listeners = new ArrayList<>();
|
private final ArrayList<TreeModelListener> listeners = new ArrayList<>();
|
||||||
private final HashMap<LibraryNode, Container> map;
|
private final HashMap<LibraryNode, Container> map;
|
||||||
@ -43,11 +44,19 @@ public class LibraryTreeModel implements TreeModel, LibraryListener {
|
|||||||
*/
|
*/
|
||||||
public LibraryTreeModel(ElementLibrary library, Filter filter) {
|
public LibraryTreeModel(ElementLibrary library, Filter filter) {
|
||||||
root = library.getRoot();
|
root = library.getRoot();
|
||||||
|
this.library = library;
|
||||||
this.filter = filter;
|
this.filter = filter;
|
||||||
map = new HashMap<>();
|
map = new HashMap<>();
|
||||||
library.addListener(this);
|
library.addListener(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called to detach the model from the library
|
||||||
|
*/
|
||||||
|
public void close() {
|
||||||
|
library.removeListener(this);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object getRoot() {
|
public Object getRoot() {
|
||||||
return root;
|
return root;
|
||||||
@ -89,12 +98,18 @@ public class LibraryTreeModel implements TreeModel, LibraryListener {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void libraryChanged(LibraryNode node) {
|
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();
|
map.clear();
|
||||||
final TreeModelEvent treeModelEvent = new TreeModelEvent(this, new TreePath(node.getPath()));
|
TreeModelEvent treeModelEvent = new TreeModelEvent(this, new TreePath(root.getPath()));
|
||||||
for (TreeModelListener l : listeners)
|
for (TreeModelListener l : listeners)
|
||||||
l.treeStructureChanged(treeModelEvent);
|
l.treeStructureChanged(treeModelEvent);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the parent of the first leave
|
* @return the parent of the first leave
|
||||||
@ -143,8 +158,11 @@ public class LibraryTreeModel implements TreeModel, LibraryListener {
|
|||||||
if (filter.accept(ln))
|
if (filter.accept(ln))
|
||||||
list.add(ln);
|
list.add(ln);
|
||||||
} else {
|
} else {
|
||||||
if (getContainer(ln).size() > 0)
|
Container c = new Container(ln, filter);
|
||||||
|
if (c.size() > 0) {
|
||||||
list.add(ln);
|
list.add(ln);
|
||||||
|
map.put(ln, c);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -80,8 +80,9 @@ public class SelectTree extends JTree {
|
|||||||
if (!oldModel.isFiltered() && newModel.isFiltered())
|
if (!oldModel.isFiltered() && newModel.isFiltered())
|
||||||
storedExpanded = getExpandedDescendants(new TreePath(getModel().getRoot()));
|
storedExpanded = getExpandedDescendants(new TreePath(getModel().getRoot()));
|
||||||
|
|
||||||
boolean restore = oldModel.isFiltered() && !newModel.isFiltered();
|
oldModel.close();
|
||||||
|
|
||||||
|
boolean restore = oldModel.isFiltered() && !newModel.isFiltered();
|
||||||
super.setModel(newModel);
|
super.setModel(newModel);
|
||||||
if (restore && storedExpanded != null) {
|
if (restore && storedExpanded != null) {
|
||||||
while (storedExpanded.hasMoreElements())
|
while (storedExpanded.hasMoreElements())
|
||||||
|
Loading…
x
Reference in New Issue
Block a user