外掛程式開發久了,難免遇到需要自定義擴充套件點的需求,那麼如何自定義擴充套件點呢?
以編寫乙個快捷選單項為例,說明如下:
假設終端使用者可通過如下配置來擴充套件快捷選單項
com.kdevn.test.mypopupmenus">
label="mynewaction"
class="com.kdevn.test.actions.mynewaction"
id="com.kevn.test.actions.mynewaction">
假設其中objectcontribution元素僅可配置1個,而action元素可配置多個
1 編寫schema檔案,可checkout cvs上的org.eclipse.ui,參考org.eclipse.ui/schema/popupmenus.exsd
2 在自定義擴充套件點外掛程式com.kdevn.test的plugin.xml中新增如下內容
mypopupmenus" name="mypopupmenus" schema="schema/mypopupmenus.exsd"/>
3 完成了schema檔案和plugin.xml檔案後,就需要開始編寫讀取擴充套件點資訊的**了,如下所示
iextensionregistry registry = platform.getextensionregistry();
string pointid= "com.kdevn.test.mypopupmenus"
iextension point = registry.getextensionpoint(pointid);
iextension extensions = point.getextensions();
//get an objectcontribution element
iconfigurationelement ocelem =extensions[0].getconfigurationelements()[0]
//get action elements
iconfigurationelement actionelems = ocelem.getchildren();
for(int i=0; i//create an instance
newaction newaction = (newaction)actionelems[i].createexecutableextension("class");
//get the label attribute
string label = actionelems[i].getattribute("label");
newaction.settext(label);
newaction.setdata(...);
//use the action
//add the action to menubar/menumanger
4 實現newaction類
class newaction extends action {
protected object data;
public newaction() {
super();
//get/set method
public void run() {
//do anything with the data
完成以上步驟,乙個自定義擴充套件點就完成了,
接著就可以新建乙個外掛程式工程,來使用該擴充套件點了,在新建外掛程式工程中實現的mynewaction類需繼承自newaction。
實現自定義擴充套件點 如何最小成本實現自定義擴充套件介面
1 背景 在軟體開發中,如何做到低成本並能快速高質量交付,一直是各個軟體公司追求的目標。下面從純技術角度談談這個話題。我們知道在物件導向設計中,是有一些設計原則要遵循的。例如要軟體設計目標 正確性,健壯性,高擴充套件,高復用,高效性。假如我們交付5個產品中,每個產品 復用度達到90 和0 復用,我們...
自定義擴充套件Repeater控制項
repeater控制項主要用於顯示資料,因為具有良好的擴充套件性和自由性,被大量使用顯示資料。1 自定義控制項的建立和使用 本次主要講訴繼承現有的控制項,非完全自定義的控制項。該種控制項的建立和使用分為3個步驟,第一步 自定義類,繼承現有的控制項 第二步 在網頁上註冊 第三步 使用。1 自定義類 2...
NSIS自定義dll擴充套件
nsis是乙個功能強大的安裝解除安裝包製作工具,通過dll可以擴充套件很多功能,你也可以自定義乙個dll,以下是具體步驟 1.1 新增對nsis庫的引用 在hello.cpp中宣告對nsis庫的引用 hello.cpp 定義 dll 的初始化例程。include stdafx.h include h...