Активация поиска / замены для jface TextViewer eclipse worbench action - PullRequest
4 голосов
/ 12 сентября 2011

Я сделал плагин eclipse с интерфейсом TextViewer для отображения текстового документа, но стандартный поиск / замена остаются в сером режиме.

Ответы [ 2 ]

2 голосов
/ 24 июня 2014

Я использовал указатели Марти Кяэрика, чтобы найти ответ на этот вопрос. Он работает со следующим кодом, который, однако, использует внутренний строковый идентификатор из TextEditor. Тем не менее, здесь это идет.

  1. getAdapter() в представлении должно быть реализовано следующим образом (viewer является экземпляром TextViewer)

    public Object getAdapter(Class adapter) {
      if (IFindReplaceTarget.class.equals(adapter)) {
        if (viewer != null) {
          return viewer.getFindReplaceTarget();
        }
      }
      return super.getAdapter(adapter);
    }
    
  2. В 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);
    
  3. XML не требуется.

2 голосов
/ 29 сентября 2011

Я предполагаю, что вы используете TextViewer в виде, а не в редакторе.В этом случае:

  1. Ваше представление, в котором используется TextViewer, должно "адаптироваться" к org.eclipse.jface.text.IFindReplaceTarget, т.е. его getAdapter() должно возвращать цель из средства просмотра.
  2. Вам необходимоявно зарегистрируйте обработчик для команды «org.eclipse.ui.edit.findReplace» (которая может быть org.eclipse.ui.texteditorFindReplaceAction).Чтобы начать, ознакомьтесь с Framework Command Platform .
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...