我的RCP应用程序中有两个视图,其中我正在执行任务(后台操作),操作的状态显示在view1中。我想要实现的是,在正在进行的任务中,用户不应该移动/遍历到其他视图。应该禁用其他视图。
作为一种解决方法,我尝试使用IWorkbenchPage的showView方法。
activePage.showView(view.ID,null,IWorkbenchPage.VIEW_VISIBLE);
我使用了三个常量VIEW_VISIBLE,VIEW_ACTIVATE,VIEW_CREATE。虽然没有在我的情况下工作。通过showView方法签名的方式,我无法弄清楚什么是次要ID。
以下是我的问题的模拟演示
这里用户可以遍历以在操作期间查看Demo,这不应该是实际的。 我怎么能解决这个问题,请问任何想法?
答案 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(...)
...