import java.awt.*;
import javax.swing.*;
import javax.swing.border.EtchedBorder;

        // A visualization of a heating device.
public class Heater extends JPanel {
    // Default initial temperature of the heater.
    public static final int defaultTemperature = 16;

    public Heater(){
        setBorder(new EtchedBorder(EtchedBorder.LOWERED));
        // Set up the initial state.
        setOn(false);
        setTemperature(defaultTemperature);
        add(getLabel());
        getFrame().addComponent(this);
        getFrame().pack();
    }

    public void setOn(boolean b){
        on = b;
        if(on){
            setBackground(Color.green);
        }
        else{
            setBackground(Color.red);
        }
    }

    public void setTemperature(int t){
        temperature = t;
        getLabel().setText(""+getTemperature());
        getFrame().validate();
    }

    protected boolean getOn(){
        return on;
    }

    protected int getTemperature(){
        return temperature;
    }

    private ComponentFrame getFrame(){
            return frame;
    }

    private JLabel getLabel(){
        return label;
    }

    private static final int textSize = 20;
    private static final Font font = new Font("SansSerif",Font.BOLD,textSize);
    // Provide a reasonable amount of space for the values.
    private JLabel label = new JLabel("    ",JLabel.CENTER);
    {
        label.setFont(font);
        label.setForeground(Color.white);
    }
    // The frame shared by all heaters displays.
    private static final ComponentFrame frame = new ComponentFrame("Heaters");
    static {
        final int width = 300, height = 150;
        frame.setSize(new Dimension(width,height));
    }
    // State of the heater.
    private boolean on = false;
    // Current temperature level.
    private int temperature = defaultTemperature;
}
