欢迎页面未关闭透视更改

时间:2013-07-11 03:44:04

标签: eclipse eclipse-rcp

我有一个RCP应用程序,其中我添加了Intro页面(欢迎页面)。这是使用IIntroPart实现的。所以我的不是面向xml的欢迎页面。

问题:启动应用程序时,欢迎页面会完美显示。但是现在当欢迎页面仍然打开(可见)时,如果我尝试在我的应用程序中打开透视图,欢迎页面不会向右移动(就像在Eclipse IDE中一样),为我选择的透视图腾出空间。

因此,即使选择了透视图,也不会显示透视图,欢迎页面仍然占据整个工作台区域。请注意,所选的perspectve不会隐藏在欢迎页面后面。但是所选择的观点正在透视快捷方式中得到更新!

重新启动(清除元数据后)如果我手动关闭欢迎页面然后尝试打开透视图,则透视图就可以正常打开。

这是因为欢迎页面(当它可见时)所选的透视图未在工作台中打开。

有人可以帮我解决这个问题吗?它应该像欢迎页面在Eclipse IDE中的行为一样。即,当仍然打开欢迎页面时,如果打开透视图,则欢迎页面应该向右移动,为pespective创建空间,因此两者(选定的透视图和欢迎页面)应该是可见的。

更新:

在这个问题上取得了一些进展。现在当我选择要打开的透视图(“窗口 - >打开透视图 - > MyPerspective”)时,欢迎页面(介绍部分)仍然打开,我可以关闭欢迎页面(这是通过添加部件监听器来完成的到欢迎页面)。但现在显示一个空白区域,并且未显示透视图。但是,所选透视图将在应用程序透视快捷方式栏中进行更新

欢迎任何帮助......

1 个答案:

答案 0 :(得分:1)

添加透视侦听器并最小化欢迎页面。将以下代码放在Activator start方法中。

    final IWorkbench workbench = PlatformUI.getWorkbench();
    workbench.getDisplay().asyncExec(new Runnable() {
        public void run() {
                workbench.getActiveWorkbenchWindow().addPerspectiveListener(new IPerspectiveListener() {

                    public void perspectiveActivated(IWorkbenchPage arg0, IPerspectiveDescriptor arg1) {
                        // Nothing to do

                    }

                    public void perspectiveChanged(IWorkbenchPage arg0, IPerspectiveDescriptor arg1, String arg2) {

                        // Fix for bug number 8028
                        IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
                        IViewPart introView = page.findView("org.eclipse.ui.internal.introview");//$NON-NLS-1$
                        if (introView != null && page.getReference(introView) != null) {
                            int currentState = page.getPartState(page.getReference(introView));
                            if (currentState != IWorkbenchPage.STATE_MINIMIZED) {
                                page.setPartState(page.getReference(introView), IWorkbenchPage.STATE_MINIMIZED);
                            }
                        }

                    }
                });                
        }
    });