| 1 package org.sape.carbon.services.console; 2 3 import java.util.Enumeration ; 4 import java.util.Iterator ; 5 import java.util.Set ; 6 7 import javax.swing.tree.DefaultMutableTreeNode ; 8 import javax.swing.tree.DefaultTreeModel ; 9 10 import org.sape.carbon.core.util.reflection.ClassFinder; 11 12 20 public class TreeView extends javax.swing.JTree { 21 22 23 public TreeView() { 24 25 } 26 27 28 29 30 public void loadPackages(Class toLoad, boolean interfaces, boolean classes) { 31 DefaultMutableTreeNode root = new DefaultMutableTreeNode (""); DefaultTreeModel model = new DefaultTreeModel (root); 33 34 ClassFinder finder = new ClassFinder(toLoad,"sapient"); 35 Set dataSet = finder.getClasses(); 36 37 38 Iterator dataIter = dataSet.iterator(); 39 while (dataIter.hasNext()) { 40 String className = (String ) dataIter.next(); 41 Class theClass = null; 42 try { 43 theClass = Class.forName(className,false,this.getClass().getClassLoader()); 44 } catch ( ClassNotFoundException cnfe) { cnfe.printStackTrace(); } 45 46 if ((interfaces && theClass.isInterface()) || 47 (classes && !theClass.isInterface())) { 48 TreeView.ClassNode classNode = new ClassNode(theClass); 49 addNode(root, className, classNode); 50 } 51 } 52 53 this.putClientProperty("JTree.lineStyle", "Angled"); 54 55 this.setModel(model); 56 this.repaint(); 58 } 59 60 public void addNode(DefaultMutableTreeNode base, String nodeNameLeft, ClassNode classNode) { 61 int pIndex = nodeNameLeft.indexOf((char) '.'); 63 64 if (pIndex < 0) { 65 DefaultMutableTreeNode node = 67 new DefaultMutableTreeNode (classNode); 68 base.add(node); 69 70 } else { 71 String pkgName = nodeNameLeft.substring(0, pIndex); 72 boolean nodeFound = false; 73 Enumeration children = base.children(); 74 while (children.hasMoreElements()) { 75 DefaultMutableTreeNode node = (DefaultMutableTreeNode ) children.nextElement(); 76 if (node.getUserObject().toString().equals(pkgName)) { 77 addNode(node, nodeNameLeft.substring(pIndex+1), classNode); 78 nodeFound = true; 79 } 80 } 81 if (!nodeFound) { 82 DefaultMutableTreeNode node = 83 new DefaultMutableTreeNode (pkgName); 84 base.add(node); 85 addNode(node,nodeNameLeft.substring(pIndex+1), classNode); 86 87 88 } 89 } 90 } 91 92 93 94 public static class ClassNode { 95 private Class theClass; 96 97 public ClassNode(Class theClass) { 98 this.theClass = theClass; 99 } 100 101 public Class getHoldingClass() { 102 return this.theClass; 103 } 104 105 public String toString() { 106 String className = this.theClass.getName(); 107 108 return className.substring(className.lastIndexOf('.')+1,className.length()); 109 } 110 111 } 112 113 } 114 | Popular Tags |