J2ME Java

/* License
 * 
 * Copyright 1994-2004 Sun Microsystems, Inc. All Rights Reserved.
 * 
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *  
 *  * Redistribution of source code must retain the above copyright notice,
 *      this list of conditions and the following disclaimer.
 * 
 *  * Redistribution in binary form must reproduce the above copyright notice,
 *      this list of conditions and the following disclaimer in the
 *      documentation and/or other materials provided with the distribution.
 * 
 * Neither the name of Sun Microsystems, Inc. or the names of contributors
 * may be used to endorse or promote products derived from this software
 * without specific prior written permission.
 *  
 * This software is provided "AS IS," without a warranty of any kind. ALL
 * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING
 * ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
 * OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN MICROSYSTEMS, INC. ("SUN")
 * AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE
 * AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS
 * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST
 * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL,
 * INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY
 * OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,
 * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
 *  
 * You acknowledge that this software is not designed, licensed or intended
 * for use in the design, construction, operation or maintenance of any
 * nuclear facility. 
 */
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
public class ListDemoMIDlet extends MIDlet {
    private Display              display;
    private int                  mode = List.IMPLICIT;
    private Command exitCommand = new Command( "Exit",
                                   Command.SCREEN, 2 );
    private Command selectCommand = new Command( "Select",
                                       Command.OK, 1 );
    private Command nextCommand = new Command( "Next",
                                   Command.SCREEN, 2 );
    public ListDemoMIDlet(){
    }
    protected void destroyApp( boolean unconditional )
                   throws MIDletStateChangeException {
        exitMIDlet();
    }
    protected void pauseApp(){
    }
    protected void startApp() throws
    MIDletStateChangeException {
        if( display == null ){ // first time called...
            initMIDlet();
        }
    }
    private void initMIDlet(){
        display = Display.getDisplay( this );
        display.setCurrent( new SampleList( mode ) );
    }
    public void exitMIDlet(){
        notifyDestroyed();
    }
    public static final String[] items = {
        "First", "Second", "Third", "Fourth"
    };
    class SampleList extends List implements
                           CommandListener {
        private int mode;
        SampleList( int mode ){
            super( "", mode, items, null );
            addCommand( exitCommand );
            addCommand( selectCommand );
            addCommand( nextCommand );
            setCommandListener( this );
            switch( mode ){
                case IMPLICIT:
                    setTitle( "Implicit" );
                    break;
                case EXCLUSIVE:
                    setTitle( "Exclusive" );
                    break;
                case MULTIPLE:
                    setTitle( "Multiple" );
                    break;
            }
            this.mode = mode;
        }
        public void commandAction( Command c,
                             Displayable d ){
            if( c == exitCommand ){
                exitMIDlet();
            } else if( c == selectCommand ){
                showSelection( false );
            } else if( c == SELECT_COMMAND ){
                showSelection( true );
            } else if( c == nextCommand ){
                if( mode == List.IMPLICIT ){
                    mode = List.EXCLUSIVE;
                } else if( mode == List.EXCLUSIVE ){
                    mode = List.MULTIPLE;
                } else {
                    mode = List.IMPLICIT;
                }
                display.setCurrent( new SampleList(
                                             mode ) );
            }
        }
        private void showSelection( boolean implicit ){
            Alert alert = new Alert(
                       implicit ? "Implicit Selection"
                               : "Explicit Selection" );
            StringBuffer buf = new StringBuffer();
            if( mode == MULTIPLE ){
                boolean[] selected = new boolean[ size() ];
                getSelectedFlags( selected );
                for( int i = 0; i < selected.length; ++i ){
                    if( selected[i] ){
                        if( buf.length() == 0 ){
                            buf.append(
                             "You selected: " );
                        } else {
                            buf.append( ", " );
                        }
                        buf.append( getString( i ) );
                    }
                }
                if( buf.length() == 0 ){
                    buf.append( "No items are selected." );
                }
            } else {
                buf.append( "You selected " );
                buf.append( getString(
                       getSelectedIndex() ) );
            }
            alert.setString( buf.toString() );
            alert.setTimeout( Alert.FOREVER );
            display.setCurrent( alert,display.getCurrent() );
        }
    }
}