Eclipse RCP保存数值到工作台

4

背景

我正在为基于Eclipse RCP构建的uDig项目开发插件。我的插件包含一个表格,可以从工作台选择中获取数据并填充到表格中。用户可以对表格数据进行分组、排序和过滤。当工作台选择更改时,分组、排序和过滤信息将被重置,并将新的选择数据加载到表格中。

问题

如何将值保存到工作台中,以便稍后访问它们?

当工作台选择更改时,我希望将分组、排序和过滤状态保存到工作台中,以便如果工作台选择再次更改回已保存的选择,则可以恢复状态。

研究

我查看了IViewPart.saveState(IMemento memento),但感觉这只在添加和删除视图时有用。

我还尝试使用首选项,但感觉这是不正确的用法。

IEclipsePreferences node = InstanceScope.INSTANCE.getNode(PluginUI.PLUGIN_ID);
node.put(key, value);

最后

我对Eclipse RCP还比较新,可能是以错误的方式解决这个问题。如果有更好的保存和加载信息的方法,请随时分享。

3个回答

3
根据您的描述,似乎您有一个包含表格的视图。保存视图状态的正规方法是使用IMemento接口。您可以在这个演示文稿中看到使用该接口的代码。作为替代方案,您也可以使用IPreferenceStore
通常情况下,当状态具有全局作用域时,您会使用首选项,而当状态特定于某个视图时,您会使用Memento。

谢谢,我选择了IMemento,并在视图关闭时清除了子项的值。 - Levi Putna
1
请注意,view.saveState(IMemento) 只在工作台关闭时调用,而不在任何其他时间调用。 - Paul Webster
您可以将文件以任何格式写入插件状态位置:org.eclipse.core.runtime.Plugin.getStateLocation(),甚至使用XMLMemento(如果您希望与IMemento保持一致)。 - Paul Webster

2
您可以使用“对话框设置”来实现此功能。 点击这里了解更多信息。

1

我假设您正在尝试使用选择服务来传达两个视图,如此处所述 http://www.eclipse.org/articles/Article-WorkbenchSelections/article.html

如果是这种情况,您实际上不必保存选择,因为在选择时会即时计算结果(这是选择服务的整个目的)

但是,如果您仍然想要保留中间视图数据,您可以始终为持久化更改定义自己的自定义 XML 格式。然后在需要时重新加载它们。

(另一个选项是 Java 内置对象序列化,它可以将视图绑定的数据对象持久化到磁盘。)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接