O pacote org.eclipse.jface.operations define interfaces para as operações de longa execução que precisam de indicadores de progresso ou permitem que o usuário cancele a operação. Essas interfaces são utilizadas na implementação dos diálogos e visualizações de progresso do workbench.
Em geral, plug-ins devem utilizar o suporte do workbench fornecido no IProgressService para executar operações longas, de forma que todos os plug-ins tenham uma apresentação consistente do progresso. Consulte Suporte de Simultaneidade do Workbench para obter uma discussão completa do suporte disponível para diálogos e visualizações de progresso. O restante desta discussão realça os detalhes da infra-estrutura de operações JFace que é utilizada pelo workbench.
O tempo de execução da plataforma define uma interface comum, IProgressMonitor, que é utilizada para relatar o progresso para o usuário enquanto as operações de longa execução estão em progresso. O cliente pode fornecer um monitor como um parâmetro em muitos métodos API de plataforma quando for importante mostrar o progresso ao usuário.
O JFace define as interfaces mais específicas para objetos que implementam a interface com o usuário para um monitor de progresso.
IRunnableWithProgress é a interface para uma operação com longa execução. O método run dessa interface possui um parâmetro IProgressMonitor que é utilizado para informar o progresso e verificar o cancelamento feito pelo usuário.
IRunnableContext é a interface para os diferentes lugares na UI onde o progresso pode ser relatado. As classes que implementam essa interface podem escolher utilizar técnicas diferentes para mostrar o progresso e executar a operação. Por exemplo, ProgressMonitorDialog implementa essa interface mostrando um diálogo de progresso. IWorkbenchWindow implementa essa interface mostrando o progresso na linha de status da janela do workbench. WizardDialog implementa essa interface para mostrar operações com longo tempo de execução dentro da linha de status do assistente.
Nota: A UI do workbench fornece suporte adicional para operações em WorkspaceModifyOperation. Essa classe simplifica a implementação de operações de longa duração que modificam o espaço de trabalho. Ela é mapeada entre IRunnableWithProgress e IWorkspaceRunnable. Consulte o javadoc para obter detalhes adicionais.
A classe ModalContext é fornecida para executar uma operação de modo a partir da perspectiva do código do cliente. Ela é utilizada dentro das diferentes implementações de IRunnableContext. Se seu plug-in precisar aguardar a conclusão de uma operação com longo tempo de execução antes de continuar a execução, ModalContext poderá ser utilizado para realizar isso ao mesmo tempo que mantém a interface com o usuário respondendo.
Quando escutar uma operação em um modo complexo, é possível escolher bifurcar a operação em um encadeamento diferente. Se fork for falso, a operação será executada no encadeamento que a chamou. Se fork for verdadeiro, a operação será executada em um novo encadeamento, o encadeamento que a chamou será bloqueado e o loop de eventos da UI será executado até que a operação termine.
Para obter mais informações sobre o loop de evento da UI, consulte Problemas de encadeamento para clientes.