2009-07-29 11 views
4

基本となるモデルに変更が生じたときに、カスタムエディタのコンテンツを更新するにはどうすればよいですか?Eclipse:Update Editor

答えて

0

質問がEMF(Eclipse Modeling Framework、これはすべて「モデル」に関するものです)の場合、特に基礎となるモデル関連リソース(ファイルなど)で発生した変更が有用な場合はthis sectionが役立ちます。提供EMF MT(EMF Model Transaction)を、使用することを意味

  • 複数の読み取りと書き込みスレッドによる編集ドメインへのアクセスを管理する機能。
  • 異なるクライアントとリスナーの間で編集ドメインを登録し共有する機能。リソース・セット・リスナーは、トランザクション・レイヤーで定義され、バッチで通知が提供されます。
2

VonCによれば、モデルの意味を正確には明確にしていません。ここにはいくつかのオプションがあります。

リソースの変更については、Eclipseコーナーのresource deltasに関する記事(古くは、まだ有用です)があります。

ワークスペースの選択が変更された場合(パッケージエクスプローラでのアイテムの選択など)は、selection serviceでこの記事をチェックしてください。

org.eclipse.ui.texteditor.AbstractTextEditorデバッグから、更新が処理され、以下のように:

protected void handleEditorInputChanged() { 
    ... 
    final IDocumentProvider provider= getDocumentProvider(); 
    ... 
    if (provider instanceof IDocumentProviderExtension) { 
     IDocumentProviderExtension extension= (IDocumentProviderExtension) provider; 
     extension.synchronize(input); 

注意しながら、他のイベントハンドラの不活性化及び再活性化を処理するためにこれを回避コードの負荷がありますこれは事件です。 AbstractTextEditorから継承できる場合は、これを実装する必要がないようにすることができます。

+0

シナリオ:エディターがテキストファイルを表示しており、テキストファイルが他のオブジェクトによって変更されています。エディタはpropertyChangeイベントを介してこの変更を通知されます。エディタは今何をすべきかということです。私はエディタのsetInputメソッドを再度呼び出すか、エディタを更新するだけです。 – Duleb