#ecore #eclipse-sirius #sirius
#ecore #затмение-Сириус #сириус #eclipse-sirius #sirius
Вопрос:
Есть ли в Sirius какой-либо способ взаимодействия с пользователем (скажем, двойной щелчок) для вызова операции, определенной Ecore, над семантическим элементом? Более подробная информация приведена ниже.
Я использую Xcore для определения моей метамодели. У меня такая ситуация, как эта:
enum Status
{
Default
Foo
Bar
}
class ThingWithStatus
{
Status status
}
class ContainerForThings
{
contains ThingWithStatus[] thingList
op void resetAllThingsStatus()
{
for (ThingWithStatus thing : thingList)
{
thing.status = Status::DEFAULT
}
}
}
В настоящее время у меня есть диаграмма в Sirius с контейнерными узлами для ContainerForThings, с подузлами для ThingWithStatus. Что я хотел бы иметь возможность сделать, так это дважды щелкнуть по контейнерному узлу на схеме и запустить операцию resetAllThingsStatus() для семантического элемента.
Если нет способа сделать это напрямую, является ли мой лучший вариант превратить сгенерированный EMF Java-код для resetAllThingsStatus() во внешнее Java-действие, которое затем вызывает Sirius?
Заранее благодарю за вашу помощь. — SJ
Ответ №1:
Если нет способа сделать это напрямую, является ли мой лучший вариант превратить сгенерированный EMF Java-код для resetAllThingsStatus() во внешнее Java-действие, которое затем вызывает Sirius?
ДА. Если у вас много EOperations, вы можете захотеть выполнить универсальный сервис, например callEOperation (EObject onElement, Строковое OperationName), в противном случае у вас будет столько методов, сколько у вас EOperations.