Создавать узлы программно в Eclipse GMF - PullRequest
4 голосов
/ 28 августа 2011

Я занимаюсь разработкой редактора для разработки пользовательских интерфейсов на основе Eclipse GMF.

До сих пор я разработал редактор с палитрой.Пользователь может перетаскивать элементы пользовательского интерфейса из поддона и создавать пользовательский интерфейс на холсте.Мне нужно реализовать средство для группировки этих элементов пользовательского интерфейса.

EX: Пользователь сначала создает пользовательский интерфейс, перетаскивая элементы на холст. Затем он выбирает набор элементов пользовательского интерфейса (например, метку и текстовое поле) и нажимает кнопку «Группа».Это автоматически поместит элементы в прямоугольник пунктирной линии.

Я планирую разработать плагин, который сможет получать информацию о выбранных элементах пользовательского интерфейса, удалять их, создавать на холсте элемент группы (пунктирная линия прямоугольная) и вставлять в него удаленные элементы.

Но я не знаю, с чего начать.

Итак, я хочу знать, как программно создавать / удалять узлы в GMF.

Если вы знаете соответствующие коды, пожалуйста, поделитесь ими и, пожалуйста,укажите мне на некоторые полезные ресурсы.

Ответы [ 2 ]

1 голос
/ 29 апреля 2013

Добавление дополнительных элементов при перетаскивании чего-либо из палитры также возможно с помощью, например, отложенных команд.Эти команды создаются, когда создается запрос элемента палитры, но окончательная позиция и представление еще не известны (только по времени отбрасывания).Соответствующее представление разрешается позже.

существующий класс команд, который использует этот механизм: DeferredCreateConnectionViewAndElementCommand или DeferredSetValueCommand

Для использования этих классов у вас естьчтобы найти правильное место в процессе создания вашего запроса, где представления создаются через CreateViewRequest.Этот запрос имеет необходимую информацию ( request.getNewObject () ), которая получает представление, как только объект из палитры куда-то падает.

См. Этот пример для получения дополнительной информации: http://wiki.eclipse.org/GMF_Tutorial_Part_3

1 голос
/ 11 января 2013

При перетаскивании чего-либо из палитры в gmf создается следующая команда. Вы должны указать тип элемента и запросить деталь редактирования для соответствующей команды для элемента.

CreateUnspecifiedTypeRequest request = new
    CreateUnspecifiedTypeRequest(
        Collections.singletonList(EcoreElementTypes.EClass_1001),
        diagramEditPart.getDiagramPreferencesHint());

Command command = diagramEditPart.getCommand(request);
command.execute();

Object newObject = request.getNewObject(); // these are the newly created objects
...