org.eclipse.jface.operations 包为需要进度指示器或允许用户取消操作的长时间运行的操作定义接口。将在工作台进程对话框和视图的实现中使用这些接口。
通常,插件应将 IProgressService 中提供的工作台支持用于长时间运行的操作,以便所有插件都将具有一致的进度表示。有关进度对话框和视图的可用支持的完整讨论,请参阅工作台并行支持。此讨论的其余部分重点描述了由工作台使用的 JFace 操作基础结构的详细信息。
平台运行时定义常见接口 IProgressMonitor,在运行长时间运行的操作时,它用来向用户报告进度。在为用户显示进度很重要的情况下,客户可以提供监视器来作为许多平台 API 方法中的参数。
JFace 为实现进度监视器的用户界面的对象定义了多个特定接口。
IRunnableWithProgress 是用于长时间运行的操作的接口。此接口的运行方法具有 IProgressMonitor 参数,该参数用来报告进度并检查用户的取消操作。
IRunnableContext 是用户界面中可报告进度的不同位置的接口。实现此界面的类可选择使用不用技巧来显示进度和运行操作。例如,ProgressMonitorDialog 通过显示进度对话框来实现此界面。IWorkbenchWindow 通过在工作台窗口的状态行中显示进度来实现此界面。WizardDialog 实现此界面以在向导状态行中显示长时间运行的操作。
注意:工作台用户界面为 WorkspaceModifyOperation 中的操作提供了附加支持。这个类简化了长时间运行的修改工作空间的操作的实现。它在 IRunnableWithProgress 与 IWorkspaceRunnable之间进行映射。要了解更多详细信息,请参阅 Javadoc。
提供 ModalContext 类用来运行客户机代码的透视图中是模态的操作。它用于 IRunnableContext 的不同实现。如果插件需要等待长时间运行的操作完成才能继续执行,则可以使用 ModalContext 来完成此任务,并且仍然让用户界面保持响应。
在模态上下文中运行操作时,可以选择将该操作分配到不同的线程中。如果 fork 为 false,则操作将在调用的线程中运行。如果 fork 为 true,则操作将在新线程中运行,调用线程将停止,并且运行用户界面事件循环,直到该操作终止为止。
有关用户界面事件循环的更多信息,请参阅客户的线程问题。