论坛首页 Java企业应用论坛

RCP应用程序开发系列(2)--创建第一个应用程序

浏览 4068 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-02-15  

开发环境是用的Eclipse3.1

        首先,创建一个插件工程.选择 File > New > Project... 开始一个新工程向导. 选择Plug-in Project点击 Next.在这一页,输入工程的名字.我直接用的是项目的名称,输入"edu.swust.cs.soapfirewall".

       选择 Next,在这个页面可以输入插件的id, version, name, 等信息.基于工程名字,向导会初始化大部信息,需要改变的是:

      • 去除Plug-in Class选项。可能永远也不会需要一个插件类!如果你的插件需要一些信息在它第一次被访问的时候,这个时候需要插件类
       • 在Rich Client Application组中选择Yes。它会告诉向导在一页显示RCP模板,而不是标准的插件模块。
注意:这儿Classpath 项是空的. 因为在 Eclipse 3.1中,通常是会将插件打包成一个JAR文件. 这样的话,插件本身就在加入了classpath,所以这儿没有必要指定这个值.

       点击Next ,向导会显示 RCP Templates 页面. 这儿可以看到有不同类型的向导.对于入门来说,选择Hello RCP 模板来创建尽最简单的RCP应用程序。

      点击 Next 到下一页,在这个页面, 你可以确认soapfirewall 应用,可以输入窗口标题和透视图名字等.这儿可以改变应用程序窗口的标题。


      点击 Finish 来创建你的第一个Eclipse RCP 应用程序. 这个时候IDE可能会提示你是否打开插件开发透视图.它设置插件开发环境中的许多视图,对于插件开发来说,特别有用. 建议选择 Yes.
当向导结束后,你的工作台包含一个单独的edu.swust.cs.soapfirewall工程, 在工程里的src 文件夹里面包含了模板产生的 Java 源文件.
 

       如果你选择Yes 切换到插件开发透视图,你的新的在插件编辑器中打开.这个编辑器提供了一个综合视图,其中包括了plugin.xml的定义, MANIFEST.MF信息, 和 build.properties文件信息.插件编辑器同时与它们一起工作,使你能在一个编辑器中修改插件的各个信息.
 
       为了演示soapfirewall,在OverView页面的Testing部分点击链接. 点击Launch an Eclipse application 链接运行. 这样它会在自己的JVM中启动Eclipse RCP 应用程序.

       双击MANIFEST.MF文件,打开插件编辑器,可以看到,编辑器底部有插件不同部分的标签。打开Dependencies page 页面,可以看到soapfirewall插件依赖于其它的插件: org.eclipse.core.runtime 和 org.eclipse.ui.

这意味着soapfirewall插件可以使用其它插件暴露的类.它同样意味着在这些类不能在soapfirewall中使用. 这个控制类的可见性(visibility) ,这就是Eclipse模块化的概念,通过使用Eclipse从插件集中构建自己的系统.

        Dependencies 页面还有其它有用的 Dependency Analysis 工具用于帮助你在插件之间导航,找到未使用的依赖等功能

  • 关于其它插件

        你可能会问 "哪些是关于 JFace, SWT,和 OSGi的信息呢?我认为他们也应该是RCP的一部分." 为了找到答案,打开Dependencies页面,点击 Dependency Analysis,就可以看到插件的依赖层次图


       注意的是在Runtime和UI下面还有一些其它插件,例如,org.eclipse.swt,有小箭头在旁边演示。这个箭头说明了插件被他们树层次上的父插件再导出了(re-exported),同样地,任何依赖于UI插件的插件自动依赖于再导出的SWT。相似的,UI重导出了JFace和org.eclipse.ui.workbench

      Rumtime插件重新导出了OSGI,这种依赖链机制可以将其它插件暴露的API作为自身插件的一部分. 例如,UI API 中的类和方法的命名类型可以在SWT中找到.为了保证一个需要UI的插件得到一个一致的依赖链, 所以UI需要重导出SWT。记住,UI 不用重导出它知道的所有依赖插件,只暴露那些作为它的API的部分的插件。

  Extensions 提供了一种机制用于将类连接到Eclipse结构. 在extensions页面展示了soapfirewall透视图扩展. 注意它是怎么列出新的透视图类 (edu.swust.cs.soapfirewall. Perspective) 并链接到org.eclipse.ui.perspectives 扩展点。

  • 关于,Extensions和Extension Points的区别

Extensions是实现其它插件定义的扩展点,是你插件必须要做的事情,比如应用程序必须实现的Application扩展点

 

xml 代码
  1. <extension  
  2.          id="application"  
  3.          point="org.eclipse.core.runtime.applications">  
  4.       <application>  
  5.          <run  
  6.                class="org.eclipsercp.hyperbola.Application">  
  7.          run>  
  8.       application>  
  9.    extension>  

Extension Points则是定义本插件中的扩展点,可以由其它插件来实现,典型的应用如访问数据库的Dao接口等

        所有的RCP应用程序必须定义至少一个透视图; 否则无法部署视图. 每一个 IWorkbenchWindow 都有一个page. 这个page拥有它的编辑器和视图实例,通过使用激活的透视图来决定它的布局. 透视图详细的定义了在什么位置,是否显示组件,例如视图,编辑器区域和动作. 

 

论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics