Eclipse插件工程目录介绍

Eclipse插件工程目录详解

   ---站在巨人的肩膀上

http://blog.csdn.net/Steve_wang_victor/archive/2010/02/04/5288948.aspx

当一个Eclipse插件工程建立好了之后,会自动生成如下的工程目录结构:

Application.java

ApplicationActionBarAdvisor.java

ApplicationWorkbenchAdvisor.java

ApplicationWorkbenchWindowAdvisor.java

Perspective.java

SimplebrowserPlugin.java

Build.properties文件

Plugin.xml文件

一、Application

Application类,是RCP应用的主程序,相当于整个RCP应用的控制器。

Application类的主要职责是创建一个工作台(Workbench),然后添加一个工作台顾问(WorkbenchAdvisor),它是启动RCP应用的第一个程序。

实现了eclipseIPlatformRunnable接口,对于绝大多数的RCP应用来说,这个类是不用该动的。

工作台(Workbench)RCP框架的一部分,一个应用程序只能有一个工作台,但是可以有多个工作台窗口(WorkbenchAdvisor)

工作台的结构如下图所示:

二、Advisor

ApplicationActionBarAdvisorApplicationWorkbenchAdvisorApplicationWorkbenchWindowAdvisor,这三个类是RCP应用的三个核心Advisor类,是RCP生命周期中非常重要的三个类。

1>ApplicationWorkbenchAdvisor

在主程序Application类的run方法中引用了ApplicationWorkbenchAdvisor类,这个WorkbenchAdvisorWorkbench的外观进行了配置。

ApplicationWorkbenchAdvisor继承了WorkbenchWindowAdvisor抽象类,插件工程向导自动填充了createWorkbenchWindowAdvisorgetInitialWindowPerspectiveId方法体,我们同样可以复写父类的其他方法,这个类的方法会在工作台的生命周期的各个关键时刻由RCP平台调用。是最重要的一个Advisor类。

下面是对WorkbenchAdvisor类中的几个重要方法的简要说明:

方法

说明

initialize

在启动工作台Workbench前进行初始化,这个方法有一个参数:IWorkbenchConfigurer

preStartup

在初始化完成之后,打开第一个窗口之前调用,在这里可以对打开编辑器和视图的初始化参数进行设置。

postStartup

在所有的窗口打开或者恢复以后开始事件循环之前调用,在这里可以进行一些类似自动批处理的工作

preShutdown

在事件循环结束之后,关闭任何一个窗口之前调用

postShutdown

在所有窗口关闭之后,关闭工作台之前调用,可以用来保存当前的应用状态,清理initialize方法创建的内容

现在我们不需要对这个类进行任何修改。

2> ApplicationWorkbenchWindowAdvisor

ApplicationWorkbenchWindowAdvisor继承了WorkbenchWindowAdvisor类,这个类主要负责对WorkbenchWindow进行控制,例如状态栏,工具栏,标题,窗口尺寸等。

这个类中的方法在WorkbenchWindow的生命中期中起着重要的作用

方法

说明

preWindowOpen

WorkbenchWindow的构造函数中调用,用户设置窗口的一些特性,如:是否显示状态栏,但是这个时候还没有创建任何窗体控件,所以不能在这里引用它们。

postWindowRestore

在窗口恢复到以前保存的状态之后,打开窗口之前调用这个方法在新建窗口,Workbench第一次运行,以及没有保存窗口状态的情况下都不会调用,在这里可以调用IWorkbench.close()方法关闭Workbench和所有打开的WorkbenchWindow

postWindowCreate

在窗口创建以后,打开以前调用,或者是窗口恢复到以前保存的状态之后,在执行postWindowRestore方法之后执行

openIntro

Intro就是你第一次打开Eclipse的时候看到的内容,这个方法的默认实现是:如果IWorkbenchPreferences.SHOW_INTRO属性被设置为true,那么在第一次打开窗口的时候将会调用这个方法,在Intro显示过之后该属性将会设置为false,后来只有在WorkbenchConfigurer.getSaveAndRestore方法返回true并且关闭窗口时intro仍然显示的时候才会调用这个方法。

postWindowOpen

Workbench窗口打开之后调用,可以在这里开或者关窗体的控件,如改变窗口尺寸等等

preWindowShellClose

这个方法在Workbench窗口关闭之前,由关联到这个窗口的ShellListener调用,如果窗口由于其他什么原因已经关闭了,则不会调用这个方法

