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
.linuxtools
.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
.linuxtools
.internal
.tmf
.ui
.Activator
;
26 import org
.eclipse
.linuxtools
.tmf
.core
.project
.model
.TmfTraceType
;
27 import org
.eclipse
.linuxtools
.tmf
.core
.project
.model
.TmfTraceType
.TraceElementType
;
28 import org
.eclipse
.swt
.graphics
.Image
;
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 fFolderIcon
= PlatformUI
.getWorkbench().getSharedImages().getImage(ISharedImages
.IMG_OBJ_FOLDER
);
50 private static final String fTraceIconFile
= "icons/elcl16/trace.gif"; //$NON-NLS-1$
51 private static final String fExperimentIconFile
= "icons/elcl16/experiment.gif"; //$NON-NLS-1$
52 private static final String fAnalysisIconFile
= "icons/ovr16/experiment_folder_ovr.png"; //$NON-NLS-1$
53 private static final String fViewIconFile
= "icons/obj16/node_obj.gif"; //$NON-NLS-1$
55 // ------------------------------------------------------------------------
57 // ------------------------------------------------------------------------
59 private final Image fTraceFolderIcon
= fFolderIcon
;
60 private final Image fExperimentFolderIcon
= fFolderIcon
;
62 private final Image fDefaultTraceIcon
;
63 private final Image fExperimentIcon
;
64 private final Image fDefaultAnalysisIcon
;
65 private final Image fDefaultViewIcon
;
67 private final WorkbenchLabelProvider fWorkspaceLabelProvider
= new WorkbenchLabelProvider();
69 // ------------------------------------------------------------------------
71 // ------------------------------------------------------------------------
76 * Creates the TMF navigator content provider.
78 public TmfNavigatorLabelProvider() {
79 Bundle bundle
= Activator
.getDefault().getBundle();
80 fDefaultTraceIcon
= loadIcon(bundle
, fTraceIconFile
);
81 fExperimentIcon
= loadIcon(bundle
, fExperimentIconFile
);
82 fDefaultAnalysisIcon
= loadIcon(bundle
, fAnalysisIconFile
);
83 fDefaultViewIcon
= loadIcon(bundle
, fViewIconFile
);
86 private static Image
loadIcon(Bundle bundle
, String url
) {
87 Activator plugin
= Activator
.getDefault();
88 String key
= bundle
.getSymbolicName() + "/" + url
; //$NON-NLS-1$
89 Image icon
= plugin
.getImageRegistry().get(key
);
91 URL imageURL
= bundle
.getResource(url
);
92 ImageDescriptor descriptor
= ImageDescriptor
.createFromURL(imageURL
);
93 if (descriptor
!= null) {
94 icon
= descriptor
.createImage();
95 plugin
.getImageRegistry().put(key
, icon
);
101 // ------------------------------------------------------------------------
102 // ICommonLabelProvider
103 // ------------------------------------------------------------------------
106 public Image
getImage(Object element
) {
108 if (element
instanceof TmfCommonProjectElement
) {
109 TmfCommonProjectElement trace
= (TmfCommonProjectElement
) element
;
110 String traceType
= trace
.getTraceType();
111 if (traceType
== null || TmfTraceType
.getTraceType(traceType
) == null) {
112 // request the label to the Eclipse platform
113 return fWorkspaceLabelProvider
.getImage(((TmfCommonProjectElement
) element
).getResource());
116 IConfigurationElement traceUIAttributes
= TmfTraceTypeUIUtils
.getTraceUIAttributes(traceType
, (element
instanceof TmfTraceElement
) ? TraceElementType
.TRACE
: TraceElementType
.EXPERIMENT
);
117 if (traceUIAttributes
!= null) {
118 String iconAttr
= traceUIAttributes
.getAttribute(TmfTraceTypeUIUtils
.ICON_ATTR
);
119 if (iconAttr
!= null) {
120 String name
= traceUIAttributes
.getContributor().getName();
122 Bundle bundle
= Platform
.getBundle(name
);
123 if (bundle
!= null) {
124 Image image
= loadIcon(bundle
, iconAttr
);
133 if (element
instanceof TmfTraceElement
) {
134 return fDefaultTraceIcon
;
136 return fExperimentIcon
;
139 if (element
instanceof TmfExperimentFolder
) {
140 return fExperimentFolderIcon
;
143 if (element
instanceof TmfTraceFolder
) {
144 return fTraceFolderIcon
;
147 if (element
instanceof TmfAnalysisOutputElement
) {
148 TmfAnalysisOutputElement output
= (TmfAnalysisOutputElement
) element
;
149 Image icon
= output
.getIcon();
151 return fDefaultViewIcon
;
156 if (element
instanceof TmfAnalysisElement
) {
157 TmfAnalysisElement analysis
= (TmfAnalysisElement
) element
;
158 String iconFile
= analysis
.getIconFile();
159 if (iconFile
!= null) {
160 Bundle bundle
= analysis
.getBundle();
161 if (bundle
!= null) {
162 Image icon
= loadIcon(bundle
, iconFile
);
166 return fDefaultAnalysisIcon
;
173 public String
getText(Object element
) {
175 if (element
instanceof TmfTracesFolder
) {
176 TmfTracesFolder folder
= (TmfTracesFolder
) element
;
177 return folder
.getName() + " [" + folder
.getTraces().size() + "]"; //$NON-NLS-1$ //$NON-NLS-2$
180 if (element
instanceof TmfTraceFolder
) {
181 TmfTraceFolder folder
= (TmfTraceFolder
) element
;
182 int nbTraces
= folder
.getTraces().size();
184 return folder
.getName() + " [" + folder
.getTraces().size() + "]"; //$NON-NLS-1$ //$NON-NLS-2$
186 return folder
.getName();
189 if (element
instanceof TmfTraceElement
) {
190 TmfTraceElement trace
= (TmfTraceElement
) element
;
191 if (trace
.getParent() instanceof TmfExperimentElement
) {
192 return trace
.getElementPath();
194 return trace
.getName();
197 if (element
instanceof TmfExperimentElement
) {
198 TmfExperimentElement folder
= (TmfExperimentElement
) element
;
199 return folder
.getName() + " [" + folder
.getTraces().size() + "]"; //$NON-NLS-1$ //$NON-NLS-2$
202 if (element
instanceof TmfExperimentFolder
) {
203 TmfExperimentFolder folder
= (TmfExperimentFolder
) element
;
204 return folder
.getName() + " [" + folder
.getChildren().size() + "]"; //$NON-NLS-1$ //$NON-NLS-2$
208 if (element
instanceof ITmfProjectModelElement
) {
209 return ((ITmfProjectModelElement
) element
).getName();
216 public void addListener(ILabelProviderListener listener
) {
220 public void dispose() {
224 public boolean isLabelProperty(Object element
, String property
) {
229 public void removeListener(ILabelProviderListener listener
) {
233 public void restoreState(IMemento aMemento
) {
237 public void saveState(IMemento aMemento
) {
241 public String
getDescription(Object anElement
) {
242 return getText(anElement
);
246 public void init(ICommonContentExtensionSite aConfig
) {
253 public StyledString
getStyledText(Object element
) {
254 String text
= getText(element
);
256 if (element
instanceof ITmfStyledProjectModelElement
) {
257 Styler styler
= ((ITmfStyledProjectModelElement
) element
).getStyler();
258 if (styler
!= null) {
259 return new StyledString(text
, styler
);
262 return new StyledString(text
);