Один EditPart для всех видов модели (в GMF/GEF)
-
09-09-2019 - |
Вопрос
Мы работаем над созданием инструмента моделирования на основе структуры и инструментов GMF.У нас есть требование разрешить пользователям добавлять представления (рисунки) во время выполнения и использовать их в своих диаграммах.Мы будем использовать файлы SVG для представления фигур.
Какова правильная структура EditParts и других классов, связанных с GEF, в таком случае?Мы думали о реализации одного класса GEF EditPart, который создавал бы соответствующую фигуру на основе параметра (путь к файлу SVG), присутствующего в модели.Пока что это, похоже, не работает.
ДОЛЖЕН быть кто-то, кто уже делал что-то подобное раньше.Поиск в Google и форумы Eclipse пока не помогли...
Решение
Что ж, мы нашли (частичное) решение.У нас есть один элемент, и в зависимости от параметра мы создаем внутри него дочернюю фигуру, которая использует SVG-файл (на основе параметра).
В конструкторе рисунка вызывается следующий тестовый код:
ScalableImageFigure svg;URL-адрес;if (type == 1) {url = architecturestudiodiodiogrameditorplugin.getInstance (). getBundle (). getEntry ("Icons" + ipath.separator + "Shadow-box.svg");} else {url = architecturestudiodiodiogrameditorplugin.getinstance (). getbundle (). getEntry ("icons" + ipath.separator + "star.svg");} svg = new ScalableImagefigure (venderedImageFactory.getInstance (url), true, true, true);
this.add(svg);
Теперь нам нужно выяснить, как иметь в палитре несколько элементов.
Другие советы
Правильный способ — иметь сопоставление один к одному между фигурой и частью редактирования.Также задачу рисования следует оставить фигуре.Логика того, как изображение должно быть нарисовано, должна быть внутри рисунка, а не в части редактирования.
Спасибо