Merge branch 'master' into lttng_2_0_control_dev
[deliverable/tracecompass.git] / org.eclipse.linuxtools.lttng.ui / src / org / eclipse / linuxtools / lttng / ui / views / control / model / impl / TraceDomainComponent.java
1 /**********************************************************************
2 * Copyright (c) 2012 Ericsson
3 *
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
8 *
9 * Contributors:
10 * Bernd Hufmann - Initial API and implementation
11 **********************************************************************/
12 package org.eclipse.linuxtools.lttng.ui.views.control.model.impl;
13
14 import java.util.List;
15
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;
25
26 /**
27 * <b><u>TraceDomainComponent</u></b>
28 * <p>
29 * Implementation of the trace domain component.
30 * </p>
31 */
32 public class TraceDomainComponent extends TraceControlComponent {
33 // ------------------------------------------------------------------------
34 // Constants
35 // ------------------------------------------------------------------------
36 /**
37 * Path to icon file for this component.
38 */
39 public static final String TRACE_DOMAIN_ICON_FILE = "icons/obj16/domain.gif"; //$NON-NLS-1$
40
41 // ------------------------------------------------------------------------
42 // Attributes
43 // ------------------------------------------------------------------------
44 /**
45 * The domain information.
46 */
47 private IDomainInfo fDomainInfo = null;
48
49 // ------------------------------------------------------------------------
50 // Constructors
51 // ------------------------------------------------------------------------
52 /**
53 * Constructor
54 * @param name - the name of the component.
55 * @param parent - the parent of this component.
56 */
57 public TraceDomainComponent(String name, ITraceControlComponent parent) {
58 super(name, parent);
59 setImage(TRACE_DOMAIN_ICON_FILE);
60 setToolTip(Messages.TraceControl_DomainDisplayName);
61 fDomainInfo = new DomainInfo(name);
62 }
63
64 // ------------------------------------------------------------------------
65 // Accessors
66 // ------------------------------------------------------------------------
67 /**
68 * Sets the domain information.
69 * @param domainInfo - the domain information to set.
70 */
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]);
77 addChild(channel);
78 }
79 }
80
81 /*
82 * (non-Javadoc)
83 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.impl.TraceControlComponent#getAdapter(java.lang.Class)
84 */
85 @SuppressWarnings("rawtypes")
86 @Override
87 public Object getAdapter(Class adapter) {
88 if (adapter == IPropertySource.class) {
89 return new TraceDomainPropertySource(this);
90 }
91 return null;
92 }
93
94 /**
95 * @return session name from parent
96 */
97 public String getSessionName() {
98 return ((TraceSessionComponent)getParent()).getName();
99 }
100
101 /**
102 * @return session from parent
103 */
104 public TraceSessionComponent getSession() {
105 return (TraceSessionComponent)getParent();
106 }
107
108 /**
109 * @return true if domain is kernel, false for UST
110 */
111 public boolean isKernel() {
112 return fDomainInfo.isKernel();
113 }
114
115 /**
116 * Sets whether domain is Kernel domain or UST
117 * @param isKernel true for kernel, false for UST
118 */
119 public void setIsKernel(boolean isKernel) {
120 fDomainInfo.setIsKernel(isKernel);
121 }
122
123 /**
124 * @return returns all available channels for this domain.
125 */
126 public TraceChannelComponent[] getChannels() {
127 List<ITraceControlComponent> channels = getChildren(TraceChannelComponent.class);
128 return (TraceChannelComponent[])channels.toArray(new TraceChannelComponent[channels.size()]);
129 }
130
131 // ------------------------------------------------------------------------
132 // Operations
133 // ------------------------------------------------------------------------
134 /**
135 * Retrieves the session configuration from the node.
136 * @throws ExecutionException
137 */
138 public void getConfigurationFromNode() throws ExecutionException {
139 getConfigurationFromNode(new NullProgressMonitor());
140 }
141 /**
142 * Retrieves the session configuration from the node.
143 * @param monitor - a progress monitor
144 * @throws ExecutionException
145 */
146 public void getConfigurationFromNode(IProgressMonitor monitor) throws ExecutionException {
147 TraceSessionComponent session = (TraceSessionComponent) getParent();
148 session.getConfigurationFromNode(monitor);
149 }
150 /**
151 * Enables channels with given names which are part of this domain. If a given channel
152 * doesn't exists it creates a new channel with the given parameters (or default values
153 * if given parameter is null).
154 * @param channelNames - a list of channel names to enable on this domain
155 * @param info - channel information to set for the channel (use null for default)
156 * @throws ExecutionException
157 */
158 public void enableChannels(List<String> channelNames, IChannelInfo info) throws ExecutionException {
159 enableChannels(channelNames, info, new NullProgressMonitor());
160 }
161 /**
162 * Enables channels with given names which are part of this domain. If a given channel
163 * doesn't exists it creates a new channel with the given parameters (or default values
164 * if given parameter is null).
165 * @param channelNames - a list of channel names to enable on this domain
166 * @param info - channel information to set for the channel (use null for default)
167 * @param monitor - a progress monitor
168 * @throws ExecutionException
169 */
170 public void enableChannels(List<String> channelNames, IChannelInfo info, IProgressMonitor monitor) throws ExecutionException {
171 getControlService().enableChannel(getParent().getName(), channelNames, isKernel(), info, monitor);
172 }
173 /**
174 * Disables channels with given names which are part of this domain.
175 * @param channelNames - a list of channel names to enable on this domain
176 * @throws ExecutionException
177 */
178 public void disableChannels(List<String> channelNames) throws ExecutionException {
179 disableChannels(channelNames, new NullProgressMonitor());
180 }
181 /**
182 * Disables channels with given names which are part of this domain.
183 * @param channelNames - a list of channel names to enable on this domain
184 * @param monitor - a progress monitor
185 * @throws ExecutionException
186 */
187 public void disableChannels(List<String> channelNames, IProgressMonitor monitor) throws ExecutionException {
188 getControlService().disableChannel(getParent().getName(), channelNames, isKernel(), monitor);
189 }
190 }
This page took 0.035059 seconds and 6 git commands to generate.