| 1620 |
aurelien |
1 |
package org.tela_botanica.client.composants;
|
|
|
2 |
|
|
|
3 |
import java.util.List;
|
|
|
4 |
|
|
|
5 |
import com.extjs.gxt.ui.client.event.Events;
|
|
|
6 |
import com.extjs.gxt.ui.client.event.FieldEvent;
|
|
|
7 |
import com.extjs.gxt.ui.client.widget.form.NumberField;
|
|
|
8 |
import com.google.gwt.event.dom.client.KeyCodes;
|
|
|
9 |
|
| 1637 |
aurelien |
10 |
/**
|
|
|
11 |
* Un bug dans le champ NumberField originel empêche la saisie de nombres sous
|
|
|
12 |
* certaines versions de firefox, d'où la présence de cette classe
|
|
|
13 |
*
|
|
|
14 |
*/
|
| 1620 |
aurelien |
15 |
public class ChampNombre extends NumberField {
|
|
|
16 |
|
|
|
17 |
public int lastKeyCode;
|
|
|
18 |
public List<Character> allowed;
|
|
|
19 |
|
|
|
20 |
@Override
|
|
|
21 |
protected void onKeyDown( FieldEvent fe )
|
|
|
22 |
{
|
|
|
23 |
super.onKeyDown( fe ) ;
|
|
|
24 |
int keyCode = fe.getKeyCode( ) ;
|
|
|
25 |
|
|
|
26 |
if( keyCode == 0 )
|
|
|
27 |
{
|
|
|
28 |
keyCode = fe.getEvent( ).getCharCode( ) ;
|
|
|
29 |
}
|
|
|
30 |
|
|
|
31 |
_setLastKeyCode( keyCode ) ;
|
|
|
32 |
}
|
|
|
33 |
|
|
|
34 |
@Override
|
|
|
35 |
protected void onKeyPress( FieldEvent fe )
|
|
|
36 |
{
|
|
|
37 |
fireEvent( Events.KeyPress, new FieldEvent( this, fe.getEvent( ) ) ) ;
|
|
|
38 |
|
|
|
39 |
int keyCode = fe.getKeyCode( ) ;
|
|
|
40 |
|
|
|
41 |
char key = ( char )keyCode ;
|
|
|
42 |
|
|
|
43 |
if( keyCode == 0 )
|
|
|
44 |
{
|
|
|
45 |
key = ( char )fe.getEvent( ).getCharCode( ) ;
|
|
|
46 |
}
|
|
|
47 |
|
|
|
48 |
if( fe.isSpecialKey( _getLastKeyCode( ) )
|
|
|
49 |
|| _getLastKeyCode( ) == KeyCodes.KEY_BACKSPACE
|
|
|
50 |
|| _getLastKeyCode( ) == KeyCodes.KEY_DELETE
|
|
|
51 |
|| fe.isControlKey( ) )
|
|
|
52 |
{
|
|
|
53 |
return ;
|
|
|
54 |
}
|
|
|
55 |
|
|
|
56 |
if( !_getAllowed( ).contains( key ) )
|
|
|
57 |
{
|
|
|
58 |
fe.stopEvent( ) ;
|
|
|
59 |
}
|
|
|
60 |
}
|
|
|
61 |
|
|
|
62 |
private native int _getLastKeyCode( ) /*-{
|
|
|
63 |
return this.@org.tela_botanica.client.composants.ChampNombre::lastKeyCode ;
|
|
|
64 |
}-*/;
|
|
|
65 |
|
|
|
66 |
private native void _setLastKeyCode( int keycode ) /*-{
|
|
|
67 |
this.@org.tela_botanica.client.composants.ChampNombre::lastKeyCode = keycode ;
|
|
|
68 |
}-*/;
|
|
|
69 |
|
|
|
70 |
private native List<Character> _getAllowed( ) /*-{
|
|
|
71 |
return this.@org.tela_botanica.client.composants.ChampNombre::allowed ;
|
|
|
72 |
}-*/;
|
|
|
73 |
};
|