import java.awt.*;
import javax.swing.*;
import java.beans.*;
import javax.swing.event.*;
import java.awt.event.*;

/**
 * Title:        WaterMixApplet
 * Description:  Mixing water with Fuzzy Logic
 * Copyright:    Copyright (c) 2001
 * @author S. Robl <stefan@qdev.de>, A. Heinze <mail@aheinze.de>
 * @version 1.0
 */

public class panControls extends JPanel 
{
  private myDebug debug=new myDebug(10);

  private String startStopTexts[] = {"Start", "Stop"};
  private JLabel jLabel1 = new JLabel();
  private JLabel jLabel2 = new JLabel();
  private JLabel jLabel3 = new JLabel();
  private JLabel jLabel4 = new JLabel();
  private JLabel jLabel5 = new JLabel();
  private JLabel lblValTtarget = new JLabel();
  private JLabel lblValTstart = new JLabel();
  private JLabel lblValTcold = new JLabel();
  private JLabel lblValThot = new JLabel();
  private JLabel lblValVstart = new JLabel();
  public JSlider sldTcold = new JSlider();
  public JSlider sldTstart = new JSlider();
  public JSlider sldTtarget = new JSlider();
  public JSlider sldVstart = new JSlider();
  public JSlider sldThot = new JSlider();
  public JButton btnStart = new JButton();
  public JButton btnReset = new JButton();
  public JButton btnStep = new JButton();

  public panControls() 
  {
    try 
    {
      jbInit();
    }
    catch(Exception ex) 
    {
      ex.printStackTrace();
    }
  }

  public void paint(Graphics g) 
  {
    super.paint(g);
    this.setForeground(Color.black);
    g.drawRect(0,0,this.getWidth()-1,this.getHeight()-1);
  }

