blob: 793d0bfd7a1cc16c411a0bc5bb8b339ae42c8727 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010, 2017 xored software, Inc. and others.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* SPDX-License-Identifier: EPL-2.0
*
* 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);
}
}
}