package amidst.preferences; import java.util.prefs.Preferences; import javax.swing.JToggleButton.ToggleButtonModel; public class SelectPrefModel implements PrefModel<String> { public class SelectButtonModel extends ToggleButtonModel { private SelectPrefModel model; public String name; public SelectButtonModel(SelectPrefModel model, String name) { this.model = model; this.name = name; super.setSelected(false); } @Override public boolean isSelected() { return model.get().equals(name); } @Override public void setSelected(boolean value) { super.setSelected(value); if (value) model.set(name); } public String getName() { return name; } } private Preferences preferences; private String key; private String selected; private SelectButtonModel buttonModels[]; public SelectPrefModel(Preferences pref, String key, String selected, String[] names) { this.key = key; this.preferences = pref; this.selected = selected; buttonModels = new SelectButtonModel[names.length]; for (int i = 0; i < buttonModels.length; i++) buttonModels[i] = new SelectButtonModel(this, names[i]); set(pref.get(key, selected)); } @Override public String getKey() { return key; } @Override public String get() { return selected; } public SelectButtonModel[] getButtonModels() { return buttonModels; } @Override public void set(String value) { preferences.put(key, value); selected = value; for (int i = 0; i < buttonModels.length; i++) if (!value.equals(buttonModels[i].name)) buttonModels[i].setSelected(false); } }