1 /*******************************************************************************
2  * Copyright (c) 2009, 2013 Fair Issac Corp and others.
3  *
4  * This program and the accompanying materials
5  * are made available under the terms of the Eclipse Public License 2.0
6  * which accompanies this distribution, and is available at
7  * https://www.eclipse.org/legal/epl-2.0/
8  *
9  * SPDX-License-Identifier: EPL-2.0
10  *
11  * Contributors:
12  *     Fair Issac Corp - bug 287103 - NCSLabelProvider does not properly handle overrides
13  ******************************************************************************/
14 
15 package org.eclipse.ui.tests.navigator.extension;
16 
17 import java.util.HashMap;
18 import java.util.Map;
19 
20 import org.eclipse.swt.SWT;
21 import org.eclipse.swt.graphics.Color;
22 import org.eclipse.swt.graphics.Font;
23 import org.eclipse.swt.graphics.FontData;
24 import org.eclipse.swt.graphics.Image;
25 import org.eclipse.swt.widgets.Display;
26 
27 import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider;
28 import org.eclipse.jface.viewers.IColorProvider;
29 import org.eclipse.jface.viewers.IFontProvider;
30 import org.eclipse.jface.viewers.LabelProvider;
31 import org.eclipse.jface.viewers.StyledString;
32 
33 import org.eclipse.ui.IMemento;
34 import org.eclipse.ui.navigator.ICommonContentExtensionSite;
35 import org.eclipse.ui.navigator.ICommonLabelProvider;
36 import org.eclipse.ui.navigator.IDescriptionProvider;
37 
38 /**
39  * A label provider that keeps track of queries to its methods.
40  *
41  */
42 public class TrackingLabelProvider extends LabelProvider implements
43 ICommonLabelProvider, IDescriptionProvider, IColorProvider,
44 IFontProvider, IStyledLabelProvider {
45 
46 	private static final boolean PRINT_DEBUG_INFO = false;
47 	public static Color BG_COLOR = Display.getCurrent().getSystemColor(
48 			SWT.COLOR_GRAY);
49 	public static Color FG_COLOR = Display.getCurrent().getSystemColor(
50 			SWT.COLOR_BLACK);
51 	public static Font FONT = new Font(Display.getDefault(), new FontData());
52 
53 	public static final Map
54 		descriptionQueries = new HashMap(),
55 		backgroundQueries = new HashMap(),
56 		foregroundQueries = new HashMap(),
57 		fontQueries = new HashMap(),
58 		styledTextQueries = new HashMap(),
59 		textQueries = new HashMap(),
60 		imageQueries = new HashMap();
61 
62 	private String _id;
63 
64 	@Override
init(ICommonContentExtensionSite config)65 	public void init(ICommonContentExtensionSite config) {
66 		_id = config.getExtension().getId();
67 		int i = _id.lastIndexOf('.');
68 		if (i >= 0) {
69 			_id = _id.substring(i+1);
70 		}
71 	}
72 
73 	@Override
getImage(Object element)74 	public Image getImage(Object element) {
75 		_track(imageQueries, element);
76 		return null;
77 	}
78 
_track(Map map, Object element)79 	private void _track(Map map, Object element) {
80 		String entry = (String) map.get(element);
81 		StringBuilder builder = new StringBuilder(entry==null ? "" : entry);
82 		builder.append(_id);
83 		map.put(element, builder.toString());
84 		if (PRINT_DEBUG_INFO)
85 			System.out.println(_id + ": " + element + " map: " + map);
86 	}
87 
88 	@Override
getText(Object element)89 	public String getText(Object element) {
90 		_track(textQueries, element);
91 		return null;
92 	}
93 
94 	@Override
getDescription(Object element)95 	public String getDescription(Object element) {
96 		_track(descriptionQueries, element);
97 		return null;
98 	}
99 
100 	@Override
getBackground(Object element)101 	public Color getBackground(Object element) {
102 		_track(backgroundQueries, element);
103 		return null;
104 	}
105 
106 	@Override
getForeground(Object element)107 	public Color getForeground(Object element) {
108 		_track(foregroundQueries, element);
109 		return null;
110 	}
111 
112 	@Override
getFont(Object element)113 	public Font getFont(Object element) {
114 		_track(fontQueries, element);
115 		return null;
116 	}
117 
118 	@Override
getStyledText(Object element)119 	public StyledString getStyledText(Object element) {
120 		_track(styledTextQueries, element);
121 		return null;
122 	}
123 
124 	@Override
restoreState(IMemento aMemento)125 	public void restoreState(IMemento aMemento) {}
126 	@Override
saveState(IMemento aMemento)127 	public void saveState(IMemento aMemento) {}
128 
resetQueries()129 	public static void resetQueries() {
130 		if (PRINT_DEBUG_INFO)
131 			System.out.println("resetQueries()");
132 		descriptionQueries.clear();
133 		backgroundQueries.clear();
134 		foregroundQueries.clear();
135 		fontQueries.clear();
136 		styledTextQueries.clear();
137 		textQueries.clear();
138 		imageQueries.clear();
139 	}
140 }
141