Я использовал указатели Марти Кяэрика, чтобы найти ответ на этот вопрос. Он работает со следующим кодом, который, однако, использует внутренний строковый идентификатор из TextEditor. Тем не менее, здесь это идет.
getAdapter()
в представлении должно быть реализовано следующим образом (viewer
является экземпляром TextViewer
)
public Object getAdapter(Class adapter) {
if (IFindReplaceTarget.class.equals(adapter)) {
if (viewer != null) {
return viewer.getFindReplaceTarget();
}
}
return super.getAdapter(adapter);
}
В createPartControl()
на ваш взгляд, добавьте этот код:
FindReplaceAction findAction= new FindReplaceAction(ResourceBundle.getBundle("org.eclipse.ui.texteditor.ConstructedTextEditorMessages"), null, this);
IHandlerService handlerService= (IHandlerService) getSite().getService(IHandlerService.class);
IHandler handler= new AbstractHandler() {
public Object execute(ExecutionEvent event) throws ExecutionException {
if (viewer != null && viewer.getDocument() != null)
findAction.run();
return null;
}
};
handlerService.activateHandler("org.eclipse.ui.edit.findReplace", handler);
XML не требуется.