我有一個命令,我已經添加到視圖的上下文菜單(其中有一個treeviewer)和我的自定義編輯器的上下文菜單。Eclipse RCP:視圖和編輯器的命令處理程序
在我的處理程序中有什麼辦法可以區分哪個上下文菜單命令已被調用?這是因爲,在視圖中的情況下,我用這樣的事情來獲得我所需要的數據,
ISelection selection = HandlerUtil.getActiveWorkbenchWindow(event)
.getActivePage().getSelection();
if (selection != null & selection instanceof IStructuredSelection)
{
IStructuredSelection strucSelection = (IStructuredSelection) selection;
.....
在編輯器的情況下,選擇是空的,當然。所以我增加了以下處理編輯器部件,
IEditorPart editor = HandlerUtil.getActiveEditor(event);
IEditorInput input = editor.getEditorInput();
IPath path = ((FileEditorInput)input).getPath();
但發生的事情是,即使我從我的視圖下執行該命令,它總是返回一個激活的編輯器。這是否意味着我必須寫入單獨的處理程序,這些處理程序將基於視圖或編輯器是否處於焦點而處於活動狀態?
謝謝!
請將'HandlerUtil.getActiveWorkbenchWindow(event).getActivePage()。getSelection()'改爲'HandlerUtil.getCurrentSelectionChecked(event)'... :-) – 2013-05-10 19:18:16
謝謝!漂亮的指針! – nbz 2013-05-10 23:43:22