2008-09-22 88 views
3

我有一個我正在開發的Eclipse RCP應用程序。它有一些視圖特定的菜單,其中一個菜單項是我希望在啓用相應功能時顯示旁邊的勾號的項目。同樣,下次選擇該項目時,該項目應該成爲未選中狀態,以反映相應的功能被禁用。切換菜單項的狀態

我的問題是:我該如何設置這些菜單項的切換狀態?當菜單項被選中時,我有一個IHandler來處理事件,但我不確定如何更新GUI元素本身。

StackOverflow社區是否對我如何解決這個問題有任何想法?

+0

您不需要標記標題,這是標籤的用途。 – GEOCHET 2008-09-22 13:13:05

回答

1

該解決方案涉及使命令處理程序實現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(看到單選按鈕命令更新選中狀態項)

1

也許一切都變了,也許有RCP和Eclip之間的差異se插件,但我只是將我的動作樣式設置爲toggle,並自動處理切換。你可以在github.com上看到源代碼。

 <action 
      class="live_py.EnableAction" 
      id="live-py.enable.action" 
      label="Li&amp;ve Coding" 
      menubarPath="pyGeneralMenu/pyNavigateGroup" 
      state="false" 
      style="toggle"> 

要查看該功能是否處於啓用狀態,我只是仰望通過ID的動作,然後調用isChecked()

+0

你剛剛爲我節省了很多時間和精力 - 謝謝! – sfinnie 2014-04-25 14:30:28