将 Eclipse GEF 放大到特定位置

发布于 2024-10-26 06:13:37 字数 144 浏览 5 评论 0原文

您好,我是 Eclipse GEF 的新手,我在缩放方面遇到问题。

基本上我希望有这个功能: 每当我关闭编辑器视图时,我希望编辑器按以前的比例缩放,最重要的是缩放到相同的位置。

我试图通过 Viewport 实现这样的功能,但我陷入了困境。

Hello I am new in Eclipse GEF and I am having problem with zooming.

Basically I would like to have this functionality:
Whenever I close my Editor View I would like to have Editor zoomed with previous scale and most importantly to the same location.

I was trying to achieve such functionality via Viewport, but I got stuck.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

染年凉城似染瑾 2024-11-02 06:13:37

最后我通过 setViewLocation(Position p) 方法找到了解决方案。
棘手的部分在于其他地方 - 在执行此类方法之前,视口必须处于有效状态,

因此最好的方法是在视口的 UpdateManager 上执行 performUpdate() 。如果您在 GEF 编辑器中设置此类位置,则可能会出现另一种棘手的情况,因为设置位置必须在 initializeGraphicalViewer() 方法中执行,而不是configureGraphicalViewer()方法。

所以最终代码应该是这样的:

@Override
protected void initializeGraphicalViewer() {

    super.initializeGraphicalViewer();
    final GraphicalViewer viewer = getGraphicalViewer();
    viewer.setContents(getModel());
    ScalableFreeformRootEditPart rootEditPart = (ScalableFreeformRootEditPart) viewer.getRootEditPart();

    Viewport viewport = (Viewport) rootEditPart.getFigure();
    viewport.getUpdateManager().performUpdate();
    viewport.setViewLocation(getModel().getZoomPosition());
}

Finally I have found solution via setViewLocation(Position p) method.
The tricky part lies elsewhere - before executing such method viewport must be in valid state,

so best approach is to execute performUpdate() on viewport's UpdateManager. Another tricky situation might occur if you are setting such position in GEF Editor because there setting location must be executed in initializeGraphicalViewer() method NOT in configureGraphicalViewer() method.

So in the end code should look like this:

@Override
protected void initializeGraphicalViewer() {

    super.initializeGraphicalViewer();
    final GraphicalViewer viewer = getGraphicalViewer();
    viewer.setContents(getModel());
    ScalableFreeformRootEditPart rootEditPart = (ScalableFreeformRootEditPart) viewer.getRootEditPart();

    Viewport viewport = (Viewport) rootEditPart.getFigure();
    viewport.getUpdateManager().performUpdate();
    viewport.setViewLocation(getModel().getZoomPosition());
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文