文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Eclipse扩展点怎么用

2023-06-17 23:57

关注

小编给大家分享一下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扩展点怎么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