В приложении 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
Почему бы просто не вызвать 'IDE.openEditor' непосредственно в обработчике двойного щелчка? –
Greg - это приложение RCP, а не IDE. Я обновил вопрос, чтобы отразить этот контекст. –
Класс 'IDE' по-прежнему включен во многие RCP, используйте' IWorkbenchPage.openEditor', если нет. Что касается пустого выделения, вы подключили свой просмотр дерева к поставщику выбора сайта? –