激活jface TextViewer eclipse worbench动作的查找/替换

时间:2011-09-12 09:46:15

标签: eclipse-plugin

我制作了一个带有TextViewer界面的eclipse插件,用于显示文本文档,但标准的查找/替换保持灰色模式。

2 个答案:

答案 0 :(得分:2)

我假设您在视图中使用TextViewer而不是编辑器。在这种情况下:

  1. 您使用TextViewer的视图必须“适应”org.eclipse.jface.text.IFindReplaceTarget,即其getAdapter()必须从查看者返回目标。
  2. 您需要显式注册“org.eclipse.ui.edit.findReplace”命令的处理程序(可以是org.eclipse.ui.texteditorFindReplaceAction)。查看Platform Command Framework即可开始使用。

答案 1 :(得分:2)

我使用了MartiiKäärik的指针来找到这个问题的答案。我已经使用了以下代码,但是它使用了TextEditor的内部字符串标识符。不过,在这里。

    视图中的
  1. getAdapter()必须像这样实现(viewerTextViewer的实例)

    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。