如果方法返回的是false。那么关闭Shell的请求将会被忽略,所以这个是唯一的一个可以阻止用户关闭窗口行为的地方,也是提示用户是否保存当前工作和设置的最佳场所。

postWindowClose

Workbench窗口关闭之后调用,这个时候窗口中的红箭已经全都被清除了,在这里可以清除由wOpen方法创建的内容

createWindowContents

这个方法用来创建窗口的内容,默认的实现添加了一个菜单栏,一个工具栏,一个状态栏,一个透视图栏,这些控件的可见性可使用IWorkbenchWindowConfigurer中的show方法来进行设置。

可以通过在子类中复写这个方法来实现自定义的窗口内容和布局,但是需要调用IWorkbenchWindowConfigurercreatePageComposite方法

这个方法只有一个Shell参数

createEmptyWindowContents

创建并且返回在窗口没有也没显示的时候要显示的控件,如果返回的是null,则会使用默认的窗口背景,复写这个方法可以实现自定义的窗体背景,默认的实现返回是null

这个方法只有一个参数:Composite

插件工程向导自动帮我们填充了createActionBarAdvisorpreWindowOpen方法体,在preWindowOpen方法中,我们看到向导隐藏了窗口的工作条和状态栏,并且设置了窗口的大小和标题栏上的文字。

这个类的方法中常常需要使用到Configure接口对窗口进行配置,在方法体中直接调用getWindowConfigurer方法就可以直接获得IWorkbenchWindowConfigurer对象了,就像向导在preWindowOpen中所做的一样。

3> ApplicationActionBarAdvisor

ActionBarAdvisor类几层了ActionBarAdvisor类,这个类负责为Workbench WindowActionBar(菜单,工具条和状态栏等)创建Action。也可以通过插件清淡plugin.xml文件动态地提供action

这个类中主要有下面几个方法:

方法

说明

参数

makeActions

创建在fill方法中使用的action,这个方法用来通过key binding 服务注册 action 并且添加到关闭窗口时要清楚的action列表中。

IWorkbenchWindow

fillMenuBar

填充窗口的主菜单

IMenuManager

fillCoolBar

填充窗口的主工具栏

ICoolBarManager

fillStatusLine

填充窗口的主状态栏

IStatusLineManager

isApplicationMenu

这份方法在使用OLE对象做编辑的时候使用,根据传入的菜单ID返回指定的菜单是应用的菜单还是OLE对象菜单

在菜单合并期间,应当保留应用的菜单,至于其他的菜单最好可能从window中删除掉

String

以上三个Advisor类中的方法基本上都是不能在客户端直接调用的,而是由RCP框架调用的。

插件工程向导自动为我们实现了Advisor子类必须实现的各个方法,根据实际需要我们可以复写以上各表中方法来实现我们的意图。

三、SimplebrowserPlugin

Plugin类继承了AbastractUIPlugin抽象类,并且是已给单例类

这个类提供了对插件Preferences dialog store image registry的支持,前面两个对象提供了保存插件和对话框设置的有效途径,后者为整个插件提供了可能在插件中频繁使用的Image资源。由此可以看出,这个类主要用来存储插件的全局信息,由于是单例类,也是放置插件中其他类要用到的资源的静态工具方法的好地方。

四、Perspective

这是RCP应用的默认透视图。实现了IPerspectiveFactory接口,并且通过org.eclipse.ui.perspectives扩展点的className属性指定。

透视图是一套可见的视图,编辑器和菜单等。在RCP应用中,必须定义至少一个透视图并且设置为默认的透视图。

所有启动RCP应用后希望用户看到的视图或者编辑器都必须在这个类的createInitialLayout方法中设置。

五、Plugin.xml文件

Plugin.xml 文件是Eclipse的扩展点清淡,这个文件用来定义和使用Eclipse扩展点。扩展点是关联Eclipse插件的基本方式。

Eclipse提供了插件清单编辑器,使用这个编辑器可以方便的修改plugin.xml文件的内容,使用这个编辑器可以减少手工编辑这个xml文件的工作和错误。在使用插件向导创建完工程之后看到的就是这个编辑器。

六、Build.properties

在导出插件的时候这个文件制定了要build的内容和相关资源的路径,如果你向应用新增加了一些资源,例如图标文件,记得要把他们添加到该文件中。

在插件清淡编辑器的build configuration页面可以很方便的在导出应用前对这个文件进行配置。

<!--EndFragment-->

猜你喜欢

转载自irving-wei.iteye.com/blog/1069512