1 /*******************************************************************************
2 * Copyright (c) 2011, 2012 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 * Patrick Tasse - Initial API and implementation
11 *******************************************************************************/
13 package org
.eclipse
.linuxtools
.tmf
.ui
.project
.model
;
15 import java
.util
.LinkedList
;
16 import java
.util
.List
;
18 import org
.eclipse
.core
.resources
.IResource
;
19 import org
.eclipse
.core
.runtime
.CoreException
;
20 import org
.eclipse
.core
.runtime
.IConfigurationElement
;
21 import org
.eclipse
.core
.runtime
.Platform
;
22 import org
.eclipse
.linuxtools
.internal
.tmf
.ui
.Activator
;
23 import org
.eclipse
.linuxtools
.tmf
.core
.TmfCommonConstants
;
26 * Utility class for accessing TMF trace type extensions from the platform's extensions registry.
29 * @author Patrick Tasse
32 public class TmfTraceType
{
37 public static final String TMF_TRACE_TYPE_ID
= "org.eclipse.linuxtools.tmf.ui.tracetype"; //$NON-NLS-1$
40 * Extension point element 'Category'
42 public static final String CATEGORY_ELEM
= "category"; //$NON-NLS-1$
44 * Extension point element 'Type'
46 public static final String TYPE_ELEM
= "type"; //$NON-NLS-1$
48 * Extension point element 'Default editor'
50 public static final String DEFAULT_EDITOR_ELEM
= "defaultEditor"; //$NON-NLS-1$
52 * Extension point element 'Events table type'
54 public static final String EVENTS_TABLE_TYPE_ELEM
= "eventsTableType"; //$NON-NLS-1$
56 * Extension point element 'Statistics viewer type'
60 public static final String STATISTICS_VIEWER_ELEM
= "statisticsViewerType"; //$NON-NLS-1$
63 * Extension point attribute 'ID'
65 public static final String ID_ATTR
= "id"; //$NON-NLS-1$
67 * Extension point attribute 'name'
69 public static final String NAME_ATTR
= "name"; //$NON-NLS-1$
71 * Extension point attribute 'category'
73 public static final String CATEGORY_ATTR
= "category"; //$NON-NLS-1$
75 * Extension point attribute 'trace_type'
77 public static final String TRACE_TYPE_ATTR
= "trace_type"; //$NON-NLS-1$
79 * Extension point attribute 'event_type'
81 public static final String EVENT_TYPE_ATTR
= "event_type"; //$NON-NLS-1$
83 * Extension point attribute 'icon'
85 public static final String ICON_ATTR
= "icon"; //$NON-NLS-1$
87 * Extension point attribute 'class'
89 public static final String CLASS_ATTR
= "class"; //$NON-NLS-1$
92 * Retrieves the category name from the platform extension registry based on the category ID
93 * @param categoryId The category ID
94 * @return the category name or empty string if not found
96 public static String
getCategoryName(String categoryId
) {
97 IConfigurationElement
[] elements
= Platform
.getExtensionRegistry()
98 .getConfigurationElementsFor(TMF_TRACE_TYPE_ID
);
99 for (IConfigurationElement element
: elements
) {
100 if (element
.getName().equals(CATEGORY_ELEM
) && categoryId
.equals(element
.getAttribute(ID_ATTR
))) {
101 return element
.getAttribute(NAME_ATTR
);
104 return ""; //$NON-NLS-1$
108 * Retrieves and instantiates an element's object based on his plug-in
109 * definition for a specific trace type.
111 * The element's object is instantiated using its 0-argument constructor.
114 * The resource where to find the information about the trace
117 * The name of the element to find under the trace type
119 * @return a new Object based on his definition in plugin.xml, or null if no
120 * definition was found
123 public static Object
getTraceTypeElement(IResource resource
, String element
) {
125 if (resource
!= null) {
126 String traceType
= resource
.getPersistentProperty(TmfCommonConstants
.TRACETYPE
);
128 * Search in the configuration if there is any viewer specified
129 * for this kind of trace type.
131 for (IConfigurationElement ce
: TmfTraceType
.getTypeElements()) {
132 if (ce
.getAttribute(TmfTraceType
.ID_ATTR
).equals(traceType
)) {
133 IConfigurationElement
[] viewerCE
= ce
.getChildren(element
);
134 if (viewerCE
.length
!= 1) {
137 return viewerCE
[0].createExecutableExtension(TmfTraceType
.CLASS_ATTR
);
141 } catch (CoreException e
) {
142 Activator
.getDefault().logError("Error creating the element from the resource", e
); //$NON-NLS-1$
148 * Retrieves all configuration elements from the platform extension registry
149 * for the trace type extension.
151 * @return an array of trace type configuration elements
153 public static IConfigurationElement
[] getTypeElements() {
154 IConfigurationElement
[] elements
= Platform
.getExtensionRegistry()
155 .getConfigurationElementsFor(TMF_TRACE_TYPE_ID
);
156 List
<IConfigurationElement
> typeElements
= new LinkedList
<IConfigurationElement
>();
157 for (IConfigurationElement element
: elements
) {
158 if (element
.getName().equals(TYPE_ELEM
)) {
159 typeElements
.add(element
);
162 return typeElements
.toArray(new IConfigurationElement
[typeElements
.size()]);