From bf2df04c8c12760206ea1d5be5c7e008123cc695 Mon Sep 17 00:00:00 2001
From: Jacek Kowalski <Jacek@jacekk.info>
Date: Tue, 07 Aug 2012 12:20:57 +0000
Subject: [PATCH] 1. Dodanie menu z pomocą oraz informacją o autorze. 2. Dodanie pola display do głównej klasy midletu. 3. Drobne zmiany w kolejności linii.

---
 src/brydz/BrydzMIDlet.java |    9 +++-
 src/brydz/BrydzForm.java   |   21 ++++++----
 src/brydz/BrydzMenu.java   |   65 ++++++++++++++++++++++++++++++++
 3 files changed, 84 insertions(+), 11 deletions(-)

diff --git a/src/brydz/BrydzForm.java b/src/brydz/BrydzForm.java
index 9c8f78d..33adaa1 100644
--- a/src/brydz/BrydzForm.java
+++ b/src/brydz/BrydzForm.java
@@ -4,6 +4,7 @@
 
 public class BrydzForm extends Form implements CommandListener, ItemStateListener {
     protected BrydzMIDlet midlet;
+    protected BrydzMenu menu = null;
     
     protected TextField kontraktField;
     protected ChoiceGroup kontraktChoice;
@@ -51,14 +52,15 @@
         this.append(this.lewyField);
         this.append(this.resultText);
         
-        setItemStateListener(this);
-        setCommandListener(this);
-        addCommand(new Command("Wyczyść", Command.OK, 1));
-        addCommand(new Command("Wyjście", Command.EXIT, 1));
+        this.addCommand(new Command("Wyczyść", Command.BACK, 1));
+        this.addCommand(new Command("Menu", Command.OK, 1));
+        
+        this.setItemStateListener(this);
+        this.setCommandListener(this);
     }
     
     public void commandAction(Command command, Displayable displayable) {
-        if (command.getCommandType() == Command.OK) {
+        if (command.getCommandType() == Command.BACK) {
             this.kontraktField.setString(null);
             this.kontraktChoice.setSelectedIndex(0, true);
             this.kontraChoice.setSelectedIndex(0, true);
@@ -67,10 +69,13 @@
             this.lewyField.setString(null);
             this.resultText.setText("Podaj wszystkie dane.");
             
-            Display.getDisplay(this.midlet).setCurrentItem(this.kontraktField);
+            this.midlet.display.setCurrentItem(this.kontraktField);
         }
-        else if (command.getCommandType() == Command.EXIT) {
-            this.midlet.destroyApp(true);
+        else if (command.getCommandType() == Command.OK) {
+            if(this.menu == null) {
+                this.menu = new BrydzMenu(this.midlet, this);
+            }
+            this.midlet.display.setCurrent(this.menu);
         }
     }
     
diff --git a/src/brydz/BrydzMIDlet.java b/src/brydz/BrydzMIDlet.java
index 95036fd..c80d0ed 100644
--- a/src/brydz/BrydzMIDlet.java
+++ b/src/brydz/BrydzMIDlet.java
@@ -7,13 +7,16 @@
  */
 public class BrydzMIDlet extends javax.microedition.midlet.MIDlet {
     protected BrydzForm form = null;
+    protected Display display = null;
     
     public void startApp() {
-        if( this.form == null ) {
+        if(this.form == null) {
             this.form = new BrydzForm(this);
         }
-        
-        Display.getDisplay(this).setCurrent(this.form);
+        if(this.display == null) {
+            this.display = Display.getDisplay(this);
+        }
+        this.display.setCurrent(this.form);
     }
     
     public void pauseApp() {
diff --git a/src/brydz/BrydzMenu.java b/src/brydz/BrydzMenu.java
new file mode 100644
index 0000000..4bd48d2
--- /dev/null
+++ b/src/brydz/BrydzMenu.java
@@ -0,0 +1,65 @@
+package brydz;
+
+import javax.microedition.lcdui.*;
+
+public class BrydzMenu extends List implements CommandListener {
+    protected BrydzMIDlet midlet;
+    protected BrydzForm form;
+    protected Form text;
+    
+    public BrydzMenu(BrydzMIDlet midlet, BrydzForm previous) {
+        super("Menu", List.IMPLICIT);
+        
+        this.midlet = midlet;
+        this.form = previous;
+        
+        this.text = new Form("Obliczenia brydżowe");
+        this.text.addCommand(new Command("Powrót", Command.BACK, 1));
+        this.text.addCommand(new Command("Menu", Command.OK, 1));
+        this.text.setCommandListener(this);
+        
+        this.append("Pomoc", null);
+        this.append("Autor", null);
+        this.append("Wyjście", null);
+        this.addCommand(new Command("Powrót", Command.BACK, 1));
+        this.setSelectCommand(new Command("Wybierz", Command.ITEM, 1));
+        this.setCommandListener(this);
+        
+        this.midlet.display.setCurrent(this);
+    }
+    
+    public void commandAction(Command command, Displayable displayable) {
+        switch(command.getCommandType()) {
+            case Command.OK:
+                this.midlet.display.setCurrent(this);
+            break;
+            case Command.BACK:
+                this.midlet.display.setCurrent(this.form);
+            break;
+            case Command.ITEM:
+                switch(this.getSelectedIndex()) {
+                    case 0:
+                        this.text.deleteAll();
+                        this.text.append(new StringItem("O programie", "MIDlet ten ma za zadanie ułatwić obliczanie zapisu brydżowego przy towarzyskim graniu w brydża sportowego."));
+                        this.text.append(new StringItem("Kontrakt", "Należy podać wysokość wylicytowanego kontraktu lub 0 przy czterech pasach"));
+                        this.text.append(new StringItem("Kolor", "Trzeba wybrać z listy wylicytowany kolor (młodszy/starszy/bez atu) - w przypadku pasów nie ma to znaczenia."));
+                        this.text.append(new StringItem("Kontra", "Jeśli przeciwnicy dawali kontrę lub rozgrywający dodatkowo rekontrował - należy zaznaczyć odpowiednie pole."));
+                        this.text.append(new StringItem("Przed/po partii", "Część przed znakiem \"/\" dotyczy rozgrywających, zaś część druga - przeciwników. W przypadku czterech pasów - pierwsza dotyczy pary z większą liczbą punktów."));
+                        this.text.append(new StringItem("PC", "Liczba punktów honorowych (punktów Miltona Worka) pary, która wylicytowała kontrakt. W przypadku pasów - suma punktów pary z większą ich ilością."));
+                        this.text.append(new StringItem("Lew", "Ilość lew wziętych przez rozgrywającego - w przypadku pasów nie ma znaczenia."));
+                        this.text.append(new StringItem("Wynik", "Przekazywana jest informacja o stronie, która uzyskała zapis, liczbie punktów bez i z uwzględnieniem ilości PC, ilości uzyskanych IMP-ów oraz uzyskanym procencie, zgodnie z zapisem maksowym p. Adama Królika."));
+                        this.midlet.display.setCurrent(this.text);
+                    break;
+                    case 1:
+                        this.text.deleteAll();
+                        this.text.append("Autor: Jacek Kowalski\nhttp://dev.jacekk.net/brydz");
+                        this.midlet.display.setCurrent(this.text);
+                    break;
+                    case 2:
+                        this.midlet.destroyApp(true);
+                    break;
+                }
+            break;
+        }
+    }
+}

--
Gitblit v1.9.1