blob: 28d2bc1cee76758bc8708b93292b9b3cb74035e4 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2006 IBM Corporation and others.
* 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:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.ui.internal.util;
import org.eclipse.core.runtime.Assert;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.ui.internal.WorkbenchPlugin;
/**
* Internal utility class to help with getting/setting preferences.
* <p>
* API preferences are defined in {@link org.eclipse.ui.IWorkbenchPreferenceConstants}
* and are obtained from the <code>org.eclipse.ui</code> plug-in's preference store.
* </p>
* <p>
* Internal preferences are defined in {@link org.eclipse.ui.internal.IPreferenceConstants}
* and are obtained from the <code>org.eclipse.ui.workbench</code> plug-in's preference store.
* </p>
*
* @since 3.0
*/
public class PrefUtil {
private PrefUtil() {
// prevents instantiation
}
/**
* Callback interface to obtain and save the UI preference store.
*/
public static interface ICallback {
IPreferenceStore getPreferenceStore();
void savePreferences();
}
private static ICallback uiCallback;
private static IPreferenceStore uiPreferenceStore;
/**
* Sets the callback used to obtain and save the UI preference store.
*/
public static final void setUICallback(ICallback callback) {
Assert.isTrue(uiCallback == null);
uiCallback = callback;
}
/**
* Returns the API preference store.
*
* @return the API preference store
*/
public static IPreferenceStore getAPIPreferenceStore() {
if (uiPreferenceStore == null) {
Assert.isNotNull(uiCallback);
uiPreferenceStore = uiCallback.getPreferenceStore();
}
return uiPreferenceStore;
}
/**
* Returns the internal preference store.
*
* @return the internal preference store
*/
public static IPreferenceStore getInternalPreferenceStore() {
return WorkbenchPlugin.getDefault().getPreferenceStore();
}
/**
* Saves both the API and internal preference stores.
*/
public static void savePrefs() {
saveAPIPrefs();
saveInternalPrefs();
}
/**
* Saves the API preference store, if needed.
*/
public static void saveAPIPrefs() {
Assert.isNotNull(uiCallback);
uiCallback.savePreferences();
}
/**
* Saves the internal preference store, if needed.
*/
public static void saveInternalPrefs() {
WorkbenchPlugin.getDefault().savePluginPreferences();
}
}