Rev 206 | Rev 221 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 206 | Rev 220 | ||
---|---|---|---|
Line 10... | Line 10... | ||
10 | 10 | ||
11 | public class MKParamsEditor |
11 | public class MKParamsEditor |
12 | implements org.ligi.ufo.MKParamDefinitions |
12 | implements org.ligi.ufo.MKParamDefinitions |
Line -... | Line 13... | ||
- | 13 | { |
|
Line 13... | Line 14... | ||
13 | { |
14 | |
14 | 15 | public byte nextstate; |
|
15 | 16 | ||
Line 16... | Line 17... | ||
16 | private int act_tab=0; |
17 | private int act_tab=0; |
Line -... | Line 18... | ||
- | 18 | public int act_y=1; |
|
Line 17... | Line 19... | ||
17 | public int act_y=0; |
19 | private int act_lcd_lines=10; |
Line 18... | Line 20... | ||
18 | private int act_lcd_lines=10; |
20 | |
Line 19... | Line 21... | ||
19 | 21 | DUBwiseCanvas canvas; |
|
20 | DUBwiseCanvas canvas; |
22 | |
21 | 23 | public String[] lcd_lines; |
|
- | 24 | ||
- | 25 | public String[] menu_items; |
|
- | 26 | ||
22 | 27 | org.ligi.ufo.ParamsClass edit_source; |
|
23 | // org.ligi.ufo.MKCommunicator _mk; |
28 | |
24 | 29 | ||
25 | public String[] lcd_lines; |
30 | public MKParamsEditor(DUBwiseCanvas _canvas,org.ligi.ufo.ParamsClass _edit_source,byte _nextstate) |
Line -... | Line 31... | ||
- | 31 | { |
|
- | 32 | nextstate=_nextstate; |
|
- | 33 | edit_source=_edit_source; |
|
- | 34 | ||
26 | 35 | canvas=_canvas; |
|
27 | 36 | lcd_lines=new String[40]; |
|
- | 37 | // refresh_lcd(); |
|
- | 38 | } |
|
- | 39 | ||
- | 40 | ||
- | 41 | boolean select_mode=true; |
|
- | 42 | ||
- | 43 | ||
- | 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++) |
|
28 | public MKParamsEditor(DUBwiseCanvas _canvas) |
53 | menu_items[p]=edit_source.tab_names[p]; |
29 | { |
54 | menu_items[edit_source.tab_names.length]="back"; |
- | 55 | canvas.setup_menu(menu_items,null); |
|
- | 56 | } |
|
30 | canvas=_canvas; |
57 | canvas.paint_menu(g); |
Line 31... | Line 58... | ||
31 | lcd_lines=new String[40]; |
58 | } |
32 | // refresh_lcd(); |
59 | |
Line 33... | Line -... | ||
33 | } |
- | |
34 | 60 | else |
|
35 | public void paint ( Graphics g) |
61 | { |
- | 62 | refresh_lcd(); |
|
36 | { |
63 | // canvas.paint_lcd(g,false); |
37 | refresh_lcd(); |
64 | canvas.paint_lcd(g,true); |
- | 65 | } |
|
- | 66 | } |
|
38 | canvas.paint_lcd(g,false); |
67 | |
- | 68 | ||
39 | } |
69 | public void refresh_lcd() |
- | 70 | { |
|
40 | 71 | ||
- | 72 | try { |
|
- | 73 | act_lcd_lines=edit_source.field_names[act_tab].length*2+2; |
|
- | 74 | ||
41 | 75 | for ( int i=0;i<act_lcd_lines;i++) |
|
- | 76 | lcd_lines[i]=""; |
|
- | 77 | ||
- | 78 | ||
- | 79 | ||
- | 80 | // lcd_lines[0]=(act_tab==0?" ":"< ") + edit_source.tab_names[act_tab] + (act_tab==(edit_source.tab_names.length-1)?" ":" >"); |
|
- | 81 | ||
- | 82 | for (int i=0;i<edit_source.field_names[act_tab].length;i++) |
|
Line 42... | Line -... | ||
42 | public void refresh_lcd() |
- | |
Line -... | Line 83... | ||
- | 83 | { |
|
- | 84 | lcd_lines[2*i]=edit_source.field_names[act_tab][i]; |
|
43 | { |
85 | |
- | 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: |
|
44 | 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)) |
|
45 | if (canvas.mk!=null) |
94 | lcd_lines[2+2*i]+="[Poti"+(edit_source.get_field_from_act(edit_source.field_positions[act_tab][i])-250) +"]"; break; |
- | 95 | ||
46 | { |
96 | |
47 | act_lcd_lines=canvas.mk.params.field_names[act_tab].length*2+1; |
- | |
48 | for ( int i=0;i<act_lcd_lines;i++) |
97 | case PARAMTYPE_KEY: |
49 | lcd_lines[i]=""; |
98 | case PARAMTYPE_STICK: |
50 | 99 | lcd_lines[1+2*i]=""+edit_source.get_field_from_act(edit_source.field_positions[act_tab][i]); |
|
51 | - | ||
52 | try |
100 | break; |
53 | { |
101 | |
Line 54... | Line 102... | ||
54 | 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)?" ":" >"); |
- | |
56 | - | ||
57 | for (int i=0;i<canvas.mk.params.field_names[act_tab].length;i++) |
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])]; |
58 | { |
- | |
Line -... | Line 104... | ||
- | 104 | } |
|
Line 59... | Line 105... | ||
59 | lcd_lines[1+2*i]=canvas.mk.params.field_names[act_tab][i]; |
105 | |
60 | if (canvas.mk.params.field_types[act_tab][i]== canvas.mk.params.PARAMTYPE_BITSWITCH) |
106 | } |
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" ) ; |
107 | |
62 | if (canvas.mk.params.field_types[act_tab][i]== canvas.mk.params.PARAMTYPE_BYTE) |
- | |
63 | { |
- | |
64 | lcd_lines[2+2*i]=""+canvas.mk.params.get_field_from_act(canvas.mk.params.field_positions[act_tab][i]); |
- | |
Line 65... | Line -... | ||
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) +"]"; |
- | |
67 | } |
- | |
68 | - | ||
69 | if (canvas.mk.params.field_types[act_tab][i]== canvas.mk.params.PARAMTYPE_STICK) |
108 | lcd_lines[act_lcd_lines-1]="back"; |
70 | { |
- | |
71 | lcd_lines[2+2*i]=""+canvas.mk.params.get_field_from_act(canvas.mk.params.field_positions[act_tab][i]); |
- | |
72 | } |
- | |
73 | - | ||
74 | - | ||
75 | - | ||
76 | } |
109 | |
77 | 110 | canvas.lcd_lines=new String[act_lcd_lines]; |
|
78 | for (int i=0;i<act_lcd_lines;i++) |
111 | for ( int i=0;i<act_lcd_lines;i++) |
79 | { |
112 | { |
80 | lcd_lines[i]=(act_y==i?"#":" ")+lcd_lines[i]; |
113 | lcd_lines[i]=(act_y==i?"#":" ")+lcd_lines[i]; |
81 | } |
114 | while(lcd_lines[i].length()<20) |
82 | 115 | lcd_lines[i]+=" "; |
|
83 | for ( int i=0;i<act_lcd_lines;i++) |
116 | |
Line 84... | Line 117... | ||
84 | while(lcd_lines[i].length()<20) |
117 | canvas.lcd_lines[i]=lcd_lines[i]; |
Line 85... | Line 118... | ||
85 | { |
118 | } |
Line 86... | Line 119... | ||
86 | lcd_lines[i]+=" "; |
119 | |
87 | } |
120 | } |
88 | } |
- | |
89 | catch (Exception e){} |
- | |
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 | 121 | ||
94 | } |
- | |
95 | else |
122 | catch (Exception e){} |
96 | { |
- | |
97 | canvas.lcd_lines=new String[1]; |
- | |
98 | canvas.lcd_lines[0]="reading params"; |
- | |
99 | } |
123 | |
100 | 124 | // for(int i=0;i<act_lcd_lines;i++) |
|
101 | } |
125 | |
- | 126 | /* |
|
102 | 127 | } |
|
- | 128 | else |
|
- | 129 | { |
|
- | 130 | canvas.lcd_lines=new String[1]; |
|
103 | 131 | canvas.lcd_lines[0]="reading params"; |
|
104 | public final static int KEYCODE_CLEAR=-8; |
- | |
105 | - | ||
106 | public boolean editing_number=false; |
132 | } |
107 | - | ||
108 | public void keypress (int keyCode,int action) |
133 | */ |
109 | { |
134 | } |
110 | if (act_y==0) switch (action) |
135 | |
111 | { |
- | |
112 | case Canvas.RIGHT: |
- | |
113 | if (act_tab<canvas.mk.params.tab_names.length-1) act_tab++; |
- | |
114 | break; |
136 | |
115 | - | ||
116 | case Canvas.LEFT: |
- | |
117 | if (act_tab!=0) act_tab--; |
- | |
118 | break; |
- | |
119 | } |
- | |
120 | else |
- | |
121 | { |
- | |
122 | if(canvas.mk.params.field_types[act_tab][act_y/2-1]==canvas.mk.params.PARAMTYPE_BYTE) |
137 | public final static int KEYCODE_CLEAR=-8; |
123 | { |
- | |
124 | if ((keyCode >= Canvas.KEY_NUM0) && (keyCode <= Canvas.KEY_NUM9)) |
- | |
125 | { |
- | |
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 |
- | |
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; |
- | |
131 | return; |
- | |
132 | } |
- | |
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 | } |
138 | |
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 | { |
- | |
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); |
139 | public boolean editing_number=false; |
153 | break; |
140 | |
154 | } |
- | |
155 | break; |
141 | public void keypress (int keyCode,int action) |
Line 156... | Line -... | ||
156 | - | ||
157 | case Canvas.LEFT: |
- | |
158 | switch(canvas.mk.params.field_types[act_tab][act_y/2-1]) |
- | |
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); |
- | |
Line -... | Line 142... | ||
- | 142 | { |
|
- | 143 | ||
- | 144 | if (select_mode) |
|
- | 145 | { |
|
- | 146 | if (action== Canvas.FIRE) |
|
- | 147 | { |
|
- | 148 | ||
- | 149 | if (canvas.act_menu_select==(menu_items.length-1)) |
|
- | 150 | canvas.chg_state(nextstate); |
|
- | 151 | else |
|
- | 152 | ||
- | 153 | { |
|
167 | break; |
154 | act_tab=canvas.act_menu_select; |
- | 155 | select_mode=false; |
|
- | 156 | act_y=1; |
|
- | 157 | } |
|
- | 158 | } |
|
- | 159 | else |
|
- | 160 | canvas.menu_keypress(keyCode); |
|
- | 161 | } |
|
- | 162 | else |
|
Line -... | Line 163... | ||
- | 163 | { |
|
- | 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 |
|
- | 176 | edit_source.set_field_from_act(edit_source.field_positions[act_tab][act_pos] , (keyCode - Canvas.KEY_NUM0)); |
|
Line -... | Line 177... | ||
- | 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: |
|
168 | } |
247 | case PARAMTYPE_STICK: |
- | 248 | edit_source.field_from_act_add(edit_source.field_positions[act_tab][act_pos],-1); |
|
169 | 249 | break; |