1 /*
2 * Copyright 2002 Sun Microsystems, Inc. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or
5 * without modification, are permitted provided that the following
6 * conditions are met:
7 *
8 * - Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 *
11 * - Redistribution in binary form must reproduce the above
12 * copyright notice, this list of conditions and the following
13 * disclaimer in the documentation and/or other materials
14 * provided with the distribution.
15 *
16 * Neither the name of Sun Microsystems, Inc. or the names of
17 * contributors may be used to endorse or promote products derived
18 * from this software without specific prior written permission.
19 *
20 * This software is provided "AS IS," without a warranty of any
21 * kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND
22 * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY,
23 * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY
24 * EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY
25 * DAMAGES OR LIABILITIES SUFFERED BY LICENSEE AS A RESULT OF OR
26 * RELATING TO USE, MODIFICATION OR DISTRIBUTION OF THIS SOFTWARE OR
27 * ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE
28 * FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT,
29 * SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER
30 * CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF
31 * THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF SUN HAS
32 * BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
33 *
34 * You acknowledge that this software is not designed, licensed or
35 * intended for use in the design, construction, operation or
36 * maintenance of any nuclear facility.
37 */
38
39 package javax.swing.beaninfo;
40
41 import java.awt.event.KeyAdapter;
42 import java.awt.event.KeyEvent;
43 import java.beans.PropertyDescriptor;
44
45 import javax.swing.BoxLayout;
46 import javax.swing.JPanel;
47 import javax.swing.JTextField;
48
49 /**
50 * A property editor for editing strings.
51 *
52 * @version 1.3 02/27/02
53 * @author Mark Davidson
54 */
55 public class SwingStringEditor extends SwingEditorSupport {
56
57 private JTextField textfield;
58
59 public SwingStringEditor() {
60 textfield = new JTextField();
61 textfield.addKeyListener(new KeyAdapter() {
62 // XXX - JTextfield should send an actionPerformed event.
63 // this was broken for 1.3 beta but fixed in 1.3. This
64 // is the workaround.
65 public void keyPressed(KeyEvent evt) {
66 if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
67 setValue(textfield.getText());
68 }
69 }
70 });
71
72 panel = new JPanel();
73 panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
74 panel.add(textfield);
75 }
76
77 public void setValue(Object value) {
78 super.setValue(value);
79 if (value != null) {
80 textfield.setText(value.toString());
81 } else {
82 textfield.setText("");
83 }
84 }
85
86 public void init(PropertyDescriptor descriptor) {
87 textfield.setEditable( descriptor.getWriteMethod() != null );
88 }
89 }