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 1997-2006 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.form;
043:
044: import java.awt.Dialog;
045: import java.awt.Insets;
046: import java.beans.MethodDescriptor;
047: import java.beans.PropertyChangeEvent;
048: import java.beans.PropertyChangeListener;
049: import java.beans.PropertyDescriptor;
050: import java.util.ArrayList;
051: import java.util.Collections;
052: import java.util.List;
053: import javax.swing.JButton;
054: import org.netbeans.modules.form.ParametersPicker.ComponentComparator;
055: import org.openide.DialogDescriptor;
056: import org.openide.DialogDisplayer;
057:
058: /**
059: * Custom editor for RADConnectionPropertyEditor. Allows specifying a property
060: * as another bean, property or method call. (Extracted from ParametersPicker.)
061: *
062: * @author Tomas Pavek
063: */
064: class ConnectionCustomEditor extends javax.swing.JPanel {
065:
066: private RADConnectionPropertyEditor propertyEditor;
067: private FormModel formModel;
068: private Class valueType;
069:
070: private List<RADComponent> beanList;
071: private RADComponent selectedComponent;
072: private PropertyDescriptor selectedProperty;
073: private MethodDescriptor selectedMethod;
074:
075: private boolean initialized = false;
076:
077: public ConnectionCustomEditor(
078: RADConnectionPropertyEditor propertyEditor,
079: FormModel formModel, Class valueType) {
080: this .propertyEditor = propertyEditor;
081: this .formModel = formModel;
082: this .valueType = valueType;
083:
084: initComponents();
085:
086: setupBrowseButton(propertyDetailsButton);
087: setupBrowseButton(methodDetailsButton);
088:
089: beanList = new ArrayList<RADComponent>();
090: for (RADComponent radComp : formModel.getAllComponents()) {
091: if (valueType.isAssignableFrom(radComp.getBeanClass()))
092: beanList.add(radComp);
093: }
094: if (beanList.size() > 0) {
095: Collections.sort(beanList, new ComponentComparator());
096:
097: beanCombo.addItem(FormUtils
098: .getBundleString("CTL_CW_SelectBean")); // NOI18N
099: for (RADComponent metacomp : beanList) {
100: if (metacomp == formModel.getTopRADComponent())
101: beanCombo
102: .addItem(FormUtils
103: .getBundleString("CTL_FormTopContainerName")); // NOI18N
104: else
105: beanCombo.addItem(metacomp.getName());
106: }
107: } else
108: beanRadio.setEnabled(false); // no beans on the form are of the required type
109: initialized = true;
110: }
111:
112: private static void setupBrowseButton(JButton button) {
113: Insets margin = button.getMargin();
114: if (margin.left > 4) {
115: margin.left = 4;
116: margin.right = 4;
117: button.setMargin(margin);
118: }
119: }
120:
121: void setValue(
122: RADConnectionPropertyEditor.RADConnectionDesignValue value) { //, Object realValue
123: // if (value == null) {
124: // previousValue = realValue != null;
125: // return; // can happen if starting without previously set value
126: // } else {
127: // previousValue = true;
128: // }
129:
130: if (value == null) {
131: updateControls();
132: return;
133: }
134:
135: switch (value.type) {
136: case RADConnectionPropertyEditor.RADConnectionDesignValue.TYPE_BEAN:
137: beanRadio.setSelected(true);
138: selectedComponent = value.getRADComponent();
139: int index = beanList.indexOf(selectedComponent);
140: if (index > -1)
141: beanCombo.setSelectedIndex(index + 1);
142: break;
143: case RADConnectionPropertyEditor.RADConnectionDesignValue.TYPE_PROPERTY:
144: propertyRadio.setSelected(true);
145: selectedComponent = value.getRADComponent();
146: selectedProperty = value.getProperty();
147: if (selectedComponent.getCodeExpression() == null) {
148: propertyField.setText(FormUtils
149: .getBundleString("CTL_CONNECTION_INVALID")); // NOI18N
150: } else if (selectedComponent == formModel
151: .getTopRADComponent())
152: propertyField.setText(selectedProperty.getName());
153: else
154: propertyField.setText(selectedComponent.getName() + "."
155: + selectedProperty.getName()); // NOI18N
156: break;
157: case RADConnectionPropertyEditor.RADConnectionDesignValue.TYPE_METHOD:
158: methodRadio.setSelected(true);
159: selectedComponent = value.getRADComponent();
160: selectedMethod = value.getMethod();
161: if (selectedComponent.getCodeExpression() == null) {
162: methodField.setText(FormUtils
163: .getBundleString("CTL_CONNECTION_INVALID")); // NOI18N
164: } else if (selectedComponent == formModel
165: .getTopRADComponent())
166: methodField.setText(selectedMethod.getName());
167: else
168: methodField.setText(selectedComponent.getName() + "."
169: + selectedMethod.getName()); // NOI18N
170: break;
171: }
172:
173: // update enabled state
174: updateControls();
175: }
176:
177: private void updateControls() {
178: beanCombo.setEnabled(beanRadio.isSelected());
179:
180: propertyField.setEnabled(propertyRadio.isSelected());
181: propertyDetailsButton.setEnabled(propertyRadio.isSelected());
182: if (!propertyRadio.isSelected())
183: propertyField.setText(FormUtils
184: .getBundleString("CTL_CW_NoProperty")); // NOI18N
185:
186: methodField.setEnabled(methodRadio.isSelected());
187: methodDetailsButton.setEnabled(methodRadio.isSelected());
188: if (!methodRadio.isSelected())
189: methodField.setText(FormUtils
190: .getBundleString("CTL_CW_NoMethod")); // NOI18N
191: }
192:
193: /** This method is called from within the constructor to
194: * initialize the form.
195: * WARNING: Do NOT modify this code. The content of this method is
196: * always regenerated by the Form Editor.
197: */
198: // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
199: private void initComponents() {
200:
201: buttonGroup1 = new javax.swing.ButtonGroup();
202: jLabel1 = new javax.swing.JLabel();
203: beanRadio = new javax.swing.JRadioButton();
204: propertyRadio = new javax.swing.JRadioButton();
205: methodRadio = new javax.swing.JRadioButton();
206: beanCombo = new javax.swing.JComboBox();
207: propertyField = new javax.swing.JTextField();
208: methodField = new javax.swing.JTextField();
209: propertyDetailsButton = new javax.swing.JButton();
210: methodDetailsButton = new javax.swing.JButton();
211:
212: FormListener formListener = new FormListener();
213:
214: org.openide.awt.Mnemonics.setLocalizedText(jLabel1,
215: org.openide.util.NbBundle.getMessage(
216: ConnectionCustomEditor.class,
217: "ConnectionCustomEditor.jLabel1.text")); // NOI18N
218:
219: buttonGroup1.add(beanRadio);
220: org.openide.awt.Mnemonics.setLocalizedText(beanRadio,
221: org.openide.util.NbBundle.getMessage(
222: ConnectionCustomEditor.class,
223: "ConnectionCustomEditor.beanRadio.text")); // NOI18N
224: beanRadio.setBorder(javax.swing.BorderFactory
225: .createEmptyBorder(0, 0, 0, 0));
226: beanRadio.setMargin(new java.awt.Insets(0, 0, 0, 0));
227: beanRadio.addActionListener(formListener);
228:
229: buttonGroup1.add(propertyRadio);
230: org.openide.awt.Mnemonics.setLocalizedText(propertyRadio,
231: org.openide.util.NbBundle.getMessage(
232: ConnectionCustomEditor.class,
233: "ConnectionCustomEditor.propertyRadio.text")); // NOI18N
234: propertyRadio.setBorder(javax.swing.BorderFactory
235: .createEmptyBorder(0, 0, 0, 0));
236: propertyRadio.setMargin(new java.awt.Insets(0, 0, 0, 0));
237: propertyRadio.addActionListener(formListener);
238:
239: buttonGroup1.add(methodRadio);
240: org.openide.awt.Mnemonics.setLocalizedText(methodRadio,
241: org.openide.util.NbBundle.getMessage(
242: ConnectionCustomEditor.class,
243: "ConnectionCustomEditor.methodRadio.text")); // NOI18N
244: methodRadio.setBorder(javax.swing.BorderFactory
245: .createEmptyBorder(0, 0, 0, 0));
246: methodRadio.setMargin(new java.awt.Insets(0, 0, 0, 0));
247: methodRadio.addActionListener(formListener);
248:
249: beanCombo.addActionListener(formListener);
250:
251: propertyField.setEditable(false);
252: propertyField.setText(org.openide.util.NbBundle.getMessage(
253: ConnectionCustomEditor.class, "CTL_CW_NoProperty")); // NOI18N
254:
255: methodField.setEditable(false);
256: methodField.setText(org.openide.util.NbBundle.getMessage(
257: ConnectionCustomEditor.class, "CTL_CW_NoMethod")); // NOI18N
258:
259: org.openide.awt.Mnemonics
260: .setLocalizedText(
261: propertyDetailsButton,
262: org.openide.util.NbBundle
263: .getMessage(
264: ConnectionCustomEditor.class,
265: "ConnectionCustomEditor.propertyDetailsButton.text")); // NOI18N
266: propertyDetailsButton.addActionListener(formListener);
267:
268: org.openide.awt.Mnemonics
269: .setLocalizedText(
270: methodDetailsButton,
271: org.openide.util.NbBundle
272: .getMessage(
273: ConnectionCustomEditor.class,
274: "ConnectionCustomEditor.methodDetailsButton.text")); // NOI18N
275: methodDetailsButton.addActionListener(formListener);
276:
277: org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(
278: this );
279: this .setLayout(layout);
280: layout
281: .setHorizontalGroup(layout
282: .createParallelGroup(
283: org.jdesktop.layout.GroupLayout.LEADING)
284: .add(
285: layout
286: .createSequentialGroup()
287: .addContainerGap()
288: .add(
289: layout
290: .createParallelGroup(
291: org.jdesktop.layout.GroupLayout.LEADING)
292: .add(
293: layout
294: .createSequentialGroup()
295: .add(
296: layout
297: .createParallelGroup(
298: org.jdesktop.layout.GroupLayout.LEADING)
299: .add(
300: beanRadio)
301: .add(
302: propertyRadio)
303: .add(
304: methodRadio))
305: .addPreferredGap(
306: org.jdesktop.layout.LayoutStyle.RELATED)
307: .add(
308: layout
309: .createParallelGroup(
310: org.jdesktop.layout.GroupLayout.LEADING)
311: .add(
312: beanCombo,
313: 0,
314: 270,
315: Short.MAX_VALUE)
316: .add(
317: org.jdesktop.layout.GroupLayout.TRAILING,
318: layout
319: .createSequentialGroup()
320: .add(
321: propertyField,
322: org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,
323: 217,
324: Short.MAX_VALUE)
325: .addPreferredGap(
326: org.jdesktop.layout.LayoutStyle.RELATED)
327: .add(
328: propertyDetailsButton))
329: .add(
330: layout
331: .createSequentialGroup()
332: .add(
333: methodField,
334: org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,
335: 217,
336: Short.MAX_VALUE)
337: .addPreferredGap(
338: org.jdesktop.layout.LayoutStyle.RELATED)
339: .add(
340: methodDetailsButton))))
341: .add(jLabel1))
342: .addContainerGap()));
343: layout
344: .setVerticalGroup(layout
345: .createParallelGroup(
346: org.jdesktop.layout.GroupLayout.LEADING)
347: .add(
348: layout
349: .createSequentialGroup()
350: .addContainerGap()
351: .add(jLabel1)
352: .addPreferredGap(
353: org.jdesktop.layout.LayoutStyle.RELATED)
354: .add(
355: layout
356: .createParallelGroup(
357: org.jdesktop.layout.GroupLayout.BASELINE)
358: .add(beanRadio)
359: .add(
360: beanCombo,
361: org.jdesktop.layout.GroupLayout.PREFERRED_SIZE,
362: org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,
363: org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
364: .addPreferredGap(
365: org.jdesktop.layout.LayoutStyle.RELATED)
366: .add(
367: layout
368: .createParallelGroup(
369: org.jdesktop.layout.GroupLayout.BASELINE)
370: .add(
371: propertyRadio)
372: .add(
373: propertyDetailsButton)
374: .add(
375: propertyField,
376: org.jdesktop.layout.GroupLayout.PREFERRED_SIZE,
377: org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,
378: org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
379: .addPreferredGap(
380: org.jdesktop.layout.LayoutStyle.RELATED)
381: .add(
382: layout
383: .createParallelGroup(
384: org.jdesktop.layout.GroupLayout.BASELINE)
385: .add(
386: methodRadio)
387: .add(
388: methodField,
389: org.jdesktop.layout.GroupLayout.PREFERRED_SIZE,
390: org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,
391: org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
392: .add(
393: methodDetailsButton))
394: .addContainerGap(
395: org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,
396: Short.MAX_VALUE)));
397:
398: beanRadio
399: .getAccessibleContext()
400: .setAccessibleDescription(
401: org.openide.util.NbBundle
402: .getMessage(
403: ConnectionCustomEditor.class,
404: "ConnectionCustomEditor.beanRadio.accessibleDescription")); // NOI18N
405: propertyRadio
406: .getAccessibleContext()
407: .setAccessibleDescription(
408: org.openide.util.NbBundle
409: .getMessage(
410: ConnectionCustomEditor.class,
411: "ConnectionCustomEditor.propertyRadio.accessibleDescription")); // NOI18N
412: methodRadio
413: .getAccessibleContext()
414: .setAccessibleDescription(
415: org.openide.util.NbBundle
416: .getMessage(
417: ConnectionCustomEditor.class,
418: "ConnectionCustomEditor.methodRadio.accessibleDescription")); // NOI18N
419: beanCombo
420: .getAccessibleContext()
421: .setAccessibleDescription(
422: org.openide.util.NbBundle
423: .getMessage(
424: ConnectionCustomEditor.class,
425: "ConnectionCustomEditor.beanCombo.accessibleDescription")); // NOI18N
426: propertyField
427: .getAccessibleContext()
428: .setAccessibleDescription(
429: org.openide.util.NbBundle
430: .getMessage(
431: ConnectionCustomEditor.class,
432: "ConnectionCustomEditor.propertyField.accessibleDescription")); // NOI18N
433: methodField
434: .getAccessibleContext()
435: .setAccessibleDescription(
436: org.openide.util.NbBundle
437: .getMessage(
438: ConnectionCustomEditor.class,
439: "ConnectionCustomEditor.methodField.accessibleDescription")); // NOI18N
440: propertyDetailsButton
441: .getAccessibleContext()
442: .setAccessibleDescription(
443: org.openide.util.NbBundle
444: .getMessage(
445: ConnectionCustomEditor.class,
446: "ConnectionCustomEditor.propertyDetailsButton.accessibleDescription")); // NOI18N
447: methodDetailsButton
448: .getAccessibleContext()
449: .setAccessibleDescription(
450: org.openide.util.NbBundle
451: .getMessage(
452: ConnectionCustomEditor.class,
453: "ConnectionCustomEditor.methodDetailsButton.accessibleDescription")); // NOI18N
454: }
455:
456: // Code for dispatching events from components to event handlers.
457:
458: private class FormListener implements java.awt.event.ActionListener {
459: FormListener() {
460: }
461:
462: public void actionPerformed(java.awt.event.ActionEvent evt) {
463: if (evt.getSource() == beanRadio) {
464: ConnectionCustomEditor.this
465: .beanRadioActionPerformed(evt);
466: } else if (evt.getSource() == propertyRadio) {
467: ConnectionCustomEditor.this
468: .propertyRadioActionPerformed(evt);
469: } else if (evt.getSource() == methodRadio) {
470: ConnectionCustomEditor.this
471: .methodRadioActionPerformed(evt);
472: } else if (evt.getSource() == beanCombo) {
473: ConnectionCustomEditor.this
474: .beanComboActionPerformed(evt);
475: } else if (evt.getSource() == propertyDetailsButton) {
476: ConnectionCustomEditor.this
477: .propertyDetailsButtonActionPerformed(evt);
478: } else if (evt.getSource() == methodDetailsButton) {
479: ConnectionCustomEditor.this
480: .methodDetailsButtonActionPerformed(evt);
481: }
482: }
483: }// </editor-fold>//GEN-END:initComponents
484:
485: private void beanComboActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_beanComboActionPerformed
486: if (!initialized) {
487: return;
488: }
489: int index = beanCombo.getSelectedIndex();
490: if (index > 0) {
491: selectedComponent = beanList.get(index - 1);
492: propertyEditor
493: .setValue(new RADConnectionPropertyEditor.RADConnectionDesignValue(
494: selectedComponent));
495: } else {
496: selectedComponent = null;
497: propertyEditor.setValue(BeanSupport.NO_VALUE);
498: }
499: }//GEN-LAST:event_beanComboActionPerformed
500:
501: private void methodDetailsButtonActionPerformed(
502: java.awt.event.ActionEvent evt) {//GEN-FIRST:event_methodDetailsButtonActionPerformed
503: MethodPicker picker = new MethodPicker(formModel, null,
504: valueType);
505: picker.setSelectedComponent(selectedComponent);
506: picker.setSelectedMethod(selectedMethod);
507:
508: String title = FormUtils.getFormattedBundleString(
509: "CTL_FMT_CW_SelectMethod", // NOI18N
510: new Object[] { valueType.getSimpleName() });
511:
512: final DialogDescriptor dd = new DialogDescriptor(picker, title);
513: dd.setValid(picker.isPickerValid());
514: picker.addPropertyChangeListener("pickerValid",
515: new PropertyChangeListener() { // NOI18N
516: public void propertyChange(PropertyChangeEvent evt2) {
517: dd.setValid(((Boolean) evt2.getNewValue())
518: .booleanValue());
519: }
520: });
521: Dialog dialog = DialogDisplayer.getDefault().createDialog(dd);
522: dialog.setVisible(true);
523:
524: if (dd.getValue() == DialogDescriptor.OK_OPTION) {
525: selectedComponent = picker.getSelectedComponent();
526:
527: MethodPicker.MethodPickerItem selectedItem = picker
528: .getSelectedMethod();
529: selectedMethod = selectedItem.getMethodDescriptor();
530:
531: methodField.setEnabled(true);
532: if (selectedComponent == formModel.getTopRADComponent()) {
533: methodField.setText(selectedItem.getMethodName());
534: } else {
535: methodField.setText(selectedComponent.getName() + "."
536: + selectedMethod.getName()); // NOI18N
537: }
538:
539: if (selectedComponent != null && selectedMethod != null) {
540: propertyEditor
541: .setValue(new RADConnectionPropertyEditor.RADConnectionDesignValue(
542: selectedComponent, selectedMethod));
543: } else if (selectedItem.getMethodName() != null) {
544: propertyEditor
545: .setValue(new RADConnectionPropertyEditor.RADConnectionDesignValue(
546: selectedItem.getMethodName()));
547: } else {
548: propertyEditor.setValue(BeanSupport.NO_VALUE);
549: }
550: }
551: }//GEN-LAST:event_methodDetailsButtonActionPerformed
552:
553: private void propertyDetailsButtonActionPerformed(
554: java.awt.event.ActionEvent evt) {//GEN-FIRST:event_propertyDetailsButtonActionPerformed
555: PropertyPicker propertyPicker = new PropertyPicker(formModel,
556: null, valueType);
557: propertyPicker.setSelectedComponent(selectedComponent);
558: propertyPicker.setSelectedProperty(selectedProperty);
559:
560: String title = FormUtils.getFormattedBundleString(
561: "CTL_FMT_CW_SelectProperty", // NOI18N
562: new Object[] { valueType.getSimpleName() });
563:
564: final DialogDescriptor dd = new DialogDescriptor(
565: propertyPicker, title);
566: dd.setValid(propertyPicker.isPickerValid());
567: propertyPicker.addPropertyChangeListener("pickerValid",
568: new PropertyChangeListener() { // NOI18N
569: public void propertyChange(PropertyChangeEvent evt2) {
570: dd.setValid(((Boolean) evt2.getNewValue())
571: .booleanValue());
572: }
573: });
574: Dialog dialog = DialogDisplayer.getDefault().createDialog(dd);
575: dialog.setVisible(true);
576:
577: if (dd.getValue() == DialogDescriptor.OK_OPTION) {
578: selectedComponent = propertyPicker.getSelectedComponent();
579:
580: PropertyPicker.PropertyPickerItem selectedItem = propertyPicker
581: .getSelectedProperty();
582:
583: propertyField.setEnabled(true);
584: if (selectedComponent == formModel.getTopRADComponent())
585: propertyField.setText(selectedItem.getPropertyName());
586: else
587: propertyField.setText(selectedComponent.getName() + "."
588: + selectedItem.getPropertyName()); // NOI18N
589:
590: selectedProperty = selectedItem.getPropertyDescriptor();
591: if (selectedProperty == null)
592: propertyEditor
593: .setValue(new RADConnectionPropertyEditor.RADConnectionDesignValue(
594: selectedItem.getReadMethodName()));
595: else if (selectedComponent != null
596: && selectedProperty != null)
597: propertyEditor
598: .setValue(new RADConnectionPropertyEditor.RADConnectionDesignValue(
599: selectedComponent, selectedProperty));
600: else
601: propertyEditor.setValue(BeanSupport.NO_VALUE);
602: }
603: }//GEN-LAST:event_propertyDetailsButtonActionPerformed
604:
605: private void methodRadioActionPerformed(
606: java.awt.event.ActionEvent evt) {//GEN-FIRST:event_methodRadioActionPerformed
607: if (methodRadio.isSelected())
608: methodDetailsButton.requestFocus();
609: updateControls();
610: }//GEN-LAST:event_methodRadioActionPerformed
611:
612: private void propertyRadioActionPerformed(
613: java.awt.event.ActionEvent evt) {//GEN-FIRST:event_propertyRadioActionPerformed
614: if (propertyRadio.isSelected())
615: propertyDetailsButton.requestFocus();
616: updateControls();
617: }//GEN-LAST:event_propertyRadioActionPerformed
618:
619: private void beanRadioActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_beanRadioActionPerformed
620: if (beanRadio.isSelected())
621: beanCombo.requestFocus();
622: updateControls();
623: }//GEN-LAST:event_beanRadioActionPerformed
624:
625: // Variables declaration - do not modify//GEN-BEGIN:variables
626: private javax.swing.JComboBox beanCombo;
627: private javax.swing.JRadioButton beanRadio;
628: private javax.swing.ButtonGroup buttonGroup1;
629: private javax.swing.JLabel jLabel1;
630: private javax.swing.JButton methodDetailsButton;
631: private javax.swing.JTextField methodField;
632: private javax.swing.JRadioButton methodRadio;
633: private javax.swing.JButton propertyDetailsButton;
634: private javax.swing.JTextField propertyField;
635: private javax.swing.JRadioButton propertyRadio;
636: // End of variables declaration//GEN-END:variables
637:
638: }
|