package org.azavea.otm.filters;
import android.app.Activity;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import org.azavea.helpers.Logger;
import org.azavea.otm.App;
import org.azavea.otm.R;
import org.azavea.otm.data.Species;
import org.azavea.otm.ui.SpeciesListDisplay;
import org.json.JSONException;
import org.json.JSONObject;
public class SpeciesFilter extends BaseFilter {
static final public int SPECIES_SELECTOR = 1;
public Species species = null;
public SpeciesFilter(String key, String identifier, String label) {
super(key, identifier, label);
}
@Override
public boolean isActive() {
return species != null;
}
@Override
public View createView(LayoutInflater inflater, Activity activity) {
View view = inflater.inflate(R.layout.filter_species_control, null);
Button button = ((Button) view.findViewById(R.id.species_filter));
updateSpecies(view, species);
button.setOnClickListener(v -> {
Intent speciesSelector = new Intent(App.getAppInstance(),
SpeciesListDisplay.class);
activity.startActivityForResult(speciesSelector, SPECIES_SELECTOR);
});
return view;
}
@Override
public void updateFromView(View view) {
Object species = view.getTag(R.id.species_id);
if (species != null) {
this.species = (Species) species;
} else {
this.species = null;
}
}
@Override
public void clear(View view) {
this.species = null;
updateSpecies(view, null);
}
@Override
public JSONObject getFilterObject() {
try {
return buildNestedFilter(this.identifier, "IS", this.species.getId());
} catch (JSONException e) {
Logger.error("Error building species filter object", e);
return null;
}
}
public void updateSpecies(View view, Species species) {
String name = "Not filtered";
if (species != null) {
name = species.getCommonName();
}
Button button = ((Button) view.findViewById(R.id.species_filter));
view.setTag(R.id.species_id, species);
button.setText(label + ": " + name);
}
}