- 浏览: 383038 次
- 性别:
- 来自: 深圳
-
文章分类
最新评论
-
zxjlwt:
学习论。确实很全啊。欢迎交流http://surenpi.co ...
eclipse dialog 对话框 大全 -
zxjlwt:
很好。http://surenpi.com
eclipse 源码泛读 -
string2020:
有卵用???
activiti 第一个例子 helloworld -
ysj_csdn:
能给个正确的例子?
activiti 第一个例子 helloworld -
zxjlwt:
学习了。http://surenpi.com
Eclipse扩展点介绍
Eclipse 从推出到现在一直非常成功,并且大部分成功源自构成 Eclipse 平台的各个项目。其中包括的一个项目名为 Plug-in Development Environment(PDE)。如果您曾经在 Eclipse 中创建过插件,那么一定使用过 PDE。PDE 是一组用于帮助创建、打包和管理插件的工具。
我们将集中精力研究 PDE 中提供的模板功能。如果您还记得在 Eclipse 中尝试创建第一个插件时的情景,则知道一切都是从 New Plug-in Project 向导开始的。
然后,在创建第一个插件的过程中,您无意中发现了很有价值的东西。
噢,我的 —— 模板!PDE 提供了各种模板让您开始 Eclipse 插件创建之旅。本文的目的是讨论如何创建这些模板,从而简化最终用户使用扩展点或代码时面临的学习曲线。
PDE 简介
PDE 包含两个主要部分:UI 和 Build。UI 组件负责所有向导和编辑器 —— 甚至更多!—— 您将在开发插件的过程中看到。它还包含本文中将讨论的模板基础架构。Build 组件负责插件的构建和打包。
我发现学习知识的最佳方法是通过一个良好的简单示例。那么,猜猜是什么?那就是我们今天将要做的事情。我们将开发一个用于创建单纯视图的简单模板。我希望通过本文可以为将来的模板创建工作打下基础。
本次旅程的第一站是创建新插件项目(File > New > Project > Plug-in Project)。请使用模板。确保项目与 org.eclipse.pde.ui 之间存在依赖性。此操作完成后,可以转至插件编辑器的 Extensions 选项卡,然后开始创建模板。
PDE 模板
Plug-in Project 向导中的所有模板都属于 PDE,而这些模板的源代码可以在 Eclipse 的 CVS 库 中免费获得。
用于创建模板的最重要的扩展点是org.eclipse.pde.ui.pluginContent。此扩展点能够贡献用于为 PDE 插件项目创建附加内容的向导。创建了插件列表和关键文件后,可以使用这些向导来将更多文件和扩展添加到初始架构中。此向导的实现将根据用户在向导中的选择基于自定义的参数化模板添加内容。现在,让我们开始使用此扩展点。
在图 3 中,我们定义了一个带有 ID(com.ibm.pde.simple.template.wizard)、名称(Simple View Wizard)图标和类定义的新向导(参见以下代码)。类定义的重要方法是 createTemplateSections()
,该方法负责返回驱动内容创建的模板部分。下一节将讨论如何创建模板文件以及创建之后究竟有哪些内容驻留在模板部分中。
清单 1. SimpleViewTemplateWizard.java
package com.ibm.pde.simple.template; import org.eclipse.pde.ui.IFieldData; import org.eclipse.pde.ui.templates.ITemplateSection; import org.eclipse.pde.ui.templates.NewPluginTemplateWizard; public class SimpleViewTemplateWizard extends NewPluginTemplateWizard { protected IFieldData fData; public void init(IFieldData data) { super.init(data); fData = data; setWindowTitle("Simple View Wizard"); public ITemplateSection[] createTemplateSections() { return new ITemplateSection[] {new SimpleViewTemplateSection()}; } } |
模板中的条件逻辑
正如您在模板中所见,模板中可以有简单的条件逻辑。模板系统支持简单和嵌套的 if
语句。如果需要使模板可以随用户输入灵活变化,则此功能会十分有用。
本次旅程的下一站是创建用于生成代码的模板。为此,必须正确设置项目。如果看一看图 4,则会发现有一个 templates_3.2 文件夹。此文件夹的名称十分重要,因为它将指示 PDE 此模板适用于哪些版本的 Eclipse。如果希望模板可以在 V3.1 及更高版本上运行,请将文件夹命名为 templates_3.1。此模板文件夹的子文件夹是 viewtemplate 并且表示需要与模板关联起来的文件分组,称为 分区。可以将此文件夹命名为任意名称。
在分区文件夹下,有两个文件夹:bin 和 java。这两个文件夹包含创建模板时将复制的内容。java 文件夹中的内容非常重要,因为这是表示视图的类。由于模板系统将为用户需要的名称自动换出变量 $className$
,因此将其命名为 $className$.java。
在此类文件内,还有一些需要用户自定义的变量替换。这些变量替换的名称十分灵活,将在下一节中讨论,讨论的主要内容集中在模板分区上。
package $packageName$; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.eclipse.ui.part.ViewPart; public class $className$ extends ViewPart { public void createPartControl(Composite parent) { Label label = new Label(parent, SWT.CENTER); %if importantMessage String message = new String("$message$!!!"); %else String message = new String("$message$"); %endif label.setText(message); } public void setFocus() {} } |
模板分区是包含驱动模板输入的 UI 和控制逻辑的 Java 类。模板分区必须实现 ITemplateSection
接口。为方便起见,PDE 提供了一个抽象类 OptionTemplateSection
,使用它可以为您节省大量时间。可以对模板分区执行的操作有很多(我将把这些内容给您留作练习以研究附带的代码样例),我们将去关注更重要的内容。第一步是确保通过 addPages(...)
方法添加向导页面。在这个简单的例子中,我们只在第一个页面中添加一个页面。
清单 3. SimpleViewTemplateSection.java
... public void addPages(Wizard wizard) { WizardPage page = createPage(0, IHelpContextIds.TEMPLATE_INTRO); page.setTitle("Simple View Template"); page.setDescription("Creates a simple view"); wizard.addPage(page); markPagesAdded(); } ... |
下一步是为客户提供 UI 以便他们可以使用模板。通过声明模板所使用的变量,也可以通过使用 addOption(...)
方法添加选项来完成。在我们的类中,有一种方便的方法 createOptions()
,构造函数将调用此方法来创建选项。
清单 4. SimpleViewTemplateSection.java
... private static final String KEY_CLASS_NAME = "className"; private static final String KEY_VIEW_NAME = "viewName"; private static final String KEY_MESSAGE_NAME = "message"; private static final String KEY_IMP_MESSAGE_NAME = "importantMessage"; ... private void createOptions() { addOption(KEY_CLASS_NAME, "Class Name ", "SimpleView", 0); addOption(KEY_VIEW_NAME, "View Name", "SimpleView", 0); addOption(KEY_MESSAGE_NAME, "Message", "Hello World", 0); addOption(KEY_IMP_MESSAGE_NAME, "Important?", false, 0); } ... |
模板系统提供了若干种方法帮助添加选项;在 BaseOptionTemplateSection
类中可以看到这些方法的实现。但是,如果需要比模板系统提供的更大的灵活性,建议使用 registerOption(...)
方法。可以创建一组自己的选项,例如,如果需要使用组合框选项,则需要将 ComboChoiceOption
实例化并调用 registerOption(...)
方法(有关选项的说明,请参见表 1;有关完整的类型层次结构,请参见图 6)。
BlankField | 用于在模板分区向导页面中创建空白空间 |
StringOption | 用于在模板分区向导页面中收集来自用户的字符串 |
BooleanOption | 用于在模板分区向导页面中收集来自用户的布尔型选项 |
RadioChoiceOption | 用于在模板分区向导页面中收集来自用户的一组单选选项 |
ComboChoiceOption | 用于在模板分区向导页面中收集来自用户的一组组合选项 |
ChoiceOption | 不建议使用 —— 请使用 RadioChoiceOption 或 ComboChoiceOption |
最后一步是编写创建和填充感兴趣的扩展点的代码。在我们的简单示例中,我们只关注了 org.eclipse.ui.views
扩展点。在 PDE 模板系统中,创建模板时将调用 updateModel(...)
方法,并且在这里希望您以模板创建者的身份创建扩展以及其他内容。另请注意,还可以创建多个扩展点,即使下面的代码清单显示只创建一个扩展点。
清单 5. SimpleViewTemplateSection.java
... protected void updateModel(IProgressMonitor monitor) throws CoreException { IPluginBase plugin = model.getPluginBase(); IPluginModelFactory factory = model.getPluginFactory(); // org.eclipse.core.runtime.applications IPluginExtension extension = \ createExtension("org.eclipse.ui.views", true); IPluginElement element = factory.createElement(extension); element.setName("view"); element.setAttribute("id", getStringOption(KEY_CLASS_NAME)); element.setAttribute("name", getStringOption(KEY_VIEW_NAME)); element.setAttribute("icon", "icons/sample.gif"); String fullClassName = getStringOption(KEY_PACKAGE_NAME)\ +"."+getStringOption(KEY_CLASS_NAME); element.setAttribute("class", fullClassName); extension.add(element); plugin.add(extension); } ... |
在结束之前,需要注意的是 org.eclipse.pde.ui.templates 扩展点非常重要。此扩展点提供了通向自定义插件向导的入口。如果有要创建模板的特定扩展点,建议扩展该扩展点,因为它允许客户使用模板以及其他内容(参见图 7)。在本例中,只重用了 OptionTemplateSection
implementation(SimpleViewTemplateSection
)。我想强调的是如果创建了自定义扩展点并且提供了模板,则它将对用户起到帮助作用。
记得当您第一次学习 Eclipse 时必须创建一个视图么?视图模板在理解工作原理时具有极高的价值。现在,这种实惠您的用户也将感受得到。
<extension point="org.eclipse.pde.ui.templates"> <template class="com.ibm.pde.simple.template.SimpleViewTemplateSection" contributingId="org.eclipse.ui.views" id="com.ibm.pde.simple.template" name="Simple View"/> </extension> |
在完成这项艰巨的工作之后,保佑我们能够创建项目并且让它能够使用简单的模板。创建了此项目后,我们可以轻松地查看代码并且开始了解错综复杂的模板。还可以启动一个运行时工作区环境并查看模板的结果。
我们的目标是向您介绍 PDE 的模板系统,而这一目标通过一个亲手实践的示例实现了。鼓励您下载下面列出的示例来查看其工作原理。希望它向您证明了 PDE 的模板系统为最终用户提供了一种强大的方法可以快速地引导创建项目,或者可能使自定义扩展点的示例实现很显眼。如果您觉得 PDE 模板系统缺少某些区域,我们十分乐意收到 Bugzilla 条目 形式的反馈。我们一直在不断地寻找改进 PDE 的方法。
http://www.ibm.com/developerworks/cn/opensource/os-eclipse-pde/
http://www.vogella.de/articles/EclipsePDEBuild/article.html#pdebuild_project
发表评论
-
离线使用tycho对eclipse RCP打包导出
2015-09-02 09:22 1261http://www.bubuko.com/infodetai ... -
RAP源码泛读及分析
2014-01-17 13:27 1176SWT、RWT如何保证大部 ... -
rap 的学习1
2013-10-27 22:02 800RAP 2.2 December 2013 (planne ... -
tycho 打包不同平台的RCP
2013-06-18 10:56 1179<configuration> < ... -
rap web开发
2013-04-10 17:12 909rap项目已经2.0(changelog) 这次改动 ... -
subversion升级到1.7
2012-09-07 15:37 1931http://www.cnblogs.com/xiziy ... -
ubuntu eclipse 中使用jadclipse java反编译
2012-09-07 11:04 12071:net.sf.jadclipse_3.3.0.jar 发 ... -
Nebula Project
2012-08-10 02:42 895http://www.eclipse.org/nebula/ -
Eclipse Plug-in dependencies – Required Bundle vrs. Import-Package
2012-07-19 00:32 3047http://www.vogella.com/blog/200 ... -
rcp培训
2012-07-19 00:22 1255<!-- @pa ... -
No schema found for … extension point 问题
2012-03-13 13:09 1599很多时候在编辑plugin.xml 文件的Extensi ... -
Eclipse中的org.eclipse.core.resources.markers扩展点
2011-11-09 11:26 1950扩展点配置如下:<extension ... -
开发一个调试 JSP 的 Eclipse 插件
2011-10-27 22:34 1594AVA调试框架(JPDA)简介JPDA是一个多层的调试框架 ... -
gmf 优点
2011-09-28 15:09 991http://www.ibm.com/developerwor ... -
gef 与gmf的结合
2011-09-28 14:03 1051以前的项目已经就是直接用gef,自己写模型的。 今天研 ... -
rcp自动加载插件
2011-09-28 13:56 1218http://blog.ixpub.net/html/9 ... -
rcp DialogSettings IPreferenceStore IMemento
2011-09-22 14:31 1154三个不的不同点: IMemento 要求rc ... -
rcp IPreferenceStore
2011-09-22 14:21 1277IPreferenceStore store=Acti ... -
rcp DialogSettings
2011-09-22 14:10 1190Activator.getDefault().getDialo ... -
rcp IMemento 状态的保存
2011-09-22 13:50 1145rcp 可以对每个part进行状态的保存。 保存数据 ...
相关推荐
如果您曾经在Eclipse中创建过插件,那么一定使用过PDE。PDE是一组用于帮助创建、打包和管理插件的工具。我们将集中精力研究PDE中提供的模板功能。如果您还记得在Eclipse中尝试创建第一个插件时的情景,则知道一切都...
二、Eclipse插件开发环境搭建 首先,你需要下载并安装Eclipse IDE for RCP and RAP Developers,这个版本包含开发Eclipse插件所需的所有工具。然后,通过“Help” -> “Install New Software”添加Eclipse插件开发...
本书《Eclipse插件开发方法与实战》深入探讨了如何利用Eclipse平台进行插件开发,为开发者提供了详尽的指导。下面,我们将详细讨论Eclipse插件开发的相关知识点。 1. **Eclipse插件体系结构**: - Eclipse采用插件...
**UAP-STUDIO 集成开发环境与Eclipse插件详解** UAP-STUDIO(统一应用平台工作室)是一款强大的企业级应用开发工具,它提供了一整套完整的开发、调试、部署解决方案,旨在提高开发效率并降低开发复杂度。Eclipse,...
通过深入学习Eclipse插件开发,你不仅可以提升个人开发能力,还可以为团队或企业构建高效、定制化的开发环境。同时,掌握Eclipse RCP应用开发技术,可以让你有能力开发出功能丰富、用户体验优秀的桌面应用程序。在...
Eclipse插件开发的另一个重要方面是理解和使用Eclipse的扩展点(Extension Points)。扩展点是Eclipse提供的一种机制,允许插件向Eclipse的特定部分添加功能。例如,`org.eclipse.ui.editors`扩展点允许你定义新的...
在IT行业中,Eclipse是一款广泛使用的开源集成开发环境(IDE),尤其在Java编程领域,它以其强大的功能和高度可扩展性赢得了程序员的喜爱。"NC_eclipse开发插件"是专为Eclipse设计的一款插件,旨在提升Eclipse对NC...
Eclipse插件开发系列 Eclipse作为一款强大的集成开发环境(IDE),其强大的扩展性得益于其插件架构。本系列将深入探讨Eclipse插件的开发技术,帮助开发者充分利用Eclipse的功能,定制属于自己的开发环境。 一、...
### Eclipse插件开发指南 #### 一、Eclipse概述 **1.1 Eclipse简介** Eclipse是一个开源的、可扩展的集成开发环境(IDE),主要应用于Java开发,但通过插件支持,它也广泛用于C/C++、PHP、Python、Ruby等其他语言...
首先,"eclipse插件开发---简单例子"这个标题暗示我们将探讨的是如何构建基本的Eclipse插件。Eclipse插件基于OSGi框架,它允许开发者创建可复用的模块化组件,这些组件可以与其他Eclipse插件交互,以提供定制化的...
总结来说,Eclipse插件开发涉及了插件项目的创建、扩展点和扩展的使用、UI元素的定制、模型和服务的设计以及调试和部署等多个方面。通过学习和实践,开发者能够根据实际需求定制属于自己的Eclipse开发环境,提升开发...
Eclipse 插件开发是构建基于Eclipse平台的自定义工具或功能扩展的过程。Eclipse是一个开源的集成开发...通过学习Eclipse插件开发,开发者可以创建符合自己需求的工具,提升开发效率,并参与到Eclipse社区的建设中去。
Eclipse插件开发是扩展Eclipse集成开发环境(IDE)的一种技术,允许开发者根据自己的需求定制功能,提高工作效率。Eclipse作为一个开放源码的平台,其插件机制基于OSGi框架,使得开发者能够构建可互操作且模块化的应用...
Eclipse Hadoop2 插件是为开发人员提供的一种强大工具,它允许用户在Eclipse集成开发环境中(IDE)直接编写、调试和管理Hadoop项目。这个插件针对Hadoop 2.x版本进行了优化,提供了丰富的功能来简化Hadoop应用程序的...
Eclipse是一款广泛使用的开源集成开发环境(IDE),而AngularJS则是一个流行的前端JavaScript框架,用于构建动态Web应用。通过这个插件,开发者可以在Eclipse环境中享受到对AngularJS的专门支持,包括代码提示、调试...
开发Eclipse插件,通常使用的是插件开发环境(PDE)。PDE是Eclipse的标准扩展,提供了一系列向导帮助开发者快速创建和调试插件。创建"Hello, world"插件的步骤包括: 1. 启动Eclipse,选择"File" -> "New" -> "Other...
- **简介**:Eclipse SWT Designer Plugin 是一款用于构建基于 J2SE 的桌面应用程序 GUI 的 Eclipse 插件。它支持 SWT/JFace 和 Eclipse RCP 项目,使开发者能够更高效地创建复杂的用户界面。 - **官方网站**:...