guicontroller.java
来自「J2ME程序实现开机自启动的简单例子源码。」· Java 代码 · 共 547 行 · 第 1/2 页
JAVA
547 行
/*///////////////////////////////////////////////////////////////////////////////
//文档生成日期:2005.11.3
//
//(1)概述:
//类名称:GUIController
//类说明:
// MVC中的控制器部分,负责界面事件的处理,以及决定该显示哪一个Form。
如果是用户手动启动本程序,那么设定先显示功能列表界面;
如果是由于短信抵达特定端口从而触发本应用,那么应该去解析短信,并显示FormMsgReceive界面
//所在子系统:MIMESMSnotifyPushRegistry
//
//系统总描述:
本工程发送一个MIME头的短信给目标手机。MIME头中指明了对方应该如何处理。
对方手机收到后,触发注册了PushRegistry的MIDlet应用,并解析短信,
按照指明的命令操作。
子系统描述:
注册Push Registry,监听sms://:8341,当然端口可以修改的。
这样,收到带有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.io.PushRegistry;
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.MIMEReceiver;
import com.ultrapower.model.SMSSettings;
import com.ultrapower.view.About;
import com.ultrapower.view.FormMsgReceive;
import com.ultrapower.view.FormRegister;
import com.ultrapower.view.MainMenuList;
/**********************************************************
// GUIController
//
// Class Description:
// MVC中的控制器部分,负责界面事件的处理,以及决定该显示哪一个Form。
//
// Author:
// zhengyun@ultrapower 2005.11.3
//
**********************************************************/
public class GUIController {
public MIMEReceiver m_MMSMidlet;
/*
* 设置界面以及功能主菜单
*/
private SMSSettings m_AppSettings;
private MainMenuList m_mainMenuList;
private FormRegister m_registerForm;
private FormMsgReceive m_displaymmsForm;
private About m_about;
/*
* 是否能够显示短信了呢?
*/
public synchronized boolean getDisplayMMSReady()
{
if(m_displaymmsForm != null)
{
return true;
}
return false;
}
/** Nbr of keys */
protected static final int NBR_OF_KEYS = 6;
public GUIController(MIMEReceiver midletMain){
m_MMSMidlet = midletMain;
}
//////////////////////////////////////////////////////////
// 下面这几个参数是专门为了后台处理线程传递数据进来到控制器准备的
// 所以保证这几个set函数为线程同步的
/*
* 在监听到有消息进来并进行解析时发生的异常报告
*/
private String m_sParseMMSException;
public synchronized void setParseMMSException(String value)
{
m_sParseMMSException = value;
}
/*
* 在启动时列出连接出现异常的错误报告
*/
private String m_sListConnectionsException;
public synchronized void setListConnectionsException(String value)
{
m_sListConnectionsException = value;
}
/**********************************************************
// GUIController::init()
//
// Description:
// 初始化控制器:
* 初始化各个Form界面
* 如果bIsAutoload为false,是用户手动启动本程序,那么设定先显示功能列表界面;
* 如果bIsAutoload为true,是由于短信抵达特定端口从而触发本应用,那么应该去解析短信,并显示FormMsgReceive界面
//
// Parameters:
// Return Values:
// Author:
// zhengyun@ultrapower 2005.11.3
//
**********************************************************/
public void init(boolean bIsAutoload)
throws IOException, RecordStoreException {
// Initialize the RMS persistence facade
RmsFacade.init(NBR_OF_KEYS);
/*
* 得到singleton实例
*/
m_AppSettings = SMSSettings.getInstance();
if(bIsAutoload == false)
{
/*
* 初始化功能主菜单列表,并显示它
*/
if(m_mainMenuList == null)
{
m_mainMenuList = new MainMenuList(
String.valueOf(CommandResources.getChars(
CommandResources.TXT_T_APP)), this);
}
setCurrent(m_mainMenuList);
}
else
{
/*
* 初始化显示短消息的界面,并显示它
*/
if(m_displaymmsForm == null)
{
m_displaymmsForm = new FormMsgReceive(
String.valueOf(CommandResources.getChars(
CommandResources.TXT_T_DISPLAYMMS)),
this);
}
setCurrent(m_displaymmsForm);
}
}
/**********************************************************
// 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_MMSMidlet.setCurrent(disp);
}
public void setCurrent(Alert alert, Displayable disp){
m_MMSMidlet.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_DISPLAYMMS_BACK = 1;//从显示短信界面返回主菜单
public static final byte EVENT_ABOUT = 2;//ABOUT
public static final byte EVENT_REGISTER = 3;//主菜单的“注册自动启动功能”命令
public static final byte EVENT_REGISTER_BACK = 4;//“注册”界面的返回命令
public static final byte EVENT_REGISTER_REG = 5;//“注册”界面的注册命令
public static final byte EVENT_REGISTER_UNREG = 6;//“注册”界面的注册命令
public static final byte EVENT_DISPLAYMMS_FORM = 7;//进入显示短信界面
public static final byte EVENT_DISPLAYMMS_ERROR = 8;//显示短信时发生了异常
public static final byte EVENT_DISPLAYMMS_SUCC = 9;//显示短信成功
public static final byte EVENT_LISTCONNECTIONS_ERR= 10;//列出注册连接时出现异常
}
/**********************************************************
// 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_MMSMidlet.exit(false);
break;
}
case EventID.EVENT_REGISTER:
{
if(m_registerForm == null)
{
m_registerForm = new FormRegister(this);
m_registerForm.initSettingsTextFields();
}
setCurrent(m_registerForm);
break;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?