Il pacchetto org.eclipse.jface.operations definisce le interfacce per operazioni che richiedono molto tempo che devono fornire indicatori di avanzamento o la possibilità per l'utente di annullare l'operazione.
Il run-time centrale della piattaforma definisce un'interfaccia comune, IProgressMonitor, che viene utilizzata per riportare all'utente lo stato di avanzamento mentre sono in corso operazioni che richiedono molto tempo. Il client può fornire un controllo come parametro in molti metodi API della piattaforma quando è importante mostrare all'utente lo stato di avanzamento.
JFace definisce interfacce più specifiche per oggetti che implementano l'interfaccia utente con un controllo di avanzamento.
IRunnableWithProgress è l'interfaccia per un'operazione con esecuzione prolungata. Il metodo run per questa interfaccia dispone di un parametro IProgressMonitor che viene utilizzato per riportare lo stato di avanzamento e verificare l'annullamento da parte dell'utente.
IRunnableContext è l'interfaccia per le diverse posizioni, all'interno dell'interfaccia utente, in cui può essere riportato lo stato di avanzamento. Le classi che implementano questa interfaccia potrebbero scegliere di utilizzare tecniche diverse per la visualizzazione dell'avanzamento e l'esecuzione dell'operazione. Ad esempio, ProgressMonitorDialog implementa questa interfaccia visualizzando una finestra di avanzamento. IWorkbenchWindow implementa questa interfaccia visualizzando l'avanzamento sulla riga di stato della finestra del workbench. WizardDialog implementa questa interfaccia per visualizzare le operazioni con esecuzioni prolungate all'interno della riga di stato della procedura guidata.
Nota: l'interfaccia utente del workbench fornisce un supporto supplementare per operazioni in WorkspaceModifyOperation. Questa classe semplifica l'implementazione di operazioni con esecuzioni prolungate che modificano l'area di lavoro. Tale classe esegue il mapping tra IRunnableWithProgress e IWorkspaceRunnable. Per ulteriori dettagli, consultare la javadoc.
La classe ModalContext viene fornita per eseguire un'operazione modale dalla prospettiva del codice del client. Viene utilizzata all'interno di diverse implementazioni di IRunnableContext. Se il plug-in deve attendere il completamento di un'operazione che richiede molto tempo prima di poter continuare l'esecuzione, è possibile utilizzare ModalContext per compiere questa operazione continuando a ricevere le risposte dell'interfaccia utente.
Quando si esegue un'operazione in un contesto modale, è possibile scegliere di deviare l'operazione in un thread diverso. Se il valore di fork corrisponde a false, l'operazione verrà eseguita nel thread di richiamo. Se fork ha un valore true, l'operazione verrà eseguita in un nuovo thread, il thread di richiamo verrà bloccato e il ciclo di eventi dell'interfaccia utente verrà eseguito fino al termine dell'operazione.
Per ulteriori informazioni sul ciclo di eventi dell'interfaccia utente, fare riferimento a Problemi di threading per client.