Thread: [Bprocessor-commit] gui/src/net/sourceforge/bprocessor/gui/treeview GenericTreeView.java, 1.106, 1.
Status: Pre-Alpha
Brought to you by:
henryml
From: Michael L. <he...@us...> - 2007-09-20 09:39:34
|
Update of /cvsroot/bprocessor/gui/src/net/sourceforge/bprocessor/gui/treeview In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv24487/src/net/sourceforge/bprocessor/gui/treeview Modified Files: GenericTreeView.java SpaceTreeView.java Log Message: D-View selection synchronizes with primary selection Index: GenericTreeView.java =================================================================== RCS file: /cvsroot/bprocessor/gui/src/net/sourceforge/bprocessor/gui/treeview/GenericTreeView.java,v retrieving revision 1.106 retrieving revision 1.107 diff -C2 -d -r1.106 -r1.107 *** GenericTreeView.java 19 Sep 2007 14:14:07 -0000 1.106 --- GenericTreeView.java 20 Sep 2007 09:39:32 -0000 1.107 *************** *** 138,141 **** --- 138,146 ---- private boolean isChanged; + /** + * Flag saying that we are changing + */ + private boolean changing; + /** The object udpated on a update call */ private Object updated = null; *************** *** 259,262 **** --- 264,268 ---- model.nodeStructureChanged(root); isChanged = false; + changing = false; setCellRenderer(new Renderer()); } *************** *** 267,285 **** */ public void synchronizeRight() { ! TreePath[] paths = getSelectionPaths(); ! LinkedList<Geometric> select = new LinkedList<Geometric>(); ! for (int i = 0; i < paths.length; i++) { ! Object o = paths[i].getLastPathComponent(); ! if (o instanceof DefaultMutableTreeNode) { ! DefaultMutableTreeNode node = (DefaultMutableTreeNode) o; ! Object target = node.getUserObject(); ! if (target instanceof Geometric) { ! select.add((Geometric)target); ! } else if (target instanceof Parametric) { ! AttributeView.instance().display(target); } } } - Selection.primary().set(select); } --- 273,337 ---- */ public void synchronizeRight() { ! if (!changing) { ! changing = true; ! TreePath[] paths = getSelectionPaths(); ! if (paths != null) { ! LinkedList<Geometric> select = new LinkedList<Geometric>(); ! for (int i = 0; i < paths.length; i++) { ! Object o = paths[i].getLastPathComponent(); ! if (o instanceof DefaultMutableTreeNode) { ! DefaultMutableTreeNode node = (DefaultMutableTreeNode) o; ! Object target = node.getUserObject(); ! if (target instanceof Geometric) { ! select.add((Geometric)target); ! } else if (target instanceof Parametric) { ! AttributeView.instance().display(target); ! } ! } } + Selection.primary().set(select); } + changing = false; + } + } + + /** + * + * @param node node + * @param object object + * @return path + */ + public TreePath search(DefaultMutableTreeNode node, Object object) { + if (node.getUserObject() == object) { + return new TreePath(node.getPath()); + } else { + Enumeration enumerator = node.children(); + while (enumerator.hasMoreElements()) { + DefaultMutableTreeNode current = (DefaultMutableTreeNode) enumerator.nextElement(); + TreePath result = search(current, object); + if (result != null) { + return result; + } + } + } + return null; + } + + /** + * + * + */ + public void synchronizeLeft() { + if (!changing) { + changing = true; + if (Selection.primary().size() == 1) { + Object selected = Selection.primary().iterator().next(); + TreePath path = search(root, selected); + if (path != null) { + setSelectionPath(path); + } + } + changing = false; } } *************** *** 314,318 **** --- 366,372 ---- public void flush() { if (isChanged) { + changing = true; update(); + changing = false; isChanged = false; } *************** *** 1246,1249 **** --- 1300,1314 ---- } } + + /** + * + * + */ + protected class SelectionObserver implements Observer { + /** {@inheritDoc} */ + public void update(Object entity) { + synchronizeLeft(); + } + } /** Index: SpaceTreeView.java =================================================================== RCS file: /cvsroot/bprocessor/gui/src/net/sourceforge/bprocessor/gui/treeview/SpaceTreeView.java,v retrieving revision 1.24 retrieving revision 1.25 diff -C2 -d -r1.24 -r1.25 *** SpaceTreeView.java 10 Apr 2007 13:24:45 -0000 1.24 --- SpaceTreeView.java 20 Sep 2007 09:39:32 -0000 1.25 *************** *** 10,14 **** --- 10,16 ---- import org.apache.log4j.Logger; + import net.sourceforge.bprocessor.gui.treeview.GenericTreeView.SelectionObserver; import net.sourceforge.bprocessor.model.Project; + import net.sourceforge.bprocessor.model.Selection; /** *************** *** 36,39 **** --- 38,43 ---- root.add(new ConstructorContainer("Constructors", Project.getInstance().getConstructors())); model.nodeStructureChanged(root); + + Selection.primary().addObserver(new SelectionObserver()); } |