Относительно работы Eclispe EMF Command Frame - PullRequest
2 голосов
/ 10 февраля 2011

Может ли кто-нибудь сказать мне, как использовать AddCommand вместо `SetCommand", чтобы сделать следующее.

У меня есть такой класс:

class Profile {
    List achievements;
    List grades;
    List extracurrics;
}

Теперь предположим, что янужно добавить объект оценки в этот объект профиля, как я могу достичь этого с помощью AddCommand только

Ответы [ 2 ]

2 голосов
/ 11 февраля 2011

SetCommand в основном используется для установки значений в модели EMF, а AddCommand используется для изменения значений коллекции внутри модели EMF, поэтому в общем случае использование AddCommand не должно быть проблемой.

Вы можете создать новую AddCommand, используя статическую функцию создания в AddCommand:

AddCommand.create(EditingDomain domain, EObject owner, EStructuralFeature feature, java.lang.Object value) 

Объяснение заданных значений:

domain: the editing domain your model lives in
owner: element you are doing the modifications to
feature: feature in model, that should be given to you by the EPackage of your model.
         So this case is the Grades list feature
value: the new object you add to the list

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

У меня здесь не работает EMF, поэтому я не могу предоставить никаких прямых источников, но дайте мне знать, если это не сработало.

1 голос
/ 14 февраля 2011

Это должно выглядеть примерно так:

Profile p = ...;
Grade g = ...;
Command add = AddCommand.create(domain,p, YourProfilePackage.Literals.PROFILE__GRADES, Collections.singleton(g));

где YourProfilePackage должен быть в коде, автоматически сгенерированном из вашей модели EMF.

...