O pacote org.eclipse.jface.operations define interfaces para operações de longa execução que impliquem indicadores de progresso ou permitam o cancelamento da operação por parte do utilizador. Estas interfaces são utilizadas na implementação de caixas de diálogo e vistas de progresso da área de trabalho.
Regra geral, os plug-ins devem utilizar o suporte de área de trabalho fornecido em IProgressService para operações de longa execução, de modo a que todos os plug-ins tenham uma apresentação de progresso coerente. Consulte Suporte de Simultaneidade de Área de Trabalho para ver uma abordagem completa ao suporte disponível para caixas de diálogo e vistas de progresso. O resto desta abordagem destaca os detalhes da infra-estrutura de operaçõesJFace que é utilizada pela área de trabalho.
O tempo de execução da plataforma defines uma interface comum, IProgressMonitor, a qual é utilizada para reportar progresso ao utilizador enquanto decorrem operações de longa execução. O cliente pode facultar um supervisor como parâmetro em muitos métodos de API de plataforma, quando for importante mostrar progresso ao utilizador.
O JFace define interfaces mais específicas para objectos que implementem a interface de utilizador para um supervisor de progresso.
IRunnableWithProgress é a interface para uma operação de longa execução. O método run para esta interface tem um parâmetro IProgressMonitor que é utilizado para reportar progresso e verificar cancelamentos de utilizador.
IRunnableContext é a interface para os diferentes sítios na UI em que se pode reportar progresso. As classes que implementam esta interface podem optar por utilizar técnicas diferentes para mostrar progresso e executar a operação. Por exemplo, ProgressMonitorDialog implementa esta interface mostrando uma caixa de diálogo de progresso. IWorkbenchWindow implementa esta interface mostrando progresso na linha de estado da janela da área de trabalho. WizardDialog implementa esta interface para mostrar operações de longa execução na linha de estado do assistente.
Nota: A UI da área de trabalho faculta suporte adicional para operações em WorkspaceModifyOperation. Esta classe simplifica a implementação de operações de longa execução que modifiquem o espaço de trabalho. Correlaciona IRunnableWithProgress com IWorkspaceRunnable. Consulte o javadoc para mais detalhes.
A classe ModalContext é facultada para executar uma operação que é modal na perspectiva do código do cliente. É utilizada dentro das diferentes implementações de IRunnableContext. Se o seu plug-in tiver de esperar pela conclusão de uma operações de longa execução antes de prosseguir execução, pode ser utilizado o ModalContext para concretizar enquanto se mantém a interface de utilizador a responder.
Quando se executa uma operação em contexto modal, pode optar-se por ramificar (fork) a operação num módulo diferente. Se fork for falso, a operação será executada no módulo de chamada. Se fork for true, a operação será executada em novo módulo, o módulo de chamada será bloqueado e o ciclo de eventos da UI será executado até que a operação termine.
Para mais informações sobre o ciclo de eventos da UI, consulte Questões de módulos para clientes.