Integration of OCCT 6.5.0 from SVN
[occt.git] / samples / java / java / util / IntegerField.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 IntegerField 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 IntegerField()
26   {
27     addInputMethodListener(this);
28     addKeyListener(this);
29   }
30
31   public IntegerField(int columns)
32   {
33     super(columns);
34     addInputMethodListener(this);
35     addKeyListener(this);
36   }
37
38   public IntegerField(String text)
39   {
40     super(text);
41     addInputMethodListener(this);
42     addKeyListener(this);
43   }
44
45   public IntegerField(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 int getValue()
55   {
56     Integer value;
57     String newValue;
58
59     newValue = getText();
60     value = new Integer((newValue.equals("") || newValue.equals("-")) ?
61                         "0" : newValue);
62                         
63     return value.intValue();
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 not present
83       {
84         if ((getCaretPosition()) != 0)
85           consume = true;
86       }
87       else
88         consume = true;
89     }
90     else if (!event.isActionKey() && aKod != event.VK_BACK_SPACE &&
91                                      aKod != event.VK_DELETE)
92     {
93       if (!Character.isDigit(event.getKeyChar()))
94         consume = true;
95     }
96   }
97
98 //=======================================================================//
99   public void keyReleased(KeyEvent event)
100   {
101     String newValue = getText();
102
103     if (!newValue.equals(str))
104     {
105         if (consume)
106         {
107           setText(str);
108           consume = false;
109         }
110       else
111         str = newValue;
112     }
113   }
114
115 //=======================================================================//
116 // InputMethod listener interface
117 //=======================================================================//
118   public void inputMethodTextChanged(InputMethodEvent event)
119   {
120     if (consume)
121     {
122       event.consume();
123       consume = false;
124     }
125   }
126
127   public void caretPositionChanged(InputMethodEvent event)
128   {
129   }
130
131
132 }