Organized imports
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / internal / ui / viewsupport / DecoratingJavaLabelProvider.java
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
7  * 
8  * Contributors:
9  *     IBM Corporation - initial API and implementation
10  *******************************************************************************/
11 package net.sourceforge.phpdt.internal.ui.viewsupport;
12
13 import net.sourceforge.phpdt.ui.OverrideIndicatorLabelDecorator;
14 import net.sourceforge.phpdt.ui.ProblemsLabelDecorator;
15 import net.sourceforge.phpeclipse.PHPeclipsePlugin;
16
17 import org.eclipse.core.runtime.CoreException;
18 import org.eclipse.jface.viewers.DecoratingLabelProvider;
19 import org.eclipse.swt.graphics.Image;
20 import org.eclipse.ui.IDecoratorManager;
21 import org.eclipse.ui.PlatformUI;
22
23 /**
24  * Decorator prepared for the switch to use lightweight label decorators:
25  * uncomment the lbale decorator entries in plugin.xml and change
26  * USE_LIGHTWEIGHT to true.
27  * Certain views don't want problems or override indicators, so they signal this
28  * in the constructor. So on each getImage the corrsponding decorators are
29  * turned off and on again.
30   */
31 public class DecoratingJavaLabelProvider extends DecoratingLabelProvider {
32
33         private static final boolean USE_LIGHTWEIGHT= false;
34         
35         private static final String PROBLEM_DECORATOR_ID= "net.sourceforge.phpdt.ui.problem.decorator"; //$NON-NLS-1$
36         private static final String OVERRIDE_DECORATOR_ID= "net.sourceforge.phpdt.ui.override.decorator"; //$NON-NLS-1$
37         
38         private boolean fUseErrorTick;
39         private boolean fUseOverride;
40
41         /**
42          * Decorating label provider for Java. Combines a JavaUILabelProvider
43          * with problem and override indicuator with the workbench decorator (label
44          * decorator extension point).
45          */
46         public DecoratingJavaLabelProvider(JavaUILabelProvider labelProvider) {
47                 this(labelProvider, true, true);
48         }
49
50         /**
51          * Decorating label provider for Java. Combines a JavaUILabelProvider
52          * (if enabled with problem and override indicator) with the workbench
53          * decorator (label decorator extension point).
54          */
55         public DecoratingJavaLabelProvider(JavaUILabelProvider labelProvider, boolean errorTick, boolean override) {
56                 super(labelProvider, PlatformUI.getWorkbench().getDecoratorManager().getLabelDecorator());
57                 fUseErrorTick= errorTick;
58                 fUseOverride= override;
59                 if (!USE_LIGHTWEIGHT) {
60                         if (errorTick) {
61                                 labelProvider.addLabelDecorator(new ProblemsLabelDecorator(null));
62                         }
63                         if (override) {
64                                 labelProvider.addLabelDecorator(new OverrideIndicatorLabelDecorator(null));
65                         }
66                 }
67         }
68
69         /* (non-Javadoc)
70          * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object)
71          */
72         public Image getImage(Object element) {
73                 if (USE_LIGHTWEIGHT) {
74                         IDecoratorManager manager= PlatformUI.getWorkbench().getDecoratorManager();
75                         
76                         boolean disableErrorTick= manager.getEnabled(PROBLEM_DECORATOR_ID) && !fUseErrorTick;
77                         boolean disableOverride= manager.getEnabled(OVERRIDE_DECORATOR_ID) && !fUseOverride;
78                         try {
79                                 if (disableErrorTick) {
80                                         manager.setEnabled(PROBLEM_DECORATOR_ID, false);
81                                 }
82                                 if (disableOverride) {
83                                         manager.setEnabled(OVERRIDE_DECORATOR_ID, false);
84                                 }
85                                 Image image= super.getImage(element);
86                                 if (disableErrorTick) {
87                                         manager.setEnabled(PROBLEM_DECORATOR_ID, true);
88                                 }
89                                 if (disableOverride) {
90                                         manager.setEnabled(OVERRIDE_DECORATOR_ID, true);
91                                 }
92                                 return image;
93                         } catch (CoreException e) {
94                                 PHPeclipsePlugin.log(e);
95                         }
96                 }
97                 return super.getImage(element);
98         }
99
100         /* (non-Javadoc)
101          * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object)
102          */
103         public String getText(Object element) {
104                 if (USE_LIGHTWEIGHT) {
105                         IDecoratorManager manager= PlatformUI.getWorkbench().getDecoratorManager();
106                         
107                         boolean disableErrorTick= manager.getEnabled(PROBLEM_DECORATOR_ID) && !fUseErrorTick;
108                         boolean disableOverride= manager.getEnabled(OVERRIDE_DECORATOR_ID) && !fUseOverride;
109                         try {
110                                 if (disableErrorTick) {
111                                         manager.setEnabled(PROBLEM_DECORATOR_ID, false);
112                                 }
113                                 if (disableOverride) {
114                                         manager.setEnabled(OVERRIDE_DECORATOR_ID, false);
115                                 }
116                                 String text= super.getText(element);
117                                 if (disableErrorTick) {
118                                         manager.setEnabled(PROBLEM_DECORATOR_ID, true);
119                                 }
120                                 if (disableOverride) {
121                                         manager.setEnabled(OVERRIDE_DECORATOR_ID, true);
122                                 }
123                                 return text;
124                         } catch (CoreException e) {
125                                 PHPeclipsePlugin.log(e);
126                         }
127                 }
128                 return super.getText(element);
129         }
130
131 }