Subversion Repositories Projects

Rev

Rev 4 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
4 ligi 1
/**************************************************
2
 *                                            
3
 * class to handle Editing of MK Params
4
 *                                            
5
 * Author:        Marcus -LiGi- Bueschleb      
6
 *
7
 * see README for further Infos
8
 *
9
 *************************************************/
10
 
11
import javax.microedition.lcdui.*;
12
 
13
 
14
public class MKParamsEditor
15
    implements MKParamDefinitions
16
{
17
 
18
 
19
    private int act_tab=0;
20
    private int act_y=0;
21
    private int act_lcd_lines=10;
22
 
23
    MKMiniCanvas canvas;
24
 
25
    public String[] lcd_lines;
26
 
27
 
28
    public MKParamsEditor(MKMiniCanvas _canvas)
29
    {
30
        canvas=_canvas;
31
        lcd_lines=new String[40];
32
        refresh_lcd();
33
    }
34
 
35
 
36
    public void paint ( Graphics g)
37
    {
38
        refresh_lcd();
39
        canvas.paint_lcd(g,false);
40
    }
41
 
42
 
43
    public void refresh_lcd()
44
    {
45
        if (canvas.mk!=null)
46
            {
59 ligi 47
                act_lcd_lines=canvas.mk.params.field_names[act_tab].length*2+1;
4 ligi 48
                for ( int i=0;i<act_lcd_lines;i++)
49
                    lcd_lines[i]="";
50
 
51
 
59 ligi 52
                try
4 ligi 53
                    {
59 ligi 54
 
55
                lcd_lines[0]=(act_tab==0?"  ":"< ") + canvas.mk.params.tab_names[act_tab] + (act_tab==(canvas.mk.params.tab_names.length-1)?"  ":" >");
56
 
57
                for (int i=0;i<canvas.mk.params.field_names[act_tab].length;i++)
58
                    {
59
                        lcd_lines[1+2*i]=canvas.mk.params.field_names[act_tab][i];
60
                        if (canvas.mk.params.field_types[act_tab][i]== canvas.mk.params.PARAMTYPE_BITSWITCH)
61
                            lcd_lines[2+2*i]=(((canvas.mk.params.get_field_from_act(canvas.mk.params.field_positions[act_tab][i]/8)&(1<<canvas.mk.params.field_positions[act_tab][i]%8))==0)?"off":"on" ) ;
62
                        if (canvas.mk.params.field_types[act_tab][i]== canvas.mk.params.PARAMTYPE_BYTE)
4 ligi 63
                            {
59 ligi 64
                                lcd_lines[2+2*i]=""+canvas.mk.params.get_field_from_act(canvas.mk.params.field_positions[act_tab][i]);
65
                                if ((canvas.mk.params.get_field_from_act(canvas.mk.params.field_positions[act_tab][i])>250)&&(canvas.mk.params.get_field_from_act(canvas.mk.params.field_positions[act_tab][i])<256))
66
                                    lcd_lines[2+2*i]+="[Poti"+(canvas.mk.params.get_field_from_act(canvas.mk.params.field_positions[act_tab][i])-250) +"]";                                                                                                
4 ligi 67
                            }
59 ligi 68
 
69
                        if (canvas.mk.params.field_types[act_tab][i]== canvas.mk.params.PARAMTYPE_STICK)
70
                            {
71
                                lcd_lines[2+2*i]=""+canvas.mk.params.get_field_from_act(canvas.mk.params.field_positions[act_tab][i]);
72
                            }
4 ligi 73
 
59 ligi 74
 
75
 
4 ligi 76
                    }
77
 
78
                for (int i=0;i<act_lcd_lines;i++)
79
                    {
80
                        lcd_lines[i]=(act_y==i?"#":" ")+lcd_lines[i];
81
                    }
82
 
83
                for ( int i=0;i<act_lcd_lines;i++)
84
                    while(lcd_lines[i].length()<20)
85
                        {
86
                            lcd_lines[i]+=" ";
87
                        }
59 ligi 88
                    }
89
                catch (Exception e){}
4 ligi 90
                canvas.lcd_lines=new String[act_lcd_lines];
91
                for(int i=0;i<act_lcd_lines;i++)
92
                    canvas.lcd_lines[i]=lcd_lines[i];
93
 
94
            }
95
        else
96
            {
97
                canvas.lcd_lines=new String[1];
98
                canvas.lcd_lines[0]="reading params";
99
            }
100
 
101
    }
102
 
103
 
104
    public final static int KEYCODE_CLEAR=-8;
105
 
106
    public boolean editing_number=false;
107
 
108
    public void keypress (int keyCode,int action)
109
    {
110
        if (act_y==0) switch (action)
111
            {
112
            case Canvas.RIGHT:
59 ligi 113
                if (act_tab<canvas.mk.params.tab_names.length-1) act_tab++;
4 ligi 114
                break;
115
 
116
            case Canvas.LEFT:
117
                if (act_tab!=0) act_tab--;
118
                break;
119
            }
120
        else
121
            {
59 ligi 122
                if(canvas.mk.params.field_types[act_tab][act_y/2-1]==canvas.mk.params.PARAMTYPE_BYTE)
4 ligi 123
                    {
124
                        if ((keyCode >= Canvas.KEY_NUM0) && (keyCode <= Canvas.KEY_NUM9))
125
                            {
59 ligi 126
                                if((editing_number)&&( Math.abs(canvas.mk.params.get_field_from_act(canvas.mk.params.field_positions[act_tab][act_y/2-1]))*10+(keyCode - Canvas.KEY_NUM0)<1000))
127
                                canvas.mk.params.set_field_from_act(canvas.mk.params.field_positions[act_tab][act_y/2-1] , Math.abs(canvas.mk.params.get_field_from_act(canvas.mk.params.field_positions[act_tab][act_y/2-1]))*10+(keyCode - Canvas.KEY_NUM0));
4 ligi 128
                                else
59 ligi 129
                                canvas.mk.params.set_field_from_act(canvas.mk.params.field_positions[act_tab][act_y/2-1] , (keyCode - Canvas.KEY_NUM0));
4 ligi 130
                                editing_number=true;
131
                                return;
132
                            }
133
                        else
134
                            if ( keyCode==KEYCODE_CLEAR)
59 ligi 135
                                canvas.mk.params.set_field_from_act(canvas.mk.params.field_positions[act_tab][act_y/2-1],0);
4 ligi 136
                    }
137
                editing_number=false;
138
 
139
                    switch (action)
140
                        {
141
 
142
                        case Canvas.RIGHT:
59 ligi 143
                            switch(canvas.mk.params.field_types[act_tab][act_y/2-1])
4 ligi 144
                                {
59 ligi 145
                                case PARAMTYPE_BITSWITCH:
4 ligi 146
 
59 ligi 147
                                    canvas.mk.params.field_from_act_xor((canvas.mk.params.field_positions[act_tab][act_y/2-1]/8),1<<(canvas.mk.params.field_positions[act_tab][act_y/2-1]%8));
4 ligi 148
                                    break;
149
                                case PARAMTYPE_BYTE:
59 ligi 150
                                case PARAMTYPE_STICK:
4 ligi 151
 
59 ligi 152
                                    canvas.mk.params.field_from_act_add(canvas.mk.params.field_positions[act_tab][act_y/2-1],1);
4 ligi 153
                                    break;
154
                                }
155
                            break;
156
 
157
                        case Canvas.LEFT:
59 ligi 158
                            switch(canvas.mk.params.field_types[act_tab][act_y/2-1])
4 ligi 159
                                {
59 ligi 160
                                case PARAMTYPE_BITSWITCH:
161
                                    canvas.mk.params.field_from_act_xor((canvas.mk.params.field_positions[act_tab][act_y/2-1]/8),1<<(canvas.mk.params.field_positions[act_tab][act_y/2-1]%8));
4 ligi 162
 
163
                                    break;
164
                                case PARAMTYPE_BYTE:
59 ligi 165
                                case PARAMTYPE_STICK:
166
                                    canvas.mk.params.field_from_act_add(canvas.mk.params.field_positions[act_tab][act_y/2-1],-1);
4 ligi 167
                                    break;
168
                                }
169
 
170
 
171
                            break;
172
                        }
173
 
174
            }
175
 
176
        switch (action)
177
            {
178
 
179
            case Canvas.DOWN:
180
                if (act_y<(act_lcd_lines-2)) act_y+=2;
181
                else act_y=0;
182
                break;
183
 
184
            case Canvas.UP:
185
                if (act_y!=0) act_y-=2;
186
                else act_y=act_lcd_lines-1;
187
                break;
188
 
189
            }
190
 
191
        refresh_lcd();
192
 
193
 
194
    }
195
}
196