开发自己的eclipse扩展点

eclipse作为正走向大众化,多语言化的跨平台开发工具,正被越来越多的开发者所青睐。同时通过其pde,开发者完全可以在不用担心工具性能前提下实现工具的自我衍生,使自身足够强大。而这都得益于其核心机制扩展点机制。现在我们就来简单的实践一下,自己动手开发一个扩展点。
当然,我们的eclipse工具已经足够智能,我们需要做的只是学会多个图形编辑器的使用和对插件扩展点机制的理解。
扩展点开发过程大致如下:
1.设计扩展点的功能,并设计在何时调用扩展并收集扩展的信息
2.实现功能插件,并定义扩展点用于功能扩展
3.通过平台注册表收集扩展信息,并加入功能调用点
4.编写实现扩展点扩展插件

一.软件的开发一般是按图索骥,设计必不可少,我们先简单的设计一个插件,它显示一个Tableview,里面有几个固定节点。而我们需要定义一个扩展点,这个扩展点用来定义Tableview的节点,如果有插件实现了这个扩展点,那我们的tableview就会增加一个新的节点。我们需要做的首先是创建一个view插件,它显示几个固定的节点。

二.扩展点的思路已经有了,现在开始编码,首先我们要定义一个tableview插件,并定义它的扩展点。
过程如:
file-->new-->other-->plug-in project
输入插件名称com.random.one点击-->next-->next-->选择一个plug-in with a view模板,点击next-->finish。
现在我们的tableview视图插件已经生成了,我们可以通过run as -->eclipse application运行另一个eclipse工作台查看插件效果,在views里面我们将看到我们创建的Sample view视图。
在插件编辑器的extension points标签页,添加扩展点,设置扩展点的id,name,schema等属性,注意调用的扩展点=插件名.id,schema为扩展点的xml schema描述文件。我们定义一个newNode扩展点,定义如下:
<extension-point id="newNode" name="new node" schema="schema/newNode.exsd"/>,其外部调用的扩展点id应该为com.random.one.newNode,同时我们需要在newNode.exsd文件中进行扩展点的描述,我们可以定义一个node元素,让它具有两个attibute,分别是name和class,name用来定义定点名,class也用于收集节点名,类型为java,并将它定义为一个接口类。

三.在定义完扩展点插件后,我们收集扩展信息,并把扩展信息加入到程序的功能点中。在这个例子中我们只需要收集节点名称,我们定义它在通过扩展的plugin定义获得时,将通过扩展的接口实现类获得。然后我们将收集到得扩展信息,节点信息加入到tableview的内容管理器,这样在调用内容管理器时就去收集扩展信息,并将所有的信息显示在视图上。

四.我们要实现扩展点,只需要定义一个空的插件,让其通过扩展插件清单文件增加扩展,并定义一个或多个节点元素的name,也可以通过实现扩展点的接口类的固定方法来获得节点名字。

