⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 guicontroller.java

📁 通俗的讲
💻 JAVA
字号:
/*///////////////////////////////////////////////////////////////////////////////
//文档生成日期:2005.11.3
//
//(1)概述:
//类名称:GUIController
//类说明:
//     MVC中的控制器部分,负责界面事件的处理,以及决定该显示哪一个Form。
  
    
//所在子系统:MIMESMSnotifyPushRegistry
//
//系统总描述:
	    本工程发送一个MIME头的短信给目标手机。MIME头中指明了对方应该如何处理。
	    对方手机收到后,触发注册了PushRegistry的MIDlet应用,并解析短信,
	    按照指明的命令操作。


	 子系统描述:
		发送一个MIME头的短信给目标手机.

//(2)历史记录:
//创建人: 郑昀(2005.11.3)
//联系我: Google Talk >> zhengyun@gmail.com
//Blogs:    http://blog.csdn.net/zhengyun_ustc/以及http://www.cnblogs.com/zhengyun_ustc

//(3)版权声明:
//我这个版本的MIMESMSnotifyPushRegistry,
//j2me客户端代码仅仅允许您借鉴,但不得用于商业用途,除非得到郑昀本人的授权。本人保留所有权利。

////////////////////////////////////////////////////////////////////*/
package com.ultrapower.control;

import java.io.IOException;

import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.AlertType;
import javax.microedition.lcdui.Displayable;
import javax.microedition.rms.RecordStoreException;

import com.ultrapower.common.CommandResources;
import com.ultrapower.facade.RmsFacade;
import com.ultrapower.midlet.MIMESend;
import com.ultrapower.model.SMSSettings;
import com.ultrapower.view.About;
import com.ultrapower.view.FormMsgSend;
import com.ultrapower.view.FormSetting;
import com.ultrapower.view.MainMenuList;

/**********************************************************
//	 GUIController
//
//	 Class Description:
//	 	MVC中的控制器部分,负责界面事件的处理,以及决定该显示哪一个Form。
//
//	 Author:
//	      zhengyun@ultrapower 2005.11.3
//
**********************************************************/
public class GUIController {
	public MIMESend	 			m_SendMMSMidlet;
	
	
	/*
	 * 设置界面以及功能主菜单
	 */
	private SMSSettings 		m_AppSettings;
	private MainMenuList 		m_mainMenuList;
	private FormSetting 		m_settingForm;
	private FormMsgSend 		m_sendForm;	
	private About 				m_about;
	
	/** Nbr of keys */
	protected static final int	NBR_OF_KEYS			= 6;
	
	public GUIController(MIMESend midletMain){
		m_SendMMSMidlet = midletMain;
	}
	

	//////////////////////////////////////////////////////////
	// 下面这几个参数是专门为了后台处理线程传递数据进来到控制器准备的
	// 所以保证这几个set函数为线程同步的
	/*
	 * 在下载并播放时发生的异常报告
	 */
	private String m_sSendMMSException;
	public synchronized void setSendMMSException(String value)
	{
		m_sSendMMSException = value;
	}
	
	/**********************************************************
	//	 GUIController::init()
	//
	//	 Description:
	//	  初始化控制器:
	 * 		初始化各个Form界面
	 * 		设定先显示功能列表界面
	//
	//	 Parameters:
	//	 Return Values:
	//	 Author:
	//	      zhengyun@ultrapower 2005.11.3
	//
	**********************************************************/
	public void init()
		throws IOException, RecordStoreException {
		
		// Initialize the RMS persistence facade
	    RmsFacade.init(NBR_OF_KEYS);
		
		/*
		 * 得到singleton实例
		 */
		m_AppSettings = SMSSettings.getInstance();

		/*
		 * 初始化功能主菜单列表
		 */
		if(m_mainMenuList == null)
		{
			m_mainMenuList = new MainMenuList(
					String.valueOf(CommandResources.getChars(
							CommandResources.TXT_T_APP)), this);
		}
		setCurrent(m_mainMenuList);
	}


	/**********************************************************
	//	 GUIController::getAppSettings/getRssSettings
	//
	//	 Description:
	//	  返回当前封装了RMS操作的应用/Rss Settings的类实例
	//
	//	 Parameters:
	//	 Return Values:
	//	 Author:
	//	      zhengyun@ultrapower 2005.11.3
	//
	**********************************************************/
	public SMSSettings getAppSettings(){
		return m_AppSettings;
	}
	
