Das Paket org.eclipse.jface.operations definiert Schnittstellen für lang andauernde Operationen, für die Statusanzeigefelder benötigt werden oder die der Benutzer während der Ausführung abbrechen können muss.
Die Laufzeit des Plattformkerns definiert eine gemeinsame Schnittstelle namens IProgressMonitor, mit der dem Benutzer bei lang andauernden Operationen Informationen zum Status gemeldet werden. In vielen API-Methoden der Plattform kann der Client ein Überwachungsprogramm als Parameter angeben, wenn es wichtig ist, dass der Benutzer Statusinformationen erhält.
JFace definiert spezifischere Schnittstellen für Objekte, die die Benutzerschnittstelle für eine Statusüberwachung implementieren.
IRunnableWithProgress ist die Schnittstelle für eine lang andauernde Operation. Die Methode run für diese Schnittstelle enthält einen Parameter IProgressMonitor , mit dem der Status gemeldet und der Abbruch durch den Benutzer geprüft wird.
IRunnableContext ist die Schnittstelle für die unterschiedlichen Stellen in der Benutzerschnittstelle, an denen der Status gemeldet werden kann. Klassen, die diese Schnittstelle implementieren, können zum Anzeigen des Statuswerts und zur Ausführung der Operation unterschiedliche Mechanismen verwenden. ProgressMonitorDialog beispielsweise implementiert diese Schnittstelle durch das Anzeigen eines Statusdialogs. Die Schnittstelle IWorkbenchWindow implementiert diese Schnittstelle, indem der Status in der Statuszeile der Workbench ausgegeben wird. Die Klasse WizardDialog wiederum implementiert diese Schnittstelle, um lang andauernde Operationen in der Statuszeile des Assistenten anzuzeigen.
Hinweis: Die Benutzerschnittstelle der Workbench bietet in der Klasse WorkspaceModifyOperation eine zusätzliche Unterstützung für Operationen. Diese Klasse vereinfacht die Implementierung von lang andauernden Operationen, die den Arbeitsbereich ändern. Sie nimmt eine Abgleichung zwischen IRunnableWithProgress und IWorkspaceRunnable vor. Weitere Einzelheiten finden Sie im Java-Dokument (javadoc).
Mit der Klasse ModalContext kann eine Operation ausgeführt werden können, die aus Sicht des Clientcodes modusabhängig ist. Sie wird in den unterschiedlichen Implementierungen der Schnittstelle IRunnableContext eingesetzt. Wenn Ihr Plug-in den Abschluss einer lang andauernden Operationen abwarten muss, bevor seine Ausführung fortgesetzt werden kann, können Sie dies über eine Klasse ModalContext erreichen und gleichzeitig die Empfangsbereitschaft der Benutzerschnittstelle aufrecht erhalten.
Wenn Sie eine Operation in einem modusabhängigen Kontext ausführen, können Sie die Operation in einen anderen Thread aufspalten lassen. Falls für die Aufspaltung "false" gilt, wird die Operation im aufrufenden Thread ausgeführt. Gilt für die Aufspaltung hingegen "true", wird die Operation in einem neuen Thread ausgeführt, der aufrufende Thread wird blockiert, und die Ereignisschleife der Benutzerschnittstelle wird ausgeführt, bis die Operation beendet wurde.
Weitere Informationen zur Ereignisschleife der Benutzerschnittstelle finden Sie unter Überlegungen zu Client-Threads.