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
.lttng
.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
.lttng
.ui
.views
.control
.Messages
;
20 import org
.eclipse
.linuxtools
.lttng
.ui
.views
.control
.model
.IChannelInfo
;
21 import org
.eclipse
.linuxtools
.lttng
.ui
.views
.control
.model
.IDomainInfo
;
22 import org
.eclipse
.linuxtools
.lttng
.ui
.views
.control
.model
.ITraceControlComponent
;
23 import org
.eclipse
.linuxtools
.lttng
.ui
.views
.control
.property
.TraceDomainPropertySource
;
24 import org
.eclipse
.ui
.views
.properties
.IPropertySource
;
27 * <b><u>TraceDomainComponent</u></b>
29 * Implementation of the trace domain component.
32 public class TraceDomainComponent
extends TraceControlComponent
{
33 // ------------------------------------------------------------------------
35 // ------------------------------------------------------------------------
37 * Path to icon file for this component.
39 public static final String TRACE_DOMAIN_ICON_FILE
= "icons/obj16/domain.gif"; //$NON-NLS-1$
41 // ------------------------------------------------------------------------
43 // ------------------------------------------------------------------------
45 * The domain information.
47 private IDomainInfo fDomainInfo
= null;
49 // ------------------------------------------------------------------------
51 // ------------------------------------------------------------------------
54 * @param name - the name of the component.
55 * @param parent - the parent of this component.
57 public TraceDomainComponent(String name
, ITraceControlComponent parent
) {
59 setImage(TRACE_DOMAIN_ICON_FILE
);
60 setToolTip(Messages
.TraceControl_DomainDisplayName
);
61 fDomainInfo
= new DomainInfo(name
);
64 // ------------------------------------------------------------------------
66 // ------------------------------------------------------------------------
68 * Sets the domain information.
69 * @param domainInfo - the domain information to set.
71 public void setDomainInfo(IDomainInfo domainInfo
) {
72 fDomainInfo
= domainInfo
;
73 IChannelInfo
[] channels
= fDomainInfo
.getChannels();
74 for (int i
= 0; i
< channels
.length
; i
++) {
75 TraceChannelComponent channel
= new TraceChannelComponent(channels
[i
].getName(), this);
76 channel
.setChannelInfo(channels
[i
]);
83 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.impl.TraceControlComponent#getAdapter(java.lang.Class)
85 @SuppressWarnings("rawtypes")
87 public Object
getAdapter(Class adapter
) {
88 if (adapter
== IPropertySource
.class) {
89 return new TraceDomainPropertySource(this);
95 * @return session name from parent
97 public String
getSessionName() {
98 return ((TraceSessionComponent
)getParent()).getName();
102 * @return session from parent
104 public TraceSessionComponent
getSession() {
105 return (TraceSessionComponent
)getParent();
109 * @return true if domain is kernel, false for UST
111 public boolean isKernel() {
112 return fDomainInfo
.isKernel();
116 * Sets whether domain is Kernel domain or UST
117 * @param isKernel true for kernel, false for UST
119 public void setIsKernel(boolean isKernel
) {
120 fDomainInfo
.setIsKernel(isKernel
);
124 * @return returns all available channels for this domain.
126 public TraceChannelComponent
[] getChannels() {
127 List
<ITraceControlComponent
> channels
= getChildren(TraceChannelComponent
.class);
128 return (TraceChannelComponent
[])channels
.toArray(new TraceChannelComponent
[channels
.size()]);
132 * @return the parent target node
134 public TargetNodeComponent
getTargetNode() {
135 return ((TraceSessionComponent
)getParent()).getTargetNode();
138 // ------------------------------------------------------------------------
140 // ------------------------------------------------------------------------
142 * Retrieves the session configuration from the node.
143 * @throws ExecutionException
145 public void getConfigurationFromNode() throws ExecutionException
{
146 getConfigurationFromNode(new NullProgressMonitor());
149 * Retrieves the session configuration from the node.
150 * @param monitor - a progress monitor
151 * @throws ExecutionException
153 public void getConfigurationFromNode(IProgressMonitor monitor
) throws ExecutionException
{
154 TraceSessionComponent session
= (TraceSessionComponent
) getParent();
155 session
.getConfigurationFromNode(monitor
);
158 * Enables channels with given names which are part of this domain. If a given channel
159 * doesn't exists it creates a new channel with the given parameters (or default values
160 * if given parameter is null).
161 * @param channelNames - a list of channel names to enable on this domain
162 * @param info - channel information to set for the channel (use null for default)
163 * @throws ExecutionException
165 public void enableChannels(List
<String
> channelNames
, IChannelInfo info
) throws ExecutionException
{
166 enableChannels(channelNames
, info
, new NullProgressMonitor());
169 * Enables channels with given names which are part of this domain. If a given channel
170 * doesn't exists it creates a new channel with the given parameters (or default values
171 * if given parameter is null).
172 * @param channelNames - a list of channel names to enable on this domain
173 * @param info - channel information to set for the channel (use null for default)
174 * @param monitor - a progress monitor
175 * @throws ExecutionException
177 public void enableChannels(List
<String
> channelNames
, IChannelInfo info
, IProgressMonitor monitor
) throws ExecutionException
{
178 getControlService().enableChannels(getParent().getName(), channelNames
, isKernel(), info
, monitor
);
181 * Disables channels with given names which are part of this domain.
182 * @param channelNames - a list of channel names to enable on this domain
183 * @throws ExecutionException
185 public void disableChannels(List
<String
> channelNames
) throws ExecutionException
{
186 disableChannels(channelNames
, new NullProgressMonitor());
189 * Disables channels with given names which are part of this domain.
190 * @param channelNames - a list of channel names to enable on this domain
191 * @param monitor - a progress monitor
192 * @throws ExecutionException
194 public void disableChannels(List
<String
> channelNames
, IProgressMonitor monitor
) throws ExecutionException
{
195 getControlService().disableChannels(getParent().getName(), channelNames
, isKernel(), monitor
);
199 * Enables a list of events with no additional parameters.
200 * @param eventNames - a list of event names to enabled.
201 * @param monitor - a progress monitor
202 * @throws ExecutionException
204 public void enableEvents(List
<String
> eventNames
, IProgressMonitor monitor
) throws ExecutionException
{
205 getControlService().enableEvents(getSessionName(), null, eventNames
, isKernel(), monitor
);
209 * Enables all syscalls (for kernel domain)
210 * @throws ExecutionException
212 public void enableSyscalls() throws ExecutionException
{
213 enableSyscalls(new NullProgressMonitor());
217 * Enables all syscalls (for kernel domain)
218 * @param monitor - a progress monitor
219 * @throws ExecutionException
222 public void enableSyscalls(IProgressMonitor monitor
) throws ExecutionException
{
223 getControlService().enableSyscalls(getSessionName(), null, monitor
);
227 * Enables a dynamic probe (for kernel domain)
228 * @param eventName - event name for probe
229 * @param probe - the actual probe
230 * @throws ExecutionException
232 public void enableProbe(String eventName
, String probe
) throws ExecutionException
{
233 enableProbe(eventName
, probe
, new NullProgressMonitor());
237 * Enables a dynamic probe (for kernel domain)
238 * @param eventName - event name for probe
239 * @param probe - the actual probe
240 * @param monitor - a progress monitor
241 * @throws ExecutionException
243 public void enableProbe(String eventName
, String probe
, IProgressMonitor monitor
) throws ExecutionException
{
244 getControlService().enableProbe(getSessionName(), null, eventName
, probe
, monitor
);
248 * Enables a dynamic function entry/return probe (for kernel domain)
249 * @param eventName - event name for probe
250 * @param probe - the actual probe
251 * @throws ExecutionException
253 public void enableFunctionProbe(String eventName
, String probe
) throws ExecutionException
{
254 enableFunctionProbe(eventName
, probe
, new NullProgressMonitor());
258 * Enables a dynamic function entry/return probe (for kernel domain)
259 * @param eventName - event name for probe
260 * @param probe - the actual probe
261 * @param monitor - a progress monitor
262 * @throws ExecutionException
264 public void enableFunctionProbe(String eventName
, String probe
, IProgressMonitor monitor
) throws ExecutionException
{
265 getControlService().enableFunctionProbe(getSessionName(), null, eventName
, probe
, monitor
);