	/**********************************************************
	//	 GUIController::setCurrent()
	//
	//	 Description:
	//	  设置当前显示的界面
	//
	//	 Parameters:
	//	 Return Values:
	//	 Author:
	//	      zhengyun@ultrapower 2005.11.3
	//
	**********************************************************/
	public void setCurrent(Displayable disp){
		m_SendMMSMidlet.setCurrent(disp);
    }
	public void setCurrent(Alert alert, Displayable disp){
		m_SendMMSMidlet.setCurrent(alert, disp);
    }
	
	
	/**********************************************************
	//	 GUIController::EventID
	//
	//	 Description:
	//	  定义事件ID内部类
	//
	//	 Parameters:
	//	 Return Values:
	//	 Author:
	//	      zhengyun@ultrapower 2005.11.3
	//
	**********************************************************/
    public static class EventID{
        private EventID(){
        }
        
        public static final byte EVENT_EXIT				= 0;//退出
        public static final byte EVENT_SENDSMS_BACK		= 1;//从发送短信界面返回主菜单
        public static final byte EVENT_ABOUT				= 2;//ABOUT
		public static final byte EVENT_SETTINGS           = 3;//主菜单的“设置”命令
		public static final byte EVENT_SETTINGS_BACK      = 4;//主菜单的“设置”界面的返回命令
		public static final byte EVENT_SETTINGS_SAVE      = 5;//主菜单的“设置”界面的保存命令
		public static final byte EVENT_SENDMMS_FORM       = 6;//进入发送短信界面
		public static final byte EVENT_SENDMMS	         = 7;//发送短信
		public static final byte EVENT_SENDMMS_ERROR      = 8;//发送短信时发生了异常
		public static final byte EVENT_SENDMMS_SUCC       = 9;//发送短信成功
		
    }
	
	
	/**********************************************************
	//	 GUIController::handleEvent
	//
	//	 Description:
	//	  对传入的事件进行处理
	//
	//	 Parameters:
	//	 Return Values:
	//   Remark:
	 * 
	//	 Author:
	//	      zhengyun@ultrapower 2005.11.3
	//
	**********************************************************/
    public void handleEvent( int eventID,Object[] args){   
		System.out.println("Controller::handleEvent eventID>>" + eventID);
		
    	switch (eventID)
        {   
    	    case EventID.EVENT_EXIT:
    	    {
				// 清理RMS
				RmsFacade.shutdown();
				System.gc();     // 通知进行垃圾收集
				Thread.yield();  // 本线程暂停一下,使得GC可以马上获得机会运行
				m_SendMMSMidlet.exit(false);
    	    	break;
    	    }
			case EventID.EVENT_SETTINGS:
    	    {
				if(m_settingForm == null)
				{
					m_settingForm	=	new FormSetting(this);
					m_settingForm.initSettingsTextFields();
				}
				setCurrent(m_settingForm);
    	        break;
    	    }
			case EventID.EVENT_SENDSMS_BACK:
    	    case EventID.EVENT_SETTINGS_BACK: 
    	    {
				setCurrent(m_mainMenuList);
    	    	break;
    	    }
    	    case EventID.EVENT_SETTINGS_SAVE:
    	    {
				/*
				 * 存储当前设置页面上的所有参数进入RMS
				 */
				String port = (String)args[0];
				
    	        m_AppSettings.save(port);
				setCurrent(m_settingForm);
				
    	        break;
    	    }
    	    case EventID.EVENT_ABOUT:
    	    {
				if(m_about == null)
				{
					m_about = new About(
							String.valueOf(CommandResources.getChars(
									CommandResources.TXT_T_ABOUT)));
				}
    	        setCurrent(m_about);
    	        break;
    	    }
			case EventID.EVENT_SENDMMS_FORM:
			{
				if(m_sendForm == null)
				{
					m_sendForm = new FormMsgSend(
							String.valueOf(CommandResources.getChars(
									CommandResources.TXT_T_SENDMMS)),
									this);
				}
				setCurrent(m_sendForm);
				break;
			}
			case EventID.EVENT_SENDMMS:
			{
				String mobile	=	(String)args[0];
	            String msg		=	(String)args[1];
				m_sendForm.startSend(mobile, msg);
				break;
			}
			case EventID.EVENT_SENDMMS_ERROR:
			{
				m_sendForm.failSend();
				// 发送短信时出错了
				setCurrent(
						new Alert(
								String.valueOf(
										CommandResources.getChars(
												CommandResources.TXT_SENDERROR_TITLE)), 
										String.valueOf(
												CommandResources.getChars(
														CommandResources.TXT_SENDERROR_MSG))
												+ m_sSendMMSException, null, AlertType.ERROR),
						(Displayable)m_sendForm);
				break;
			}
			case EventID.EVENT_SENDMMS_SUCC:
			{
				// 发送短信成功了
				m_sendForm.succSend();
				//
				m_sendForm.stopGauge();
				break;
			}
         	default:
         	    break;
        }
    }
    
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -