import javax.microedition.midlet.*; import javax.microedition.lcdui.*; import javax.microedition.rms.*; import javax.microedition.io.*; import java.io.*; import java.util.*; public class Kaart extends MIDlet implements CommandListener{ Vector vKirjed; Vector vWeb=new Vector(); Form fMain = new Form ("Kaardi rakend"); Form fPlaces = new Form ("Lisatud kohad"); Form fNet = new Form ("Internet"); Form fNetDesc = new Form ("Koha andmed"); Form fLisa = new Form ("Koha lisamine"); Form fKirjeldus = new Form ("Koha kirjeldus"); TextField tfNimi = new TextField("Nimetus", "", 25, 0); TextField tfKirjeldus = new TextField("kirjeldus", "", 100, 0); TextField tfWebNimi = new TextField("Nimetus", "", 25, 0); TextField tfWebKirjeldus = new TextField("kirjeldus", "", 100, 0); ChoiceGroup cgPlaces = new ChoiceGroup( "Kohad", 1); ChoiceGroup cgNet = new ChoiceGroup( "Kohad", 1); Command cWebSave = new Command ( "Salvesta", Command.SCREEN, 1);//interneti valikud Command cAndmed = new Command ( "Andmed", Command.SCREEN, 1); Command cWBack = new Command ( "Tagasi", Command.BACK, 1); Command cKaart = new Command ( "Kaart", Command.SCREEN, 1); //Pealehe commandid Command cExit = new Command ( "Välju", Command.EXIT, 1); Command cLisa = new Command ( "Lisa koht", Command.SCREEN, 1);// Kaardi commandid Command cVaata = new Command ( "Vaata lisatuid", Command.SCREEN, 1); Command cWeb = new Command ( "Internetist", Command.SCREEN, 1); Command cMain = new Command ( "Peamenüü", Command.BACK, 1); Command cSaveRec = new Command ( "Salvesta", Command.SCREEN, 1);//Lisamis commandid Command cTagasi = new Command ( "Tagasi", Command.BACK, 1); Command cNaita = new Command ( "Näita kaardil", Command.SCREEN,1);//Kirjete vaatamise commandid Command cKirjeldus = new Command ( "Näita kirjeldust", Command.SCREEN, 1); Command cKustuta = new Command ( "Kustuta", Command.SCREEN, 1); Command cBack = new Command ( "Tagasi", Command.BACK, 1);//kirjelduse commandid Display disp=Display.getDisplay(this); graafika kaart=new graafika(); public Kaart(){ kaart.posx=430; kaart.posy=230; fNet.append(cgNet); fNet.addCommand(cAndmed); fNet.addCommand(cTagasi); fNet.setCommandListener(this); fNetDesc.addCommand(cWebSave); fNetDesc.addCommand(cWBack); fNetDesc.setCommandListener(this); fPlaces.append(cgPlaces); fPlaces.addCommand(cNaita); fPlaces.addCommand(cKirjeldus); fPlaces.addCommand(cKustuta); fPlaces.addCommand(cTagasi); fPlaces.setCommandListener(this); fLisa.append(tfNimi); fLisa.append(tfKirjeldus); fLisa.addCommand(cSaveRec); fLisa.addCommand(cTagasi); fLisa.setCommandListener(this); fMain.append("Paide kaart lisatavate punktide ja märkmetega\n Rakenduse interneti pool asub aadressil http://shad.dynserv.com:6060/shad/kodune.html"); fMain.addCommand(cKaart); fMain.addCommand(cExit); fMain.setCommandListener(this); kaart.addCommand(cMain); kaart.addCommand(cLisa); kaart.addCommand(cVaata); kaart.addCommand(cWeb); kaart.setCommandListener(this); fKirjeldus.addCommand(cBack); fKirjeldus.setCommandListener(this); disp.setCurrent(fMain); } public void commandAction (Command command, Displayable p2) { if (command == cKaart) { disp.setCurrent(kaart); } if (command == cExit){ //destroyApp(); } if (command == cLisa){ disp.setCurrent(fLisa); } if (command ==cBack){ disp.setCurrent(fPlaces); } if (command ==cWBack){ disp.setCurrent(fNet); } if (command == cMain){ disp.setCurrent(fMain); } if (command == cTagasi){ disp.setCurrent(kaart); } if (command==cWeb) { Veebilugeja Veeb=new Veebilugeja(); Veeb.start(); } if (command == cVaata){ Kirjed k = new Kirjed(); vKirjed = k.votaKirjed(); while(cgPlaces.size() != 0) cgPlaces.delete(0); for (int i = 0; i < vKirjed.size(); i++) { String[] s = (String[])vKirjed.elementAt(i); cgPlaces.append(s[1],null); } disp.setCurrent(fPlaces); } if (command == cNaita){ int mitmes=cgPlaces.getSelectedIndex(); String[] vk = (String[]) vKirjed.elementAt(mitmes); kaart.posx= Integer.parseInt(vk[3]); kaart.posy= Integer.parseInt(vk[4]); disp.setCurrent(kaart); } if (command == cKirjeldus) { while(fKirjeldus.size() != 0) fKirjeldus.delete(0); int mitmes=cgPlaces.getSelectedIndex(); String[] vk = (String[]) vKirjed.elementAt(mitmes); fKirjeldus.append(vk[2]); disp.setCurrent(fKirjeldus); } if (command == cKustuta){ int mitmes=cgPlaces.getSelectedIndex(); String[] kk = (String[]) vKirjed.elementAt(mitmes); int id = Integer.parseInt(kk[0]); Kirjed k =new Kirjed(); k.kustutaKirje(id); vKirjed = k.votaKirjed(); while(cgPlaces.size() != 0) cgPlaces.delete(0); for (int i = 0; i < vKirjed.size(); i++) { String[] s = (String[])vKirjed.elementAt(i); cgPlaces.append(s[1],null); } } if (command == cSaveRec) { Kirjed k = new Kirjed(); k.lisaKirje(tfNimi.getString(), tfKirjeldus.getString(), kaart.posx, kaart.posy); tfNimi.setString(""); tfKirjeldus.setString(""); disp.setCurrent(fMain); } if (command == cWebSave){ int mitmes=cgNet.getSelectedIndex(); String[] wk = (String[]) vWeb.elementAt(mitmes); Kirjed k = new Kirjed(); k.lisaKirje(wk[0], wk[1], Integer.parseInt(wk[2]), Integer.parseInt(wk[3])); disp.setCurrent(fNet); } if (command == cAndmed){ int mitmes=cgNet.getSelectedIndex(); String[] wk = (String[]) vWeb.elementAt(mitmes); Kirjed k = new Kirjed(); fNetDesc.deleteAll(); fNetDesc.append(wk[0]+" : \n\n"+wk[1]+"\n---\n"); disp.setCurrent(fNetDesc); } } protected void startApp() throws MIDletStateChangeException{ } protected void pauseApp( ){} protected void destroyApp( boolean p1 ) throws MIDletStateChangeException{ } class Veebilugeja extends Thread{ String url="http://shad.dynserv.com:6060/shad/pmobiil.jsp"; public String tekst=""; public Veebilugeja(){ } public void run(){ HttpConnection hcon = null; DataInputStream dis = null; ByteArrayOutputStream baos = new ByteArrayOutputStream(); String tekst=""; try{ hcon = (HttpConnection)Connector.open(url); dis = new DataInputStream(hcon.openInputStream()); int ch; while ((ch=dis.read())!=-1) { baos.write(ch); } byte[] b=baos.toByteArray(); tekst = new String(b); }catch(Exception e){ e.printStackTrace(); tekst=tekst+"ERROR"; }finally{ try{ if (hcon != null) hcon.close(); if (dis != null) dis.close(); }catch (Exception e){ e.printStackTrace(); } } int ajut=0; while (vWeb.size()>0){ vWeb.removeElementAt(0); } int lopp=0; while (true) { String[] kirjem=new String[4]; int algus = lopp + 1; lopp = tekst.indexOf(";", algus); if (lopp == -1) break; String kirje= tekst.substring((algus == 1 ? 0 : algus), lopp); int lopp2=0; int index=0; while (true) { int algus2 = lopp2 + 1; lopp2 = kirje.indexOf(":", algus2); if (lopp2 == -1) break; kirjem[index++]= kirje.substring((algus2 == 1 ? 0 : algus2), lopp2); } vWeb.addElement(kirjem); } while(cgNet.size() != 0) cgNet.delete(0); for (int i = 0; i < vWeb.size(); i++) { String[] s = (String[])vWeb.elementAt(i); cgNet.append(s[0],null); } disp.setCurrent(fNet); } } } /////////////////////////graafika elemendid////////////////////// class graafika extends Canvas{ Image kaart; Image taust; public int posx; //kursori public int posy; //hetkepositsioon int klaius=800; //kaardi int kkorgus=600; //suurus public graafika(){ taust =Image.createImage(klaius+getWidth(),kkorgus+getHeight()); try{ Graphics tg = taust.getGraphics(); kaart=Image.createImage("/kaart.png"); tg.drawImage(kaart,getWidth()/2,getHeight()/2,16|4); }catch(Exception e){e.printStackTrace();} } protected void paint(Graphics g){ try{ g.drawImage(taust, 0-(posx), 0-(posy), 16|4); g.setColor(255,0,0); g.drawLine((getWidth()/2)-5,getHeight()/2,(getWidth()/2)+5,getHeight()/2); g.drawLine(getWidth()/2,(getHeight()/2)-5,getWidth()/2,(getHeight()/2)+5); }catch(Exception e){e.printStackTrace();} } protected void keyPressed(int kood){ if(getGameAction(kood)==Canvas.LEFT){ if (posx>0){posx--;} } if(getGameAction(kood)==Canvas.RIGHT){ if (posx0){posy--;} } if(getGameAction(kood)==Canvas.DOWN){ if (posy