自定義擴充套件點

2021-05-21 12:45:25 字數 1933 閱讀 4319

外掛程式開發久了,難免遇到需要自定義擴充套件點的需求,那麼如何自定義擴充套件點呢?

以編寫乙個快捷選單項為例,說明如下:

假設終端使用者可通過如下配置來擴充套件快捷選單項

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...