确定Eclipse GEF中卷轴图表的可见面积的大小
-
02-10-2019 - |
题
我正在尝试使用Eclipse GEF创建一个简单的应用程序,该应用程序在卷轴图中显示图表。在启动时,我希望该图位于观看者内部(想象一下恒星中心位于视图中心的星形布局)。
我认为这是相关代码部分:
我的观点:
public class View extends ViewPart {
public static final String ID = "GEFProofOfConcept.view";
...
public void createPartControl(Composite parent) {
viewer.createControl(parent);
viewer.setRootEditPart(rootEditPart);
viewer.setEditPartFactory(editPartFactory);
viewer.setContents(DummyModelCreator.generateModel());
}
编辑零件代码:
@Override
protected void refreshVisuals() {
Project project = (Project) getModel();
// This is where the actual drawing is done,
// Simply a rectangle with text
Rectangle bounds = new Rectangle(50, 50, 75, 50);
getFigure().setBounds(bounds);
Label label = new Label(project.getName());
projectFont = new Font(null, "Arial", 6, SWT.NORMAL);
label.setFont(projectFont);
label.setTextAlignment(PositionConstants.CENTER);
label.setBounds(bounds.crop(IFigure.NO_INSETS));
getFigure().add(label);
setLocation();
}
private void setLocation() {
Project project = (Project) getModel();
if (project.isRoot()) {
// Place in centre of the layout
Point centrePoint = new Point(0, 0); // This is where I need the center of the view
getFigure().setLocation(centrePoint);
} else {
...
}
}
以及上述编辑部分的父母:
public class ProjectDependencyModelEditPart extends AbstractGraphicalEditPart {
@Override
protected IFigure createFigure() {
Figure f = new FreeformLayer();
f.setLayoutManager(new XYLayout());
return f;
}
...
对于这个问题的替代解决方案也欢迎,我当然是GEF(一般而言是Eclipse)的新手。
解决方案
对于任何有兴趣的人来说,都可以解决:
Dimension viewSize = (((FigureCanvas) getViewer().getControl()).getViewport().getSize());
不隶属于 StackOverflow