1 /*******************************************************************************
2 * Copyright (c) 2011, 2014 Ericsson
4 * All rights reserved. This program and the accompanying materials are
5 * made available under the terms of the Eclipse Public License v1.0 which
6 * accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
10 * Francois Chouinard - Initial API and implementation
11 * Patrick Tasse - Add support for unknown trace type icon
12 *******************************************************************************/
14 package org
.eclipse
.tracecompass
.tmf
.ui
.project
.model
;
18 import org
.eclipse
.core
.runtime
.IConfigurationElement
;
19 import org
.eclipse
.core
.runtime
.Platform
;
20 import org
.eclipse
.jface
.resource
.ImageDescriptor
;
21 import org
.eclipse
.jface
.viewers
.DelegatingStyledCellLabelProvider
.IStyledLabelProvider
;
22 import org
.eclipse
.jface
.viewers
.ILabelProviderListener
;
23 import org
.eclipse
.jface
.viewers
.StyledString
;
24 import org
.eclipse
.jface
.viewers
.StyledString
.Styler
;
25 import org
.eclipse
.swt
.graphics
.Image
;
26 import org
.eclipse
.tracecompass
.internal
.tmf
.ui
.Activator
;
27 import org
.eclipse
.tracecompass
.tmf
.core
.project
.model
.TmfTraceType
;
28 import org
.eclipse
.tracecompass
.tmf
.core
.project
.model
.TmfTraceType
.TraceElementType
;
29 import org
.eclipse
.ui
.IMemento
;
30 import org
.eclipse
.ui
.ISharedImages
;
31 import org
.eclipse
.ui
.PlatformUI
;
32 import org
.eclipse
.ui
.model
.WorkbenchLabelProvider
;
33 import org
.eclipse
.ui
.navigator
.ICommonContentExtensionSite
;
34 import org
.eclipse
.ui
.navigator
.ICommonLabelProvider
;
35 import org
.osgi
.framework
.Bundle
;
38 * The TMF project label provider for the tree viewer in the project explorer view.
41 * @author Francois Chouinard
43 public class TmfNavigatorLabelProvider
implements ICommonLabelProvider
, IStyledLabelProvider
{
45 // ------------------------------------------------------------------------
47 // ------------------------------------------------------------------------
49 private static final Image FOLDER_ICON
= PlatformUI
.getWorkbench().getSharedImages().getImage(ISharedImages
.IMG_OBJ_FOLDER
);
50 private static final String TRACE_ICON_FILE
= "icons/elcl16/trace.gif"; //$NON-NLS-1$
51 private static final String EXPERIMENT_ICON_FILE
= "icons/elcl16/experiment.gif"; //$NON-NLS-1$
52 private static final String ANALYSIS_ICON_FILE
= "icons/ovr16/experiment_folder_ovr.png"; //$NON-NLS-1$
53 private static final String VIEW_ICON_FILE
= "icons/obj16/node_obj.gif"; //$NON-NLS-1$
55 // ------------------------------------------------------------------------
57 // ------------------------------------------------------------------------
59 private final Image fDefaultTraceIcon
;
60 private final Image fExperimentIcon
;
61 private final Image fDefaultAnalysisIcon
;
62 private final Image fDefaultViewIcon
;
64 private final WorkbenchLabelProvider fWorkspaceLabelProvider
= new WorkbenchLabelProvider();
66 // ------------------------------------------------------------------------
68 // ------------------------------------------------------------------------
73 * Creates the TMF navigator content provider.
75 public TmfNavigatorLabelProvider() {
76 Bundle bundle
= Activator
.getDefault().getBundle();
77 fDefaultTraceIcon
= loadIcon(bundle
, TRACE_ICON_FILE
);
78 fExperimentIcon
= loadIcon(bundle
, EXPERIMENT_ICON_FILE
);
79 fDefaultAnalysisIcon
= loadIcon(bundle
, ANALYSIS_ICON_FILE
);
80 fDefaultViewIcon
= loadIcon(bundle
, VIEW_ICON_FILE
);
83 private static Image
loadIcon(Bundle bundle
, String url
) {
84 Activator plugin
= Activator
.getDefault();
85 String key
= bundle
.getSymbolicName() + "/" + url
; //$NON-NLS-1$
86 Image icon
= plugin
.getImageRegistry().get(key
);
88 URL imageURL
= bundle
.getResource(url
);
89 ImageDescriptor descriptor
= ImageDescriptor
.createFromURL(imageURL
);
90 if (descriptor
!= null) {
91 icon
= descriptor
.createImage();
92 plugin
.getImageRegistry().put(key
, icon
);
98 // ------------------------------------------------------------------------
99 // ICommonLabelProvider
100 // ------------------------------------------------------------------------
103 public Image
getImage(Object element
) {
105 if (element
instanceof TmfCommonProjectElement
) {
106 TmfCommonProjectElement trace
= (TmfCommonProjectElement
) element
;
107 String traceType
= trace
.getTraceType();
108 if (traceType
== null || TmfTraceType
.getTraceType(traceType
) == null) {
109 // request the label to the Eclipse platform
110 return fWorkspaceLabelProvider
.getImage(((TmfCommonProjectElement
) element
).getResource());
113 IConfigurationElement traceUIAttributes
= TmfTraceTypeUIUtils
.getTraceUIAttributes(traceType
, (element
instanceof TmfTraceElement
) ? TraceElementType
.TRACE
: TraceElementType
.EXPERIMENT
);
114 if (traceUIAttributes
!= null) {
115 String iconAttr
= traceUIAttributes
.getAttribute(TmfTraceTypeUIUtils
.ICON_ATTR
);
116 if (iconAttr
!= null) {
117 String name
= traceUIAttributes
.getContributor().getName();
119 Bundle bundle
= Platform
.getBundle(name
);
120 if (bundle
!= null) {
121 Image image
= loadIcon(bundle
, iconAttr
);
130 if (element
instanceof TmfTraceElement
) {
131 return fDefaultTraceIcon
;
133 return fExperimentIcon
;
136 if (element
instanceof TmfExperimentFolder
) {
140 if (element
instanceof TmfTraceFolder
) {
144 if (element
instanceof TmfAnalysisOutputElement
) {
145 TmfAnalysisOutputElement output
= (TmfAnalysisOutputElement
) element
;
146 Image icon
= output
.getIcon();
148 return fDefaultViewIcon
;
153 if (element
instanceof TmfAnalysisElement
) {
154 TmfAnalysisElement analysis
= (TmfAnalysisElement
) element
;
155 String iconFile
= analysis
.getIconFile();
156 if (iconFile
!= null) {
157 Bundle bundle
= analysis
.getBundle();
158 if (bundle
!= null) {
159 Image icon
= loadIcon(bundle
, iconFile
);
163 return fDefaultAnalysisIcon
;
170 public String
getText(Object element
) {
172 if (element
instanceof TmfTracesFolder
) {
173 TmfTracesFolder folder
= (TmfTracesFolder
) element
;
174 return folder
.getName() + " [" + folder
.getTraces().size() + "]"; //$NON-NLS-1$ //$NON-NLS-2$
177 if (element
instanceof TmfTraceFolder
) {
178 TmfTraceFolder folder
= (TmfTraceFolder
) element
;
179 int nbTraces
= folder
.getTraces().size();
181 return folder
.getName() + " [" + folder
.getTraces().size() + "]"; //$NON-NLS-1$ //$NON-NLS-2$
183 return folder
.getName();
186 if (element
instanceof TmfTraceElement
) {
187 TmfTraceElement trace
= (TmfTraceElement
) element
;
188 if (trace
.getParent() instanceof TmfExperimentElement
) {
189 return trace
.getElementPath();
191 return trace
.getName();
194 if (element
instanceof TmfExperimentElement
) {
195 TmfExperimentElement folder
= (TmfExperimentElement
) element
;
196 return folder
.getName() + " [" + folder
.getTraces().size() + "]"; //$NON-NLS-1$ //$NON-NLS-2$
199 if (element
instanceof TmfExperimentFolder
) {
200 TmfExperimentFolder folder
= (TmfExperimentFolder
) element
;
201 return folder
.getName() + " [" + folder
.getChildren().size() + "]"; //$NON-NLS-1$ //$NON-NLS-2$
205 if (element
instanceof ITmfProjectModelElement
) {
206 return ((ITmfProjectModelElement
) element
).getName();
213 public void addListener(ILabelProviderListener listener
) {
217 public void dispose() {
221 public boolean isLabelProperty(Object element
, String property
) {
226 public void removeListener(ILabelProviderListener listener
) {
230 public void restoreState(IMemento aMemento
) {
234 public void saveState(IMemento aMemento
) {
238 public String
getDescription(Object anElement
) {
239 return getText(anElement
);
243 public void init(ICommonContentExtensionSite aConfig
) {
247 public StyledString
getStyledText(Object element
) {
248 String text
= getText(element
);
250 if (element
instanceof ITmfStyledProjectModelElement
) {
251 Styler styler
= ((ITmfStyledProjectModelElement
) element
).getStyler();
252 if (styler
!= null) {
253 return new StyledString(text
, styler
);
256 return new StyledString(text
);