import RandomBoard;
import ColorCell;
import java.awt.Graphics;
import java.awt.Color;

/**
  時間ごとにランダムに色を表示する BlinkBoard クラス
 */
public class BlinkBoard extends RandomBoard implements Runnable {

       Thread paintThread=null;    // 表示をコントロールするスレッド
       public int interval;        // 時間間隔（ミリ秒単位）

    /**
     初期設定の関数。時間間隔を設定。
     */
       public void init() {

             super.init();    // 親のクラスで定義された処理

          // 変化の時間間隔をパラメータから得る

             try {
                interval = getIntValue( "interval" );
             }
             catch( NoValueException e ) {
                 interval = 800;
             }
             if( interval < 30 || interval > 5000 ) interval = 800;
       }

    /** 
     アプレットの表示（初期状態）を行う関数。
     */
       public void paint( Graphics g ) {

              super.paint( g );   // 親のクラスで定義された処理 
       }

    /**
     アプレットの表示の変更を行う関数。
     */
       public void update( Graphics g ) {
 
              super.paint( g );   // 親のクラスで定義された処理 
       }

    /**
     アプレットが続行する作業
     */
       public void run() {
 
             while( paintThread.isAlive() ) {
                  repaint();
                  try {
                       Thread.sleep(interval);     //一時停止
                  }
                  catch ( InterruptedException e ){}
             }       
       }
 
    /**
     アプレットが画面に現れた時に呼び出される。
     */
       public void start() {
 
             if( paintThread == null ) {
                   paintThread = new Thread(this);
                   paintThread.start();          //スレッド起動
             }       
       }
 
    /**
     アプレットが画面から消えた時に呼び出される。
     */
       public void stop() {
 
             if( paintThread != null ) {
                   paintThread.stop();           //スレッド停止
                   paintThread = null;           //スレッド消去
             }       
       }
}

