import java.util.Vector; import javax.microedition.lcdui.Image; import javax.microedition.lcdui.Font; import javax.microedition.lcdui.Graphics; public class Menu { protected Vector options = new Vector(2, 1); protected int logoXK, logoYK; protected int zeileAbstand; protected Maler maler; protected Image logoimage; private int style = 0; private int xStyle = 0, yStyle = 1; private int x_KoordinateImage, y_KoordinateImage; // center private boolean waehlbar = true; private int fontSize = 30; public Font font; public Menu(Maler maler) { this.maler = maler; this.zeileAbstand = 20; this.logoimage = null; } public void addLogo(Image img) { this.logoimage = img; } public void setLogoKoordinate(int x, int y) { this.logoXK = x; this.logoYK = y; } public void setKoordinateImage(int x, int y) { x_KoordinateImage = x; y_KoordinateImage = y; } public void setZeileAbstand(int ab) { this.zeileAbstand = ab; } public void setStyle(int style) { this.style = style; switch (style) { case 0: xStyle = 0; yStyle = 1; break; case 1: xStyle = 1; yStyle = 0; break; case 2: xStyle = 1; yStyle = 1; break; case 3: xStyle = 0; yStyle = 0; break; } } public void setWaehlbar(boolean waehlbar) { this.waehlbar = waehlbar; } public void add(String str, int prioritaet) { Vector temp = new Vector(); if (options.size() > 0) { boolean insert = false; for (int i = 0; i < options.size(); i++) { if (prioritaet >= ((Option) options.elementAt(i)).prioritaet) { temp.addElement(options.elementAt(i)); } else { temp.addElement(new Option(false, str, prioritaet)); insert = true; for (int j = i; j < options.size(); j++) { temp.addElement(options.elementAt(j)); } break; } } if (!insert) { temp.addElement(new Option(false, str, prioritaet)); } options.removeAllElements(); for (int i = 0; i < temp.size(); i++) { options.addElement(temp.elementAt(i)); if (i == 0) { ((Option) options.elementAt(i)).status = true; } else { ((Option) options.elementAt(i)).status = false; } } } else { options.addElement(new Option(true, str, prioritaet)); } } public void add(String str, Image img, int prioritaet) { Vector temp = new Vector(); if (options.size() > 0) { boolean insert = false; for (int i = 0; i < options.size(); i++) { if (prioritaet >= ((Option) options.elementAt(i)).prioritaet) { temp.addElement(options.elementAt(i)); } else { temp.addElement(new Option(false, str, prioritaet)); insert = true; for (int j = i; j < options.size(); j++) { temp.addElement(options.elementAt(j)); } break; } } if (!insert) { temp.addElement(new Option(false, str, prioritaet)); } options.removeAllElements(); for (int i = 0; i < temp.size(); i++) { options.addElement(temp.elementAt(i)); if (i == 0) { ((Option) options.elementAt(i)).status = true; } else { ((Option) options.elementAt(i)).status = false; } } } else { options.addElement(new Option(true, str, prioritaet)); } } public void add(String str, Image img, Image img2, int prioritaet) { Vector temp = new Vector(); if (options.size() > 0) { boolean insert = false; for (int i = 0; i < options.size(); i++) { if (prioritaet >= ((Option) options.elementAt(i)).prioritaet) { temp.addElement(options.elementAt(i)); } else { temp.addElement(new Option(false, str, img, img2, prioritaet)); insert = true; for (int j = i; j < options.size(); j++) { temp.addElement(options.elementAt(j)); } break; } } if (!insert) { temp.addElement(new Option(false, str, img, img2, prioritaet)); } options.removeAllElements(); for (int i = 0; i < temp.size(); i++) { options.addElement(temp.elementAt(i)); if (i == 0) { ((Option) options.elementAt(i)).status = true; } else { ((Option) options.elementAt(i)).status = false; } } } else { options.addElement(new Option(true, str, img, img2, prioritaet)); } } public void KeyBehandeln(int key) { if (key == 40 || key == 39) { for (int i = 0; i < options.size(); i++) { if (((Option) options.elementAt(i)).status == true) { ((Option) options.elementAt(i)).status = false; if (i + 1 == options.size()) { ((Option) options.elementAt(0)).status = true; } else { ((Option) options.elementAt(i + 1)).status = true; } break; } } } if (key == 38 || key == 37) { for (int i = 0; i < options.size(); i++) { if (((Option) options.elementAt(i)).status == true) { ((Option) options.elementAt(i)).status = false; if (i - 1 < 0) { ((Option) options.elementAt(options.size() - 1)).status = true; } else { ((Option) options.elementAt(i - 1)).status = true; } break; } } } if (key == 17) { if (waehlbar) { for (int i = 0; i < options.size(); i++) { if (((Option) options.elementAt(i)).status == true) { maler.menuBehandeln(((Option) options.elementAt(i)).str); break; } } } else { maler.menuBehandeln(((Option) options.elementAt(0)).str); } } } public void erscheinen(Graphics gTemp) { int x = 0, y = 0; if (this.logoimage != null) { gTemp.drawImage(logoimage, logoXK, logoYK, Graphics.TOP | Graphics.LEFT); } gTemp.setColor(0, 255, 0); if (((Option) options.elementAt(0)).img == null) { for (int i = 0; i < options.size(); i++) { switch (style) { case 0: x = x_KoordinateImage - Font.getDefaultFont().stringWidth(((Option) options.elementAt(i)).str) / 2; y = y_KoordinateImage - Font.getDefaultFont().getHeight() * options.size() + (zeileAbstand * (options.size() - 1)) / 2; break; case 1: x = x_KoordinateImage - Font.getDefaultFont().stringWidth(((Option) options.elementAt(i)).str) * options.size() + (zeileAbstand * (options.size() - 1)) / 2; y = y_KoordinateImage - Font.getDefaultFont().getHeight() / 2; break; case 2: x = x_KoordinateImage - Font.getDefaultFont().stringWidth(((Option) options.elementAt(i)).str) * options.size() + (zeileAbstand * (options.size() - 1)) / 2; y = y_KoordinateImage - Font.getDefaultFont().getHeight() * options.size() + (zeileAbstand * (options.size() - 1)) / 2; break; case 3: x = x_KoordinateImage - Font.getDefaultFont().stringWidth(((Option) options.elementAt(i)).str) / 2; y = y_KoordinateImage - Font.getDefaultFont().getHeight() / 2; break; } if (((Option) options.elementAt(i)).status == true) { gTemp.setColor(0, 255, 0); } else { if (waehlbar) { gTemp.setColor(255, 0, 0); } } gTemp.drawString(((Option) options.elementAt(i)).str, x + i * zeileAbstand * xStyle, y + i * zeileAbstand * yStyle, Graphics.TOP | Graphics.LEFT); } } else { switch (style) { case 0: x = x_KoordinateImage - ((Option) options.elementAt(0)).img.getWidth() / 2; y = y_KoordinateImage - (((Option) options.elementAt(0)).img.getHeight() * options.size() + zeileAbstand * (options.size() - 1)) / 2; break; case 1: x = x_KoordinateImage - (((Option) options.elementAt(0)).img.getWidth() * options.size() + zeileAbstand * (options.size() - 1)) / 2; y = y_KoordinateImage - ((Option) options.elementAt(0)).img.getHeight() / 2; break; case 2: x = x_KoordinateImage - (((Option) options.elementAt(0)).img.getWidth() * options.size() + zeileAbstand * (options.size() - 1)) / 2; y = y_KoordinateImage - (((Option) options.elementAt(0)).img.getHeight() * options.size() + zeileAbstand * (options.size() - 1)) / 2; break; case 3: x = x_KoordinateImage - ((Option) options.elementAt(0)).img.getWidth() / 2; y = y_KoordinateImage - ((Option) options.elementAt(0)).img.getHeight() / 2; break; } for (int i = 0; i < options.size(); i++) { if (((Option) options.elementAt(i)).status == true) { gTemp.drawImage(((Option) options.elementAt(i)).img2, x + i * (zeileAbstand + ((Option) options.elementAt(i)).img2.getWidth()) * xStyle, y + i * (zeileAbstand + ((Option) options.elementAt(i)).img2.getHeight()) * yStyle, Graphics.TOP | Graphics.LEFT); } else { gTemp.drawImage(((Option) options.elementAt(i)).img, x + i * (zeileAbstand + ((Option) options.elementAt(i)).img2.getWidth()) * xStyle, y + i * (zeileAbstand + ((Option) options.elementAt(i)).img2.getHeight()) * yStyle, Graphics.TOP | Graphics.LEFT); } } } } }