package com.limegroup.gnutella.settings; import java.util.HashMap; import java.util.Map; /** * 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 AbstractSettings { 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"; /** * 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 SETS /* String -> Setting */ = new HashMap(); /** * 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 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; } }