2011-11-14 6 views
0

現在、Eclipse GEFを使用してエディタを構築しています。エディタを使用して新しいパーツを追加し、名前を変更することは可能です。GEFエディタの要素が動かない

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

デバッガを使用している間に、コマンドが実行されたことに気づきましたが、ビューはまだ更新されていません。

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

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

ViewAdapterEditPartのActivateメソッドに登録されています。

何ができますか?

答えて

2

地図を使って作業しているので、通常のAdapterインターフェイスはマップエントリの追加または削除をリッスンするだけなので、機能しません。

あなたがマップ要素の変化に聴きたい場合は、あなたが使用する必要がありEContentAdapter代わり:

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

マップエントリの通知がマップにforwaredされているので、あなたはスーパーメソッドを呼び出すことが重要です自体。

関連する問題