在Eclipse-RCP中显示但禁用视图

时间:2012-05-24 08:13:37

标签: eclipse-plugin eclipse-rcp

我的RCP应用程序中有两个视图,其中我正在执行任务(后台操作),操作的状态显示在view1中。我想要实现的是,在正在进行的任务中,用户不应该移动/遍历到其他视图。应该禁用其他视图。

作为一种解决方法,我尝试使用IWorkbenchPage的showView方法。

activePage.showView(view.ID,null,IWorkbenchPage.VIEW_VISIBLE);

我使用了三个常量VIEW_VISIBLE,VIEW_ACTIVATE,VIEW_CREATE。虽然没有在我的情况下工作。通过showView方法签名的方式,我无法弄清楚什么是次要ID。

以下是我的问题的模拟演示 enter image description here

这里用户可以遍历以在操作期间查看Demo,这不应该是实际的。 我怎么能解决这个问题,请问任何想法?

3 个答案:

答案 0 :(得分:3)

你无法真正禁用视图(没有“禁用视图”的概念)。你唯一能做的就是隐藏它。使用hideView()方法来做到这一点。

答案 1 :(得分:2)

另一种方法是在操作进行时使用ProgressService显示模式进度对话框。这样,用户必须等到操作完成才能与UI进行交互。

PlatformUI.getWorkbench().getProgressService().run(true, false, runnable);  

请参阅http://wiki.eclipse.org/FAQ_Why_should_I_use_the_new_progress_service%3F

答案 2 :(得分:1)

您可以停用任何其他SWT控件的视图:在setEnabled(false)顶部设置Composite。通常通过覆盖ViewPart.showBusy(...) ...

来完成