Мой ScrollingGraphicalViewer
отображается в ViewPart. Однако, если содержащаяся диаграмма больше, чем ViewPart, появляется полоса прокрутки, и вся диаграмма не отображается. Вместо этого я хотел бы уменьшить масштаб, пока вся диаграмма не будет видна без прокрутки.
Я уже пробовал вызывать viewer.zoomTo(Rectangle)
, но, видимо, этот метод еще не реализован. Есть ли другой способ достичь этого?
Мне все еще нужна функция прокрутки, поэтому я должен использовать ScrollingGraphicalViewer
. Просто, когда ViewPart открывается впервые, масштабирование должно быть отрегулировано, как описано выше.
Попробуйте установить GEF LayoutListener на диаграмму. Переопределите содержимое. Editpart #createFigure() метод (например, DiagramEditPart # createFigure(). Что-то вроде этого:
protected IFigure createFigure() {
IFigure f = super.createFigure();
f.addLayoutListener(new LayoutListener.Stub(IFigure container) {
public void postLayout() {
Rectangle diagramBounds = new PrecisionRectangle(container.getBounds());
container.translateToAbsolute(diagramBounds);
/*
* Do the scale factor calculation based on you viewport/control size
*/
ZoomManager zoomManager = (ZoomManager)DiuagramEditPart.this.getViewer().getProperty(ZoomManager.class.toString());
if (zoomManager != null) {
zoomManager.setScale(scaleFactor);
}
}
});
return f;
}
LayoutListener
единственным решением? Или есть способ, который не включает цифры?