Одна EditPart для всех видов модели (в GMF/GEF)
Мы работаем над созданием инструмента моделирования на основе фреймворка и инструментов GMF. У нас есть требование разрешить пользователям добавлять представления (рисунки) во время выполнения и использовать их в своих диаграммах. Мы будем использовать файлы SVG для представления фигур.
Какова правильная структура EditParts и других связанных с GEF классов в таком случае? Мы думали о реализации одного класса GEF EditPart, который бы создавал соответствующую фигуру на основе параметра (путь к файлу SVG), присутствующего в модели. Пока что это не работает.
Должен быть кто-то, кто уже сделал что-то подобное раньше. Поиск в Google и форумы по Eclipse пока не помогли...
2 ответа
Ну, мы нашли (частичное) решение. У нас есть один элемент, и в зависимости от параметра мы создаем внутри него дочернюю фигуру, которая использует файл SVG (на основе параметра).
Следующий тестовый код вызывается в конструкторе рисунка:
ScalableImageFigure svg; URL URL; if (type == 1) { url = ArchitectureStudioDiagramEditorPlugin.getInstance().getBundle().getEntry( "значки" + IPath.SEPARATOR + "shadow-box.svg"); } else { url = ArchitectureStudioDiagramEditorPlugin.getInstance().getBundle().getEntry( "значки" + IPath.SEPARATOR + "star.svg"); } svg = new ScalableImageFigure(RenderedImageFactory.getInstance(url), true, true, true);
this.add(svg);
Теперь нам нужно выяснить, как иметь несколько элементов в палитре.
Правильный способ состоит в том, чтобы иметь однозначное соответствие между рисунком и частью редактирования. Также покрасочное задание следует оставить рисунку. Как должно быть нарисовано изображение, логика должна быть внутри рисунка, а не в редактируемой части.
Спасибо