ctf: Bump CTF feature plugin to 2.0
[deliverable/tracecompass.git] / org.eclipse.linuxtools.lttng2.ui / src / org / eclipse / linuxtools / internal / lttng2 / ui / views / control / model / impl / TraceChannelComponent.java
CommitLineData
eb1bab5b
BH
1/**********************************************************************
2 * Copyright (c) 2012 Ericsson
cfdb727a 3 *
eb1bab5b
BH
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
cfdb727a
AM
8 *
9 * Contributors:
eb1bab5b
BH
10 * Bernd Hufmann - Initial API and implementation
11 **********************************************************************/
115b4a01 12package org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl;
eb1bab5b 13
b957fb8c 14import java.util.ArrayList;
6503ae0f
BH
15import java.util.List;
16
17import org.eclipse.core.commands.ExecutionException;
18import org.eclipse.core.runtime.IProgressMonitor;
19import org.eclipse.core.runtime.NullProgressMonitor;
9315aeee
BH
20import org.eclipse.linuxtools.internal.lttng2.core.control.model.IChannelInfo;
21import org.eclipse.linuxtools.internal.lttng2.core.control.model.IEventInfo;
22import org.eclipse.linuxtools.internal.lttng2.core.control.model.LogLevelType;
23import org.eclipse.linuxtools.internal.lttng2.core.control.model.TraceEnablement;
24import org.eclipse.linuxtools.internal.lttng2.core.control.model.TraceLogLevel;
25import org.eclipse.linuxtools.internal.lttng2.core.control.model.impl.ChannelInfo;
26import org.eclipse.linuxtools.internal.lttng2.core.control.model.impl.ProbeEventInfo;
115b4a01 27import org.eclipse.linuxtools.internal.lttng2.ui.Activator;
9315aeee 28import org.eclipse.linuxtools.internal.lttng2.ui.views.control.messages.Messages;
115b4a01 29import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent;
115b4a01 30import org.eclipse.linuxtools.internal.lttng2.ui.views.control.property.TraceChannelPropertySource;
eb1bab5b 31import org.eclipse.swt.graphics.Image;
06b9339e 32import org.eclipse.ui.views.properties.IPropertySource;
eb1bab5b
BH
33
34
35/**
eb1bab5b
BH
36 * <p>
37 * Implementation of the trace channel component.
38 * </p>
cfdb727a 39 *
dbd4432d 40 * @author Bernd Hufmann
eb1bab5b
BH
41 */
42public class TraceChannelComponent extends TraceControlComponent {
43 // ------------------------------------------------------------------------
44 // Constants
45 // ------------------------------------------------------------------------
46 /**
47 * Path to icon file for this component (state enabled).
48 */
49 public static final String TRACE_CHANNEL_ICON_FILE_ENABLED = "icons/obj16/channel.gif"; //$NON-NLS-1$
50 /**
51 * Path to icon file for this component (state disabled).
52 */
53 public static final String TRACE_CHANNEL_ICON_FILE_DISABLED = "icons/obj16/channel_disabled.gif"; //$NON-NLS-1$
cfdb727a 54
eb1bab5b
BH
55 // ------------------------------------------------------------------------
56 // Attributes
57 // ------------------------------------------------------------------------
58 /**
59 * The channel information.
60 */
61 private IChannelInfo fChannelInfo = null;
62 /**
63 * The image to be displayed in disabled state.
64 */
65 private Image fDisabledImage = null;
cfdb727a 66
eb1bab5b
BH
67 // ------------------------------------------------------------------------
68 // Constructors
69 // ------------------------------------------------------------------------
70 /**
cfdb727a 71 * Constructor
eb1bab5b
BH
72 * @param name - the name of the component.
73 * @param parent - the parent of this component.
74 */
75 public TraceChannelComponent(String name, ITraceControlComponent parent) {
76 super(name, parent);
77 setImage(TRACE_CHANNEL_ICON_FILE_ENABLED);
78 setToolTip(Messages.TraceControl_ChannelDisplayName);
79 fChannelInfo = new ChannelInfo(name);
31a6a4e4 80 fDisabledImage = Activator.getDefault().loadIcon(TRACE_CHANNEL_ICON_FILE_DISABLED);
eb1bab5b 81 }
cfdb727a 82
eb1bab5b
BH
83 // ------------------------------------------------------------------------
84 // Accessors
85 // ------------------------------------------------------------------------
86 /*
87 * (non-Javadoc)
115b4a01 88 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceControlComponent#getImage()
eb1bab5b
BH
89 */
90 @Override
91 public Image getImage() {
92 if (fChannelInfo.getState() == TraceEnablement.DISABLED) {
93 return fDisabledImage;
94 }
95 return super.getImage();
96 }
97
98 /**
99 * Sets the channel information.
cfdb727a 100 *
eb1bab5b 101 * @param channelInfo
cfdb727a 102 * The channel info to assign to this component
eb1bab5b
BH
103 */
104 public void setChannelInfo(IChannelInfo channelInfo) {
105 fChannelInfo = channelInfo;
106 IEventInfo[] events = fChannelInfo.getEvents();
b957fb8c 107 List<ITraceControlComponent> eventComponents = new ArrayList<ITraceControlComponent>();
eb1bab5b 108 for (int i = 0; i < events.length; i++) {
d132bcc7
BH
109 TraceEventComponent event = null;
110 if (events[i].getClass() == ProbeEventInfo.class) {
111 event = new TraceProbeEventComponent(events[i].getName(), this);
112 } else {
113 event = new TraceEventComponent(events[i].getName(), this);
114 }
115
b957fb8c 116 eventComponents.add(event);
eb1bab5b 117 event.setEventInfo(events[i]);
b957fb8c
BH
118// addChild(event);
119 }
120 if (!eventComponents.isEmpty()) {
121 setChildren(eventComponents);
eb1bab5b
BH
122 }
123 }
124
125 /**
126 * @return the overwrite mode value.
127 */
128 public boolean isOverwriteMode() {
129 return fChannelInfo.isOverwriteMode();
130 }
131 /**
132 * Sets the overwrite mode value to the given mode.
133 * @param mode - mode to set.
134 */
135 public void setOverwriteMode(boolean mode){
136 fChannelInfo.setOverwriteMode(mode);
137 }
138 /**
139 * @return the sub-buffer size.
140 */
141 public long getSubBufferSize() {
142 return fChannelInfo.getSubBufferSize();
143 }
144 /**
145 * Sets the sub-buffer size to the given value.
146 * @param bufferSize - size to set to set.
147 */
148 public void setSubBufferSize(long bufferSize) {
149 fChannelInfo.setSubBufferSize(bufferSize);
150 }
151 /**
152 * @return the number of sub-buffers.
153 */
154 public int getNumberOfSubBuffers() {
155 return fChannelInfo.getNumberOfSubBuffers();
156 }
157 /**
158 * Sets the number of sub-buffers to the given value.
159 * @param numberOfSubBuffers - value to set.
160 */
161 public void setNumberOfSubBuffers(int numberOfSubBuffers) {
162 fChannelInfo.setNumberOfSubBuffers(numberOfSubBuffers);
163 }
164 /**
165 * @return the switch timer interval.
166 */
167 public long getSwitchTimer() {
168 return fChannelInfo.getSwitchTimer();
169 }
170 /**
171 * Sets the switch timer interval to the given value.
172 * @param timer - timer value to set.
173 */
174 public void setSwitchTimer(long timer) {
175 fChannelInfo.setSwitchTimer(timer);
176 }
177 /**
178 * @return the read timer interval.
179 */
180 public long getReadTimer() {
cfdb727a 181 return fChannelInfo.getReadTimer();
eb1bab5b
BH
182 }
183 /**
184 * Sets the read timer interval to the given value.
185 * @param timer - timer value to set..
186 */
187 public void setReadTimer(long timer) {
188 fChannelInfo.setReadTimer(timer);
189 }
190 /**
191 * @return the output type.
192 */
193 public String getOutputType() {
194 return fChannelInfo.getOutputType();
195 }
196 /**
197 * Sets the output type to the given value.
198 * @param type - type to set.
199 */
200 public void setOutputType(String type) {
201 fChannelInfo.setOutputType(type);
202 }
203 /**
204 * @return the channel state (enabled or disabled).
205 */
206 public TraceEnablement getState() {
207 return fChannelInfo.getState();
208 }
209 /**
210 * Sets the channel state (enablement) to the given value.
211 * @param state - state to set.
212 */
213 public void setState(TraceEnablement state) {
214 fChannelInfo.setState(state);
215 }
216 /**
217 * Sets the channel state (enablement) to the value specified by the given name.
218 * @param stateName - state to set.
219 */
220 public void setState(String stateName) {
221 fChannelInfo.setState(stateName);
222 }
06b9339e
BH
223 /*
224 * (non-Javadoc)
115b4a01 225 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceControlComponent#getAdapter(java.lang.Class)
06b9339e 226 */
06b9339e
BH
227 @Override
228 public Object getAdapter(Class adapter) {
229 if (adapter == IPropertySource.class) {
230 return new TraceChannelPropertySource(this);
231 }
232 return null;
cfdb727a 233 }
bbb3538a
BH
234
235 /**
236 * @return session name from parent
237 */
238 public String getSessionName() {
cfdb727a 239 return ((TraceDomainComponent)getParent()).getSessionName();
bbb3538a
BH
240 }
241
6503ae0f
BH
242 /**
243 * @return session from parent
244 */
245 public TraceSessionComponent getSession() {
cfdb727a 246 return ((TraceDomainComponent)getParent()).getSession();
6503ae0f
BH
247 }
248
bbb3538a
BH
249 /**
250 * @return if domain is kernel or UST
251 */
252 public boolean isKernel() {
253 return ((TraceDomainComponent)getParent()).isKernel();
254 }
cfdb727a 255
498704b3
BH
256 /**
257 * @return the parent target node
258 */
259 public TargetNodeComponent getTargetNode() {
260 return ((TraceDomainComponent)getParent()).getTargetNode();
261 }
cfdb727a 262
eb1bab5b
BH
263 // ------------------------------------------------------------------------
264 // Operations
265 // ------------------------------------------------------------------------
6503ae0f
BH
266 /**
267 * Enables a list of events with no additional parameters.
cfdb727a
AM
268 *
269 * @param eventNames
270 * - a list of event names to enabled.
6503ae0f 271 * @throws ExecutionException
cfdb727a 272 * If the command fails
6503ae0f 273 */
498704b3
BH
274 public void enableEvents(List<String> eventNames) throws ExecutionException {
275 enableEvents(eventNames, new NullProgressMonitor());
6503ae0f
BH
276 }
277
278 /**
279 * Enables a list of events with no additional parameters.
cfdb727a
AM
280 *
281 * @param eventNames
282 * - a list of event names to enabled.
283 * @param monitor
284 * - a progress monitor
6503ae0f 285 * @throws ExecutionException
cfdb727a 286 * If the command fails
6503ae0f 287 */
498704b3
BH
288 public void enableEvents(List<String> eventNames, IProgressMonitor monitor) throws ExecutionException {
289 getControlService().enableEvents(getSessionName(), getName(), eventNames, isKernel(), monitor);
290 }
cfdb727a 291
498704b3
BH
292 /**
293 * Enables all syscalls (for kernel domain)
cfdb727a 294 *
498704b3 295 * @throws ExecutionException
cfdb727a 296 * If the command fails
498704b3
BH
297 */
298 public void enableSyscalls() throws ExecutionException {
299 enableSyscalls(new NullProgressMonitor());
300 }
301
302 /**
303 * Enables all syscalls (for kernel domain)
cfdb727a
AM
304 *
305 * @param monitor
306 * - a progress monitor
498704b3 307 * @throws ExecutionException
cfdb727a 308 * If the command fails
498704b3
BH
309 */
310 public void enableSyscalls(IProgressMonitor monitor) throws ExecutionException {
311 getControlService().enableSyscalls(getSessionName(), getName(), monitor);
312 }
313
314 /**
315 * Enables a dynamic probe (for kernel domain)
cfdb727a
AM
316 *
317 * @param eventName
318 * - event name for probe
319 * @param isFunction
320 * - true for dynamic function entry/return probe else false
321 * @param probe
322 * - the actual probe
498704b3 323 * @throws ExecutionException
cfdb727a 324 * If the command fails
498704b3 325 */
cfdb727a
AM
326 public void enableProbe(String eventName, boolean isFunction, String probe)
327 throws ExecutionException {
d132bcc7 328 enableProbe(eventName, isFunction, probe, new NullProgressMonitor());
498704b3
BH
329 }
330
331 /**
332 * Enables a dynamic probe (for kernel domain)
cfdb727a
AM
333 *
334 * @param eventName
335 * - event name for probe
336 * @param isFunction
337 * - true for dynamic function entry/return probe else false
338 * @param probe
339 * - the actual probe
340 * @param monitor
341 * - a progress monitor
498704b3 342 * @throws ExecutionException
cfdb727a 343 * If the command fails
498704b3 344 */
cfdb727a
AM
345 public void enableProbe(String eventName, boolean isFunction, String probe,
346 IProgressMonitor monitor) throws ExecutionException {
d132bcc7 347 getControlService().enableProbe(getSessionName(), getName(), eventName, isFunction, probe, monitor);
498704b3
BH
348 }
349
ccc66d01
BH
350 /**
351 * Enables events using log level.
cfdb727a
AM
352 *
353 * @param eventName
354 * - a event name
355 * @param logLevelType
356 * - a log level type
357 * @param level
358 * - a log level
ccc66d01 359 * @throws ExecutionException
cfdb727a 360 * If the command fails
ccc66d01 361 */
cfdb727a
AM
362 public void enableLogLevel(String eventName, LogLevelType logLevelType,
363 TraceLogLevel level) throws ExecutionException {
ccc66d01
BH
364 enableLogLevel(eventName, logLevelType, level, new NullProgressMonitor());
365 }
366
367 /**
368 * Enables events using log level.
cfdb727a
AM
369 *
370 * @param eventName
371 * - a event name
372 * @param logLevelType
373 * - a log level type
374 * @param level
375 * - a log level
376 * @param monitor
377 * - a progress monitor
ccc66d01 378 * @throws ExecutionException
cfdb727a 379 * If the command fails
ccc66d01 380 */
cfdb727a
AM
381 public void enableLogLevel(String eventName, LogLevelType logLevelType,
382 TraceLogLevel level, IProgressMonitor monitor)
383 throws ExecutionException {
ccc66d01
BH
384 getControlService().enableLogLevel(getSessionName(), getName(), eventName, logLevelType, level, monitor);
385 }
386
6503ae0f
BH
387 /**
388 * Enables a list of events with no additional parameters.
cfdb727a
AM
389 *
390 * @param eventNames
391 * - a list of event names to enabled.
6503ae0f 392 * @throws ExecutionException
cfdb727a 393 * If the command fails
6503ae0f
BH
394 */
395 public void disableEvent(List<String> eventNames) throws ExecutionException {
396 disableEvent(eventNames, new NullProgressMonitor());
397 }
398
399 /**
400 * Enables a list of events with no additional parameters.
cfdb727a
AM
401 *
402 * @param eventNames
403 * - a list of event names to enabled.
404 * @param monitor
405 * - a progress monitor
6503ae0f 406 * @throws ExecutionException
cfdb727a 407 * If the command fails
6503ae0f 408 */
cfdb727a
AM
409 public void disableEvent(List<String> eventNames, IProgressMonitor monitor)
410 throws ExecutionException {
411 getControlService().disableEvent(getParent().getParent().getName(),
412 getName(), eventNames, isKernel(), monitor);
6503ae0f 413 }
cfdb727a 414
b793fbe1
BH
415 /**
416 * Add contexts to given channels and or events
cfdb727a
AM
417 *
418 * @param contexts
419 * - a list of contexts to add
b793fbe1 420 * @throws ExecutionException
cfdb727a 421 * If the command fails
b793fbe1
BH
422 */
423 public void addContexts(List<String> contexts) throws ExecutionException {
424 addContexts(contexts, new NullProgressMonitor());
425 }
426
427 /**
428 * Add contexts to given channels and or events
cfdb727a
AM
429 *
430 * @param contexts
431 * - a list of contexts to add
432 * @param monitor
433 * - a progress monitor
b793fbe1 434 * @throws ExecutionException
cfdb727a 435 * If the command fails
b793fbe1 436 */
cfdb727a
AM
437 public void addContexts(List<String> contexts, IProgressMonitor monitor)
438 throws ExecutionException {
439 getControlService().addContexts(getSessionName(), getName(), null,
440 isKernel(), contexts, monitor);
b793fbe1 441 }
eb1bab5b 442}
This page took 0.054002 seconds and 5 git commands to generate.