Operações de Longa Execução

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 ambiente de trabalho.

Em geral, plug-ins devem utilizar o suporte do ambiente de trabalho 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 Ambiente de Trabalho 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 ambiente de trabalho.

Executáveis em progresso

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 ambiente de trabalho.  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 ambiente de trabalho 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.

Operações de modo

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.