12,30 → 12,57 |
implements org.ligi.ufo.MKParamDefinitions |
{ |
|
public byte nextstate; |
|
private int act_tab=0; |
public int act_y=0; |
public int act_y=1; |
private int act_lcd_lines=10; |
|
DUBwiseCanvas canvas; |
|
public String[] lcd_lines; |
|
// org.ligi.ufo.MKCommunicator _mk; |
public String[] menu_items; |
|
public String[] lcd_lines; |
org.ligi.ufo.ParamsClass edit_source; |
|
|
public MKParamsEditor(DUBwiseCanvas _canvas) |
|
public MKParamsEditor(DUBwiseCanvas _canvas,org.ligi.ufo.ParamsClass _edit_source,byte _nextstate) |
{ |
nextstate=_nextstate; |
edit_source=_edit_source; |
|
canvas=_canvas; |
lcd_lines=new String[40]; |
// refresh_lcd(); |
} |
|
|
boolean select_mode=true; |
|
|
public void paint ( Graphics g) |
{ |
refresh_lcd(); |
canvas.paint_lcd(g,false); |
if (select_mode) |
{ |
if (canvas.menu_items[0]!=edit_source.tab_names[0]) // usefull? |
{ |
act_y=1; |
menu_items=new String[edit_source.tab_names.length+1]; |
for(int p=0;p<edit_source.tab_names.length;p++) |
menu_items[p]=edit_source.tab_names[p]; |
menu_items[edit_source.tab_names.length]="back"; |
canvas.setup_menu(menu_items,null); |
} |
canvas.paint_menu(g); |
} |
|
else |
{ |
refresh_lcd(); |
// canvas.paint_lcd(g,false); |
canvas.paint_lcd(g,true); |
} |
} |
|
|
42,55 → 69,61 |
public void refresh_lcd() |
{ |
|
if (canvas.mk!=null) |
{ |
act_lcd_lines=canvas.mk.params.field_names[act_tab].length*2+1; |
for ( int i=0;i<act_lcd_lines;i++) |
lcd_lines[i]=""; |
try { |
act_lcd_lines=edit_source.field_names[act_tab].length*2+2; |
|
for ( int i=0;i<act_lcd_lines;i++) |
lcd_lines[i]=""; |
|
|
|
// lcd_lines[0]=(act_tab==0?" ":"< ") + edit_source.tab_names[act_tab] + (act_tab==(edit_source.tab_names.length-1)?" ":" >"); |
|
for (int i=0;i<edit_source.field_names[act_tab].length;i++) |
{ |
lcd_lines[2*i]=edit_source.field_names[act_tab][i]; |
|
switch(edit_source.field_types[act_tab][i]) |
{ |
case PARAMTYPE_BITSWITCH: |
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" ) ; |
break; |
case PARAMTYPE_BYTE: |
lcd_lines[1+2*i]=""+edit_source.get_field_from_act(edit_source.field_positions[act_tab][i]); |
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)) |
lcd_lines[2+2*i]+="[Poti"+(edit_source.get_field_from_act(edit_source.field_positions[act_tab][i])-250) +"]"; break; |
|
|
try |
{ |
case PARAMTYPE_KEY: |
case PARAMTYPE_STICK: |
lcd_lines[1+2*i]=""+edit_source.get_field_from_act(edit_source.field_positions[act_tab][i]); |
break; |
|
default: |
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])]; |
} |
|
} |
|
lcd_lines[act_lcd_lines-1]="back"; |
|
canvas.lcd_lines=new String[act_lcd_lines]; |
for ( int i=0;i<act_lcd_lines;i++) |
{ |
lcd_lines[i]=(act_y==i?"#":" ")+lcd_lines[i]; |
while(lcd_lines[i].length()<20) |
lcd_lines[i]+=" "; |
|
lcd_lines[0]=(act_tab==0?" ":"< ") + canvas.mk.params.tab_names[act_tab] + (act_tab==(canvas.mk.params.tab_names.length-1)?" ":" >"); |
canvas.lcd_lines[i]=lcd_lines[i]; |
} |
|
for (int i=0;i<canvas.mk.params.field_names[act_tab].length;i++) |
{ |
lcd_lines[1+2*i]=canvas.mk.params.field_names[act_tab][i]; |
if (canvas.mk.params.field_types[act_tab][i]== canvas.mk.params.PARAMTYPE_BITSWITCH) |
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" ) ; |
if (canvas.mk.params.field_types[act_tab][i]== canvas.mk.params.PARAMTYPE_BYTE) |
{ |
lcd_lines[2+2*i]=""+canvas.mk.params.get_field_from_act(canvas.mk.params.field_positions[act_tab][i]); |
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)) |
lcd_lines[2+2*i]+="[Poti"+(canvas.mk.params.get_field_from_act(canvas.mk.params.field_positions[act_tab][i])-250) +"]"; |
} |
} |
|
if (canvas.mk.params.field_types[act_tab][i]== canvas.mk.params.PARAMTYPE_STICK) |
{ |
lcd_lines[2+2*i]=""+canvas.mk.params.get_field_from_act(canvas.mk.params.field_positions[act_tab][i]); |
} |
|
catch (Exception e){} |
|
// for(int i=0;i<act_lcd_lines;i++) |
|
|
} |
|
for (int i=0;i<act_lcd_lines;i++) |
{ |
lcd_lines[i]=(act_y==i?"#":" ")+lcd_lines[i]; |
} |
|
for ( int i=0;i<act_lcd_lines;i++) |
while(lcd_lines[i].length()<20) |
{ |
lcd_lines[i]+=" "; |
} |
} |
catch (Exception e){} |
canvas.lcd_lines=new String[act_lcd_lines]; |
for(int i=0;i<act_lcd_lines;i++) |
canvas.lcd_lines[i]=lcd_lines[i]; |
|
/* |
} |
else |
{ |
97,7 → 130,7 |
canvas.lcd_lines=new String[1]; |
canvas.lcd_lines[0]="reading params"; |
} |
|
*/ |
} |
|
|
107,90 → 140,137 |
|
public void keypress (int keyCode,int action) |
{ |
if (act_y==0) switch (action) |
{ |
case Canvas.RIGHT: |
if (act_tab<canvas.mk.params.tab_names.length-1) act_tab++; |
break; |
|
case Canvas.LEFT: |
if (act_tab!=0) act_tab--; |
break; |
} |
else |
if (select_mode) |
{ |
if(canvas.mk.params.field_types[act_tab][act_y/2-1]==canvas.mk.params.PARAMTYPE_BYTE) |
if (action== Canvas.FIRE) |
{ |
if ((keyCode >= Canvas.KEY_NUM0) && (keyCode <= Canvas.KEY_NUM9)) |
|
if (canvas.act_menu_select==(menu_items.length-1)) |
canvas.chg_state(nextstate); |
else |
|
{ |
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)) |
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)); |
else |
canvas.mk.params.set_field_from_act(canvas.mk.params.field_positions[act_tab][act_y/2-1] , (keyCode - Canvas.KEY_NUM0)); |
editing_number=true; |
return; |
act_tab=canvas.act_menu_select; |
select_mode=false; |
act_y=1; |
} |
else |
if ( keyCode==KEYCODE_CLEAR) |
canvas.mk.params.set_field_from_act(canvas.mk.params.field_positions[act_tab][act_y/2-1],0); |
} |
editing_number=false; |
|
switch (action) |
{ |
|
case Canvas.RIGHT: |
switch(canvas.mk.params.field_types[act_tab][act_y/2-1]) |
{ |
case PARAMTYPE_BITSWITCH: |
|
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)); |
break; |
case PARAMTYPE_BYTE: |
case PARAMTYPE_STICK: |
|
canvas.mk.params.field_from_act_add(canvas.mk.params.field_positions[act_tab][act_y/2-1],1); |
break; |
} |
break; |
|
case Canvas.LEFT: |
switch(canvas.mk.params.field_types[act_tab][act_y/2-1]) |
{ |
case PARAMTYPE_BITSWITCH: |
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)); |
|
break; |
case PARAMTYPE_BYTE: |
case PARAMTYPE_STICK: |
canvas.mk.params.field_from_act_add(canvas.mk.params.field_positions[act_tab][act_y/2-1],-1); |
break; |
} |
|
|
break; |
} |
|
else |
canvas.menu_keypress(keyCode); |
} |
|
switch (action) |
else |
{ |
|
case Canvas.DOWN: |
if (act_y<(act_lcd_lines-2)) act_y+=2; |
else act_y=0; |
break; |
|
case Canvas.UP: |
if (act_y!=0) act_y-=2; |
else act_y=act_lcd_lines-1; |
break; |
|
} |
if ((act_y!=(act_lcd_lines-1))&&(((keyCode >= Canvas.KEY_NUM0) && (keyCode <= Canvas.KEY_NUM9))|| ( keyCode==KEYCODE_CLEAR))) |
{ |
int act_pos=act_y/2; |
if((edit_source.field_types[act_tab][act_pos]==edit_source.PARAMTYPE_BYTE)) |
{ |
if ((keyCode >= Canvas.KEY_NUM0) && (keyCode <= Canvas.KEY_NUM9)) |
{ |
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)) |
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)); |
else |
edit_source.set_field_from_act(edit_source.field_positions[act_tab][act_pos] , (keyCode - Canvas.KEY_NUM0)); |
editing_number=true; |
return; |
} |
else |
if ( keyCode==KEYCODE_CLEAR) |
edit_source.set_field_from_act(edit_source.field_positions[act_tab][act_pos],0); |
} |
editing_number=false; |
|
} |
|
refresh_lcd(); |
switch (action) |
{ |
|
case Canvas.DOWN: |
if (act_y<(act_lcd_lines-2)) act_y+=2; |
else act_y=1; |
break; |
|
case Canvas.UP: |
if (act_y!=1) act_y-=2; |
else act_y=act_lcd_lines-1; |
break; |
|
default: |
|
|
} |
|
if (act_y!=(act_lcd_lines-1)) |
{ |
|
// |
|
int act_pos=act_y/2; |
|
if((edit_source.field_types[act_tab][act_pos]==edit_source.PARAMTYPE_KEY)) |
edit_source.set_field_from_act(edit_source.field_positions[act_tab][act_pos],keyCode); |
|
switch (action) |
{ |
|
case Canvas.RIGHT: |
switch(edit_source.field_types[act_tab][act_pos]) |
{ |
case PARAMTYPE_BITSWITCH: |
|
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)); |
break; |
|
|
case PARAMTYPE_BYTE: |
case PARAMTYPE_STICK: |
|
edit_source.field_from_act_add(edit_source.field_positions[act_tab][act_pos],1); |
break; |
|
default: |
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); |
break; |
} |
break; |
|
case Canvas.LEFT: |
switch(edit_source.field_types[act_tab][act_pos]) |
{ |
case PARAMTYPE_BITSWITCH: |
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)); |
|
break; |
case PARAMTYPE_BYTE: |
case PARAMTYPE_STICK: |
edit_source.field_from_act_add(edit_source.field_positions[act_tab][act_pos],-1); |
break; |
default: |
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); |
break; |
} |
|
|
break; |
} |
|
} |
else |
if (action== Canvas.FIRE) |
{ |
act_y=1; |
canvas.menu_items[0]=""; |
select_mode=true; |
|
} |
} |
|
|
// if (!select_mode)refresh_lcd(); |
|
} |
} // keypress |
} |
|