成都创新互联网站制作重庆分公司

Eclipse扩展点怎么用

小编给大家分享一下Eclipse扩展点怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

“只有客户发展了,才有我们的生存与发展!”这是创新互联的服务宗旨!把网站当作互联网产品,产品思维更注重全局思维、需求分析和迭代思维,在网站建设中就是为了建设一个不仅审美在线,而且实用性极高的网站。创新互联对成都网站设计、成都网站制作、网站制作、网站开发、网页设计、网站优化、网络推广、探索永无止境。

Eclipse中提供了几个扩展点,方便扩展重构功能。

基本的重构功能有,

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="jp.co.intramart.app.producer.refactoring.renameTypeParticipant"        name="Ebuilder RenameTypeParticipant"         class="jp.co.intramart.app.producer.refactoring.TypeRenameParticipant">         < enablement>        < /enablement>        < /renameParticipant>    < /extension>

这里默认对响应所有改名事件,如果需要过滤可以在元素< enablement/>中加以定义。不赘述。实现改名扩展的关键在实现类,必须是org.eclipse.ltk.core.refactoring.participants.RenameParticipant;的子类

下面代码进行了简单的Eclipse重构功能实现。

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 "Ebuilder RenameTypeParticipant";        }            @Override        protected boolean initialize(Object element) {            // need sub            return true;        }        }

CreateChange方法内实现过于粗糙,仅仅是为了可以让大家看到结果。

Eclipse重构功能结果预览

通过利用扩展点,我们就自然的将重构时的差异比较,警告,preview,重构history,redo/undo等,eclipse平台提供的基本功能加以利用了。

Preview的结果如下图。

Eclipse扩展点怎么用

Eclipse重构功能:特殊需求

下面我来介绍,通过扩展点实现特殊需求。

除了增,删,改,移等基本重构外,可以增加特殊需求的重构,比如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对象。

以上是“Eclipse扩展点怎么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!


文章标题:Eclipse扩展点怎么用
浏览地址:http://cxhlcq.com/article/pccceg.html

其他资讯

在线咨询

微信咨询

电话咨询

028-86922220(工作日)

18980820575(7×24)

提交需求

返回顶部