package org.limewire.ui.swing.settings; import java.util.HashMap; import java.util.Map; import org.limewire.core.settings.LimeWireSettings; import org.limewire.setting.BooleanSetting; import org.limewire.setting.IntSetting; import org.limewire.setting.Setting; import org.limewire.setting.SettingsFactory; /** * Handles preferences for tables. Stored settings include * the table header's width, order and visibility. * Accessor are slightly different than other settings classes, * because they are accessed less-frequently and must be slightly * more mutable than other settings classes. */ public final class TablesHandler extends LimeWireSettings { private static final TablesHandler INSTANCE = new TablesHandler(); private static final SettingsFactory FACTORY = INSTANCE.getFactory(); public static TablesHandler instance() { return INSTANCE; } private TablesHandler() { super("tables.props", "LimeWire tables file"); } private static final String WIDTH = "_WIDTH"; private static final String ORDER = "_ORDER"; private static final String VISBL = "_VISIBLE"; private static final String SORTED_COLUMN = "_SORTED"; private static final String SORT_ORDER = "_SORT_ORDER"; /** * The list of settings. The Key is the name of the setting, * and the Setting is the actual setting. The subclass of * Setting is either BooleanSetting or IntSetting. * The name of the setting is in the format of: * <columnId>_<width|order|visible> */ private static final Map<String, Setting> SETS = new HashMap<String, Setting>(); /** * Returns the IntSetting for the specified column's width. */ public static IntSetting getWidth(String id, int def) { return getSetting(id + WIDTH, def); } /** * Returns the IntSetting for the specified column's order. */ public static IntSetting getOrder(String id, int def) { return getSetting(id + ORDER, def); } /** * Returns the BooleanSetting for the specified column's visibility. */ public static BooleanSetting getVisibility(String id, boolean def) { return getSetting(id + VISBL, def); } /** * Returns the IntSetting for the column that was last sorted. */ public static IntSetting getSortedColumn(String id, int def) { return getSetting(id + SORTED_COLUMN, def); } /** * Returns true if the column was in ascending order, false if * it was in descending order. */ public static BooleanSetting getSortedOrder(String id, boolean def) { return getSetting(id + SORT_ORDER, def); } /** * Returns the setting stored within SETS for the specified setting. * If none exists, one is created. */ private static IntSetting getSetting(String id, int def) { IntSetting set = (IntSetting)SETS.get(id); if (set == null) { set = FACTORY.createIntSetting(id, def); SETS.put(id, set); } return set; } /** * Returns the setting stored within SETS for the specified setting. * If none exists, one is created. */ private static BooleanSetting getSetting(String id, boolean def) { BooleanSetting set = (BooleanSetting)SETS.get(id); if (set == null) { set = FACTORY.createBooleanSetting(id, def); SETS.put(id, set); } return set; } }