package conteggi;

import conteggi.*;
import java.awt.*;

public class CounterFrame extends Frame{
	private Button incbutton, decbutton, resetbutton;
	private Label display, contname;
	private Counter contrif;

/* 
In un'organizzazione M.V.C. (Model,View,Control) questa classe è la parte View, il CounterWithDisplay è il Modello, e gli ascoltatori rappresentano il controllo. C'e totale indipendenza.
Specificando nel costruttore  di CounterFrame un riferimento ad un Counter permetto inoltre la riusabilità del codice dell'interfaccia grafica (cioè la parte View) nel caso che invece il Modello non mi vada più bene: se cambio il modello (CounterWithDisplay2, ad es.) potrei usare la stessa GUI se questa mi piacesse ancora.
*/

	public CounterFrame(String titolo, Counter cr){
		super(titolo);
		contrif=cr;
		this.setBackground(Color.white);
		this.setLayout(new BorderLayout(5,5));
		this.setSize(150,140);
		incbutton=new Button(" +1 ");
		incbutton.addActionListener(new IncDecListener(this, contrif,IncDecListener.INC1LISTENER));
		this.add(incbutton, BorderLayout.EAST);
		decbutton=new Button(" -1 ");
		decbutton.addActionListener(new IncDecListener(this, contrif,IncDecListener.DEC1LISTENER));
		this.add(decbutton, BorderLayout.WEST);
		resetbutton=new Button(" reset ");
		resetbutton.addActionListener(new ResetListener(this, contrif));
		this.add(resetbutton, BorderLayout.SOUTH);
		contname= new Label(contrif.getName(),Label.CENTER);
		this.add(contname, BorderLayout.NORTH);
		display = new Label(Integer.toString(contrif.getValue()), Label.CENTER);
		display.setBackground(Color.black);
		display.setForeground(Color.green);
		display.setFont(new Font("Monospaced",Font.BOLD,22));
		this.add(display, BorderLayout.CENTER);
	}

	public void repaint(){
		display.setText(Integer.toString(contrif.getValue()));
		//display.setForeground(Color.green);
		//display.repaint();
		super.repaint();
	}
}
