blob: acd36882c309439e3b11a789c8a210efb17ab449 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2005, 2017 IBM Corporation 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
*
*******************************************************************************/
package org.eclipse.dltk.ui.viewsupport;
import org.eclipse.dltk.ui.DLTKUIPlugin;
import org.eclipse.dltk.ui.PreferenceConstants;
import org.eclipse.dltk.ui.ScriptElementImageProvider;
import org.eclipse.dltk.ui.ScriptElementLabels;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.jface.viewers.LabelProviderChangedEvent;
public class AppearanceAwareLabelProvider extends ScriptUILabelProvider
implements IPropertyChangeListener {
public final static long DEFAULT_TEXTFLAGS = ScriptElementLabels.ROOT_VARIABLE
| ScriptElementLabels.M_PARAMETER_NAMES
| ScriptElementLabels.M_PARAMETER_TYPES
| ScriptElementLabels.M_APP_TYPE_PARAMETERS
| ScriptElementLabels.M_APP_RETURNTYPE
| ScriptElementLabels.M_PARAMETER_INITIALIZERS;
// |ScriptElementLabels.REFERENCED_ROOT_POST_QUALIFIED;
public final static int DEFAULT_IMAGEFLAGS = ScriptElementImageProvider.OVERLAY_ICONS;
private long fTextFlagMask;
private int fImageFlagMask;
private final IPreferenceStore fStore;
/**
* Constructor for AppearanceAwareLabelProvider.
*
* @param preferenceStore
*/
public AppearanceAwareLabelProvider(long textFlags, int imageFlags,
IPreferenceStore store) {
super(textFlags, imageFlags);
fStore = store != null ? store : DLTKUIPlugin.getDefault()
.getPreferenceStore();
initMasks();
fStore.addPropertyChangeListener(this);
}
/**
* Creates a labelProvider with DEFAULT_TEXTFLAGS and DEFAULT_IMAGEFLAGS
*/
public AppearanceAwareLabelProvider(IPreferenceStore store) {
this(DEFAULT_TEXTFLAGS, DEFAULT_IMAGEFLAGS, store);
}
private void initMasks() {
fTextFlagMask = -1;
if (!fStore
.getBoolean(PreferenceConstants.APPEARANCE_METHOD_RETURNTYPE)) {
fTextFlagMask ^= ScriptElementLabels.M_APP_RETURNTYPE;
}
if (!fStore
.getBoolean(PreferenceConstants.APPEARANCE_METHOD_PARAMETER_NAMES)) {
fTextFlagMask ^= ScriptElementLabels.M_PARAMETER_NAMES;
}
if (!fStore
.getBoolean(PreferenceConstants.APPEARANCE_METHOD_PARAMETER_TYPES)) {
fTextFlagMask ^= ScriptElementLabels.M_PARAMETER_TYPES;
}
if (!fStore
.getBoolean(PreferenceConstants.APPEARANCE_METHOD_TYPEPARAMETERS)) {
fTextFlagMask ^= ScriptElementLabels.M_APP_TYPE_PARAMETERS;
}
if (!fStore
.getBoolean(PreferenceConstants.APPEARANCE_COMPRESS_PACKAGE_NAMES)) {
fTextFlagMask ^= ScriptElementLabels.P_COMPRESSED;
}
fImageFlagMask = -1;
}
@Override
public void propertyChange(PropertyChangeEvent event) {
String property = event.getProperty();
if (property.equals(PreferenceConstants.APPEARANCE_METHOD_RETURNTYPE)
|| property
.equals(PreferenceConstants.APPEARANCE_METHOD_PARAMETER_NAMES)
|| property
.equals(PreferenceConstants.APPEARANCE_METHOD_PARAMETER_TYPES)
|| property
.equals(PreferenceConstants.APPEARANCE_METHOD_TYPEPARAMETERS)
|| property
.equals(PreferenceConstants.APPEARANCE_PKG_NAME_PATTERN_FOR_PKG_VIEW)
|| property
.equals(PreferenceConstants.APPEARANCE_COMPRESS_PACKAGE_NAMES)) {
initMasks();
LabelProviderChangedEvent lpEvent = new LabelProviderChangedEvent(
this, null); // refresh
// all
fireLabelProviderChanged(lpEvent);
}
}
@Override
public void dispose() {
fStore.removePropertyChangeListener(this);
super.dispose();
}
@Override
protected int evaluateImageFlags(Object element) {
return getImageFlags() & fImageFlagMask;
}
@Override
protected long evaluateTextFlags(Object element) {
return getTextFlags() & fTextFlagMask;
}
}