Eclipse JDT的自定義跳轉功能
之前51CTO曾介紹過六大便捷Eclipse JDT特性,應該說Eclipse JDT對于Java開發者而言是很方便的。下面將介紹其中的自定義跳轉功能。
在JDT中,可以在一個類上進行跳轉,或者是方法,或者是變量進行跳轉。這個功能相當方法,使用也很簡單:在欲跳轉的對象上按ctrl+鼠標左鍵即可。
但是如果我們想提供一個自定義的跳轉功能怎么辦?這個功能可能有機會用的不多,但是如果我們需要,那我們就需要知道怎么用。對吧?
為了演示,這里我假定我想實現一個以下功能的跳轉:
在方法或其他地方注釋里可以聲明一個“@super”標簽,然后在這個標簽上點鏈接的時候,會跳到這個類的父類里去。
為了實現跳轉,首先我們需要知道擴展哪個擴展點才能實現這個功能:org.eclipse.ui.workbench.texteditor.hyperlinkDetectors
這個擴展點就是用來擴展鏈接功能的擴展點,當然這后面的話就比較多,總體說來就是在editor的configuration里有一個getHyperlinkDetects()方法,用來得到所有的鏈接偵聽定義。
你可以直接在這個方法中返回你的定義,不過在jdt,它是通過讀取上面這個擴展點的所有定義來實現的。這也給我們一個提示:如果我們要實現一個自已的鏈接,最好也是去讀這個擴展點。
下面就是擴展點的聲明了。下面是一個例子:
- < extension>
- < extension
- point="org.eclipse.ui.workbench.texteditor.hyperlinkDetectors">
- < hyperlinkDetector
- activate="true"
- class="#className"
- id="#id"
- name="Link Control"
- targetId="org.eclipse.jdt.ui.javaCode">
- < /hyperlinkDetector>
- < /extension>
這里要注意的就是這個targetId,表示這個鏈接偵聽是對誰來說的。否則真要把所有的擴展都加到java上去了。所以如果想擴展java,這個targetId就應該像上面這樣寫。
最后剩下的就是實現那個類了。
這個類需要繼承:AbstractHyperlinkDetector,然后實現他的一個方法:
- detectHyperlinks(ITextViewer textViewer,
- IRegion region, boolean canShowMultipleHyperlinks)
在這個方法里返回一個IHyperLink[]對象,或者是返回空。你需要做的其實就是判斷你當前選中的內容范圍,然后判斷是否要起用一個鏈接。例如上面說的“@super”,當前的內容是“super”,你可以往前追加一個,判斷是否是"@",然后再往最前和最后追加一個,判斷是否是空格。如果是,那你就應該返回一個IHyperLink[]對象。
如果返回空,那按ctrl+鼠標左鍵時沒有反應,否則會出現一個手形和一條鏈接線,就像其他的鏈接一樣。
最后就是實現你的IHyperLink對象了,顯然,這個需要實現IHyperLink接口。
最后試試效果,如果你做的沒錯的話,那就OK了。有需要的話,就試試看Eclipse JDT的自定義跳轉功能吧。
編輯推薦】