我已经创建了一个带有占位符的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);
但我似乎无法通过折叠来实现该文件夹......
答案 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 持久!