Main Page | Packages | Class Hierarchy | Class List | Directories | File List | Class Members | Related Pages

DropMenu.java

Go to the documentation of this file.
00001 // -*- Java -*-
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;  // dropmenu 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       //setColors(sk.PAIR_BLACK_WHITE,sk.PAIR_WHITE_BLUE);
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       //      leftItem.setAttribute(sk.SK_BOLD);
00045    }
00046 
00047    private DropMenu(){ }
00048 
00049    //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00050    private int fieldWidth;
00055    public int getFieldWidth(){
00056      return this.fieldWidth; 
00057    } // getFieldWidth()
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; // position of highlighted item
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          if( displayRow == 0 ){
00147             loadPage(folder1.getParentName());
00148          }else{
00149             prow = rows[displayRow];
00150             String path = prow.file.getAbsolutePath();
00151             mcj.logFile.putString( path );
00152             loadPage( path );
00153          }
00154          now = -1;
00155          displayRow = 0;
00156          */
00157          break;
00158 
00159       case kb.KEY_HOME:
00160          now = -1;
00161          //folder1.setAnchor(0);
00162          //loadView();
00163          break;
00164 
00165       case kb.KEY_PGDN:
00166          //folder1.setAnchor( folder1.getAnchor() + (NUM_TXT_ROWS-1));
00167          now = -1;
00168          //loadView();
00169          break;
00170 
00171       case kb.KEY_PGUP:
00172          //folder1.setAnchor( folder1.getAnchor() - (NUM_TXT_ROWS-1));
00173          now = -1;
00174          //loadView();
00175          break;
00176       default:
00177          break;
00178       }
00179       return (now != displayRow);
00180    }
00181 
00182 
00183 }  // DropMenu.java
00184 

SourceForge.net Logo