1 /**********************************************************************
2 * Copyright (c) 2012 Ericsson
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
10 * Bernd Hufmann - Initial API and implementation
11 **********************************************************************/
12 package org
.eclipse
.linuxtools
.internal
.lttng2
.ui
.views
.control
.model
.impl
;
14 import java
.util
.List
;
16 import org
.eclipse
.core
.commands
.ExecutionException
;
17 import org
.eclipse
.core
.runtime
.IProgressMonitor
;
18 import org
.eclipse
.core
.runtime
.NullProgressMonitor
;
19 import org
.eclipse
.linuxtools
.internal
.lttng2
.core
.control
.model
.IChannelInfo
;
20 import org
.eclipse
.linuxtools
.internal
.lttng2
.core
.control
.model
.IDomainInfo
;
21 import org
.eclipse
.linuxtools
.internal
.lttng2
.core
.control
.model
.ISessionInfo
;
22 import org
.eclipse
.linuxtools
.internal
.lttng2
.core
.control
.model
.LogLevelType
;
23 import org
.eclipse
.linuxtools
.internal
.lttng2
.core
.control
.model
.TraceLogLevel
;
24 import org
.eclipse
.linuxtools
.internal
.lttng2
.core
.control
.model
.TraceSessionState
;
25 import org
.eclipse
.linuxtools
.internal
.lttng2
.core
.control
.model
.impl
.SessionInfo
;
26 import org
.eclipse
.linuxtools
.internal
.lttng2
.ui
.Activator
;
27 import org
.eclipse
.linuxtools
.internal
.lttng2
.ui
.views
.control
.messages
.Messages
;
28 import org
.eclipse
.linuxtools
.internal
.lttng2
.ui
.views
.control
.model
.ITraceControlComponent
;
29 import org
.eclipse
.linuxtools
.internal
.lttng2
.ui
.views
.control
.property
.TraceSessionPropertySource
;
30 import org
.eclipse
.swt
.graphics
.Image
;
31 import org
.eclipse
.ui
.views
.properties
.IPropertySource
;
35 * Implementation of the trace session component.
38 * @author Bernd Hufmann
40 public class TraceSessionComponent
extends TraceControlComponent
{
42 // ------------------------------------------------------------------------
44 // ------------------------------------------------------------------------
46 * Path to icon file for this component (inactive state).
48 public static final String TRACE_SESSION_ICON_FILE_INACTIVE
= "icons/obj16/session_inactive.gif"; //$NON-NLS-1$
50 * Path to icon file for this component (active state).
52 public static final String TRACE_SESSION_ICON_FILE_ACTIVE
= "icons/obj16/session_active.gif"; //$NON-NLS-1$
54 * Path to icon file for this component (destroyed state).
56 public static final String TRACE_SESSION_ICON_FILE_DESTROYED
= "icons/obj16/session_destroyed.gif"; //$NON-NLS-1$
58 // ------------------------------------------------------------------------
60 // ------------------------------------------------------------------------
62 * The session information.
64 private ISessionInfo fSessionInfo
= null;
66 * A flag to indicate if session has been destroyed.
68 private boolean fIsDestroyed
= false;
70 * The image to be displayed in state active.
72 private Image fActiveImage
= null;
74 * The image to be displayed in state destroyed
76 private Image fDestroyedImage
= null;
78 // ------------------------------------------------------------------------
80 // ------------------------------------------------------------------------
83 * @param name - the name of the component.
84 * @param parent - the parent of this component.
86 public TraceSessionComponent(String name
, ITraceControlComponent parent
) {
88 setImage(TRACE_SESSION_ICON_FILE_INACTIVE
);
89 setToolTip(Messages
.TraceControl_SessionDisplayName
);
90 fSessionInfo
= new SessionInfo(name
);
91 fActiveImage
= Activator
.getDefault().loadIcon(TRACE_SESSION_ICON_FILE_ACTIVE
);
92 fDestroyedImage
= Activator
.getDefault().loadIcon(TRACE_SESSION_ICON_FILE_DESTROYED
);
95 // ------------------------------------------------------------------------
97 // ------------------------------------------------------------------------
100 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceControlComponent#getImage()
103 public Image
getImage() {
105 return fDestroyedImage
;
108 if (fSessionInfo
.getSessionState() == TraceSessionState
.INACTIVE
) {
109 return super.getImage();
116 * @return the whether the session is destroyed or not.
118 public boolean isDestroyed() {
123 * Sets the session destroyed state to the given value.
124 * @param destroyed - value to set.
126 public void setDestroyed(boolean destroyed
) {
127 fIsDestroyed
= destroyed
;
131 * @return the session state state (active or inactive).
133 public TraceSessionState
getSessionState() {
134 return fSessionInfo
.getSessionState();
138 * Sets the session state to the given value.
139 * @param state - state to set.
141 public void setSessionState(TraceSessionState state
) {
142 fSessionInfo
.setSessionState(state
);
146 * Sets the event state to the value specified by the given name.
147 * @param stateName - state to set.
149 public void setSessionState(String stateName
) {
150 fSessionInfo
.setSessionState(stateName
);
154 * @return path string where session is located.
156 public String
getSessionPath() {
157 return fSessionInfo
.getSessionPath();
161 * Sets the path string (where session is located) to the given value.
162 * @param sessionPath - session path to set.
164 public void setSessionPath(String sessionPath
) {
165 fSessionInfo
.setSessionPath(sessionPath
);
170 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceControlComponent#getAdapter(java.lang.Class)
172 @SuppressWarnings("rawtypes")
174 public Object
getAdapter(Class adapter
) {
175 if (adapter
== IPropertySource
.class) {
176 return new TraceSessionPropertySource(this);
182 * @return all available domains of this session.
184 public TraceDomainComponent
[] getDomains() {
185 List
<ITraceControlComponent
> sessions
= getChildren(TraceDomainComponent
.class);
186 return sessions
.toArray(new TraceDomainComponent
[sessions
.size()]);
190 * @return the parent target node
192 public TargetNodeComponent
getTargetNode() {
193 return ((TraceSessionGroup
)getParent()).getTargetNode();
196 // ------------------------------------------------------------------------
198 // ------------------------------------------------------------------------
201 * Retrieves the session configuration from the node.
203 * @throws ExecutionException
204 * If the command fails
206 public void getConfigurationFromNode() throws ExecutionException
{
207 getConfigurationFromNode(new NullProgressMonitor());
211 * Retrieves the session configuration from the node.
214 * - a progress monitor
215 * @throws ExecutionException
216 * If the command fails
218 public void getConfigurationFromNode(IProgressMonitor monitor
)
219 throws ExecutionException
{
221 fSessionInfo
= getControlService().getSession(getName(), monitor
);
222 IDomainInfo
[] domains
= fSessionInfo
.getDomains();
223 for (int i
= 0; i
< domains
.length
; i
++) {
224 TraceDomainComponent domainComponent
= new TraceDomainComponent(
225 domains
[i
].getName(), this);
226 addChild(domainComponent
);
227 domainComponent
.setDomainInfo(domains
[i
]);
232 * Starts the session.
234 * @throws ExecutionException
235 * If the command fails
237 public void startSession() throws ExecutionException
{
238 startSession(new NullProgressMonitor());
242 * Starts the session.
245 * - a progress monitor
246 * @throws ExecutionException
247 * If the command fails
249 public void startSession(IProgressMonitor monitor
)
250 throws ExecutionException
{
251 getControlService().startSession(getName(), monitor
);
255 * Starts the session.
257 * @throws ExecutionException
258 * If the command fails
260 public void stopSession() throws ExecutionException
{
261 startSession(new NullProgressMonitor());
265 * Starts the session.
268 * - a progress monitor
269 * @throws ExecutionException
270 * If the command fails
272 public void stopSession(IProgressMonitor monitor
) throws ExecutionException
{
273 getControlService().stopSession(getName(), monitor
);
277 * Enables channels with given names which are part of this domain. If a
278 * given channel doesn't exists it creates a new channel with the given
279 * parameters (or default values if given parameter is null).
281 * @param channelNames
282 * - a list of channel names to enable on this domain
284 * - channel information to set for the channel (use null for
287 * - a flag for indicating kernel or UST.
288 * @throws ExecutionException
289 * If the command fails
291 public void enableChannels(List
<String
> channelNames
, IChannelInfo info
,
292 boolean isKernel
) throws ExecutionException
{
293 enableChannels(channelNames
, info
, isKernel
, new NullProgressMonitor());
297 * Enables channels with given names which are part of this domain. If a
298 * given channel doesn't exists it creates a new channel with the given
299 * parameters (or default values if given parameter is null).
301 * @param channelNames
302 * - a list of channel names to enable on this domain
304 * - channel information to set for the channel (use null for
307 * - a flag for indicating kernel or UST.
309 * - a progress monitor
310 * @throws ExecutionException
311 * If the command fails
313 public void enableChannels(List
<String
> channelNames
, IChannelInfo info
,
314 boolean isKernel
, IProgressMonitor monitor
)
315 throws ExecutionException
{
316 getControlService().enableChannels(getName(), channelNames
, isKernel
,
321 * Enables a list of events with no additional parameters.
324 * - a list of event names to enabled.
326 * - a flag for indicating kernel or UST.
327 * @throws ExecutionException
328 * If the command fails
330 public void enableEvent(List
<String
> eventNames
, boolean isKernel
)
331 throws ExecutionException
{
332 enableEvents(eventNames
, isKernel
, new NullProgressMonitor());
336 * Enables a list of events with no additional parameters.
339 * - a list of event names to enabled.
341 * - a flag for indicating kernel or UST.
343 * - a progress monitor
344 * @throws ExecutionException
345 * If the command fails
347 public void enableEvents(List
<String
> eventNames
, boolean isKernel
,
348 IProgressMonitor monitor
) throws ExecutionException
{
349 getControlService().enableEvents(getName(), null, eventNames
, isKernel
,
354 * Enables all syscalls (for kernel domain)
356 * @throws ExecutionException
357 * If the command fails
359 public void enableSyscalls() throws ExecutionException
{
360 enableSyscalls(new NullProgressMonitor());
364 * Enables all syscalls (for kernel domain)
367 * - a progress monitor
368 * @throws ExecutionException
369 * If the command fails
371 public void enableSyscalls(IProgressMonitor monitor
)
372 throws ExecutionException
{
373 getControlService().enableSyscalls(getName(), null, monitor
);
377 * Enables a dynamic probe (for kernel domain)
380 * - event name for probe
382 * - true for dynamic function entry/return probe else false
385 * @throws ExecutionException
386 * If the command fails
388 public void enableProbe(String eventName
, boolean isFunction
, String probe
)
389 throws ExecutionException
{
390 enableProbe(eventName
, isFunction
, probe
, new NullProgressMonitor());
394 * Enables a dynamic probe (for kernel domain)
397 * - event name for probe
399 * - true for dynamic function entry/return probe else false
403 * - a progress monitor
404 * @throws ExecutionException
405 * If the command fails
407 public void enableProbe(String eventName
, boolean isFunction
, String probe
,
408 IProgressMonitor monitor
) throws ExecutionException
{
409 getControlService().enableProbe(getName(), null, eventName
, isFunction
,
414 * Enables events using log level.
418 * @param logLevelType
422 * @throws ExecutionException
423 * If the command fails
425 public void enableLogLevel(String eventName
, LogLevelType logLevelType
,
426 TraceLogLevel level
) throws ExecutionException
{
427 enableLogLevel(eventName
, logLevelType
, level
,
428 new NullProgressMonitor());
432 * Enables events using log level.
436 * @param logLevelType
441 * - a progress monitor
442 * @throws ExecutionException
443 * If the command fails
445 public void enableLogLevel(String eventName
, LogLevelType logLevelType
,
446 TraceLogLevel level
, IProgressMonitor monitor
)
447 throws ExecutionException
{
448 getControlService().enableLogLevel(getName(), null, eventName
,
449 logLevelType
, level
, monitor
);
453 * Gets all available contexts to be added to channels/events.
455 * @return the list of available contexts
456 * @throws ExecutionException
457 * If the command fails
459 public List
<String
> getContextList() throws ExecutionException
{
460 return getContextList(new NullProgressMonitor());
464 * Gets all available contexts to be added to channels/events.
467 * The monitor that will indicate the progress
468 * @return the list of available contexts
469 * @throws ExecutionException
470 * If the command fails
472 public List
<String
> getContextList(IProgressMonitor monitor
)
473 throws ExecutionException
{
474 return getControlService().getContextList(monitor
);