このスレッド・モニターは中央管理されるオブジェクトで、スレッドはこれにアクティビティーを登録します。アクティビティーとはタスクのことで、それらの進捗についてもコントローラーに通知する必要があります。
このコントローラーで登録されたすべてのアクティビティー・リスナーは、あらゆるアクティビティーの進捗を順番に通知されます。 IlvThreadedActivityMonitorPanel は、そのような重要なリスナーの 1 つです。この Bean は、ユーザーに現在実行中のアクティビティーのフィードバックを提供します。「GUI Bean の使用」を参照してください。
このセクションで説明されているコードをすべて含む マップ・ビルダー のデモ用ソース・コードについては、
<installdir>
/jviews-maps89/samples/mapbuilder/index.html をご覧ください。
スレッド・アクティビティー・モニターへのアクセス
スレッド・アクティビティー・モニターには、以下を呼び出してアクセスできます。
IlvThreadedActivityMonitor mon = IlvThreadedActivityMonitorProperty.GetThreadedActivityMonitor(manager);
スレッド・アクティビティー情報の提供
ユーザーに、バックグラウンドで実行中のタスクに関する正しい情報を提供するためにアクティビティーを登録、更新、登録解除するのは各スレッドの責任です。
mon.updateActivityProgress(activityID,10,"doing something long"); ... do something long that takes 10% of total time... mon.updateActivityProgress(activityID,20,"doing another thing"); ...
アクティビティーの進捗を 100% に設定するか、アクティビティーを登録解除すると、現在モニターが管理している一覧からアクティビティーが削除されます。
オブジェクトのリスナーとしての登録
以下のようなコード行を使用すると、アクティビティー・モニターでの変更に、独自のオブジェクトをリスナーとして登録することもできます。
mon.addActivityListener(new IlvThreadedActivityMonitor.ActivityListener() { public void activityChanged(ActivityEvent e) { if(e.getEventType() == IlvThreadedActivityMonitor.ActivityEvent.ACTIVITY_REMOVED) { ... an activity just ended, do something. } });