import SimpleBoard;
import awt.Graphics;
import awt.Color;

/**
  看板にメッセージを表示する MessageBoard クラス
 */
class MessageBoard extends SimpleBoard implements Runnable {

       Thread slideThread=null;         // 画像の移動を行うスレッド
       protected int x=0;               // メッセージのアプレット内の位置
       protected String message=null;   // メッセージの内容
       protected int messageWidth;      // メッセージの横幅

       protected int left, top;         // メッセージの左端と上端の位置

    /**
     初期設定の関数。アプレットのサイズを設定。
     */
       protected void init() {

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

             message = getAttribute( "value" );
             if( message == null )
                  message = "ようこそ稚内北星学園短期大学へ";
             messageWidth = font.stringWidth( message ) * 4 / 3;

             left = ( width - messageWidth/2 )/2;
             top = height/2;
             resize( width, height );
       }

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

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

             g.setForeground( Color.black );
             g.paint3DRect( left, top-18, messageWidth/2, 36, true, false );
       }

    /**
     アプレットの表示の変更を行う関数。
     */
       public void update( Graphics g ) {
 
             g.setForeground( Color.black );
             g.paint3DRect( left, top-18, messageWidth/2, 36, true, false );
             g.setForeground( Color.yellow );
             g.clipRect( left, top-18, messageWidth/2, 36 );
             g.drawString( message, left + x, top+10 );
             g.drawString( message, left + x + messageWidth, top+10 );
       }

    /**
     アプレットが続行する作業
     */
       public void run() {
 
             while( slideThread.isAlive() ) {
                  repaint();
                  x-=6;
                  if( x + messageWidth < 0 ) x=0;
                  Thread.sleep(200);            //一時停止200ミリ秒
             }       
       }
 
    /**
     アプレットが画面に現れた時に呼び出される。
     */
       protected void start() {
 
             if( slideThread == null ) {
                   slideThread = new Thread(this);
                   slideThread.start();          //スレッド起動
             }       
       }
 
    /**
     アプレットが画面から消えた時に呼び出される。
     */
       protected void stop() {
 
             if( slideThread != null ) {
                   slideThread = null;           //スレッド停止
             }       
       }
}

