Eclipse UI 不允許任意位置放置元件,只能在預先定義的「擴展點」掛載貢獻。基礎安裝提供數百個擴展點,外掛亦可發布新擴展點。透過 plugin.xml 編輯器的「擴展」屬性頁管理所有貢獻。
在 plugin.xml 編輯器點「新增」,選擇 org.eclipse.ui.actionSets 擴展點(不使用模板)。填入:
NewInvokatronActionNew Invokatron Document Actionorg.eclipse.ui.actionSets(預設)在 <extension> 內加入 <actionSet>、<action> 標記。關鍵屬性說明:
| 屬性 | 說明 |
|---|---|
| id | 動作唯一識別碼,運行時引用用 |
| toolbarPath | 工具列位置路徑(見下表常用路徑) |
| icon | 16x16 GIF 圖示,相對開發目錄路徑(如 icons/InvokatronIcon16.gif) |
| tooltip | 滑鼠懸停提示文字 |
| class | 動作委託類完整類名(實作 IActionDelegate) |
| 工具列 | 基礎路徑 | 常用群組標記 |
|---|---|---|
| 檔案 | org.eclipse.ui.workbench.file | new.ext、save.ext、print.ext、build.ext |
| 導航 | org.eclipse.ui.workbench.navigate | — |
| 執行 | org.eclipse.debug.ui.launchActionSet | — |
| 搜尋 | org.eclipse.search.searchActionSet | — |
| Java 元素建立 | org.eclipse.jdt.ui.JavaElementCreationActionSet | — |
完整路徑範例:org.eclipse.ui.workbench.file/new.ext 將按鈕置於「檔案」工具列的「新建」群組。
建立對應 class 屬性指定的類別,實作 IActionDelegate 介面,在 run() 方法中啟動目標精靈或執行業務邏輯。
package invokatron.wizard;
public class RunWizardAction implements IActionDelegate {
public void run(IAction action) {
// 啟動 NewInvokatronWizard 邏輯
}
// 其他介面方法...
}
<actionSet> 內加入 <menu> 定義選單路徑,<action> 的 menubarPath 指定位置Dialog 或 WizardDialog 彈出視窗建議抽取通用 UI 操作至工具類,減少重複代碼。