2011-09-12 6 views

答えて

2

TextViewerをエディタではなくビューで使用していることを前提としています。この場合:

  1. TextViewerが使用されているあなたのビューがorg.eclipse.jface.text.IFindReplaceTargetに「適応」しなければならない、すなわちそのgetAdapter()は、視聴者からのターゲットを返す必要があります。
  2. "org.eclipse.ui.edit.findReplace"コマンドのハンドラを明示的に登録する必要があります(org.eclipse.ui.texteditorFindReplaceAction)。開始するにはPlatform Command Frameworkをご覧ください。
2

私はMartiiKäärikの指摘を使ってこの質問に対する答えを見つけました。 TextEditorの内部文字列識別子を使用する次のコードで作業しています。それでも、ここに行く。

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); 
  • :ビューで

    1. getAdapter()

      は、このコードを追加し、ビューのcreatePartControl()

      public Object getAdapter(Class adapter) { 
          if (IFindReplaceTarget.class.equals(adapter)) { 
          if (viewer != null) { 
           return viewer.getFindReplaceTarget(); 
          } 
          } 
          return super.getAdapter(adapter); 
      } 
      
    2. viewerTextViewerのインスタンスである)このように実装する必要がありますXMLは必要ありません。

  • 関連する問題