9

Eclipse RCP のやり方では、モデル オブジェクトをどこに保管すればよいですか? また、それらがロードまたは変更されたとき、どのようにビューと対話する必要がありますか?

既存のアプリケーションを Eclipse RCP に移植しようとしています。これは IDE のようなアプリケーションと見なすことができます。ソース ファイルへのリンクを含むファイルを開きます。ソース ファイルがツリー ビューに表示されます。ソースを編集して、ソースを何らかの出力に組み込むことができます...

たとえば、Open コマンドを処理するとき、モデル オブジェクトをどこに作成すれば、ビューから参照できるようになるでしょうか? シングルトンマネージャークラスの使用は避けたいのですが、それが最も簡単な方法かもしれません。

JDT のソース コードをブラウジングして見つけた興味深いコードは、JavaCore、JavaModel、JavaModelManager です。とJavaProject。


IProject[] projects= ResourcesPlugin.getWorkspace().getRoot().getProjects();

public static IJavaProject create(IProject project) {
    if (project == null) {
        return null;
    }
    JavaModel javaModel = JavaModelManager.getJavaModelManager().getJavaModel();
    return javaModel.getJavaProject(project);
}

関連している:

4

2 に答える 2

5

これはリスナーを通じて最もよく達成されると思います。

データ(モデル)はプライベートパッケージにあり、それらのデータのインターフェイスのみがパブリックパッケージに公開されています。

代替テキスト

このwikiセクションに原則がありますが、具体的な例もここにあります


モデルに関しては、osgiのようなアプローチは、アクセス可能なオブジェクトとしてホストプラグインを使用することです。すなわち:

MyPlugin.getDefault().getModel()

これにより、プラグインのライフサイクルとともにモデルをセットアップ/破棄できます。

モデルが1つのプラグインに含まれている場合、リスナーの拡張ポイントを定義できます。ビューはこれらの拡張ポイントを拡張でき、モデルプラグインのロードに自動的に登録されます。ビューは、モデルから最初のメッセージを取得するとすぐに、必要な情報をモデルに照会できます。

データバインディングの良い例は、この記事にあります。

于 2008-11-10T09:21:08.640 に答える
2

IEditorPartモデルのコピー ( から派生) を保存するために を使用する傾向がありますIEditorInput

ビューがモデルについて知る必要がある場合は、ISelection フレームワークとフォーカスを使用して、モデルをエディターからビューに移動します。

于 2008-11-10T12:33:43.460 に答える