Merge branch 'master' into lttng-kepler
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.ui / src / org / eclipse / linuxtools / tmf / ui / project / model / TmfTraceType.java
1 /*******************************************************************************
2 * Copyright (c) 2011, 2012 Ericsson
3 *
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
8 *
9 * Contributors:
10 * Patrick Tasse - Initial API and implementation
11 *******************************************************************************/
12
13 package org.eclipse.linuxtools.tmf.ui.project.model;
14
15 import java.util.LinkedList;
16 import java.util.List;
17
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;
24
25 /**
26 * Utility class for accessing TMF trace type extensions from the platform's extensions registry.
27 *
28 * @version 1.0
29 * @author Patrick Tasse
30 *
31 */
32 public class TmfTraceType {
33
34 /**
35 * Extension point ID
36 */
37 public static final String TMF_TRACE_TYPE_ID = "org.eclipse.linuxtools.tmf.ui.tracetype"; //$NON-NLS-1$
38
39 /**
40 * Extension point element 'Category'
41 */
42 public static final String CATEGORY_ELEM = "category"; //$NON-NLS-1$
43 /**
44 * Extension point element 'Type'
45 */
46 public static final String TYPE_ELEM = "type"; //$NON-NLS-1$
47 /**
48 * Extension point element 'Default editor'
49 */
50 public static final String DEFAULT_EDITOR_ELEM = "defaultEditor"; //$NON-NLS-1$
51 /**
52 * Extension point element 'Events table type'
53 */
54 public static final String EVENTS_TABLE_TYPE_ELEM = "eventsTableType"; //$NON-NLS-1$
55 /**
56 * Extension point element 'Statistics viewer type'
57 *
58 * @since 2.0
59 */
60 public static final String STATISTICS_VIEWER_ELEM = "statisticsViewerType"; //$NON-NLS-1$
61
62 /**
63 * Extension point attribute 'ID'
64 */
65 public static final String ID_ATTR = "id"; //$NON-NLS-1$
66 /**
67 * Extension point attribute 'name'
68 */
69 public static final String NAME_ATTR = "name"; //$NON-NLS-1$
70 /**
71 * Extension point attribute 'category'
72 */
73 public static final String CATEGORY_ATTR = "category"; //$NON-NLS-1$
74 /**
75 * Extension point attribute 'trace_type'
76 */
77 public static final String TRACE_TYPE_ATTR = "trace_type"; //$NON-NLS-1$
78 /**
79 * Extension point attribute 'event_type'
80 */
81 public static final String EVENT_TYPE_ATTR = "event_type"; //$NON-NLS-1$
82 /**
83 * Extension point attribute 'icon'
84 */
85 public static final String ICON_ATTR = "icon"; //$NON-NLS-1$
86 /**
87 * Extension point attribute 'class'
88 */
89 public static final String CLASS_ATTR = "class"; //$NON-NLS-1$
90
91 /**
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
95 */
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);
102 }
103 }
104 return ""; //$NON-NLS-1$
105 }
106
107 /**
108 * Retrieves and instantiates an element's object based on his plug-in
109 * definition for a specific trace type.
110 *
111 * The element's object is instantiated using its 0-argument constructor.
112 *
113 * @param resource
114 * The resource where to find the information about the trace
115 * properties
116 * @param element
117 * The name of the element to find under the trace type
118 * definition
119 * @return a new Object based on his definition in plugin.xml, or null if no
120 * definition was found
121 * @since 2.0
122 */
123 public static Object getTraceTypeElement(IResource resource, String element) {
124 try {
125 if (resource != null) {
126 String traceType = resource.getPersistentProperty(TmfCommonConstants.TRACETYPE);
127 /*
128 * Search in the configuration if there is any viewer specified
129 * for this kind of trace type.
130 */
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) {
135 break;
136 }
137 return viewerCE[0].createExecutableExtension(TmfTraceType.CLASS_ATTR);
138 }
139 }
140 }
141 } catch (CoreException e) {
142 Activator.getDefault().logError("Error creating the element from the resource", e); //$NON-NLS-1$
143 }
144 return null;
145 }
146
147 /**
148 * Retrieves all configuration elements from the platform extension registry
149 * for the trace type extension.
150 *
151 * @return an array of trace type configuration elements
152 */
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);
160 }
161 }
162 return typeElements.toArray(new IConfigurationElement[typeElements.size()]);
163 }
164 }
This page took 0.033778 seconds and 5 git commands to generate.