这样一个自定义插件就实现完成了,大部分代码都由pde自动生成,小小的难点就是从注册表读取扩展信息,同时要注意扩展点的接口类要在扩展点的exsd文件中声明,不然在查找其实现类时将异常,代码附在后面。有兴趣的朋友可以试试treeview,在节点上定义扩展点,实现节点的增删改拖功能。
Eclipse 插件开发扩展定义文档,提供给有需要的开发人员。 如下摘录: 视图 标识: org.eclipse.ui.views 描述: 此扩展用来为工作台定义更多视图。视图是工作台页面内的可视组件。通常用来浏览信息的层次结构(例如,工作空间)、打开编辑器或显示活动编辑器的属性。用户可以通过“窗口 > 显示视图”菜单显示视图,也可以从视图局部标题栏关闭视图。 为了减少“显示视图对话框”中的视觉混乱,应使用类别将视图分组。 配置标记: <!ELEMENT extension (category | view | stickyView)*> <!ATTLIST extension point CDATA #REQUIRED id CDATA #IMPLIED name CDATA #IMPLIED> point - 目标扩展的标准标识。 id - 扩展实例的可选标识。 name - 扩展实例的可选名称。 <!ELEMENT category EMPTY> <!ATTLIST category id CDATA #REQUIRED name CDATA #REQUIRED parentCategory CDATA #IMPLIED> id - 将用来标识此类别的唯一名称 name - 将用来在 UI 中表示此类别的可翻译名称 parentCategory - 由以“/”分隔的类别标识组成的可选路径。这样,您就可以创建类别层次结构。 <!ELEMENT view (description?)> <!ATTLIST view id CDATA #REQUIRED name CDATA #REQUIRED category CDATA #IMPLIED class CDATA #REQUIRED icon CDATA #IMPLIED fastViewWidthRatio CDATA #IMPLIED allowMultiple (true | false) > id - 将用来标识此视图的唯一名称 name - 将用来在 UI 中表示此视图的可翻译名称 category - 由以“/”分隔的类别标识组成的可选属性。引用的每个类别都必须在相应的 category 元素中声明。 class - 实现 org.eclipse.ui.IViewPart 的类的标准名称。常用的作法是成为 org.eclipse.ui.part.ViewPart 的子类以继承缺省功能。 icon - 将与视图相关联的图标的相对名称。 fastViewWidthRatio - 视图作为活动快速视图时占用工作台宽度的百分比。这必须定义为浮值且在 0.05 与 0.95 之间浮动。如果未提供任何值,则将使用缺省比率。 allowMultiple - 这是一个标志,用来指示此视图是否允许使用 IWorkbenchPage.showView(String id, String secondaryId) 来创建多个实例。缺省值为 false。 <!ELEMENT description (#PCDATA)> 一个可选的子元素,其主体应该包含为视图提供简短描述的文本。 <!ELEMENT stickyView EMPTY> <!ATTLIST stickyView id CDATA #REQUIRED location (RIGHT|LEFT|TOP|BOTTOM) closeable (true | false) moveable (true | false) > 粘滞视图是这样一种视图:缺省情况下,该视图将出现在所有透视图的一个窗口中,只要该窗口是打开的。它的初始位置是由位置属性管理的,但是用户可以自由移动或关闭它。使用此元素将只会导致创建视图的占位符,它将不会显示视图。请注意,使用此元素应该特别小心,并且只应将此元素应用于真正需要存在于透视图之间的那些视图。起始版本:3.0 id - 要使它成为粘滞视图的视图的标识。 location - 用来指定粘滞视图相对于编辑器区域的位置的可选属性。如果缺少此属性,则视图将放置在编辑器区域的右边。 closeable - 用来指定视图是否应该是可关闭的可选属性。如果缺少此属性,则视图将是可关闭的。 moveable - 用来指定视图是否应该是可移动的可选属性。如果缺少此属性,则视图将是可移动的。 示例: 以下是扩展的示例: <extension point="org.eclipse.ui.views"> <category id="com.xyz.views.XYZviews" name="XYZ"/> <view id="com.xyz.views.XYZView" name="XYZ View" category="com.xyz.views.XYZviews" class="com.xyz.views.XYZView" icon="icons/XYZ.gif"/> </extension> 以下是粘滞视图声明的一个示例: <extension point="org.eclipse.ui.views"> <stickyView id="com.xyz.views.XYZView" /> </extension> API 信息: class 属性的值必须是用来实现 org.eclipse.ui.IViewPart 的类的标准名称。最常见的做法是在开发新视图时成为 org.eclipse.ui.part.ViewPart 的子类。 提供的实现: Eclipse 平台提供了许多标准视图,包括“导航器”、“属性”、“大纲”和“任务”。从用户的角度看,这些视图与插件所提供的任何其他视图没有什么差别。可从“窗口”菜单的“显示视图”子菜单中显示所有视图。视图的位置是持久保存的:当关闭视图时会保存该位置,而在单个会话中重新打开视图时就会恢复它。该位置在各工作台会话之间也是不变的。 Copyright (c) 2002, 2006 IBM Corporation and others. All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值