0

現在、Eclipse GEF を使用してエディターを構築しています。エディターを使用して新しいパーツを追加し、名前を変更することができます。

ただし、要素の移動には少し問題があります。それらをマウスでドラッグすると、マウスを離しても移動せず、要素が別の要素と衝突しません。
要素の位置はEMap(モデルは EMF で作成されます) に格納されます。putビューの変更は、マップの方法で保存されます。

デバッガーで調べていると、コマンドが実行されていることに気付きましたが、ビューはまだ更新されていません。

モデルにアダプターを追加しましたがnotifyChanged、システムから呼び出されません。

public class ViewAdapter implements Adapter { 
    @Override 
    public void notifyChanged(Notification notification) { 
        refreshVisuals(); 
    } 
} 

はのViewAdapteractivate メソッドに登録されEditPartます。

どうなり得るか?

4

1 に答える 1

2

Adapterマップを操作していると、マップ エントリの追加または削除のみをリッスンするため、通常のインターフェイスは機能しません。

マップ要素の変更をリッスンしたい場合は、EContentAdapter代わりにを使用する必要があります。

public class ViewAdapter extends EContentAdapter {
    @Override
    public void notifyChanged(Notification notification) {
        refreshVisuals();
        super.notifyChanged(notification);
    }
}

マップ エントリの通知がマップ自体に転送されるように、スーパー メソッドを呼び出すことが重要です。

于 2011-11-14T12:34:35.050 に答える