package personpcs;

import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;

class Person {
    private String nome;
    private int eta;
    private String oldNome;
    private int oldEta; 
    private final PropertyChangeSupport pcs = new PropertyChangeSupport(this);

    public Person(String nome, int eta) {
        this.nome = nome;
        this.eta = eta;
        this.oldNome = nome;
        this.oldEta = eta;
    }

    public String getNome() {
        return nome;
    }
    public void setNome(String nome) {
        this.oldNome = this.nome;
        this.nome = nome;
        pcs.firePropertyChange("nome", oldNome, nome);      
    }
    public int getEta() {
        return eta;
    }
    public void setEta(int eta) {
        this.oldEta = this.eta;
        this.eta = eta;
        pcs.firePropertyChange("eta", oldEta, eta);
    }
    public String getOldNome() {
        return oldNome;
    }
    public int getOldEta() {
        return oldEta;
    }
    
    public void addPropertyChangeListener(PropertyChangeListener listener) {
        pcs.addPropertyChangeListener(listener);
    }

    public void removePropertyChangeListener(PropertyChangeListener listener) {
        pcs.removePropertyChangeListener(listener);
    }
}
class MyPropertyChangeListener implements PropertyChangeListener {
        @Override
        public void propertyChange(PropertyChangeEvent evt) {
            System.out.println("Ricevuto evento di modifica della proprietà: " 
                    + evt.getPropertyName() + " da Person");
            System.out.println("vecchio valore: " + evt.getOldValue());
            System.out.println("nuovo valore: " + evt.getNewValue());
        }
    } 