gpt4 book ai didi

java - 如何使用 EMF 保存 View 零件

转载 作者:行者123 更新时间:2023-12-02 13:40:42 26 4
gpt4 key购买 nike

我正在开发一个 Eclipse RPC 项目。我需要保存和恢复所有 View 的所有内容。我没有在我的项目中使用 EMF,因此我无法使用所有 EMF API。

现在我可以使用的是IMementoIViewPart 有一个 saveState 方法,以 IMemento 作为参数。

我正在调用 saveState() 并尝试将其置于 View 中。

示例代码:

@Override
public void saveState(IMemento memento) {
ColorBarModel model = _multiColorBarContainer.getColorBar().getColorBarUIModel().getModel();
boolean isCutOff = _multiColorBarContainer.getColorBar().getColorBarUIModel().isCutOffEnabled();
String colorMapName = model.getColorMap().getColorMapName();
memento.putString("colorMapName", model.toString());
memento.createChild("colorMapName1", model.toString());
String selectionsMomento = memento.getString("colorMapName");
IStructuredSelection ss = new StructuredSelection(memento.getChild("colorMapName1"));
}

我需要保存作为类引用的模型(ColorBarModel.java 是我的 View 的模型),以便我可以保存模型状态并在调用时恢复它。

IMemento只提供putString()createChild()方法

有人可以指导我如何通过 IMemento 保存类对象并在需要时恢复它吗?

我能够保存该类的引用 ID,但我不确定如何通过 referenceId 以字符串形式获取该类的属性和行为。

是否可以以某种方式获取它?

最佳答案

如果您想保存大量数据,您应该将其放入插件状态位置。你可以通过以下方式得到:

IPath path = Platform.getStateLocation(bundle);

bundle 是插件的 Bundle 类。您可以从传递给插件 Activator 的 BundleContext 或使用

获取此信息
Bundle bundle = Platform.getBundle("plugin id");

状态位置位于工作区 .metadata/.plugins 目录中。只需使用普通的 Java 文件 I/O 操作即可在该位置读写数据。

关于java - 如何使用 EMF 保存 View 零件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22787018/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com