/******************************************************************************* * Copyright (c) 2008 Pierre-Antoine Grégoire. * 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.eclipse.org/legal/epl-v10.html * * Contributors: * Pierre-Antoine Grégoire - initial API and implementation *******************************************************************************/ package org.org.eclipse.core.utils.platform.preferences; import java.util.Map; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.ui.plugin.AbstractUIPlugin; import org.org.eclipse.core.utils.platform.PlatformUtilsException; /** * @author pagregoire */ public class PreferencesFacade { private static Map<String, Object> defaultValues = null; public static void setDefaultValues(AbstractUIPlugin plugin, Map<String, Object> map) { defaultValues = map; initDefaultValues(plugin, true); } private static boolean defaultsSet = false; public static String getPreference(AbstractUIPlugin plugin, String propertyName, Class<?> type) { if (defaultValues == null) { throw new PlatformUtilsException("Default values' map should have been set at least one time"); } String result = null; if (type.equals(String.class)) { result = plugin.getPreferenceStore().getString(propertyName); } if (type.equals(Boolean.class)) { result = Boolean.valueOf(plugin.getPreferenceStore().getBoolean(propertyName)).toString(); } if (type.equals(Integer.class)) { result = Integer.valueOf(plugin.getPreferenceStore().getInt(propertyName)).toString(); } if (type.equals(Double.class)) { result = new Double(plugin.getPreferenceStore().getDouble(propertyName)).toString(); } if (type.equals(Float.class)) { result = new Float(plugin.getPreferenceStore().getFloat(propertyName)).toString(); } if (type.equals(Long.class)) { result = Long.valueOf(plugin.getPreferenceStore().getLong(propertyName)).toString(); } return result; } public static void setPreference(AbstractUIPlugin plugin, String propertyName, String value) { if (defaultValues == null) { throw new PlatformUtilsException("Default values' map should have been set at least one time"); } Class<?> type = value.getClass(); if (type.equals(String.class)) { plugin.getPreferenceStore().setValue(propertyName, (String) value); } } public static Object getDefaultPreferenceValue(String propertyName) { if (defaultValues == null) { throw new PlatformUtilsException("Default values' map should have been set at least one time"); } return defaultValues.get(propertyName); } public static void setToDefaultValues(AbstractUIPlugin plugin) { if (defaultValues == null) { throw new PlatformUtilsException("Default values' map should have been set at least one time"); } initDefaultValues(plugin, false); IPreferenceStore preferenceStore = plugin.getPreferenceStore(); for (String next : defaultValues.keySet()) { preferenceStore.setToDefault(next); } } public static void setToDefaultValue(AbstractUIPlugin plugin, String propertyName) { if (defaultValues == null) { throw new PlatformUtilsException("Default values' map should have been set at least one time"); } initDefaultValues(plugin, false); IPreferenceStore preferenceStore = plugin.getPreferenceStore(); preferenceStore.setToDefault(propertyName); } public static void initDefaultValues(AbstractUIPlugin plugin, boolean force) { if (defaultValues == null) { throw new PlatformUtilsException("Default values' map should have been set at least one time"); } if ((!defaultsSet) || force) { IPreferenceStore preferenceStore = plugin.getPreferenceStore(); Object value = null; for (String key : defaultValues.keySet()) { value = defaultValues.get(key); if (value.getClass().equals(String.class)) { preferenceStore.setDefault(key, (String) value); } if (value.getClass().equals(Boolean.class)) { preferenceStore.setDefault(key, ((Boolean) value).booleanValue()); } if (value.getClass().equals(Integer.class)) { preferenceStore.setDefault(key, ((Integer) value).intValue()); } if (value.getClass().equals(Double.class)) { preferenceStore.setDefault(key, ((Double) value).doubleValue()); } if (value.getClass().equals(Float.class)) { preferenceStore.setDefault(key, ((Float) value).floatValue()); } if (value.getClass().equals(Long.class)) { preferenceStore.setDefault(key, ((Long) value).longValue()); } } defaultsSet = true; } } }