2012-01-31 56 views
2

我有問題。我無法找到方式,如何以編程方式將按鈕添加到主工具欄。我的問題是,我的任務是動態地(基於XML配置文件)構建菜單和工具欄。我發現如何以編程方式添加菜單項,但沒有工具欄按鈕。如何在編程中在Eclipse中的主工具欄上添加按鈕

教程主要介紹如何使用插件描述符(plugin.xml)創建按鈕和菜單,但不是如何以編程方式進行。看來,這是Eclipse插件哲學的界限。

我只是發現this

有可能是佈局問題這種方法。我也不會 相信框架將嘗試並重新創建您的動態項目,除了 隨機toolbarmanager更新。使用菜單,他們可以通過 SWT.Show事件進行更新,這就是CompoundContributionItem僅適用於 菜單的原因。

我該怎麼辦?我可以說對不起,沒有辦法動態生成工具欄。我可以只爲菜單做?科勒格說,這一定是可能的,但他不知道如何。

回答

1

每當您嘗試在Eclipse中以編程方式執行某些操作時,通常都是通過插件定義完成的,那麼您就可以在薄冰上行走了。我已經嘗試了幾次,很少會變得簡單或好。

相反,想想你在運行時只知道什麼,並且需要能夠隨時更改。它是按鈕的名稱或圖標?這可以在運行時改變。 看看runtime commands,它們可能會令人困惑,以便正確定義,但對於它們,您可以創建僅在條件處於活動狀態時纔可見的按鈕。該條件可以在運行時設置。

+0

我上次說服了這個解決方案很難實現。每個菜單項都應執行一些外部命令。最簡單的方法是根據結構生成'plugin.xml'。每個項目都有一個ID,並由相同的操作類來處理。該類執行正確的命令。命令將在文件'command.properties'中定義。每行包含pair _itemId-command_。該插件將安裝在工作區的'.plugins'目錄中。實例只會在'plugin.xml'和'command.properties'中有所不同。當工作區被切換時,新的配置被加載。 – 2012-02-09 08:00:19

2

以編程方式創建主工具欄條目的唯一方法是在RCP應用程序中,您可以在其中爲工作臺窗口提供ActionBarAdvisor。然而,這不是動態的,只是在窗口創建時調用。

另一種方法是使用org.eclipse.ui.menus並貢獻org.eclipse.ui.menus.ExtensionContributionFactory。它也只適用於工作臺窗口創建(不是真正的動態),但是您可以讀取自己的XML併爲主菜單或工具欄提供IContributionItems。

你想成爲多麼有活力?大多數解決方案在啓動/窗口創建時都很好。

PW

+0

我需要在開始或工作區切換後創建菜單和工具欄。 – 2012-02-09 07:43:42

+0

然後'ExtensionContributionFactory'應該適合你。 – 2012-02-09 18:43:49

相關問題