Una classe e una semplice interfaccia che consentono di controllare una Progress Bar senza dover stare a definire ogni volta timer e cose simili.
Cominciamo dall'interfaccia, che non ha bisogno di commenti. E' richiesto che il task fornisca lo stato iniziale, attuale e finale dell'operazione.
codice:
/*
* DeKTaskObserver.java
*
* Created on 5 aprile 2005, 22.17
*/
package dek;
/**
* La classe che implementa <code>DeKTaskObserver</code> si
* impegna a fornire informazioni sullo stato di avanzamento
* di un task in esecuzione nel suo contesto.
* In particolare, una chiamata a <code>taskStatus()</code> mentre
* il task non e' ancora iniziato dovrebbe equivalere a
* <code>taskStatus(Bounds.MIN)</code>, mentre una chiamata a
* task completato dovrebbe equivalere a <code>taskStatus(Bounds.MAX)</code>
* Cio' potrebbe essere difficile da ottenere, nel senso che lo
* stato di task completato potrebbe coincidere con quello di
* task (successivo) non ancora iniziato.
*
* @author DeK
*/
public interface DeKTaskObserver {
/**
* Costanti per indicare il valore iniziale e finale
* dello stato del task.
*/
enum Bounds {MIN, MAX};
/**
* Ritorna lo stato attuale del task sottoforma di un valorei intero.
* Il valore dovra' essere compreso fra i due estremi
* ritornati dall'altro metodo:
* @see #taskStatus(Bounds)
*/
public int taskStatus();
/**
* Ritorna il valore iniziale (MIN) o finale (MAX)
* dello stato del task.
* Dovra' essere: <code>taskStatus(Bounds.MIN) <= taskStatus(Bounds.MAX)</code>
* Un'implementazione standard puo' essere ottenuta ritornando
* 0 per il minimo e 100 per il massimo:
* <code>return (b==Bounds.MIN)? 0 : 100;</code>
*/
public int taskStatus (Bounds b);
}