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 package javax.swing.beaninfo;
39
40 import java.awt.Component;
41
42 import java.awt.event.ActionEvent;
43 import java.awt.event.ActionListener;
44 import java.awt.event.KeyEvent;
45 import java.awt.event.KeyAdapter;
46
47 import java.beans.PropertyDescriptor;
48 import java.beans.PropertyChangeListener;
49
50 import javax.swing.BoxLayout;
51 import javax.swing.JPanel;
52 import javax.swing.JTextField;
53
54 /**
55 * A property editor for editing doubles.
56 */
57 public class SwingDoubleEditor extends SwingEditorSupport
58 {
59 private JTextField textfield;
60
61 public void setValue(Object value)
62 {
63 if (value != null) {
64 textfield.setText(value.toString());
65 }
66 super.setValue(value);
67 }
68
69 /**
70 * Initializes this property editor
71 */
72 public void init(PropertyDescriptor descriptor)
73 {
74 if (textfield == null)
75 {
76 textfield = new JTextField();
77 textfield.setDocument(new FloatNumberDocument());
78 // disable editing if its a readonly property
79 if( descriptor.getWriteMethod() == null ) textfield.setEditable( false );
80 textfield.addActionListener(new ActionListener()
81 {
82 public void actionPerformed(ActionEvent e)
83 {
84 String text = textfield.getText();
85 if( text.length() == 0 ) text = "0";
86 setValue(new Double(text));
87 }
88 });
89
90 panel = new JPanel();
91 panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
92 panel.add(textfield);
93 }
94
95 }
96 }