/*******************************************************************************
* Copyright (c) 2010 Denis Solonenko.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Public License v2.0
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
*
* Contributors:
* Denis Solonenko - initial API and implementation
******************************************************************************/
package ru.orangesoftware.financisto2.utils;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import ru.orangesoftware.financisto2.R;
import ru.orangesoftware.financisto2.adapter.EntityEnumAdapter;
import ru.orangesoftware.financisto2.model.CardIssuer;
public abstract class EnumUtils {
public static String[] getLocalizedValues(Context context, LocalizableEnum...values) {
int count = values.length;
String[] items = new String[count];
for (int i = 0; i<count; i++) {
LocalizableEnum r = values[i];
items[i] = context.getString(r.getTitleId());
}
return items;
}
public static ArrayAdapter<String> createDropDownAdapter(Context context, LocalizableEnum...values) {
String[] items = getLocalizedValues(context, values);
return new ArrayAdapter<String>(context, android.R.layout.simple_spinner_dropdown_item, items);
}
public static <T extends EntityEnum> EntityEnumAdapter<T> createEntityEnumAdapter(Context context, T...values) {
return new EntityEnumAdapter<T>(context, R.layout.entity_enum_list_item, values);
}
public static ArrayAdapter<String> createSpinnerAdapter(Context context, LocalizableEnum...values) {
String[] items = getLocalizedValues(context, values);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(context, android.R.layout.simple_spinner_item, items);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
return adapter;
}
public static <V, T extends ExecutableEntityEnum<V>> void showPickOneDialog(Context context, int titleId, final T[] items, final V value) {
ListAdapter adapter = EnumUtils.createEntityEnumAdapter(context, items);
AlertDialog dialog = new AlertDialog.Builder(context)
.setAdapter(adapter, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
T e = items[which];
e.execute(value);
}
})
.create();
dialog.setTitle(titleId);
dialog.show();
}
public static String[] asStringArray(Enum... values) {
int count = values.length;
String[] a = new String[count];
for (int i=0; i<count; i++) {
a[i] = values[i].name();
}
return a;
}
public static <E extends Enum> E selectEnum(Class<E> enumType, String enumValue, E defaultValue) {
if (enumValue == null) return defaultValue;
E[] constants = enumType.getEnumConstants();
for (E e : constants) {
if (enumValue.equals(e.name())) return e;
}
return defaultValue;
}
}