4 * @author Roman Blazevic
8 package xelfi.debugger;
11 import xelfi.top.TopDialog;
12 import xelfi.top.TopLevel;
15 * This is a view on the data given by the Debugger.
16 * It is a view on thread groups and threads in the debugged application.
19 public class ThreadsView extends TopDialog
21 private Debugger document;
24 static final int KEY_ENTER = 10;
26 static final int HINT_COMPLETE_UPDATE = 0;
29 * ThreadsView constructor.
31 * debugger - the document for this view
33 ThreadsView(Debugger debugger)
35 super(TopLevel.getMenu(), false);
38 setBackground(Color.lightGray);
46 * My handleEvent() implementation.
48 public boolean handleEvent(Event event)
50 if (event.id == Event.KEY_PRESS && event.key == 18) // Ctrl+R - refresh
52 update(HINT_COMPLETE_UPDATE, -1);
56 if (!(event.id == Event.KEY_PRESS && event.key == KEY_ENTER)
57 && !(event.id == Event.ACTION_EVENT))
58 return super.handleEvent(event);
60 int selectedIndex = list.getSelectedIndex();
62 if (selectedIndex == -1)
65 /* RemoteThreadGroup[] rtg = document.getThreadGroups();
69 Output output = TopLevel.getOutput();
71 update(HINT_COMPLETE_UPDATE, -1);
73 output.println("\"Threads\" window was out of date and updated");
77 RemoteThreadGroup ctg = null;
78 RemoteThread ct = null;
80 int threadGroupIndex = 1;
82 for(int i = 0; i < rtg.length; i++)
85 // without "system" thread groups (system and main groups)
86 if (rtg[i].getName().compareTo("system") == 0 ||
87 rtg[i].getName().compareTo("main") == 0)
90 String string = " ["+(threadGroupIndex)+"] "+rtg[i].getName();
92 if (!list.getItem(lineIndex).equals(string))
94 Output output = TopLevel.getOutput();
96 update(HINT_COMPLETE_UPDATE, -1);
98 output.println("\"Threads\" window was out of date and updated");
102 if (lineIndex == selectedIndex)
105 RemoteThread rt[] = rtg[i].listThreads(true);
110 for(int j = 0; j < rt.length; j++)
112 string = " "+rt[j].getName()+" : "+rt[j].getStatus();
114 if (lineIndex == selectedIndex && list.getItem(lineIndex).equals(string))
123 if (ct != null) // it was finally found
136 Output output = TopLevel.getOutput();
138 update(HINT_COMPLETE_UPDATE, -1);
140 output.println("\"Threads\" window was out of date and updated");
146 if (ct.getStatus().equals("at breakpoint")
147 //|| ct.getStatus().equals("suspended")
149 document.threadChosen(ctg, ct);
152 Output output = TopLevel.getOutput();
155 output.println("thread is not at breakpoint");
156 //output.println("thread is not suspended or at breakpoint");
169 * This method is called when the content of the view must be
172 void update(int hint, int index)
177 if (hint != HINT_COMPLETE_UPDATE)
179 System.out.println("unsupported hint");
188 * My show() implementation.