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