首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Eclipse在视图关闭时调用ViewPart saveState

Eclipse在视图关闭时调用ViewPart saveState
EN

Stack Overflow用户
提问于 2012-02-28 05:06:14
回答 3查看 1.7K关注 0票数 4

我有一个Eclipse插件,它使用了扩展ViewPart的视图。ViewPart有一个需要IMementosaveState方法。

我将我的代码添加到saveState和相应的init方法中,它就可以工作了。不幸的是,只有在整个工作区关闭时才会调用saveState。我的观点并不是很重要,我可以期待它一直都是开放的。因此,如果在视图关闭时调用saveState将会很酷。

我发现了一个视图部分的监听器,意思是对视图关闭做出反应,但我不明白的是IMemento是从哪里来的。我从哪里获得在工作空间闭包上使用的memento对象?或者,如果视图被(重新)打开,我必须将自己的memento对象存储在哪里,才能使视图部件在init方法中使用它?

代码语言:javascript
复制
@Override
public void saveState(IMemento memento) {
    super.saveState(memento);
    memento = memento.createChild(MEMENTO_GUI_STATE);
    memento.putBoolean(MEMENTO_IS_FLAT, !isHierarchicalModeActive());
    memento.putBoolean(MEMENTO_IS_CATEGORY_MODE_ACTIVE, comboViewer.isVisible());
}

这是我的saveState --我可以告诉我的视图每次视图关闭时调用它吗?

EN

回答 3

Stack Overflow用户

发布于 2012-04-23 19:13:34

看看Eclipse常见问题解答中的这个question

存储视图状态有两种常见的方式,这取决于您是希望在工作台会话之间还是跨视图调用来存储设置。这些工具中的第一个可以直接在IViewPart上找到。当工作台关闭时,将在所有打开的视图上调用saveState方法。

另一种持久化视图状态的机制是JFace IDialogSettings工具。与视图保存/初始化机制相比,对话框设置的优点是您可以控制何时保持设置。只有当您的视图在工作台关闭时处于打开状态时,才会调用saveState方法,因此当用户关闭视图时,该方法对于存储视图状态没有什么用处。另一方面,对话框设置可以随时更改和保留。

转到另一个questionEclipse documentation本身以获取设置机制。

票数 4
EN

Stack Overflow用户

发布于 2012-02-28 06:49:56

这可能“有点”难看,但我没有想到其他的东西:将memento变量存储为字段变量,在init(IViewSite site, IMemento memento)方法中初始化它,覆盖dispose()并显式地调用saveState(IMemento memento)

票数 2
EN

Stack Overflow用户

发布于 2012-03-06 05:39:15

您可以随时从org.eclipse.core.runtime.Plugin.getStateLocation()读取和写入您自己的XMLMemento。正如@BelaViser提到的,您可以在IViewPart#dispose()方法中编写文件,并在视图构造函数中读取它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9472279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档