java-RCP

Rich Client Platform富客户平台

eclipse3.7下:








ApplicationActionBarAdvisor:简单的说这个类是用来配置程序的菜单栏和工具栏的

ApplicationWorkbenchAdvisor:这个类是RCP程序的Workbench,RCP是Eclipse的简化,但是所有的组件都是和Eclipse一样的。一个RCP程序也只能有一个Workbench。

ApplicationWorkbenchWindowAdvisor:这个类是RCP的WorkbenchWindow,隶属于当前的Workbench。可以有多个WorkbenchWindow。

Perspective:是我们新建的RCP的默认透视图。可以在这个类中指定View和Editor的排布。

plugin.xml:这个文件是我们插件的配置文件,包括我们的插件用了哪些其他的插件,具体是怎么配置这些插件的等等。

build.properties:这个文件是用来配置我们插件的编译信息的,用来指定如何编译我们的插件。

MANIFEST.MF:这个文件用来指定我们插件的元数据,比如插件的版本信息。一般来说,这个文件不用手动的去更改。

具体实现:

新建Action类,必须继承org.eclipse.jface.action.Action。定义当用户执行某项操作时触发某个Action。比如用户点击工具栏的一个按钮,或者选中了某个菜单项.
package demo;

import org.eclipse.jface.action.Action;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.internal.IWorkbenchGraphicConstants;
import org.eclipse.ui.internal.WorkbenchImages;

public class HelloAction extends Action {
	private IWorkbenchWindow window;

	public HelloAction(IWorkbenchWindow window) {       //由于Action是一个UI元素,所以往往创建一个带IWorkbenchWindow参数的构造函数,以便在Action内部调用
		this.window = window;
		this.setText("Hello");
		ImageDescriptor imgDes = WorkbenchImages
				.getImageDescriptor(IWorkbenchGraphicConstants.IMG_ETOOL_EDITOR_TRIMPART);//用Eclipse Workbench自带的图标。
		this.setImageDescriptor(imgDes);
	}

	public void run() {
		MessageBox mb = new MessageBox(window.getShell(), SWT.OK);
		mb.setMessage("Hello world!");
		mb.setText("Demo");
		mb.open();
	}
}
修改ApplicationActionBarAdvisor.java为:
package demo;

import org.eclipse.jface.action.ICoolBarManager;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.IToolBarManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.ToolBarContributionItem;
import org.eclipse.jface.action.ToolBarManager;
import org.eclipse.swt.SWT;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.application.ActionBarAdvisor;
import org.eclipse.ui.application.IActionBarConfigurer;

public class ApplicationActionBarAdvisor extends ActionBarAdvisor {

	HelloAction helloAction;

	public ApplicationActionBarAdvisor(IActionBarConfigurer configurer) {
		super(configurer);
	}

	protected void makeActions(IWorkbenchWindow window) { //用来初始化action的,所有要用到的action可以都在这里初始化
		super.makeActions(window);
		helloAction = new HelloAction(window);
	}

	protected void fillMenuBar(IMenuManager menuBar) {
		super.fillMenuBar(menuBar);
		MenuManager demoMenu = new MenuManager("&Demo", "");  //菜单栏增加Demo子菜单,Demo有两个名为Hello的下拉按钮
		demoMenu.add(helloAction);                             
		demoMenu.add(helloAction);
		menuBar.add(demoMenu);
	}
	
	protected void fillCoolBar(ICoolBarManager coolBar)    //工具栏增加Hello按钮
	{
	IToolBarManager toolbar = new ToolBarManager(SWT.FLAT | SWT.RIGHT);
	coolBar.add(new ToolBarContributionItem(toolbar, "main"));
	toolbar.add(helloAction);
	}

}

在ApplicationWorkbenchWindowAdvisor类的preWindowOpen方法中:
//configurer.setShowCoolBar(false);  //工具栏可见
结果:




下载安装WB_v1.7.0_UpdateSite_for_Eclipse4.2.zip

为这个插件能够支持SWT,JFace,RCP,Swing的可视化编辑,极大的缩短了界面开发的时间。





可以用同样的方法创建一个EditorPart,名字就叫HelloEditor。在editor上面放一个text组件吧,这样看起来像个editor,然后把HelloEditor的layout改成FillLayout。当然也要为HelloEditor添加一个ID属性。这里需要改一下Editor的init方法,否则editor无法正常运行。

this.setSite(site);//setSite是让editor能够使用workbench所提供的一些功能
this.setInput(input);

EditorSite可以看成是一个代理,EditorPart通过 EditorSite来访问workbench。EditorSite是editor part和workbench之间的一层接口

打开plugin.xml,选择Extensions标签页,在All Extensions部分点击“Add”按钮,选择org.eclipse.ui.views, org.eclipse.ui.editors, 两个extension,结果如下:











在Extension Element Details部分设置View的属性。ID可以随意设置,但是不能重复,我这里设置为Demo.helloView(虽说是随意设置,但是程序是通过这个ID来获得View的,所以最好与HelloView中的ID属性一致,我在HelloView中加入这个ID属性也是为了方便程序获得HelloView),Name也可以随意设置,我这里设置为Hello View,这个属性会显示在View的顶端,就像Outline View顶部显示的名称是“Outline”。class选择刚才创建的demo.HelloView。icon是显示在View顶部的图标,没有可以不设置。



