/** * Copyright (c) 2007 Borland Software Corporation * * 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: * bblajer - initial API and implementation */ package org.eclipse.gmf.runtime.lite.preferences; import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer; import org.eclipse.jface.action.Action; import org.eclipse.jface.preference.ColorFieldEditor; import org.eclipse.jface.preference.FieldEditorPreferencePage; import org.eclipse.jface.preference.FontFieldEditor; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.preference.PreferenceConverter; import org.eclipse.jface.resource.JFaceResources; import org.eclipse.swt.accessibility.AccessibleAdapter; import org.eclipse.swt.accessibility.AccessibleEvent; import org.eclipse.swt.graphics.FontData; import org.eclipse.swt.graphics.RGB; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPreferencePage; public class ColorsAndFontsPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage { @Override protected void createFieldEditors() { FontFieldEditor defaultFont = new FontFieldEditor(IPreferenceConstants.DEFAULT_FONT, "Default font", getFieldEditorParent()); addField(defaultFont); ColorFieldEditor defaultFontColor = new ColorFieldEditor(IPreferenceConstants.FONT_COLOR, "Default font color", getFieldEditorParent()); addField(defaultFontColor); makeAccessible(defaultFontColor); ColorFieldEditor defaultFillColor = new ColorFieldEditor(IPreferenceConstants.FILL_COLOR, "Default fill color", getFieldEditorParent()); addField(defaultFillColor); makeAccessible(defaultFillColor); ColorFieldEditor defaultLineColor = new ColorFieldEditor(IPreferenceConstants.LINE_COLOR, "Default line color", getFieldEditorParent()); addField(defaultLineColor); makeAccessible(defaultLineColor); } protected final void makeAccessible(ColorFieldEditor editor) { editor.getColorSelector().getButton().getAccessible().addAccessibleListener(new ColorAccessibleListener(editor)); } public void init(IWorkbench workbench) { } protected static class ColorsAndFontsPreferenceInitializer extends AbstractPreferenceInitializer { private final IPreferenceStore myStore; public ColorsAndFontsPreferenceInitializer(IPreferenceStore store) { myStore = store; } @Override public void initializeDefaultPreferences() { PreferenceConverter.setDefault(myStore, IPreferenceConstants.DEFAULT_FONT, getDefaultFontData()); PreferenceConverter.setDefault(myStore, IPreferenceConstants.FONT_COLOR, getDefaultFontColor()); PreferenceConverter.setDefault(myStore, IPreferenceConstants.FILL_COLOR, getDefaultFillColor()); PreferenceConverter.setDefault(myStore, IPreferenceConstants.LINE_COLOR, getDefaultLineColor()); } protected FontData getDefaultFontData() { FontData fontDataArray[] = JFaceResources.getDefaultFont().getFontData(); FontData fontData = fontDataArray[0]; fontData.setHeight(9); return fontData; } protected RGB getDefaultFontColor() { return new RGB(0, 0, 0); } protected RGB getDefaultFillColor() { return new RGB(255, 255, 255); } protected RGB getDefaultLineColor() { return new RGB(0, 0, 0); } } private static class ColorAccessibleListener extends AccessibleAdapter { private final ColorFieldEditor myEditor; public ColorAccessibleListener(ColorFieldEditor editor) { myEditor = editor; } @Override public void getName(AccessibleEvent e) { e.result = Action.removeMnemonics(myEditor.getLabelText()); } } }