2013-12-12 70 views
2

我正在使用工具欄項的啓用/禁用狀態。根據切換狀態禁用/啓用工具欄菜單項

我需要禁用第二個菜單,直到第一個菜單處於切換狀態。爲此,我嘗試獲取第一個菜單項的切換狀態。但是狀態總是空的。

ICommandService service = (ICommandService) PlatformUI.getWorkbench(). 
                getService(ICommandService.class); 
Command command = service.getCommand("com.commandID"); 
State state  = command.getState("org.eclipse.ui.commands.toggleState"); 

有人知道是什麼問題?也許有更好的方法來解決它?

回答

1

你是否爲你的命令註冊了ToggleState?

由於可能對同一個 命令有多個菜單貢獻,所以我們必須在中心位置跟蹤狀態。 想象一下可以從主菜單和視圖工具欄觸發的切換按鈕。通過直接在命令中存儲 狀態,這些按鈕的狀態保持同步。關鍵是 org.eclipse.jface.commands.ToggleState。

<command id="org.eclipse.example.command.toggle" 
     name="Toggle Me"> 
    <state class="org.eclipse.jface.commands.ToggleState" 
     id="org.eclipse.example.command.toggleState" /> 
</command> 

請有關詳細信息,閱讀this blog post