| /******************************************************************************* |
| * Copyright (c) 2010, 2017 xored software, Inc. 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: |
| * xored software, Inc. - initial API and Implementation (Alex Panchenko) |
| *******************************************************************************/ |
| package org.eclipse.dltk.internal.ui.coloring; |
| |
| import java.util.Collections; |
| import java.util.EnumSet; |
| import java.util.HashSet; |
| import java.util.Set; |
| |
| import org.eclipse.dltk.ui.DLTKUIPlugin; |
| import org.eclipse.dltk.ui.coloring.EnablementStyle; |
| import org.eclipse.dltk.ui.coloring.FontStyle; |
| import org.eclipse.dltk.ui.coloring.IColoringPreferenceKey; |
| import org.eclipse.jface.preference.IPreferenceStore; |
| import org.eclipse.jface.preference.PreferenceConverter; |
| import org.eclipse.swt.graphics.RGB; |
| |
| public class DefaultPreferenceRequestor |
| extends AbstractColoringPreferenceRequestor { |
| |
| private final IPreferenceStore store; |
| private final String natureId; |
| |
| public DefaultPreferenceRequestor(IPreferenceStore store, String natureId) { |
| this.store = store; |
| this.natureId = natureId; |
| } |
| |
| private Set<String> processedKeys = new HashSet<>(); |
| |
| @Override |
| public void addPreference(IColoringPreferenceKey key, String name, |
| RGB color, EnablementStyle enablementStyle, |
| FontStyle... fontStyles) { |
| if (!processedKeys.add(key.getColorKey())) { |
| DLTKUIPlugin.warn("Duplicate color preference " + key.getColorKey() |
| + " in " + natureId); |
| return; |
| } |
| PreferenceConverter.setDefault(store, key.getColorKey(), color); |
| final EnumSet<FontStyle> fontStyleSet = EnumSet.noneOf(FontStyle.class); |
| Collections.addAll(fontStyleSet, fontStyles); |
| store.setDefault(key.getBoldKey(), |
| fontStyleSet.contains(FontStyle.BOLD)); |
| store.setDefault(key.getItalicKey(), |
| fontStyleSet.contains(FontStyle.ITALIC)); |
| store.setDefault(key.getUnderlineKey(), |
| fontStyleSet.contains(FontStyle.UNDERLINE)); |
| store.setDefault(key.getStrikethroughKey(), |
| fontStyleSet.contains(FontStyle.STRIKETHROUGH)); |
| if (key.getEnableKey() != null |
| && enablementStyle != EnablementStyle.ALWAYS_ON) { |
| store.setDefault(key.getEnableKey(), |
| enablementStyle == EnablementStyle.ON); |
| } |
| } |
| } |