2011-06-28 1 views
3

私自身のエディタを作成したくないですが、編集イベントにフックすることで既存のエディタを拡張したいと思います。自分のプラグインでEclipseエディターのイベントにどのようにフックできますか?

たとえば、テキストがテキストエディタまたはxmlエディタで変更されたときはいつでも、コールバックを取得して変更に対応できるようになります。

このような適切な拡張ポイントは存在しますか?

答えて

7

あなたは、IEditorPartにアクセスしてこれを行うこれにリスナーを追加しgetAdapter(IDocument.class)を使用することができます...

しかし、これは本当にハックです... ;-)

EDIT:オンリクエストは、もう少しコードです。

public void hookToEditor() { 
    IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); 
    if (page == null) return; 
    IEditorPart editor = page.getActiveEditor(); 
    if (editor == null) return; 
    IDocument doc = (IDocument) editor.getAdapter(IDocument.class); 
    if (doc == null) return; 

    doc.addDocumentListener(new IDocumentListener() { 
     @Override 
     public void documentChanged(DocumentEvent event) { 
      // Do something 
     } 

     @Override 
     public void documentAboutToBeChanged(DocumentEvent event) { 
      // About to do something 
     } 
    }); 
} 

  • がページを取得するための多くの方法があることに注意してください - 例えば現在のサイトを経由します。
  • エディタの部分を取得するのと同じ方法があります。ハンドラを介して
  • 多くのエディタには埋め込まれたドキュメントがありません。 PDEエディタ
+0

他に何もない場合はハックします;) – Johnny

+0

@TonnyMadsenより具体的な例がありますか? – RoflcoptrException

2

リソース変更リスナーを追加できます。

IResourceChangeListener listener = new IResourceChangeListener() { 
    @Override 
    public void resourceChanged(IResourceChangeEvent arg0) { 
     System.out.println("Text changed"); 
    } 
}; 
ResourcesPlugin.getWorkspace().addResourceChangeListener(listener); 
関連する問題