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