Java 使用处理程序在Eclipse4.x中打开Eclipse3.x视图

Java 使用处理程序在Eclipse4.x中打开Eclipse3.x视图,java,eclipse,eclipse-rcp,Java,Eclipse,Eclipse Rcp,我正在将我的3.x eclipse RCP应用程序迁移到eclipse 4.x,我已经在应用程序模型中导入了3.x视图,现在我想从命令中调用视图,所以我在4.x和下面编写的execute方法中创建了处理程序代码: @Execute public void execute(EPartService partService) { MPart mpart = partService.showPart("com.sample.application.part.other",

我正在将我的3.x eclipse RCP应用程序迁移到eclipse 4.x,我已经在应用程序模型中导入了3.x视图,现在我想从命令中调用视图,所以我在4.x和下面编写的execute方法中创建了处理程序代码:

@Execute
    public void execute(EPartService partService)
    {
      MPart mpart = partService.showPart("com.sample.application.part.other", PartState.ACTIVATE);
    }

但是这段代码不适用于3.x视图,所以请告诉我如何使用处理程序调用Eclipse4中的3.x视图?

如果您的3.x视图作为共享元素导入到
应用程序.e4xmi
中,我认为您发布的解决方案不会有问题。旧视图应视为零件

您可能还想尝试将一些旧视图转换为e4,因为这个过程相当快

最终,您是否尝试过打开视图的旧方法

@Execute
public void execute(final EPartService partService) throws PartInitException
{
    final IWorkbenchWindow activeww = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
    IWorkbenchPage activePage = activeww.getActivePage();

    activePage.showView("com.sample.application.part.other");
}
甚至是3.x/e4的组合

@Execute
public void execute(final ExecutionEvent event) throws PartInitException
{
    final IWorkbenchWindow activeww = HandlerUtil.getActiveWorkbenchWindow(event);
    final IWorkbenchPage activePage = activeww.getActivePage();

    activePage.showView("com.sample.application.part.other");
}

我必须使用compat层来使用3.x视图,并且在纯4.x应用程序中不支持,在引入compat层之后,上面的代码现在运行良好。谢谢

如果这是一个纯e4,那么旧的3.x东西就不存在了application@greg-449那么我认为我的答案的第一段就足够了。我已经尝试过了,但是modelservice为3.x视图id返回null,在4.x中创建的视图可以很好地使用上述代码。除了在共享元素中导入它们,我还需要做其他设置吗?@Gaurav视图的ID与共享元素的ID相同吗?@GGrec,是的,plugin.xml中的视图ID与共享元素中的视图ID相同吗?你是说你使用的是纯e4应用程序,没有3.x兼容代码吗?这是纯e4应用程序,我正在应用程序模型中导入3.x组件“导入3.x组件”是什么意思?你有没有把它从一个IViewPart上改过来?任何使用“org.eclipse.ui.xxx”的东西都是行不通的。哦,这意味着如果我将应用程序定义为“org.eclipse.e4.ui.workbench.swt.E4Application”,我就不能在e4中使用3.x视图/组件了?我假设,如果我将使用“Import3.xViews”在应用程序模型中导入视图,我将能够在纯E4应用程序中使用它。因此,如果我想在应用程序中使用3.x视图和4.x视图,现在我必须使用兼容层。如果我错了,请纠正我。我对“导入3x视图”不太熟悉,而且似乎没有什么文档。在这里测试它,除了创建一个最小的零件描述符之外,似乎没有什么作用。