1 package org.jacorb.ir.gui.typesystem; 2 3 22 23 import java.util.*; 24 import javax.swing.tree.*; 25 26 29 30 public abstract class ModelParticipant 31 { 32 private Hashtable modelRepresentants = new Hashtable(); 33 private static ModelBuilder modelBuilder = ModelBuilder.getSingleton(); 34 35 39 40 public void addToParent( DefaultTreeModel treeModel, DefaultMutableTreeNode parentTreeNode) 41 { 42 DefaultMutableTreeNode treeNode; 43 44 if (parentTreeNode!=null) 45 { treeNode = new DefaultMutableTreeNode(this); 47 int i = 0; 48 while ((i<parentTreeNode.getChildCount()) && 49 ((ModelParticipant)((DefaultMutableTreeNode)treeModel.getChild(parentTreeNode,i)).getUserObject()).compareTo(this) < 0) 50 { 51 i++; 52 } 53 54 treeModel.insertNodeInto(treeNode,parentTreeNode,i); 55 } 56 else 57 { 58 treeNode = (DefaultMutableTreeNode)treeModel.getRoot(); 61 } 62 63 setModelRepresentant(treeModel, treeNode); 64 if (this instanceof AbstractContainer) 65 { 66 treeNode.setAllowsChildren(true); 67 } 68 else 69 { 70 treeNode.setAllowsChildren(false); 71 } 72 } 73 74 81 82 public void buildTree ( DefaultTreeModel treeModel, DefaultMutableTreeNode parentTreeNode ) 83 { 84 addToParent(treeModel,parentTreeNode); 85 DefaultMutableTreeNode treeNode = 86 (DefaultMutableTreeNode)modelRepresentants.get(treeModel); 87 if (this instanceof AbstractContainer) 88 { 89 ModelParticipant[] contents = 90 ((AbstractContainer)this).contents(); 91 92 treeNode.setAllowsChildren(true); 93 94 for (int i=0; i<contents.length; i++) 95 { 96 if (contents[i]!=null) 97 { contents[i].buildTree(treeModel,treeNode); 99 } 100 } 101 } 102 103 } 104 108 109 public abstract int compareTo(ModelParticipant other); 110 111 115 116 public synchronized void expand(DefaultTreeModel treeModel) 117 { 118 boolean jTreeExpanded = false; 119 if (this instanceof AbstractContainer) 121 { 122 DefaultMutableTreeNode treeNode = 123 (DefaultMutableTreeNode)modelRepresentants.get(treeModel); 124 ModelParticipant[] contents = ((AbstractContainer)this).contents(); 125 for (int i=0; i<contents.length; i++) 126 { 127 if (contents[i]!=null) 128 { 129 contents[i].addToParent(treeModel,treeNode); 131 } 132 if (!jTreeExpanded) 133 { 134 javax.swing.JTree jTree = 135 (javax.swing.JTree )modelBuilder.treeViewsToUpdate.get(treeNode); 136 if (jTree!=null) 137 { 138 jTree.expandPath(new TreePath(treeNode.getPath())); 139 } 140 } 141 } 142 modelBuilder.expandedModParts.put(treeNode,treeNode); 143 } 144 } 145 149 150 public Object getModelRepresentant(Object model) 151 { 152 return modelRepresentants.get(model); 153 } 154 155 159 160 protected void setModelRepresentant(Object model, Object representant) 161 { 162 modelRepresentants.put(model,representant); 163 } 164 } 165 166 167 | Popular Tags |