/******************************************************************************* * Copyright (c) 2000, 2003 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Common Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/cpl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package net.sourceforge.phpdt.internal.ui.viewsupport; import java.util.ArrayList; import org.eclipse.core.resources.IStorage; import org.eclipse.jface.viewers.ILabelDecorator; import org.eclipse.jface.viewers.ILabelProviderListener; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.swt.graphics.Image; public class JavaUILabelProvider extends LabelProvider { protected JavaElementImageProvider fImageLabelProvider; protected StorageLabelProvider fStorageLabelProvider; protected ArrayList fLabelDecorators; private int fImageFlags; private int fTextFlags; /** * Creates a new label provider with default flags. */ // public JavaUILabelProvider() { // this(JavaElementLabels.M_PARAMETER_TYPES, // JavaElementImageProvider.OVERLAY_ICONS); // } /** * @param textFlags * Flags defined in JavaElementLabels. * @param imageFlags * Flags defined in JavaElementImageProvider. */ public JavaUILabelProvider(int textFlags, int imageFlags) { fImageLabelProvider = new JavaElementImageProvider(); fLabelDecorators = null; fStorageLabelProvider = new StorageLabelProvider(); fImageFlags = imageFlags; fTextFlags = textFlags; } /** * Adds a decorator to the label provider */ public void addLabelDecorator(ILabelDecorator decorator) { if (fLabelDecorators == null) { fLabelDecorators = new ArrayList(2); } fLabelDecorators.add(decorator); } /** * Sets the textFlags. * * @param textFlags * The textFlags to set */ public final void setTextFlags(int textFlags) { fTextFlags = textFlags; } /** * Sets the imageFlags * * @param imageFlags * The imageFlags to set */ public final void setImageFlags(int imageFlags) { fImageFlags = imageFlags; } /** * Gets the image flags. Can be overwriten by super classes. * * @return Returns a int */ public final int getImageFlags() { return fImageFlags; } /** * Gets the text flags. * * @return Returns a int */ public final int getTextFlags() { return fTextFlags; } /** * Evaluates the image flags for a element. Can be overwriten by super * classes. * * @return Returns a int */ protected int evaluateImageFlags(Object element) { return getImageFlags(); } /** * Evaluates the text flags for a element. Can be overwriten by super * classes. * * @return Returns a int */ protected int evaluateTextFlags(Object element) { return getTextFlags(); } /* * (non-Javadoc) * * @see ILabelProvider#getImage */ public Image getImage(Object element) { Image result = fImageLabelProvider.getImageLabel(element, evaluateImageFlags(element)); if (result == null && (element instanceof IStorage)) { result = fStorageLabelProvider.getImage(element); } if (fLabelDecorators != null && result != null) { for (int i = 0; i < fLabelDecorators.size(); i++) { ILabelDecorator decorator = (ILabelDecorator) fLabelDecorators .get(i); result = decorator.decorateImage(result, element); } } return result; } /* * (non-Javadoc) * * @see ILabelProvider#getText */ public String getText(Object element) { String result = JavaElementLabels.getTextLabel(element, evaluateTextFlags(element)); if (result.length() == 0 && (element instanceof IStorage)) { result = fStorageLabelProvider.getText(element); } if (fLabelDecorators != null && result.length() > 0) { for (int i = 0; i < fLabelDecorators.size(); i++) { ILabelDecorator decorator = (ILabelDecorator) fLabelDecorators .get(i); result = decorator.decorateText(result, element); } } return result; } /* * (non-Javadoc) * * @see IBaseLabelProvider#dispose */ public void dispose() { if (fLabelDecorators != null) { for (int i = 0; i < fLabelDecorators.size(); i++) { ILabelDecorator decorator = (ILabelDecorator) fLabelDecorators .get(i); decorator.dispose(); } fLabelDecorators = null; } fStorageLabelProvider.dispose(); fImageLabelProvider.dispose(); } /* * (non-Javadoc) * * @see IBaseLabelProvider#addListener(ILabelProviderListener) */ public void addListener(ILabelProviderListener listener) { if (fLabelDecorators != null) { for (int i = 0; i < fLabelDecorators.size(); i++) { ILabelDecorator decorator = (ILabelDecorator) fLabelDecorators .get(i); decorator.addListener(listener); } } super.addListener(listener); } /* * (non-Javadoc) * * @see IBaseLabelProvider#isLabelProperty(Object, String) */ public boolean isLabelProperty(Object element, String property) { return true; } /* * (non-Javadoc) * * @see IBaseLabelProvider#removeListener(ILabelProviderListener) */ public void removeListener(ILabelProviderListener listener) { if (fLabelDecorators != null) { for (int i = 0; i < fLabelDecorators.size(); i++) { ILabelDecorator decorator = (ILabelDecorator) fLabelDecorators .get(i); decorator.removeListener(listener); } } super.removeListener(listener); } // public static ILabelDecorator[] getDecorators(boolean errortick, // ILabelDecorator extra) { // if (errortick) { // if (extra == null) { // return new ILabelDecorator[] {}; // } else { // return new ILabelDecorator[] { extra }; // } // } // if (extra != null) { // return new ILabelDecorator[] { extra }; // } // return null; // } }