Java EclipseRCP-在关闭最后一个视图后使IFolder持久化

Java EclipseRCP-在关闭最后一个视图后使IFolder持久化,java,eclipse,eclipse-rcp,Java,Eclipse,Eclipse Rcp,我已经创建了一个IFolder,在XP上的EclipseHelios上的RCP中为我的视图创建了一个占位符,类似于Java 1.6 IFolderLayout mainFolder = layout.createFolder("mainfolder, IPageLayout.LEFT, (float) 100.0, layout.getEditorArea()); mainFolder.addPlaceholder("myview:*"); 这与灰色区

我已经创建了一个IFolder,在XP上的EclipseHelios上的RCP中为我的视图创建了一个占位符,类似于Java 1.6

    IFolderLayout mainFolder = layout.createFolder("mainfolder, 
            IPageLayout.LEFT, (float) 100.0, layout.getEditorArea());
    mainFolder.addPlaceholder("myview:*");
这与灰色区域的预期效果一样,该区域在创建myview时由myview填充,并带有后续视图。但是,如果最后一个视图关闭,整个IFolder区域将消失,并且未来的视图将在工作台的错误区域/文件夹中实例化

我看到一些人在06年提到这个问题,但我找不到任何解决方案,我不想在最后一个文件夹消失时强制重置透视图

http://www.eclipsezone.com/eclipse/forums/t53312.html#91951958

我想我可能必须钩住close view方法来检查它是否是最后一个视图,并重新创建IFolder

似乎有一种方法可以防止布局关闭

layout.getViewLayout("myview").setCloseable (false);
layout.getViewLayout("myview:*").setCloseable (false);
但我似乎无法让它影响文件夹的崩溃…

试试这个:

覆盖WorkbenchWindowVisor中的方法isDurableFolder(…),使其如下所示:

    @Override
    public boolean isDurableFolder(String perspectiveId, String folderId) {
        if( "my.perspective".equals(perspectiveId) && "my.mainfolder".equals(folderId) ) {
              return true; 
        }
        return super.isDurableFolder(perspectiveId, folderId);
    }
用透视图和文件夹的ID替换my.perspective和my.main文件夹。这将为文件夹创建持久的ViewStack

仅供参考:默认情况下,
WorkbenchWindowVisor#isDurableFolder(…)
返回
false
。这会导致
PageLayout#createFolder(…)
将ViewStack创建为持久。方法
PageLayout#createplaceholder folder(…)
无法设置ViewStack持久性