Как сделать выбор детей в GEF? - PullRequest
2 голосов
/ 16 января 2011

Я реализовал добавление портов в качестве дочерних к прямоугольнику Figure / EditPart / Model, используя пример логики в качестве ссылки. Цифры порта отображаются должным образом, а отладка показывает, что EditParts и Models созданы и добавлены в родительский элемент, но дочерние элементы недоступны для выбора.

В EditPart для детей я переопределяю isSelectable (), чтобы вернуть true.

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

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

Я что-то упускаю, чтобы сделать его доступным для выбора, или, скорее всего, что-то еще мешает?

Ответы [ 2 ]

2 голосов
/ 16 января 2011

Вы можете попытаться с помощью отладчика установить точку останова для зрителей getEditPartAt (Point) и перейти оттуда, куда она идет. Это должно срабатывать при нажатии на ребенка.

Возможно, что не созданы какие-либо отзывы о выборе, поэтому вы также можете попробовать вывести viewer.getSelectedEditParts (), чтобы проверить, что выбор действительно существует, но обратная связь отсутствует.

0 голосов
/ 26 августа 2014

Я сталкиваюсь с той же проблемой и исправляю ее так: попробуйте установить подходящую политику в editpart.

   @Override
   protected void createEditPolicies() {
       installEditPolicy(EditPolicy.LAYOUT_ROLE, yourEditPolicy());
   }
...