// PreferenceInitializer.java
package org.eclipse.stem.ui.views.geographic.preferences;

/*******************************************************************************
 * Copyright (c) 2007 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
 *******************************************************************************/

import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;

/**
 * Class used to initialize default preference values.
 */
public class PreferenceInitializer extends AbstractPreferenceInitializer {

	/**
	 * @see org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer#initializeDefaultPreferences()
	 */
	public void initializeDefaultPreferences() {
//		@SuppressWarnings("unused")//$NON-NLS-1$
//		IPreferenceStore store = Activator.getDefault().getPreferenceStore();
//		store.setDefault(PreferenceConstants.BACKGROUND_COLOR_PREFERENCE,
//				MapCanvas.DEFAULT_BACKGROUND_COLOR_RGB_STRING);
//
//		store
//				.setDefault(
//						org.eclipse.stem.ui.views.geographic.preferences.PreferenceConstants.BORDER_COLOR_PREFERENCE,
//						MapCanvas.DEFAULT_POLYGON_BORDER_COLOR_RGB_STRING);
//
//		store
//				.setDefault(
//						org.eclipse.stem.ui.views.geographic.preferences.PreferenceConstants.DRAW_POLYGON_BORDERS_BOOLEAN_PREFERENCE,
//						MapCanvas.DEFAULT_DRAW_POLYGON_BORDERS);
//
//		store
//				.setDefault(
//						org.eclipse.stem.ui.views.geographic.preferences.PreferenceConstants.LOGSCALE_BOOLEAN_PREFERENCE,
//						MapCanvas.DEFAULT_USE_LOGSCALING);
//
//		store
//				.setDefault(
//						org.eclipse.stem.ui.views.geographic.preferences.PreferenceConstants.GAIN_FACTOR_PREFERENCE,
//						MapCanvas.DEFAULT_GAIN_FACTOR);

	} // initializeDefaultPreferences
} // PreferenceInitializer
