/*
 * ThreadChange.java
 * Created on 10 mars 2008, 12:06
 * @author pit
 */

package gavegrave;

import java.awt.Color;
import java.util.Random;
import javax.swing.JLabel;

/** ThreadChange
 */
abstract class ThreadChange extends Thread{
    protected JLabel jlabel ; 
    protected Random random ; 
    protected int time ; 
    
    protected  static final int DEFAULT_BACKGROUND_TIME = 200 ; 
    protected  static final int DEFAULT_FOREGROUND_TIME = 1000 ; 
    private static final Color[] COLORS = {
        Color.BLACK, Color.BLUE, Color.CYAN, Color.DARK_GRAY, Color.GRAY, 
        Color.GREEN, Color.LIGHT_GRAY, Color.MAGENTA, Color.ORANGE, 
        Color.PINK, Color.RED, Color.WHITE, Color.YELLOW } ; 
    
    /** Creates a new instance of ThreadChange */
    ThreadChange(JLabel jlabel) {
        super() ; 
        this.jlabel = jlabel ;
        this.random = new Random() ; 
    }
    
    public void run() {
        super.run() ;
        while (true) {
            change() ;
            try {
                sleep(time);
            } catch (InterruptedException ex) {
                ex.printStackTrace();
            }
        }
    }
    
    protected Color nextColor() {
        return COLORS[random.nextInt(COLORS.length)] ;        
    }
    
    protected abstract void change() ; 
    
}
