在Eclipse中显示但禁用视图
我在我的RCP应用程序中有两个视图,其中我正在执行任务(后台操作),操作的状态显示在视图1中。 我试图实现的是,在进行中的任务期间,用户不应该移动/遍历其他视图。他们(其他视图)应该被禁用。
作为一种解决方法,我尝试使用IWorkbenchPage的showView方法。
activePage.showView(view.ID,null,IWorkbenchPage.VIEW_VISIBLE);
我已经使用了三个常量VIEW_VISIBLE,VIEW_ACTIVATE,VIEW_CREATE。 没有在我的情况下工作。顺便说一句showView方法签名,我无法弄清楚什么是辅助ID。
以下是我的问题的模拟演示
这里用户可以遍历来查看演示,在操作过程中,这不应该是实际的。 我该如何解决这个问题,有什么想法?
你不能真正禁用视图(没有“禁用视图”的概念)。 你唯一能做的就是隐藏它。 使用hideView()方法来做到这一点。
另一种做法是使用ProgressService
在操作正在进行时显示模态进度对话框。 这样用户必须等到操作完成才能与UI交互。
PlatformUI.getWorkbench().getProgressService().run(true, false, runnable);
请参阅http://wiki.eclipse.org/FAQ_Why_should_I_use_the_new_progress_service%3F
您可以像禁用任何其他SWT控件一样禁用视图:通过在顶部Composite
上设置setEnabled(false)
。 通常通过覆盖ViewPart.showBusy(...)
...