1 | private class KeyTextHandler extends BaseKeyTextHandler {↵ | | 1 | private class KeyTextHandler extends BaseKeyTextHandler {↵
|
2 | public void keyTyped(KeyEvent e) {↵ | | 2 | public void keyTyped(KeyEvent e) {↵
|
3 | char c = e.getKeyChar();↵ | | 3 | char c = e.getKeyChar();↵
|
4 | ↵ | | |
|
5 | ↵ | | |
|
6 | // as a coding convenience, create a reference to the text component↵ | | 4 | // as a coding convenience, create a reference to the text component↵
|
7 | // that is typecast to JTextComponent. this is not essential, as we↵ | | 5 | // that is typecast to JTextComponent. this is not essential, as we↵
|
8 | // could typecast every reference, but this makes the code cleaner↵ | | 6 | // could typecast every reference, but this makes the code cleaner↵
|
9 | JTextComponent _theComponent = (JTextComponent)DataTypeBinary.this._textComponent;↵ | | 7 | JTextComponent _theComponent = (JTextComponent)DataTypeTime.this._textComponent;↵
|
10 | String text = _theComponent.getText();↵ | | 8 | String text = _theComponent.getText();↵
|
11 | ↵ | | |
|
12 | ↵ | | |
|
13 | // tabs and newlines get put into the text before this check,↵ | | 9 | // tabs and newlines get put into the text before this check,↵
|
14 | // so remove them↵ | | 10 | // so remove them↵
|
15 | // This only applies to Popup editing since these chars are↵ | | 11 | // This only applies to Popup editing since these chars are↵
|
16 | // not passed to this level by the in-cell editor.↵ | | 12 | // not passed to this level by the in-cell editor.↵
|
17 | if (c == KeyEvent.VK_TAB || c == KeyEvent.VK_ENTER) {↵ | | 13 | if (c == KeyEvent.VK_TAB || c == KeyEvent.VK_ENTER) {↵
|
18 | // remove all instances of the offending char↵ | | 14 | // remove all instances of the offending char↵
|
19 | int index = text.indexOf(c);↵ | | 15 | int index = text.indexOf(c);↵
|
20 | if (index != -1) {↵ | | |
|
21 | if (index == text.length() -1) {↵ | | 16 | if (index == text.length() -1) {↵
|
22 | text = text.substring(0, text.length()-1); // truncate string↵ | | 17 | text = text.substring(0, text.length()-1); // truncate string↵
|
23 | }↵ | | |
|
24 | else {↵ | | |
|
25 | ↵ | | 18 | }↵
|
| | | 19 | else {↵
|
26 | text = text.substring(0, index) + text.substring(index+1);↵ | | 20 | text = text.substring(0, index) + text.substring(index+1);↵
|
27 | }↵ | | |
|
28 | ↵ | | 21 | }↵
|
29 | ((IRestorableTextComponent)_theComponent).updateText( text);↵ | | 22 | ((IRestorableTextComponent)_theComponent).updateText( text);↵
|
30 | _beepHelper.beep(_theComponent);↵ | | 23 | _beepHelper.beep(_theComponent);↵
|
31 | }↵ | | |
|
32 | e.consume();↵ | | |
|
33 | }↵ | | |
|
|
34 | ↵ | | 24 | e.consume();↵
|
| | | 25 | }↵
|
|
|
35 | // handle cases of null↵ | | 26 | // handle cases of null↵
|
36 | // The processing is different when nulls are allowed and when they are not.↵ | | 27 | // The processing is different when nulls are allowed and when they are not.↵
|
37 | //↵ | | |
|
|
38 | ↵ | | 28 | //↵
|
|
39 | if ( DataTypeBinary.this._isNullable) {↵ | | 29 | if ( DataTypeTime.this._isNullable) {↵
|
|
40 | // user enters something when field is null↵ | | 30 | // user enters something when field is null↵
|
41 | if (text.equals("<null>")) {↵ | | 31 | if (text.equals("<null>")) {↵
|
42 | if ((c==KeyEvent.VK_BACK_SPACE) || (c == KeyEvent.VK_DELETE)) {↵ | | 32 | if ((c==KeyEvent.VK_BACK_SPACE) || (c == KeyEvent.VK_DELETE)) {↵
|
43 | // delete when null => original value↵ | | 33 | // delete when null => original value↵
|
44 | DataTypeBinary.this._textComponent.restoreText();↵ | | 34 | DataTypeTime.this._textComponent.restoreText();↵
|
45 | e.consume();↵ | | |
|
46 | }↵ | | |
|
47 | else {↵ | | |
|
48 | ↵ | | 35 | e.consume();↵
|
| | | 36 | }↵
|
| | | 37 | else {↵
|
49 | // non-delete when null => clear field and add text↵ | | 38 | // non-delete when null => clear field and add text↵
|
50 | DataTypeBinary.this._textComponent.updateText("");↵ | | 39 | DataTypeTime.this._textComponent.updateText("");↵
|
51 | // fall through to normal processing of this key stroke↵ | | 40 | // fall through to normal processing of this key stroke↵
|
52 | }↵ | | |
|
53 | }↵ | | |
|
54 | else {↵ | | |
|
55 | ↵ | | 41 | }↵
|
| | | 42 | }↵
|
| | | 43 | else {↵
|
56 | // check for user deletes last thing in field↵ | | 44 | // check for user deletes last thing in field↵
|
57 | if ((c == KeyEvent.VK_BACK_SPACE) || (c == KeyEvent.VK_DELETE)) {↵ | | 45 | if ((c == KeyEvent.VK_BACK_SPACE) || (c == KeyEvent.VK_DELETE)) {↵
|
58 | if (text.length() <= 1 ) {↵ | | 46 | if (text.length() <= 1 ) {↵
|
59 | // about to delete last thing in field, so replace with null↵ | | 47 | // about to delete last thing in field, so replace with null↵
|
60 | DataTypeBinary.this._textComponent.updateText("<null>");↵ | | 48 | DataTypeTime.this._textComponent.updateText("<null>");↵
|
61 | e.consume();↵ | | |
|
62 | }↵ | | |
|
63 | }↵ | | |
|
64 | }↵ | | |
|
65 | }↵ | | |
|
66 | ↵ | | 49 | e.consume();↵
|
| | | 50 | }↵
|
| | | 51 | }↵
|
| | | 52 | }↵
|
| | | 53 | }↵
|
67 | else {↵ | | 54 | else {↵
|
68 | // field is not nullable↵ | | 55 | // field is not nullable↵
|
69 | //↵ | | 56 | //↵
|
70 | handleNotNullableField(text, c, e, _textComponent) | | 57 | handleNotNullableField(text, c, e, _textComponent)
|