- 浏览: 129725 次
- 性别:
- 来自: 上海
最新评论
-
一叶之源:
总结一下eclipse中的Job机制 -
xinxinlong:
lAnchor.getDy1() 是什么意思
操作excel--稍后整理 -
defrag_sly:
3.7是好用的,只是再mac下面不支持,mac不支持的效果还有 ...
swt下如何做出一个反向展开效果的tree -
defrag_sly:
eclipse3.7不好用了。谁知道给补充一下。
swt下如何做出一个反向展开效果的tree -
hamlzf:
好文!mark!
基于 OSGi 的面向服务的组件编程
Eclipse中提供了几个扩展点,方便扩展重构功能。
基本的重构功能有,
Rename,Move,Create,Delete,Copy。对应扩展点即为:
以ReName为例,其余4项与ReName大同小异。
实现这个扩展点的基本语法:
这里默认对响应所有改名事件,如果需要过滤可以在元素<enablement/>中加以定义。不赘述。实现改名扩展的关键在实现类,必须是org.eclipse.ltk.core.refactoring.participants.RenameParticipant;的子类
下面代码进行了简单的实现。
CreateChange方法内实现过于粗糙,仅仅是为了可以让大家看到结果。
通过利用扩展点,我们就自然的将重构时的差异比较,警告,preview,重构history,redo/undo等,eclipse平台提供的基本功能加以利用了。
Preview的结果如下图。
下面我来介绍,通过扩展点实现特殊需求。
除了增,删,改,移等基本重构外,可以增加特殊需求的重构,比如JDT中对类,方法,变量名的重构。
实现特殊需求,就要实现自己的Refactoring类,继承类org.eclipse.ltk.core.refactoring.Refactoring实现相关方法,这个类的结构与RenameParticipant等类的结构基本一致,直接上代码,不再赘述。
这个类负责处理特殊需求与重构的特殊逻辑。
除了逻辑层,还需要对表现层有实现:
RefactoringWizard 及 RefactoringWizardPage。
实现了Refactoring,Wizard,WizardPage后,即完成了,UI到逻辑的实现。
通过相应的Action的配置,使用RefactoringWizardOpenOperation。即完成了特殊重构需求的开发。
为了方便对特殊需求的Refactoring逻辑部分的重用,eclipse提供了一个扩展点:
org.eclipse.ltk.core.refactoring.refactoringContributions
通过扩展点的配置,使用时通过ID即可随时得到Refactoring对象。
以上参考:http://www.eclipse.org/articles/article.php?file=Article-Unleashing-the-Power-of-Refactoring/index.html
欢迎讨论
基本的重构功能有,
Rename,Move,Create,Delete,Copy。对应扩展点即为:
org.eclipse.ltk.core.refactoring.renameParticipants org.eclipse.ltk.core.refactoring.moveParticipants org.eclipse.ltk.core.refactoring.createParticipants org.eclipse.ltk.core.refactoring.deleteParticipants org.eclipse.ltk.core.refactoring.copyParticipants
以ReName为例,其余4项与ReName大同小异。
实现这个扩展点的基本语法:
<extension point="org.eclipse.ltk.core.refactoring.renameParticipants"> <renameParticipant id="refactoring.renameTypeParticipant" name="RenameTypeParticipant" class="refactoring.TypeRenameParticipant"> <enablement> </enablement> </renameParticipant> </extension>
这里默认对响应所有改名事件,如果需要过滤可以在元素<enablement/>中加以定义。不赘述。实现改名扩展的关键在实现类,必须是org.eclipse.ltk.core.refactoring.participants.RenameParticipant;的子类
下面代码进行了简单的实现。
import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.OperationCanceledException; import org.eclipse.ltk.core.refactoring.Change; import org.eclipse.ltk.core.refactoring.RefactoringStatus; import org.eclipse.ltk.core.refactoring.TextFileChange; import org.eclipse.ltk.core.refactoring.participants.CheckConditionsContext; import org.eclipse.ltk.core.refactoring.participants.RenameParticipant; import org.eclipse.text.edits.ReplaceEdit; public class TypeRenameParticipant extends RenameParticipant { public TypeRenameParticipant() { } @Override public RefactoringStatus checkConditions(IProgressMonitor pm, CheckConditionsContext context) throws OperationCanceledException { return new RefactoringStatus(); } @Override public Change createChange(IProgressMonitor pm) throws CoreException, OperationCanceledException { IFile file = ResourcesPlugin.getWorkspace().getRoot().getProject("a") .getFile("a"); TextFileChange textFileChange = new TextFileChange("File Changed ", file); ReplaceEdit edit = new ReplaceEdit(0, 1, "haha"); textFileChange.setEdit(edit); return textFileChange; } @Override public String getName() { return "RenameTypeParticipant"; } @Override protected boolean initialize(Object element) { // need sub return true; } }
CreateChange方法内实现过于粗糙,仅仅是为了可以让大家看到结果。
通过利用扩展点,我们就自然的将重构时的差异比较,警告,preview,重构history,redo/undo等,eclipse平台提供的基本功能加以利用了。
Preview的结果如下图。
下面我来介绍,通过扩展点实现特殊需求。
除了增,删,改,移等基本重构外,可以增加特殊需求的重构,比如JDT中对类,方法,变量名的重构。
实现特殊需求,就要实现自己的Refactoring类,继承类org.eclipse.ltk.core.refactoring.Refactoring实现相关方法,这个类的结构与RenameParticipant等类的结构基本一致,直接上代码,不再赘述。
import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.OperationCanceledException; import org.eclipse.ltk.core.refactoring.Change; import org.eclipse.ltk.core.refactoring.Refactoring; import org.eclipse.ltk.core.refactoring.RefactoringStatus; public class ProducerRefactoring extends Refactoring { @Override public RefactoringStatus checkFinalConditions(IProgressMonitor pm) throws CoreException, OperationCanceledException { // need sub return new RefactoringStatus(); } @Override public RefactoringStatus checkInitialConditions(IProgressMonitor pm) throws CoreException, OperationCanceledException { // need sub return new RefactoringStatus(); } @Override public Change createChange(IProgressMonitor pm) throws CoreException, OperationCanceledException { // need sub return null; } @Override public String getName() { return "ProducerRefactoring"; } }
这个类负责处理特殊需求与重构的特殊逻辑。
除了逻辑层,还需要对表现层有实现:
RefactoringWizard 及 RefactoringWizardPage。
实现了Refactoring,Wizard,WizardPage后,即完成了,UI到逻辑的实现。
通过相应的Action的配置,使用RefactoringWizardOpenOperation。即完成了特殊重构需求的开发。
为了方便对特殊需求的Refactoring逻辑部分的重用,eclipse提供了一个扩展点:
org.eclipse.ltk.core.refactoring.refactoringContributions
通过扩展点的配置,使用时通过ID即可随时得到Refactoring对象。
以上参考:http://www.eclipse.org/articles/article.php?file=Article-Unleashing-the-Power-of-Refactoring/index.html
欢迎讨论
发表评论
-
TableEditor 让我郁闷的
2011-12-21 17:25 1402TableItem item = table.getIte ... -
eclipse search
2011-08-09 13:04 973http://www.ibm.com/developerwor ... -
eclipse 中关于字符串匹配的几个类
2009-12-17 12:07 1588在做检索功能时,必然会遇到字符串匹配的问题。eclipse与j ... -
eclipse Drag&Drop机制图解
2009-11-20 15:55 1153工作需要,debug了eclipse的drag&dro ... -
Drag & Drop eclipse Viewer to GMF Editor
2009-10-09 11:21 19371,添加Viewer的Drag support priva ... -
请问,eclipse e4 究竟是什么?愿能集思广益
2009-08-13 16:05 956请问,eclipse e4 究竟是什么?愿能集思广益 -
swt下如何做出一个反向展开效果的tree
2009-08-10 10:59 1843如题,其实很简单,即在tree的构造方法里加入样式参数{SWT ... -
eclipse 开发中的快捷键
2009-05-19 12:15 936Alt+Shift+F1 eclipse 3.4下会打开一个p ... -
将gmfeditor结合到mutipage中
2009-05-04 16:26 1324http://www.eclipse.org/articles ... -
eclipse还有什么不能做???
2009-04-09 15:13 974http://www.vimeo.com/1195398?pg ... -
如何把propertiesView的tab功能移植到EditorPart中
2009-04-01 10:12 2870最近有个调查将上图tab propertiesView的外 ... -
Eclipse中TextEditor常用扩展整理
2009-03-11 14:11 5485总结一下TextEditor,eclips ... -
eclipse中对redo与undo的支持
2009-03-10 16:14 4547大家在使用eclipse时,一定对ctrl+z和ctrl+r使 ... -
总结一下eclipse中的Job机制
2009-03-06 17:38 11640总结一下eclipse中Job,Job可以说是eclipse中 ... -
以GefTree为例解释一下如何结合使用gef+emf(2)
2009-03-05 14:24 3007创建gef框架。 按照基本习惯定义gef各部分包名: G ... -
以GefTree为例解释一下如何结合使用gef+emf(1)
2009-03-05 14:20 1528以GefTree为例解释一下如何结合使用gef+emf。 (1 ... -
gef写的tree例子--模型修改为emf
2009-03-04 16:11 2163模型部分已经修改为emf模型。 使用emf模型最大的好处是: ... -
用gef写的一个tree例子(无移动)
2009-02-26 18:06 1463又整理一下代码,增加了删除。 移动决定不做了,都是坐标之类的算 ... -
用gef写的一个tree例子(无移动,删除)
2009-02-26 11:16 1055计划 1、删除,移动做上去 2、将模型层提供为扩展点,( ... -
关于image,ImageDescriptor,imageRegistry
2009-02-20 17:31 5056相信不需要多说,大家都明白调用本地资源例如(icon)这类的资 ...
相关推荐
此外,Eclipse还支持代码重构,如重命名变量、提取方法等,这些都能帮助开发者保持代码的整洁和可维护性。 在调试方面,Eclipse提供了强大的调试工具。通过设置断点、单步执行、查看变量值、调用栈分析等手段,可以...
首先,安装Eclipse中文语言包的过程相当简单。用户可以在Eclipse Marketplace中搜索“Chinese (Simplified) Language Pack”或者“Chinese (Traditional) Language Pack”,然后按照提示进行安装。安装完成后,重启...
【描述】"将 lLanguagePack-eclipse-zh_4.4 直接解压到到 eclipse 覆盖即可 ,重启OK"这部分描述了安装Eclipse中文汉化包的简单步骤。首先,你需要下载名为“lLanguagePack-eclipse-zh_4.4”的语言包,这个文件是...
3. **代码导航与重构**:Eclipse的Swing插件通常集成了Eclipse的代码导航和重构功能,使得在大量Swing组件代码中查找和修改代码变得容易。 4. **调试支持**:对于Swing应用,插件可能提供特殊的断点和调试视图,...
安装这两款插件非常简单,只需在Eclipse的“帮助”菜单中选择“Eclipse Marketplace”,然后搜索相应的插件名,按照提示进行安装即可。安装完成后,Eclipse会自动识别.js文件并应用这些插件的功能。 在压缩包...
总之,Eclipse 3.5中文包是为了解决中国开发者在使用Eclipse 3.5时的语言障碍,通过简单的安装步骤,用户可以享受到完全汉化的开发环境,更好地利用Eclipse的强大功能进行编程和项目开发。在使用过程中,遵循提供的...
项目是Eclipse中的基本组织单元,每个项目可以包含一个或多个源代码文件、资源和配置文件。 **3. 界面布局** Eclipse的界面由多个视图组成,如代码编辑器、导航器、问题视图等。你可以通过“窗口”菜单自定义这些...
标签中的"Ec3.5中文包"表明这是Eclipse3.5的官方简体中文语言包,它是为了让中国及中文环境下的开发者能更方便地使用Eclipse。安装这个语言包后,所有的菜单、对话框和帮助文档都将转换为简体中文,极大地降低了...
Eclipse是一款强大的集成开发环境(IDE),尤其在Java编程领域中广泛应用。对于初学者来说,掌握Eclipse的基本操作和特性是至关重要的,因为这将极大地提升编程效率和代码质量。本教程旨在帮助初学者快速上手Eclipse...
在插件系统上,Eclipse 3.5支持新的P2更新机制,这使得插件的安装、升级和管理更为简单,用户可以通过Eclipse内置的市场查找并安装所需的插件。P2还提供了依赖管理和冲突解决,确保了插件之间的兼容性。 对于Web...
Eclipse 3.5全功能中文语言包的安装非常简单,只需将下载的压缩包解压后,按照Eclipse的插件安装指引进行操作即可。通常,这包括通过“Help”菜单选择“Install New Software”,然后指向语言包所在的目录进行安装。...
安装Eclipse 4.2 "Juno" 的中文语言包非常简单,只需要将下载的压缩包解压后,将其中的`features`和`plugins`目录下的文件复制到Eclipse安装目录的相应文件夹下,然后重启Eclipse即可。这样,你就可以享受全中文界面...
本教程将深入浅出地介绍Eclipse的使用,帮助初学者快速上手并提升开发效率。 首先,Eclipse的核心功能是代码编辑、构建管理和调试。其强大的代码自动完成(Content Assist)功能能有效提高编写代码的速度,同时,...
Eclipse 3.4中文包是一个为Eclipse IDE(集成开发环境)提供的...总的来说,Eclipse 3.4中文包为中国的开发者提供了一个更加友好和熟悉的开发环境,通过简单的步骤就能实现界面语言的切换,提升了开发过程的舒适度。
同时,Eclipse的重构工具也适用于AspectJ代码,增强了整体的开发体验。 最后,如果你在使用ajdt2.2.3过程中遇到任何问题或者有新的发现,建议你在社区分享你的经验,这对其他开发者来说是一份宝贵的资源。通过评论...
安装Eclipse3.5中文语言包的过程相对简单。首先,你需要确保你已经安装了Eclipse3.5的基础版本。然后,可以通过Eclipse的“软件更新”功能来添加新的更新站点,通常是通过“帮助”->“软件更新”->“查找并安装...”...