import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
//ダイアログ
public class Dialog extends Form
implements CommandListener {
public static int BUTTON_CANCEL =0x0002;
public static int BUTTON_NO =0x0008;
public static int BUTTON_OK =0x0001;
public static int BUTTON_YES =0x0004;
public static int DIALOG_ERROR =2;
public static int DIALOG_INFO =0;
public static int DIALOG_WARNING =1;
public static int DIALOG_YESNO =3;
public static int DIALOG_YESNOCANCEL=4;
//GUI
private int type; //種別
private int result; //結果
private MIDlet midlet; //本体
private Displayable disp; //戻り先
private StringItem label; //ラベル
private Command[] softKey;//ソフトキー
//コンストラクタ
public Dialog(int type,String title,MIDlet midlet,Displayable disp){
super(title);
//GUI
this.type =type;
this.result=-999;
this.midlet=midlet;
this.disp =disp;
label=new StringItem("","");
append(label);
//ソフトキーの追加
setCommandListener(this);
softKey=new Command[2];
if (type==DIALOG_INFO || type==DIALOG_WARNING || type==DIALOG_ERROR) {
softKey[0]=new Command("OK",Command.SCREEN,0);
addCommand(softKey[0]);
} else if (type==DIALOG_YESNO || type==DIALOG_YESNOCANCEL) {
softKey[0]=new Command("はい", Command.SCREEN,0);
softKey[1]=new Command("いいえ",Command.SCREEN,1);
addCommand(softKey[0]);
addCommand(softKey[1]);
}
}
//テキストの指定
public void setText(String text) {
label.setText(text);
}
//表示
public int show() {
Display.getDisplay(midlet).setCurrent(this);
result=-1;
while (result<0) {
try {
Thread.sleep(200);
} catch (Exception e) {
}
}
return result;
}
//ソフトキーイベント
public void commandAction(Command c,Displayable disp) {
if (type==DIALOG_INFO || type==DIALOG_WARNING || type==DIALOG_ERROR) {
if (c==softKey[0]) result=BUTTON_OK;
Display.getDisplay(midlet).setCurrent(this.disp);
} else if (type==DIALOG_YESNO || type==DIALOG_YESNOCANCEL) {
if (c==softKey[0]) result=BUTTON_YES;
if (c==softKey[1]) result=BUTTON_NO;
Display.getDisplay(midlet).setCurrent(this.disp);
}
}
//メッセージダイアログの表示
public static void showDialog(String title,String msg,
MIDlet midlet,Displayable disp){
Dialog dlg=new Dialog(Dialog.DIALOG_INFO,title,midlet,disp);
dlg.setText(msg);
dlg.show();
}
//Yes/Noダイアログの表示
public static int showYNDialog(String title,String msg,
MIDlet midlet,Displayable disp){
Dialog dlg=new Dialog(Dialog.DIALOG_YESNO,title,midlet,disp);
dlg.setText(msg);
return dlg.show();
}
}
|