Java EclipseRCP-在关闭最后一个视图后使IFolder持久化
我已经创建了一个IFolder,在XP上的EclipseHelios上的RCP中为我的视图创建了一个占位符,类似于Java 1.6Java 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:*"); 这与灰色区
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持久性