1 package org.sapia.regis.gui.model; 2 3 import java.util.Iterator ; 4 5 import javax.swing.JTree ; 6 import javax.swing.event.TreeExpansionEvent ; 7 import javax.swing.event.TreeSelectionEvent ; 8 import javax.swing.event.TreeSelectionListener ; 9 import javax.swing.event.TreeWillExpandListener ; 10 import javax.swing.tree.DefaultMutableTreeNode ; 11 import javax.swing.tree.ExpandVetoException ; 12 13 import org.sapia.gumby.event.EventManager; 14 import org.sapia.regis.Node; 15 import org.sapia.regis.gui.event.NodeChangeEvent; 16 17 public class TreeManager implements TreeWillExpandListener , TreeSelectionListener { 18 19 20 public TreeManager(){ 21 } 22 23 public void treeWillCollapse(TreeExpansionEvent event) throws ExpandVetoException { 24 34 } 35 36 public void treeWillExpand(TreeExpansionEvent event) throws ExpandVetoException { 37 38 46 } 47 48 public void valueChanged(TreeSelectionEvent event) { 49 JTree tree = (JTree )event.getSource(); 50 synchronized(tree.getTreeLock()){ 51 DefaultMutableTreeNode treeNode = (DefaultMutableTreeNode )tree.getLastSelectedPathComponent(); 52 if(treeNode != null && treeNode.getChildCount() == 0){ 53 NodeModel model = (NodeModel)treeNode.getUserObject(); 54 Iterator children = model.getNode().getChildren().iterator(); 55 while(children.hasNext()){ 56 treeNode.add(ModelUtils.buildTreeNodeFrom((Node )children.next())); 57 } 58 } 59 if(treeNode != null){ 60 NodeModel model = (NodeModel)treeNode.getUserObject(); 61 EventManager.getInstance().dispatchEvent(new NodeChangeEvent(model.getNode())); 62 } 63 } 64 } 65 66 67 68 } 69 | Popular Tags |