Eclipse 插件开发 -- 深入理解菜单(Menu)功能及其扩展点
eclipse插件开发之扩展项目特性.
实现项目特性插件本节将从一个具体的实例出发,在Eclipse项目中添加用户自己的项目特性,扩展Eclipse的选项,让用户的插件具有一个产品的雏形。
项目扩展点用户已经了解了如何在Eclipse中添加视图、编辑器、透视图菜单和工具栏按钮。
本节将要介绍如何加入自己的项目相关特性,其中包括向导、项目特性、构建器和属性页。
项目特性扩展点如图1所示。
图1 项目特性扩展点项目特性扩展点及实现类“nature”为用户添加项目的特有特性,Eclipse中一个项目可以同时具有多个nature 特性。
例如用户要在Java项目的基础上扩展自己的项目,加入了自己项目的特有特性。
这样JDT就能认识用户新建的项目,用户也可以判断此Java项目是否是自己的扩展。
一般来说,用户期望用到JDT的强大功能,就要使自己的项目从Java项目扩展过来。
在插件中添加nature扩展点,步骤如下。
1. 在插件清单文件的Extensions页中添加“org.eclipse.core.resources.natures”扩展点,设置ID属性为“helloworldnature”。
2. 在“org.eclipse.core.resources.natures”节点下添加runtime子节点。
3. 在runtime节点下添加run节点,设置实现类class为“com.free.project. HelloWorldNature”。
扩展点在plugin.xml文件中的描述如下。
<extensionid="helloworldnature"point="org.eclipse.core.resources.natures"><runtime><run class="com.free.project.HelloWorldNature"/></runtime></extension>nature扩展点的实现类要实现“IProjectNature”接口,并要实现“IProjectNature”的如下几个方法。
eclipse扩展点
Eclipse平台SDK支持的扩展点org.eclipse.ant.core.antTasks:将Ant的任务与你的插件中的类关联起来,以扩展Ant在Eclipse中运行时的能力。
org.eclipse.ant.core.antTypes:将Ant的数据类型与你插件中的类关联起来。
org.eclipse.ant.core.extraClasspathEntries:提供额外的类型库(JAR 文件)给Ant使用。
pare.contentMergeViewers:为一种或多种文件类型提供一个比较/合并查看器生成器。
pare.contentViewers:为一种或多种文件类型提供一个查看器生成器。
pare.structureCreators:提供一个类来为一种或多种文件类型创建树型结构。
pare.structureMergeViewers:为一种或多种结构化文件类型提供一个查看器生成器。
org.eclipse.core.resources.builders:注册一个使用符号ID和可读名字的增量构建器。
org.eclipse.core.resources.fileModificationValidator:为团队Provider提供一个用于处理保存验证和编辑验证操作的类。
org.eclipse.core.resources.markers:以可选的父类和属性来注册一个自定义标记,包含了一些已定义的父类。
org.eclipse.core.resources.moveDeleteHook:提供一个用于资源移动和删除操作的类。
只允许一个hook。
org.eclipse.core.resources.natures:安装一个能够在用户项目中使用的自定义nature。
org.eclipse.core.resources.teamHook:为团队Provider注册一个用于处理和链接创建校验类似的特定事件的类。
org.eclipse.core.runtime.applications:定义一个可以在Eclipse命令行中用-application选项调用的顶层程序。
Eclipse的使用简介及插件开发
Eclipse入门-- Eclipse的使用简介及插件开发-JSP教程(1)eclipse入门-- eclipse的使用简介及插件开发2001 年11 月ibm 宣布捐出了价值4 千万美金的开发软件给开放源码的eclipse 项目。
如此受青睐的eclipse 是什么样子呢,如何使用呢?本文的第一部分会使你对eclipse有一个初步的认识。
并且,eclipse这个号称未来能进行任何语言开发的ide集大成者,又将如何实现它的这一宏伟目标?第二部分介绍的eclipse的插件开发将是其中的关键所在。
eclipse 是替代ibm visual age for java(以下简称ivj)的下一代ide开发环境,但它未来的目标不仅仅是成为专门开发java程序的ide环境,根据eclipse的体系结构,通过开发插件,它能扩展到任何语言的开发,甚至能成为图片绘制的工具。
目前,eclipse已经开始提供c语言开发的功能插件。
更难能可贵的是,eclipse 是一个开放源代码的项目,任何人都可以下载eclipse的源代码,并且在此基础上开发自己的功能插件。
也就是说未来只要有人需要,就会有建立在eclipse之上的cobol,perl,python等语言的开发插件出现。
同时可以通过开发新的插件扩展现有插件的功能,比如在现有的java开发环境中加入tomcat服务器插件。
可以无限扩展,而且有着统一的外观,操作和系统资源管理,这也正是eclipse 的潜力所在。
虽然目前eclipse项目还没有最后完成,但从已有的版本中已经能领略到eclipse 设计主导思想和主要功能特点。
现在就了解eclipse不但能使广大程序员对这款业界期望很高的ide能一睹为快,更为重要的是如果能参加到eclipse项目的开发中或是阅读它的开放源代码,这对广大程序员来说无疑是一个千载难逢的提高编程水平的好机会。
eclipse计划提供多个平台的版本,象windows,linux,solaris,hp-ux和aix,以下只介绍windows版本。
Eclipse重构功能:扩展点的使用
Eclipse重构功能:扩展点的使用Eclipse中提供了几个扩展点,方便扩展重构功能。
基本的重构功能有,Rename,Move,Create,Delete,Copy.对应扩展点即为:org.eclipse.ltk.core.refactoring.renameParticipantsorg.eclipse.ltk.core.refactoring.moveParticipantsorg.eclipse.ltk.core.refactoring.createParticipantsorg.eclipse.ltk.core.refactoring.deleteParticipantsorg.eclipse.ltk.core.refactoring.copyParticipants以ReName为例,其余4项与ReName大同小异。
实现这个扩展点的基本语法:< extensionpoint="org.eclipse.ltk.core.refactoring.renameParticipants">< renameParticipantid="jp.co.intramart.app.producer.refactoring.renameTypeParticipan t"name="Ebuilder RenameTypeParticipant"class="jp.co.intramart.app.producer.refactoring.TypeRenamePartici pant">< enablement>< /enablement>< /renameParticipant>< /extension>这里默认对响应所有改名事件,如果需要过滤可以在元素< enablement/>中加以定义。
Eclipse扩展点
类别扩展点org.eclipse.core.contenttype.contentTypes org.eclipse.core.runtime.adapters org.eclipse.core.runtime.applications org.eclipse.core.runtime.contentTypes org.eclipse.core.runtime.preferences org.eclipse.core.runtime.products org.eclipse.core.runtime.urlHandlers org.eclipse.equinox.preferences.preferences org.eclipse.core.resources.builders org.eclipse.core.resources.fileModificationValidator org.eclipse.core.resources.markers org.eclipse.core.resources.moveDeleteHook org.eclipse.core.resources.natures org.eclipse.core.resources.refreshProviders org.eclipse.core.resources.teamHook org.eclipse.core.filesystem.filesystems org.eclipse.core.filebuffers.annotationModelCreation org.eclipse.core.filebuffers.documentCreation org.eclipse.core.filebuffers.documentSetup org.eclipse.ui.editors.annotationTypes org.eclipse.ui.editors.documentProvidersorg.eclipse.ui.editors.markerAnnotationSpecificationorg.eclipse.ui.editors.markerUpdatersorg.eclipse.ui.editors.templatesorg.eclipse.ui.workbench.texteditor.quickDiffReferenceProviderorg.eclipse.ui.workbench.texteditor.spellingEngineorg.eclipse.ui.acceleratorConfigurationsorg.eclipse.ui.acceleratorScopesorg.eclipse.ui.acceleratorSetsorg.eclipse.ui.actionDefinitionsorg.eclipse.ui.actionSetPartAssociationsorg.eclipse.ui.actionSetsorg.eclipse.ui.activitiesorg.eclipse.ui.activitySupportorg.eclipse.ui.bindingsorg.eclipse.ui.browser.browsersorg.eclipse.ui.browserSupportorg.eclipse.ui.capabilitiesmandsmandImagesorg.eclipse.ui.contextsorg.eclipse.ui.decoratorsorg.eclipse.ui.documentProvidersorg.eclipse.ui.dropActionsorg.eclipse.ui.editorActionsorg.eclipse.ui.editorsorg.eclipse.ui.elementFactoriesorg.eclipse.ui.encodingsorg.eclipse.ui.exportWizardsorg.eclipse.ui.fontDefinitionsorg.eclipse.ui.handlersorg.eclipse.ui.helpSupportorg.eclipse.ui.ide.filesystemSupportWorkspacePlatform runtimePlatform textorg.eclipse.ui.ide.markerHelp org.eclipse.ui.ide.markerImageProviders org.eclipse.ui.ide.markerResolution org.eclipse.ui.ide.markerSupport org.eclipse.ui.ide.markerUpdaters org.eclipse.ui.navigator.linkHelper org.eclipse.ui.navigator.navigatorContent org.eclipse.ui.navigator.viewer org.eclipse.ui.ide.projectNatureImages org.eclipse.ui.ide.resourceFilters org.eclipse.ui.importWizards org.eclipse.ui.intro org.eclipse.ui.keywords org.eclipse.ui.menus org.eclipse.ui.newWizards org.eclipse.ui.perspectiveExtensions org.eclipse.ui.perspectives org.eclipse.ui.popupMenus org.eclipse.ui.preferencePages org.eclipse.ui.preferenceTransfer org.eclipse.ui.presentationFactories org.eclipse.ui.projectNatureImages org.eclipse.ui.propertyPages org.eclipse.ui.resourceFilters org.eclipse.ui.startup org.eclipse.ui.systemSummarySections org.eclipse.ui.themes org.eclipse.ui.viewActions org.eclipse.ui.views org.eclipse.ui.views.ProblemView org.eclipse.ui.views.properties.tabbed.propertyContributor.html org.eclipse.ui.views.properties.tabbed.propertySections.html org.eclipse.ui.views.properties.tabbed.propertyTabs.html org.eclipse.ui.workingSets org.eclipse.team.core.fileTypes org.eclipse.team.core.ignore org.eclipse.team.core.projectSets org.eclipse.team.core.repositoryorg.eclipse.team.ui.configurationWizardsorg.eclipse.team.ui.synchronizeParticipantsorg.eclipse.team.ui.synchronizeWizardsorg.eclipse.debug.core.breakpointsunchConfigurationComparatorsunchConfigurationTypesunchDelegatesunchersunchModesorg.eclipse.debug.core.logicalStructureTypesorg.eclipse.debug.core.processFactoriesorg.eclipse.debug.core.sourceContainerTypesorg.eclipse.debug.core.sourceLocatorsorg.eclipse.debug.core.sourcePathComputersorg.eclipse.debug.core.statusHandlersorg.eclipse.debug.core.watchExpressionDelegatesWorkbenchTeamorg.eclipse.debug.ui.breakpointOrganizers org.eclipse.debug.ui.consoleColorProviders org.eclipse.debug.ui.consoleLineTrackers org.eclipse.debug.ui.contextViewBindings org.eclipse.debug.ui.debugActionGroups org.eclipse.debug.ui.debugModelContextBindings org.eclipse.debug.ui.debugModelPresentations unchConfigurationTabGroups unchConfigurationTypeImages unchGroups unchShortcuts org.eclipse.debug.ui.memoryRenderings org.eclipse.debug.ui.sourceContainerPresentations org.eclipse.debug.ui.stringVariablePresentations org.eclipse.debug.ui.variableValueEditors org.eclipse.ui.console.consoleFactories org.eclipse.ui.console.consolePageParticipants org.eclipse.ui.console.consolePatternMatchListeners org.eclipse.help.appserver.server org.eclipse.help.browser org.eclipse.help.contentExtension org.eclipse.help.contentProducer org.eclipse.help.contexts org.eclipse.help.index org.eclipse.help.luceneAnalyzer org.eclipse.help.support org.eclipse.help.toc org.eclipse.help.webapp org.eclipse.help.base.activitySupport org.eclipse.help.base.browser org.eclipse.help.base.luceneAnalyzer org.eclipse.help.base.luceneSearchParticipants org.eclipse.help.ui.searchEngine org.eclipse.ui.cheatsheets.cheatSheetContent org.eclipse.ui.cheatsheets.cheatSheetItemExtension org.eclipse.ui.intro.config org.eclipse.ui.intro.configExtension org.eclipse.ltk.core.refactoring.refactoringContributions org.eclipse.ltk.core.refactoring.copyParticipants org.eclipse.ltk.core.refactoring.createParticipants org.eclipse.ltk.core.refactoring.deleteParticipants org.eclipse.ltk.core.refactoring.moveParticipants org.eclipse.ltk.core.refactoring.renameParticipants org.eclipse.ltk.ui.refactoring.changePreviewViewers org.eclipse.ltk.ui.refactoring.statusContextViewers org.eclipse.jdt.core.classpathContainerInitializer org.eclipse.jdt.core.classpathVariableInitializer org.eclipse.jdt.core.codeFormatter org.eclipse.jdt.debug.ui.vmInstallTypePage org.eclipse.jdt.junit.testRunListeners unching.classpathProviders unching.runtimeClasspathEntryResolversunching.vmConnectorsunching.vmInstallTypesUser AssistanceLanguage ToolkitJDT DebugConsoleorg.eclipse.jdt.ui.classpathContainerPageorg.eclipse.jdt.ui.javadocCompletionProcessororg.eclipse.jdt.ui.javaEditorTextHoverorg.eclipse.jdt.ui.javaElementFiltersorg.eclipse.ant.core.antPropertiesorg.eclipse.ant.core.antTasksorg.eclipse.ant.core.antTypesorg.eclipse.ant.core.extraClasspathEntriespare.contentMergeViewerspare.contentViewerspare.streamMergerspare.structureCreatorspare.structureMergeViewersorg.eclipse.core.expressions.propertyTestersorg.eclipse.core.variables.dynamicVariablesOtherorg.eclipse.core.variables.valueVariablesorg.eclipse.search.searchPagesorg.eclipse.search.searchResultSortersorg.eclipse.search.searchResultViewPagesorg.eclipse.search.textSearchEngineorg.eclipse.search.textSearchQueryProviderorg.eclipse.ui.externaltools.configurationDuplicationMapsorg.eclipse.update.core.featureTypesorg.eclipse.update.core.installHandlersorg.eclipse.update.core.siteTypesorg.eclipse.update.ui.searchCategory作用用于扩展系统支持的内容类型把适配者工厂注册到Eclipse平台定义一个可以在Eclipse命令行中用-application选项调用的顶层程序。
eclipse插件开发流程
eclipse插件开发流程Eclipse插件开发流程Eclipse是一款开源的集成开发环境(IDE),它提供了丰富的插件机制,使开发者能够根据自己的需求定制和扩展IDE。
本文将介绍Eclipse插件开发的流程,帮助读者了解如何开始开发自己的插件。
1. 确定插件的功能和目标在开始插件开发之前,首先需要明确插件的功能和目标。
这包括确定插件的用途、解决的问题以及目标用户等。
明确插件的功能和目标有助于开发者更好地进行设计和实现。
2. 创建Eclipse插件项目在Eclipse中,可以通过插件开发工具(Plug-in Development Environment,简称PDE)来创建插件项目。
打开Eclipse,选择File -> New -> Project,在弹出的对话框中选择Plug-in Project,点击Next。
然后输入项目名称和选择插件的模板,点击Finish即可创建插件项目。
3. 定义插件扩展点插件扩展点是插件的核心概念,它定义了插件提供的功能和扩展的接口。
在插件项目的插件清单文件(plugin.xml)中,可以通过扩展标签来定义插件的扩展点。
根据插件的功能和目标,合理定义扩展点,使其具有良好的扩展性和灵活性。
4. 实现插件功能在插件项目中,可以创建多个插件类来实现插件的功能。
插件类通常继承自Eclipse提供的基类,并实现相应的接口。
通过重写方法和实现逻辑,可以实现插件的具体功能。
在实现插件功能的过程中,可以使用Eclipse提供的API和工具来简化开发过程。
5. 调试和测试插件在插件开发过程中,调试和测试是非常重要的环节。
Eclipse提供了强大的调试功能,可以帮助开发者定位和解决问题。
通过在Eclipse 中启动插件运行环境,可以直接调试和测试插件的功能。
在调试过程中,可以使用断点、变量监视等功能,帮助开发者更好地理解和分析插件的运行情况。
6. 打包和发布插件当插件开发完成后,可以将插件打包并发布到Eclipse插件市场或其他渠道。
eclipse插件开发入门及常用组件要点
Eclipse插件开发入门.Eclipse最有魅力的地方就是它的插件体系结构。
在这个体系中重要的概念是扩展点(extension points)。
扩展点就是在软件开发过程中暴露出来的接口。
每一个插件都是在现有的扩展点上开发的,并可能还留有自己的扩展点,以便在这个插件上继续开发。
简介Eclipse 平台是IBM向开发源码社区捐赠的开发框架,它之所以出名并不是因为IBM宣称投入开发的资金总数为4 000万美元,而是因为如此巨大的投入所带来的成果:一个成熟的、精心设计的、可扩展的体系结构。
Eclipse 的价值是它为创建可扩展的集成开发环境提供了一个开放源码平台。
这个平台允许任何人构建与环境和其他工具无缝集成的工具。
工具与Eclipse无缝集成的关键是插件。
除了小型的运行时内核之外,Eclipse中的所有东西都是插件。
从这个角度来讲,所有功能部件都是以同等的方式创建的。
由于有了插件,Eclipse系统的核心部分在启动时要完成的工作十分简单:启动平台的基础部分和查找系统的插件。
整个Eclipse体系结构就像一个大拼图,可以不断地向上加插件,同时,在现有插件上还可以再加插件。
开发“Hello,world”插件创建插件最简单的方法是使用Eclipse中专门为开发插件而设计的插件PDE(Plug-in Development Environment)。
PDE 和 Java Development Tooling(JDT)IDE是 Eclipse 的标准扩展。
PDE 提供了一些向导可以帮助创建插件。
下面的“Hello,world”插件将通过PDE进行开发。
下面是创建一个简单插件的操作步骤。
(1)运行Eclipse。
单击Eclipse的“File”→“New”→“Other”菜单项,在弹出的对话框中选择Select对话框左边的Plug-in Development向导。
如图1所示,选择Plug-in Project。
Eclipse详解
1.1 Eclipse的简介1.1.1Eclipse插件开发简介插件的概念读者应该很熟悉,象MP3播放软件WINAMP的皮肤插件、Windows Media Player的众多的外观插件、音效插件等等。
但如果你以为插件只能做成为原软件的边角料,那是可以理解的,因为你还没有看到过Eclipse的插件是什么样的。
Eclipse可以全面更新你对插件的概念,它也是对插件概念运用得最彻底最炉火纯青的一个软件。
在第一章我们就介绍了Eclipse的技术特点,Eclipse的内核很小,其他功能都是基于这个内核上的插件,如Eclipse自带的UNIT、ANT等。
而且Eclipse还开放了自己的插件机制,并提供了很好的插件开发环境,让用户可以自己来开发Eclipse的插件。
想知道开发Eclipse的插件能到什么程度吗?看看这些Eclipse上的插件吧:用于UML建模的Together for Eclipse、用于JSP的MyEclipse和Lomboz、IBM的全能开发工具WSAD 等等,它们全是Eclipse的插件。
如果微软愿意,也可以把Office软件做成Eclipse的插件。
如果Adobe有兴趣,Photoshop也可以有for Eclipse的插件版,Eclipse中的API Draw2D的绘图功能也是很功的。
Eclipse的各式插件正如雨后春笋般不断冒出,Eclipse已经超越了开发环境的概念,它的目标是做成一个通用的平台,让尽量多的软件做为插件集成在上面,成为未来的集成的桌面环境。
同样我们可以将我们的应用系统写成Eclipse插件,笔者就在2004年参与开发了一个项目管理软件,该软件就是以Eclipse的插件形式开发的。
1.1.2 Eclipse插件开发的优势和不足那么将软件写成插件有什么好处呢?对于用户来说Eclipse的使用环境比较友好,前面介绍的SWT/JFace中还是比较基本的界面元素,象Eclipse中的视图、编辑窗、停泊窗这些界面如果实现呢?如果用Appliction的方式会很麻烦,如果写成Eclipse插件则实现这些界面风格不会吹灰之力。
Eclipse插件扩展点技术的研究及其在嵌入式调试工具开发中的应用
自己成 为离散 的 功能块 , 容 易地 重用 于构建 应用 程序 。 更 插件 的依赖 项 和服 务 都在 名 为pu i. 的插件 清 单 文件 lgnx ml 中声 明。 在这个 文 件 中 , 要声 明的是 : 哪里 接 收其他 插件 的添 从 加项, 以及 插 件要 添 加到 其 他 插件 的 什么 位 置 : 要 集成 到E 是 . cis平 台 自身 还是 其他 l e p : E l s 的工具 。以需要 为基 础 . ] ci e : p 这
E l s不是单 一 的程序 ci e p 而是 一个 称做 插 件加 载器 的小 内 核, 它具 有几 百 个插 件 , 且 理 论 上可 以在插 件 的 基础 上无 限 并 扩 展 , 图1 示 。E l s核 心非 常小 , 如 所 ci e p 其他 功 能都 基 于此 核心
写 成 插 件 , 样 的 插 件 包 括 E l s 的 图 形 AP (WTJ a e 、aa 这 ci e p IS , c )Jv F 开 发 环 境 插 件 (D ) 插 件 开 发 环 境 ( D 等 , 时 也 包 括 第 3 JT 、 P E) 同
摘
要: 在嵌 入 式调 试 工具 的 开发过 程 中, 够 向第 三 方产 品提 供 商提 供 扩展 接 口的 功 能 , 能 这是 系统 可重 用的 关键
所 在 。 本 文 对 E l s插 件 机 制 及 其 扩 展 点 技 术 进 行 了 深 入 研 究 , 应 用 于 嵌 入 式 调 试 工 具 的 开 发 , 现 了 该 软 件 系 ci e p 并 实
行 扩展 。
方扩 展 的其 他插 件 。 c pe E l s还对 这些 插件 的协 同工 作提 供 了 良 i
eclipse菜单解释及中英对照
会开启「Override Method」对话框,可以置换或实作现行类型中的方法。适用于类型或类型中的某个文字选择项。
Generate Getter andSetter(产生Getter和Setter)
开启「Generate Getter and Setter」对话框,可以为现行类型中的字段,建立Getter和Setter。适用于字段与类型或类型中的某个文字选择项。
Recent file list(最近使用的档案清单
「File底端维护了一份最近在工作台中存取的档案的清单只要选取文件名,就可以从「File开启这其中的任何档案。
Exit(结束)
结束Eclipse
「Edit」菜单
这个菜单可协助操作编辑器区域中的资源
名称
功能
Undo(复原)
回复成编辑器中的前一次变更
Redo(重做)
功能
New(新建)
建立Java元素或新资源。配置哪些元素会显示在「Window」→「Preferences」的子菜单中。在Java视景中,依预设,会提供项目、套件、类别、接口、来源数据夹、实时运算簿、档案和数据夹的建立动作。
Close(关闭)
关闭现行编辑器。如果编辑器中有资料尚未储存,则会显示一个储存要求对话框。
nCRLF(Windows)
nLF(Unix、MacOSX)
nCR(传统MacOS)
Java编辑器容许混合使用行定界字符。不过,其它某些工具会要求使用和OS一致的行定界字符,或者要求至少行定界字符要一致。
「Refactor」菜单
重构指令也可以在一些视图的快速菜单与Java编辑器中找到。
名称
eclipse插件开发扩展点概述
Eclipse 插件开发的一个关键概念是扩展点(Extension Point)。
Eclipse 是一个开放的集成开发环境(IDE),通过插件机制,允许开发者扩展和定制Eclipse 功能。
扩展点是这一机制的核心,它允许开发者在现有功能基础上添加自定义功能。
以下是Eclipse 插件开发中关于扩展点的概述:1. 什么是扩展点?定义:扩展点是插件定义的一种标记或接口,用于允许其他插件在运行时提供额外的功能或信息。
作用:通过扩展点,插件可以向Eclipse 平台注册其特定的功能,并与其他插件共享数据和行为。
2. 扩展和插件之间的关系:插件:Eclipse 中的每个功能都被组织为一个插件。
插件可以包含一个或多个扩展点。
扩展:插件通过扩展点来定义和提供额外的功能。
其他插件可以通过扩展点来访问这些功能。
3. 扩展点的定义:扩展点定义:插件通过扩展点定义描述其支持的扩展点。
这些定义通常包括扩展点的名称、ID、描述以及可接受的扩展内容等信息。
4. 扩展的注册:注册扩展:插件通过扩展点的注册,将其功能注册到Eclipse 平台。
这通常在插件的plugin.xml 文件中完成。
5. 示例:以下是一个简化的扩展点定义示例,该示例用于定义一个视图(View)的扩展点:xmlCopy code<extension-point id="sample.viewExtension" name="Sample View Extension" schema="schema/viewExtension.exsd" />在其他插件中,可以通过扩展该扩展点来定义和注册新的视图。
6. 运行时动态性:扩展点的强大之处在于其运行时动态性。
新的插件可以随时添加到Eclipse 中,而不需要修改现有代码。
7. API 和扩展点交互:插件可以通过Eclipse 提供的API 访问和操作其他插件提供的扩展点。
Eclipse插件开发系列--扩展点属性
<extensionpoint="org.eclipse.ui.newWizards"><categoryname="马codeWizard"id="com.dearmite.eclipse.codegen"></category><wizardname="hf_projectWizard"icon="icons/block--pencil.png"project="true"category="com.dearmite.eclipse.codegen"class="com.dearmite.eclipse.projectgen.wizards.HfProjectC reationWizard"id="com.dearmite.eclipse.projectgen.wizards.ProjectGenNew Wizard"></wizard></extension>就写一个扩展点,结果网上一堆费资料.还是自己整理吧,不过因为是自己整理的.有可能解释的不完全正确.org.eclipse.ui.newWizards 扩展点这是Workbench 里的扩展点, Workbench大家都知道就是Eclipse平台,所以,不管带不带其它的插点,你都可以从这个扩展点下继承.Category 是新建里,的那个分组.name 是显示的.而且还支持汉字, 不过一般的插件好象没几个真的去用汉字.Category 里的ID 很有用.因为如果需要有两个 wizard 在一个分组里的话,你只要第二个extension 使用同一个Category 的ID就行了.Wizard 这里才是真正的向导本身类.Name 不用说,还是显示在菜单中的.ICON 可以设置一个小图标.顺便找一个图片就行了.Project 这个属性真的是关键.是否在new project 的那个菜单里. Category 就是这个wizard挂在哪个分组里.class=id 向导本身的属性了.不用多说了.其实ID是可以顺便写的.只要不冲突就好..。
eclipse扩展点开发实例
eclipse扩展点开发实例一个经典的Eclipse扩展点开发实例是在Eclipse中添加一个新的菜单项或者按钮,然后为其创建扩展点,以便其他插件可以为其添加功能。
实现流程如下:1. 创建一个Eclipse插件项目,并在plugin.xml文件中创建一个菜单扩展点<extensionpoint="org.eclipse.ui.menus"><menuContributionlocationURI="popup:org.eclipse.ui.popup.any?after=additions"> <menuid="example.menu"label="Example"><commandcommandId="examplemand"icon="icons/sample.gif"mnemonic="E"style="push"tooltip="Execute Example Command"> </command></menu></menuContribution></extension>2. 实现一个命令处理器类来实现该菜单项的功能public class ExampleHandler extends AbstractHandler {@Overridepublic Object execute(ExecutionEvent event) throws ExecutionException {Do something when the command is executedreturn null;}}3. 在plugin.xml文件中指定该命令处理器类<extensionpoint="org.eclipse.uimands"><commanddefaultHandler="com.example.plugin.ExampleHandler"id="examplemand"name="Example Command"></command></extension>4. 完成以上步骤后,其他插件可以使用该扩展点,例如添加新的Command对象。
053Java编程Eclipse菜单栏和工具栏
Eclipse菜单栏和工具栏1.Eclipse的菜单栏Eclipse的菜单栏中包含了实现Eclipse各项功能的菜单项和命令。
除了常用的“文件”、“编辑”等菜单项以外,在菜单栏中还提供了一些功能菜单项,如“源代码”、“重构”等。
下面详细介绍各主菜单的功能。
□“文件”菜单:“文件”菜单允许用户创建、保存、关闭、打印、导入和导出“工作台”资源,以及退出工作台。
□“编辑”菜单:“编辑”菜单可用于处理编辑器区域中的资源。
“编辑”菜单包含撤销、剪切、复制、粘贴等命令。
□“源代码”菜单:“源代码”菜单中都是和代码相关的一些命令,包括切换注释、添加块注释、删去块注释等。
□“重构”菜单:“重构”菜单向用户提供了有关项目重构的相关操作命令,包括重命名、移动等命令。
□“浏览”菜单:“浏览”菜单允许操作用户定位和浏览显示在工作台中的资源,包括进入、打开声明等命令。
□“搜索”菜单:“搜索”菜单中列出了和搜索相关的操作命令,包括搜索、文件等命令。
□“项目”菜单:“项目”菜单允许操作用户对工作台中的项目执行操作(构建或编译),包括打开项目、关闭项目、全部构建等命令。
□“运行”菜单:“运行”菜单列出了和程序运行相关的各种操作,包括运行上次启动、调试上次启动、运行历史记录等命令。
□“窗口”菜单中可以进行显示、隐藏或处理工作台中各种视图和透视图的操作,包括新建窗口、新建编辑器等命令。
□“帮助”菜单:“帮助”菜单提供了与使用工作台相关的帮助信息,包括欢迎、搜索、帮助内容等命令。
知识点:1、Eclipse的菜单栏中包含了实现Eclipse各项功能的菜单项和命令。
除了常用的“文件”、“编辑”等菜单项以外,在菜单栏中还提供了一些功能菜单项,如“源代码”、“重构”等。
下面详细介绍各主菜单的功能。
□ “文件”菜单:“文件”菜单允许用户创建、保存、关闭、打印、导入和导出“工作台”资源,以及退出工作台。
□ “编辑”菜单:“编辑”菜单可用于处理编辑器区域中的资源。
熟悉Eclipse的菜单栏和工具栏
熟悉Eclipse的菜单栏和工具栏1.Eclipse的菜单栏Eclipse的菜单栏中包含了实现Eclipse各项功能的命令。
在菜单栏中除了常用的“文件”、“编辑”等菜单项以外,还提供了一些功能菜单项,如“源代码”、“重构”等。
下面详细介绍各个主菜单的功能。
●●“文件”菜单“文件”菜单允许用户创建、保存、关闭、打印、导入和导出“工作台”资源,以及退出工作台。
详细的菜单功能说明如表1所示。
表1 “文件”菜单功能说明●●“编辑”菜单可以用于处理编辑器区域中的资源。
具体的菜单功能说明如表2所示。
表2“编辑”菜单功能说明●●“源代码”菜单“源代码”菜单中的命令都是和代码相关的一些命令。
其详细的功能说明如表3所示。
●●“重构”菜单向用户提供了有关项目重构的相关操作命令。
其详细的功能说明如表4所示。
●●“浏览”菜单“浏览”菜单允许操作用户定位和浏览显示在“工作台”中的资源。
其详细的功能说明如表5所示。
表5 “浏览”菜单的功能说明●●“搜索”菜单中列出了和搜索相关的命令操作,其详细的功能说明如表6所示。
表6 “搜索”菜单的功能说明●●“项目”菜单允许操作用户对“工作台”中的项目执行操作(构建或编译)。
其详细的功能说明如表7所示。
表7 “项目”菜单的功能说明●●“运行”菜单列出了和程序运行相关的各种操作。
其详细的功能说明如表8所示。
表8 “运行”菜单的功能说明●●“窗口”菜单在“窗口”菜单中可以进行显示、隐藏或处理“工作台”中各种视图和透视图的操作。
其详细的功能说明如表9所示。
表9 “窗口”菜单的功能说明●●“帮助”菜单“帮助”菜单提供了有关使用工作台的帮助信息。
其详细的功能说明如表10所示。
表10 “帮助”菜单的功能说明2.Eclipse的工具栏Eclipse的“工作台”中有4种工具栏。
●●主工具栏(也称为“工作台”工具栏)●●视图工具栏●●透视图切换工具栏●●快速视图工具栏关于Eclipse工具栏的详细位置如图1所示。
eclipse插件开发教程
eclipse插件开发教程Eclipse是一个非常强大的集成开发环境(IDE),可用于开发各种类型的应用程序。
与其它IDE相比,Eclipse的一个重要特点是其插件化的架构,这使得开发者可以根据自己的需求和喜好进行个性化定制。
开发Eclipse插件的过程需要掌握一些基本知识和技巧。
下面将提供一个简单的Eclipse插件开发教程,以帮助初学者入门。
第一步是安装Eclipse的开发工具包(Eclipse SDK)。
可以从Eclipse官方网站上下载并安装最新版本的开发工具包。
安装完成后,可以打开Eclipse,开始开发。
第二步是创建一个新的插件项目。
在Eclipse的菜单中选择“File”->“New”->“Project”,然后选择“Plug-in Development”->“Plug-in Project”。
在弹出的对话框中,输入项目的名称和位置,然后点击“Next”按钮。
接下来,选择一些项目的特性,并点击“Next”再点击“Finish”。
第三步是定义插件的扩展点(extension point)。
插件的扩展点是其他插件可以扩展的地方,通过定义扩展点,可以让其他插件在这个地方插入自己的代码。
在Eclipse的插件项目中,可以在“plugin.xml”文件中定义扩展点。
例如,可以定义一个扩展点来扩展Eclipse的编辑器,并在其中添加自定义的编辑功能。
第四步是实现插件的功能。
实现插件的功能主要通过编写Java代码来完成。
可以在插件项目中的“src”目录下创建Java类,并实现所需的功能。
例如,可以实现一个简单的Hello World视图,显示一个Hello World的文本。
第五步是将插件导出为可执行的JAR文件。
可以在Eclipse的插件项目上点击鼠标右键,然后选择“Export”->“Deployable plug-ins and fragments”。
在弹出的对话框中,选择要导出的插件,并选择导出的位置,点击“Finish”按钮即可导出插件。
Eclipse插件开发--深入理解菜单(Menu)功能及其扩展点
Eclipse插件开发--深入理解菜单(Menu)功能及其扩展点引言Eclipse 具有丰富的菜单功能,给开发人员提供了很好的用户体验。
总体而言,Eclipse 菜单种类包括视图/ 编辑器菜单,主菜单(Main Menu),视图/ 编辑器菜单(ViewPart/EditorPart Menu)和上下文菜单(Context Menu)。
插件开发人员通过灵活应用这些菜单,可以给用户提供很好的体验。
由于视图和编辑器菜单功能类似,因此本文重点讲述视图菜单(视图下拉菜单及其工具栏菜单),除此之外,还将讲述主菜单和上下文菜单。
如图1 所示为Project Explorer 视图的菜单,包括视图下拉菜单和工具栏菜单(折叠树节点)。
通常而言,出现在视图工具栏的菜单都会出现在视图的下拉菜单,也就是说,比较常用的视图菜单放在视图的工具栏。
图 1. Project Explorer 视图的菜单如图2 所示为Project Explorer 视图中的上下文菜单,只有当我们右键点击时才会出现。
通常而言,出现频率较高的菜单项才会出现在菜单中。
上下文菜单具有很强的灵活项,它可以随着我们点击的对象不同,弹出的菜单也会有相应的变化。
图 2. Project Explorer 视图中的上下文菜单如图3 所示为Eclipse 的主菜单,包括最上面的主菜单项(不可移动)及其下面的工具栏菜单(可以移动,并且Eclipse 提供了显示/ 不显示这些菜单的功能),Eclipse 并不建议我们为每一个插件都添加新的主菜单,这样容易造成冗余,而且不方便用户操作。
通常,我们可以把菜单项添加到Eclipse 已有的菜单,如插件的查找功能可以添加一个查找菜单项到Eclipse 的Search 主菜单上。
图 3. Eclipse 的主菜单前面讲到Eclipse 的各种菜单,那么,如何在开发插件或RCP 应用程序的时候添加这些菜单?本文下面的篇幅将详细介绍如何扩展Eclipse 的菜单功能,使读者深入了解Eclipse 的菜单功能,并能够开发具有这些菜单的应用程序。
教你怎样扩展Eclipse的扩展点
教你怎样扩展Eclipse的扩展点现在手头上做的基于Eclipse RCP的上海佳吉快运第三代运营系统的项目也快接近尾声了,经历一个项目从设计开发到马上完成的过程,也从中向同事们学到了很多的东西,所以今天我想将项目中用到的一些技术细节记录下来,也当作是我的学习笔记吧,以后自己也可以看看。
这里要介绍的是关于Eclipse 中扩展点的问题,我们知道,Eclipse本身提供了很多的扩展点,这样的话,我们可以根据需要对Eclipse的一些功能进行扩展,使得满足我们的使用,也正是因为这一点,许多的Eclipse Fans都可以贡献自己的力量,通过不断的贡献Eclipse插件,使Eclipse的功能越来越强大,现在Eclipse已经不单单是作为一个开发工具了,而是发展成为了一个平台,我们可以基于这样的一个平台进行开发,为了扩展现有Eclipse 功能或在其上进行构建,插件将具体的扩展贡献给由其他插件暴露的扩展点。
通常,插件专注于特定区域的责任,并通过一个或多个扩展点的方式将其他责任指派给其他插件。
例如,一个插件允许您可视地并行比较两个文件的内容,但它不会关心如何读取这些文件甚至如何解释这些文件的结构;这是其他插件的工作。
比较两个文件时,该插件首先检查是否有另一个插件可以解释这些文件的结构。
如果找到一个,它就会向找到的插件询问有关文件结构的信息,并在比较过程中使用该信息。
那现在我们就通过一个简单的例子来示范一下怎么个扩展法: 首先我们先新建一个插件工程,注意这个工程作为RCP 项目存在的,比如工程名称就叫做TheMainMenuProject,接下来选择一个插件模板,这里我们选择第二个"RCP application with a view ":点完成,这样的话我们就将这个项目建好了,看下项目的结构: 接下来,我们打开plugin.xml或MANIFEST.MF文件,切换到Extension Points 标签页,然后我们就可以新增扩展点了,点新增点完成后,系统会自动切换到org.vwpolo.rcp.extender.exsd 文件的编辑页面,这时我们切换到Definition 标签页,开始扩展扩展点了:我们先新建一个元素(New Element)名称为extender,这时有两个元素了,在第一个元素上点右键,在弹出的对话框中选择"序列",再在这个新增的对象上右键新增一个extender 对象。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
引言Eclipse 具有丰富的菜单功能,给开发人员提供了很好的用户体验。
总体而言,Eclipse 菜单种类包括视图/ 编辑器菜单,主菜单(Main Menu),视图/ 编辑器菜单(ViewPart/EditorPart Menu)和上下文菜单(Context Menu)。
插件开发人员通过灵活应用这些菜单,可以给用户提供很好的体验。
由于视图和编辑器菜单功能类似,因此本文重点讲述视图菜单(视图下拉菜单及其工具栏菜单),除此之外,还将讲述主菜单和上下文菜单。
如图1 所示为Project Explorer 视图的菜单,包括视图下拉菜单和工具栏菜单(折叠树节点)。
通常而言,出现在视图工具栏的菜单都会出现在视图的下拉菜单,也就是说,比较常用的视图菜单放在视图的工具栏。
图 1. Project Explorer 视图的菜单如图2 所示为Project Explorer 视图中的上下文菜单,只有当我们右键点击时才会出现。
通常而言,出现频率较高的菜单项才会出现在菜单中。
上下文菜单具有很强的灵活项,它可以随着我们点击的对象不同,弹出的菜单也会有相应的变化。
图 2. Project Explorer 视图中的上下文菜单如图3 所示为Eclipse 的主菜单,包括最上面的主菜单项(不可移动)及其下面的工具栏菜单(可以移动,并且Eclipse 提供了显示/ 不显示这些菜单的功能),Eclipse 并不建议我们为每一个插件都添加新的主菜单,这样容易造成冗余,而且不方便用户操作。
通常,我们可以把菜单项添加到Eclipse 已有的菜单,如插件的查找功能可以添加一个查找菜单项到Eclipse 的Search 主菜单上。
图 3. Eclipse 的主菜单前面讲到Eclipse 的各种菜单,那么,如何在开发插件或RCP 应用程序的时候添加这些菜单?本文下面的篇幅将详细介绍如何扩展Eclipse 的菜单功能,使读者深入了解Eclipse 的菜单功能,并能够开发具有这些菜单的应用程序。
因此,必须掌握三方面的内容:菜单种类,菜单的扩展点,菜单控制(显示/ 隐藏或启用/ 禁用菜单项)。
下面从概念上介绍这三方面内容,下一小节将会进行详细介绍。
菜单种类正如前面所讲到的,Eclipse 的菜单包括视图菜单,主菜单及上下文菜单三个种类。
菜单项的扩展点Eclipse 提供了两种扩展点供用户添加菜单项到相应的位置。
这两种扩展点为mands(本文简称为Commands 方式)和org.eclipse.ui.actionSets(本文简称为Actions 方式)。
Actions 方式为界面上不同区域的表现方式提供了相应的扩展点,并且没有分离其界面表现和内在实现。
恰恰相反,Commands 方式通过三步有效的达到界面表现和内部实现的分离:首先,通过mands扩展点创建命令和类别(Category),并且可以把某些命令放在一个类别(Category)中;然后,通过org.eclipse.ui.menus 指定命令出现在界面的哪个区域(视图菜单/ 主菜单/ 上下文菜单);最后通过org.eclipse.ui.handlers指定命令的实现。
因此,Eclipse 推荐新开发的插件使用Commands 来创建您的界面菜单。
当然,由于Actions 在现有的插件中用得比较多,如果我们需要扩展或基于之前的插件开发,也需要对其进行了解。
除此之外,针对上下文菜单,虽然Commands 和Actions 方式均可以创建上下文菜单,但是Eclipse 还提供了另外一种创建上下文菜单的扩展点org.eclipse.ui.popupMenus(本文简称为popupMenus方式),本文将就这三种扩展点做详细的介绍。
菜单控制菜单控制是一个非常常见的功能,例如,随着选定的内容或当前窗口的不同,菜单中的菜单项会有相应的变化(显示/ 隐藏或启用/ 禁用菜单项),因此,如何控制菜单是插件开发人员必须掌握的知识。
Eclipse 为菜单控制提供了两种方法,一种是通过扩展点;另一种是通过API 的方式编写程序控制。
回页首Eclipse 菜单功能及其扩展点至此,我们对Eclipse 菜单有了感观的认识。
由上一节我们可知,要深入理解Eclipse 菜单功能,我们需要从三个方面去掌握:菜单种类,菜单的扩展点和菜单控制。
下面将进行详细讲述。
菜单种类针对各种菜单,Eclipse 提供了相应的扩展点,因此,开发人员可以通过这些扩展点把菜单放到界面的不同区域,详细内容请参考 2.2 小节。
菜单的扩展点视图菜单的扩展点采用Commands 方式创建视图菜单,需要引入org.eclipse.ui.menus扩展点;而Actions 方式需要引入org.eclipse.ui.actionSets.1、视图菜单(Commands 方式):MenuContributionlocationURI = “[Scheme]:[id]?[argument-list]”其中,Scheme 为该菜单项出现的区域,menu 为视图的下拉菜单,toolbar 为视图的工具栏菜单;id 为菜单区域ID;argument-list 为该菜单项出现在指定菜单的位置。
例如:在ProbelmView的下拉菜单加一个菜单项,其MenuContribution的locationURI应为:menu:org.eclipse.ui.views.ProblemView?after=additions;在ProblemView的工具栏菜单中加入一个菜单项,其locationURI应为:toolbar:org.eclipse.ui.views.ProblemView?after=additions。
2、视图菜单(Actions 方式):采用Actions 方式创建菜单,需要引入org.eclipse.ui.actionSets扩展点,并通过设定action 的menubarPath指定下拉菜单/ 菜单项出现的位置;通过设定action 的toolbarPath设定工具栏菜单/ 菜单项出现的位置。
例如,添加一个下拉菜单项到Problems 视图中,其menubarPath应为:org.eclipse.ui.views.ProblemView/additions主菜单的扩展点1、主菜单(Commands 方式)通过Commands 方式把菜单项添加到主菜单及其工具栏上,和视图菜单一样,也是通过扩展点org.eclipse.ui.menus实现,需要设定其menuContribution的locationURI。
例如,添加一个菜单(菜单可以包含若干个菜单项)到主菜单一栏中,其locationURI为:menu:org.eclipse.ui.main.menu?after=additions添加一个菜单到工具栏之中,其locationURI为:toolbar:org.eclipse.ui.main.toolbar?after=additions当然,我们也可以把菜单项添加到已经存在的菜单当中,例如添加一个菜单项到Eclipse 的Search 主菜单当中,其locationURI为:menu:org.eclipse.search.menu?dialogGroup2、主菜单(Actions 方式)通过Actions 方式把菜单项添加到主菜单及其工具栏上,和视图菜单一样,也是通过扩展点org.eclipse.ui.actionSets实现,需要设定action 的menubarPath 和toolbarPath实现。
例如,添加一个菜单项到Eclipse 的Search 主菜单中,其menubarPath应为:org.eclipse.search.menu/dialogGroup注意:如果采用上述方式添加一个菜单项到Search 主菜单,当我们运行时并没有出现添加的菜单项,这时候需要换一个workspace,其原因是Eclipse 缓存了与其相关的某些信息在workspace 当中。
上下文菜单的扩展点上下文菜单除了通过Commands 和Actions 方式添加,还可以使用扩展点org.eclipse.ui.popupMenus方式添加,下面分别进行介绍。
1、上下文菜单(Commands 方式)Commands 方式与添加视图菜单和主菜单的方式一样,通过设定其menuContribution的locationURI来实现。
菜单控制视图菜单的控制主要包括启用/ 禁用,显示/ 隐藏菜单。
通过Command 方式创建的菜单,可以通过mands的visibleWhen属性控制菜单的隐藏和显示,通过org.eclipse.ui.handlers的activewhen或enabledWhen控制菜单的启用或禁用。
创建Commands采用Command 方式创建“Menu Example”主菜单(包含AngryCommand和JokeCommand两个菜单项),并且基于这两个菜单项创建了Menu Example 视图的下拉菜单和工具栏菜单,及其TreeViewer的上下文菜单。
pupupMenus方式创建Action 并关联到IResource资源的上下文菜单扩展org.eclipse.ui.popupMenus创建菜单“Menu Example”,该菜单包含一个菜单项HelloAction。
当我们在Eclipse 任何区域右击org.eclipse.core.resources.IResource资源时弹出的上下文菜单中会出现“Menu Example”菜单。
如下代码清单11 为创建该上下文菜单的xml 代码。
Menu Example 视图的代码实现类。