快速业务通道

在Eclipse中创建新的重构功能 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
rstElement() instanceof IJavaElement)    select = (IJavaElement) strut.getFirstElement();   } else    select = null;   action.setEnabled(select != null);   }

selectionChanged 函数的参数selection记录了用户选择的部分,我们首先 判断它的选择部分的数目是否为一,然后判断这个唯一的选择部分是否为Java模 型元素,这两个条件任何一个不满足都会导致action.setEnabled(false)的执行 ,这时会弹出如下的对话框说明操作不可用,同时菜单项和按钮都会显示成灰色 ,直到用户选择了合适的部分时,菜单项和按钮才会实显,就可以进行具体的操 作了。

图 4 表明Action目前不能执行的对话框

操作的执行是在AnnotationManageAction的run函数中实现的,例如在本文的 工程中,就是弹出RefactoringWizard对话框,指导用户完成重构的工作,这些 我们将在下面的章节中讲述。

5 扩展Refactoring类

通过前面系统构架的介绍,大家知道了Refactoring和RefactoringWizard是 完成EClipse重构功能的基础类。在创建好插件工程后,我们就通过扩展 Refactoring来实现具体的功能。

Refactoring是所有支持代码转化的类的抽象父类,它在整个流程中与 RefactoringWizard交互以完成重构的功能,起着非常重要的作用。这些类需要 提供以下两类方法:

用于条件检查的方法,判断重构操作大体而言能否执行,以及具体的转化能 否完成;

创建Change对象的方法,Change对象描述了所有将要执行的对当前代码的修 改操作。

Refactoring类的典型流程如下所示:

1. 具体的Refactoring类被创建。

2. 获得用户选择的要进行重构的对象,初始化该Refactoring类。这个由具 体的实现类给出相应的方法。

3. 在重构操作开始执行时,首先调用Refactoring的 checkInitialConditions(IProgressMonitor) 基于用户选择的对象做一个的初 始检查,这个通常由界面自动执行。返回RefactoringStatus.FATAL表明初始检 查没有通过,重构操作不能继续。

4. 获得进行重构的其他参数,比如,对重命名操作来说就是指新名字。这个 通常是由界面根据用户的输入提供的。由具体的实现类给出相应的方法。

5. 获得用户输入参数后,调用Refactoring的checkFinalConditions (IProgressMonitor)进行剩下的检查,这个通常由界面自动执行,返回 RefactoringStatus.FATAL表明最后的检查没有通过,重构操作不能继续。

6. 调用Refactoring的createChange(IProgressMonitor)获得Change对象, 这个通常由界面自动执行,界面可以根据Change对象显示预览界面。

在Eclipse中创建新的重构功能(5)

时间:2010-12-02 IBM 志甘 春郭迎 林刘岳

基于以上的介绍,为了实现本文工程中的重构操作,我们需要扩展 Refactoring类,为它增加一个构造函数,并且具体实现 checkInitialConditions、checkFinalConditions和createChange三个函数。

首先通过菜单File -> New->Class弹出创建类的对话框,输入包名 manage.annotation.refactor,类名 AnnotationRefactoring,输入父类 org.eclipse.ltk.core.refactoring.Refactoring,选中"继承抽象方法"复选框 ,点击完成按钮,一个扩展了Refactoring的最基本的类AnnotationRefactoring 就被创建出来了。

首先为其增加构造函数,以用户选择的Java模型元素作为参数。Refactoring 分析这个参数以得到所有相关的可写Java文件,作为重构操作的对象,如果该模 型元素包含在Java文件中,则找到包含它的文件节点;如果该模型元素包含Java 文件,则找到它的所有子Java文件。构造函数代码如下:

清单 6

public AnnotationRefactoring(IJavaElement element)  {   while (element.getElementType() >  IJavaElement.COMPILATI

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号