【问题标题】:How to get the screen dimension of a eclipse view and IJavaElement如何获取 Eclipse 视图和 IJavaElement 的屏幕尺寸
【发布时间】:2012-08-02 23:13:53
【问题描述】:

我编写了一个 Eclipse 插件,它在视图部分将一些 Java 类可视化为 UML。您在包资源管理器中选择一个包,然后单击该包,您可以通过单击菜单中的自创命令菜单项来可视化它。可视化是使用 prefuse 库创建的。 我的下一个目标是让它能够用于多点触控。我使用来自PQLabs multitouch SDK 的多点触控库。现在,在多点触控屏幕上,我可以移动我的 UML 模型、调整它的大小等。

但我无法从包资源管理器中获取信息。我试图在屏幕上找出 Package Explorer 和 IJavaElements 的位置,但失败了。我的想法是将手指的 x 和 y 点(我从 PQL Labs SDK 获得)与 IJavaElements 的 x 和 y 坐标进行比较。我从一开始就失败了,我无法识别触摸点是否在 Package Explorer 视图的边界内。我唯一得到的是整个显示器的界限。我搜索了互联网和 stackoverflow,但没有找到有用的东西。

我不知道这是否可能,但如果有人可以向我提供信息或指导我找到好的链接,我将不胜感激。

【问题讨论】:

    标签: eclipse plugins screen multi-touch dimension


    【解决方案1】:

    我对包资源管理器了解不多,但是对于项目资源管理器(公共导航器)(您也应该解决),有一个与之关联的 TreeViewer(在这种情况下,该类是 CommonViewer)。您可以通过执行 CommonNavigator.getCommonViewer() 来实现。拥有 TreeViewer 后,您就可以访问底层 SWT 树,并从那里使用标准 SWT 方法来获取树相对于封闭窗口的位置。还有一些方法可以让您获得树细胞的边界。查看 SWT Snippets (Google it) 以帮助您使用树。

    对于包资源管理器,它是类似的;您将不得不查看源代码。

    【讨论】:

    • 您好,感谢您的建议弗朗西斯厄普顿。抱歉,可能是我的回答来晚了。
    【解决方案2】:

    正如弗朗西斯的回答中所述,您应该能够获得TreeViewer,而TreeViewer#getControl() 将提供底层控制。

    当您通过control.getBounds() 获取控件的位置和大小时,这些将相对于外壳/窗口的坐标。如果您需要绝对显示/屏幕坐标,请参阅control.toDisplay(some_x, some_y)

    【讨论】:

      【解决方案3】:

      我想分享我如何解决问题的步骤。根据这些建议,我深入研究了 Java IDE 的 jdt Java 基础架构。要获得 Package Explorer 的 TreeViewer,我必须强制转换“PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView("org.eclipse.jdt.ui.PackageExplorer")”进入“org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart”中的“PackageExplorerPart”。我做的进一步步骤是:

      treeViewer = packageExplorerPart.getTreeViewer();

      tree = (Tree) treeViewer.getControl();

      之后,我创建了一个带有坐标 x 和 y 的“Point”,这些坐标是通过触摸屏幕传递的。但是,点的位置代表了整个屏幕,为了获得包资源管理器的正确坐标,我使用 tree.toControl(...) 方法转换了点。最后,我检查了是否使用方法 tree.getItem(....) 给出了一个项目。

      【讨论】:

        猜你喜欢
        • 2011-06-04
        • 1970-01-01
        • 1970-01-01
        • 2023-03-17
        • 1970-01-01
        • 2021-05-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多