2015-01-07 2 views
0

В приложении RCP я пытаюсь открыть редактор, когда пользователь дважды щелкнет по узлу в TreeViewer. Стратегия, которую я использовал для этого, когда представление содержит TableViewer, - передать текущее состояние в ExecutionEvent и в обработчике открытого редактора получить выбор. Эта стратегия не работает при использовании TreeViewer, потому что getSelectionProvider() возвращает значение null.Eclipse SWT Открытый редактор от TreeViewer

Любые предложения по передаче выбора обработчику? Или лучше всего открыть редактор из TreeView?

Работа с TableViewer

// in doubleClick handler of view 
ICommandService cmdService = (ICommandService) PlatformUI.getWorkbench().getService(ICommandService.class); 
Command cmd = cmdService.getCommand("com.easa.acmotor.client.eclipse.motorOpenFromView"); 
ExecutionEvent eventCmd = new ExecutionEvent(cmd, new HashMap<String, String>(), this, 
     ((IEvaluationService) PlatformUI.getWorkbench().getService(IEvaluationService.class)).getCurrentState()); 
try { 
    cmd.executeWithChecks(eventCmd); 
} catch (Exception e) { 
} 


// in open editor handler 
public Object execute(ExecutionEvent event) throws ExecutionException { 
    IStructuredSelection sel = (IStructuredSelection) HandlerUtil.getActiveSite(event).getSelectionProvider().getSelection(); 
    // process selected items here opening an editor for each 
+0

Почему бы просто не вызвать 'IDE.openEditor' непосредственно в обработчике двойного щелчка? –

+0

Greg - это приложение RCP, а не IDE. Я обновил вопрос, чтобы отразить этот контекст. –

+0

Класс 'IDE' по-прежнему включен во многие RCP, используйте' IWorkbenchPage.openEditor', если нет. Что касается пустого выделения, вы подключили свой просмотр дерева к поставщику выбора сайта? –

ответ

0

Вы должны указать сайт вида (или редактор), что ваш TreeViewer является поставщиком выбора для сайта.

В вашем ViewPart (или EditorPart) использовать что-то вроде:

getSite().setSelectionProvider(treeViewer); 

TreeViewer класс реализует ISelectionProvider необходимый интерфейс.

Смежные вопросы