恢复一个RCP视图,同时恢复另一个

时间:2011-11-11 11:08:55

标签: eclipse-plugin eclipse-rcp

我的应用程序中的两个视图需要在恢复状态时加载相同的信息。我的想法是,为避免保存两次,让一个视图在initcreatePartControl中创建另一个视图(如果尚未创建)。但是,

PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView(...)

不起作用,因为getActivePage()返回null。有可能解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

委托经理或服务加载/维护/保存共享状态。这将确保第一次访问初始化您的信息。实例化视图时,只需转到管理器并检索信息即可。如果用户从未实例化您的视图,那么您就不必进行额外的工作。

在一般情况下,您无法在创建/激活另一个视图时创建/实例化一个视图。 Eclipse将不允许它,并将在错误日志中生成错误。

编辑:

我见过的3种标准持久性模式(和/或误用:-)是:

1)让你的插件获得它的状态位置,然后简单地序列化你的状态。 (如果您继承org.eclipse.core.runtime.Plugin,则免费提供的位置)您可以在激活器stop(BundleContext)方法中执行此操作。如果您还没有解决方案,可以使用org.eclipse.ui.XMLMemento之类的类来序列化到XML或从XML序列化。

2)如果您继承org.eclipse.ui.plugin.AbstractUIPlugin,则可以使用org.eclipse.ui.plugin.AbstractUIPlugin.getDialogSettings()来存储您的州。可能有点笨重,因为你必须保持它是最新的。

3)让您的公共管理器更新首选项,可能使用其他序列化技术。