Subversion Repositories Projects

Rev

Rev 82 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

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