• No results found

Kod för LoggBokMidlet 

Bildkällor

Bilaga 2:  Kod för LoggBokMidlet 

 

/**

* LoggBokMidlet är en applikation som fungerar som en Loggbok.

* Midleten är skriven som ett examensarbete i pedagogik, för Malmö Högskola. * @author mathiasfredriksson * @version "%I%, %G%" * @since 1.0 */ /* * LoggbokMidlet.java *

* Created on den 30 augusti 2007, 12:08 */

import javax.microedition.midlet.*; import javax.microedition.lcdui.*; import java.util.*;

/**

* LoggBokMidlet är en applikation som fungerar som en Loggbok. * Börja med att välja kurs i aktivitetslistan,

* därefter skriver du i vilket datum du varit aktiv, */

public class LoggBokMidlet extends MIDlet { private Display disp;

private Alert tTimedAlert, val, savedAlert; private List lista, lista2;

private Command bekräftaVal, bakåtVal, okVal, okFormulär2, bakåtFormulär2, okLista2, bakåtLista2, avslutaVisa, nyttVisa, avslutaReflektion, nyttReflektion; private KommandoLyssnaren klyssn;

private DateField datumfält; private Form formulär, formulär2; private TextField rubrik, reflektion; private Gauge svarighet;

private TextBox visaAllt, elevReflektion; private String aktivitet, datum, tempstring; private Date dat;

private Calendar kal; int temp=0;

private Vector sparVektor;

/**

* Startar metoden LoggBokMidlet d.v.s. mobilapplikationen. */

public void startApp() { LoggBokMidlet(); } /** * Oanvänt pausekommando */

public void pauseApp() { }

/**

* Skrotar applikationen. */

public void destroyApp(boolean unconditional) { }

/**

* Kör igång programmet. Först konstrueras en alert, med texten Loggbok, * för att tala om vad programmet ska göras. Alerten visas under 2 sekunder. * Nu görs en lista där användaren kan välja kurser implicit.

* Sist kopplar jag handtaget till telefonen, och visar sakerna i displayen. */

public void LoggBokMidlet(){

try {

// Gör en bild

Image alertimage = Image.createImage("/loggbok2.png");

//Gör alerten, Lägger till text och bild

tTimedAlert = new Alert("Loggbok", "Loggbok version 1.1\n", alertimage , AlertType.INFO);

//Ställ visningstiden till 2 sekunder tTimedAlert.setTimeout(2000); }

//Om undantag sker: catch(Exception e) {

// skriv ut i outputen att bilden inte kan visas. System.out.println("Kan inte visa png-bilden."); }

//Gör en implict-lista att välja kurser från lista = new List("Kurs", Choice.IMPLICIT);

//Lägg valen i listan

lista.append("Fysik A", null);

lista.append("Digitalteknik A", null); lista.append("Digitalteknik B", null); lista.append("Styrteknik A", null); lista.append("Lokala Nätverk A", null); lista.append("Lokala Nätverk B", null); lista.append("IT-samordning", null); lista.append("Projektarbete", null);

//Gör ett kommando för att bekräfta val och lägg till det till listan. bekräftaVal = new Command("Bekräfta", Command.OK, 1); lista.addCommand(bekräftaVal);

//Gör en kommandolyssnare som lyssnar efter kommando i listan. klyssn = new KommandoLyssnaren();

lista.setCommandListener(klyssn);

// Laddar handtag och visar alerten. disp = Display.getDisplay(this);

disp.setCurrent(tTimedAlert, lista); }

/**

* Date(), konstruerar ett formulär med rubriken "Ange loggbokstillfällets datum" * Val av kommandona "Bakåt" och "Ok" finns också kopplade till

kommandolyssnaren.

* Dagens datum hämtas också via @see java.util.Date().

* Dagens datum finns sedan som default-val när datumfältet presenteras i displayen. *

*/

public void date(){

//Gör ett formulär för datum

formulär = new Form("Ange loggbokstillfällets datum");

//Gör kommando och lägg till på formuläret

bakåtVal = new Command("Bakåt", Command.BACK, 1); okVal = new Command("Ok", Command.OK, 2);

formulär.addCommand(bakåtVal); formulär.addCommand(okVal); //Visa formuläret disp.setCurrent(formulär); //koppla på kommandolyssnaren klyssn = new KommandoLyssnaren(); formulär.setCommandListener(klyssn);

//hämta dagens datum

//Visa bara datum i datumfältet

datumfält = new DateField("Datum för logg", DateField.DATE); //Visa dagens datum

datumfält.setDate(dagensDatum);

//Lägg till fältet till formuläret formulär.append(datumfält);

}

/**

* Gör ett nytt formulär, innehållande värdena av: Rubrik, svårighetsgrad och reflektioner.

* Rubriken får max innehålla 30 tecken * Reflektionen får max innehålla 50 tecken. * Intensitetsträngen visar resultat mellan 1 och 5.

* Dessa komponenter läggs till formuläret, händelselyssnaren kopplas på, för okej och bakåtknapp.

*/

public void gauge(){

//Gör en metod som gör formuläret för inmatning av rubrik, svårighet och reflektion

formulär2 = new Form("Ange reflektion:"); //Rubriken får max bestå av 30 tecken

rubrik = new TextField("Rubrik",null, 30, TextField.ANY); //Svårighetsgraden består av värdet 1 - 5och visas med en skala

svarighet = new Gauge("Svårighet (skala 1-5, där 5 är svårast)", true, 5, 1); // Reflektionen är begränsad till 255 tecken.

reflektion = new TextField("Skriv in din reflektion över valt moment", null, 255, TextField.ANY);

//Lägg till inmatade värdet i formulären formulär2.append(rubrik);

formulär2.append(svarighet); formulär2.append(reflektion);

//Lägg till kommando och koppla till knappar.

bakåtFormulär2 = new Command("Bakåt", Command.BACK, 1); okFormulär2 = new Command("Ok", Command.OK, 1);

formulär2.addCommand(bakåtFormulär2); formulär2.addCommand(okFormulär2); //Visa formuläret

disp.setCurrent(formulär2);

//Lyssna efter kommandon på formuläret. klyssn = new KommandoLyssnaren(); formulär2.setCommandListener(klyssn); }

/**

* Börjar med att visa en alert med information. Alerten innehåller också en bild som visas i 2 och en halv sekund.

* Alerten talar om att loggboksstillfället är tillagt och sparat. * Här sker också den temporära sparningen i en vektor.

* Avslutningsvis skrivs också all sparad information ut vid valt kommando. */

public void savedAlert(){

try {

// Gör en bild

Image alertimage2 = Image.createImage("/timglas.png");

// Gör alerten, Lägger till text och bild

savedAlert = new Alert("Sparat", "Loggbokstillfället är sparat!", alertimage2 , AlertType.INFO);

//Ställ visningstiden till 2,5 sekunder savedAlert.setTimeout(2500);

}

//Om undantag sker så skriv det ut i outputen. catch(Exception e)

{

System.out.println("Kan inte visa png-bilden."); }

//Visa alerten

disp.setCurrent(savedAlert);

//Om vektorn inte finns ska den göras //lägg även till inputen i vektorn if (temp==1) {

sparVektor = new Vector();

String out=temp + ". " + aktivitet + datum + "\n" + "Rubrik: " +

rubrik.getString() + "\nSvårighet: " + svarighet.getValue() + "\nReflektion över valda moment: " + reflektion.getString() + "\n";

//Lägges först i vektorn, för att underlätta utskriften sen sparVektor.insertElementAt(out, 0);

} else{

//Lägg till objekt i vektorn

String out="\n" + temp + ". " + aktivitet + datum + "\n" + "Rubrik: " +

rubrik.getString() + "\nSvårighet: " + svarighet.getValue() + "\nReflektion över valda moment: " + reflektion.getString() + "\n";

//Lägges först i vektorn, för att underlätta utskriften sen sparVektor.insertElementAt(out, 0);

}

//Visa allt i Vektorn, 2048 tecken är taget ur luften för att kunna testa att spara temporärt.

visaAllt = new TextBox("Din loggbok innehåller följande...", sparVektor.toString(), 2048 , TextField.ANY);

//Lägg till kommando på textboxen

avslutaVisa = new Command("Avsluta", Command.BACK, 1); nyttVisa = new Command("Mata in nytt", Command.SCREEN, 1); visaAllt.addCommand(avslutaVisa);

visaAllt.addCommand(nyttVisa);

klyssn = new KommandoLyssnaren(); visaAllt.setCommandListener(klyssn); //Visa alert och vad som finns sparas disp.setCurrent(savedAlert, visaAllt); }

//Gör en klass KommandoLyssnaren

private class KommandoLyssnaren implements CommandListener { //Talar om vad som ska hända vid de olika kommandona.

public void commandAction(Command c, Displayable s) { if ( c == bekräftaVal ) {

//Sortera ut vald kurs och gå till datummetoden int valtAlternativ = lista.getSelectedIndex();

aktivitet = "Vald kurs:" + lista.getString(valtAlternativ) + "\n"; date();

}

else if ( c == bakåtVal ) {

//Om man har valt att trycka på bakåt, börja från listan disp.setCurrent(lista);

}

else if ( c == okVal ) {

//Maska ut datum i rätt format dat = datumfält.getDate();

Calendar kal = Calendar.getInstance(); kal.setTime(dat);

int y = kal.get(Calendar.YEAR); int m = kal.get(Calendar.MONTH) + 1; int d = kal.get(Calendar.DATE);

datum = "Datum: " + (y<10? "0": "")+y+"-"+(m<10? "0": "")+m+"- "+(d<10?"0": "")+d;

//Kör mätaren för svårighetsgraden gauge();

}

else if ( c == bakåtFormulär2 )

//om valet är bakåt, börja från datumvalet date();

else if ( c == okFormulär2 ) {

//om valet stämde, Gör en alert med samtliga val som ska visas i telefonen i 5 sekund

temp=temp+1;

val = new Alert("Ditt loggboksinlägg", "Du vill lägga in följande inlägg:\n" + temp + ". " + aktivitet + datum + "\n" + "Rubrik: " + rubrik.getString() + "\nSvårighet: " + svarighet.getValue() + "\nReflektion över valda moment: " + reflektion.getString() + "\n", null, AlertType.INFO);

val.setTimeout(5000);

//Gör en lista där man får välja exklusivt om man ska spara eller inte lista2 = new List("Spara detta tillfälle?", Choice.EXCLUSIVE);

//Lägg till valens text

lista2.append("Ja - Visa hela loggboken", null); lista2.append("Nej - Avbryt och avsluta", null);

//Lägg till knapparna

bakåtLista2 = new Command("Bakåt", Command.BACK, 1); okLista2 = new Command("Ok", Command.OK, 1);

lista2.addCommand(bakåtLista2); lista2.addCommand(okLista2);

//Lyssna efter händelser

klyssn = new KommandoLyssnaren(); lista2.setCommandListener(klyssn);

disp.setCurrent(val, lista2); }

else if ( c == bakåtLista2 ) {

//Om valet var bakåt gå tillbaka till mätarsidan gauge();

temp=temp-1; }

else if ( c == okLista2 ) {

//Om valet är okej, plocka ut valt alternativ int valtAlternativ2 = lista2.getSelectedIndex(); String tmp = lista2.getString(valtAlternativ2); //Är svaret Nej, avbryt och avsluta

if (tmp == "Nej - Avbryt och avsluta") { destroyApp(false);

notifyDestroyed(); }

//Är svaret ja, gå till sparningsmetoden. else if ( tmp == "Ja - Visa hela loggboken") savedAlert();

}

else if ( c == avslutaVisa ) {

//Är valet att avsluta, avbryt och avsluta allt destroyApp(false);

notifyDestroyed(); }

else if ( c == nyttVisa ) {

//är valet en ny inmatning, gå tillbaka till aktivitetslistan disp.setCurrent(lista);

else if ( c == avslutaReflektion ) {

//Är valet att avsluta, avbryt och avsluta allt destroyApp(false);

notifyDestroyed(); }

else if ( c == nyttReflektion ) {

//är valet en ny inmatning, gå tillbaka till aktivitetslistan disp.setCurrent(lista); } } } }  

Related documents