从Eclipse Juno开始,在RCP应用程序中切换透视图?

Den*_*ret 6 java eclipse eclipse-rcp eclipse-indigo eclipse-juno

在我的RCP应用程序中,我使用此代码切换透视图:

IWorkbenchWindow window = getViewSite().getWorkbenchWindow();
window.getWorkbench().showPerspective(PRODUCT_PERSPECTIVE_ID, window);
Run Code Online (Sandbox Code Playgroud)

我没有更改我的代码,但我改变了我的开发环境

java 6 64bits + windows + Eclipse Indigo
Run Code Online (Sandbox Code Playgroud)

java 7 32bits + windows + Eclipse Juno
Run Code Online (Sandbox Code Playgroud)

现在,透视图不再切换,没有异常,并且在调试中没有任何可疑内容.

我没有找到任何错误报告.

有解释吗?解决方法?

WRe*_*ach 6

我也遇到过这个问题.据我所知,这是Juno(4.2.0)的回归.我使用调试器逐步调用showPerspective().在任何时候都没有任何明确的尝试来实际改变观点.也许有一个内部事件监听器丢失,或者新框架的showPerspective()端口可能不完整.

作为解决方案,以下代码成功地改变了我的观点:

IWorkbenchWindow window = getViewSite().getWorkbenchWindow();
IPerspectiveRegistry registry = workbench.getPerspectiveRegistry();
IWorkbenchPage page = window.getActivePage();
page.setPerspective(registry.findPerspectiveWithId(PRODUCT_PERSPECTIVE_ID));
Run Code Online (Sandbox Code Playgroud)

根据进行这些调用的上下文,您可能希望对其中一些调用进行空值保护,或者检查Workbench.isClosing()是否安全.

  • @dystroy感谢接受.我得出了与你相同的结论:4.x版本仍然太多了. (2认同)