00001
00002 package pkgMcj;
00003
00004 import java.io.*;
00005 import java.util.*;
00006 import pkgView.*;
00007
00013
00014
00016 public class DropMenu {
00017
00018 private Mcj mcj;
00019 private Vector vector;
00020 private ScreenKit sk = ScreenKit.getSingleton();
00021 private Keyboard kb = Keyboard.getSingleton();
00022
00023 private int defaultColor = sk.PAIR_WHITE_BLUE;
00024 private int activeColor = sk.PAIR_BLACK_WHITE;
00025 private int panelId;
00026
00027 private TextItem title;
00028 private TextItem item;
00029
00030
00031
00036 public DropMenu( Mcj app, String titleStr, int row, int col){
00037 mcj = app;
00038 vector = new Vector();
00039
00040 fieldWidth = titleStr.length();
00041 title = new TextItem( titleStr, fieldWidth );
00042 title.setColors( sk.PAIR_BLACK_CYAN, sk.PAIR_WHITE_BLACK );
00043 title.setPosition( row, col);
00044
00045 }
00046
00047 private DropMenu(){ }
00048
00049
00050 private int fieldWidth;
00055 public int getFieldWidth(){
00056 return this.fieldWidth;
00057 }
00058
00059
00060
00064 public void redraw(){
00065 int i;
00066 title.setSelected( hasFocus() );
00067 title.redraw();
00068 for( i=0; i < vector.size(); i++ ){
00069 item = (TextItem)vector.elementAt(i);
00070 item.setSelected( displayRow==i );
00071 item.redraw();
00072 }
00073 }
00074
00075
00079 public void addItem( TextItem textItem ){
00080 vector.add(textItem);
00081 }
00082
00083
00092 public void setColors( int color1, int color2 ){
00093 defaultColor = color1;
00094 activeColor = color2;
00095 }
00096
00097
00103 private boolean hasFocus( ){
00104 int tv = mcj.currentMode;
00105
00106 boolean tf = false;
00107 if( tv == mcj.STATE_PULDN ){
00108 tf =
00109 (panelId == mcj.DROP_LEFT ||
00110 panelId == mcj.DROP_FILE ||
00111 panelId == mcj.DROP_OPTION ||
00112 panelId == mcj.DROP_CMD ||
00113 panelId == mcj.DROP_RIGHT
00114 );
00115 }
00116 return tf;
00117 }
00118 private int displayRow;
00119
00125 private boolean updateRow( int k ){
00126 if( !hasFocus() ) return false;
00127 int now = displayRow;
00128 int tv = vector.size();
00129 if( tv < 1 ) return false;
00130 switch (k){
00131
00132 case kb.KEY_DOWN:
00133 if( ++displayRow >= tv ){
00134 displayRow = tv-1;
00135 }
00136 break;
00137
00138 case kb.KEY_UP:
00139 if( --displayRow < 0 ){
00140 displayRow = 0;
00141 }
00142 break;
00143
00144 case kb.KEY_ENTER:
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155
00156
00157 break;
00158
00159 case kb.KEY_HOME:
00160 now = -1;
00161
00162
00163 break;
00164
00165 case kb.KEY_PGDN:
00166
00167 now = -1;
00168
00169 break;
00170
00171 case kb.KEY_PGUP:
00172
00173 now = -1;
00174
00175 break;
00176 default:
00177 break;
00178 }
00179 return (now != displayRow);
00180 }
00181
00182
00183 }
00184