長期に渡る運用

org.eclipse.jface.operations パッケージは、進行状況表示が必要な、あるいはユーザーが操作をキャンセルできる、 長期に渡る運用のためのインターフェースを定義しています。 これらのインターフェースは、ワークベンチ進行ダイアログおよびビューの実装で使用されます。

一般的に、プラグインは、実行が長い操作のために IProgressService で提供されたワークベンチ・サポートを使用して、すべてのプラグインが一貫性のある進行表示を行うようにする必要があります。 進行ダイアログおよびビューの使用可能なサポートの詳細な説明については、『Workbench Concurrency Support』を参照してください。 この説明の残りの部分では、ワークベンチにより使用される JFace 操作インフラストラクチャーの詳細に焦点をあてます。

実行可能および進行状況

プラットフォームのランタイムは、共通のインターフェース IProgressMonitor を定義しています。 これは、長期に渡る運用中に、ユーザーに進捗を報告するために使用されます。 クライアントは、ユーザーに進行状況を表示することが重要な場合には、 多くのプラットフォーム API のメソッドでパラメーターとしてモニターを提供することができます。

JFace は、進行状況をモニターするためのユーザー・インターフェースをインプリメントしているオブジェクトに対して、 さらに具体的なインターフェースを定義しています。 

IRunnableWithProgress は、 長期に渡る運用のためのインターフェースです。  このインターフェースの実行メソッドは、 IProgressMonitor パラメーターを 持っています。これは、進行状況を報告し、ユーザーからのキャンセルがないかをチェックするために使用されます。

IRunnableContext は、 進行状況を報告することができる、UI 内のさまざまな場所におけるインターフェースです。  このインターフェースを実装するクラスは、別の手法を使用して、進行状況を表示し、操作を実行することができます。  例えば、ProgressMonitorDialog は、 進行状況ダイアログを表示することにより、このインターフェースを実装しています。  IWorkbenchWindow は、 ワークベンチ・ウィンドウの状況表示行に進行状況を表示することにより、このインターフェースを実装しています。  WizardDialog は、 ウィザード内の状況表示行の内部に長期に渡る運用を表示するためのインターフェースを実装しています。

注: ワークベンチ UI には、WorkspaceModifyOperation の操作に関する追加サポートが備わっています。 このクラスを使用すると、ワークスペースを変更する長時間の操作の実装を、単純にすることができます。このクラスは、IRunnableWithProgressIWorkspaceRunnable の間でマップを行います。詳しくは、javadoc を参照してください。 

モーダル操作

ModalContext クラスは、 クライアント・コードの観点からはモーダルである操作を実行するために提供されています。 これは、IRunnableContext の さまざまな実装内部で使用されます。  プラグインが、長期に渡る運用が終了するまで待機してから、実行を継続する必要がある場合には、 ModalContext を使用すると、 ユーザー・インターフェースが応答できるようにしたまま、待機することができます。

モーダル・コンテキストで操作を実行すると、別のスレッドで操作を fork するようにできます。 fork が偽の場合、操作は呼び出し側のスレッドで実行されます。  fork が真の場合は、操作は新しいスレッドで実行され、呼び出し側のスレッドはブロックされ、 UI のイベント・ループは、操作が終了するまで実行されます。   

UI のイベント・ループの詳細については、『スレッド化の問題』を参照してください。