import javax.microedition.midlet.*; import javax.microedition.lcdui.*; import javax.microedition.rms.RecordStore; import javax.microedition.rms.RecordStoreException; import javax.microedition.rms.InvalidRecordIDException; import javax.microedition.rms.RecordEnumeration; public class Anteckningar extends MIDlet implements CommandListener { private Display displayen; private TextBox textrutan; private List öppnalistan; private Form sparaformuläret; private Alert felrutan; private TextField filnamnsfältet; private Command exitkommandot; private Command öppnakommandot; private Command sparakommandot; private Command nykommandot; private Command ångrakommandot; private Command fel_ok_kommandot; static private String postlagernamnet = "anteckningar"; public Anteckningar() { textrutan = new TextBox("Anteckningar", "", 2000, 0); öppnalistan = new List("Anteckningar", Choice.EXCLUSIVE); sparaformuläret = new Form("Anteckningar"); filnamnsfältet = new TextField("Filnamn", "Ny anteckning", 20, 0); sparaformuläret.append(filnamnsfältet); exitkommandot = new Command("Avsluta", Command.EXIT, 0); sparakommandot = new Command("Spara anteckningen", Command.SCREEN, 0); öppnakommandot = new Command("Öppna en anteckning", Command.SCREEN, 0); nykommandot = new Command("Skapa en ny anteckning", Command.SCREEN, 0); ångrakommandot = new Command("Ångra", Command.SCREEN, 0); fel_ok_kommandot = new Command("OK", Command.SCREEN, 0); textrutan.addCommand(exitkommandot); textrutan.addCommand(sparakommandot); textrutan.addCommand(öppnakommandot); textrutan.addCommand(nykommandot); textrutan.setCommandListener(this); öppnalistan.addCommand(öppnakommandot); öppnalistan.addCommand(ångrakommandot); öppnalistan.setCommandListener(this); sparaformuläret.addCommand(sparakommandot); sparaformuläret.addCommand(ångrakommandot); sparaformuläret.setCommandListener(this); felrutan = new Alert("Fel", "Ett (närmare ospecificerat) fel har uppstått", null, AlertType.ERROR); felrutan.setTimeout(3000); // felrutan.addCommand(fel_ok_kommandot); // felrutan.setCommandListener(this); } private void visaFelmeddelande(String felmeddelandet) { felrutan.setString(felmeddelandet); felrutan.setTimeout(Alert.FOREVER); displayen.setCurrent(felrutan); } public void startApp() { displayen = Display.getDisplay(this); displayen.setCurrent(textrutan); } private void uppdateraÖppnalistan() { System.out.println("uppdateraÖppnalistan"); öppnalistan.deleteAll(); try { RecordStore postlagret = RecordStore.openRecordStore(postlagernamnet, true); RecordEnumeration re = postlagret.enumerateRecords(null, null, false); System.out.println("uppdateraÖppnalistan: Före while-loopen"); while (re.hasNextElement()) { byte[] data = re.nextRecord(); String strängen = new String(data); System.out.println("uppdateraÖppnalistan: Hittade posten '" + strängen + "'"); int brytpunkt = strängen.indexOf('|'); String namn = strängen.substring(1, brytpunkt); // String innehåll = strängen.substring(brytpunkt + 1); öppnalistan.append(namn, null); } System.out.println("uppdateraÖppnalistan: Efter while-loopen"); re.destroy(); postlagret.closeRecordStore(); } catch (RecordStoreException e) { visaFelmeddelande("Kunde inte lista vilka anteckningar som fanns"); } } public void commandAction(Command kommandot, Displayable displayable) { if (kommandot == exitkommandot) { notifyDestroyed(); } else if (kommandot == ångrakommandot) { displayen.setCurrent(textrutan); } else if (kommandot == nykommandot) { textrutan.setTitle("Ny anteckning"); textrutan.setString(""); displayen.setCurrent(textrutan); } else if (kommandot == öppnakommandot && displayen.getCurrent() == textrutan) { uppdateraÖppnalistan(); displayen.setCurrent(öppnalistan); } else if (kommandot == öppnakommandot && displayen.getCurrent() == öppnalistan) { try { int listval = öppnalistan.getSelectedIndex(); if (listval == -1) { visaFelmeddelande("Det fanns inga anteckningar att öppna i listan"); } else { String önskat_namn = öppnalistan.getString(listval); RecordStore postlagret = RecordStore.openRecordStore(postlagernamnet, true); RecordEnumeration re = postlagret.enumerateRecords(null, null, false); textrutan.setTitle("Ingen anteckning"); while (re.hasNextElement()) { byte[] data = re.nextRecord(); String strängen = new String(data); int brytpunkt = strängen.indexOf('|'); String namn = strängen.substring(1, brytpunkt); if (namn.equals(önskat_namn)) { String innehållet = strängen.substring(brytpunkt + 1); textrutan.setString(innehållet); textrutan.setTitle(namn); break; } } re.destroy(); postlagret.closeRecordStore(); displayen.setCurrent(textrutan); } } catch (RecordStoreException e) { visaFelmeddelande("Kunde inte öppna den angivna anteckningen"); } } else if (kommandot == sparakommandot && displayen.getCurrent() == textrutan) { filnamnsfältet.setString(textrutan.getTitle()); displayen.setCurrent(sparaformuläret); } else if (kommandot == sparakommandot && displayen.getCurrent() == sparaformuläret) { try { RecordStore postlagret = RecordStore.openRecordStore(postlagernamnet, true); String namnet = filnamnsfältet.getString(); textrutan.setTitle(namnet); String innehållet = textrutan.getString(); String strängen = namnet + "|" + innehållet; byte[] data = strängen.getBytes(); int senaste_postens_id = postlagret.addRecord(data, 0, data.length); postlagret.closeRecordStore(); } catch (RecordStoreException e) { visaFelmeddelande("Kunde inte spara anteckningen"); } displayen.setCurrent(textrutan); } else { // Det här kan inte hända } } // commandAction public void destroyApp(boolean unconditional) { displayen = Display.getDisplay(this); displayen.setCurrent(textrutan); } public void pauseApp() { } } // Anteckningar