ビューの作成を制御できないため、軽量のビュー モデルまたはデータ コンテキスト オブジェクトを Eclipse RCP アプリケーションで共有するためのベスト プラクティスは何ですか? 私は、OSGi サービスや静的変数をこのような軽いものには使用したくないと考えています。
コンストラクターで MapViewController のインスタンスを作成する MapView があるとします。
public class MapView extends ViewPart {
public static final String ID = "myapp.mapview";
MapViewController controller = null;
public MapView() {
LegendContainer legends = new LegendContainer();
MapViewModel viewModel = new MapViewModel();
controller = new MapViewController(null, legends, viewModel);
}
@Override
public void createPartControl(Composite parent) {
// create main map
}
}
MapViewModel
TableOfContentsView
( TocView
) でアクセスする必要がある Legends というプロパティがありTocView
ますMapView
。MapView.createPartControl()
@Override
public void createPartControl(Composite parent) {
// pass model to child here when creating it
}
パースペクティブで独立したビューとして存在したい場合は、次のようにプラットフォームに追加TocView
します。MapView
MapPerspective.createInitialLayout
public class MapPerspective implements IPerspectiveFactory {
@Override
public void createInitialLayout(IPageLayout layout) {
String editorArea = layout.getEditorArea();
layout.setEditorAreaVisible(false);
IFolderLayout main = layout.createFolder("right", IPageLayout.RIGHT, 0.2f, editorArea);
IFolderLayout top = layout.createFolder("top", IPageLayout.TOP, 0.5f, editorArea);
IFolderLayout bottom = layout.createFolder("bottom", IPageLayout.BOTTOM, 0.5f, editorArea);
// how do I share stuff???
main.addView(MapView.ID);
layout.getViewLayout(MapView.ID).setCloseable(false);
top.addView(TableOfContentsView.ID);
layout.getViewLayout(TableOfContentsView.ID).setCloseable(false);
bottom.addView(PropertiesView.ID);
layout.getViewLayout(PropertiesView.ID).setCloseable(false);
共有する必要があるビュー モデルまたはデータ コンテキストを渡すにはどうすればよいですか?