【问题标题】:How to persist the editor input in e4如何在e4中保留编辑器输入
【发布时间】:2015-02-11 11:41:19
【问题描述】:

在 eclipse 3 中有 EditorInput 管理编辑器的持久性及其输入,但是如何使用 eclipse e4 来管理它,其中编辑器和视图几乎相同...... 有什么推荐的方法吗,还是我必须实现某种编辑器输入注册表,在其中我将所有编辑器输入对象映射到某种唯一键,然后在重新启动应用程序后,我通过该注册表检索编辑器输入对象钥匙? 我已经看到我只能将字符串放入 MPart 的持久状态...

【问题讨论】:

  • 您需要比这里描述的更多的东西吗:vogella.com/tutorials/Eclipse4Services/…
  • @MrCovex 不,这不是我一直在寻找的......我认为我没有足够精确地提出问题......我不是在寻找对正在编辑的对象所做的更改,而不是在应用程序关闭时保留对象,以便在重新启动应用程序后编辑器的输入仍然存在......因为现在当我重新启动应用程序并且有打开的编辑器时,编辑器输入消失了,我只是看到很多空的编辑器......
  • 一切都取决于编辑器的输入。我使用 EMF 持久性(当然,对于 EMF 模型)。

标签: eclipse editor eclipse-rcp e4


【解决方案1】:

任何MApplicationElement(包括MPart)的getPersistedState() 方法返回一个Map,您可以在其中存储您想要持久化的任何字符串数据。

如果你想保存对象,你必须在工作区.元数据中使用你的插件的状态位置。通过以下方式获取其位置:

IPath stateLoc = Platform.getStateLocation(bundle);

路径通常是.metadata/.plugins/<your plugin id>。你可以把任何你喜欢的东西放在这个区域,但由你来管理。

您可以使用@Persist 注解让方法在需要持久化时运行:

@Persist
void persist()
{
   ... save data 
}

持久化状态数据保存在工作区 .metadata 中,只有在启动 RCP 时指定 -clearPersistedState 选项时才会清除。

【讨论】:

  • 嗯我不确定,但据我所知,我只能将字符串存储在持久状态但没有对象...Map<String, String> org.eclipse.e4.ui.model.application.MApplicationElement.getPersistedState()
  • 添加了一些关于可以存储对象的状态位置的信息。
  • 经过大量调查,我终于得到了这个答案,就像@tom1991te,我很惊讶没有内置功能来保存 EMF 对象
  • 您的意思是 @PersistState 注释用于此目的吗?
  • @Campa 我认为问题是关于保存编辑数据,您将使用@Persist 执行此操作。 @PersistState 用于应用模型相关的状态信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-11
  • 2020-01-01
  • 2020-05-03
  • 1970-01-01
  • 2019-10-03
相关资源
最近更新 更多