在Eclipse中为plugin.xml提供了缺省可视化的编辑器,在编写plugin.xml过程中可以借助这个编辑器完成一些工作。如果你直接录入了plugin.xml文件源代码,还可以用这个编辑器校验你的代码:如果编辑器不能正确读入,就表明你的plugin.xml有一些问题。
在确认Weclome.java和plugin.xml都正确无误之后,可以用Eclipse菜单栏中的Export命令将Weclome.java导出为JAR文件,它的名子应该和plugin.xml中runtime声明的JAR相一致。同时导出plugin.xml。安装Welcome插件的方法和本文第一部分介绍的安装Tomcat插件方法是一样的:首先在"Eclipse的安装路径plugins"路径下面建立一个com.nidapeng.eclipse.plugin路径,然后将Weclome.jar和plugin.xml拷到这个路径下。之后必需重新启动Eclipse,在Eclipse启动的时候,它会搜索所有在插件路径下的插件并注册它们(仅仅是注册,只有在需要某个插件的时候,Eclipse才会启动它)。在重新启动的Eclipse的菜单栏中选择PerspectiveàShow ViewàOthers,在打开的对话框中我们会找到在plugin.xml中extension的category标签中声明的name属性:Welcome。在Welcome的支结点中包含了view标签name属性:Welcome to Eclipse。选中它并确认,Welcome窗口就会显示在Eclipse Workbench上的某个位置 。如果在执行了以上操作,但没有显示新窗口,可以再次打开Show View菜单,此时在菜单中应该有新一顶选择:Welcome to Eclipse,然后选中它。
上面我们完成了一个观察窗口的插件,但这个操作过程对开发稍微复杂一些的插件就显得不太方便了:每次测试都要将代码打包,发布,再重新启动Eclipse系统!为此Eclipse提供了一个专门为开发插件而做插件(有点绕嘴):Plug-in Development Environment(PDE)。本文前面曾提到,目前Eclipse的Release或Stable版本缺省提供了这个插件,因此如果安装的Eclipse是这两个版本中的一个就可以直接进行下面的步骤。下面我们再用PDE环境开发一个稍微复杂一些的插件。
第一步仍然要新建一个项目,只是在向导中不是用Java项目,而是Plug-in Development中的Plug-in Project。在应用向导生成新项目的时候,要注意两点:第一是PDE的项目名称就是plugin的id,因此要保证它的唯一性,这里我们的项目名是com.nidapeng.eclipse.plugin.pde。其次为了进一步说明Eclipse插件的结构,在Plug-in Code Generators中,选择用向导模板生成一个缺省的插件,如图六:

图六
这个用缺省方式生成的插件类对于我们将要的代码并不是必需的,也可以用生成空插件的方式建立我们的项目,这样做只是为进一步说明Eclipse的插件结构。
项目生成之后,在我们的项目中会包含一个PdePlugin.java文件,它就是以缺省方式生成的插件类。注意到它继承了AbstractUIPlugin类,而AbstractUIPlugin类实现了org.eclipse.ui.plugin接口。事实上,所有的Eclipse插件都会有一个相应的实现plugin接口的类,这个类将是新插件的主类(类似于有main()函数的Java类),它负责管理插件的生存期。在我们的AbstractUIPlugin继承子类中,可以用singleton模式来保存在Eclipse中的生成的该插件的第一个也是唯一实例,一般来说,在该继承子类中也要实现一个getDefault()方法以返回当前插件的实例。而且,当Eclipse首次使用该插件的时候,这个主类将是第一个被调用的类,因此我们也可以在它的代码中执行一些初始化的工作。而且如果插件需要使用Preferences,Dialogs或Images资源,也可以通过这个类中的相应方法来得到它们的实例,如用其中的getDialogSettings(),getPreferenceStore(),getImageRegistry()方法。
但是象前面提到的,PdePlugin.java对下面的例子并不是必需的,我们不用对它进行任何修改。在我们第一个例子中的Weclome插件,根本就没有生成AbstractUIPlugin的继承子类,此时系统会自动为Weclome插件生成一个缺省的主类(类似于Java类构造函数,如果没有声明,系统会指定一个默认的构造函数)。






