SimpleTest.java

/**
 * Copyright (c) 2013 Nokia Corporation. All rights reserved.
 * Nokia and Nokia Connecting People are registered trademarks of Nokia 
Corporation.
 * Oracle and Java are trademarks or registered trademarks of Oracle and/or its
 * affiliates. Other product and company names mentioned herein may be trademarks
 * or trade names of their respective owners.
 * See LICENSE.TXT for license information.
 */

package com.nokia.example;

import java.util.Date;

import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.DateField;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Gauge;
import javax.microedition.lcdui.Item;
import javax.microedition.lcdui.ItemStateListener;
import javax.microedition.lcdui.TextField;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

/**
 * A simple MIDlet composed of few commonly used UI components. In addition,
 * the example demonstrates how to show a custom Canvas as a second view.
 */
public class SimpleTest
	extends MIDlet
	implements CommandListener, ItemStateListener
{
	// Constants
	private static final int MAX_GAUGE_VALUE = 100;
	private static final int INITIAL_GAUGE_VALUE = 10;
	
	// Members
    private Form myForm = null;
    private Gauge myGauge = null;
    private TextField myTextField = null;
	private DateField myDateField = null;
	private HelloCanvas myCanvas = null;  
	private int previousGaugeValue = INITIAL_GAUGE_VALUE;
    private final Command exitCommand = new Command("Exit", Command.EXIT, 1);
    private final Command backCommand = new Command("Back", Command.BACK, 1);
    private final Command displayCommand = new Command("Show canvas", Command.SCREEN, 2);

    /**
     * Constructor.
     */
    public SimpleTest() {
    	// Create a new form to contain all the UI elements
        myForm = new Form("Simple Test");
        
        // Create a new date field with the current time
        myDateField = new DateField("Date", DateField.DATE_TIME);
        myDateField.setDate(new Date());
        
        // Create a new gauge (slider) component with MAX_GAUGE_VALUE as the
        // maximum value and INITIAL_GAUGE_VALUE as the initial value
        myGauge = new Gauge("Gauge value", true, MAX_GAUGE_VALUE, INITIAL_GAUGE_VALUE);
        
        // Create a new text field component with maximum size of three
        // characters, and expect the characters to be numeric
        myTextField = new TextField("Enter value (0 to " + MAX_GAUGE_VALUE + ")",
                                    String.valueOf(INITIAL_GAUGE_VALUE),
                                    3, TextField.NUMERIC);
        
        // Append the created components into the form
        myForm.append(myDateField);
        myForm.append(myGauge);
        myForm.append(myTextField);
        
        // Add commands to the form and set the form as both the command and
        // the item listener
        myForm.addCommand(displayCommand);
        myForm.addCommand(exitCommand);
        
        myForm.setCommandListener(this);
        myForm.setItemStateListener(this);
        
        // Create a custom canvas instance
        myCanvas = new HelloCanvas();
        myCanvas.addCommand(backCommand);
        myCanvas.setCommandListener(this);
    }

    /**
     * From MIDlet.
     */
    public void startApp() {
        Display.getDisplay(this).setCurrent(myForm);
    }

    /**
     * From MIDlet.
     */
    public void pauseApp() {
    }

    /**
     * From MIDlet.
     */
    public void destroyApp(boolean unconditional) throws MIDletStateChangeException {
    }

    /**
     * From CommandListener.
     */
    public void commandAction(Command command, Displayable displayable) {
        if (command == exitCommand) {
        	// Exit the app
            notifyDestroyed();
        }
        else if (command == backCommand) {
        	// This command was executed in custom Canvas. Return back to the
        	// original form view.
            Display.getDisplay(this).setCurrent(myForm);
        }
        else if (command == displayCommand) {
        	// Show the custom Canvas
            Display.getDisplay(this).setCurrent(myCanvas);
            myCanvas.showText();
        }
    }

    /**
     * From ItemStateListener.
     * 
     * If the value of the text field has changed, updates the gauge
     * accordingly. Similarly, if the value of the gauge has changed, the text
     * in the text field is updated.
     */
    public void itemStateChanged(Item item) {
        if (item == myTextField) {
            String valueString = myTextField.getString();
            
            if (valueString.length() > 0) {
                final int value = Integer.parseInt(valueString);
                
                if (value > MAX_GAUGE_VALUE) {
                    // Invalid value
                    myTextField.setString(String.valueOf(previousGaugeValue));
                }
                else {
                    myGauge.setValue(value);
                    previousGaugeValue = value;
                }
            }
        }
        else if (item == myGauge) {
            final int value = myGauge.getValue();
            myTextField.setString(String.valueOf(value));
            previousGaugeValue = value;
        }
	}
}