Движение элементов в редакторе GEF не работает - PullRequest
0 голосов
/ 14 ноября 2011

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

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

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

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

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

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

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

1 Ответ

2 голосов
/ 14 ноября 2011

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

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

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

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

...