001: /*
002: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
003: *
004: * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
005: *
006: * The contents of this file are subject to the terms of either the GNU
007: * General Public License Version 2 only ("GPL") or the Common
008: * Development and Distribution License("CDDL") (collectively, the
009: * "License"). You may not use this file except in compliance with the
010: * License. You can obtain a copy of the License at
011: * http://www.netbeans.org/cddl-gplv2.html
012: * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
013: * specific language governing permissions and limitations under the
014: * License. When distributing the software, include this License Header
015: * Notice in each file and include the License file at
016: * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
017: * particular file as subject to the "Classpath" exception as provided
018: * by Sun in the GPL Version 2 section of the License file that
019: * accompanied this code. If applicable, add the following below the
020: * License Header, with the fields enclosed by brackets [] replaced by
021: * your own identifying information:
022: * "Portions Copyrighted [year] [name of copyright owner]"
023: *
024: * Contributor(s):
025: *
026: * The Original Software is NetBeans. The Initial Developer of the Original
027: * Software is Sun Microsystems, Inc. Portions Copyright 2004-2005 Sun
028: * Microsystems, Inc. All Rights Reserved.
029: *
030: * If you wish your version of this file to be governed by only the CDDL
031: * or only the GPL Version 2, indicate your decision by adding
032: * "[Contributor] elects to include this software in this distribution
033: * under the [CDDL or GPL Version 2] license." If you do not indicate a
034: * single choice of license, a recipient has the option to distribute
035: * your version of this file under either the CDDL, the GPL Version 2 or
036: * to extend the choice of license to its licensees as provided above.
037: * However, if you add GPL Version 2 code and therefore, elected the GPL
038: * Version 2 license, then the option applies only if the new code is
039: * made subject to such option by the copyright holder.
040: */
041:
042: package org.netbeans.modules.jmx.actions.dialog;
043:
044: import java.awt.event.ActionListener;
045: import java.awt.event.ItemEvent;
046: import java.awt.event.ItemListener;
047: import java.io.IOException;
048: import java.util.Map;
049: import java.util.ResourceBundle;
050: import javax.lang.model.element.ExecutableElement;
051: import javax.swing.JButton;
052: import javax.swing.event.DocumentEvent;
053: import javax.swing.event.DocumentListener;
054: import javax.swing.text.BadLocationException;
055: import javax.swing.text.Document;
056: import org.netbeans.api.java.source.JavaSource;
057: import org.netbeans.modules.jmx.WizardConstants;
058: import org.netbeans.modules.jmx.WizardHelpers;
059: import org.netbeans.modules.jmx.ClassButton;
060: import org.netbeans.modules.jmx.MBeanClassButton;
061: import org.openide.DialogDescriptor;
062: import org.openide.DialogDisplayer;
063: import org.openide.awt.Mnemonics;
064: import org.openide.filesystems.FileObject;
065: import org.openide.loaders.DataObject;
066: import org.openide.nodes.Node;
067: import org.openide.util.HelpCtx;
068: import org.openide.util.NbBundle;
069: import org.netbeans.api.project.SourceGroup;
070: import org.netbeans.api.project.Project;
071: import org.netbeans.modules.jmx.JavaModelHelper;
072:
073: /**
074: * Panel which is used to ask which MBean to instantiate and register.
075: * @author tl156378
076: */
077: public class RegisterMBeanPanel extends javax.swing.JPanel implements
078: ItemListener, DocumentListener {
079:
080: /** class to add registration of MBean */
081: private JavaSource agentClass;
082: private JavaSource mbeanClass = null;
083: private Project project = null;
084:
085: private ResourceBundle bundle;
086:
087: private JButton btnOK;
088: private boolean isMBean = false;
089: private boolean isExistingClass = false;
090: private boolean isValid = false;
091: private DataObject dob;
092: private Map<String, ExecutableElement> constructorsMap;
093:
094: /**
095: * Returns the current Java class.
096: * @return <CODE>JavaClass</CODE> current specified Java class
097: */
098: public JavaSource getAgentJavaSource() {
099: return agentClass;
100: }
101:
102: /**
103: * Returns the current user defined MBean class.
104: * @return <CODE>JavaClass</CODE> specified MBean class
105: */
106: public JavaSource getMBeanJavaSource() {
107: return mbeanClass;
108: }
109:
110: /**
111: * Returns if the current user defined MBean class is StandardMBean class.
112: * @return <CODE>boolean</CODE> true only if StandardMBean class is selected
113: */
114: public boolean standardMBeanSelected() {
115: return standardMBeanRadioButton.isSelected();
116: }
117:
118: /**
119: * Returns the current user defined MBean objectName.
120: * @return <CODE>String</CODE> specified ObjectName
121: */
122: public String getMBeanObjectName() {
123: return objectNameTextField.getText();
124: }
125:
126: /**
127: * Returns the current user defined class name.
128: * @return <CODE>String</CODE> specified class name
129: */
130: public String getClassName() {
131: if (standardMBeanRadioButton.isSelected())
132: return classNameTextField.getText();
133: else
134: return mbeanClassTextField.getText();
135: }
136:
137: /**
138: * Returns the current user defined class name.
139: * @return <CODE>String</CODE> specified interface name
140: */
141: public String getInterfaceName() {
142: if (standardMBeanRadioButton.isSelected()) {
143: String interfaceName = (String) interfaceComboBox
144: .getSelectedItem();
145: if (bundle.getString("LBL_GeneratedInterface").equals(
146: interfaceName)) // NOI18N
147: return null;
148: else
149: return interfaceName;
150: } else
151: return null;
152: }
153:
154: /**
155: * Returns the current user defined constructor signature.
156: * @return <CODE>String</CODE> signature of choosed constructor
157: */
158: public String getConstructor() {
159: String construct = (String) constructorComboBox
160: .getSelectedItem();
161: if (bundle.getString("LBL_StandardMBeanDefaultConstructor")
162: .equals(construct)
163: || bundle.getString("LBL_ConstructorNotGenerated")
164: .equals(construct)) // NOI18N
165: return null;
166: else
167: return construct;
168: }
169:
170: /**
171: * Returns the current user defined constructor signature.
172: * @return <CODE>String</CODE> signature of choosed constructor
173: */
174: public ExecutableElement getExecutableConstructor() {
175: String construct = (String) constructorComboBox
176: .getSelectedItem();
177: if (bundle.getString("LBL_StandardMBeanDefaultConstructor")
178: .equals(construct)
179: || bundle.getString("LBL_ConstructorNotGenerated")
180: .equals(construct)) // NOI18N
181: return null;
182: else
183: return constructorsMap.get(construct);
184: }
185:
186: /**
187: * Creates new form RegisterMBeanPanel.
188: * @param node node selected when the Register Mbean action was invoked
189: */
190: public RegisterMBeanPanel(Node node) {
191: bundle = NbBundle.getBundle(RegisterMBeanPanel.class);
192:
193: initComponents();
194:
195: dob = (DataObject) node.getCookie(DataObject.class);
196: FileObject fo = null;
197: if (dob != null)
198: fo = dob.getPrimaryFile();
199: project = WizardHelpers.getProject(fo);
200:
201: agentClass = JavaModelHelper.getSource(fo);
202:
203: // init tags
204: userMBeanRadioButton.setSelected(true);
205:
206: // init labels
207: chooseLabel.setText(bundle
208: .getString("LBL_RegistMbean_ChooseOptions")); // NOI18N
209: Mnemonics.setLocalizedText(userMBeanRadioButton, bundle
210: .getString("LBL_RegisterUserMBean")); // NOI18N
211: Mnemonics.setLocalizedText(standardMBeanRadioButton, bundle
212: .getString("LBL_RegisterStandardMBean")); // NOI18N
213: Mnemonics.setLocalizedText(mbeanClassLabel, bundle
214: .getString("LBL_MBean_Class")); // NOI18N
215: Mnemonics.setLocalizedText(classNameLabel, bundle
216: .getString("LBL_Class")); // NOI18N
217: Mnemonics.setLocalizedText(isMXBean, bundle
218: .getString("LBL_IsMXBean")); // NOI18N
219: Mnemonics.setLocalizedText(objectNameLabel, bundle
220: .getString("LBL_ObjectName")); // NOI18N
221: addedInfosLabel.setText(bundle
222: .getString("LBL_RegistMbean_AddedInfos")); // NOI18N
223: Mnemonics.setLocalizedText(constructorLabel, bundle
224: .getString("LBL_Constructor")); // NOI18N
225: Mnemonics.setLocalizedText(interfaceLabel, bundle
226: .getString("LBL_Interface")); // NOI18N
227:
228: //for accesibility
229: userMBeanRadioButton.getAccessibleContext().setAccessibleName(
230: bundle.getString("ACCESS_REGISTER_USER_MBEAN")); // NOI18N
231: userMBeanRadioButton
232: .getAccessibleContext()
233: .setAccessibleDescription(
234: bundle
235: .getString("ACCESS_REGISTER_USER_MBEAN_DESCRIPTION")); // NOI18N
236: mbeanClassTextField.getAccessibleContext().setAccessibleName(
237: bundle.getString("ACCESS_REGISTER_MBEAN_CLASS")); // NOI18N
238: mbeanClassTextField
239: .getAccessibleContext()
240: .setAccessibleDescription(
241: bundle
242: .getString("ACCESS_REGISTER_MBEAN_CLASS_DESCRIPTION")); // NOI18N
243: mbeanBrowseButton
244: .getAccessibleContext()
245: .setAccessibleName(
246: bundle
247: .getString("ACCESS_REGISTER_MBEAN_BROWSE_MBEANCLASS")); // NOI18N
248: mbeanBrowseButton
249: .getAccessibleContext()
250: .setAccessibleDescription(
251: bundle
252: .getString("ACCESS_REGISTER_MBEAN_BROWSE_MBEANCLASS_DESCRIPTION")); // NOI18N
253: objectNameTextField.getAccessibleContext().setAccessibleName(
254: bundle.getString("ACCESS_REGISTER_OBJECTNAME")); // NOI18N
255: objectNameTextField
256: .getAccessibleContext()
257: .setAccessibleDescription(
258: bundle
259: .getString("ACCESS_REGISTER_OBJECTNAME_DESCRIPTION")); // NOI18N
260: constructorComboBox.getAccessibleContext().setAccessibleName(
261: bundle.getString("ACCESS_REGISTER_CONSTRUCTOR")); // NOI18N
262: constructorComboBox
263: .getAccessibleContext()
264: .setAccessibleDescription(
265: bundle
266: .getString("ACCESS_REGISTER_CONSTRUCTOR_DESCRIPTION")); // NOI18N
267: standardMBeanRadioButton
268: .getAccessibleContext()
269: .setAccessibleName(
270: bundle
271: .getString("ACCESS_REGISTER_STANDARD_MBEAN")); // NOI18N
272: standardMBeanRadioButton
273: .getAccessibleContext()
274: .setAccessibleDescription(
275: bundle
276: .getString("ACCESS_REGISTER_STANDARD_MBEAN_DESCRIPTION")); // NOI18N
277: classNameTextField.getAccessibleContext().setAccessibleName(
278: bundle.getString("ACCESS_REGISTER_STDMBEAN_CLASSNAME")); // NOI18N
279: classNameTextField
280: .getAccessibleContext()
281: .setAccessibleDescription(
282: bundle
283: .getString("ACCESS_REGISTER_STDMBEAN_CLASSNAME_DESCRIPTION")); // NOI18N
284: browseButton
285: .getAccessibleContext()
286: .setAccessibleName(
287: bundle
288: .getString("ACCESS_REGISTER_STDMBEAN_BROWSE_CLASSNAME")); // NOI18N
289: browseButton
290: .getAccessibleContext()
291: .setAccessibleDescription(
292: bundle
293: .getString("ACCESS_REGISTER_STDMBEAN_BROWSE_CLASSNAME_DESCRIPTION")); // NOI18N
294: interfaceComboBox.getAccessibleContext().setAccessibleName(
295: bundle.getString("ACCESS_REGISTER_STDMBEAN_INTERFACE")); // NOI18N
296: interfaceComboBox
297: .getAccessibleContext()
298: .setAccessibleDescription(
299: bundle
300: .getString("ACCESS_REGISTER_STDMBEAN_INTERFACE_DESCRIPTION")); // NOI18N
301: isMXBean.getAccessibleContext().setAccessibleName(
302: bundle.getString("ACCESS_IS_MXBEAN")); // NOI18N
303: isMXBean.getAccessibleContext().setAccessibleDescription(
304: bundle.getString("ACCESS_IS_MXBEAN_DESCRIPTION")); // NOI18N
305:
306: getAccessibleContext().setAccessibleDescription(
307: bundle.getString("ACCESS_PANEL"));// NOI18N
308: }
309:
310: private boolean isAcceptable() {
311: return ((standardMBeanSelected() && isExistingClass && isValid) || (!standardMBeanSelected()
312: && isMBean && isValid));
313: }
314:
315: public boolean isMXBean() {
316: return isMXBean.isSelected();
317: }
318:
319: public DataObject getDataObject() {
320: return dob;
321: }
322:
323: /**
324: * Displays a configuration dialog and updates Register MBean options
325: * according to the user's settings.
326: */
327: public boolean configure() throws IOException {
328:
329: // create and display the dialog:
330: String title = bundle
331: .getString("LBL_RegisterMBeanAction.Title"); // NOI18N
332: btnOK = new JButton(bundle.getString("LBL_OK")); //NOI18N
333: btnOK.setEnabled(isAcceptable());
334: btnOK.getAccessibleContext().setAccessibleDescription(
335: bundle.getString("ACCESS_OK_DESCRIPTION")); // NOI18N
336:
337: //set listeners
338: mbeanClassTextField.getDocument().addDocumentListener(this );
339: classNameTextField.getDocument().addDocumentListener(
340: new DocumentListener() {
341: public void insertUpdate(DocumentEvent e) {
342: Document doc = e.getDocument();
343: try {
344: String newClassName = doc.getText(0, doc
345: .getLength());
346: updateState(null);
347: } catch (BadLocationException excep) {
348: }
349: }
350:
351: public void removeUpdate(DocumentEvent e) {
352: Document doc = e.getDocument();
353: try {
354: String newClassName = doc.getText(0, doc
355: .getLength());
356: updateState(null);
357: } catch (BadLocationException excep) {
358: }
359: }
360:
361: public void changedUpdate(DocumentEvent e) {
362: Document doc = e.getDocument();
363: try {
364: String newClassName = doc.getText(0, doc
365: .getLength());
366: updateState(null);
367: } catch (BadLocationException excep) {
368: }
369: }
370: });
371:
372: //init state
373: updateComponentsState();
374: updateState((String) mbeanClassTextField.getText());
375: SourceGroup[] srcGroups = WizardHelpers
376: .getSourceGroups(project);
377: ClassButton classBut = new ClassButton(browseButton,
378: classNameTextField, srcGroups);
379: MBeanClassButton mbeanClassBut = new MBeanClassButton(
380: mbeanBrowseButton, mbeanClassTextField, srcGroups);
381:
382: Object returned = DialogDisplayer.getDefault().notify(
383: new DialogDescriptor(this , title,
384: true, //modal
385: new Object[] { btnOK,
386: DialogDescriptor.CANCEL_OPTION },
387: btnOK, //initial value
388: DialogDescriptor.DEFAULT_ALIGN, new HelpCtx(
389: "jmx_agent_instantiate"), // NOI18N
390: (ActionListener) null));
391:
392: if (returned == btnOK) {
393: return true;
394: }
395: return false;
396: }
397:
398: private void updateState(String currentMBeanClass) {
399: try {
400: updateComponentsState();
401: if (standardMBeanSelected()) {
402: String className = classNameTextField.getText();
403: updateIntfAndConst(className);
404: } else
405: updateConstructors(currentMBeanClass);
406: } catch (IOException ex) {
407: //ex.printStackTrace();
408: //System.out.println(ex);
409: }
410: }
411:
412: private void updateComponentsState() {
413: boolean standardMBean = standardMBeanSelected();
414: // update state of user MBean use case
415: mbeanClassLabel.setEnabled(!standardMBean);
416: mbeanClassTextField.setEnabled(!standardMBean);
417: mbeanBrowseButton.setEnabled(!standardMBean);
418: // update state of StandardMBean use case
419: classNameLabel.setEnabled(standardMBean);
420: classNameTextField.setEnabled(standardMBean);
421: isMXBean.setEnabled(standardMBean);
422: browseButton.setEnabled(standardMBean);
423: interfaceLabel.setEnabled(standardMBean);
424: interfaceComboBox.setEnabled(standardMBean);
425: }
426:
427: private void updateIntfAndConst(String className)
428: throws IOException {
429: isValid = true;
430: stateLabel.setText(""); // NOI18N
431:
432: JavaSource clazz = JavaModelHelper.findClassInProject(project,
433: className);
434: //clear combobox list of interfaces and constructors
435: interfaceComboBox.removeAllItems();
436: constructorComboBox.removeAllItems();
437: isExistingClass = (clazz != null);
438: objectNameLabel.setEnabled(isExistingClass);
439: objectNameTextField.setEnabled(isExistingClass);
440: interfaceLabel.setEnabled(isExistingClass);
441: interfaceComboBox.setEnabled(isExistingClass);
442: constructorLabel.setEnabled(isExistingClass);
443: constructorComboBox.setEnabled(isExistingClass);
444: if (isExistingClass) {
445: objectNameTextField.setText(WizardHelpers
446: .reversePackageName(WizardHelpers
447: .getPackageName(className))
448: + ":type=" + WizardHelpers.getClassName(className)); // NOI18N
449:
450: boolean isMBean = false;
451:
452: isMBean = JavaModelHelper.testMBeanCompliance(clazz);
453:
454: if (isMBean)
455: interfaceComboBox.addItem(bundle
456: .getString("LBL_GeneratedInterface")); // NOI18N
457: String[] interfaces = JavaModelHelper
458: .getInterfaceNames(clazz);
459: boolean hasIntf = (interfaces.length > 0);
460: if (hasIntf) {
461: for (int i = 0; i < interfaces.length; i++) {
462: String intf = interfaces[i];
463: int indexOfType = intf.lastIndexOf('<');
464: if (indexOfType != -1)
465: intf = intf.substring(0, indexOfType);
466: interfaceComboBox.addItem(intf);
467: }
468: }
469:
470: //select first item
471: if (isMBean)
472: interfaceComboBox.setSelectedItem(bundle
473: .getString("LBL_GeneratedInterface")); // NOI18N
474: else if (hasIntf)
475: interfaceComboBox.setSelectedIndex(0);
476: else {
477: isValid = false;
478: interfaceComboBox.setEnabled(false);
479: constructorComboBox.setEnabled(false);
480: stateLabel.setText(bundle
481: .getString("LBL_ClassWithNoInterface")); // NOI18N
482: }
483:
484: //discovery of class constructors
485: // WARNING THE Constructor is the JMI one, not from Reflect
486: constructorsMap = JavaModelHelper.getConstructors(clazz);
487:
488: Object[] constructors = getConstructors(constructorsMap);
489:
490: if (constructors.length > 0) {
491: constructorComboBox
492: .addItem(bundle
493: .getString("LBL_StandardMBeanDefaultConstructor")); // NOI18N
494: for (int i = 0; i < constructors.length; i++) {
495: constructorComboBox.addItem(constructors[i]);
496: }
497: //select first row
498: constructorComboBox
499: .setSelectedItem(bundle
500: .getString("LBL_StandardMBeanDefaultConstructor")); // NOI18N
501: } else {
502: constructorComboBox
503: .addItem(bundle
504: .getString("LBL_StandardMBeanDefaultConstructor")); // NOI18N
505: if (JavaModelHelper.hasOnlyDefaultConstruct(clazz))
506: constructorComboBox.addItem(JavaModelHelper
507: .getSimpleName(clazz)
508: + "()"); // NOI18N
509: //select first row
510: constructorComboBox
511: .setSelectedItem(bundle
512: .getString("LBL_StandardMBeanDefaultConstructor")); // NOI18N
513: }
514: } else {
515: if (className.equals("")) // NOI18N
516: stateLabel.setText(""); // NOI18N
517: else
518: stateLabel.setText(bundle
519: .getString("LBL_ClassNotExist")); // NOI18N
520: }
521: btnOK.setEnabled(isAcceptable());
522: }
523:
524: private Object[] getConstructors(Map<String, ExecutableElement> m) {
525: return m.keySet().toArray();
526: }
527:
528: private void updateConstructors(String currentMBeanClass)
529: throws IOException {
530: //clear the comboBox list of MBean constructors
531: constructorComboBox.removeAllItems();
532: isValid = true;
533: //clear information message
534: stateLabel.setText(""); // NOI18N
535:
536: mbeanClass = JavaModelHelper.findClassInProject(project,
537: currentMBeanClass);
538: isMBean = false;
539: if (mbeanClass != null) {
540: isMBean = JavaModelHelper.testMBeanCompliance(mbeanClass);
541: }
542:
543: objectNameLabel.setEnabled(isMBean);
544: objectNameTextField.setEnabled(isMBean);
545: constructorLabel.setEnabled(isMBean);
546: constructorComboBox.setEnabled(isMBean);
547: if (isMBean) {
548: String className = JavaModelHelper
549: .getSimpleName(mbeanClass);
550: String packageName = JavaModelHelper.getPackage(mbeanClass);
551: objectNameTextField.setText(packageName + ":type="
552: + className);// NOI18N
553: // NOI18N
554: constructorsMap = JavaModelHelper
555: .getConstructors(mbeanClass);
556: Object[] constructors = getConstructors(constructorsMap);
557: if (constructors.length > 0) {
558: constructorComboBox.setEnabled(true);
559: for (int i = 0; i < constructors.length; i++) {
560: constructorComboBox.addItem(constructors[i]);
561: }
562: constructorComboBox.addItem(bundle
563: .getString("LBL_ConstructorNotGenerated")); // NOI18N
564: //select first row
565: constructorComboBox.setSelectedItem(0); // NOI18N
566: } else if (JavaModelHelper
567: .hasOnlyDefaultConstruct(mbeanClass)) {
568: constructorComboBox.addItem(className + "()"); // NOI18N
569: constructorComboBox.setSelectedItem(0); // NOI18N
570: } else {
571: isValid = false;
572: constructorComboBox.setEnabled(false);
573: stateLabel.setText(bundle
574: .getString("LBL_ClassWithNoConstructor")); // NOI18N
575: }
576: }
577: if ((!isMBean) && (!currentMBeanClass.equals(""))) { // NOI18N
578: isValid = false;
579: stateLabel.setText(bundle.getString("LBL_NotMBeanClass")); // NOI18N
580: }
581: btnOK.setEnabled(isAcceptable());
582: }
583:
584: /** This method is called from within the constructor to
585: * initialize the form.
586: * WARNING: Do NOT modify this code. The content of this method is
587: * always regenerated by the Form Editor.
588: */
589: // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
590: private void initComponents() {
591: java.awt.GridBagConstraints gridBagConstraints;
592:
593: mbeanGroup = new javax.swing.ButtonGroup();
594: northPanel = new javax.swing.JPanel();
595: objectNameLabel = new javax.swing.JLabel();
596: objectNameTextField = new javax.swing.JTextField();
597: stateLabel = new javax.swing.JLabel();
598: classNameTextField = new javax.swing.JTextField();
599: classNameLabel = new javax.swing.JLabel();
600: mbeanClassLabel = new javax.swing.JLabel();
601: userMBeanRadioButton = new javax.swing.JRadioButton();
602: standardMBeanRadioButton = new javax.swing.JRadioButton();
603: interfaceLabel = new javax.swing.JLabel();
604: interfaceComboBox = new javax.swing.JComboBox();
605: constructorLabel = new javax.swing.JLabel();
606: constructorComboBox = new javax.swing.JComboBox();
607: browseButton = new javax.swing.JButton();
608: mbeanClassTextField = new javax.swing.JTextField();
609: mbeanBrowseButton = new javax.swing.JButton();
610: chooseLabel = new javax.swing.JLabel();
611: addedInfosLabel = new javax.swing.JLabel();
612: isMXBean = new javax.swing.JCheckBox();
613:
614: setLayout(new java.awt.BorderLayout());
615:
616: northPanel.setLayout(new java.awt.GridBagLayout());
617:
618: objectNameLabel.setLabelFor(objectNameTextField);
619: gridBagConstraints = new java.awt.GridBagConstraints();
620: gridBagConstraints.gridx = 0;
621: gridBagConstraints.gridy = 8;
622: gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
623: gridBagConstraints.insets = new java.awt.Insets(5, 12, 0, 11);
624: northPanel.add(objectNameLabel, gridBagConstraints);
625:
626: objectNameTextField.setName("objectNameTextField"); // NOI18N
627: gridBagConstraints = new java.awt.GridBagConstraints();
628: gridBagConstraints.gridx = 1;
629: gridBagConstraints.gridy = 8;
630: gridBagConstraints.gridwidth = 2;
631: gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
632: gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
633: gridBagConstraints.weightx = 1.0;
634: gridBagConstraints.insets = new java.awt.Insets(5, 0, 0, 0);
635: northPanel.add(objectNameTextField, gridBagConstraints);
636:
637: stateLabel.setForeground(new java.awt.Color(0, 0, 128));
638: stateLabel.setMinimumSize(new java.awt.Dimension(0, 20));
639: stateLabel.setName("stateLabel"); // NOI18N
640: stateLabel.setPreferredSize(new java.awt.Dimension(150, 20));
641: gridBagConstraints = new java.awt.GridBagConstraints();
642: gridBagConstraints.gridx = 2;
643: gridBagConstraints.gridy = 10;
644: gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
645: gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
646: gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
647: gridBagConstraints.weightx = 1.0;
648: gridBagConstraints.insets = new java.awt.Insets(11, 12, 0, 12);
649: northPanel.add(stateLabel, gridBagConstraints);
650:
651: classNameTextField.setName("classNameTextField"); // NOI18N
652: gridBagConstraints = new java.awt.GridBagConstraints();
653: gridBagConstraints.gridx = 2;
654: gridBagConstraints.gridy = 4;
655: gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
656: gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
657: gridBagConstraints.weightx = 1.0;
658: gridBagConstraints.insets = new java.awt.Insets(5, 0, 0, 0);
659: northPanel.add(classNameTextField, gridBagConstraints);
660:
661: classNameLabel.setLabelFor(classNameTextField);
662: gridBagConstraints = new java.awt.GridBagConstraints();
663: gridBagConstraints.gridx = 0;
664: gridBagConstraints.gridy = 4;
665: gridBagConstraints.gridwidth = 2;
666: gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
667: gridBagConstraints.insets = new java.awt.Insets(5, 34, 0, 11);
668: northPanel.add(classNameLabel, gridBagConstraints);
669:
670: mbeanClassLabel.setLabelFor(mbeanClassTextField);
671: gridBagConstraints = new java.awt.GridBagConstraints();
672: gridBagConstraints.gridx = 0;
673: gridBagConstraints.gridy = 2;
674: gridBagConstraints.gridwidth = 2;
675: gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
676: gridBagConstraints.insets = new java.awt.Insets(5, 34, 0, 11);
677: northPanel.add(mbeanClassLabel, gridBagConstraints);
678:
679: mbeanGroup.add(userMBeanRadioButton);
680: userMBeanRadioButton.setName("userMBeanRadioButton"); // NOI18N
681: userMBeanRadioButton
682: .addActionListener(new java.awt.event.ActionListener() {
683: public void actionPerformed(
684: java.awt.event.ActionEvent evt) {
685: userMBeanRadioButtonActionPerformed(evt);
686: }
687: });
688: gridBagConstraints = new java.awt.GridBagConstraints();
689: gridBagConstraints.gridx = 0;
690: gridBagConstraints.gridy = 1;
691: gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
692: gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
693: gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
694: gridBagConstraints.insets = new java.awt.Insets(5, 12, 0, 12);
695: northPanel.add(userMBeanRadioButton, gridBagConstraints);
696:
697: mbeanGroup.add(standardMBeanRadioButton);
698: standardMBeanRadioButton.setName("standardMBeanRadioButton"); // NOI18N
699: standardMBeanRadioButton
700: .addActionListener(new java.awt.event.ActionListener() {
701: public void actionPerformed(
702: java.awt.event.ActionEvent evt) {
703: stabdardMBeanRadioButtonActionPerformed(evt);
704: }
705: });
706: gridBagConstraints = new java.awt.GridBagConstraints();
707: gridBagConstraints.gridx = 0;
708: gridBagConstraints.gridy = 3;
709: gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
710: gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
711: gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
712: gridBagConstraints.insets = new java.awt.Insets(11, 12, 0, 12);
713: northPanel.add(standardMBeanRadioButton, gridBagConstraints);
714:
715: interfaceLabel.setLabelFor(interfaceComboBox);
716: gridBagConstraints = new java.awt.GridBagConstraints();
717: gridBagConstraints.gridx = 0;
718: gridBagConstraints.gridy = 5;
719: gridBagConstraints.gridwidth = 2;
720: gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
721: gridBagConstraints.insets = new java.awt.Insets(5, 34, 0, 11);
722: northPanel.add(interfaceLabel, gridBagConstraints);
723:
724: interfaceComboBox
725: .setMinimumSize(new java.awt.Dimension(270, 25));
726: interfaceComboBox.setName("interfaceComboBox"); // NOI18N
727: interfaceComboBox.setPreferredSize(new java.awt.Dimension(270,
728: 25));
729: gridBagConstraints = new java.awt.GridBagConstraints();
730: gridBagConstraints.gridx = 2;
731: gridBagConstraints.gridy = 5;
732: gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
733: gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
734: gridBagConstraints.weightx = 1.0;
735: gridBagConstraints.insets = new java.awt.Insets(5, 0, 0, 0);
736: northPanel.add(interfaceComboBox, gridBagConstraints);
737:
738: constructorLabel.setLabelFor(constructorComboBox);
739: gridBagConstraints = new java.awt.GridBagConstraints();
740: gridBagConstraints.gridx = 0;
741: gridBagConstraints.gridy = 9;
742: gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
743: gridBagConstraints.insets = new java.awt.Insets(5, 12, 0, 11);
744: northPanel.add(constructorLabel, gridBagConstraints);
745:
746: constructorComboBox.setName("constructorComboBox"); // NOI18N
747: gridBagConstraints = new java.awt.GridBagConstraints();
748: gridBagConstraints.gridx = 1;
749: gridBagConstraints.gridy = 9;
750: gridBagConstraints.gridwidth = 2;
751: gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
752: gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
753: gridBagConstraints.weightx = 1.0;
754: gridBagConstraints.insets = new java.awt.Insets(5, 0, 0, 0);
755: northPanel.add(constructorComboBox, gridBagConstraints);
756:
757: browseButton.setText("jButton1");
758: browseButton.setName("browseButton"); // NOI18N
759: gridBagConstraints = new java.awt.GridBagConstraints();
760: gridBagConstraints.gridx = 3;
761: gridBagConstraints.gridy = 4;
762: gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
763: gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
764: gridBagConstraints.insets = new java.awt.Insets(5, 5, 0, 12);
765: northPanel.add(browseButton, gridBagConstraints);
766:
767: mbeanClassTextField.setName("mbeanClassTextField"); // NOI18N
768: gridBagConstraints = new java.awt.GridBagConstraints();
769: gridBagConstraints.gridx = 2;
770: gridBagConstraints.gridy = 2;
771: gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
772: gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
773: gridBagConstraints.weightx = 1.0;
774: gridBagConstraints.insets = new java.awt.Insets(5, 0, 0, 0);
775: northPanel.add(mbeanClassTextField, gridBagConstraints);
776:
777: mbeanBrowseButton.setText("jButton1");
778: mbeanBrowseButton.setName("mbeanBrowseButton"); // NOI18N
779: mbeanBrowseButton
780: .addActionListener(new java.awt.event.ActionListener() {
781: public void actionPerformed(
782: java.awt.event.ActionEvent evt) {
783: mbeanBrowseButtonActionPerformed(evt);
784: }
785: });
786: gridBagConstraints = new java.awt.GridBagConstraints();
787: gridBagConstraints.gridx = 3;
788: gridBagConstraints.gridy = 2;
789: gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
790: gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
791: gridBagConstraints.insets = new java.awt.Insets(5, 5, 0, 12);
792: northPanel.add(mbeanBrowseButton, gridBagConstraints);
793:
794: chooseLabel.setMinimumSize(new java.awt.Dimension(0, 20));
795: chooseLabel.setName("stateLabel"); // NOI18N
796: chooseLabel.setPreferredSize(new java.awt.Dimension(150, 20));
797: gridBagConstraints = new java.awt.GridBagConstraints();
798: gridBagConstraints.gridx = 0;
799: gridBagConstraints.gridy = 0;
800: gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
801: gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
802: gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
803: gridBagConstraints.weightx = 1.0;
804: gridBagConstraints.insets = new java.awt.Insets(12, 12, 0, 12);
805: northPanel.add(chooseLabel, gridBagConstraints);
806:
807: addedInfosLabel.setMinimumSize(new java.awt.Dimension(0, 20));
808: addedInfosLabel.setName("stateLabel"); // NOI18N
809: addedInfosLabel
810: .setPreferredSize(new java.awt.Dimension(150, 20));
811: gridBagConstraints = new java.awt.GridBagConstraints();
812: gridBagConstraints.gridx = 0;
813: gridBagConstraints.gridy = 7;
814: gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
815: gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
816: gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
817: gridBagConstraints.weightx = 1.0;
818: gridBagConstraints.insets = new java.awt.Insets(24, 12, 0, 12);
819: northPanel.add(addedInfosLabel, gridBagConstraints);
820:
821: isMXBean.setText("jCheckBox1");
822: isMXBean.setBorder(javax.swing.BorderFactory.createEmptyBorder(
823: 0, 0, 0, 0));
824: isMXBean.setMargin(new java.awt.Insets(0, 0, 0, 0));
825: isMXBean.setName("isMXBeanCheckBox"); // NOI18N
826: gridBagConstraints = new java.awt.GridBagConstraints();
827: gridBagConstraints.gridx = 0;
828: gridBagConstraints.gridy = 6;
829: gridBagConstraints.gridwidth = 2;
830: gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
831: gridBagConstraints.insets = new java.awt.Insets(5, 34, 0, 11);
832: northPanel.add(isMXBean, gridBagConstraints);
833:
834: add(northPanel, java.awt.BorderLayout.NORTH);
835: }// </editor-fold>//GEN-END:initComponents
836:
837: private void mbeanBrowseButtonActionPerformed(
838: java.awt.event.ActionEvent evt) {//GEN-FIRST:event_mbeanBrowseButtonActionPerformed
839: // TODO add your handling code here:
840: }//GEN-LAST:event_mbeanBrowseButtonActionPerformed
841:
842: private void stabdardMBeanRadioButtonActionPerformed(
843: java.awt.event.ActionEvent evt) {//GEN-FIRST:event_stabdardMBeanRadioButtonActionPerformed
844: updateState(null);
845: }//GEN-LAST:event_stabdardMBeanRadioButtonActionPerformed
846:
847: private void userMBeanRadioButtonActionPerformed(
848: java.awt.event.ActionEvent evt) {//GEN-FIRST:event_userMBeanRadioButtonActionPerformed
849: String newMBeanClass = mbeanClassTextField.getText();
850: updateState(newMBeanClass);
851: }//GEN-LAST:event_userMBeanRadioButtonActionPerformed
852:
853: // Variables declaration - do not modify//GEN-BEGIN:variables
854: private javax.swing.JLabel addedInfosLabel;
855: private javax.swing.JButton browseButton;
856: private javax.swing.JLabel chooseLabel;
857: private javax.swing.JLabel classNameLabel;
858: private javax.swing.JTextField classNameTextField;
859: private javax.swing.JComboBox constructorComboBox;
860: private javax.swing.JLabel constructorLabel;
861: private javax.swing.JComboBox interfaceComboBox;
862: private javax.swing.JLabel interfaceLabel;
863: private javax.swing.JCheckBox isMXBean;
864: private javax.swing.JButton mbeanBrowseButton;
865: private javax.swing.JLabel mbeanClassLabel;
866: private javax.swing.JTextField mbeanClassTextField;
867: private javax.swing.ButtonGroup mbeanGroup;
868: private javax.swing.JPanel northPanel;
869: private javax.swing.JLabel objectNameLabel;
870: private javax.swing.JTextField objectNameTextField;
871: private javax.swing.JRadioButton standardMBeanRadioButton;
872: private javax.swing.JLabel stateLabel;
873: private javax.swing.JRadioButton userMBeanRadioButton;
874:
875: // End of variables declaration//GEN-END:variables
876: public void itemStateChanged(ItemEvent e) {
877: String newMBeanClass = (String) mbeanClassTextField.getText();
878: updateState(newMBeanClass);
879: }
880:
881: public void insertUpdate(DocumentEvent e) {
882: Document doc = e.getDocument();
883: try {
884: String newMBeanClass = doc.getText(0, doc.getLength());
885: updateState(newMBeanClass);
886: } catch (BadLocationException excep) {
887: }
888: }
889:
890: public void removeUpdate(DocumentEvent e) {
891: Document doc = e.getDocument();
892: try {
893: String newMBeanClass = doc.getText(0, doc.getLength());
894: updateState(newMBeanClass);
895: } catch (BadLocationException excep) {
896: }
897: }
898:
899: public void changedUpdate(DocumentEvent e) {
900: Document doc = e.getDocument();
901: try {
902: String newMBeanClass = doc.getText(0, doc.getLength());
903: updateState(newMBeanClass);
904: } catch (BadLocationException excep) {
905: }
906: }
907: }
|