1   package autol;
2   import javax.microedition.midlet.MIDlet;
3   import javax.microedition.midlet.MIDletStateChangeException;
4   import javax.microedition.lcdui.*; 
5   import counterWidgets.*;
6   
7   /**
8    * Midletti autolaskuria varten.  Autolaskurissa on
9    * kaksi laskuria, henkilöautoja ja kuorma-autoja varten.
10   * Lisäksi on nollaa nappula ja yhteislaskuri.
11   * Toteutus käyttäen mahdollisimman paljon tarkoitusta varten
12   * suunniteltuja komponentteja.
13   * @author vesal
14   * @version 17.3.2007
15   */
16  public class AutolMidlet extends MIDlet implements Counter.ChangeCommandListener {
17  
18    private Display display;
19    private Form form;
20    private Counter counterHA;
21    private Counter counterKA;
22    private Counter counterYht; 
23    private Button buttonNollaa;
24    
25    /**
26     * Alustetaan midletti luomalla laskurit ja näppäimet lomakkeelle.
27     */
28    public AutolMidlet() {
29      display = Display.getDisplay(this);
30      form = new Form("Autolaskuri");
31      
32      counterYht = new Counter("Yhteensä");           form.append(counterYht);
33      counterHA = new CounterButton("Henkilöautoja"); form.append(counterHA);
34      counterHA.setChangeCommandListener(this);
35      counterKA = new CounterButton("Kuorma-autoja"); form.append(counterKA);
36      counterKA.setChangeCommandListener(this);
37      buttonNollaa = new ResetButton(form,"Nollaa");  form.append(buttonNollaa);
38    }
39  
40    /**
41     * Ohjelman loppuessa ilmoitetaan tästä.
42     */
43    protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
44      display.setCurrent(null);
45      notifyDestroyed();
46    } 
47  
48    /**
49     * Ohjelman pysähtyessä ei tarvitse tehdä mitään erikoista.
50     */
51    protected void pauseApp() {
52    }
53  
54    /**
55     * Kun ohjelma lähtee käyntiin, vaihdetaan näyttö.
56     */
57    protected void startApp() throws MIDletStateChangeException {
58      display.setCurrent(form);
59    }
60  
61    /**
62     * Kun tulee tieto että laskurin arvo on muuttunut, niin muutetaan
63     * samalla määrällä yhteislaskuria.
64     * @param it muuttunut laskuri
65     * @param diff paljonko laskuri muuttui 
66     * @see counterWidgets.Counter.ChangeCommandListener#commandChange(counterWidgets.Counter, int)
67     */
68    public void commandChange(Counter it, int diff) {
69      counterYht.inc(diff);
70    }
71    
72  }
73