Долго выполняемые операции

В состав пакета org.eclipse.jface.operations входят определения интерфейсов, предназначенных для обработки долго выполняющихся операций. Для таких операций могут потребоваться индикаторы состояния, а также возможность отмены пользователем. Эти интерфейсы применяются в реализации окон диалога и панелей состояния рабочей среды.

В общем случае для работы с долго выполняемыми операциями модули должны использовать поддержку рабочей среды, предусмотренную в IProgressService. Такой подход позволяет обеспечить согласованное представление состояния. Полное описание доступной поддержки окон диалога и панелей состояния приведено в разделе Поддержка параллелизма в рабочей среде. Остальная часть этого раздела посвящена особенностям инфраструктуры операций JFace, которая применяется в рабочей среде.

Выполняемые операции и состояние выполнения

Среда выполнения платформы задает общий интерфейс IProgressMonitor, позволяющий пользователю получить сведения о состоянии долго выполняемой операции. Многие методы API платформы в качестве параметра поддерживают монитор, обеспечивающий отображение состояния пользователю.

В среде JFace предусмотрены более конкретные интерфейсы для объектов, реализующих пользовательский интерфейс монитора состояния.  

Интерфейс IRunnableWithProgress обеспечивает поддержку долго выполняемых операций. Метод run, входящий в состав этого интерфейса, поддерживает параметр IProgressMonitor, позволяющий отслеживать состояние выполнения и действия пользователя.

Интерфейс IRunnableContext предназначен для различных компонентов пользовательского интерфейса, поддерживающих состояние выполнения. Классы, реализующие этот интерфейс, могут выбрать различные способы отображения состояния и выполнения операции. Например, в классе ProgressMonitorDialog этот интерфейс реализован путем вывода окна диалога состояния выполнения. В классе IWorkbenchWindow он реализован путем отображения состояния выполнения в строке состояния окна рабочей среды. В классе WizardDialog он реализован таким образом, что долго выполняемые операции отображаются в строке состояния мастера.

Примечание: Пользовательский интерфейс рабочей среды предоставляет расширенную поддержку операций в WorkspaceModifyOperation. Этот класс упрощает реализацию долго выполняемых операций, которые вносят изменения в рабочую область. Он обеспечивает соответствие между IRunnableWithProgress и IWorkspaceRunnable. Дополнительная информация приведена в документации по Java.

Модальные операции

Класс ModalContext применяется для выполнения операций, которые с точки зрения исходного кода клиента являются модальными. Он применяется в составе различных реализаций IRunnableContext. Если перед продолжением работы модуль должен дождаться завершения долго выполняемой операции, воспользуйтесь классом ModalContext, который позволяет при этом сохранить доступ к пользовательскому интерфейсу.

Выполнение операции в модальном контексте предусматривает ее разветвление в другую нить. В случае сбоя метода fork операция будет выполнена в исходной нити. Если метод fork выполнен успешно, операция будет запущена в новой нити; исходная нить будет блокирована и до ее завершения будет выполняться цикл событий пользовательского интерфейса.   

Дополнительная информация о цикле событий пользовательского интерфейса приведена в разделе Особенности работы с несколькими нитями для клиентов.