1 23 24 package org.infoglue.cms.plugins.opentree; 25 26 import java.util.ArrayList ; 27 import java.util.Hashtable ; 28 import java.util.Iterator ; 29 import java.util.List ; 30 31 import javax.swing.JTree ; 32 import javax.swing.tree.DefaultTreeModel ; 33 import javax.swing.tree.TreePath ; 34 35 import org.infoglue.cms.net.Node; 36 37 public class Controller 38 { 39 public static final int NODE_CHANGED = 1; 40 public static final int NODE_CHILDREN_CHANGED = 2; 41 public static final int NODE_MOVED = 3; 42 public static final int NODE_DELETED = 4; 43 44 private JTree nodeTree; 45 private Communicator communicator; 46 private Hashtable nodes = new Hashtable (); 47 48 private String hideLeafs; 49 50 public Controller(String serverAddress, String entityName, Integer repositoryId, String hideLeafs) 51 { 52 this.communicator = new Communicator(serverAddress, entityName, repositoryId); 53 this.hideLeafs = hideLeafs; 54 } 55 56 public void setNodeTree(JTree nodeTree) 57 { 58 this.nodeTree = nodeTree; 59 } 60 61 64 65 public void refreshNode(Integer nodeId, Integer changeTypeId, Integer addedNodeId) 66 { 67 DefaultTreeModel model = (DefaultTreeModel )nodeTree.getModel(); 68 CMSNode node = (CMSNode)nodes.get(nodeId); 69 71 if(changeTypeId.intValue() == NODE_CHANGED) 72 { 73 CMSNode newNode = getNode(nodeId); 74 76 node.setName(newNode.getName()); 77 model.nodeChanged(node); 78 } 79 else if(changeTypeId.intValue() == NODE_CHILDREN_CHANGED) 80 { 81 node.setAreChildrenDefined(false); 82 83 model.nodeStructureChanged(node); 85 87 CMSNode addedNode = (CMSNode)nodes.get(addedNodeId); 88 TreePath currentPath = nodeTree.getSelectionPath(); 89 if(currentPath == null) 90 currentPath = new TreePath (node); 91 92 nodeTree.setSelectionPath(currentPath.pathByAddingChild(addedNode)); 95 } 96 else if(changeTypeId.intValue() == NODE_MOVED) 97 { 98 CMSNode currentParent = (CMSNode)((CMSNode)nodeTree.getLastSelectedPathComponent()).getParent(); 99 currentParent.setAreChildrenDefined(false); 102 model.nodeStructureChanged(currentParent); 103 104 node.setAreChildrenDefined(false); 105 model.nodeStructureChanged(node); 106 107 CMSNode addedNode = (CMSNode)nodes.get(addedNodeId); 108 } 109 else if(changeTypeId.intValue() == NODE_DELETED) 110 { 111 nodeTree.setSelectionPath(nodeTree.getSelectionPath().getParentPath()); 112 node.setAreChildrenDefined(false); 113 model.nodeStructureChanged(node); 114 } 116 117 } 118 119 120 public CMSNode getRootNode() throws Exception 121 { 122 Node rootNode = communicator.getRootNode(); 123 CMSNode rootCMSNode = generateVisualTreeModel(rootNode); 124 125 updateHash(rootCMSNode); 126 127 130 return rootCMSNode; 131 } 132 133 public CMSNode getNode(Integer nodeId) 134 { 135 Node node = communicator.getNode(nodeId); 136 CMSNode cmsNode = generateVisualTreeModel(node); 137 138 updateHash(cmsNode); 139 140 return cmsNode; 141 } 142 143 public void updateHash(CMSNode node) 144 { 145 if(!nodes.containsKey(node.getId())) 146 nodes.put(node.getId(), node); 147 } 148 149 public List getChildNodes(Integer parentId) 150 { 151 List childNodeVOList = communicator.getChildNodeList(parentId); 152 List childNodes = generateVisualTreeModel(childNodeVOList); 153 154 return childNodes; 155 } 156 157 158 private CMSNode generateVisualTreeModel(Node node) 159 { 160 161 CMSNode rootNode = new CMSNode(this, node.getIsBranch().booleanValue()); 162 rootNode.setId(node.getId()); 163 rootNode.setName(node.getName()); 164 165 return rootNode; 166 } 167 168 private List generateVisualTreeModel(List nodeList) 169 { 170 ArrayList children = new ArrayList (); 171 if(nodeList != null) 172 { 173 Iterator iterator = nodeList.iterator(); 174 while(iterator.hasNext()) 175 { 176 Node node = (Node)iterator.next(); 177 if(this.hideLeafs == null || this.hideLeafs.equals("false") || node.getIsBranch().booleanValue() == true) 178 { 179 CMSNode cmsNode = new CMSNode(this, node.getIsBranch().booleanValue()); 180 cmsNode.setId(node.getId()); 181 cmsNode.setName(node.getName()); 182 children.add(cmsNode); 183 184 updateHash(cmsNode); 185 } 186 } 187 } 188 189 return children; 190 } 191 192 193 } | Popular Tags |