ECLIPSE E4 - 保存工作区状态

时间:2014-12-17 14:56:17

标签: java eclipse rcp e4

嘿伙计们,我想处理持久化数据,以便在退出前保存我的应用程序状态。好吧,为了试一试,我在MPART中创建了一个脏对象,然后添加了一个链接到菜单项的保存处理程序。

这是: MPART:

txtInput.addModifyListener(new ModifyListener() {
                @Override
                public void modifyText(ModifyEvent e) {
                    dirty.setDirty(true);
                }
            });

处理程序:

@Execute
public void execute(EPartService partService) {
    partService.saveAll(false);
} 

最后,我还从正在运行的配置中删除了-clearpersistedstate参数,但每次启动我的应用程序时,它都不会保存MPART中的更改,而只会在透视级别更改。例如:如果MPART已关闭执行后,它将保持关闭状态。

任何提示?

2 个答案:

答案 0 :(得分:1)

EPartService.saveAll只调用部件中带@Persist注释的任何方法。无论如何,当工作区关闭时,这将自动完成。

注意:必须将部件标记为脏,才能调用@Persist方法。

因此,要保存零件中的任何细节,您需要一种方法:

@Persist
void save()
{
  ... save your data somewhere
}

再次创建零件时,您必须从保存的数据中加载数据。

保存数据的一个地方是MPart持久状态 - 通过以下方式访问:

Map<String, String> persistedState = part.getPersistedState();

您可以在此地图中保存字符串值。

所以:

@Persist
void save(MPart part)
{
   Map<String, String> persistedState = part.getPersistedState();

   persistedState.put("key for my value", "my value");
}

并使用以下命令检索它:

@PostConstruct
void createPart(MPart part)
{
   Map<String, String> persistedState = part.getPersistedState();

   String myValue = persistedState.get("key for my value");
}

答案 1 :(得分:0)

格雷格 我已经理解了如何使用Map类型,但我没有理解我的Map变量如何成为&#34; persistent&#34;。我的实现如下:

persistedState = part.getPersistedState();
        System.out.println(persistedState.get("1"));

...

@Persist
    public void save() {
        dirty.setDirty(false);
persistedState.put("1", "test1");
}

当我退出应用程序时,显然不起作用,我仍然想念最后一块拼图。 它是否与Preference Store /写入包含我的东西的文件有关?