package edu.purdue.app.map;
import java.util.ArrayList;
import java.util.List;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
public class LayerListDialog extends DialogFragment {
/** Listener that is called when the dialog box is confirmed */
MapLayersUpdateListener listener;
Context c;
/** MapData which is used to populate the list of layers */
MapData mpd;
/** onLayersUpdate is called when the user updates their selection of layers */
public interface MapLayersUpdateListener {
void onLayersUpdate(List<String> enabled);
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Create the mapdata object
mpd = new MapData(c);
// Build the alert dialog
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
final List<String> enabledLayers = new ArrayList<String>();
// Convert string list to string array
String[] layersList = new String[mpd.getLayersList().size()];
for (int i = 0; i < mpd.getLayersList().size(); i++) {
layersList[i] = mpd.getLayersList().get(i);
}
builder.setTitle("Layers");
builder.setMultiChoiceItems(layersList, null, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
if (isChecked) {
enabledLayers.add(mpd.getLayersList().get(which));
} else {
enabledLayers.remove(mpd.getLayersList().get(which));
}
}
});
builder.setPositiveButton("Confirm", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
listener.onLayersUpdate(enabledLayers);
}
});
return builder.create();
}
public void setOnUpdateListener(MapLayersUpdateListener listener, Context c) {
this.listener = listener;
this.c = c;
}
}