成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Eclipse重構功能:擴展點的使用

開發 后端
本文介紹了Eclipse重構功能的實現。Eclipse中提供了幾個擴展點,方便擴展重構功能。 基本的重構功能有Rename,Move,Create,Delete,Copy。

Eclipse中提供了幾個擴展點,方便擴展重構功能。

基本的重構功能有,

Rename,Move,Create,Delete,Copy。對應擴展點即為:

  1. org.eclipse.ltk.core.refactoring.renameParticipants    
  2. org.eclipse.ltk.core.refactoring.moveParticipants    
  3. org.eclipse.ltk.core.refactoring.createParticipants    
  4. org.eclipse.ltk.core.refactoring.deleteParticipants    
  5. org.eclipse.ltk.core.refactoring.copyParticipants   

以ReName為例,其余4項與ReName大同小異。

實現這個擴展點的基本語法:

  1. < extension point="org.eclipse.ltk.core.refactoring.renameParticipants">    
  2. < renameParticipant    
  3.     id="jp.co.intramart.app.producer.refactoring.renameTypeParticipant"    
  4.     name="Ebuilder RenameTypeParticipant"     
  5.     class="jp.co.intramart.app.producer.refactoring.TypeRenameParticipant">     
  6.     < enablement>    
  7.     < /enablement>        
  8. < /renameParticipant>    
  9. < /extension>   

這里默認對響應所有改名事件,如果需要過濾可以在元素< enablement/>中加以定義。不贅述。實現改名擴展的關鍵在實現類,必須是org.eclipse.ltk.core.refactoring.participants.RenameParticipant;的子類

下面代碼進行了簡單的Eclipse重構功能實現。

  1. import org.eclipse.core.resources.IFile;    
  2. import org.eclipse.core.resources.ResourcesPlugin;    
  3. import org.eclipse.core.runtime.CoreException;    
  4. import org.eclipse.core.runtime.IProgressMonitor;    
  5. import org.eclipse.core.runtime.OperationCanceledException;    
  6. import org.eclipse.ltk.core.refactoring.Change;    
  7. import org.eclipse.ltk.core.refactoring.RefactoringStatus;    
  8. import org.eclipse.ltk.core.refactoring.TextFileChange;    
  9. import org.eclipse.ltk.core.refactoring.participants.CheckConditionsContext;    
  10. import org.eclipse.ltk.core.refactoring.participants.RenameParticipant;    
  11. import org.eclipse.text.edits.ReplaceEdit;    
  12.     
  13. public class TypeRenameParticipant extends RenameParticipant {    
  14.     
  15.     public TypeRenameParticipant() {    
  16.     }    
  17.     
  18.     @Override    
  19.     public RefactoringStatus checkConditions(IProgressMonitor pm,    
  20.             CheckConditionsContext context) throws OperationCanceledException {    
  21.         return new RefactoringStatus();    
  22.     }    
  23.     
  24.     @Override    
  25.     public Change createChange(IProgressMonitor pm) throws CoreException,    
  26.             OperationCanceledException {    
  27.         IFile file = ResourcesPlugin.getWorkspace().getRoot().getProject("a")    
  28.                 .getFile("a");    
  29.         TextFileChange textFileChange = new TextFileChange("File Changed ",    
  30.                 file);    
  31.     
  32.         ReplaceEdit edit = new ReplaceEdit(01"haha");    
  33.         textFileChange.setEdit(edit);    
  34.         return textFileChange;    
  35.     }    
  36.     
  37.     @Override    
  38.     public String getName() {    
  39.         return "Ebuilder RenameTypeParticipant";    
  40.     }    
  41.     
  42.     @Override    
  43.     protected boolean initialize(Object element) {    
  44.         // need sub    
  45.         return true;    
  46.     }    
  47.     
  48. }   

CreateChange方法內實現過于粗糙,僅僅是為了可以讓大家看到結果。

Eclipse重構功能結果預覽

通過利用擴展點,我們就自然的將重構時的差異比較,警告,preview,重構history,redo/undo等,eclipse平臺提供的基本功能加以利用了。

Preview的結果如下圖。

Preview的結果 

Eclipse重構功能:特殊需求

下面我來介紹,通過擴展點實現特殊需求。

除了增,刪,改,移等基本重構外,可以增加特殊需求的重構,比如JDT中對類,方法,變量名的重構。

