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; 
	} 
	 
}