在WebOS中开发应用程序
认识抽象类Application
操作系统接受实现了Application的类,
通过调用install()方法来安装应用程序
调用uninstall()方法来卸载应用程序
package com.single.os.core.client;
public abstract class Application {
protected boolean installed=false;
protected String prefix;
public String getPrefix() {
return prefix;
}
public Application(String prefix){
this.prefix=prefix;
}
public boolean isInstalled() {
return installed;
}
/**
* 安装程序
* @return
*/
abstract boolean install();
/**
* 卸载程序
* @return
*/
abstract boolean uninstall();
}
对于简单的应用程序,我们提供了SimapleApplication类
里面包括了主要的几个属性,
包括控制器,程序菜单项,命令集
你只需要创建一个类继承SimpleApplication
覆写initial()方法,在里面赋值controller,appMenuItem以及用过addCommand方法添加命令即可
其中controller是控制器,使用此对象,你需要先了解GXT的MVC架构
appMenuItem是你的程序菜单,会加在:开始->程序 里面。
addCommand方法则是在系统中注册你的命令,详见Command介绍的相关文章
package com.single.os.core.client;
import java.util.HashMap;
import com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.mvc.Controller;
import com.extjs.gxt.ui.client.mvc.Dispatcher;
import com.extjs.gxt.ui.client.widget.menu.MenuItem;
import com.single.os.core.client.ui.desktop.Desktop;
public class SimpleApplication extends Application{
public SimpleApplication(String prefix) {
super(prefix);
}
private static int increase=1;
protected String baseStyle="module"+increase++;
/**
* 控制器
*/
protected Controller controller;
/**
* 向开始菜单->程序->中添加的菜单项
*/
protected MenuItem appMenuItem;
/**
* 在系统中注册命令集
*/
private HashMap<String, CommandExecute> commands=new HashMap<String, CommandExecute>();
public void addCommand(String command,CommandExecute execute){
commands.put(command, execute);
}
//需要你覆写的方法,在此方法中设置你的配置
protected void initial(){
}
@Override
boolean install() {
if(installed){
return false;
}
initial();
//加载控制器
if(controller!=null){
Dispatcher.get().addController(controller);
}
//加载开始菜单
if(appMenuItem!=null){
Desktop desktop=Registry.get(OS.DESKTOP);
desktop.getStartMenu().addApplicationMenuItem(appMenuItem);
}
//加载命令
if(commands.size()>0){
for(String command:commands.keySet()){
CommandCollection.add(command, commands.get(command));
}
}
installed=true;
return true;
}
@Override
boolean uninstall() {
if(!installed){
return false;
}
//卸载控制器
if(controller!=null){
Dispatcher.get().removeController(controller);
}
//卸载命令
if(commands.size()>0){
for(String command:commands.keySet()){
CommandCollection.remove(command);
}
}
installed=false;
return true;
}
}
你可以建一个类YourApplication继承SimpleApplication
然后在initial()方法中设置相关内容后,
在OS系统中添加该应用程序即可
OS.addApplication(new YourApplication());
如何创建一个格式良好的应用程序
所谓格式良好的应用程序,是指该程序独立,模块化程度好,依赖关系简单清晰。
即只要被人在gwt.xml中继承你这个模块,你的系统就能自动安装并生效。
一般的,一个应用程序对应一个模块。
新建一个模块,然后对应该模块创建一个入口EntryPoint
其中的方法onMouldeLoad就是程序进入你这个模块时会调用的方法。
你可以在这里面初始化你的模块或应用程序。
比如创建自己的Application,
然后调用OS.addApplication(new YourApplication());
向系统添加你的应用程序。