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 java.util.ArrayList;
15 import org.eclipse.core.resources.IStorage;
16 import org.eclipse.jface.viewers.ILabelDecorator;
17 import org.eclipse.jface.viewers.ILabelProviderListener;
18 import org.eclipse.jface.viewers.LabelProvider;
19 import org.eclipse.swt.graphics.Image;
21 public class JavaUILabelProvider extends LabelProvider {
23 protected JavaElementImageProvider fImageLabelProvider;
24 protected StorageLabelProvider fStorageLabelProvider;
26 protected ArrayList fLabelDecorators;
28 private int fImageFlags;
29 private int fTextFlags;
32 * Creates a new label provider with default flags.
34 public JavaUILabelProvider() {
35 this(JavaElementLabels.M_PARAMETER_TYPES, JavaElementImageProvider.OVERLAY_ICONS);
39 * @param textFlags Flags defined in <code>JavaElementLabels</code>.
40 * @param imageFlags Flags defined in <code>JavaElementImageProvider</code>.
42 public JavaUILabelProvider(int textFlags, int imageFlags) {
43 fImageLabelProvider= new JavaElementImageProvider();
44 fLabelDecorators= null;
46 fStorageLabelProvider= new StorageLabelProvider();
47 fImageFlags= imageFlags;
48 fTextFlags= textFlags;
52 * Adds a decorator to the label provider
54 public void addLabelDecorator(ILabelDecorator decorator) {
55 if (fLabelDecorators == null) {
56 fLabelDecorators= new ArrayList(2);
58 fLabelDecorators.add(decorator);
63 * @param textFlags The textFlags to set
65 public final void setTextFlags(int textFlags) {
66 fTextFlags= textFlags;
71 * @param imageFlags The imageFlags to set
73 public final void setImageFlags(int imageFlags) {
74 fImageFlags= imageFlags;
78 * Gets the image flags.
79 * Can be overwriten by super classes.
80 * @return Returns a int
82 public final int getImageFlags() {
87 * Gets the text flags.
88 * @return Returns a int
90 public final int getTextFlags() {
95 * Evaluates the image flags for a element.
96 * Can be overwriten by super classes.
97 * @return Returns a int
99 protected int evaluateImageFlags(Object element) {
100 return getImageFlags();
104 * Evaluates the text flags for a element. Can be overwriten by super classes.
105 * @return Returns a int
107 protected int evaluateTextFlags(Object element) {
108 return getTextFlags();
113 * @see ILabelProvider#getImage
115 public Image getImage(Object element) {
116 Image result= fImageLabelProvider.getImageLabel(element, evaluateImageFlags(element));
117 if (result == null && (element instanceof IStorage)) {
118 result= fStorageLabelProvider.getImage(element);
120 if (fLabelDecorators != null && result != null) {
121 for (int i= 0; i < fLabelDecorators.size(); i++) {
122 ILabelDecorator decorator= (ILabelDecorator) fLabelDecorators.get(i);
123 result= decorator.decorateImage(result, element);
130 * @see ILabelProvider#getText
132 public String getText(Object element) {
133 String result= JavaElementLabels.getTextLabel(element, evaluateTextFlags(element));
134 if (result.length() == 0 && (element instanceof IStorage)) {
135 result= fStorageLabelProvider.getText(element);
137 if (fLabelDecorators != null && result.length() > 0) {
138 for (int i= 0; i < fLabelDecorators.size(); i++) {
139 ILabelDecorator decorator= (ILabelDecorator) fLabelDecorators.get(i);
140 result= decorator.decorateText(result, element);
147 * @see IBaseLabelProvider#dispose
149 public void dispose() {
150 if (fLabelDecorators != null) {
151 for (int i= 0; i < fLabelDecorators.size(); i++) {
152 ILabelDecorator decorator= (ILabelDecorator) fLabelDecorators.get(i);
155 fLabelDecorators= null;
157 fStorageLabelProvider.dispose();
158 fImageLabelProvider.dispose();
162 * @see IBaseLabelProvider#addListener(ILabelProviderListener)
164 public void addListener(ILabelProviderListener listener) {
165 if (fLabelDecorators != null) {
166 for (int i= 0; i < fLabelDecorators.size(); i++) {
167 ILabelDecorator decorator= (ILabelDecorator) fLabelDecorators.get(i);
168 decorator.addListener(listener);
171 super.addListener(listener);
175 * @see IBaseLabelProvider#isLabelProperty(Object, String)
177 public boolean isLabelProperty(Object element, String property) {
182 * @see IBaseLabelProvider#removeListener(ILabelProviderListener)
184 public void removeListener(ILabelProviderListener listener) {
185 if (fLabelDecorators != null) {
186 for (int i= 0; i < fLabelDecorators.size(); i++) {
187 ILabelDecorator decorator= (ILabelDecorator) fLabelDecorators.get(i);
188 decorator.removeListener(listener);
191 super.removeListener(listener);
194 public static ILabelDecorator[] getDecorators(boolean errortick, ILabelDecorator extra) {
197 return new ILabelDecorator[] {};
199 return new ILabelDecorator[] { extra };
203 return new ILabelDecorator[] { extra };