在Eclipse RCP saveAndRestore中仅还原少量视图

时间:2013-10-31 00:31:58

标签: java eclipse eclipse-rcp rcp

我们有一个内部Eclipse RCP应用程序,它只有视图而没有编辑器。

我们在WorkBenchAdvisor中使用Eclipse saveAndRestore API来保存和恢复工作台状态。它按预期工作。

我们根据用户权限控制视图的显示。

让我们说该应用程序有2个用户;经理&一名员工。如果Manager登录,将显示所有视图,如果Employee登录,则将禁止某些视图。到目前为止一切都很好。

让我们说管理员登录并打开他的所有视图并关闭应用程序。员工现在登录同一台计算机。现在问题是,由于eclipse恢复了工作台状态,员工没有权限的视图也正在恢复。

是否有eclipse提供的占位符,我们可以检查用户对已恢复视图的权限,而不是相应地显示这些视图?

请告知如何解决此问题。

使用WorkBenchAdvisor中打开的登录对话框完成用户身份验证。

使用的Eclipse版本:3.7

感谢您的帮助。

由于

2 个答案:

答案 0 :(得分:2)

当您将视图状态保留到纪念品中时,请存储一些有关谁可以查看视图的其他信息。对于您视图中的覆盖saveState(IMemento memento)。之后,您可以在加载所有内容时强制关闭不相关的视图(查看WorkbenchWindowAdvisor中的方法)。

另一种可能性是在PartInitException方法中抛出init。这仍然会打开带有错误消息的视图,您提供了(例如,“没有打开此视图的权限”)而不是内容。

答案 1 :(得分:2)

restorable扩展点的view定义中有org.eclipse.ui.views个标记。这允许您说在开始期间永远不应该恢复视图。