001: /*
002: *
003: *
004: * Copyright 1990-2006 Sun Microsystems, Inc. All Rights Reserved.
005: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
006: *
007: * This program is free software; you can redistribute it and/or
008: * modify it under the terms of the GNU General Public License version
009: * 2 only, as published by the Free Software Foundation.
010: *
011: * This program is distributed in the hope that it will be useful, but
012: * WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014: * General Public License version 2 for more details (a copy is
015: * included at /legal/license.txt).
016: *
017: * You should have received a copy of the GNU General Public License
018: * version 2 along with this work; if not, write to the Free Software
019: * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
020: * 02110-1301 USA
021: *
022: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
023: * Clara, CA 95054 or visit www.sun.com if you need additional
024: * information or have any questions.
025: */
026:
027: package com.sun.j2me.dialog;
028:
029: import com.sun.j2me.i18n.Resource;
030: import com.sun.j2me.i18n.ResourceConstants;
031:
032: import com.sun.j2me.security.Token;
033:
034: /**
035: * Provides methods for simple messages and requests.
036: */
037: public class MessageDialog {
038:
039: /**
040: * Displays dialog with informational message or confirmation
041: * request.
042: * @param title dialog title
043: * @param message message text
044: * @param withCancel show Cancel button
045: * @param token security token
046: * @return -1 if user cancelled dialog, 1 otherwise
047: * @throws InterruptedException if interrupted
048: */
049: public static int showMessage(String title, String message,
050: boolean withCancel, Token token)
051: throws InterruptedException {
052:
053: Dialog d = new Dialog(title, withCancel);
054: System.out.println(message);
055: return d.waitForAnswer();
056: }
057:
058: /**
059: * Displays dialog that allows user to select one element
060: * from the list.
061: * @param title dialog title
062: * @param label list label
063: * @param list elements of the list
064: * @param token security token
065: * @return -1 if user cancelled dialog, index of chosen item
066: * otherwise
067: * @throws InterruptedException if interrupted
068: */
069: public static int chooseItem(String title, String label,
070: String[] list, Token token) throws InterruptedException {
071:
072: Dialog d = new Dialog(title, true);
073: while (true) {
074: System.out.println("Choose one of the items");
075: for (int i = 0; i < list.length; i++) {
076: System.out.println(i + ". " + list[i]);
077: }
078:
079: String choice = d.append(); /* User's choice */
080: try {
081: return d.waitForAnswer() == Dialog.CANCELLED ? -1
082: : Integer.decode(choice).intValue();
083: } catch (NumberFormatException e) {
084: System.out
085: .println("Value for chosen item is incorrect");
086: }
087: }
088: }
089:
090: /**
091: * Displays dialog with new PIN parameters.
092: * @param token security token
093: * @return array of strings or null if cancelled. Array contains new
094: * PIN label and PIN value.
095: * @throws InterruptedException if interrupted
096: */
097: public static String[] enterNewPIN(Token token)
098: throws InterruptedException {
099: String label = ""; /* New pin's label */
100: String pin1 = ""; /* New pin's value */
101: String pin2 = ""; /* Confirmation of new pin's value */
102:
103: Dialog d = new Dialog(
104: // "New PIN",
105: Resource
106: .getString(ResourceConstants.JSR177_PINDIALOG_TITLE_NEWPIN),
107: true);
108:
109: while (true) {
110: System.out.println(// "PIN label ",
111: Resource
112: .getString(ResourceConstants.JSR177_PINDIALOG_LABEL));
113: label = d.append();
114:
115: System.out.println(// "Enter PIN ",
116: Resource
117: .getString(ResourceConstants.JSR177_PINDIALOG_ENTERPIN));
118: pin1 = d.append();
119:
120: System.out.println(// "Confirm PIN ",
121: Resource
122: .getString(ResourceConstants.JSR177_PINDIALOG_CONFIRMPIN));
123: pin2 = d.append();
124:
125: if (d.waitForAnswer() == Dialog.CANCELLED) {
126: return null;
127: }
128:
129: if (label.equals("")) {
130: System.out.println("Label is invalid");
131: continue;
132: }
133:
134: if (pin1.equals("") || !pin1.equals(pin2)
135: || pin1.length() < 4) {
136: System.out.println("Pins' values are invalid");
137: continue;
138: }
139: return new String[] { label, pin1 };
140: }
141: }
142:
143: /**
144: * Displays dialog with new PIN parameters.
145: * @param title dialog title
146: * @param label1 PIN1 label
147: * @param pin1IsNumeric PIN1 is a number
148: * @param pin1Length length of the PIN1 text field
149: * @param label2 PIN2 label
150: * @param pin2IsNumeric PIN2 is a numbere
151: * @param pin2Length length of the PIN2 text field
152: * @param token security token
153: * @return null if PIN entry was cancelled by user, otherwise an array
154: * containing PIN value(s).
155: * @throws InterruptedException if interrupted
156: */
157: public static Object[] enterPins(String title, String label1,
158: boolean pin1IsNumeric, int pin1Length, String label2,
159: boolean pin2IsNumeric, int pin2Length, Token token)
160: throws InterruptedException {
161: String data1 = ""; /* First pin to enter */
162: String data2 = ""; /* Second pin to enter */
163:
164: Dialog d = new Dialog(title, true);
165:
166: while (true) {
167: System.out.println(label1);
168: data1 = d.append();
169:
170: if (pin2Length != 0) {
171: System.out.println(label2);
172: data2 = d.append();
173: }
174:
175: if (d.waitForAnswer() == Dialog.CANCELLED) {
176: return null;
177: }
178:
179: if (data1.equals("")) {
180: System.out.println("Pin1 value is invalid");
181: continue;
182: }
183:
184: if (pin2Length != 0) {
185: if (data2.equals("")) {
186: System.out.println("Pin2 value is invalid");
187: continue;
188: }
189:
190: return new Object[] { data1, data2 };
191: } else {
192: return new Object[] { data1 };
193: }
194: }
195: }
196: }
|