0

ビューの作成を制御できないため、軽量のビュー モデルまたはデータ コンテキスト オブジェクトを 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 


        }
}

MapViewModelTableOfContentsView( TocView) でアクセスする必要がある Legends というプロパティがありTocViewますMapViewMapView.createPartControl()

@Override
public void createPartControl(Composite parent) {
    // pass model to child here when creating it
}                       

パースペクティブで独立したビューとして存在したい場合は、次のようにプラットフォームに追加TocViewします。MapViewMapPerspective.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);

共有する必要があるビュー モデルまたはデータ コンテキストを渡すにはどうすればよいですか?

4

0 に答える 0