Rev 206 | Rev 221 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 206 | Rev 220 | ||
---|---|---|---|
1 | /******************************************************** |
1 | /******************************************************** |
2 | * |
2 | * |
3 | * class to handle Editing of MK Params via MIDP / J2ME |
3 | * class to handle Editing of MK Params via MIDP / J2ME |
4 | * |
4 | * |
5 | * Author: Marcus -LiGi- Bueschleb |
5 | * Author: Marcus -LiGi- Bueschleb |
6 | * |
6 | * |
7 | ********************************************************/ |
7 | ********************************************************/ |
8 | 8 | ||
9 | import javax.microedition.lcdui.*; |
9 | import javax.microedition.lcdui.*; |
10 | 10 | ||
11 | public class MKParamsEditor |
11 | public class MKParamsEditor |
12 | implements org.ligi.ufo.MKParamDefinitions |
12 | implements org.ligi.ufo.MKParamDefinitions |
13 | { |
13 | { |
- | 14 | ||
14 | 15 | public byte nextstate; |
|
15 | 16 | ||
16 | private int act_tab=0; |
17 | private int act_tab=0; |
17 | public int act_y=0; |
18 | public int act_y=1; |
18 | private int act_lcd_lines=10; |
19 | private int act_lcd_lines=10; |
19 | 20 | ||
20 | DUBwiseCanvas canvas; |
21 | DUBwiseCanvas canvas; |
- | 22 | ||
21 | 23 | public String[] lcd_lines; |
|
22 | 24 | ||
23 | // org.ligi.ufo.MKCommunicator _mk; |
25 | public String[] menu_items; |
24 | 26 | ||
25 | public String[] lcd_lines; |
27 | org.ligi.ufo.ParamsClass edit_source; |
- | 28 | ||
- | 29 | ||
- | 30 | public MKParamsEditor(DUBwiseCanvas _canvas,org.ligi.ufo.ParamsClass _edit_source,byte _nextstate) |
|
26 | 31 | { |
|
27 | 32 | nextstate=_nextstate; |
|
28 | public MKParamsEditor(DUBwiseCanvas _canvas) |
33 | edit_source=_edit_source; |
29 | { |
34 | |
30 | canvas=_canvas; |
35 | canvas=_canvas; |
31 | lcd_lines=new String[40]; |
36 | lcd_lines=new String[40]; |
32 | // refresh_lcd(); |
37 | // refresh_lcd(); |
33 | } |
38 | } |
- | 39 | ||
- | 40 | ||
- | 41 | boolean select_mode=true; |
|
- | 42 | ||
34 | 43 | ||
35 | public void paint ( Graphics g) |
44 | public void paint ( Graphics g) |
- | 45 | { |
|
- | 46 | if (select_mode) |
|
- | 47 | { |
|
- | 48 | if (canvas.menu_items[0]!=edit_source.tab_names[0]) // usefull? |
|
- | 49 | { |
|
- | 50 | act_y=1; |
|
- | 51 | menu_items=new String[edit_source.tab_names.length+1]; |
|
- | 52 | for(int p=0;p<edit_source.tab_names.length;p++) |
|
- | 53 | menu_items[p]=edit_source.tab_names[p]; |
|
- | 54 | menu_items[edit_source.tab_names.length]="back"; |
|
- | 55 | canvas.setup_menu(menu_items,null); |
|
- | 56 | } |
|
- | 57 | canvas.paint_menu(g); |
|
- | 58 | } |
|
- | 59 | ||
- | 60 | else |
|
36 | { |
61 | { |
37 | refresh_lcd(); |
62 | refresh_lcd(); |
- | 63 | // canvas.paint_lcd(g,false); |
|
- | 64 | canvas.paint_lcd(g,true); |
|
38 | canvas.paint_lcd(g,false); |
65 | } |
39 | } |
66 | } |
40 | 67 | ||
41 | 68 | ||
42 | public void refresh_lcd() |
69 | public void refresh_lcd() |
43 | { |
70 | { |
44 | - | ||
45 | if (canvas.mk!=null) |
71 | |
46 | { |
72 | try { |
- | 73 | act_lcd_lines=edit_source.field_names[act_tab].length*2+2; |
|
47 | act_lcd_lines=canvas.mk.params.field_names[act_tab].length*2+1; |
74 | |
48 | for ( int i=0;i<act_lcd_lines;i++) |
75 | for ( int i=0;i<act_lcd_lines;i++) |
- | 76 | lcd_lines[i]=""; |
|
- | 77 | ||
49 | lcd_lines[i]=""; |
78 | |
- | 79 | ||
50 | 80 | // lcd_lines[0]=(act_tab==0?" ":"< ") + edit_source.tab_names[act_tab] + (act_tab==(edit_source.tab_names.length-1)?" ":" >"); |
|
- | 81 | ||
51 | 82 | for (int i=0;i<edit_source.field_names[act_tab].length;i++) |
|
- | 83 | { |
|
- | 84 | lcd_lines[2*i]=edit_source.field_names[act_tab][i]; |
|
- | 85 | ||
52 | try |
86 | switch(edit_source.field_types[act_tab][i]) |
- | 87 | { |
|
- | 88 | case PARAMTYPE_BITSWITCH: |
|
- | 89 | lcd_lines[1+2*i]=(((edit_source.get_field_from_act(edit_source.field_positions[act_tab][i]/8)&(1<<edit_source.field_positions[act_tab][i]%8))==0)?"off":"on" ) ; |
|
- | 90 | break; |
|
- | 91 | case PARAMTYPE_BYTE: |
|
- | 92 | lcd_lines[1+2*i]=""+edit_source.get_field_from_act(edit_source.field_positions[act_tab][i]); |
|
- | 93 | if ((edit_source.get_field_from_act(edit_source.field_positions[act_tab][i])>250)&&(edit_source.get_field_from_act(edit_source.field_positions[act_tab][i])<256)) |
|
53 | { |
- | |
- | 94 | lcd_lines[2+2*i]+="[Poti"+(edit_source.get_field_from_act(edit_source.field_positions[act_tab][i])-250) +"]"; break; |
|
- | 95 | ||
54 | 96 | ||
- | 97 | case PARAMTYPE_KEY: |
|
- | 98 | case PARAMTYPE_STICK: |
|
- | 99 | lcd_lines[1+2*i]=""+edit_source.get_field_from_act(edit_source.field_positions[act_tab][i]); |
|
- | 100 | break; |
|
- | 101 | ||
- | 102 | default: |
|
55 | lcd_lines[0]=(act_tab==0?" ":"< ") + canvas.mk.params.tab_names[act_tab] + (act_tab==(canvas.mk.params.tab_names.length-1)?" ":" >"); |
103 | lcd_lines[1+2*i]=""+edit_source.choice_strings[edit_source.field_types[act_tab][i]-PARAMTYPE_CHOICE][edit_source.get_field_from_act(edit_source.field_positions[act_tab][i])]; |
- | 104 | } |
|
56 | 105 | ||
- | 106 | } |
|
57 | for (int i=0;i<canvas.mk.params.field_names[act_tab].length;i++) |
107 | |
58 | { |
- | |
59 | lcd_lines[1+2*i]=canvas.mk.params.field_names[act_tab][i]; |
108 | lcd_lines[act_lcd_lines-1]="back"; |
60 | if (canvas.mk.params.field_types[act_tab][i]== canvas.mk.params.PARAMTYPE_BITSWITCH) |
109 | |
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" ) ; |
110 | canvas.lcd_lines=new String[act_lcd_lines]; |
62 | if (canvas.mk.params.field_types[act_tab][i]== canvas.mk.params.PARAMTYPE_BYTE) |
- | |
63 | { |
111 | for ( int i=0;i<act_lcd_lines;i++) |
64 | lcd_lines[2+2*i]=""+canvas.mk.params.get_field_from_act(canvas.mk.params.field_positions[act_tab][i]); |
112 | { |
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)) |
113 | lcd_lines[i]=(act_y==i?"#":" ")+lcd_lines[i]; |
66 | lcd_lines[2+2*i]+="[Poti"+(canvas.mk.params.get_field_from_act(canvas.mk.params.field_positions[act_tab][i])-250) +"]"; |
- | |
67 | } |
- | |
68 | 114 | while(lcd_lines[i].length()<20) |
|
69 | if (canvas.mk.params.field_types[act_tab][i]== canvas.mk.params.PARAMTYPE_STICK) |
- | |
- | 115 | lcd_lines[i]+=" "; |
|
70 | { |
116 | |
71 | lcd_lines[2+2*i]=""+canvas.mk.params.get_field_from_act(canvas.mk.params.field_positions[act_tab][i]); |
117 | canvas.lcd_lines[i]=lcd_lines[i]; |
72 | } |
118 | } |
73 | - | ||
74 | - | ||
75 | - | ||
76 | } |
- | |
77 | - | ||
78 | for (int i=0;i<act_lcd_lines;i++) |
- | |
79 | { |
- | |
80 | lcd_lines[i]=(act_y==i?"#":" ")+lcd_lines[i]; |
119 | |
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 | } |
120 | } |
88 | } |
121 | |
89 | catch (Exception e){} |
122 | catch (Exception e){} |
90 | canvas.lcd_lines=new String[act_lcd_lines]; |
123 | |
91 | for(int i=0;i<act_lcd_lines;i++) |
124 | // for(int i=0;i<act_lcd_lines;i++) |
92 | canvas.lcd_lines[i]=lcd_lines[i]; |
125 | |
93 | 126 | /* |
|
94 | } |
127 | } |
95 | else |
128 | else |
96 | { |
129 | { |
97 | canvas.lcd_lines=new String[1]; |
130 | canvas.lcd_lines=new String[1]; |
98 | canvas.lcd_lines[0]="reading params"; |
131 | canvas.lcd_lines[0]="reading params"; |
99 | } |
132 | } |
100 | 133 | */ |
|
101 | } |
134 | } |
102 | 135 | ||
103 | 136 | ||
104 | public final static int KEYCODE_CLEAR=-8; |
137 | public final static int KEYCODE_CLEAR=-8; |
105 | 138 | ||
106 | public boolean editing_number=false; |
139 | public boolean editing_number=false; |
107 | 140 | ||
108 | public void keypress (int keyCode,int action) |
141 | public void keypress (int keyCode,int action) |
109 | { |
142 | { |
110 | if (act_y==0) switch (action) |
- | |
111 | { |
- | |
112 | case Canvas.RIGHT: |
- | |
113 | if (act_tab<canvas.mk.params.tab_names.length-1) act_tab++; |
- | |
114 | break; |
- | |
115 | 143 | ||
116 | case Canvas.LEFT: |
- | |
117 | if (act_tab!=0) act_tab--; |
144 | if (select_mode) |
118 | break; |
- | |
119 | } |
- | |
120 | else |
- | |
121 | { |
145 | { |
122 | if(canvas.mk.params.field_types[act_tab][act_y/2-1]==canvas.mk.params.PARAMTYPE_BYTE) |
146 | if (action== Canvas.FIRE) |
123 | { |
147 | { |
- | 148 | ||
124 | if ((keyCode >= Canvas.KEY_NUM0) && (keyCode <= Canvas.KEY_NUM9)) |
149 | if (canvas.act_menu_select==(menu_items.length-1)) |
- | 150 | canvas.chg_state(nextstate); |
|
- | 151 | else |
|
- | 152 | ||
125 | { |
153 | { |
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)); |
- | |
128 | else |
154 | act_tab=canvas.act_menu_select; |
129 | canvas.mk.params.set_field_from_act(canvas.mk.params.field_positions[act_tab][act_y/2-1] , (keyCode - Canvas.KEY_NUM0)); |
- | |
130 | editing_number=true; |
155 | select_mode=false; |
131 | return; |
156 | act_y=1; |
132 | } |
157 | } |
133 | else |
- | |
134 | if ( keyCode==KEYCODE_CLEAR) |
- | |
135 | canvas.mk.params.set_field_from_act(canvas.mk.params.field_positions[act_tab][act_y/2-1],0); |
- | |
136 | } |
158 | } |
137 | editing_number=false; |
- | |
138 | - | ||
139 | switch (action) |
- | |
140 | { |
- | |
141 | - | ||
142 | case Canvas.RIGHT: |
- | |
143 | switch(canvas.mk.params.field_types[act_tab][act_y/2-1]) |
- | |
144 | { |
159 | else |
145 | case PARAMTYPE_BITSWITCH: |
- | |
146 | - | ||
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)); |
- | |
148 | break; |
- | |
149 | case PARAMTYPE_BYTE: |
- | |
150 | case PARAMTYPE_STICK: |
- | |
151 | - | ||
152 | canvas.mk.params.field_from_act_add(canvas.mk.params.field_positions[act_tab][act_y/2-1],1); |
- | |
153 | break; |
- | |
154 | } |
- | |
155 | break; |
- | |
156 | - | ||
157 | case Canvas.LEFT: |
- | |
158 | switch(canvas.mk.params.field_types[act_tab][act_y/2-1]) |
160 | canvas.menu_keypress(keyCode); |
159 | { |
- | |
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)); |
- | |
162 | - | ||
163 | break; |
- | |
164 | case PARAMTYPE_BYTE: |
- | |
165 | case PARAMTYPE_STICK: |
- | |
166 | canvas.mk.params.field_from_act_add(canvas.mk.params.field_positions[act_tab][act_y/2-1],-1); |
- | |
167 | break; |
- | |
168 | } |
- | |
169 | - | ||
170 | - | ||
171 | break; |
- | |
172 | } |
- | |
173 | - | ||
174 | } |
161 | } |
175 | 162 | else |
|
176 | switch (action) |
- | |
177 | { |
163 | { |
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 | - | ||
- | 164 | ||
- | 165 | ||
- | 166 | if ((act_y!=(act_lcd_lines-1))&&(((keyCode >= Canvas.KEY_NUM0) && (keyCode <= Canvas.KEY_NUM9))|| ( keyCode==KEYCODE_CLEAR))) |
|
- | 167 | { |
|
- | 168 | int act_pos=act_y/2; |
|
- | 169 | if((edit_source.field_types[act_tab][act_pos]==edit_source.PARAMTYPE_BYTE)) |
|
- | 170 | { |
|
- | 171 | if ((keyCode >= Canvas.KEY_NUM0) && (keyCode <= Canvas.KEY_NUM9)) |
|
- | 172 | { |
|
- | 173 | if((editing_number)&&( Math.abs(edit_source.get_field_from_act(edit_source.field_positions[act_tab][act_pos]))*10+(keyCode - Canvas.KEY_NUM0)<1000)) |
|
- | 174 | edit_source.set_field_from_act(edit_source.field_positions[act_tab][act_pos] , Math.abs(edit_source.get_field_from_act(edit_source.field_positions[act_tab][act_pos]))*10+(keyCode - Canvas.KEY_NUM0)); |
|
- | 175 | else |
|
189 | } |
176 | edit_source.set_field_from_act(edit_source.field_positions[act_tab][act_pos] , (keyCode - Canvas.KEY_NUM0)); |
- | 177 | editing_number=true; |
|
- | 178 | return; |
|
- | 179 | } |
|
- | 180 | else |
|
- | 181 | if ( keyCode==KEYCODE_CLEAR) |
|
- | 182 | edit_source.set_field_from_act(edit_source.field_positions[act_tab][act_pos],0); |
|
- | 183 | } |
|
- | 184 | editing_number=false; |
|
- | 185 | ||
- | 186 | } |
|
- | 187 | ||
- | 188 | switch (action) |
|
- | 189 | { |
|
- | 190 | ||
- | 191 | case Canvas.DOWN: |
|
- | 192 | if (act_y<(act_lcd_lines-2)) act_y+=2; |
|
- | 193 | else act_y=1; |
|
- | 194 | break; |
|
- | 195 | ||
- | 196 | case Canvas.UP: |
|
- | 197 | if (act_y!=1) act_y-=2; |
|
- | 198 | else act_y=act_lcd_lines-1; |
|
- | 199 | break; |
|
- | 200 | ||
- | 201 | default: |
|
- | 202 | ||
- | 203 | ||
- | 204 | ||
- | 205 | if (act_y!=(act_lcd_lines-1)) |
|
- | 206 | { |
|
- | 207 | ||
- | 208 | // |
|
- | 209 | ||
- | 210 | int act_pos=act_y/2; |
|
- | 211 | ||
- | 212 | if((edit_source.field_types[act_tab][act_pos]==edit_source.PARAMTYPE_KEY)) |
|
- | 213 | edit_source.set_field_from_act(edit_source.field_positions[act_tab][act_pos],keyCode); |
|
- | 214 | ||
- | 215 | switch (action) |
|
- | 216 | { |
|
- | 217 | ||
- | 218 | case Canvas.RIGHT: |
|
- | 219 | switch(edit_source.field_types[act_tab][act_pos]) |
|
- | 220 | { |
|
- | 221 | case PARAMTYPE_BITSWITCH: |
|
- | 222 | ||
- | 223 | edit_source.field_from_act_xor((edit_source.field_positions[act_tab][act_pos]/8),1<<(edit_source.field_positions[act_tab][act_pos]%8)); |
|
- | 224 | break; |
|
- | 225 | ||
- | 226 | ||
- | 227 | case PARAMTYPE_BYTE: |
|
- | 228 | case PARAMTYPE_STICK: |
|
- | 229 | ||
- | 230 | edit_source.field_from_act_add(edit_source.field_positions[act_tab][act_pos],1); |
|
- | 231 | break; |
|
- | 232 | ||
- | 233 | default: |
|
- | 234 | edit_source.field_from_act_add_mod(edit_source.field_positions[act_tab][act_pos],1,edit_source.choice_strings[edit_source.field_types[act_tab][act_pos]-PARAMTYPE_CHOICE].length); |
|
- | 235 | break; |
|
- | 236 | } |
|
- | 237 | break; |
|
- | 238 | ||
- | 239 | case Canvas.LEFT: |
|
- | 240 | switch(edit_source.field_types[act_tab][act_pos]) |
|
- | 241 | { |
|
- | 242 | case PARAMTYPE_BITSWITCH: |
|
- | 243 | edit_source.field_from_act_xor((edit_source.field_positions[act_tab][act_pos]/8),1<<(edit_source.field_positions[act_tab][act_pos]%8)); |
|
- | 244 | ||
- | 245 | break; |
|
- | 246 | case PARAMTYPE_BYTE: |
|
- | 247 | case PARAMTYPE_STICK: |
|
- | 248 | edit_source.field_from_act_add(edit_source.field_positions[act_tab][act_pos],-1); |
|
- | 249 | break; |
|
- | 250 | default: |
|
- | 251 | edit_source.field_from_act_add_mod(edit_source.field_positions[act_tab][act_pos],1,edit_source.choice_strings[edit_source.field_types[act_tab][act_pos]-PARAMTYPE_CHOICE].length); |
|
- | 252 | break; |
|
- | 253 | } |
|
- | 254 | ||
- | 255 | ||
- | 256 | break; |
|
- | 257 | } |
|
- | 258 | ||
- | 259 | } |
|
- | 260 | else |
|
- | 261 | if (action== Canvas.FIRE) |
|
- | 262 | { |
|
- | 263 | act_y=1; |
|
- | 264 | canvas.menu_items[0]=""; |
|
- | 265 | select_mode=true; |
|
- | 266 | ||
- | 267 | } |
|
- | 268 | } |
|
190 | 269 | ||
- | 270 | ||
191 | refresh_lcd(); |
271 | // if (!select_mode)refresh_lcd(); |
192 | 272 | ||
193 | 273 | } |
|
194 | } |
274 | } // keypress |
195 | } |
275 | } |
196 | 276 | ||
197 | 277 |