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) &lt;= 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);
    
}