类似的创建Hello Editor,设置Hello Editor的详细属性,设置id, name, class三个属性以外,还要设置icon属性(Editor的Icon属性是必须的!),随便给个图片文件就行,其他的属性可以不填。这里属性比较多,有兴趣可以去看Eclipse的插件开发帮助,里面对每个属性都有解释。





一个viewpart(helloview)有button组件,一个editorpart(HelloEditor)有text组件



plugin.xml中新建view和editor ID与上述类的ID保持一致。

打开Perspective.java,修改createInitialLayout()方法
	public void createInitialLayout(IPageLayout layout) {
		layout.addStandaloneView(helloview.ID, true,
				IPageLayout.LEFT, .50f, layout.getEditorArea());  //当前的Perspective添加一个独立的View
				layout.getViewLayout(helloview.ID).setCloseable(false);//去除了关闭View的功
	}


设置并打开Editor







要打开Editor的话必须给Editor内容
这里的内容就是Eclipse里面的EditorInput。没有现成合适的EditorInput用(一般情况下可以用FileEditorInput,把某个文件作为Input让Editor打开,在Eclipse里面双击打开某个文件就是这个过程)

创建一个HelloEditorInput继承IEditorInput接口。用Eclipse向导创建类的时候,先选择Interface,然后记得选中“Inherited abstract methods”,这样会自动继承所有abstract的方法,不用再去手工创建了
返回当前input的名字,比如文件名(这块不懂)
public String getName() {
// TODO Auto-generated method stub
return "Hello";
}

光标移到editor顶部时会显示“Demo”:
public String getToolTipText() {
// TODO Auto-generated method stub
return "Demo";
}

为按钮增加事件:



btnNewButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
try {
getViewSite().getWorkbenchWindow().getActivePage()
.openEditor(new HelloEditorInput(), HelloEditor.ID);
} catch (Exception e2) {
System.out.println(e2);
}
}
});

窗口最大化:
ApplicationWorkbenchWindowAdvisor类中的postWindowOpen函数:
this.getWindowConfigurer().getWindow().getShell().setMaximized(true);


导出rcp程序:



















框架特点: 1.完善的企业应用解决方案,包括表现层,业务逻辑层,报表,权限,日志,国际化,部署等企业应用的各个环节。 2.B/S,C/S优势互补,随需应变。 3.全新的模式开发C/S客户端,无需布局,无需调整控件和组件的大小,不懂Swing也可以快速开发界面。 4.Spring+Hibernate的轻量级架构轻松开发业务逻辑。 5.提升用户体验,提高最终用户满意度,快速开发企业应用。 配置开发环境 1导入开发项目 下载(http://www.soyframework.com)已经配置好的空项目,此空项目包括empty-client (以下简称示例client项目)、empty-server (以下简称示例server项目),并将它们导入到Eclipse中。如果Eclipse的Problems标签下没有出现错误那么表示项目成功导入。 如果使用其他的集成开发环境,请将client和server分别配置成java项目,且client依赖server。 2.1.2创建数据库 用户需要在自己的数据库管理系统中创建一个数据库,并确保此数据库实例能正常运行。示例项目使用的数据库为MYSQL,假定我们在MYSQL中创建数据库empty,并且创建用户empty,将数据库empty的所有权限授予给用户empty。 2.1.3配置hibernate 打开server项目下的hibernate.properties 文件,修改Hibernate数据库方言的配置(hibernate.dialect)为项目选用的数据库类型,如果采用是mysql 5.0数据库,设置为org.hibernate.dialect.MySQLDialect, 如果采用oracle9+数据库则设置为org.hibernate.dialect.Oracle9Dialect,如果是其他数据库请参考hibernate数据库方言。示例项目使用Mysql,故配置方言为org.hibernate.dialect.MySQLDialect。 打开server项目下的dataSourceConfig.xml文件,根据具体使用的数据库配置数据库连接池,下面列出了选用的数据库为Mysql时,连接池的配置: <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName"> <value>com.mysql.jdbc.Driver</value> </property> <property name="url"> <value>jdbc:mysql://${database.host}:${database.port}/empty?autoReconnect=true&useUnicode=true&characterEncoding=utf-8</value> </property> <property name="username"> <value>empty</value> </property> <property name="password"> <value>empty</value> </property> </bean> 在dataSourceConfig.properties中配置数据库服务器的主机地址和端口: database.host=localhost database.port=3306 2.1.4运行项目 开发时使用的应用服务器为Jetty,Server项目下的JettyLauncher.java已经配置了一个Jetty服务器,应用名默认为empty,端口使用8888(用户可以根据实际情况自行修改)。将JettyLauncher作为java application运行,启动服务器,如不出现异常,则server项目配置成功。 打开client项目下的ApplicationLauncher.java文件,作为java application 运行,启动客户端。如果出现设置管理员界面,则client项目配置成功。设置管理员后在用户登录界面以管理员身份登录后即出现系统主界面。 转http://hi.csdn.net/mysoy
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值