在e3中创建不可恢复的视图我在扩展名org.eclipse.ui.views
中将字段“restorable”设置为false并且它有效。在我的e4应用程序中,我使用标签“NoRestore”创建了PartDescriptor,但它什么也没做。重启后显示部件。我做错了什么?或者是bug?
答案 0 :(得分:2)
如果让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);
}
}
只找到一个部分并关闭要呈现的'标志。
答案 1 :(得分:1)
为了与将来版本兼容,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
方法。