Re-structure LTTng sub-project as per the Linux Tools guidelines
[deliverable/tracecompass.git] / org.eclipse.linuxtools.lttng.ui / src / org / eclipse / linuxtools / lttng / ui / tracecontrol / wizards / ConfigureTraceWizard.java
CommitLineData
e8d771d5
BH
1/*******************************************************************************\r
2 * Copyright (c) 2011 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 * Bernd Hufmann - Initial API and implementation\r
11 * \r
12 *******************************************************************************/\r
13package org.eclipse.linuxtools.lttng.ui.tracecontrol.wizards;\r
14\r
15import java.util.Iterator;\r
16import java.util.concurrent.TimeUnit;\r
17\r
18import org.eclipse.jface.viewers.IStructuredSelection;\r
19import org.eclipse.jface.wizard.Wizard;\r
6c13869b
FC
20import org.eclipse.linuxtools.lttng.core.tracecontrol.model.TraceResource;\r
21import org.eclipse.linuxtools.lttng.core.tracecontrol.model.config.TraceChannel;\r
22import org.eclipse.linuxtools.lttng.core.tracecontrol.model.config.TraceChannels;\r
23import org.eclipse.linuxtools.lttng.core.tracecontrol.model.config.TraceConfig;\r
24import org.eclipse.linuxtools.lttng.core.tracecontrol.service.ILttControllerService;\r
e8d771d5
BH
25import org.eclipse.linuxtools.lttng.ui.LTTngUiPlugin;\r
26import org.eclipse.linuxtools.lttng.ui.tracecontrol.TraceControlConstants;\r
27import org.eclipse.linuxtools.lttng.ui.tracecontrol.subsystems.TraceSubSystem;\r
28import org.eclipse.rse.services.clientserver.messages.SystemMessageException;\r
29import org.eclipse.rse.ui.SystemBasePlugin;\r
30import org.eclipse.tm.tcf.protocol.IToken;\r
31import org.eclipse.tm.tcf.util.TCFTask;\r
32import org.eclipse.ui.INewWizard;\r
33import org.eclipse.ui.IWorkbench;\r
34\r
35/**\r
36 * <b><u>ConfigureTraceWizard</u></b>\r
37 * <p>\r
38 * Wizard implementation to configure a trace.\r
39 * </p>\r
40 */\r
41public class ConfigureTraceWizard extends Wizard implements INewWizard {\r
42\r
43 // ------------------------------------------------------------------------\r
44 // Attributes\r
45 // ------------------------------------------------------------------------\r
46\r
47 ITraceChannelConfigurationPage channelConfigPage;\r
48 TraceConfigurationPage traceConfigPage;\r
49\r
50 private TraceResource fSelectedTrace = null;\r
51\r
52 // ------------------------------------------------------------------------\r
53 // Constructors\r
54 // ------------------------------------------------------------------------\r
55\r
56 public ConfigureTraceWizard() {\r
57 super();\r
58 }\r
59\r
60 // ------------------------------------------------------------------------\r
61 // Operations\r
62 // ------------------------------------------------------------------------\r
63 \r
64 /*\r
65 * (non-Javadoc)\r
66 * @see org.eclipse.jface.wizard.Wizard#performFinish()\r
67 */\r
68 @Override\r
69 public boolean performFinish() {\r
70 return true;\r
71 }\r
72\r
73 /*\r
74 * (non-Javadoc)\r
75 * @see org.eclipse.jface.wizard.Wizard#addPages()\r
76 */\r
77 @Override\r
78 public void addPages() {\r
79 traceConfigPage = new TraceConfigurationPage(this);\r
80 addPage(traceConfigPage);\r
81\r
82 if (fSelectedTrace.isUst()) {\r
83 // User space trace\r
84 TraceChannels channels = null;\r
85 if ((fSelectedTrace.getTraceConfig()) != null && fSelectedTrace.getTraceConfig().getTraceChannels() != null) {\r
86 channels = fSelectedTrace.getTraceConfig().getTraceChannels().clone(); \r
87 }\r
88 else {\r
89 channels = new TraceChannels();\r
90 channels.put(TraceChannel.UST_TRACE_CHANNEL_NAME, new TraceChannel(TraceChannel.UST_TRACE_CHANNEL_NAME));\r
91 }\r
92 channelConfigPage = new UstTraceChannelConfigurationPage(channels);\r
93 addPage(channelConfigPage);\r
94 } else {\r
95 // Kernel trace \r
96 TraceChannels channels = null;\r
97 if ((fSelectedTrace.getTraceConfig()) != null && (fSelectedTrace.getTraceConfig().getTraceChannels() != null)) {\r
98 channels = fSelectedTrace.getTraceConfig().getTraceChannels().clone(); \r
99 }\r
100 else {\r
101 String[] channelNames = new String[0];\r
102 try {\r
103 final ILttControllerService service = ((TraceSubSystem)fSelectedTrace.getSubSystem()).getControllerService();\r
104 channelNames = new TCFTask<String[]>() {\r
105 @Override\r
106 public void run() {\r
107 // Get targets using Lttng controller service proxy\r
108 service.getChannels(fSelectedTrace.getParent().getParent().getName(), fSelectedTrace.getParent().getName(), fSelectedTrace.getName(), new ILttControllerService.DoneGetChannels() {\r
109\r
110 @Override\r
111 public void doneGetChannels(IToken token, Exception error, String[] str) {\r
112 if (error != null) {\r
113 // Notify with error\r
114 error(error);\r
115 return;\r
116 }\r
117 // Notify with active trace list\r
118 done(str);\r
119 }\r
120 });\r
121 }}.get(TraceControlConstants.DEFAULT_TCF_TASK_TIMEOUT, TimeUnit.SECONDS);\r
122 } catch (Exception e) {\r
123 if (e instanceof SystemMessageException) {\r
124 SystemBasePlugin.logError("Trace Configuration", e); //$NON-NLS-1$;\r
125 }\r
126 else {\r
127 SystemBasePlugin.logError("TraceSubSystem", new SystemMessageException(LTTngUiPlugin.getDefault().getMessage(e))); //$NON-NLS-1$\r
128 }\r
129 }\r
130\r
131 channels = new TraceChannels();\r
132 channels.putAll(channelNames);\r
133 }\r
134\r
135 channelConfigPage = new KernelTraceChannelConfigurationPage(channels, fSelectedTrace.getTraceState());\r
136 addPage(channelConfigPage);\r
137 }\r
138\r
139 getShell().setImage(LTTngUiPlugin.getDefault().getImage(LTTngUiPlugin.ICON_ID_CONFIG_TRACE));\r
140 }\r
141\r
142 /*\r
143 * (non-Javadoc)\r
144 * @see org.eclipse.ui.IWorkbenchWizard#init(org.eclipse.ui.IWorkbench, org.eclipse.jface.viewers.IStructuredSelection)\r
145 */\r
146 @Override\r
147 @SuppressWarnings("unchecked")\r
148 public void init(IWorkbench workbench, IStructuredSelection selection) {\r
149\r
150 fSelectedTrace = null;\r
151\r
152 // store the selected targets to be used when running\r
153 Iterator<IStructuredSelection> theSet = selection.iterator();\r
154 while (theSet.hasNext()) {\r
155 Object obj = theSet.next();\r
156 if (obj instanceof TraceResource) {\r
157 fSelectedTrace = (TraceResource)obj;\r
158 break; // only one is allowed\r
159 }\r
160 }\r
161 }\r
162\r
163 /**\r
164 * Gets the relevant selected trace that will be configured.\r
165 * \r
166 * @return selected trace.\r
167 */\r
168 public TraceResource getSelectedTrace() {\r
169 return fSelectedTrace;\r
170 }\r
171 \r
172 /**\r
173 * Gets the new trace configuration of the trace.\r
174 * \r
175 * @return trace configuration\r
176 */\r
177 public TraceConfig getTraceConfig() {\r
178 TraceConfig config = traceConfigPage.getTraceConfig();\r
179 config.setTraceChannels(channelConfigPage.getTraceChannels());\r
180 return config;\r
181 }\r
182}\r
This page took 0.031687 seconds and 5 git commands to generate.