Commit | Line | Data |
---|---|---|
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 | |
13 | package org.eclipse.linuxtools.tmf.ui.views.project.handlers;\r | |
14 | \r | |
15 | import org.eclipse.core.commands.AbstractHandler;\r | |
16 | import org.eclipse.core.commands.ExecutionEvent;\r | |
17 | import org.eclipse.core.commands.ExecutionException;\r | |
18 | import org.eclipse.core.resources.IResource;\r | |
19 | import org.eclipse.core.runtime.CoreException;\r | |
20 | import org.eclipse.jface.viewers.ISelection;\r | |
21 | import org.eclipse.jface.viewers.StructuredSelection;\r | |
22 | import org.eclipse.linuxtools.tmf.event.TmfEvent;\r | |
23 | import org.eclipse.linuxtools.tmf.experiment.TmfExperiment;\r | |
24 | import org.eclipse.linuxtools.tmf.signal.TmfExperimentSelectedSignal;\r | |
abfad0aa FC |
25 | import org.eclipse.linuxtools.tmf.trace.ITmfTrace;\r |
26 | import org.eclipse.linuxtools.tmf.ui.parsers.ParserProviderManager;\r | |
46ab8ce3 | 27 | import org.eclipse.linuxtools.tmf.ui.signal.TmfTraceParserUpdatedSignal;\r |
abfad0aa FC |
28 | import org.eclipse.linuxtools.tmf.ui.views.project.ProjectView;\r |
29 | import org.eclipse.linuxtools.tmf.ui.views.project.model.TmfExperimentNode;\r | |
30 | import org.eclipse.linuxtools.tmf.ui.views.project.model.TmfTraceNode;\r | |
31 | import org.eclipse.ui.IWorkbenchPage;\r | |
32 | import org.eclipse.ui.IWorkbenchWindow;\r | |
33 | import org.eclipse.ui.PlatformUI;\r | |
34 | \r | |
35 | /**\r | |
36 | * <b><u>OpenTraceHandler</u></b>\r | |
37 | * <p>\r | |
38 | */\r | |
39 | public 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 | |
3b38ea61 | 83 | String parser = event.getParameter("org.eclipse.linuxtools.tmf.ui.commandparameter.project.trace.selectparser.parser"); //$NON-NLS-1$\r |
abfad0aa FC |
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 |