www.pudn.com > WordTip.zip > UIController.java
/*
* Created on 2005-1-26
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package net.hyweb.ui;
import java.io.IOException;
import javax.microedition.lcdui.*;
import net.hyweb.WordTipMIDlet;
import net.hyweb.wordmodel.*;
/**
* @author user
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class UIController {
private Display display;
private WordTipMIDlet wordTipMIDlet;
private Model model;
private Welcome welcomeUI;
private IndexFunctionUI indexFunctionUI;
private ViewAll viewAll;
private SearchWord searchWord;
private AddNewWord addNewWord;
private About about;
private DetailedWord detailedWord;
/**构造函数,获取MIDlet
* @param dlet
*/
public UIController(WordTipMIDlet dlet) {
this.wordTipMIDlet = dlet;
}
public void init(Model model){
display = Display.getDisplay(wordTipMIDlet);
this.model = model;
welcomeUI = new Welcome();
indexFunctionUI = new IndexFunctionUI(this);
//初始化基本操作界面
viewAll = new ViewAll(this);
searchWord = new SearchWord(this);
addNewWord = new AddNewWord(this);
about = new About(this);
detailedWord = new DetailedWord(this);
this.displayWelcome();
}
/**
* Welcome类继承了Canvas,是Displayable类型
*/
private void displayWelcome(){
display.setCurrent(welcomeUI);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
display.setCurrent(indexFunctionUI);
}
/**通过反传的参数 执行相应的操作
* @param eventID
*/
public void EventController(int eventID){
switch(eventID){
case EventID.VIEW_ALL:{
viewAll.refresh();
display.setCurrent(viewAll);
break;
}
case EventID.SEARCH_WORD:{
searchWord.init();
display.setCurrent(searchWord);
break;
}
case EventID.ADD_NEW_WORD:{
addNewWord.clearScreen();
display.setCurrent(addNewWord);
break;
}
case EventID.ABOUT:{
display.setCurrent(about);
break;
}
case EventID.ALERT_ENWORD: {
Alert alertUI = new AlertUI("Alert", "", null, AlertType.ERROR);
alertUI.setString("The English cannont be empty");
alertUI.setTimeout(2000);
display.setCurrent(alertUI, addNewWord);
alertUI = null;
break;
}
case EventID.ALERT_CNWORD: {
Alert alertUI = new AlertUI("Alert", "", null, AlertType.ERROR);
alertUI.setString("The Explain cannont be empty");
alertUI.setTimeout(2000);
display.setCurrent(alertUI, addNewWord);
alertUI = null;
break;
}
case EventID.ALERT_EMPTY: {
Alert alertUI = new AlertUI("Alert", "", null, AlertType.ERROR);
alertUI.setString("The record does not exist");
alertUI.setTimeout(2000);
display.setCurrent(alertUI, viewAll);
alertUI = null;
break;
}
case EventID.UI_MAIN: {
display.setCurrent(indexFunctionUI);
break;
}
default:
break;
}
}
/**通过反传的参数 执行相应的操作
* 重载了处理函数,可以接受随着事件ID传递来的数据
* @param eventID
*/
public void EventController(int eventID, Object[] obj){
switch(eventID){
case EventID.SAVE_WORD:{
Word word = (Word)obj[0];
AlertUI alertUI = new AlertUI("Alert", "", null, AlertType.ERROR);
Image image;
try {
if(model.isRecordExist(word.getEnWord())){
//已经存在雷同数据
alertUI.setString("Sorry, The record is existed");
alertUI.setType(AlertType.ERROR);
alertUI.setTimeout(2000);
image = createImage("/Cancel.png");
alertUI.setImage(image);
display.setCurrent(alertUI,addNewWord);
image = null;
break;
}else{
model.addNewWord(word);
alertUI.setString("Record save success!");
alertUI.setTimeout(2000);
image = createImage("/OK.png");
alertUI.setImage(image);
addNewWord.clearScreen();
display.setCurrent(alertUI,addNewWord);
image = null;
break;
}
} catch (Exception e) {
e.printStackTrace();
}finally{
alertUI = null;
}
break;
}
case EventID.DELETE_WORD: {
AlertUI alertUI = new AlertUI("Alert", "Are you sure to delete?", null, AlertType.ERROR);
alertUI.setType(AlertType.WARNING);
Command yesCommand = new Command("Yes", Command.OK, 1);
Command noCommand = new Command("No", Command.CANCEL, 2);
if(alertUI.getYesCommand() == null){
alertUI.addCommand(yesCommand);
}
if(alertUI.getNoCommand() == null){
alertUI.addCommand(noCommand);
}
if(alertUI.getUicontroller() == null){
alertUI.setUicontroller(this);
}
alertUI.setYesCommand(yesCommand);
alertUI.setNoCommand(noCommand);
alertUI.setObject(obj);
alertUI.setCommandListener(alertUI);
display.setCurrent(alertUI);
alertUI = null;
break;
}
case EventID.DELETE_WORD_YES: {
String enword = (String)obj[0];
try {
//获取当前在List上的ID
int i = ((Integer)obj[1]).intValue();
if(enword == null){
display.setCurrent(viewAll);
}else{
model.deleteWord(enword);
viewAll.delete(i);
display.setCurrent(viewAll);
}
} catch (Exception e) {
e.printStackTrace();
}
break;
}
case EventID.DETAILED_WORD:{
String enword = (String)obj[0];
Word[] words;
try {
words = model.detailedWord(enword);
this.detailedWord.setWord(words[0]);
this.detailedWord.init();
display.setCurrent(this.detailedWord);
} catch (Exception e) {
e.printStackTrace();
}
break;
}
//手动搜索
case EventID.SEARCH_MANUAL: {
String enword = (String)obj[0];
Word[] words;
boolean exist;
try {
exist = model.isRecordExist(enword);
if(exist){
//数据存在
words = model.detailedWord(enword);
this.detailedWord.setWord(words[0]);
this.detailedWord.init();
this.detailedWord.setSourceWindow(EventID.SEARCH_WORD);
display.setCurrent(this.detailedWord);
}else{
AlertUI alertUI = new AlertUI("Alert", "The word is not exist!", null, AlertType.ERROR);
alertUI.setTimeout(2000);
display.setCurrent(alertUI, this.searchWord);
}
} catch (Exception e) {
e.printStackTrace();
}
break;
}
//自动搜索
case EventID.SEARCH_AUTO: {
String enword = (String)obj[0];
Word[] words;
try {
words = model.detailedWord_StartWith(enword);
if(model.isRecordExist_StartWith(enword)){
this.viewAll.setWord(words);
this.viewAll.refresh_Search();
display.setCurrent(viewAll);
}else{
//没有搜索结果
display.setCurrent(searchWord);
}
} catch (Exception e) {
e.printStackTrace();
}
break;
}
default:
break;
}
}
public Image createImage(String name){
Image image = null;
try {
image = Image.createImage(name);
} catch (IOException e) {
e.printStackTrace();
}
return image;
}
}