/*
 * Created on 14.09.2004
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
package TUGLaby;


import java.awt.Graphics;
import java.awt.Image;
import javax.swing.JPanel;
import java.util.HashMap;

/**
 * @author user
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class CurrentSensorPanel extends JPanel {
    public final static int EMPTY_FLOOR = 0;
    public final static int FLOOR_1 = 1;
    public final static int FLOOR_2 = 2;
    public final static int FLOOR_3 = 3;
    public final static int STATE_COUNT = 4;
    private HashMap brick_images_;
    
    private int internal_state_;
    
    private Image current_image_;
    /**
     * 
     */
    public CurrentSensorPanel( HashMap brick_images ) {
        super();
        brick_images_ = brick_images;
        internal_state_ = EMPTY_FLOOR;
        current_image_ = (Image) brick_images_.get("EMPTY_FLOOR");
        // TODO Auto-generated constructor stub
        initMouseListener();
    }
    public CurrentSensorPanel( HashMap brick_images, int init_state ) {
        super();
        brick_images_ = brick_images;
        setInternalState(init_state);
        // TODO Auto-generated constructor stub
        initMouseListener();
    }

    public void paintComponent(Graphics g) {
        
        super.paintComponent(g);
       
        g.drawImage( current_image_, 0,0, this);
        
    }
    private void setInternalState( int new_state ) {
        
        if( (new_state >= EMPTY_FLOOR) && (new_state < STATE_COUNT))
            internal_state_ = new_state;
        paintState();
    }
    public int getInternalState()
    {
        return internal_state_;
    }
    private void paintState()
    {
        switch( internal_state_ )
        {
          case EMPTY_FLOOR :  current_image_ = (Image) brick_images_.get("EMPTY_FLOOR"); break;
          case FLOOR_1 :  current_image_ = (Image) brick_images_.get("FLOOR_1"); break;
          case FLOOR_2 :  current_image_ = (Image) brick_images_.get("FLOOR_2"); break;
          case FLOOR_3 :  current_image_ = (Image) brick_images_.get("FLOOR_3"); break;
        }
        CurrentSensorPanel.this.repaint();
    }
    private void initMouseListener()
    {
      this.addMouseListener(new java.awt.event.MouseAdapter()
      {
        public void mouseClicked(java.awt.event.MouseEvent evt)
        { 
           
            internal_state_ = (internal_state_+1) % 4;
            //System.out.println("Internal State: "+internal_state_ );
           paintState();
        }
      });
    }
}
