0

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

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

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

我使用了三个常量 VIEW_VISIBLE、VIEW_ACTIVATE、VIEW_CREATE。不过,在我的情况下没有一个工作。顺便说一下,在 showView 方法签名中,我无法弄清楚什么是辅助 id。

下面是我的问题的模拟演示 在此处输入图像描述

这里用户可以遍历查看Demo,运行过程中,其实不应该。我该如何解决这个问题,请问有什么想法吗?

4

3 回答 3

3

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

于 2012-05-24T08:20:49.543 回答
2

另一种方法是在操作进行时使用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-24T08:33:37.487 回答
1

您可以像禁用任何其他 SWT 控件一样禁用视图:通过设置setEnabled(false)top Composite。通常通过覆盖来完成ViewPart.showBusy(...)...

于 2012-05-26T08:59:32.027 回答