【发布时间】:2016-06-15 18:52:34
【问题描述】:
我正在开发一个 RCP,它有两个产品版本,一个是核心应用,一个是带有一些扩展的。如果用户在同一工作区中打开扩展应用程序后打开核心应用程序,eclipse 会检测到仅在扩展应用程序中使用的透视图并制作它的本地副本,因此它在透视图工具栏中显示为孤立的扩展。
我创建了一个活动来在运行核心应用程序时隐藏扩展的应用程序透视图。这会将其从透视菜单和透视快捷菜单中隐藏,但不会将其从透视工具栏中删除。我还尝试从活动工作台窗口的活动页面中检测孤立透视(通过在标签中查找尖括号)并使用PlatformUI.getWorkbench().getPerspectiveRegistry().deletePerspective(perspective) 删除它们,但这也不影响透视工具栏。我要移除的透视图不存在于核心应用程序中。
有没有办法以编程方式访问透视工具栏,以便删除任何孤立的透视?或者任何其他可行的方法?
【问题讨论】:
-
对于 Eclipse 4,透视切换器是一个 e4 类,它只查看应用程序模型中
MPerspectiveStack的内容。对于 Eclipse 3,代码完全不同。 -
我的目标是 Eclipse 4.5,但我的应用程序使用兼容层具有 Eclipse 3 视图。这是否意味着 MPerspectiveStack 用于填充工具栏?我用 Open Type 找不到那个类。
-
所有 Eclipse 4 代码都使用 e4 透视切换器。您的视图在核心 e4 之上使用 3.x 兼容模式。 MPerspectiveStack 是 Eclipse 的一部分,因此要让 Open Type 找到它,您需要检查 Preferences > Plug-in Development 首选项页面上的 'include all plugins from target in Java Search' 选项。透视切换器本身是
org.eclipse.e4.ui.workbench.addons.perspectiveswitcher.PerspectiveSwitcher -
我找到了这两个类,但我不知道如何获得对
PerspectiveSwitcher实例的引用。没有静态方法,所以我想我需要从主工具栏中获取它,但在搜索时我发现 Paul Webster 的评论说没有办法做到这一点。 -
我不认为 PerspectiveSwitch 有任何方法可以做你想做的事。我提到了它,以便您可以查看源代码以了解它在做什么。
标签: eclipse-rcp toolbar perspective