在 e3 中创建不可恢复的视图,我在扩展org.eclipse.ui.views
中将字段"可恢复"设置为 false,它可以工作。在我的 e4 应用程序中,我创建了带有标签"NoRestore"的 PartDescriptor,但它什么也不做。重新启动后,将显示部件。我做错了什么?还是虫子?
如果让 e4 在退出时保存工作台模型,它将完全恢复为下次启动 RCP 时保存的模型。不支持NoRestore
标记。
在启动时指定 -clearPersistedState
标志会将模型重置为初始状态。您还可以指定-persistState false
以在退出时停止保存模型。
如果您只想处理一个部分,则可以在启动期间更改生命周期类中的模型。像这样:
@ProcessAdditions
public void processAdditions(MApplication app, EModelService modelService)
{
MUIElement el = modelService.find("your part id", app);
if (el != null) {
el.setToBeRendered(false);
}
}
它只是找到一个部分并关闭"待渲染"标志。
为了与未来版本(其中将存在IPresentationEngine.NO_RESTORE
("NoRestore"(标记(兼容,您可以使用以下代码。
@PreSave
void preSave(MApplication a_app, EModelService a_modelService){
ArrayList<MElementContainer<MUIElement>> containers = new ArrayList<>();
List<MPart> parts = a_modelService.findElements(a_app, null, MPart.class, Arrays.asList("NoRestore"));
parts.forEach(p -> {
p.setToBeRendered(false); // hide parts
containers.add(p.getParent()); // collect containers with no restorable parts
});
// hide containers which contains only no restorable parts
containers.stream().filter(c -> c.getChildren().stream().allMatch(ch -> ch.getTags().contains("NoRestore"))).forEach(c -> c.setToBeRendered(false));
}
注意。尝试将相同的代码添加到带有注释@ProcessAdditions
或@ProcessRemovals
的方法中没有帮助:发生了错误,并且在重新启动应用程序后没有显示任何部分。所以我将我的代码添加到 @PreSave
方法中。