Один EditPart для всех представлений модели (в GMF/GEF)

Мы работаем над созданием инструмента моделирования на основе структуры и инструментов GMF. У нас есть требование разрешить пользователям добавлять представления (рисунки) во время выполнения и использовать их в своих диаграммах. Мы будем использовать файлы SVG для представления фигур.

Какова правильная структура EditParts и других классов, связанных с GEF, в таком случае? Мы думали о реализации одного класса GEF EditPart, который создавал бы соответствующую фигуру на основе параметра (пути к файлу SVG), присутствующего в модели. Пока это не похоже на работу.

ДОЛЖЕН быть кто-то, кто уже делал что-то подобное раньше. Google и форумы Eclipse пока не помогли...


person Jaffer    schedule 03.06.2009    source источник


Ответы (2)


Что ж, мы нашли (частичное) решение. У нас есть один элемент, и в зависимости от параметра мы создаем внутри него дочернюю фигуру, которая использует файл SVG (на основе параметра).

В конструкторе рисунка вызывается следующий тестовый код:

Масштабируемое изображениеРисунок svg; URL-адрес; if (type == 1) { url = ArchitectureStudioDiagramEditorPlugin.getInstance().getBundle().getEntry("icons" + IPath.SEPARATOR + "shadow-box.svg"); } else { url = ArchitectureStudioDiagramEditorPlugin.getInstance().getBundle().getEntry("icons" + IPath.SEPARATOR + "star.svg"); } svg = new ScalableImageFigure(RenderedImageFactory.getInstance(url), true, true, true);

  this.add(svg);

Теперь нам нужно выяснить, как иметь несколько элементов в палитре.

person Jaffer    schedule 03.06.2009

Правильный способ - иметь взаимно однозначное соответствие между figure и editpart . Кроме того, рисование должно быть возложено на фигуру. Как изображение должно быть нарисовано, логика должна быть внутри рисунка, а не в области редактирования.

Спасибо

person Jijoy    schedule 22.12.2009