實現特殊需求,就要實現自己的Refactoring類,繼承類org.eclipse.ltk.core.refactoring.Refactoring實現相關方法,這個類的結構與RenameParticipant等類的結構基本一致,直接上代碼,不再贅述。

  1. import org.eclipse.core.runtime.CoreException;    
  2. import org.eclipse.core.runtime.IProgressMonitor;    
  3. import org.eclipse.core.runtime.OperationCanceledException;    
  4. import org.eclipse.ltk.core.refactoring.Change;    
  5. import org.eclipse.ltk.core.refactoring.Refactoring;    
  6. import org.eclipse.ltk.core.refactoring.RefactoringStatus;    
  7.     
  8. public class ProducerRefactoring extends Refactoring {    
  9.     
  10.     @Override    
  11.     public RefactoringStatus checkFinalConditions(IProgressMonitor pm)    
  12.             throws CoreException, OperationCanceledException {    
  13.         // need sub    
  14.         return new RefactoringStatus();    
  15.     }    
  16.     
  17.     @Override    
  18.     public RefactoringStatus checkInitialConditions(IProgressMonitor pm)    
  19.             throws CoreException, OperationCanceledException {    
  20.         // need sub    
  21.         return new RefactoringStatus();    
  22.     }    
  23.     
  24.     @Override    
  25.     public Change createChange(IProgressMonitor pm) throws CoreException,    
  26.             OperationCanceledException {    
  27.         // need sub    
  28.         return null;    
  29.     }    
  30.     
  31.     @Override    
  32.     public String getName() {    
  33.         return "ProducerRefactoring";    
  34.     }    
  35.     
  36. }   

這個類負責處理特殊需求與重構的特殊邏輯。

除了邏輯層,還需要對表現層有實現:

RefactoringWizard 及 RefactoringWizardPage。

實現了Refactoring,Wizard,WizardPage后,即完成了,UI到邏輯的實現。

通過相應的Action的配置,使用RefactoringWizardOpenOperation。即完成了特殊重構需求的開發。

為了方便對特殊需求的Refactoring邏輯部分的重用,eclipse提供了一個擴展點:

org.eclipse.ltk.core.refactoring.refactoringContributions

通過擴展點的配置,使用時通過ID即可隨時得到Refactoring對象。

本文來自站在eclipse的肩膀上:《簡單介紹eclipse中的重構》。

【編輯推薦】

  1. 在Eclipse中安裝pydev插件的經驗分享
  2. 自定義Eclipse菜單項:去除多余的UI圖標
  3. 六大便捷Eclipse JDT特性一覽
  4. 部署Eclipse RAP到Tomcat的步驟詳解
  5. Eclipse平臺應用與開發專題
責任編輯:yangsai 來源: defrag_sly的博客
相關推薦

2011-03-31 09:32:25

EclipseRefactor

2020-11-16 19:18:15

Jupyter微軟編程

2009-06-10 16:24:10

Eclipse平臺擴展

2011-03-16 09:46:54

Eclipse代碼模板

2017-05-09 10:34:21

Spring BootDubbo Activ擴展

2017-04-28 08:32:40

Spring BootDubbo Activ使用

2024-02-01 08:28:28

2013-03-06 10:19:56

重構架構設計

2009-10-28 09:19:13

Eclipse 3.5項目導航

2023-09-28 08:49:41

springBean

2023-12-01 07:28:40

SpringbootBean

2009-01-03 15:05:31

ibmdwEclipseSymphony

2023-11-28 08:01:25

2010-06-12 16:29:00

BlackBerry開

2009-09-17 09:51:18

Eclipse JDT自定義跳轉

2009-08-28 13:57:29

virtual ove擴展點

2010-06-12 13:59:42

Eclipse 4.0CSS主題功能切換

2009-08-25 14:25:19

Eclipse 3.5

2022-06-10 07:17:07

重構Java應用

2009-06-17 17:44:41

Eclipse插件Sp
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人动漫一区二区 | 精品视频成人 | 天天干人人| 日日夜夜精品视频 | 亚洲另类视频 | 欧美一级特黄aaa大片在线观看 | 午夜精品久久久久久久99黑人 | 久久99精品久久久久久国产越南 | 日本黄色一级视频 | 亚洲精品久久久久中文字幕二区 | 激情欧美日韩一区二区 | 日韩中文字幕在线 | 久久精品亚洲精品 | av电影手机在线看 | 性做久久久久久免费观看欧美 | 久久av网站 | 欧美福利在线 | 国产视频一区二区三区四区五区 | 国产精品美女久久久 | 91精品免费视频 | 国产精品视频一二三区 | 午夜精品一区二区三区免费视频 | 青青草av | 成人午夜av | 美女视频久久 | 一级毛片免费完整视频 | 中文字幕在线观看av | 欧美日韩国产一区二区 | 日韩二区| 亚洲成人在线免费 | 免费观看一级特黄欧美大片 | 国产精品久久久久久久免费观看 | 日韩成人在线一区 | 81精品国产乱码久久久久久 | 91在线精品一区二区 | 国产精品污www在线观看 | 国产a视频| 国产一区二区欧美 | 亚洲网站在线观看 | 久久久久久免费毛片精品 | 色男人天堂av|