/ui/src/com/bluemarsh/jswat/ui/components/DebuggeeInfoPanel.java

http://jswat.googlecode.com/ · Java · 574 lines · 455 code · 57 blank · 62 comment · 16 complexity · 1b100a7d2a47935008613b2b25545030 MD5 · raw file

  1. /*
  2. * The contents of this file are subject to the terms of the Common Development
  3. * and Distribution License (the License). You may not use this file except in
  4. * compliance with the License.
  5. *
  6. * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
  7. * or http://www.netbeans.org/cddl.txt.
  8. *
  9. * When distributing Covered Code, include this CDDL Header Notice in each file
  10. * and include the License file at http://www.netbeans.org/cddl.txt.
  11. * If applicable, add the following below the CDDL Header, with the fields
  12. * enclosed by brackets [] replaced by your own identifying information:
  13. * "Portions Copyrighted [year] [name of copyright owner]"
  14. *
  15. * The Original Software is JSwat. The Initial Developer of the Original
  16. * Software is Nathan L. Fiedler. Portions created by Nathan L. Fiedler
  17. * are Copyright (C) 2005-2010. All Rights Reserved.
  18. *
  19. * Contributor(s): Nathan L. Fiedler.
  20. *
  21. * $Id: DebuggeeInfoPanel.java 288 2010-11-21 02:59:13Z nathanfiedler $
  22. */
  23. package com.bluemarsh.jswat.ui.components;
  24. import com.bluemarsh.jswat.core.context.ContextProvider;
  25. import com.bluemarsh.jswat.core.context.DebuggingContext;
  26. import com.bluemarsh.jswat.core.session.Session;
  27. import com.bluemarsh.jswat.core.util.Classes;
  28. import com.sun.jdi.BooleanValue;
  29. import com.sun.jdi.Bootstrap;
  30. import com.sun.jdi.ClassType;
  31. import com.sun.jdi.IncompatibleThreadStateException;
  32. import com.sun.jdi.Method;
  33. import com.sun.jdi.ObjectReference;
  34. import com.sun.jdi.ReferenceType;
  35. import com.sun.jdi.StringReference;
  36. import com.sun.jdi.ThreadReference;
  37. import com.sun.jdi.Value;
  38. import com.sun.jdi.VirtualMachine;
  39. import com.sun.jdi.VirtualMachineManager;
  40. import java.util.ArrayList;
  41. import java.util.Collections;
  42. import java.util.LinkedList;
  43. import java.util.List;
  44. import java.util.concurrent.ExecutionException;
  45. import org.openide.DialogDisplayer;
  46. import org.openide.NotifyDescriptor;
  47. import org.openide.util.NbBundle;
  48. /**
  49. * Class DebuggeeInfoPanel displays various bits of information about the
  50. * debuggee to which the Session is connected.
  51. *
  52. * @author Nathan Fiedler
  53. */
  54. public class DebuggeeInfoPanel extends javax.swing.JPanel {
  55. /** silence the compiler warnings */
  56. private static final long serialVersionUID = 1L;
  57. /** Emtpy list of Value objects. */
  58. private static List<Value> EMTPY_ARGUMENTS = new LinkedList<Value>();
  59. /**
  60. * Creates new form DebuggeeInfoPanel.
  61. */
  62. public DebuggeeInfoPanel() {
  63. initComponents();
  64. }
  65. /**
  66. * Constructs a dialog and displays this panel as its primary component.
  67. *
  68. * @param session Session to be displayed.
  69. */
  70. public void display(Session session) {
  71. VirtualMachineManager vmm = Bootstrap.virtualMachineManager();
  72. String str = String.valueOf(vmm.majorInterfaceVersion()) + '.'
  73. + String.valueOf(vmm.minorInterfaceVersion());
  74. jdiVersionTextField.setText(str);
  75. if (session.isConnected()) {
  76. VirtualMachine vm = session.getConnection().getVM();
  77. jvmVersionTextField.setText(vm.version());
  78. jvmDescriptionTextArea.setText(vm.description());
  79. displaySupport(vm);
  80. }
  81. displayProperties(session);
  82. NotifyDescriptor desc = new NotifyDescriptor.Message(this);
  83. desc.setTitle(NbBundle.getMessage(DebuggeeInfoPanel.class,
  84. "LBL_DebuggeeInfo_Title"));
  85. DialogDisplayer.getDefault().notify(desc);
  86. }
  87. /**
  88. * Retrieves the system properties defined in the debuggee to which the
  89. * given session is connected.
  90. *
  91. * @param session Session for which to get properties.
  92. */
  93. private void displayProperties(Session session) {
  94. StringBuilder sb = new StringBuilder(1024);
  95. DebuggingContext dc = ContextProvider.getContext(session);
  96. ThreadReference thread = dc.getThread();
  97. if (thread == null) {
  98. sb.append(NbBundle.getMessage(DebuggeeInfoPanel.class,
  99. "ERR_DebuggeeInfo_IncompatibleThread"));
  100. } else {
  101. VirtualMachine vm = session.getConnection().getVM();
  102. List<ReferenceType> classes = vm.classesByName("java.lang.System");
  103. // We assume it exists and is a real class.
  104. ClassType type = (ClassType) classes.get(0);
  105. List<Method> methods = type.methodsByName("getProperties");
  106. if (methods.isEmpty()) {
  107. // KVM does not have a System.getProperties() method.
  108. sb.append(NbBundle.getMessage(DebuggeeInfoPanel.class,
  109. "ERR_DebuggeeInfo_NoPropertiesMethod"));
  110. } else {
  111. Method method = methods.get(0);
  112. try {
  113. ObjectReference props = (ObjectReference) Classes.invokeMethod(
  114. null, type, thread, method, EMTPY_ARGUMENTS);
  115. // Get the property names enumerator.
  116. type = (ClassType) props.referenceType();
  117. methods = type.methodsByName("propertyNames", "()Ljava/util/Enumeration;");
  118. if (methods.isEmpty()) {
  119. throw new IllegalArgumentException("no propertyNames() method");
  120. }
  121. method = methods.get(0);
  122. ObjectReference iter = (ObjectReference) Classes.invokeMethod(
  123. props, type, thread, method, EMTPY_ARGUMENTS);
  124. ClassType iterType = (ClassType) iter.referenceType();
  125. methods = iterType.methodsByName("hasMoreElements", "()Z");
  126. if (methods.isEmpty()) {
  127. throw new IllegalArgumentException("no hasMoreElements() method");
  128. }
  129. Method hasNextMeth = methods.get(0);
  130. methods = iterType.methodsByName("nextElement", "()Ljava/lang/Object;");
  131. if (methods.isEmpty()) {
  132. throw new IllegalArgumentException("no nextElement() method");
  133. }
  134. Method nextMeth = methods.get(0);
  135. BooleanValue bool = (BooleanValue) Classes.invokeMethod(
  136. iter, iterType, thread, hasNextMeth, EMTPY_ARGUMENTS);
  137. // Enumerate the property names, and then sort them.
  138. List<String> propNames = new LinkedList<String>();
  139. while (bool != null && bool.value()) {
  140. StringReference sr = (StringReference) Classes.invokeMethod(
  141. iter, iterType, thread, nextMeth, EMTPY_ARGUMENTS);
  142. propNames.add(sr.value());
  143. bool = (BooleanValue) Classes.invokeMethod(
  144. iter, iterType, thread, hasNextMeth, EMTPY_ARGUMENTS);
  145. }
  146. Collections.sort(propNames);
  147. // Display the property values.
  148. type = (ClassType) props.referenceType();
  149. methods = type.methodsByName("getProperty",
  150. "(Ljava/lang/String;)Ljava/lang/String;");
  151. if (methods.isEmpty()) {
  152. throw new IllegalArgumentException("no getProperty() method");
  153. }
  154. method = methods.get(0);
  155. List<Value> args = new ArrayList<Value>(1);
  156. args.add(vm.mirrorOf("dummy"));
  157. for (String prop : propNames) {
  158. args.set(0, vm.mirrorOf(prop));
  159. StringReference sr = (StringReference) Classes.invokeMethod(
  160. props, type, thread, method, args);
  161. sb.append(prop);
  162. sb.append(" = ");
  163. sb.append(sr.value());
  164. sb.append('\n');
  165. }
  166. } catch (ExecutionException ee) {
  167. Throwable t = ee.getCause();
  168. if (t instanceof IncompatibleThreadStateException) {
  169. sb.append(NbBundle.getMessage(DebuggeeInfoPanel.class,
  170. "ERR_DebuggeeInfo_IncompatibleThread"));
  171. } else {
  172. sb.append(t.toString());
  173. }
  174. } catch (Exception e) {
  175. sb.append(e.toString());
  176. }
  177. }
  178. }
  179. propsTextArea.setText(sb.toString());
  180. }
  181. /**
  182. * Displays the supported operations of the given virtual machine.
  183. *
  184. * @param vm virtual machine to query.
  185. */
  186. private void displaySupport(VirtualMachine vm) {
  187. addMethodCheckBox.setSelected(vm.canAddMethod());
  188. beModifiedCheckBox.setSelected(vm.canBeModified());
  189. forceEarlyReturnCheckBox.setSelected(vm.canForceEarlyReturn());
  190. getBytecodesCheckBox.setSelected(vm.canGetBytecodes());
  191. getGetClassFileVersionCheckBox.setSelected(vm.canGetClassFileVersion());
  192. getGetConstantPoolCheckBox.setSelected(vm.canGetConstantPool());
  193. getCurrentContendedMonitorCheckBox.setSelected(vm.canGetCurrentContendedMonitor());
  194. getInstanceInfoCheckBox.setSelected(vm.canGetInstanceInfo());
  195. getMethodReturnCheckBox.setSelected(vm.canGetMethodReturnValues());
  196. getMonitorFrameInfoCheckBox.setSelected(vm.canGetMonitorFrameInfo());
  197. getMonitorInfoCheckBox.setSelected(vm.canGetMonitorInfo());
  198. getOwnedMonitorInfoCheckBox.setSelected(vm.canGetOwnedMonitorInfo());
  199. getSourceDebugExtensionCheckBox.setSelected(vm.canGetSourceDebugExtension());
  200. getSyntheticAttributeCheckBox.setSelected(vm.canGetSyntheticAttribute());
  201. popFramesCheckBox.setSelected(vm.canPopFrames());
  202. redefineClassesCheckBox.setSelected(vm.canRedefineClasses());
  203. requestMonitorEventCheckBox.setSelected(vm.canRequestMonitorEvents());
  204. requestVMDeathEventCheckBox.setSelected(vm.canRequestVMDeathEvent());
  205. unrestrictedlyRedefineClassesCheckBox.setSelected(vm.canUnrestrictedlyRedefineClasses());
  206. useInstanceFiltersCheckBox.setSelected(vm.canUseInstanceFilters());
  207. useSourceFiltersCheckBox.setSelected(vm.canUseSourceNameFilters());
  208. watchFieldAccessCheckBox.setSelected(vm.canWatchFieldAccess());
  209. watchFieldModificationCheckBox.setSelected(vm.canWatchFieldModification());
  210. }
  211. /** This method is called from within the constructor to
  212. * initialize the form.
  213. * WARNING: Do NOT modify this code. The content of this method is
  214. * always regenerated by the Form Editor.
  215. */
  216. // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
  217. private void initComponents() {
  218. tabbedPane = new javax.swing.JTabbedPane();
  219. versionPanel = new javax.swing.JPanel();
  220. jdiVersionLabel = new javax.swing.JLabel();
  221. jdiVersionTextField = new javax.swing.JTextField();
  222. jvmVersionLabel = new javax.swing.JLabel();
  223. jvmVersionTextField = new javax.swing.JTextField();
  224. jvmDescriptionLabel = new javax.swing.JLabel();
  225. jvmDescriptionScrollPane = new javax.swing.JScrollPane();
  226. jvmDescriptionTextArea = new javax.swing.JTextArea();
  227. propertiesPanel = new javax.swing.JPanel();
  228. propsScrollPane = new javax.swing.JScrollPane();
  229. propsTextArea = new javax.swing.JTextArea();
  230. supportPanel = new javax.swing.JPanel();
  231. addMethodCheckBox = new javax.swing.JCheckBox();
  232. beModifiedCheckBox = new javax.swing.JCheckBox();
  233. forceEarlyReturnCheckBox = new javax.swing.JCheckBox();
  234. getBytecodesCheckBox = new javax.swing.JCheckBox();
  235. getGetClassFileVersionCheckBox = new javax.swing.JCheckBox();
  236. getGetConstantPoolCheckBox = new javax.swing.JCheckBox();
  237. getCurrentContendedMonitorCheckBox = new javax.swing.JCheckBox();
  238. getInstanceInfoCheckBox = new javax.swing.JCheckBox();
  239. getMethodReturnCheckBox = new javax.swing.JCheckBox();
  240. getMonitorFrameInfoCheckBox = new javax.swing.JCheckBox();
  241. getMonitorInfoCheckBox = new javax.swing.JCheckBox();
  242. getOwnedMonitorInfoCheckBox = new javax.swing.JCheckBox();
  243. getSourceDebugExtensionCheckBox = new javax.swing.JCheckBox();
  244. getSyntheticAttributeCheckBox = new javax.swing.JCheckBox();
  245. popFramesCheckBox = new javax.swing.JCheckBox();
  246. redefineClassesCheckBox = new javax.swing.JCheckBox();
  247. requestMonitorEventCheckBox = new javax.swing.JCheckBox();
  248. requestVMDeathEventCheckBox = new javax.swing.JCheckBox();
  249. unrestrictedlyRedefineClassesCheckBox = new javax.swing.JCheckBox();
  250. useInstanceFiltersCheckBox = new javax.swing.JCheckBox();
  251. useSourceFiltersCheckBox = new javax.swing.JCheckBox();
  252. watchFieldAccessCheckBox = new javax.swing.JCheckBox();
  253. watchFieldModificationCheckBox = new javax.swing.JCheckBox();
  254. setLayout(new java.awt.BorderLayout());
  255. versionPanel.setBorder(javax.swing.BorderFactory.createEmptyBorder(12, 12, 12, 12));
  256. jdiVersionLabel.setLabelFor(jdiVersionTextField);
  257. jdiVersionLabel.setText(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("LBL_DebuggeeInfo_JdiVersion"));
  258. jdiVersionTextField.setEditable(false);
  259. jvmVersionLabel.setLabelFor(jvmVersionTextField);
  260. jvmVersionLabel.setText(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("LBL_DebuggeeInfo_JvmVersion"));
  261. jvmVersionTextField.setEditable(false);
  262. jvmDescriptionLabel.setText(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("LBL_DebuggeeInfo_JvmDesc"));
  263. jvmDescriptionTextArea.setBackground(javax.swing.UIManager.getDefaults().getColor("TextField.inactiveBackground"));
  264. jvmDescriptionTextArea.setEditable(false);
  265. jvmDescriptionScrollPane.setViewportView(jvmDescriptionTextArea);
  266. javax.swing.GroupLayout versionPanelLayout = new javax.swing.GroupLayout(versionPanel);
  267. versionPanel.setLayout(versionPanelLayout);
  268. versionPanelLayout.setHorizontalGroup(
  269. versionPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  270. .addGroup(versionPanelLayout.createSequentialGroup()
  271. .addGroup(versionPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  272. .addComponent(jdiVersionLabel)
  273. .addComponent(jvmVersionLabel)
  274. .addComponent(jvmDescriptionLabel))
  275. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  276. .addGroup(versionPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  277. .addGroup(versionPanelLayout.createSequentialGroup()
  278. .addGroup(versionPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  279. .addComponent(jvmVersionTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 395, Short.MAX_VALUE)
  280. .addComponent(jdiVersionTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 395, Short.MAX_VALUE))
  281. .addGap(0, 0, 0))
  282. .addComponent(jvmDescriptionScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 395, Short.MAX_VALUE)))
  283. );
  284. versionPanelLayout.setVerticalGroup(
  285. versionPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  286. .addGroup(versionPanelLayout.createSequentialGroup()
  287. .addGroup(versionPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  288. .addComponent(jdiVersionLabel)
  289. .addComponent(jdiVersionTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
  290. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  291. .addGroup(versionPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  292. .addComponent(jvmVersionLabel)
  293. .addComponent(jvmVersionTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
  294. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  295. .addGroup(versionPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  296. .addGroup(versionPanelLayout.createSequentialGroup()
  297. .addComponent(jvmDescriptionLabel)
  298. .addContainerGap(211, Short.MAX_VALUE))
  299. .addComponent(jvmDescriptionScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 226, Short.MAX_VALUE)))
  300. );
  301. tabbedPane.addTab(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("LBL_DebuggeeInfo_VersionsTab"), versionPanel);
  302. propertiesPanel.setBorder(javax.swing.BorderFactory.createEmptyBorder(12, 12, 12, 12));
  303. propsScrollPane.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
  304. propsTextArea.setBackground(javax.swing.UIManager.getDefaults().getColor("TextField.inactiveBackground"));
  305. propsTextArea.setColumns(40);
  306. propsTextArea.setEditable(false);
  307. propsTextArea.setRows(10);
  308. propsScrollPane.setViewportView(propsTextArea);
  309. javax.swing.GroupLayout propertiesPanelLayout = new javax.swing.GroupLayout(propertiesPanel);
  310. propertiesPanel.setLayout(propertiesPanelLayout);
  311. propertiesPanelLayout.setHorizontalGroup(
  312. propertiesPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  313. .addComponent(propsScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 510, Short.MAX_VALUE)
  314. );
  315. propertiesPanelLayout.setVerticalGroup(
  316. propertiesPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  317. .addComponent(propsScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 276, Short.MAX_VALUE)
  318. );
  319. tabbedPane.addTab(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("LBL_DebuggeeInfo_PropsTab"), propertiesPanel);
  320. supportPanel.setBorder(javax.swing.BorderFactory.createEmptyBorder(12, 12, 12, 12));
  321. addMethodCheckBox.setText(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("LBL_DebuggeeInfo_CanAddMethod"));
  322. addMethodCheckBox.setToolTipText(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("HINT_DebuggeeInfo_CanAddMethod"));
  323. addMethodCheckBox.setEnabled(false);
  324. beModifiedCheckBox.setText(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("LBL_DebuggeeInfo_CanBeModified"));
  325. beModifiedCheckBox.setToolTipText(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("HINT_DebuggeeInfo_CanBeModified"));
  326. beModifiedCheckBox.setEnabled(false);
  327. forceEarlyReturnCheckBox.setText(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("LBL_DebuggeeInfo_CanForceEarlyReturn"));
  328. forceEarlyReturnCheckBox.setToolTipText(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("HINT_DebuggeeInfo_CanForceEarlyReturn"));
  329. forceEarlyReturnCheckBox.setEnabled(false);
  330. getBytecodesCheckBox.setText(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("LBL_DebuggeeInfo_CanGetBytecodes"));
  331. getBytecodesCheckBox.setToolTipText(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("HINT_DebuggeeInfo_CanGetBytecodes"));
  332. getBytecodesCheckBox.setEnabled(false);
  333. getGetClassFileVersionCheckBox.setText(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("LBL_DebuggeeInfo_CanGetClassVersion"));
  334. getGetClassFileVersionCheckBox.setToolTipText(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("HINT_DebuggeeInfo_CanGetClassVersion"));
  335. getGetClassFileVersionCheckBox.setEnabled(false);
  336. getGetConstantPoolCheckBox.setText(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("LBL_DebuggeeInfo_CanGetConstantPool"));
  337. getGetConstantPoolCheckBox.setToolTipText(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("HINT_DebuggeeInfo_CanGetConstantPool"));
  338. getGetConstantPoolCheckBox.setEnabled(false);
  339. getCurrentContendedMonitorCheckBox.setText(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("LBL_DebuggeeInfo_CanGetCurrentContentedMonitor"));
  340. getCurrentContendedMonitorCheckBox.setToolTipText(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("HINT_DebuggeeInfo_CanGetCurrentContentedMonitor"));
  341. getCurrentContendedMonitorCheckBox.setEnabled(false);
  342. getInstanceInfoCheckBox.setText(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("LBL_DebuggeeInfo_CanGetInstanceInfo"));
  343. getInstanceInfoCheckBox.setToolTipText(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("HINT_DebuggeeInfo_CanGetInstanceInfo"));
  344. getInstanceInfoCheckBox.setEnabled(false);
  345. getMethodReturnCheckBox.setText(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("LBL_DebuggeeInfo_CanGetMethodReturn"));
  346. getMethodReturnCheckBox.setToolTipText(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("HINT_DebuggeeInfo_CanGetMethodReturn"));
  347. getMethodReturnCheckBox.setEnabled(false);
  348. getMonitorFrameInfoCheckBox.setText(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("LBL_DebuggeeInfo_CanGetMonitorFrame"));
  349. getMonitorFrameInfoCheckBox.setToolTipText(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("HINT_DebuggeeInfo_CanGetMonitorFrame"));
  350. getMonitorFrameInfoCheckBox.setEnabled(false);
  351. getMonitorInfoCheckBox.setText(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("LBL_DebuggeeInfo_CanGetMonitorInfo"));
  352. getMonitorInfoCheckBox.setToolTipText(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("HINT_DebuggeeInfo_CanGetMonitorInfo"));
  353. getMonitorInfoCheckBox.setEnabled(false);
  354. getOwnedMonitorInfoCheckBox.setText(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("LBL_DebuggeeInfo_CanGetOwnedMonitorInfo"));
  355. getOwnedMonitorInfoCheckBox.setToolTipText(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("HINT_DebuggeeInfo_CanGetOwnedMonitorInfo"));
  356. getOwnedMonitorInfoCheckBox.setEnabled(false);
  357. getSourceDebugExtensionCheckBox.setText(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("LBL_DebuggeeInfo_CanGetSourceDebugExtension"));
  358. getSourceDebugExtensionCheckBox.setToolTipText(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("HINT_DebuggeeInfo_CanGetSourceDebugExtension"));
  359. getSourceDebugExtensionCheckBox.setEnabled(false);
  360. getSyntheticAttributeCheckBox.setText(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("LBL_DebuggeeInfo_CanGetSyntheticAttribute"));
  361. getSyntheticAttributeCheckBox.setToolTipText(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("HINT_DebuggeeInfo_CanGetSyntheticAttribute"));
  362. getSyntheticAttributeCheckBox.setEnabled(false);
  363. popFramesCheckBox.setText(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("LBL_DebuggeeInfo_CanPopFrames"));
  364. popFramesCheckBox.setToolTipText(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("HINT_DebuggeeInfo_CanPopFrames"));
  365. popFramesCheckBox.setEnabled(false);
  366. redefineClassesCheckBox.setText(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("LBL_DebuggeeInfo_CanRedefineClasses"));
  367. redefineClassesCheckBox.setToolTipText(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("HINT_DebuggeeInfo_CanRedefineClasses"));
  368. redefineClassesCheckBox.setEnabled(false);
  369. requestMonitorEventCheckBox.setText(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("LBL_DebuggeeInfo_CanGetMonitorEvent"));
  370. requestMonitorEventCheckBox.setToolTipText(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("HINT_DebuggeeInfo_CanGetMonitorEvent"));
  371. requestMonitorEventCheckBox.setEnabled(false);
  372. requestVMDeathEventCheckBox.setText(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("LBL_DebuggeeInfo_CanGetVMDeathEvent"));
  373. requestVMDeathEventCheckBox.setToolTipText(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("HINT_DebuggeeInfo_CanGetVMDeathEvent"));
  374. requestVMDeathEventCheckBox.setEnabled(false);
  375. unrestrictedlyRedefineClassesCheckBox.setText(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("LBL_DebuggeeInfo_CanUnrestrictedlyRedefineClasses"));
  376. unrestrictedlyRedefineClassesCheckBox.setToolTipText(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("HINT_DebuggeeInfo_CanUnrestrictedlyRedefineClasses"));
  377. unrestrictedlyRedefineClassesCheckBox.setEnabled(false);
  378. useInstanceFiltersCheckBox.setText(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("LBL_DebuggeeInfo_CanUseInstanceFilters"));
  379. useInstanceFiltersCheckBox.setToolTipText(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("HINT_DebuggeeInfo_CanUseInstanceFilters"));
  380. useInstanceFiltersCheckBox.setEnabled(false);
  381. useSourceFiltersCheckBox.setText(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("LBL_DebuggeeInfo_CanUseSourceFilters"));
  382. useSourceFiltersCheckBox.setToolTipText(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("HINT_DebuggeeInfo_CanUseSourceFilters"));
  383. useSourceFiltersCheckBox.setEnabled(false);
  384. watchFieldAccessCheckBox.setText(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("LBL_DebuggeeInfo_CanWatchFieldAccess"));
  385. watchFieldAccessCheckBox.setToolTipText(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("HINT_DebuggeeInfo_CanWatchFieldAccess"));
  386. watchFieldAccessCheckBox.setEnabled(false);
  387. watchFieldModificationCheckBox.setText(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("LBL_DebuggeeInfo_CanWatchFieldModification"));
  388. watchFieldModificationCheckBox.setToolTipText(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("HINT_DebuggeeInfo_CanWatchFieldModification"));
  389. watchFieldModificationCheckBox.setEnabled(false);
  390. javax.swing.GroupLayout supportPanelLayout = new javax.swing.GroupLayout(supportPanel);
  391. supportPanel.setLayout(supportPanelLayout);
  392. supportPanelLayout.setHorizontalGroup(
  393. supportPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  394. .addGroup(supportPanelLayout.createSequentialGroup()
  395. .addContainerGap()
  396. .addGroup(supportPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  397. .addComponent(addMethodCheckBox)
  398. .addComponent(beModifiedCheckBox)
  399. .addComponent(forceEarlyReturnCheckBox)
  400. .addComponent(getBytecodesCheckBox)
  401. .addComponent(getGetClassFileVersionCheckBox)
  402. .addComponent(getGetConstantPoolCheckBox)
  403. .addComponent(getCurrentContendedMonitorCheckBox)
  404. .addComponent(getInstanceInfoCheckBox)
  405. .addComponent(getMethodReturnCheckBox)
  406. .addComponent(getMonitorFrameInfoCheckBox)
  407. .addComponent(getMonitorInfoCheckBox)
  408. .addComponent(getOwnedMonitorInfoCheckBox))
  409. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  410. .addGroup(supportPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  411. .addComponent(getSourceDebugExtensionCheckBox)
  412. .addComponent(getSyntheticAttributeCheckBox)
  413. .addComponent(popFramesCheckBox)
  414. .addComponent(redefineClassesCheckBox)
  415. .addComponent(requestMonitorEventCheckBox)
  416. .addComponent(requestVMDeathEventCheckBox)
  417. .addComponent(unrestrictedlyRedefineClassesCheckBox)
  418. .addComponent(useInstanceFiltersCheckBox)
  419. .addComponent(useSourceFiltersCheckBox)
  420. .addComponent(watchFieldAccessCheckBox)
  421. .addComponent(watchFieldModificationCheckBox))
  422. .addGap(58, 58, 58))
  423. );
  424. supportPanelLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {getSourceDebugExtensionCheckBox, getSyntheticAttributeCheckBox, popFramesCheckBox, redefineClassesCheckBox, requestMonitorEventCheckBox, requestVMDeathEventCheckBox, unrestrictedlyRedefineClassesCheckBox, useInstanceFiltersCheckBox, useSourceFiltersCheckBox, watchFieldAccessCheckBox, watchFieldModificationCheckBox});
  425. supportPanelLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {addMethodCheckBox, beModifiedCheckBox, forceEarlyReturnCheckBox, getBytecodesCheckBox, getCurrentContendedMonitorCheckBox, getGetClassFileVersionCheckBox, getGetConstantPoolCheckBox, getInstanceInfoCheckBox, getMethodReturnCheckBox, getMonitorFrameInfoCheckBox, getMonitorInfoCheckBox, getOwnedMonitorInfoCheckBox});
  426. supportPanelLayout.setVerticalGroup(
  427. supportPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  428. .addGroup(supportPanelLayout.createSequentialGroup()
  429. .addGroup(supportPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  430. .addComponent(addMethodCheckBox)
  431. .addComponent(getSourceDebugExtensionCheckBox))
  432. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  433. .addGroup(supportPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  434. .addComponent(beModifiedCheckBox)
  435. .addComponent(getSyntheticAttributeCheckBox))
  436. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  437. .addGroup(supportPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  438. .addComponent(forceEarlyReturnCheckBox)
  439. .addComponent(popFramesCheckBox))
  440. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  441. .addGroup(supportPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  442. .addComponent(getBytecodesCheckBox)
  443. .addComponent(redefineClassesCheckBox))
  444. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  445. .addGroup(supportPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  446. .addComponent(getGetClassFileVersionCheckBox)
  447. .addComponent(requestMonitorEventCheckBox))
  448. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  449. .addGroup(supportPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  450. .addComponent(getGetConstantPoolCheckBox)
  451. .addComponent(requestVMDeathEventCheckBox))
  452. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  453. .addGroup(supportPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  454. .addComponent(getCurrentContendedMonitorCheckBox)
  455. .addComponent(unrestrictedlyRedefineClassesCheckBox))
  456. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  457. .addGroup(supportPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  458. .addComponent(getInstanceInfoCheckBox)
  459. .addComponent(useInstanceFiltersCheckBox))
  460. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  461. .addGroup(supportPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  462. .addComponent(getMethodReturnCheckBox)
  463. .addComponent(useSourceFiltersCheckBox))
  464. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  465. .addGroup(supportPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  466. .addComponent(getMonitorFrameInfoCheckBox)
  467. .addComponent(watchFieldAccessCheckBox))
  468. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  469. .addGroup(supportPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  470. .addComponent(getMonitorInfoCheckBox)
  471. .addComponent(watchFieldModificationCheckBox))
  472. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  473. .addComponent(getOwnedMonitorInfoCheckBox))
  474. );
  475. supportPanelLayout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {addMethodCheckBox, beModifiedCheckBox, forceEarlyReturnCheckBox, getBytecodesCheckBox, getCurrentContendedMonitorCheckBox, getGetClassFileVersionCheckBox, getGetConstantPoolCheckBox, getInstanceInfoCheckBox, getMethodReturnCheckBox, getMonitorFrameInfoCheckBox, getMonitorInfoCheckBox, getOwnedMonitorInfoCheckBox, getSourceDebugExtensionCheckBox, getSyntheticAttributeCheckBox, popFramesCheckBox, redefineClassesCheckBox, requestMonitorEventCheckBox, requestVMDeathEventCheckBox, unrestrictedlyRedefineClassesCheckBox, useInstanceFiltersCheckBox, useSourceFiltersCheckBox, watchFieldAccessCheckBox, watchFieldModificationCheckBox});
  476. tabbedPane.addTab(java.util.ResourceBundle.getBundle("com/bluemarsh/jswat/ui/components/Forms").getString("LBL_DebuggeeInfo_SupportTab"), supportPanel);
  477. add(tabbedPane, java.awt.BorderLayout.CENTER);
  478. }// </editor-fold>//GEN-END:initComponents
  479. // Variables declaration - do not modify//GEN-BEGIN:variables
  480. private javax.swing.JCheckBox addMethodCheckBox;
  481. private javax.swing.JCheckBox beModifiedCheckBox;
  482. private javax.swing.JCheckBox forceEarlyReturnCheckBox;
  483. private javax.swing.JCheckBox getBytecodesCheckBox;
  484. private javax.swing.JCheckBox getCurrentContendedMonitorCheckBox;
  485. private javax.swing.JCheckBox getGetClassFileVersionCheckBox;
  486. private javax.swing.JCheckBox getGetConstantPoolCheckBox;
  487. private javax.swing.JCheckBox getInstanceInfoCheckBox;
  488. private javax.swing.JCheckBox getMethodReturnCheckBox;
  489. private javax.swing.JCheckBox getMonitorFrameInfoCheckBox;
  490. private javax.swing.JCheckBox getMonitorInfoCheckBox;
  491. private javax.swing.JCheckBox getOwnedMonitorInfoCheckBox;
  492. private javax.swing.JCheckBox getSourceDebugExtensionCheckBox;
  493. private javax.swing.JCheckBox getSyntheticAttributeCheckBox;
  494. private javax.swing.JLabel jdiVersionLabel;
  495. private javax.swing.JTextField jdiVersionTextField;
  496. private javax.swing.JLabel jvmDescriptionLabel;
  497. private javax.swing.JScrollPane jvmDescriptionScrollPane;
  498. private javax.swing.JTextArea jvmDescriptionTextArea;
  499. private javax.swing.JLabel jvmVersionLabel;
  500. private javax.swing.JTextField jvmVersionTextField;
  501. private javax.swing.JCheckBox popFramesCheckBox;
  502. private javax.swing.JPanel propertiesPanel;
  503. private javax.swing.JScrollPane propsScrollPane;
  504. private javax.swing.JTextArea propsTextArea;
  505. private javax.swing.JCheckBox redefineClassesCheckBox;
  506. private javax.swing.JCheckBox requestMonitorEventCheckBox;
  507. private javax.swing.JCheckBox requestVMDeathEventCheckBox;
  508. private javax.swing.JPanel supportPanel;
  509. private javax.swing.JTabbedPane tabbedPane;
  510. private javax.swing.JCheckBox unrestrictedlyRedefineClassesCheckBox;
  511. private javax.swing.JCheckBox useInstanceFiltersCheckBox;
  512. private javax.swing.JCheckBox useSourceFiltersCheckBox;
  513. private javax.swing.JPanel versionPanel;
  514. private javax.swing.JCheckBox watchFieldAccessCheckBox;
  515. private javax.swing.JCheckBox watchFieldModificationCheckBox;
  516. // End of variables declaration//GEN-END:variables
  517. }