eclipse RCP - 在最后一个View关闭后使IFolder保持不变

时间:2010-11-14 16:15:08

标签: java eclipse eclipse-rcp

我已经创建了一个带有占位符的IFolder,用于我在RCP上的eclipse Helios on XP with Java 1.6就像这样;

    IFolderLayout mainFolder = layout.createFolder("mainfolder, 
            IPageLayout.LEFT, (float) 100.0, layout.getEditorArea());
    mainFolder.addPlaceholder("myview:*");

这可以按照预期使用灰色区域,在创建时由myview填充并具有后续视图。但是,如果最后一个视图关闭,则整个IFolder区域将消失,并且将来的视图将在工作台的错误区域/文件夹中实例化。

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

http://dev.eclipse.org/newslists/news.eclipse.platform.rcp/msg15873.html http://www.eclipsezone.com/eclipse/forums/t53312.html#91951958

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

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

layout.getViewLayout("myview").setCloseable (false);
layout.getViewLayout("myview:*").setCloseable (false);

但我似乎无法通过折叠来实现该文件夹......

1 个答案:

答案 0 :(得分:1)

试试这个:

WorkbenchWindowAdvisor 中覆盖 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);
    }

my.perspective my.mainfolder 替换为Perspective和Folder的ID。这将为您的文件夹创建一个持久的 ViewStack

仅供参考:默认情况下,WorkbenchWindowAdvisor#isDurableFolder(...)会返回false。这会导致PageLayout#createFolder(...) ViewStack 创建为持久。方法PageLayout#createPlaceholderFolder(...)无法设置 ViewStack 持久!