KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > aspectj > debugger > gui > AJObjectValueNode


1 /* -*- Mode: JDE; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2  *
3  * This file is part of the debugger and core tools for the AspectJ(tm)
4  * programming language; see http://aspectj.org
5  *
6  * The contents of this file are subject to the Mozilla Public License
7  * Version 1.1 (the "License"); you may not use this file except in
8  * compliance with the License. You may obtain a copy of the License at
9  * either http://www.mozilla.org/MPL/ or http://aspectj.org/MPL/.
10  *
11  * Software distributed under the License is distributed on an "AS IS" basis,
12  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
13  * for the specific language governing rights and limitations under the
14  * License.
15  *
16  * The Original Code is AspectJ.
17  *
18  * The Initial Developer of the Original Code is Xerox Corporation. Portions
19  * created by Xerox Corporation are Copyright (C) 1999-2002 Xerox Corporation.
20  * All Rights Reserved.
21  */

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 JavaDoc e) { Util.ex(e); }
67     }
68
69     public void hideValues() {
70         removeAllChildren();
71     }
72
73     public String JavaDoc getValueString() {
74         String JavaDoc str = "no class loader";
75         try {
76             String JavaDoc 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