First part of LTTng 2.0 support
[deliverable/tracecompass.git] / org.eclipse.linuxtools.lttng.ui / src / org / eclipse / linuxtools / lttng / ui / views / control / model / impl / TraceControlComponent.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.ArrayList;
15 import java.util.Iterator;
16 import java.util.List;
17
18 import org.eclipse.core.runtime.ListenerList;
19 import org.eclipse.linuxtools.lttng.ui.LTTngUiPlugin;
20 import org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent;
21 import org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponentChangedListener;
22 import org.eclipse.linuxtools.lttng.ui.views.control.model.TargetNodeState;
23 import org.eclipse.linuxtools.lttng.ui.views.control.service.ILttngControlService;
24 import org.eclipse.swt.graphics.Image;
25
26 /**
27 * <b><u>TraceControlComponent</u></b>
28 * <p>
29 * Base implementation for trace control component.
30 * </p>
31 */
32 public class TraceControlComponent implements ITraceControlComponent {
33
34 // ------------------------------------------------------------------------
35 // Constants
36 // ------------------------------------------------------------------------
37
38 // ------------------------------------------------------------------------
39 // Attributes
40 // ------------------------------------------------------------------------
41 /**
42 * The nambe of the component
43 */
44 private String fName = ""; //$NON-NLS-1$
45 /**
46 * The image to be displayed for the component.
47 */
48 private Image fImage = null;
49 /**
50 * The tool tip to be displayed for the component.
51 */
52 private String fToolTip = null;
53 /**
54 * The parent component.
55 */
56 private ITraceControlComponent fParent = null;
57 /**
58 * The list if children components.
59 */
60 private List<ITraceControlComponent> fChildren = new ArrayList<ITraceControlComponent>();
61
62 /**
63 * The list of listeners to be notfied about changes.
64 */
65 private ListenerList fListeners = new ListenerList();
66
67 // ------------------------------------------------------------------------
68 // Constructors
69 // ------------------------------------------------------------------------
70
71 /**
72 * Constructor
73 * @param name - the name of the component.
74 */
75 public TraceControlComponent(String name) {
76 this(name, null);
77 }
78
79 /**
80 * Constructor
81 * @param name - the name of the component.
82 * @param parent - the parent component.
83 */
84 public TraceControlComponent(String name, ITraceControlComponent parent) {
85 fName = name;
86 fParent = parent;
87 }
88
89 // ------------------------------------------------------------------------
90 // Accessors
91 // ------------------------------------------------------------------------
92 /*
93 * (non-Javadoc)
94 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#getName()
95 */
96 @Override
97 public String getName() {
98 return fName;
99 }
100
101 /*
102 * (non-Javadoc)
103 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#setName(java.lang.String)
104 */
105 @Override
106 public void setName(String name) {
107 fName = name;
108 }
109
110 /*
111 * (non-Javadoc)
112 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#getImage()
113 */
114 @Override
115 public Image getImage() {
116 return fImage;
117 }
118
119 /*
120 * (non-Javadoc)
121 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#setImage(java.lang.String)
122 */
123 @Override
124 public void setImage(String path) {
125 fImage = LTTngUiPlugin.getDefault().loadIcon(path);
126 }
127
128 /*
129 * (non-Javadoc)
130 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#setImage(org.eclipse.swt.graphics.Image)
131 */
132 @Override
133 public void setImage(Image image) {
134 fImage = image;
135 }
136
137 /*
138 * (non-Javadoc)
139 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#getToolTip()
140 */
141 @Override
142 public String getToolTip() {
143 return fToolTip;
144 }
145
146 /*
147 * (non-Javadoc)
148 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#setToolTip(java.lang.String)
149 */
150 @Override
151 public void setToolTip(String toolTip) {
152 fToolTip = toolTip;
153 }
154
155 /*
156 * (non-Javadoc)
157 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#getTargetNodeState()
158 */
159 @Override
160 public TargetNodeState getTargetNodeState() {
161 if (getParent() != null) {
162 return getParent().getTargetNodeState();
163 }
164 return TargetNodeState.DISCONNECTED;
165 }
166
167 /*
168 * (non-Javadoc)
169 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#setTargetNodeState(org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent.TargetNodeState)
170 */
171 @Override
172 public void setTargetNodeState(TargetNodeState state) {
173 if (getParent() != null) {
174 getParent().setTargetNodeState(state);
175 }
176 }
177
178 /*
179 * (non-Javadoc)
180 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#getControlService()
181 */
182 @Override
183 public ILttngControlService getControlService() {
184 if (getParent() != null) {
185 return getParent().getControlService();
186 }
187 return null;
188 }
189
190 /*
191 * (non-Javadoc)
192 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#setControlService(org.eclipse.linuxtools.lttng.ui.views.control.service.ILttngControlService)
193 */
194 @Override
195 public void setControlService(ILttngControlService service) {
196 if (getParent() != null) {
197 getParent().setControlService(service);
198 }
199 }
200
201 /*
202 * (non-Javadoc)
203 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#getParent()
204 */
205 @Override
206 public ITraceControlComponent getParent() {
207 return fParent;
208 }
209
210 /*
211 * (non-Javadoc)
212 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#setParent(org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent)
213 */
214 @Override
215 public void setParent(ITraceControlComponent parent) {
216 fParent = parent;
217 }
218
219 /*
220 * (non-Javadoc)
221 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#getChildren()
222 */
223 @Override
224 public ITraceControlComponent[] getChildren() {
225 return (ITraceControlComponent [])fChildren.toArray(new TraceControlComponent[fChildren.size()]);
226 }
227
228 /*
229 * (non-Javadoc)
230 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#setChildren(java.util.List)
231 */
232 @Override
233 public void setChildren(List<ITraceControlComponent> children) {
234 for (Iterator<ITraceControlComponent> iterator = children.iterator(); iterator.hasNext();) {
235 ITraceControlComponent traceControlComponent = (ITraceControlComponent) iterator.next();
236 fChildren.add(traceControlComponent);
237 }
238 }
239
240 /*
241 * (non-Javadoc)
242 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#getChild(java.lang.String)
243 */
244 @Override
245 public ITraceControlComponent getChild(String name) {
246 ITraceControlComponent child = null;
247 for (int i = 0; i < fChildren.size(); i++) {
248 if (fChildren.get(i).getName().equals(name)) {
249 child = fChildren.get(i);
250 break;
251 }
252 }
253 return child;
254 }
255
256 // ------------------------------------------------------------------------
257 // Operations
258 // ------------------------------------------------------------------------
259 /*
260 * (non-Javadoc)
261 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#dispose()
262 */
263 @Override
264 public void dispose() {
265 // default implementation
266 }
267
268 /*
269 * (non-Javadoc)
270 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#addChild(org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent)
271 */
272 @Override
273 public void addChild(ITraceControlComponent component) {
274 if (component != null) {
275 fChildren.add(component);
276 }
277 fireCompenentAdded(this, component);
278 }
279
280 /*
281 * (non-Javadoc)
282 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#removeChild(org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent)
283 */
284 @Override
285 public void removeChild(ITraceControlComponent component) {
286 if (component != null) {
287 fChildren.remove(component);
288 component.dispose();
289 }
290 fireCompenentRemoved(this, component);
291 }
292
293 /*
294 * (non-Javadoc)
295 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#removeAllChildren()
296 */
297 @Override
298 public void removeAllChildren() {
299 for (Iterator<ITraceControlComponent> iterator = fChildren.iterator(); iterator.hasNext();) {
300 ITraceControlComponent child = (ITraceControlComponent) iterator.next();
301 child.removeAllChildren();
302 }
303 fChildren.clear();
304 // fireCompenentChanged(this);
305 }
306
307 /*
308 * (non-Javadoc)
309 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#containsChild(java.lang.String)
310 */
311 @Override
312 public boolean containsChild(String name) {
313 boolean retValue = false;
314 for (int i = 0; i < fChildren.size(); i++) {
315 if (fChildren.get(i).getName().equals(name)) {
316 retValue = true;
317 break;
318 }
319 }
320 return retValue;
321 }
322
323 /*
324 * (non-Javadoc)
325 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#hasChildren()
326 */
327 @Override
328 public boolean hasChildren() {
329 return !fChildren.isEmpty();
330 }
331
332 /*
333 * (non-Javadoc)
334 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#addComponentListener(org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponentChangedListener)
335 */
336 @Override
337 public void addComponentListener(ITraceControlComponentChangedListener listener) {
338 if (fParent != null)
339 fParent.addComponentListener(listener);
340 else {
341 fListeners.add(listener);
342 }
343 }
344
345 /*
346 * (non-Javadoc)
347 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#removeComponentListener(org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponentChangedListener)
348 */
349 @Override
350 public void removeComponentListener(ITraceControlComponentChangedListener listener) {
351 if (fParent != null)
352 fParent.removeComponentListener(listener);
353 else {
354 fListeners.remove(listener);
355 }
356 }
357
358 /*
359 * (non-Javadoc)
360 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#fireCompenentAdded(org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent, org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent)
361 */
362 @Override
363 public void fireCompenentAdded(ITraceControlComponent parent, ITraceControlComponent component) {
364 if (component == null) {
365 return;
366 }
367
368 if (fParent != null) {
369 fParent.fireCompenentAdded(parent, component);
370 } else {
371 Object[] listeners = fListeners.getListeners();
372 for (int i = 0; i < listeners.length; i++) {
373 ITraceControlComponentChangedListener listener = (ITraceControlComponentChangedListener) listeners[i];
374 listener.componentAdded(parent, component);
375 }
376 }
377 }
378
379 /*
380 * (non-Javadoc)
381 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#fireCompenentRemoved(org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent, org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent)
382 */
383 @Override
384 public void fireCompenentRemoved(ITraceControlComponent parent, ITraceControlComponent component) {
385 if (component == null) {
386 return;
387 }
388
389 if (fParent != null) {
390 fParent.fireCompenentRemoved(parent, component);
391 } else {
392 Object[] listeners = fListeners.getListeners();
393 for (int i = 0; i < listeners.length; i++) {
394 ITraceControlComponentChangedListener listener = (ITraceControlComponentChangedListener) listeners[i];
395 listener.componentRemoved(parent, component);
396 }
397 }
398 }
399
400 /*
401 * (non-Javadoc)
402 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#fireCompenentChanged(org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent)
403 */
404 @Override
405 public void fireCompenentChanged(ITraceControlComponent component) {
406 if (component == null) {
407 return;
408 }
409
410 if (fParent != null) {
411 fParent.fireCompenentChanged(component);
412 } else {
413 Object[] listeners = fListeners.getListeners();
414 for (int i = 0; i < listeners.length; i++) {
415 ITraceControlComponentChangedListener listener = (ITraceControlComponentChangedListener) listeners[i];
416 listener.componentChanged(component);
417 }
418 }
419 }
420
421 /*
422 * (non-Javadoc)
423 * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
424 */
425 @SuppressWarnings("rawtypes")
426 @Override
427 public Object getAdapter(Class adapter) {
428 return null;
429 }
430 }
This page took 0.042308 seconds and 6 git commands to generate.