Internalize some classes and fix a pile of warnings
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.ui / src / org / eclipse / linuxtools / tmf / ui / editors / TmfEventsEditor.java
CommitLineData
abfad0aa
FC
1/*******************************************************************************\r
2 * Copyright (c) 2010 Ericsson\r
ce2388e0 3 *\r
abfad0aa
FC
4 * All rights reserved. This program and the accompanying materials are\r
5 * made available under the terms of the Eclipse Public License v1.0 which\r
6 * accompanies this distribution, and is available at\r
7 * http://www.eclipse.org/legal/epl-v10.html\r
ce2388e0 8 *\r
abfad0aa
FC
9 * Contributors:\r
10 * Patrick Tasse - Initial API and implementation\r
11 *******************************************************************************/\r
12\r
13package org.eclipse.linuxtools.tmf.ui.editors;\r
14\r
12c155f5
FC
15import java.lang.reflect.Constructor;\r
16import java.lang.reflect.InvocationTargetException;\r
828e5592 17import java.util.List;\r
12c155f5 18\r
a1091415 19import org.eclipse.core.resources.IFile;\r
e2561baf
FC
20import org.eclipse.core.resources.IMarker;\r
21import org.eclipse.core.resources.IMarkerDelta;\r
abfad0aa 22import org.eclipse.core.resources.IResource;\r
e2561baf
FC
23import org.eclipse.core.resources.IResourceChangeEvent;\r
24import org.eclipse.core.resources.IResourceChangeListener;\r
25import org.eclipse.core.resources.IResourceDelta;\r
26import org.eclipse.core.resources.ResourcesPlugin;\r
abfad0aa 27import org.eclipse.core.runtime.CoreException;\r
12c155f5 28import org.eclipse.core.runtime.IConfigurationElement;\r
abfad0aa 29import org.eclipse.core.runtime.IProgressMonitor;\r
12c155f5 30import org.eclipse.core.runtime.InvalidRegistryObjectException;\r
12c155f5 31import org.eclipse.core.runtime.Platform;\r
8fd82db5 32import org.eclipse.linuxtools.internal.tmf.ui.Activator;\r
d34665f9
FC
33import org.eclipse.linuxtools.internal.tmf.ui.parsers.custom.CustomEventsTable;\r
34import org.eclipse.linuxtools.internal.tmf.ui.parsers.custom.CustomTxtTrace;\r
35import org.eclipse.linuxtools.internal.tmf.ui.parsers.custom.CustomXmlTrace;\r
36import org.eclipse.linuxtools.internal.tmf.ui.project.handlers.Messages;\r
e12ecd30 37import org.eclipse.linuxtools.tmf.core.TmfCommonConstants;\r
ce2388e0 38import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;\r
6c13869b 39import org.eclipse.linuxtools.tmf.core.event.TmfEvent;\r
b4f71e4a 40import org.eclipse.linuxtools.tmf.core.exceptions.TmfTraceException;\r
6c13869b
FC
41import org.eclipse.linuxtools.tmf.core.signal.TmfSignalHandler;\r
42import org.eclipse.linuxtools.tmf.core.signal.TmfTraceSelectedSignal;\r
43import org.eclipse.linuxtools.tmf.core.trace.ITmfTrace;\r
9e0640dc 44import org.eclipse.linuxtools.tmf.core.trace.TmfExperiment;\r
828e5592 45import org.eclipse.linuxtools.tmf.core.trace.TmfTrace;\r
828e5592
PT
46import org.eclipse.linuxtools.tmf.ui.project.model.ITmfProjectModelElement;\r
47import org.eclipse.linuxtools.tmf.ui.project.model.TmfExperimentElement;\r
48import org.eclipse.linuxtools.tmf.ui.project.model.TmfNavigatorContentProvider;\r
49import org.eclipse.linuxtools.tmf.ui.project.model.TmfProjectElement;\r
50import org.eclipse.linuxtools.tmf.ui.project.model.TmfProjectRegistry;\r
12c155f5 51import org.eclipse.linuxtools.tmf.ui.project.model.TmfTraceElement;\r
bfc779a0 52import org.eclipse.linuxtools.tmf.ui.project.model.TmfTraceType;\r
1b5ad3d9
FC
53import org.eclipse.linuxtools.tmf.ui.signal.TmfTraceClosedSignal;\r
54import org.eclipse.linuxtools.tmf.ui.signal.TmfTraceOpenedSignal;\r
55import org.eclipse.linuxtools.tmf.ui.signal.TmfTraceParserUpdatedSignal;\r
abfad0aa 56import org.eclipse.linuxtools.tmf.ui.viewers.events.TmfEventsTable;\r
abfad0aa 57import org.eclipse.swt.widgets.Composite;\r
e2561baf 58import org.eclipse.swt.widgets.Display;\r
abfad0aa
FC
59import org.eclipse.ui.IEditorInput;\r
60import org.eclipse.ui.IEditorPart;\r
61import org.eclipse.ui.IEditorSite;\r
62import org.eclipse.ui.IFileEditorInput;\r
63import org.eclipse.ui.IPropertyListener;\r
64import org.eclipse.ui.IReusableEditor;\r
65import org.eclipse.ui.PartInitException;\r
e2561baf 66import org.eclipse.ui.ide.IGotoMarker;\r
a1091415 67import org.eclipse.ui.part.FileEditorInput;\r
12c155f5 68import org.osgi.framework.Bundle;\r
abfad0aa
FC
69\r
70/**\r
71 * <b><u>TmfEventsEditor</u></b>\r
72 */\r
e2561baf 73public class TmfEventsEditor extends TmfEditor implements ITmfTraceEditor, IReusableEditor, IPropertyListener, IResourceChangeListener {\r
abfad0aa 74\r
3b38ea61 75 public static final String ID = "org.eclipse.linuxtools.tmf.ui.editors.events"; //$NON-NLS-1$\r
ce2388e0 76\r
abfad0aa 77 private TmfEventsTable fEventsTable;\r
a1091415 78 private IFile fFile;\r
4bf17f4a 79 @SuppressWarnings("rawtypes")\r
80 private ITmfTrace fTrace;\r
abfad0aa
FC
81 private Composite fParent;\r
82\r
83 @Override\r
25e48683 84 public void doSave(final IProgressMonitor monitor) {\r
abfad0aa
FC
85 }\r
86\r
87 @Override\r
88 public void doSaveAs() {\r
89 }\r
90\r
828e5592 91 @SuppressWarnings({ "unchecked", "rawtypes" })\r
abfad0aa 92 @Override\r
25e48683 93 public void init(final IEditorSite site, IEditorInput input) throws PartInitException {\r
abfad0aa 94 if (input instanceof TmfEditorInput) {\r
a1091415 95 fFile = ((TmfEditorInput) input).getFile();\r
abfad0aa 96 fTrace = ((TmfEditorInput) input).getTrace();\r
a1091415 97 input = new FileEditorInput(fFile);\r
abfad0aa 98 } else if (input instanceof IFileEditorInput) {\r
a1091415 99 fFile = ((IFileEditorInput) input).getFile();\r
25e48683 100 if (fFile == null)\r
828e5592 101 throw new PartInitException("Invalid IFileEditorInput: " + input); //$NON-NLS-1$\r
abfad0aa 102 try {\r
e12ecd30 103 final String traceTypeId = fFile.getPersistentProperty(TmfCommonConstants.TRACETYPE);\r
25e48683 104 if (traceTypeId == null)\r
09d11238 105 throw new PartInitException(Messages.OpenTraceHandler_NoTraceType);\r
828e5592
PT
106 if (traceTypeId.equals(TmfExperiment.class.getCanonicalName())) {\r
107 // Special case: experiment bookmark resource\r
25e48683 108 final TmfNavigatorContentProvider ncp = new TmfNavigatorContentProvider();\r
a1091415 109 ncp.getChildren(fFile.getProject()); // force the model to be populated\r
25e48683
FC
110 final TmfProjectElement project = TmfProjectRegistry.getProject(fFile.getProject());\r
111 if (project == null)\r
828e5592 112 throw new PartInitException(Messages.OpenExperimentHandler_NoTraceType);\r
25e48683
FC
113 for (final ITmfProjectModelElement projectElement : project.getExperimentsFolder().getChildren()) {\r
114 final String traceName = fFile.getParent().getName();\r
828e5592 115 if (projectElement.getName().equals(traceName)) {\r
25e48683 116 final TmfExperimentElement experimentElement = (TmfExperimentElement) projectElement;\r
828e5592 117 // Instantiate the experiment's traces\r
25e48683
FC
118 final List<TmfTraceElement> traceEntries = experimentElement.getTraces();\r
119 final int nbTraces = traceEntries.size();\r
828e5592 120 int cacheSize = Integer.MAX_VALUE;\r
25e48683 121 final ITmfTrace<?>[] traces = new ITmfTrace[nbTraces];\r
828e5592 122 for (int i = 0; i < nbTraces; i++) {\r
25e48683
FC
123 final TmfTraceElement traceElement = traceEntries.get(i);\r
124 final ITmfTrace trace = traceElement.instantiateTrace();\r
125 final ITmfEvent traceEvent = traceElement.instantiateEvent();\r
ce2388e0 126 if ((trace == null) || (traceEvent == null)) {\r
25e48683 127 for (int j = 0; j < i; j++)\r
828e5592 128 traces[j].dispose();\r
828e5592
PT
129 throw new PartInitException(Messages.OpenExperimentHandler_NoTraceType);\r
130 }\r
131 try {\r
25e48683 132 trace.initTrace(traceElement.getResource(), traceElement.getLocation().getPath(), traceEvent.getClass());\r
b4f71e4a 133 } catch (final TmfTraceException e) {\r
828e5592 134 }\r
20658947 135 cacheSize = Math.min(cacheSize, trace.getCacheSize());\r
828e5592
PT
136 traces[i] = trace;\r
137 }\r
e6a4cf1b 138 final TmfExperiment experiment = new TmfExperiment(ITmfEvent.class, experimentElement.getName(), traces, cacheSize);\r
a1091415 139 experiment.setBookmarksFile(fFile);\r
828e5592 140 fTrace = experiment;\r
3118edf1 141 experiment.initTrace(null, null, null);\r
828e5592
PT
142 break;\r
143 }\r
144 }\r
145 } else if (traceTypeId.equals(TmfTrace.class.getCanonicalName())) {\r
09d11238 146 // Special case: trace bookmark resource\r
25e48683 147 final TmfNavigatorContentProvider ncp = new TmfNavigatorContentProvider();\r
a1091415 148 ncp.getChildren(fFile.getProject()); // force the model to be populated\r
25e48683
FC
149 final TmfProjectElement project = TmfProjectRegistry.getProject(fFile.getProject());\r
150 for (final ITmfProjectModelElement projectElement : project.getTracesFolder().getChildren()) {\r
151 final String traceName = fFile.getParent().getName();\r
09d11238 152 if (projectElement.getName().equals(traceName)) {\r
25e48683 153 final TmfTraceElement traceElement = (TmfTraceElement) projectElement;\r
09d11238 154 // Instantiate the trace\r
25e48683
FC
155 final ITmfTrace trace = traceElement.instantiateTrace();\r
156 final ITmfEvent traceEvent = traceElement.instantiateEvent();\r
157 if ((trace == null) || (traceEvent == null))\r
828e5592 158 throw new PartInitException(Messages.OpenTraceHandler_NoTraceType);\r
828e5592 159 try {\r
25e48683 160 trace.initTrace(traceElement.getResource(), traceElement.getLocation().getPath(), traceEvent.getClass());\r
b4f71e4a 161 } catch (final TmfTraceException e) {\r
828e5592 162 }\r
09d11238 163 fTrace = trace;\r
828e5592
PT
164 break;\r
165 }\r
166 }\r
09d11238 167 } else {\r
25e48683 168 final TmfNavigatorContentProvider ncp = new TmfNavigatorContentProvider();\r
a1091415 169 ncp.getChildren(fFile.getProject()); // force the model to be populated\r
25e48683
FC
170 final TmfProjectElement project = TmfProjectRegistry.getProject(fFile.getProject());\r
171 for (final ITmfProjectModelElement projectElement : project.getTracesFolder().getChildren())\r
a1091415 172 if (projectElement.getResource().equals(fFile)) {\r
25e48683 173 final TmfTraceElement traceElement = (TmfTraceElement) projectElement;\r
09d11238 174 // Instantiate the trace\r
25e48683
FC
175 final ITmfTrace trace = traceElement.instantiateTrace();\r
176 final ITmfEvent traceEvent = traceElement.instantiateEvent();\r
177 if ((trace == null) || (traceEvent == null))\r
09d11238 178 throw new PartInitException(Messages.OpenTraceHandler_NoTraceType);\r
09d11238 179 try {\r
25e48683 180 trace.initTrace(traceElement.getResource(), traceElement.getLocation().getPath(), traceEvent.getClass());\r
b4f71e4a 181 } catch (final TmfTraceException e) {\r
09d11238
PT
182 }\r
183 fTrace = trace;\r
4bf17f4a 184 break;\r
185 }\r
4bf17f4a 186 }\r
25e48683 187 } catch (final InvalidRegistryObjectException e) {\r
8fd82db5 188 Activator.getDefault().logError("Error initializing TmfEventsEditor", e); //$NON-NLS-1$\r
25e48683 189 } catch (final CoreException e) {\r
8fd82db5 190 Activator.getDefault().logError("Error initializing TmfEventsEditor", e); //$NON-NLS-1$\r
abfad0aa 191 }\r
25e48683 192 } else\r
3b38ea61 193 throw new PartInitException("Invalid IEditorInput: " + input.getClass()); //$NON-NLS-1$\r
25e48683 194 if (fTrace == null)\r
a1091415 195 throw new PartInitException("Invalid IEditorInput: " + fFile.getName()); //$NON-NLS-1$\r
abfad0aa
FC
196 super.setSite(site);\r
197 super.setInput(input);\r
198 }\r
199\r
200 @Override\r
201 public boolean isDirty() {\r
202 return false;\r
203 }\r
204\r
205 @Override\r
206 public boolean isSaveAsAllowed() {\r
207 return false;\r
208 }\r
209\r
210 @Override\r
25e48683 211 public void setInput(final IEditorInput input) {\r
abfad0aa
FC
212 super.setInput(input);\r
213 firePropertyChange(IEditorPart.PROP_INPUT);\r
214 }\r
215\r
d4011df2 216 @Override\r
25e48683 217 public void propertyChanged(final Object source, final int propId) {\r
abfad0aa
FC
218 if (propId == IEditorPart.PROP_INPUT) {\r
219 broadcast(new TmfTraceClosedSignal(this, fTrace));\r
a1091415 220 fFile = ((TmfEditorInput) getEditorInput()).getFile();\r
abfad0aa 221 fTrace = ((TmfEditorInput) getEditorInput()).getTrace();\r
a1091415 222 super.setInput(new FileEditorInput(fFile));\r
abfad0aa
FC
223 fEventsTable.dispose();\r
224 if (fTrace != null) {\r
20658947 225 fEventsTable = createEventsTable(fParent, fTrace.getCacheSize());\r
529ee6a9 226 fEventsTable.setTrace(fTrace, true);\r
a1091415
PT
227 fEventsTable.refreshBookmarks(fFile);\r
228 broadcast(new TmfTraceOpenedSignal(this, fTrace, fFile, fEventsTable));\r
25e48683 229 } else\r
abfad0aa 230 fEventsTable = new TmfEventsTable(fParent, 0);\r
abfad0aa
FC
231 fParent.layout();\r
232 }\r
233 }\r
234\r
235 @Override\r
25e48683 236 public void createPartControl(final Composite parent) {\r
abfad0aa 237 fParent = parent;\r
abfad0aa 238 if (fTrace != null) {\r
a1091415 239 setPartName(fTrace.getName());\r
20658947 240 fEventsTable = createEventsTable(parent, fTrace.getCacheSize());\r
529ee6a9 241 fEventsTable.setTrace(fTrace, true);\r
a1091415
PT
242 fEventsTable.refreshBookmarks(fFile);\r
243 broadcast(new TmfTraceOpenedSignal(this, fTrace, fFile, fEventsTable));\r
abfad0aa 244 } else {\r
a1091415 245 setPartName(getEditorInput().getName());\r
abfad0aa
FC
246 fEventsTable = new TmfEventsTable(parent, 0);\r
247 }\r
248 addPropertyListener(this);\r
e2561baf 249 ResourcesPlugin.getWorkspace().addResourceChangeListener(this, IResourceChangeEvent.POST_CHANGE);\r
abfad0aa
FC
250 }\r
251\r
252 @Override\r
253 public void dispose() {\r
25e48683
FC
254 ResourcesPlugin.getWorkspace().removeResourceChangeListener(this);\r
255 removePropertyListener(this);\r
256 if (fTrace != null)\r
abfad0aa 257 broadcast(new TmfTraceClosedSignal(this, fTrace));\r
25e48683 258 if (fEventsTable != null)\r
abfad0aa 259 fEventsTable.dispose();\r
abfad0aa
FC
260 super.dispose();\r
261 }\r
262\r
25e48683 263 protected TmfEventsTable createEventsTable(final Composite parent, final int cacheSize) {\r
12c155f5 264 TmfEventsTable eventsTable = getEventsTable(parent, cacheSize);\r
25e48683 265 if (eventsTable == null)\r
abfad0aa 266 eventsTable = new TmfEventsTable(parent, cacheSize);\r
abfad0aa
FC
267 return eventsTable;\r
268 }\r
ce2388e0 269\r
25e48683
FC
270 private TmfEventsTable getEventsTable(final Composite parent, final int cacheSize) {\r
271 if (fTrace instanceof TmfExperiment)\r
828e5592 272 return getExperimentEventsTable((TmfExperiment<?>) fTrace, parent, cacheSize);\r
12c155f5 273 TmfEventsTable eventsTable = null;\r
12c155f5 274 try {\r
25e48683 275 if (fTrace.getResource() == null)\r
ab10b179 276 return null;\r
e12ecd30 277 final String traceType = fTrace.getResource().getPersistentProperty(TmfCommonConstants.TRACETYPE);\r
25e48683 278 if (traceType == null)\r
a1091415 279 return null;\r
25e48683 280 if (traceType.startsWith(CustomTxtTrace.class.getCanonicalName()))\r
4bf17f4a 281 return new CustomEventsTable(((CustomTxtTrace) fTrace).getDefinition(), parent, cacheSize);\r
25e48683 282 if (traceType.startsWith(CustomXmlTrace.class.getCanonicalName()))\r
4bf17f4a 283 return new CustomEventsTable(((CustomXmlTrace) fTrace).getDefinition(), parent, cacheSize);\r
25e48683 284 for (final IConfigurationElement ce : TmfTraceType.getTypeElements())\r
4bf17f4a 285 if (ce.getAttribute(TmfTraceType.ID_ATTR).equals(traceType)) {\r
25e48683
FC
286 final IConfigurationElement[] eventsTableTypeCE = ce.getChildren(TmfTraceType.EVENTS_TABLE_TYPE_ELEM);\r
287 if (eventsTableTypeCE.length != 1)\r
12c155f5 288 break;\r
25e48683
FC
289 final String eventsTableType = eventsTableTypeCE[0].getAttribute(TmfTraceType.CLASS_ATTR);\r
290 if ((eventsTableType == null) || (eventsTableType.length() == 0))\r
12c155f5 291 break;\r
25e48683
FC
292 final Bundle bundle = Platform.getBundle(ce.getContributor().getName());\r
293 final Class<?> c = bundle.loadClass(eventsTableType);\r
294 final Class<?>[] constructorArgs = new Class[] { Composite.class, int.class };\r
295 final Constructor<?> constructor = c.getConstructor(constructorArgs);\r
296 final Object[] args = new Object[] { parent, cacheSize };\r
12c155f5
FC
297 eventsTable = (TmfEventsTable) constructor.newInstance(args);\r
298 break;\r
299 }\r
25e48683 300 } catch (final InvalidRegistryObjectException e) {\r
8fd82db5 301 Activator.getDefault().logError("Error getting TmfEventsTable", e); //$NON-NLS-1$\r
25e48683 302 } catch (final CoreException e) {\r
8fd82db5 303 Activator.getDefault().logError("Error getting TmfEventsTable", e); //$NON-NLS-1$\r
25e48683 304 } catch (final ClassNotFoundException e) {\r
8fd82db5 305 Activator.getDefault().logError("Error getting TmfEventsTable", e); //$NON-NLS-1$\r
25e48683 306 } catch (final SecurityException e) {\r
8fd82db5 307 Activator.getDefault().logError("Error getting TmfEventsTable", e); //$NON-NLS-1$\r
25e48683 308 } catch (final NoSuchMethodException e) {\r
8fd82db5 309 Activator.getDefault().logError("Error getting TmfEventsTable", e); //$NON-NLS-1$\r
25e48683 310 } catch (final IllegalArgumentException e) {\r
8fd82db5 311 Activator.getDefault().logError("Error getting TmfEventsTable", e); //$NON-NLS-1$\r
25e48683 312 } catch (final InstantiationException e) {\r
8fd82db5 313 Activator.getDefault().logError("Error getting TmfEventsTable", e); //$NON-NLS-1$\r
25e48683 314 } catch (final IllegalAccessException e) {\r
8fd82db5 315 Activator.getDefault().logError("Error getting TmfEventsTable", e); //$NON-NLS-1$\r
25e48683 316 } catch (final InvocationTargetException e) {\r
8fd82db5 317 Activator.getDefault().logError("Error getting TmfEventsTable", e); //$NON-NLS-1$\r
12c155f5
FC
318 }\r
319 return eventsTable;\r
320 }\r
321\r
828e5592
PT
322 /**\r
323 * Get the events table for an experiment.\r
324 * If all traces in the experiment are of the same type,\r
325 * use the extension point specified event table\r
326 * @param experiment the experiment\r
327 * @param parent the parent Composite\r
328 * @param cacheSize the event table cache size\r
329 * @return an events table of the appropriate type\r
330 */\r
25e48683 331 private TmfEventsTable getExperimentEventsTable(final TmfExperiment<?> experiment, final Composite parent, final int cacheSize) {\r
828e5592
PT
332 TmfEventsTable eventsTable = null;\r
333 String commonTraceType = null;\r
334 try {\r
25e48683
FC
335 for (final ITmfTrace<?> trace : experiment.getTraces()) {\r
336 final IResource resource = trace.getResource();\r
337 if (resource == null)\r
828e5592 338 return null;\r
e12ecd30 339 final String traceType = resource.getPersistentProperty(TmfCommonConstants.TRACETYPE);\r
25e48683 340 if ((commonTraceType != null) && !commonTraceType.equals(traceType))\r
828e5592 341 return null;\r
828e5592
PT
342 commonTraceType = traceType;\r
343 }\r
25e48683 344 if (commonTraceType == null)\r
828e5592 345 return null;\r
25e48683 346 if (commonTraceType.startsWith(CustomTxtTrace.class.getCanonicalName()))\r
828e5592 347 return new CustomEventsTable(((CustomTxtTrace) experiment.getTraces()[0]).getDefinition(), parent, cacheSize);\r
25e48683 348 if (commonTraceType.startsWith(CustomXmlTrace.class.getCanonicalName()))\r
828e5592 349 return new CustomEventsTable(((CustomXmlTrace) experiment.getTraces()[0]).getDefinition(), parent, cacheSize);\r
25e48683 350 for (final IConfigurationElement ce : TmfTraceType.getTypeElements())\r
828e5592 351 if (ce.getAttribute(TmfTraceType.ID_ATTR).equals(commonTraceType)) {\r
25e48683
FC
352 final IConfigurationElement[] eventsTableTypeCE = ce.getChildren(TmfTraceType.EVENTS_TABLE_TYPE_ELEM);\r
353 if (eventsTableTypeCE.length != 1)\r
828e5592 354 break;\r
25e48683
FC
355 final String eventsTableType = eventsTableTypeCE[0].getAttribute(TmfTraceType.CLASS_ATTR);\r
356 if ((eventsTableType == null) || (eventsTableType.length() == 0))\r
828e5592 357 break;\r
25e48683
FC
358 final Bundle bundle = Platform.getBundle(ce.getContributor().getName());\r
359 final Class<?> c = bundle.loadClass(eventsTableType);\r
360 final Class<?>[] constructorArgs = new Class[] { Composite.class, int.class };\r
361 final Constructor<?> constructor = c.getConstructor(constructorArgs);\r
362 final Object[] args = new Object[] { parent, cacheSize };\r
828e5592
PT
363 eventsTable = (TmfEventsTable) constructor.newInstance(args);\r
364 break;\r
365 }\r
25e48683 366 } catch (final CoreException e) {\r
8fd82db5 367 Activator.getDefault().logError("Error getting TmfEventsTable for experiment", e); //$NON-NLS-1$\r
25e48683 368 } catch (final InvalidRegistryObjectException e) {\r
8fd82db5 369 Activator.getDefault().logError("Error getting TmfEventsTable for experiment", e); //$NON-NLS-1$\r
25e48683 370 } catch (final SecurityException e) {\r
8fd82db5 371 Activator.getDefault().logError("Error getting TmfEventsTable for experiment", e); //$NON-NLS-1$\r
25e48683 372 } catch (final IllegalArgumentException e) {\r
8fd82db5 373 Activator.getDefault().logError("Error getting TmfEventsTable for experiment", e); //$NON-NLS-1$\r
25e48683 374 } catch (final ClassNotFoundException e) {\r
8fd82db5 375 Activator.getDefault().logError("Error getting TmfEventsTable for experiment", e); //$NON-NLS-1$\r
25e48683 376 } catch (final NoSuchMethodException e) {\r
8fd82db5 377 Activator.getDefault().logError("Error getting TmfEventsTable for experiment", e); //$NON-NLS-1$\r
25e48683 378 } catch (final InstantiationException e) {\r
8fd82db5 379 Activator.getDefault().logError("Error getting TmfEventsTable for experiment", e); //$NON-NLS-1$\r
25e48683 380 } catch (final IllegalAccessException e) {\r
8fd82db5 381 Activator.getDefault().logError("Error getting TmfEventsTable for experiment", e); //$NON-NLS-1$\r
25e48683 382 } catch (final InvocationTargetException e) {\r
8fd82db5 383 Activator.getDefault().logError("Error getting TmfEventsTable for experiment", e); //$NON-NLS-1$\r
828e5592
PT
384 }\r
385 return eventsTable;\r
386 }\r
387\r
d4011df2 388 @Override\r
25e48683 389 public ITmfTrace<?> getTrace() {\r
abfad0aa
FC
390 return fTrace;\r
391 }\r
392\r
e2561baf 393 @Override\r
a1091415 394 public IFile getBookmarksFile() {\r
25e48683 395 return fFile;\r
e2561baf
FC
396 }\r
397\r
abfad0aa
FC
398 @Override\r
399 public void setFocus() {\r
400 fEventsTable.setFocus();\r
25e48683 401 if (fTrace != null)\r
abfad0aa 402 broadcast(new TmfTraceSelectedSignal(this, fTrace));\r
abfad0aa
FC
403 }\r
404\r
e2561baf
FC
405 @Override\r
406 @SuppressWarnings("rawtypes")\r
25e48683
FC
407 public Object getAdapter(final Class adapter) {\r
408 if (IGotoMarker.class.equals(adapter))\r
409 return fEventsTable;\r
410 return super.getAdapter(adapter);\r
e2561baf
FC
411 }\r
412\r
413 @Override\r
25e48683
FC
414 public void resourceChanged(final IResourceChangeEvent event) {\r
415 for (final IMarkerDelta delta : event.findMarkerDeltas(IMarker.BOOKMARK, false))\r
416 if (delta.getResource().equals(fFile))\r
828e5592
PT
417 if (delta.getKind() == IResourceDelta.REMOVED) {\r
418 final IMarker bookmark = delta.getMarker();\r
419 Display.getDefault().asyncExec(new Runnable() {\r
420 @Override\r
421 public void run() {\r
422 fEventsTable.removeBookmark(bookmark);\r
423 }\r
424 });\r
25e48683 425 } else if (delta.getKind() == IResourceDelta.CHANGED)\r
828e5592
PT
426 Display.getDefault().asyncExec(new Runnable() {\r
427 @Override\r
428 public void run() {\r
429 fEventsTable.getTable().refresh();\r
430 }\r
431 });\r
e2561baf 432 }\r
828e5592 433\r
e2561baf
FC
434 // ------------------------------------------------------------------------\r
435 // Global commands\r
436 // ------------------------------------------------------------------------\r
437\r
438 public void addBookmark() {\r
25e48683 439 fEventsTable.addBookmark(fFile);\r
e2561baf 440 }\r
ce2388e0 441\r
e2561baf 442\r
abfad0aa
FC
443 // ------------------------------------------------------------------------\r
444 // Signal handlers\r
445 // ------------------------------------------------------------------------\r
ce2388e0 446\r
4bf17f4a 447 @SuppressWarnings("unchecked")\r
abfad0aa 448 @TmfSignalHandler\r
25e48683 449 public void traceParserUpdated(final TmfTraceParserUpdatedSignal signal) {\r
a1091415 450 if (signal.getTraceResource().equals(fFile)) {\r
abfad0aa 451 broadcast(new TmfTraceClosedSignal(this, fTrace));\r
4bf17f4a 452 try {\r
25e48683 453 fTrace.getName();\r
4bf17f4a 454 fTrace = null;\r
e12ecd30 455 final String traceTypeId = fFile.getPersistentProperty(TmfCommonConstants.TRACETYPE);\r
25e48683
FC
456 if (traceTypeId != null)\r
457 for (final IConfigurationElement ce : TmfTraceType.getTypeElements())\r
4bf17f4a 458 if (traceTypeId.equals(ce.getAttribute(TmfTraceType.ID_ATTR))) {\r
459 fTrace = (ITmfTrace<?>) ce.createExecutableExtension(TmfTraceType.TRACE_TYPE_ATTR);\r
e6a4cf1b 460 final ITmfEvent event = (TmfEvent) ce.createExecutableExtension(TmfTraceType.EVENT_TYPE_ATTR);\r
25e48683
FC
461 final String path = fFile.getLocationURI().getPath();\r
462 fTrace.initTrace(null, path, event.getClass());\r
4bf17f4a 463 break;\r
464 }\r
25e48683 465 } catch (final InvalidRegistryObjectException e) {\r
8fd82db5 466 Activator.getDefault().logError("Error handling signal TmfTraceParserUpdatedSignal", e); //$NON-NLS-1$\r
b4f71e4a 467 } catch (final TmfTraceException e) {\r
8fd82db5 468 Activator.getDefault().logError("Error handling signal TmfTraceParserUpdatedSignal", e); //$NON-NLS-1$\r
25e48683 469 } catch (final CoreException e) {\r
8fd82db5 470 Activator.getDefault().logError("Error handling signal TmfTraceParserUpdatedSignal", e); //$NON-NLS-1$\r
4bf17f4a 471 }\r
abfad0aa
FC
472 fEventsTable.dispose();\r
473 if (fTrace != null) {\r
20658947 474 fEventsTable = createEventsTable(fParent, fTrace.getCacheSize());\r
529ee6a9 475 fEventsTable.setTrace(fTrace, true);\r
a1091415 476 broadcast(new TmfTraceOpenedSignal(this, fTrace, fFile, fEventsTable));\r
25e48683 477 } else\r
abfad0aa 478 fEventsTable = new TmfEventsTable(fParent, 0);\r
abfad0aa
FC
479 fParent.layout();\r
480 }\r
481 }\r
482\r
483 @TmfSignalHandler\r
25e48683
FC
484 public void traceSelected(final TmfTraceSelectedSignal signal) {\r
485 if ((signal.getSource() != this) && signal.getTrace().equals(fTrace))\r
abfad0aa 486 getSite().getPage().bringToTop(this);\r
abfad0aa
FC
487 }\r
488\r
489}\r
This page took 0.061564 seconds and 5 git commands to generate.