/* ********************************************************************** ** ** Copyright notice ** ** ** ** (c) 2005-2009 RSSOwl Development Team ** ** http://www.rssowl.org/ ** ** ** ** All rights reserved ** ** ** ** This program and the accompanying materials are made available under ** ** the terms of the Eclipse Public License v1.0 which accompanies this ** ** distribution, and is available at: ** ** http://www.rssowl.org/legal/epl-v10.html ** ** ** ** A copy is found in the file epl-v10.html and important notices to the ** ** license from the team is found in the textfile LICENSE.txt distributed ** ** in this package. ** ** ** ** This copyright notice MUST APPEAR in all copies of the file! ** ** ** ** Contributors: ** ** RSSOwl Development Team - initial API and implementation ** ** ** ** ********************************************************************** */ package org.rssowl.core.internal.persist.pref; import org.rssowl.core.persist.pref.IPreferenceScope; import java.util.Properties; /** * Implementation of <code>IPreferencesScope</code> that maintains a * Property-List of Preferences. These are entirely held in Memory and never * stored persistently. The <code>DefaultScope</code> can be used to store * initial preferences. * * @author bpasero */ public class DefaultScope implements IPreferenceScope { /* Default Values */ private static final boolean BOOLEAN_DEFAULT = false; private static final int INT_DEFAULT = 0; private static final long LONG_DEFAULT = 0L; private final Properties fDefaults = new Properties(); /* * @see org.rssowl.ui.internal.preferences.IPreferencesScope#getParent() */ public IPreferenceScope getParent() { throw new RuntimeException("There can be no parent of the DefaultScope"); //$NON-NLS-1$ } /* * @see org.rssowl.ui.internal.preferences.IPreferencesScope#flush() */ public void flush() { /* Nothing to do here (DefaultScope only kept in Memory) */ } /* * @see org.rssowl.ui.internal.preferences.IPreferencesNode#delete(java.lang.String) */ public void delete(String key) { fDefaults.remove(key); } /* * @see org.rssowl.core.persist.pref.IPreferenceScope#hasKey(java.lang.String) */ public boolean hasKey(String key) { return fDefaults.containsKey(key); } /* * @see org.rssowl.core.model.preferences.IPreferencesNode#getBoolean(java.lang.String) */ public boolean getBoolean(String key) { Object res = fDefaults.get(key); if (res != null) return (Boolean) res; return BOOLEAN_DEFAULT; } /* * @see org.rssowl.core.model.preferences.IPreferencesNode#getInteger(java.lang.String) */ public int getInteger(String key) { Object res = fDefaults.get(key); if (res != null) return (Integer) res; return INT_DEFAULT; } /* * @see org.rssowl.core.model.preferences.IPreferencesNode#getIntegers(java.lang.String) */ public int[] getIntegers(String key) { Object res = fDefaults.get(key); if (res != null) return (int[]) res; return null; } /* * @see org.rssowl.core.model.preferences.IPreferencesNode#getLong(java.lang.String) */ public long getLong(String key) { Object res = fDefaults.get(key); if (res != null) return (Long) res; return LONG_DEFAULT; } /* * @see org.rssowl.core.model.preferences.IPreferencesNode#getLongs(java.lang.String) */ public long[] getLongs(String key) { Object res = fDefaults.get(key); if (res != null) return (long[]) res; return null; } /* * @see org.rssowl.core.model.preferences.IPreferencesNode#getString(java.lang.String) */ public String getString(String key) { Object res = fDefaults.get(key); if (res != null) return (String) res; return null; } /* * @see org.rssowl.core.model.preferences.IPreferencesNode#getStrings(java.lang.String) */ public String[] getStrings(String key) { Object res = fDefaults.get(key); if (res != null) return (String[]) res; return null; } /* * @see org.rssowl.ui.internal.preferences.IPreferencesNode#putBoolean(java.lang.String, * boolean) */ public void putBoolean(String key, boolean value) { if (value == BOOLEAN_DEFAULT) delete(key); else fDefaults.put(key, value); } /* * @see org.rssowl.ui.internal.preferences.IPreferencesNode#putInteger(java.lang.String, * int) */ public void putInteger(String key, int value) { if (value == INT_DEFAULT) delete(key); else fDefaults.put(key, value); } /* * @see org.rssowl.ui.internal.preferences.IPreferencesNode#putIntegers(java.lang.String, * int[]) */ public void putIntegers(String key, int[] values) { if (values == null) delete(key); else fDefaults.put(key, values); } /* * @see org.rssowl.ui.internal.preferences.IPreferencesNode#putLong(java.lang.String, * long) */ public void putLong(String key, long value) { if (value == LONG_DEFAULT) delete(key); else fDefaults.put(key, value); } /* * @see org.rssowl.ui.internal.preferences.IPreferencesNode#putLongs(java.lang.String, * long[]) */ public void putLongs(String key, long[] values) { if (values == null) delete(key); else fDefaults.put(key, values); } /* * @see org.rssowl.ui.internal.preferences.IPreferencesNode#putString(java.lang.String, * java.lang.String) */ public void putString(String key, String value) { if (value == null) delete(key); else fDefaults.put(key, value); } /* * @see org.rssowl.ui.internal.preferences.IPreferencesNode#putStrings(java.lang.String, * java.lang.String[]) */ public void putStrings(String key, String[] values) { if (values == null) delete(key); else fDefaults.put(key, values); } }