RCPで2つの異なるビューを作成しました。今私は変更を自動的に別のビューに反映されるように1つのEclipseビューで行われます。プログラムで2つの異なるEclipseビューの変更を更新する方法
私はRCPプラグインの開発に全く新しいです。誰もが上記の要件を実装するコードで私を助けることができますか?
RCPで2つの異なるビューを作成しました。今私は変更を自動的に別のビューに反映されるように1つのEclipseビューで行われます。プログラムで2つの異なるEclipseビューの変更を更新する方法
私はRCPプラグインの開発に全く新しいです。誰もが上記の要件を実装するコードで私を助けることができますか?
私は私の知る限り、ワークベンチの部品の接続の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を実装することができますおそらく部品間の結合が強すぎます。
http://www.vogella.com/tutorials/Eclipse4EventSystem/article.htmlを参照してください。 – howlger
@howlger:こんにちは、私はe4の実装を使用するはずです。 – Kumar
e4とは、5年前に導入されたEclipse 4.xを意味します。もちろん、Eclipseプラットフォームから何も使用せずに実装することはできます。 – howlger