2017-11-16 12 views
0

RCPで2つの異なるビューを作成しました。今私は変更を自動的に別のビューに反映されるように1つのEclipseビューで行われます。プログラムで2つの異なるEclipseビューの変更を更新する方法

私はRCPプラグインの開発に全く新しいです。誰もが上記の要件を実装するコードで私を助けることができますか?

+0

http://www.vogella.com/tutorials/Eclipse4EventSystem/article.htmlを参照してください。 – howlger

+0

@howlger:こんにちは、私はe4の実装を使用するはずです。 – Kumar

+0

e4とは、5年前に導入されたEclipse 4.xを意味します。もちろん、Eclipseプラットフォームから何も使用せずに実装することはできます。 – howlger

答えて

0

私は私の知る限り、ワークベンチの部品の接続の3つの方法があり、あなたはEclipseの3プラットフォームを使用と仮定し、(私のrefが「Eclipseのリッチクライアントプラットフォーム」第二弾P255です。):

1)〜あなたの最初のビューでは、インスタンスのためのISelectionProviderを、使用部品の変更を登録するには

public void createPartControl(Composite parent) { 
    int style = SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL; 
    viewer = new TableViewer(parent, style); 
    getSite().setSelectionProvider(viewer); 
    ... 
} 

ときなしリスナーを登録解除することを忘れないでください(変更を聴くための選択サービスを使用する他の部品への構造変化を公開より長い時間が必要)ISelを使うectionListenerは、あなたの2番目のビューで、たとえば:

public class ChaptersView extends ViewPart { 
    private TableViewer viewer; 
    ISelectionListener listener = new ISelectionListener() { 
    public void selectionChanged(IWorkbenchPart part, ISelection sel) { 
     if (!(sel instanceof IStructuredSelection)) 
      return; 
     IStructuredSelection ss = (IStructuredSelection) sel; 
     Object o = ss.getFirstElement(); 
     if (o instanceof Book) 
      viewer.setInput(ss.size()==1 ? o : null); 
    } 
    }; 
    public void createPartControl(Composite parent) { 
    getSite().getPage().addSelectionListener(listener); 
    } 
    public void dispose() { 
    getSite().getPage().removeSelectionListener(listener); 
    } 
} 

これらの例はhereから来ます。

あなたはどこかIPartListener2を実装して、アクティブなワークベンチ・ウィンドウのアクティブなページを使用して部品リスナーにこのリスナーを追加する必要があります。

2)は、一部のリスナーを使用し、オープンクローズのようなイベントを、部分に聞いたり、非表示にするには:

workbenchWindow().getActivePage().addPartListener(IPartListener2); 

不要になったときに、リスナーの登録を解除することを忘れないでください:

workbenchWindow().getActivePage().removePartListener(IPartListener2); 

3)あなたは、あなた自身のcommunicatiを実装することができますおそらく部品間の結合が強すぎます。

関連する問題