1 22 23 package org.aspectj.debugger.gui; 24 25 import org.aspectj.debugger.base.*; 26 27 import java.awt.BorderLayout ; 28 import java.awt.Dimension ; 29 import java.util.*; 30 import javax.swing.*; 31 import javax.swing.tree.*; 32 import com.sun.jdi.*; 33 import com.sun.jdi.event.*; 34 35 public class AJThreadGroupTreePane 36 extends JScrollPane 37 implements StopListener, 38 VMListener, 39 ThreadListener { 40 41 public AJThreadGroupTree tree = null; 43 44 private GUIDebugger guid; 45 46 public AJThreadGroupTreePane(AJThreadGroupTree tree) { 47 super(); 48 this.tree = tree; 49 addTree(); 50 } 51 52 public AJThreadGroupTreePane(GUIDebugger guid) { 53 this(new AJThreadGroupTree()); 54 this.guid = guid; 55 guid.getDebugger().addStopListener(this); 56 guid.getDebugger().addVMListener(this); 57 guid.getDebugger().addThreadListener(this); 58 59 } 60 61 public boolean add(ThreadReference ref) { 62 return tree.add(ref); 63 } 64 65 public boolean remove(ThreadReference ref) { 66 return tree.remove(ref); 67 } 68 69 public void clear() { 70 tree.clear(); 71 } 72 73 public void modernizeTree() { 74 try { 75 tree.modernize(); 76 } catch (Exception e) { AJUtil.ex(e); 77 } 78 } 79 80 public void invalidateAllThreads() { 81 tree.invalidateAllThreads(); 82 } 83 84 public void expandToFrame(StackFrame frame) { 85 guid.getGui().showThreadPane(); 86 tree.expandToFrame(frame); 87 centerTreeSelection(); 88 } 89 90 public void expandToLocals(StackFrame frame) { 91 guid.getGui().showThreadPane(); 92 tree.expandToLocals(frame); 93 centerTreeSelection(); 94 } 95 96 protected void centerTreeSelection() { 97 115 } 117 118 public void expandToValue(Value value, String name) { 119 tree.expandToValue(value, name); 120 centerTreeSelection(); 121 } 122 123 public AJThreadGroupTree getTree() { 124 return tree; 125 } 126 127 private void addTree() { 128 getViewport().add(tree, BorderLayout.CENTER); 129 } 130 131 132 public void vmDeathEvent(VMDeathEvent e) { 133 tree.clear(); 134 } 135 public void vmDisconnectEvent(VMDisconnectEvent e) { 136 tree.clear(); 137 } 138 public void vmStartEvent(VMStartEvent e) { 139 try { 140 Iterator iter = ComponentRepository.vm().allThreads().iterator(); 141 while (iter.hasNext()) { 142 tree.add((ThreadReference) iter.next()); 143 } 144 } catch (Exception ee) {} 145 modernizeTree(); 146 } 147 148 149 public void accessWatchpointEvent(AccessWatchpointEvent e) { 150 modernizeTree(); 151 } 152 public void breakpointEvent(BreakpointEvent e) { 153 modernizeTree(); 154 } 155 public void exceptionEvent(ExceptionEvent e) { 156 modernizeTree(); 157 } 158 public void modificationWatchpointEvent(ModificationWatchpointEvent e) { 159 modernizeTree(); 160 } 161 public void stepEvent(StepEvent e) { 162 modernizeTree(); 163 } 164 165 166 public void threadDeathEvent(ThreadDeathEvent e) { 167 tree.remove(e.thread()); 168 } 169 public void threadStartEvent(ThreadStartEvent e) { 170 tree.add(e.thread()); 171 } 172 173 public static String d() { return "Thread Group Tree Pane"; } 174 public String toString() { return d(); } 175 } 176 | Popular Tags |