gpt4 book ai didi

eclipse-rcp - 确定 Eclipse GEF 中滚动图形查看器的可见区域大小

转载 作者:行者123 更新时间:2023-12-02 05:30:07 25 4
gpt4 key购买 nike

我正在尝试使用 Eclipse GEF 创建一个简单的应用程序,该应用程序在 ScrollingGraphicalViewer 中显示图表。启动时,我希望图表在查看器内居中(想象一个星形布局,其中星形的中心位于 View 的中心)。

以下是我认为相关的代码部分:

我的看法:

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());

关于eclipse-rcp - 确定 Eclipse GEF 中滚动图形查看器的可见区域大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2763553/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com