Перемещение элементов в редакторе GEF не работает

В настоящее время я создаю редактор с Eclipse GEF. Через редактор можно добавлять новые детали и переименовывать их.

Однако у меня есть небольшая проблема с перемещением элементов. При перетаскивании их мышью они не перемещаются, когда я отпускаю мышь, и элемент не сталкивается с другим.
Позиции элементов хранятся в EMap (модель сделана с помощью EMF). Изменения в представлении сохраняются методом put карты.

При просмотре отладчиком заметил, что команда выполняется, но вид еще не обновился.

Я добавил адаптер в модель, но его notifyChanged не вызывается из системы.

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

ViewAdapter зарегистрирован в методе активации EditPart.

Что бы это могло быть?


person CSchulz    schedule 14.11.2011    source источник


Ответы (1)


Когда вы работаете с картой, обычный интерфейс Adapter не будет работать, потому что он только прослушивает добавление или удаление записей карты.

Если вы хотите прослушивать изменения элементов карты, вы должны вместо этого использовать EContentAdapter:

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

Важно, чтобы вы вызывали метод super, чтобы уведомления о записях карты передавались на саму карту.

person MatF    schedule 14.11.2011