eclipse e4 自动恢复启动时的透视图

eclipse e4 restore perspective on startup automatically

我们都知道默认情况下 eclipse 将应用程序状态保存在 workbench.xmi 中,然后仅当此文件不存在时才重新创建透视图。但是,我在 e4 上有一个项目忽略了这个文件,即使它存在并且 -clearPersistentState 没有在参数中指定。我认为某处应该有一些代码负责这个但是项目太大我不知道如何追踪它。我的目标是让这个应用再次使用 workbench.xmi 来恢复视角。

为了调查为什么会发生这种情况,我想知道哪个 eclipse 方法负责透视恢复,这样我就可以确保这个项目至少启动这个方法。这是主要问题。

不太主要和不太清楚的问题是如何避免这种默认恢复行为?我的意思是我应该在哪里寻找这个问题的可能根源?在某些 .xml 中是否可以有一些选项使项目忘记 workbench.xmi?它可能是某种手动恢复默认视角的启动处理程序吗?也许应该涉及一些关于哪些方法的提示,这样我就可以搜索它们。任何帮助表示赞赏。提前致谢。

-更新-

原来是因为项目 UI 是在片段中而不是在主 Application.e4xmi 中定义的,并且 Eclipse 有一个错误,导致片段 UI 与主应用程序合并在先前的状态恢复之后,因此用预定义的设置替换恢复的设置。此错误在 this 线程中讨论。

This 有用的文章介绍了如何手动保存和加载各种应用程序组件。另一个有用的灵感来源是 ResourceHandler 本身的源代码。

主要 E4Application class 控制加载和保存应用程序模型。

E4Application 调用 class 实现 IModelResourceHandler 来加载和保存模型和持久状态。应用程序可以使用自己的 IModelResourceHandler 版本,但通常使用默认的 org.eclipse.e4.ui.internal.workbench.ResourceHandler

ResourceHandler 使用 clearPersistedStatepersistState 和已弃用的 deltaRestore 选项来控制加载持久化状态。这些值可以通过命令行选项设置。

将 apply="initial" 添加到 plugin.xml 中的片段标记以从 workbench.xmi

恢复存储的视角

示例:

<fragment
      uri="fragment.e4xmi"
      apply="initial">
</fragment>