作者:狗子汪_322 | 来源:互联网 | 2023-09-08 12:20
Eclipse中三个最吸引人的地方是:第一是它创新性的图形API,就是SWTJFace.第二是它的插件机制.第三个是利用它的插件机制开发众多功能强大的插件.插件成就了Eclipse的
Eclipse中三个最吸引人的地方是:
第一是它创新性的图形API,就是SWT/JFace.
第二是它的插件机制.
第三个是利用它的插件机制开发众多功能强大的插件.
插件成就了Eclipse的今天.Eclipse的内核很小,其他功能都是基于这个内核上的插件.
如Eclipse中自代的JUnit,Ant等.如果微软愿意他可以把Office软件做成Eclipse的插件.
如果Adobe有兴趣,Photoshop也可以有for Eclipse的插件版.
Eclipse中的绘图API---Draw2D的功能也是很强的.
那么把软件写成Eclipse插件有什么好处呢?对于用户来说Eclipse的使用环境比较友好,
前面的SWT/JFace中还是比较基本的界面元素.像Eclipse中的视图,编辑窗,停泊窗这些界面如果用Application的方式会很麻烦.但是用
Eclipse插件的最大优点就是界面友好,风格统一,特别是对熟悉Eclipse操作的用户.这种优势更加明显.
当然将软件写成插件的形式也有一定的缺陷.首先必须依附于Eclipse运行.如果要安装插件就得先安装Eclipse.其次,插件和Eclipse融合在一起,原来Eclipse的一些菜单和工具栏是无法屏蔽的.
插件的Hello World(第一个插件程序)步骤:
最后运行结果图:
界面的左边视图中多了一个名为myplugin的项目.项目中有两个文件:MypluginPlugin.java,SampleAction.java
可能是书中的Eclipse版本和我的不一样,.我的在本地生成java文件,第一个文件的名字是Activator.java
>>>>>后来了解追加.>>>>>>>>
因为我看的书是第一版的,第一版作者写书的时候是在2004年,之后在07年又对这一版进行了更新所以上面不一样的主要原因就是因为Eclipse的版本不一致的问题.
Activator.java就是Eclipse老版本的***Plugin.java,后来Eclipse插件机制用OSGi规范重新实现之后,将其更名为Activator.java.
此文件比较重要,它使用的是单例模式.它管理着插件的生命周期.并提供了插件启动和停止的方法.
代码如下:
Activator.java
1 /**
2 * The activator class controls the plug-in life cycle
3 */
4 public class Activator extends AbstractUIPlugin {
5 // The plug-in ID
6 public static final String PLUGIN_ID = "myplugin"; //$NON-NLS-1$
7 // The shared instance
8 private static Activator plugin;
9 /**
10 * The constructor
11 */
12 public Activator() {
13 }
14 public void start(BundleContext context) throws Exception {
15 super.start(context);
16 plugin = this;
17 }
18 public void stop(BundleContext context) throws Exception {
19 plugin = null;
20 super.stop(context);
21 }
22 /**
23 * Returns the shared instance
24 */
25 public static Activator getDefault() {
26 return plugin;
27 }
28 /**
29 * Returns an image descriptor for the image file at the given
30 * plug-in relative path
31 */
32 public static ImageDescriptor getImageDescriptor(String path) {
33 return imageDescriptorFromPlugin(PLUGIN_ID, path);
34 }
35 }
Activator.java 比较重要,今后将会使用到它,而SampleAction.java则是一个类似JFace中的Action,可以把它看做是插件中的Action.
运行时将看到SampleAction.java的效果.
SampleAction.java是IWorkbenchWindowActionDelegate接口的实现类,它类似于JFace中的Action.新打开Eclipse环境里新增的工具栏按钮和主菜单项都是由它实现.当然还要把它在plugin.xml中注册一下才发挥作用.
SampleAction.java
1 public class SampleAction implements IWorkbenchWindowActionDelegate {
2 private IWorkbenchWindow window;
3
4 public SampleAction() {
5 }
6
7 /**
8 * The action has been activated. The argument of the
9 * method represents the 'real' action sitting
10 * in the workbench UI.
11 * @see IWorkbenchWindowActionDelegate#run
12 */
13 public void run(IAction action) {
14 MessageDialog.openInformation(
15 window.getShell(),
16 "Myplugin",
17 "Hello, Eclipse world");
18 }
19
20 public void selectionChanged(IAction action, ISelection selection) {
21 }
22
23 public void dispose() {
24 }
25
26 public void init(IWorkbenchWindow window) {
27 this.window = window;
28 }
29 }
项目根目录下还有一个非常重要的文件是plugin.xml.这个文件是插件的入口.Eclipse是根据这个文件里的设置信息来加载插件的.
在开发插件的初期会频繁的在这个文件中做编辑.术语叫做"设置扩展点".像在Eclipse的增加主菜单,视图,按钮等.都是在这个文件里面设置的不同的扩展点,后面将详细讲到如何编辑此文件.
也许你会问:开发一个系统会有很多的菜单和按钮,是不是都要在plugin.xml文件里设置呢?回答:不必.
在plugin.xml里只设置嵌入到Eclipse框架里的主要扩展点.其他软件只有的菜单和按钮就不用再plugin.xml里面设置了.
下图中所示为Eclipse界面中部显示的就是plugin.xml的编辑窗口,点击该窗口下部的plugin.xml选项.可以直接编辑此文件.
和plug.xml相配合一起对插件做配置的还有MANIFEST.MF和build.properties文件.
运行插件"运行---->运行方式----->运行工作平台"这种是专用于插件的运行方式,运行之后将打开一个新的Eclipse环境,并同时将插件项目编译加载到新Eclipse环境中;今后开发经常要通过这种方法来试运行说开发的插件项目,不过那时候选择"运行---->调试----->运行工作平台"更适合调试.Eclipse支持调试期间的部分热修改.不用每次修改都重新启动一个Eclipse.这样能节省很多调试开发时间.
新开的Eclipse界面如图所示.在新的Eclipse环境中新增加了一个工具栏按钮和一个主菜单项.单击此按钮或者菜单项.
将弹出一个"Hello,Eclispe world"信息提示框.按钮和菜单项都是由SampleAction.java产生的效果.