/*--------------------------------------------------
* NonInteractiveGauge.java
*
* Example from the book: Core J2ME Technology
* Copyright John W. Muchow http://www.CoreJ2ME.com
* You may use/modify for any non-commercial purpose
*-------------------------------------------------*/
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.util.Timer;
import java.util.TimerTask;
public class NonInteractiveGauge extends MIDlet implements CommandListener
{
private Display display; // Reference to display object
private Form fmMain; // The main form
private Command cmExit; // Exit the form
private Command cmStop; // Stop the download
private Gauge gaProgress; // Progress indicator
private Timer tm; // The Timer
private DownloadTimer tt; // The task to run
public NonInteractiveGauge()
{
display = Display.getDisplay(this);
// Create the gauge, exit and stop command
gaProgress = new Gauge("Download Progress", false, 20, 1);
cmExit = new Command("Exit", Command.EXIT, 1);
cmStop = new Command("Stop", Command.STOP, 1);
// Create the form, add gauge & stop command, listen for events
fmMain = new Form("");
fmMain.append(gaProgress);
fmMain.addCommand(cmStop);
fmMain.setCommandListener(this);
}
// Called by application manager to start the MIDlet.
public void startApp()
{
display.setCurrent(fmMain);
// Create a timer that fires off every 1000 milliseconds
tm = new Timer();
tt = new DownloadTimer();
tm.scheduleAtFixedRate(tt, 0, 1000);
}
public void pauseApp()
{ }
public void destroyApp(boolean unconditional)
{ }
public void commandAction(Command c, Displayable s)
{
if (c == cmExit)
{
destroyApp(false);
notifyDestroyed();
}
else if (c == cmStop)
{
tm.cancel();
fmMain.removeCommand(cmStop);
fmMain.addCommand(cmExit);
gaProgress.setLabel("Download Cancelled!");
}
}
/*--------------------------------------------------
* Process the Timer Task
*-------------------------------------------------*/
private class DownloadTimer extends TimerTask
{
public final void run()
{
// Is current value of gauge less than the max?
if (gaProgress.getValue() < gaProgress.getMaxValue())
gaProgress.setValue(gaProgress.getValue() + 1);
else
{
// Remove stop command and replace with Exit
fmMain.removeCommand(cmStop);
fmMain.addCommand(cmExit);
// Change the gauge label
gaProgress.setLabel("Download Complete!");
// Stop the timer
cancel();
}
}
}
}
|