  void jbInit() throws Exception 
  {
    this.setLayout(null);
    jLabel1.setText("Target Temp.");
    jLabel1.setBounds(new Rectangle(10, 10, 80, 15));
    jLabel2.setText("Start Temp.");
    jLabel2.setBounds(new Rectangle(10, 35, 80, 15));
    jLabel3.setText("Cold Temp.");
    jLabel3.setBounds(new Rectangle(10, 60, 80, 15));
    jLabel4.setText("Hot Temp.");
    jLabel4.setBounds(new Rectangle(10, 85, 80, 15));
    jLabel5.setText("Start volume");
    jLabel5.setBounds(new Rectangle(10, 110, 80, 15));

    lblValTtarget.setBounds(new Rectangle(355, 10, 30, 15));
    lblValTstart.setBounds(new Rectangle(355, 35, 30, 15));
    lblValTcold.setBounds(new Rectangle(355, 60, 30, 15));
    lblValThot.setBounds(new Rectangle(355, 85, 30, 15));
    lblValVstart.setBounds(new Rectangle(355, 110, 40, 15));

    btnStart.setText(startStopTexts[0]);
    btnStart.setBounds(new Rectangle(10, 140, 110, 21));
    btnStart.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        btnStart_actionPerformed(e);
      }
    });

    btnReset.setText("Reset");
    btnReset.setBounds(new Rectangle(130, 140, 110, 21));
    btnReset.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        btnReset_actionPerformed(e);
      }
    });

    btnStep.setText("Step");
    btnStep.setBounds(new Rectangle(250, 140, 110, 21));
    btnStep.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        btnStep_actionPerformed(e);
      }
    });

    sldVstart.setValue(10);
    sldVstart.setMaximum(90);
    sldVstart.setBounds(new Rectangle(100, 110, 250, 20));
    sldVstart.addChangeListener(new javax.swing.event.ChangeListener() {
      public void stateChanged(ChangeEvent e) {
        sldVstart_stateChanged(e);
      }
    });

    sldThot.setMinimum(50);
    sldThot.setValue(90);
    sldThot.setBounds(new Rectangle(100, 85, 250, 20));
    sldThot.addChangeListener(new javax.swing.event.ChangeListener() {
      public void stateChanged(ChangeEvent e) {
        sldThot_stateChanged(e);
      }
    });

    sldTcold.setValue(20);
    sldTcold.setMaximum(50);
    sldTcold.setBounds(new Rectangle(100, 60, 250, 20));
    sldTcold.addChangeListener(new javax.swing.event.ChangeListener() {
      public void stateChanged(ChangeEvent e) {
        sldTcold_stateChanged(e);
      }
    });
    sldTstart.setMinimum(10);
    sldTstart.setValue(30);
    sldTstart.setMaximum(90);
    sldTstart.setBounds(new Rectangle(100, 35, 250, 20));
    sldTstart.addChangeListener(new javax.swing.event.ChangeListener() {
      public void stateChanged(ChangeEvent e) {
        sldTstart_stateChanged(e);
      }
    });

    sldTtarget.setMinimum(10);
    sldTtarget.setMaximum(90);
    sldTtarget.setBounds(new Rectangle(100, 10, 250, 20));
    sldTtarget.addChangeListener(new javax.swing.event.ChangeListener() {
      public void stateChanged(ChangeEvent e) {
        sldTtarget_stateChanged(e);
      }
    });

    this.add(jLabel1, null);
    this.add(jLabel2, null);
    this.add(jLabel3, null);
    this.add(jLabel4, null);
    this.add(jLabel5, null);

    this.add(sldTtarget, null);
    this.add(sldTstart, null);
    this.add(sldTcold, null);
    this.add(sldThot, null);
    this.add(sldVstart, null);

    this.add(btnStart, null);
    this.add(btnReset, null);
    this.add(btnStep, null);
    this.add(lblValTtarget, null);
    this.add(lblValTstart, null);
    this.add(lblValTcold, null);
    this.add(lblValThot, null);
    this.add(lblValVstart, null);

    ChangeEvent tmp=new ChangeEvent(new Object());
    sldTtarget_stateChanged(tmp);
    sldTstart_stateChanged(tmp);
    sldTcold_stateChanged(tmp);
    sldThot_stateChanged(tmp);
    sldVstart_stateChanged(tmp);
  }
  
  public void setAnimationState(boolean animationRunning)
  {
	boolean enable = !animationRunning;
	
    sldTcold.setEnabled(enable);
    sldTstart.setEnabled(enable);
    sldTtarget.setEnabled(enable);
    sldVstart.setEnabled(enable);
    sldThot.setEnabled(enable);
	
    btnStart.setText(startStopTexts[animationRunning ? 1 : 0]);
	btnReset.setEnabled(enable);
    btnStep.setEnabled(enable);
  }
  
  void sldTtarget_stateChanged(ChangeEvent e) 
  {
    debug.Write("panControls:sldTtarget_stateChanged: " + new Integer(sldTtarget.getValue()).toString(),2);
    lblValTtarget.setText(new Integer(sldTtarget.getValue()).toString());
  }

  void sldTstart_stateChanged(ChangeEvent e) 
  {
    debug.Write("panControls:sldTstart_stateChanged: " + new Integer(sldTstart.getValue()).toString(),2);
    lblValTstart.setText(new Integer(sldTstart.getValue()).toString());
  }

  void sldTcold_stateChanged(ChangeEvent e) 
  {
    debug.Write("panControls:sldTcold_stateChanged: " + new Integer(sldTcold.getValue()).toString(),2);
    lblValTcold.setText(new Integer(sldTcold.getValue()).toString());
  }

  void sldThot_stateChanged(ChangeEvent e) 
  {
    debug.Write("panControls:sldThot_stateChanged: " + new Integer(sldThot.getValue()).toString(),2);
    lblValThot.setText(new Integer(sldThot.getValue()).toString());
  }

  void sldVstart_stateChanged(ChangeEvent e) 
  {
    debug.Write("panControls:sldVstart_stateChanged: " + new Integer(sldVstart.getValue()).toString(),2);
    lblValVstart.setText(new Double((double)(sldVstart.getValue())/10).toString());
  }

  void btnStart_actionPerformed(ActionEvent e) 
  {
    debug.Write("panControls:btnStart_actionPerformed",2);
  }

  void btnReset_actionPerformed(ActionEvent e) 
  {
    debug.Write("panControls:btnReset_actionPerformed",2);
  }

  void btnStep_actionPerformed(ActionEvent e) 
  {
    debug.Write("panControls:btnStep_actionPerformed",2);
  }
}
