Subversion Repositories Projects

Rev

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