/**
* Design Pattern "Observer"
*
* Observateur concret - vue uniquement (représente la température maximale observée)
*
* @author Peter DAEHNE - HEG-Genève
*/
import java.awt.*;
import javax.swing.*;
public class VueMesureMax extends JFrame implements Observer {
private Mesure mesureMax = null;
private JTextField tfTempMax;
/* Création des composants de la fenêtre */
private void créerComposants () {
JLabel lblMax = new JLabel("Mesure maximale");
tfTempMax = new JTextField(10);
getContentPane().add(lblMax, BorderLayout.WEST);
getContentPane().add(tfTempMax, BorderLayout.EAST);
pack();
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setVisible(true);
}// créerComposants
/* Représente l'état observé: on mémorise la valeur maximale relevée */
private void represente (Mesure m) {
if (mesureMax == null){
mesureMax = new Mesure(m.noMesure, m.temp);
tfTempMax.setText(mesureMax.toString());
return;
}
if (m.temp > mesureMax.temp) {
mesureMax.noMesure = m.noMesure;
mesureMax.temp = m.temp;
tfTempMax.setText(m.toString());
}
}// represente
/* Constructeur */
public VueMesureMax (Subject subject) {
super("Maximum observé");
créerComposants();
subject.addObserver(this);
}// Constructeur
/* Interface Observer */
public void update (Subject subject) {
represente(((Thermomètre)subject).getState());
}// update
public Mesure getMax () {return mesureMax;}
}// VueMesureMax