2013-07-11 23 views
1

我有一个RCP应用程序,其中我添加了介绍页面(欢迎页面)。这是使用IIntroPart实现的。所以我不是一个面向xml的欢迎页面。欢迎页面不关闭透视更改

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

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

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

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

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

更新:

在这个问题上取得了一些进展。现在,当欢迎页面(介绍部分)仍处于打开状态时,我选择要打开的透视图(“窗口 - >打开透视图 - > MyPerspective”),能够关闭欢迎页面(这是通过将部分侦听器添加到欢迎页面)。但是现在显示一个空白区域并且不显示透视图。然而,所选择的角度是越来越在应用角度看快捷栏

任何帮助,欢迎更新中...

+0

您正在使用的日食版本..? –

+0

日食版本是3.6.2 –

回答

1

添加透视监听器,并尽量减少欢迎页面。将下面的代码放入Activator启动方法中。

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); 
          } 
         } 

        } 
       });     
     } 
    });