Я пытаюсь получить простой рабочий редактор GEF. У меня есть GraphicalEditorWithPalette
, который создает мой пример модели. У меня есть RootEditPart
, который переопределяет createFigure
и getModelChildren
, как это:
public class RootEditPart extends AbstractGraphicalEditPart {
@Override
protected IFigure createFigure() {
Figure figure = new Figure();
figure.setOpaque(true);
figure.setLayoutManager(new XYLayout());
figure.setSize(1000, 1000);
return figure;
}
@Override
protected List<Positionable> getModelChildren() {
return getModel().getChildren();
}
// More methods ...
}
У меня есть ChildEditPart, который создает метку и переопределяет refreshVisuals
следующим образом:
public class ChildEditPart extends AbstractGraphicalEditPart {
@Override
protected void refreshVisuals() {
RDC rdc = getModel();
Label nameLabel = (Label) getFigure();
nameLabel.setText(rdc.getName());
Point position = rdc.getPosition();
Rectangle r = new Rectangle(position.x, position.y, -1,-1);
((GraphicalEditPart) getParent()).setLayoutConstraint(this, nameLabel, r);
}
// More methods ...
}
Это работает как ожидалось. Но я не хочу иметь фиксированный размер для контейнера. Вместо этого я пытаюсь добиться того, чтобы размер контейнера соответствовал детям. Если я уберу figure.setSize(1000, 1000);
, дети больше не будут рисоваться. В чем моя ошибка?
Edit:
Может быть, важно знать, что мой редактор настраивает часть редактирования корня следующим образом: viewer.setRootEditPart(new ScalableFreeformRootEditPart());
Edit2:
Похоже, что на самом деле проблема viewer.setRootEditPart(new ScalableFreeformRootEditPart());
. Если я удаляю это, это работает как ожидалось В настоящее время я не до конца понимаю, почему ... было бы замечательно, если бы кто-то мог объяснить.