我有一個我正在開發的Eclipse RCP應用程序。它有一些視圖特定的菜單,其中一個菜單項是我希望在啓用相應功能時顯示旁邊的勾號的項目。同樣,下次選擇該項目時,該項目應該成爲未選中狀態,以反映相應的功能被禁用。切換菜單項的狀態
我的問題是:我該如何設置這些菜單項的切換狀態?當菜單項被選中時,我有一個IHandler來處理事件,但我不確定如何更新GUI元素本身。
StackOverflow社區是否對我如何解決這個問題有任何想法?
我有一個我正在開發的Eclipse RCP應用程序。它有一些視圖特定的菜單,其中一個菜單項是我希望在啓用相應功能時顯示旁邊的勾號的項目。同樣,下次選擇該項目時,該項目應該成爲未選中狀態,以反映相應的功能被禁用。切換菜單項的狀態
我的問題是:我該如何設置這些菜單項的切換狀態?當菜單項被選中時,我有一個IHandler來處理事件,但我不確定如何更新GUI元素本身。
StackOverflow社區是否對我如何解決這個問題有任何想法?
該解決方案涉及使命令處理程序實現IElementUpdater接口。然後,UI元素可以被更新爲這樣:
public void updateElement(UIElement element, Map parameters)
{
element.setChecked(isSelected);
}
updateElement被稱爲一個UI更新的一部分,可以從處理程序的執行命令來調用像這樣:
ICommandService service = (ICommandService) HandlerUtil
.getActiveWorkbenchWindowChecked(event).getService(
ICommandService.class);
service.refreshElements(event.getCommand().getId(), null);
地段更多信息here(看到單選按鈕命令和更新選中狀態項)
也許一切都變了,也許有RCP和Eclip之間的差異se插件,但我只是將我的動作樣式設置爲toggle
,並自動處理切換。你可以在github.com上看到源代碼。
<action
class="live_py.EnableAction"
id="live-py.enable.action"
label="Li&ve Coding"
menubarPath="pyGeneralMenu/pyNavigateGroup"
state="false"
style="toggle">
要查看該功能是否處於啓用狀態,我只是仰望通過ID的動作,然後調用isChecked()
。
你剛剛爲我節省了很多時間和精力 - 謝謝! – sfinnie 2014-04-25 14:30:28
您不需要標記標題,這是標籤的用途。 – GEOCHET 2008-09-22 13:13:05