001: /*
002: *
003: *
004: * Copyright 1990-2007 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: package com.sun.midp.appmanager;
027:
028: import javax.microedition.lcdui.*;
029: import com.sun.midp.i18n.Resource;
030: import com.sun.midp.i18n.ResourceConstants;
031:
032: import com.sun.midp.midletsuite.MIDletSuiteLockedException;
033: import com.sun.midp.midletsuite.MIDletSuiteCorruptedException;
034:
035: /**
036: * Displays error messages using the Display instance object passed
037: * into the Constructor.
038: */
039: class DisplayError {
040:
041: /** The display instance to be used to display error alerts */
042: Display display;
043:
044: /**
045: * Creates a DisplayError instance given a display object.
046: * @param display the Display instance where Alerts will the errors
047: * will be shown
048: */
049: DisplayError(Display display) {
050: this .display = display;
051: }
052:
053: /**
054: * Display the Alert with the error message.
055: *
056: * @param appName - name of the application in which the error happen
057: * @param t - throwable that was thrown while performing one
058: * of the operations on the application
059: * @param alertTitle - if non-null it will be the Alert title, otherwise
060: * a default value will be used
061: * (Resource.getString(ResourceConstants.AMS_CANNOT_START))
062: * @param alertMessage - if non-null it will be the Alert message,
063: * otherwise a default message will be generated using
064: * (Resource.getString(ResourceConstants.ERROR))
065: */
066: void showErrorAlert(String appName, Throwable t, String alertTitle,
067: String alertMessage) {
068: showErrorAlert(appName, t, alertTitle, alertMessage, null);
069: }
070:
071: /**
072: * Display the Alert with the error message.
073: *
074: * @param appName - name of the application in which the error happen
075: * @param t - throwable that was thrown while performing one
076: * of the operations on the application
077: * @param alertTitle - if non-null it will be the Alert title, otherwise
078: * a default value will be used
079: * (Resource.getString(ResourceConstants.AMS_CANNOT_START))
080: * @param alertMessage - if non-null it will be the Alert message,
081: * otherwise a default message will be generated using
082: * (Resource.getString(ResourceConstants.ERROR))
083: * @param nextDisplayable the Displayable to be shown after
084: * the error alert is dismissed; can be null
085: */
086: void showErrorAlert(String appName, Throwable t, String alertTitle,
087: String alertMessage, Displayable nextDisplayable) {
088:
089: if (alertMessage == null) {
090:
091: if (t instanceof MIDletSuiteLockedException) {
092: String[] values = new String[1];
093: values[0] = appName;
094: alertMessage = Resource.getString(
095: ResourceConstants.AMS_MGR_UPDATE_IS_RUNNING,
096: values);
097: } else if (t instanceof MIDletSuiteCorruptedException) {
098: String[] values = new String[1];
099: values[0] = appName;
100: alertMessage = Resource
101: .getString(
102: ResourceConstants.AMS_MIDLETSUITE_ID_CORRUPT_MSG,
103: values);
104: } else {
105:
106: t.printStackTrace();
107:
108: StringBuffer sb = new StringBuffer();
109:
110: sb.append(appName);
111: sb.append("\n");
112: sb.append(Resource.getString(ResourceConstants.ERROR));
113: sb.append(": ");
114: sb.append(t.toString());
115: alertMessage = sb.toString();
116: }
117:
118: }
119:
120: if (alertTitle == null) {
121: alertTitle = Resource
122: .getString(ResourceConstants.AMS_CANNOT_START);
123: }
124: Alert a = new Alert(alertTitle, alertMessage, null,
125: AlertType.ERROR);
126: a.setTimeout(Alert.FOREVER);
127:
128: if (nextDisplayable == null) {
129: display.setCurrent(a);
130: } else {
131: display.setCurrent(a, nextDisplayable);
132: }
133: }
134:
135: /**
136: * Display an alert screen when midlet suite is corrupted
137: * @param msg Message to display on alert
138: */
139: void showCorruptedSuiteAlert(String msg) {
140: Alert a = new Alert(Resource
141: .getString(ResourceConstants.AMS_CANT_ACCESS), msg,
142: null, AlertType.ERROR);
143: a.setTimeout(2000);
144: display.setCurrent(a, display.getCurrent());
145: }
146: }
|