Integration of OCCT 6.5.0 from SVN
[occt.git] / samples / java / java / util / RealField.java
1
2 //Title:        Open CASCADE Technology Samples
3 //Version:
4 //Copyright:    Copyright (c) 1999
5 //Author:       Natalia Kopnova
6 //Company:      Matra Datavision (Nizhny Novgorod branch)
7 //Description:
8
9 package util;
10
11 import java.awt.event.*;
12 import javax.swing.*;
13 import javax.swing.event.*;
14
15 public class RealField extends JTextField
16                                    implements InputMethodListener,
17                                   KeyListener
18 {
19   private boolean consume = false;
20   private String str = new String("");
21
22 //=======================================================================//
23 // Construction
24 //=======================================================================//
25   public RealField()
26   {
27     addInputMethodListener(this);
28     addKeyListener(this);
29   }
30
31   public RealField(int columns)
32   {
33     super(columns);
34     addInputMethodListener(this);
35     addKeyListener(this);
36   }
37
38   public RealField(String text)
39   {
40     super(text);
41     addInputMethodListener(this);
42     addKeyListener(this);
43   }
44
45   public RealField(String text, int columns)
46   {
47     super(text, columns);
48     addInputMethodListener(this);
49     addKeyListener(this);
50   }
51
52 //=======================================================================//
53   /** Returns integer contents of this component */
54   public double getValue()
55   {
56     Double value;
57     String newValue;
58
59     newValue = getText();
60     value = new Double((newValue.equals("") || newValue.equals("-")) ?
61                        "0." : newValue);
62                        
63     return value.doubleValue();
64   }
65
66 //=======================================================================//
67 // Key listener interface
68 //=======================================================================//
69   public void keyTyped(KeyEvent event)
70   {
71   }
72
73 //=======================================================================//
74   public void keyPressed(KeyEvent event)
75   {
76     int aKod = event.getKeyCode();
77     if (aKod == event.VK_MINUS)
78     {
79       String aStr = getText();
80       int aPos = aStr.indexOf("-");
81
82       if (aPos == -1) // Minus is not present
83       {
84         if ((getCaretPosition()) != 0)
85           consume = true;
86       }
87       else
88         consume = true;
89     }
90     else if ((aKod == event.VK_DECIMAL) || (aKod == event.VK_PERIOD))
91     {
92       String aStr = getText();
93       int aPos = aStr.indexOf(".");
94       if (aPos != -1) // the point is present in the string
95         consume = true;
96     }
97     else if (!event.isActionKey() && aKod != event.VK_BACK_SPACE &&
98                                      aKod != event.VK_DELETE)
99     {
100       if (!Character.isDigit(event.getKeyChar()))
101         consume = true;
102     }
103   }
104
105 //=======================================================================//
106   public void keyReleased(KeyEvent event)
107   {
108     String newValue = getText();
109
110     if (!newValue.equals(str))
111     {
112         if (consume)
113         {
114           setText(str);
115           consume = false;
116         }
117       else
118         str = newValue;
119     }
120   }
121
122 //=======================================================================//
123 // InputMethod listener interface
124 //=======================================================================//
125   public void inputMethodTextChanged(InputMethodEvent event)
126   {
127     if (consume)
128     {
129       event.consume();
130       consume = false;
131     }
132   }
133
134   public void caretPositionChanged(InputMethodEvent event)
135   {
136   }
137
138
139 }