1 22 23 package org.aspectj.debugger.gui; 24 25 import org.aspectj.debugger.base.*; 26 import java.util.*; 27 import com.sun.jdi.*; 28 29 public class AJObjectValueNode extends AJValueNode { 30 public AJObjectValueNode(AJValueGetter getter) { 31 super(getter); 32 setType(AJIcons.OBJECT_ICON); 33 } 34 35 public boolean isObject() { 36 return true; 37 } 38 39 public boolean isString() { 40 return getValue() instanceof StringReference; 41 } 42 43 public void showKids() { 44 if (getChildCount() == 0) 45 showValues(); 46 } 47 48 public int getType() { 49 return (g().getValue() == null ? AJIcons.NULL_OBJECT_ICON : super.getType()); 50 } 51 52 private void showValues() { 53 hideValues(); 54 try { 55 ObjectReference parent = (ObjectReference) g().getValue(); 56 ReferenceType refType = parent.referenceType(); 57 add(new AJClassNode(refType)); 58 Iterator iter = refType.allFields().iterator(); 59 while (iter.hasNext()) { 60 Field field = (Field) iter.next(); 61 if (!field.isStatic()) { 62 AJValueNode valueNode = AJValueNodeFactory.make(parent, field); 63 add(valueNode); 64 } 65 } 66 } catch (Exception e) { Util.ex(e); } 67 } 68 69 public void hideValues() { 70 removeAllChildren(); 71 } 72 73 public String getValueString() { 74 String str = "no class loader"; 75 try { 76 String type = AJUtil.stripParens(g().getTypeName()); 77 if (type.startsWith("java.lang.String")) { 78 str = "" + g().getValue(); 79 } else { 80 str = type + " instance"; 81 } 82 } catch (ClassNotLoadedException e) {} 83 return str; 84 } 85 } 86 | Popular Tags |