package com.jdroid.android.debug;
import android.app.Activity;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.PreferenceGroup;
import com.jdroid.android.R;
import com.jdroid.java.collections.Lists;
import com.jdroid.java.collections.Maps;
import com.jdroid.java.http.Server;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
public class ServersDebugPrefsAppender extends PreferencesAppender {
private Map<Class<? extends Server>, List<? extends Server>> serversMap = Maps.newHashMap();
public ServersDebugPrefsAppender(Map<Class<? extends Server>, List<? extends Server>> serversMap) {
this.serversMap = serversMap;
}
@Override
public int getNameResId() {
return R.string.jdroid_serversSettings;
}
@Override
public void initPreferences(Activity activity, PreferenceGroup preferenceGroup) {
for (final Entry<Class<? extends Server>, List<? extends Server>> entry : serversMap.entrySet()) {
ListPreference preference = new ListPreference(activity);
preference.setKey(entry.getKey().getSimpleName());
preference.setTitle(entry.getKey().getSimpleName());
preference.setDialogTitle(entry.getKey().getSimpleName());
preference.setSummary(entry.getKey().getSimpleName());
List<CharSequence> entries = Lists.newArrayList();
for (Server each : entry.getValue()) {
entries.add(each.getName());
}
preference.setEntries(entries.toArray(new CharSequence[0]));
preference.setEntryValues(entries.toArray(new CharSequence[0]));
preference.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
for (Server each : entry.getValue()) {
if (each.getName().equals(newValue)) {
onServerPreferenceChange(each);
break;
}
}
return true;
}
});
preferenceGroup.addPreference(preference);
}
}
protected void onServerPreferenceChange(Server each) {
// Do nothing
}
@Override
public Boolean isEnabled() {
return (serversMap != null) && !serversMap.isEmpty();
}
}