以编程方式显示来自 Eclipse 插件的视图

Posted

技术标签:

【中文标题】以编程方式显示来自 Eclipse 插件的视图【英文标题】:Programmatically showing a View from an Eclipse Plug-in 【发布时间】:2010-09-15 08:51:50 【问题描述】:

我有一个 Eclipse RCP 应用程序的插件,它有一个视图。在 RCP 应用程序中发生事件后,插件被实例化,它的方法被调用以填充插件的模型,但是我找不到如何在不转到“显示视图...”菜单的情况下显示视图.

我认为工作台单例中会有一些东西可以处理这个问题,但我还没有找到任何地方的方法。

【问题讨论】:

【参考方案1】:

您可能正在寻找这个:

PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView("viewId");

【讨论】:

请注意,arg0 可以是视图部分的 VIEW_ID 字段。 我把它放在哪里?我把它放在我所有的课上,但仍然不起作用。 (我不小心关闭了 RCP 应用程序中的视图)【参考方案2】:

如果从命令的处理程序调用

HandlerUtil.getActiveWorkbenchWindow(event).getActivePage().showView(viewId);

据我所知,会更好。

【讨论】:

【参考方案3】:

我发现需要在视图被打开并推到后台后将其带到前面。激活方法可以解决问题。

PlatformUI.getWorkbench()
    .getActiveWorkbenchWindow()
    .getActivePage()
    .activate(workbenchPartToActivate);

注意:workbenchPartToActivate 是IWorkbenchPart 的一个实例。

【讨论】:

【参考方案4】:

在 e4 中,EPartService 负责打开 Parts。这也可用于打开 e3 ViewParts。通过你的 IEclipseContext 实例化以下类,调用 openPart-Method,你应该会看到 Eclipse 内部浏览器视图。

public class Opener 
    @Inject
    EPartService partService;

    public void openPart() 
        MPart part = partService.createPart("org.eclipse.ui.browser.view");
        part.setLabel("Browser");

        partService.showPart(part, PartState.ACTIVATE);
    

Here 你可以找到一个如何与你的 Application.e4xmi 一起工作的例子。

【讨论】:

以上是关于以编程方式显示来自 Eclipse 插件的视图的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Java 的 Eclipse 调试视图中过滤调用堆栈

以编程方式创建持久的 android 视图

从 Eclipse 插件以编程方式更改菜单项

如何在Eclipse插件开发中禁用/启用视图工具栏菜单/操作

eclipse projectExplorer视图(以包的方式显示)与navigator视图切换(以文件夹的方式显示)及树状视图与平面视图的切换

Eclipse RCP - 以编程方式更改 plugin.xml?重新加载?