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