我在我的RCP应用程序中有两个视图,其中我正在执行一个任务(后台操作),操作的状态显示在view1中。我试图实现的是,在任务执行过程中,用户不应该能够移动/遍历到其他views.They(其他视图)应该被禁用。
作为变通办法,我尝试使用IWorkbenchPage的showView方法。
activePage.showView(view.ID,null,IWorkbenchPage.VIEW_VISIBLE);我使用了三个常量VIEW_VISIBLE,VIEW_ACTIVATE,VIEW_CREATE。在我的例子中,没有一个像showView方法签名那样工作,我不知道什么是第二个id。
下面是我的问题的模拟演示

在这里,用户可以在操作过程中遍历查看Demo,这实际上不应该是。我该如何解决这个问题,有什么想法吗?
发布于 2012-05-24 16:20:50
你不能真的禁用一个视图(没有“禁用的视图”的概念)。你唯一能做的就是隐藏它。使用hideView()方法可以做到这一点。
发布于 2012-05-24 16:33:37
另一种方法是在操作进行时使用ProgressService显示模式进度对话框。这样,用户必须等到操作完成后才能与UI交互。
PlatformUI.getWorkbench().getProgressService().run(true, false, runnable); 请参阅http://wiki.eclipse.org/FAQ_Why_should_I_use_the_new_progress_service%3F
发布于 2012-05-26 16:59:32
您可以像禁用任何其他SWT控件一样禁用视图:通过在顶部Composite上设置setEnabled(false)。通常通过重写ViewPart.showBusy(...)来完成。
https://stackoverflow.com/questions/10733586
复制相似问题