1 /*******************************************************************************
2 * Copyright (c) 2000, 2003 IBM Corporation and others.
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Common Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/cpl-v10.html
9 * IBM Corporation - initial API and implementation
10 *******************************************************************************/
11 package net.sourceforge.phpdt.internal.ui.viewsupport;
13 import net.sourceforge.phpdt.ui.PreferenceConstants;
15 import org.eclipse.jface.preference.IPreferenceStore;
16 import org.eclipse.jface.util.IPropertyChangeListener;
17 import org.eclipse.jface.util.PropertyChangeEvent;
18 import org.eclipse.jface.viewers.LabelProviderChangedEvent;
22 * JavaUILabelProvider that respects settings from the Appearance preference page.
23 * Triggers a viewer update when a preference changes.
25 public class AppearanceAwareLabelProvider extends JavaUILabelProvider implements IPropertyChangeListener {
27 public final static int DEFAULT_TEXTFLAGS= JavaElementLabels.ROOT_VARIABLE | JavaElementLabels.M_PARAMETER_TYPES |
28 JavaElementLabels.M_APP_RETURNTYPE | JavaElementLabels.REFERENCED_ROOT_POST_QUALIFIED;
29 public final static int DEFAULT_IMAGEFLAGS= JavaElementImageProvider.OVERLAY_ICONS;
31 private int fTextFlagMask;
32 private int fImageFlagMask;
35 * Constructor for AppearanceAwareLabelProvider.
37 public AppearanceAwareLabelProvider(int textFlags, int imageFlags) {
38 super(textFlags, imageFlags);
40 PreferenceConstants.getPreferenceStore().addPropertyChangeListener(this);
44 * Creates a labelProvider with DEFAULT_TEXTFLAGS and DEFAULT_IMAGEFLAGS
46 public AppearanceAwareLabelProvider() {
47 this(DEFAULT_TEXTFLAGS, DEFAULT_IMAGEFLAGS);
50 private void initMasks() {
51 IPreferenceStore store= PreferenceConstants.getPreferenceStore();
53 if (!store.getBoolean(PreferenceConstants.APPEARANCE_METHOD_RETURNTYPE)) {
54 fTextFlagMask ^= JavaElementLabels.M_APP_RETURNTYPE;
56 if (!store.getBoolean(PreferenceConstants.APPEARANCE_COMPRESS_PACKAGE_NAMES)) {
57 fTextFlagMask ^= JavaElementLabels.P_COMPRESSED;
64 * @see IPropertyChangeListener#propertyChange(PropertyChangeEvent)
66 public void propertyChange(PropertyChangeEvent event) {
67 String property= event.getProperty();
68 if (property.equals(PreferenceConstants.APPEARANCE_METHOD_RETURNTYPE)
69 || property.equals(PreferenceConstants.APPEARANCE_PKG_NAME_PATTERN_FOR_PKG_VIEW)
70 || property.equals(PreferenceConstants.APPEARANCE_COMPRESS_PACKAGE_NAMES)) {
72 LabelProviderChangedEvent lpEvent= new LabelProviderChangedEvent(this, null); // refresh all
73 fireLabelProviderChanged(lpEvent);
78 * @see IBaseLabelProvider#dispose()
80 public void dispose() {
81 PreferenceConstants.getPreferenceStore().removePropertyChangeListener(this);
86 * @see JavaUILabelProvider#evaluateImageFlags()
88 protected int evaluateImageFlags(Object element) {
89 return getImageFlags() & fImageFlagMask;
93 * @see JavaUILabelProvider#evaluateTextFlags()
95 protected int evaluateTextFlags(Object element) {
96 return getTextFlags() & fTextFlagMask;