91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Eclipse擴展點怎么用

發布時間:2021-12-04 10:03:38 來源:億速云 閱讀:308 作者:小新 欄目:編程語言

小編給大家分享一下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擴展點怎么用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

淮安市| 托克托县| 吉首市| 隆林| 临海市| 社会| 丹凤县| 石阡县| 利辛县| 南和县| 南澳县| 卢龙县| 曲松县| 应用必备| 江口县| 绥化市| 米易县| 静宁县| 河津市| 东宁县| 金门县| 修武县| 沂源县| 淄博市| 留坝县| 绵阳市| 南靖县| 涞水县| 金塔县| 朔州市| 拜城县| 东山县| 怀宁县| 白山市| 黄浦区| 奉新县| 定结县| 凌源市| 江源县| 平顺县| 罗城|