package com.pam.codenamehippie.controleur.validation;
import android.database.Observable;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Spinner;
/**
* Classe de base pour valider les Spinner
*/
public class ValidateurDeSpinner extends Observable<ValidateurObserver>
implements AdapterView.OnItemSelectedListener, Validateur {
private final Spinner spinner;
private long id = 0;
protected ValidateurDeSpinner(Spinner spinner) {
this.spinner = spinner;
}
public static ValidateurDeSpinner newInstance(Spinner spinner) {
return new ValidateurDeSpinner(spinner);
}
public Spinner getSpinner() {
return this.spinner;
}
public long getSelectedItemId() {
return this.spinner.getSelectedItemId();
}
public void setSelectedItemId(long id) {
this.id = id;
this.spinner.setSelection((int) id, true);
this.notifierLesVoyeurs(this.estValide());
}
public int getSelectedItemPosition() {
return this.spinner.getSelectedItemPosition();
}
public Object getSelectedItem() {
return this.spinner.getSelectedItem();
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
this.id = id;
this.notifierLesVoyeurs(this.estValide());
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
@Override
public boolean estValide() {
return (this.id != 0);
}
@Override
public void onPause() {
this.spinner.setOnItemSelectedListener(null);
}
@Override
public void onResume() {
this.spinner.setOnItemSelectedListener(this);
this.notifierLesVoyeurs(this.estValide());
}
/**
* Notifie les observateur.
*
* @param estValide
* valeur à envoyer à ceux-ci
*/
protected void notifierLesVoyeurs(boolean estValide) {
synchronized (this.mObservers) {
if (!this.mObservers.isEmpty()) {
for (ValidateurObserver observer : this.mObservers) {
observer.enValidant(this, estValide);
}
}
}
}
}