Subversion Repositories eFlore/Applications.coel

Rev

Rev 1637 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
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
};