1 21 package org.jacorb.ir.gui.typesystem.remote; 22 23 27 30 31 import org.jacorb.ir.gui.typesystem.*; 32 import java.util.*; 33 import org.omg.CORBA.*; 34 import javax.swing.tree.*; 35 36 public class IRValue 37 extends IRContainer 38 implements org.jacorb.ir.gui.typesystem.Value 39 { 40 private Value baseValue = null; 41 private boolean lookedUpBaseValue = false; 42 private Value[] abstractBaseValues = null; 43 private IRInterface[] interfaces = null; 44 private IRAttribute[] allFields = null; 45 private IROperation[] allOperations = null; 46 private IRValueMember[] allMembers = null; 47 48 51 public IRValue ( ) { 52 super(); 53 } 54 55 58 public IRValue ( IRObject irObject) { 59 super(irObject); 60 } 61 62 66 public String [] allowedToAdd() { 67 String [] result = { IRAttribute.nodeTypeName(), 68 IROperation.nodeTypeName(), 69 IRConstant.nodeTypeName(), 70 IRTypedef.nodeTypeName(), 71 IRException.nodeTypeName(), 72 IRValueMember.nodeTypeName() 73 }; 74 return result; 75 } 76 77 80 public String description() 81 { 82 String result = super.description(); 83 84 Value base = getBaseValue(); 85 if (base != null) 86 result = result + "\nBase-Value:\t " 87 + ((IRValue)base).getAbsoluteName(); 88 else 89 result = result + "\nBase-Value:\t:none"; 90 91 Interface[] implemented = getInterfaces(); 92 if (implemented.length > 0) { 93 result = result + "\nImplemented-Interfaces:\t "; 94 for (int i = 0; i<implemented.length; i++) { 95 result = result + ((TypeSystemNode)implemented[i]).getAbsoluteName(); 96 if (i != implemented.length-1) 97 result = result + ", "; 98 } 99 } else 100 result = result + "\nImplemented-Interfaces:\t:none"; 101 102 Value[] abstractBases = getAbstractBaseValues(); 103 if (abstractBases.length > 0) { 104 result = result + "\nAbstract-Base-Values:\t "; 105 for (int i = 0; i < abstractBases.length; i++) { 106 result = result + ((TypeSystemNode)abstractBases[i]).getAbsoluteName(); 107 if (i != abstractBases.length-1) 108 result = result + ", "; 109 } 110 } else 111 result = result + "\nAbstract-Base-Values:\t:none"; 112 113 return result; 114 } 115 116 120 public TypeSystemNode[] getAllFields() 121 { 122 if (allFields==null) { 123 Vector fields = new Vector(); 124 125 Interface[] interfaces = getInterfaces(); 127 for (int i=0; i<interfaces.length; i++) { 128 TypeSystemNode[] nextFields = interfaces[i].getAllFields(); 129 for (int n=0; n<nextFields.length; n++) 130 fields.addElement(nextFields[n]); 131 } 132 133 Value[] abstractBases = getAbstractBaseValues(); 134 for (int i = 0; i < abstractBases.length; i++) { 135 TypeSystemNode[] nextFields = abstractBases[i].getAllFields(); 136 for (int n=0; n<nextFields.length; n++) 137 if (nextFields[n] instanceof IRAttribute) 138 fields.addElement(nextFields[n]); 139 } 140 141 ModelParticipant[] contained = contents(); 143 for (int i=0; i<contained.length; i++) 144 if (contained[i] instanceof IRAttribute) 145 fields.addElement(contained[i]); 146 147 allFields = new IRAttribute[fields.size()]; 149 int i = 0; 150 for (Enumeration e = fields.elements(); e.hasMoreElements(); ++i) 151 allFields[i] = (IRAttribute)e.nextElement(); 152 } 153 return allFields; 154 } 155 156 160 public TypeSystemNode[] getAllOperations() 161 { 162 if (this.allOperations==null) 163 { 164 Vector operations = new Vector(); 165 Interface[] interfaces = this.getInterfaces(); 167 for (int i=0; i<interfaces.length; i++) 168 { 169 TypeSystemNode[] nextOperations = interfaces[i].getAllOperations(); 170 for (int n=0; n<nextOperations.length; n++) 171 { 172 operations.addElement(nextOperations[n]); 173 } 174 } 175 176 178 ModelParticipant[] contents = this.contents(); 179 for (int i=0; i<contents.length; i++) 180 { 181 if (contents[i] instanceof IROperation) 182 { 183 operations.addElement(contents[i]); 184 } 185 } 186 187 this.allOperations = new IROperation[operations.size()]; 188 int i = 0; 189 for (Enumeration e = operations.elements(); e.hasMoreElements(); ) 190 { 191 allOperations[i] = (IROperation)e.nextElement(); 192 i++; 193 } 194 } return allOperations; 196 } 197 198 202 public Value getBaseValue() 203 { 204 if (!lookedUpBaseValue) { 205 ValueDef valueDef = ValueDefHelper.narrow((org.omg.CORBA.Object )irObject); 206 ValueDef base = valueDef.base_value(); 207 if (base != null) 208 baseValue = (Value)RemoteTypeSystem.createTypeSystemNode(base); 209 lookedUpBaseValue = true; 210 } 211 return baseValue; 212 } 213 214 217 public Value[] getAbstractBaseValues() 218 { 219 if (abstractBaseValues == null) { 220 ValueDef valueDef = ValueDefHelper.narrow((org.omg.CORBA.Object )irObject); 221 ValueDef[] abstractBases = valueDef.abstract_base_values(); 222 abstractBaseValues = new Value[abstractBases.length]; 223 for (int i = 0; i < abstractBases.length; ++i) 224 abstractBaseValues[i] = (Value)RemoteTypeSystem.createTypeSystemNode(abstractBases[i]); 225 } 226 return abstractBaseValues; 227 } 228 229 233 public TypeSystemNode[] getAllMembers() 234 { 235 if (allMembers == null) { 236 Vector members = new Vector(); 237 238 Value base = getBaseValue(); 240 if (base != null) { 241 TypeSystemNode[] baseMembers = base.getAllMembers(); 242 243 for (int i = 0; i < baseMembers.length; i++) 244 members.addElement(baseMembers[i]); 245 } 246 247 Value[] abstractBases = getAbstractBaseValues(); 249 for (int i = 0; i < abstractBases.length; i++) { 250 TypeSystemNode[] nextMembers = abstractBases[i].getAllMembers(); 251 for (int n=0; n<nextMembers.length; n++) 252 members.addElement(nextMembers[n]); 253 } 254 255 256 ModelParticipant[] contents = this.contents(); 258 for (int i = 0; i < contents.length; i++) { 259 if (contents[i] instanceof IRValueMember) 260 members.addElement(contents[i]); 261 } 262 263 allMembers = new IRValueMember[members.size()]; 264 int i = 0; 265 for (Enumeration e = members.elements(); e.hasMoreElements(); ) { 266 allMembers[i] = (IRValueMember)e.nextElement(); 267 i++; 268 } 269 } 270 return allMembers; 271 } 272 273 274 282 public Interface[] getInterfaces() 283 { 284 if (interfaces==null) { 285 ValueDef valueDef = ValueDefHelper.narrow((org.omg.CORBA.Object )irObject); 287 InterfaceDef[] supportedInterfaces = valueDef.supported_interfaces(); 288 interfaces = new IRInterface[supportedInterfaces.length]; 289 for (int i=0; i<supportedInterfaces.length; i++) { 290 IRInterface intf = (IRInterface)RemoteTypeSystem.createTypeSystemNode(supportedInterfaces[i]); 292 interfaces[i] = intf; 293 } 294 } 295 return interfaces; 296 } 297 298 301 public static String nodeTypeName() 302 { 303 return "value"; 304 } 305 306 311 protected void setIRObject(org.omg.CORBA.IRObject irObject) 312 { 313 super.setIRObject(irObject); 314 } 315 } 316 317 | Popular Tags |