package com.lateensoft.pathfinder.toolkit.views.character; import com.lateensoft.pathfinder.toolkit.R; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.content.res.Resources; import com.lateensoft.pathfinder.toolkit.model.character.stats.AbilityType; import java.util.List; public class AbilitySelectionDialog { private OnAbilitySelectedListener m_listener; private AlertDialog.Builder builder; public AbilitySelectionDialog(Context context, AbilityType checkedAbility, AbilityType defaultAbility) { builder = new AlertDialog.Builder(context); Resources r = builder.getContext().getResources(); String[] abilityNames = AbilityType.getKeySortedNames(r); // Making the default visible to user int defaultAbilityIndex = getIndexForAbilityKey(defaultAbility); abilityNames[defaultAbilityIndex] = abilityNames[defaultAbilityIndex] + r.getString(R.string.default_ability_label); OnClickListener clickListener = new OnClickListener() { private AbilityType selectedAbility = null; @Override public void onClick(DialogInterface dialog, int which) { switch (which) { case DialogInterface.BUTTON_POSITIVE: if (m_listener != null) { m_listener.onAbilitySelected(selectedAbility); } break; case DialogInterface.BUTTON_NEGATIVE: break; default: selectedAbility = AbilityType.values()[which]; break; } } }; builder.setSingleChoiceItems(abilityNames, getIndexForAbilityKey(checkedAbility), clickListener); builder.setTitle(R.string.select_ability_dialog_title); builder.setPositiveButton(R.string.ok_button_text, clickListener); builder.setNegativeButton(R.string.cancel_button_text, clickListener); } public AbilitySelectionDialog setOnAbilitySelectedListener(OnAbilitySelectedListener listener) { m_listener = listener; return this; } public void show() { builder.show(); } protected int getIndexForAbilityKey(AbilityType abilityType) { List<AbilityType> abilities = AbilityType.getKeySortedValues(); for (int i = 0; i < abilities.size(); i++) { if (abilities.get(i) == abilityType) { return i; } } return -1; } public static interface OnAbilitySelectedListener { /** @param abilityType the id of the ability selected, or null if none selected. */ public void onAbilitySelected(AbilityType abilityType); } }