2010-10-26 Francois Chouinard <fchouinard@gmail.com> Contribution for Bug309042
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.ui / src / org / eclipse / linuxtools / tmf / ui / views / project / handlers / SelectParserHandler.java
CommitLineData
abfad0aa
FC
1/*******************************************************************************\r
2 * Copyright (c) 2010 Ericsson\r
3 * \r
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
8 * \r
9 * Contributors:\r
10 * Patrick Tasse - Initial API and implementation\r
11 *******************************************************************************/\r
12\r
13package org.eclipse.linuxtools.tmf.ui.views.project.handlers;\r
14\r
15import org.eclipse.core.commands.AbstractHandler;\r
16import org.eclipse.core.commands.ExecutionEvent;\r
17import org.eclipse.core.commands.ExecutionException;\r
18import org.eclipse.core.resources.IResource;\r
19import org.eclipse.core.runtime.CoreException;\r
20import org.eclipse.jface.viewers.ISelection;\r
21import org.eclipse.jface.viewers.StructuredSelection;\r
22import org.eclipse.linuxtools.tmf.event.TmfEvent;\r
23import org.eclipse.linuxtools.tmf.experiment.TmfExperiment;\r
24import org.eclipse.linuxtools.tmf.signal.TmfExperimentSelectedSignal;\r
25import org.eclipse.linuxtools.tmf.signal.TmfTraceParserUpdatedSignal;\r
26import org.eclipse.linuxtools.tmf.trace.ITmfTrace;\r
27import org.eclipse.linuxtools.tmf.ui.parsers.ParserProviderManager;\r
28import org.eclipse.linuxtools.tmf.ui.views.project.ProjectView;\r
29import org.eclipse.linuxtools.tmf.ui.views.project.model.TmfExperimentNode;\r
30import org.eclipse.linuxtools.tmf.ui.views.project.model.TmfTraceNode;\r
31import org.eclipse.ui.IWorkbenchPage;\r
32import org.eclipse.ui.IWorkbenchWindow;\r
33import org.eclipse.ui.PlatformUI;\r
34\r
35/**\r
36 * <b><u>OpenTraceHandler</u></b>\r
37 * <p>\r
38 */\r
39public class SelectParserHandler extends AbstractHandler {\r
40\r
41 private TmfTraceNode fTrace = null;\r
42 private ProjectView fProjectView = null;\r
43\r
44 // ------------------------------------------------------------------------\r
45 // Validation\r
46 // ------------------------------------------------------------------------\r
47\r
9ccc6d01 48 @Override\r
abfad0aa
FC
49 public boolean isEnabled() {\r
50 \r
51 // Check if we are closing down\r
52 IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();\r
53 if (window == null)\r
54 return false;\r
55\r
56 // Check if a trace is selected\r
57 IWorkbenchPage page = window.getActivePage();\r
58 if (!(page.getActivePart() instanceof ProjectView))\r
59 return false;\r
60 fProjectView = (ProjectView) page.getActivePart();\r
61\r
62 // Check if a trace is selected\r
63 ISelection selection = page.getSelection(ProjectView.ID);\r
64 if (selection instanceof StructuredSelection) {\r
65 Object element = ((StructuredSelection) selection).getFirstElement();\r
66 fTrace = (element instanceof TmfTraceNode) ? (TmfTraceNode) element : null;\r
67 }\r
68\r
69 return (fTrace != null);\r
70 }\r
71\r
72 // ------------------------------------------------------------------------\r
73 // Execution\r
74 // ------------------------------------------------------------------------\r
75\r
d4011df2
FC
76 @Override\r
77 @SuppressWarnings("unchecked")\r
abfad0aa
FC
78 public Object execute(ExecutionEvent event) throws ExecutionException {\r
79 IResource resource = fTrace.getResource();\r
80 if (fTrace.getParent() instanceof TmfExperimentNode) {\r
81 resource = fTrace.getProject().getTracesFolder().getTraceForLocation(resource.getLocation()).getResource();\r
82 }\r
83 String parser = event.getParameter("org.eclipse.linuxtools.tmf.ui.commandparameter.project.trace.selectparser.parser");\r
84 try {\r
85 resource.setPersistentProperty(ParserProviderManager.PARSER_PROPERTY, parser);\r
86 fProjectView.broadcast(new TmfTraceParserUpdatedSignal(fProjectView, resource));\r
87 fTrace.getProject().refresh();\r
88 \r
89 TmfExperiment<TmfEvent> currentExperiment = (TmfExperiment<TmfEvent>) TmfExperiment.getCurrentExperiment();\r
90 if (currentExperiment != null) {\r
91 for (int i = 0; i < currentExperiment.getTraces().length; i++) {\r
92 ITmfTrace trace = currentExperiment.getTraces()[i];\r
93 if (resource.getLocation().toOSString().equals(trace.getPath())) {\r
94 ITmfTrace newTrace = ParserProviderManager.getTrace(resource);\r
95 if (newTrace != null) {\r
96 currentExperiment.getTraces()[i] = newTrace;\r
97 fProjectView.broadcast(new TmfExperimentSelectedSignal<TmfEvent>(new Object(), currentExperiment));\r
98 }\r
99 }\r
100 }\r
101 }\r
102 } catch (CoreException e) {\r
103 e.printStackTrace();\r
104 }\r
105 return null;\r
106 }\r
107\r
108}\r
This page took 0.02868 seconds and 5 git commands to generate.