0

モデル ソースと JFace 編集パッケージを自動的に生成するために利用する ECore モデルがあります。そのモデルのコンテンツの代替ビュー、基本的には JFreeChart に基づくグラフ ビューを開発しようとしています。JFreeChart ベースのビュー プラグインを作成できました。次に、ビューをモデルにリンクする必要があります。どうやってやるの?TreeBased エディターでモデルを編集し、その編集の効果をグラフ ビューで確認したいと考えています。それは可能ですか?

ありがとうございました

4

3 に答える 3

1

Graphbased-View を開く場合は、現在開いているエディターの IFile を要求します。ファイルを取得したら、モデルをロードできます (生成されたエディターで、基になるリソースからモデルをロードする方法を参照してください)、EMF モデルの基になる IFile が変更された場合は、通知を取得するために IResourceChangeListener を添付します。通知の後、ファイルからモデルをリロードして、モデルをビューに表示できます。

さらに、PartListener を登録して、ユーザーが別の emf-editor をトップに移動した場合、またはユーザーがエディターを閉じた場合に通知を受け取る必要があります (また、アンロード (閉じるときに) または更新する必要があります (emf-model を持つ別のエディターが上)。

于 2011-06-24T11:46:50.310 に答える
0

はい、そうです。生成された EMF コードが通知レイヤーを提供するためです。EObject.eAdapters を使用して、モデルが変更された場合に通知される新しいアダプターを追加します。

    object.eAdapters().add(new Adapter() {

        public void setTarget(Notifier newTarget) {
            // TODO Auto-generated method stub

        }

        public void notifyChanged(Notification notification) {
            // TODO Auto-generated method stub

        }

        public boolean isAdapterForType(Object type) {
            // TODO Auto-generated method stub
            return false;
        }

        public Notifier getTarget() {
            // TODO Auto-generated method stub
            return null;
        }
    });
于 2011-06-24T11:22:43.687 に答える
0

わかりましたZoltanの提案に従って、なんとかそれを行うことができました。とにかく、私はより構造化された回答を好むことを認めます。そのため、ソリューションの簡単な要約で自分の質問に答えています。

基本的には、ビュー プラグインが ViewPart インターフェイスを実装するという考え方です。このため、実際には次のメソッドを呼び出すことができます

getSite().getWorkbenchWindow().getSelectionService()

作業台選択サービスを受けるために。したがって、SelectionService メソッドを呼び出すことができます。

addSelectionListener(ISelectionListener listener)

パラメータとして独自の ISelectionListener を渡します。これは、実装している同じ ViewPart にすることができます。ISelectionListener インターフェイスを実装して、selectionChanged メソッドの実装を提供するだけです。

public void selectionChanged(IWorkbenchPart sourcepart, ISelection selection)
于 2011-06-27T17:50:41.270 に答える