Различное представление для суперкласса и подкласса

Я новичок в создании редакторов с помощью Sirius, и у меня есть следующая модель EMF:

введите здесь описание изображения

Я хочу создать редактор Sirius для данной метамодели с разными представлениями для Superclass A и Subclass B.

Оба класса A и B могут быть созданы, а Class B имеет дополнительные атрибуты и ссылки. В представлении для Subclass B я хочу показать только ограниченное количество атрибутов из Superclass A и несколько дополнительных атрибутов из Subclass B.

Теперь идея состоит в том, чтобы иметь разные контейнеры, и в зависимости от того, какой это класс, я хочу показать соответствующий контейнер. До сих пор, когда у меня есть два контейнера, определенные в редакторе Sirius, по одному для каждого класса, и я создаю экземпляр Subclass B, я получаю теперь два контейнера в представлении, один с представлением, предназначенным для Superclass A, и один с представлением, предназначенным для Subclass B.

Могу ли я как-нибудь сказать Сириусу, чтобы он показывал только контейнер соответствующего класса?


person tzwickl    schedule 21.08.2016    source источник


Ответы (1)


Итак, у вас есть два разных элемента диаграммы для A и B в вашем файле .odesgin?

Вы можете ограничить список элементов, к которым должно применяться графическое представление. Это можно сделать с помощью «Выражения семантических кандидатов» в вашем элементе диаграммы. Вы можете легко использовать Java Services, чтобы отфильтровать дерево модели и вернуть Collection<EObject> со всеми соответствующие элементы, которые вы хотите представить графически (посмотрите ссылку, она прекрасно объяснена).

Если элемент диаграммы должен применяться только к определенной функции родительского объекта модели, обратите внимание на параметр feature:. Введите feature: в поле «Semantic Candidates Expression» и нажмите ctrl + пробел, вы должны увидеть список со всеми возможными функциями для EObject, который вы определили как родительский EObject для этого элемента диаграммы.

(Под «элементом диаграммы» я всегда подразумеваю элемент «контейнер»/«узел», определенный в точке обзора .odesign)

person Mad Matts    schedule 23.08.2016