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
.ArrayList
;
15 import java
.util
.Iterator
;
16 import java
.util
.List
;
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
;
27 * <b><u>TraceControlComponent</u></b>
29 * Base implementation for trace control component.
32 public class TraceControlComponent
implements ITraceControlComponent
{
34 // ------------------------------------------------------------------------
36 // ------------------------------------------------------------------------
38 // ------------------------------------------------------------------------
40 // ------------------------------------------------------------------------
42 * The nambe of the component
44 private String fName
= ""; //$NON-NLS-1$
46 * The image to be displayed for the component.
48 private Image fImage
= null;
50 * The tool tip to be displayed for the component.
52 private String fToolTip
= null;
54 * The parent component.
56 private ITraceControlComponent fParent
= null;
58 * The list if children components.
60 private List
<ITraceControlComponent
> fChildren
= new ArrayList
<ITraceControlComponent
>();
63 * The list of listeners to be notfied about changes.
65 private ListenerList fListeners
= new ListenerList();
67 // ------------------------------------------------------------------------
69 // ------------------------------------------------------------------------
73 * @param name - the name of the component.
75 public TraceControlComponent(String name
) {
81 * @param name - the name of the component.
82 * @param parent - the parent component.
84 public TraceControlComponent(String name
, ITraceControlComponent parent
) {
89 // ------------------------------------------------------------------------
91 // ------------------------------------------------------------------------
94 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#getName()
97 public String
getName() {
103 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#setName(java.lang.String)
106 public void setName(String name
) {
112 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#getImage()
115 public Image
getImage() {
121 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#setImage(java.lang.String)
124 public void setImage(String path
) {
125 fImage
= LTTngUiPlugin
.getDefault().loadIcon(path
);
130 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#setImage(org.eclipse.swt.graphics.Image)
133 public void setImage(Image image
) {
139 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#getToolTip()
142 public String
getToolTip() {
148 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#setToolTip(java.lang.String)
151 public void setToolTip(String toolTip
) {
157 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#getTargetNodeState()
160 public TargetNodeState
getTargetNodeState() {
161 if (getParent() != null) {
162 return getParent().getTargetNodeState();
164 return TargetNodeState
.DISCONNECTED
;
169 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#setTargetNodeState(org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent.TargetNodeState)
172 public void setTargetNodeState(TargetNodeState state
) {
173 if (getParent() != null) {
174 getParent().setTargetNodeState(state
);
180 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#getControlService()
183 public ILttngControlService
getControlService() {
184 if (getParent() != null) {
185 return getParent().getControlService();
192 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#setControlService(org.eclipse.linuxtools.lttng.ui.views.control.service.ILttngControlService)
195 public void setControlService(ILttngControlService service
) {
196 if (getParent() != null) {
197 getParent().setControlService(service
);
203 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#getParent()
206 public ITraceControlComponent
getParent() {
212 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#setParent(org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent)
215 public void setParent(ITraceControlComponent parent
) {
221 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#getChildren()
224 public ITraceControlComponent
[] getChildren() {
225 return (ITraceControlComponent
[])fChildren
.toArray(new TraceControlComponent
[fChildren
.size()]);
230 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#setChildren(java.util.List)
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
);
242 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#getChild(java.lang.String)
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
);
256 // ------------------------------------------------------------------------
258 // ------------------------------------------------------------------------
261 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#dispose()
264 public void dispose() {
265 // default implementation
270 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#addChild(org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent)
273 public void addChild(ITraceControlComponent component
) {
274 if (component
!= null) {
275 fChildren
.add(component
);
277 fireComponentAdded(this, component
);
282 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#removeChild(org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent)
285 public void removeChild(ITraceControlComponent component
) {
286 if (component
!= null) {
287 fChildren
.remove(component
);
290 fireComponentRemoved(this, component
);
295 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#removeAllChildren()
298 public void removeAllChildren() {
299 for (Iterator
<ITraceControlComponent
> iterator
= fChildren
.iterator(); iterator
.hasNext();) {
300 ITraceControlComponent child
= (ITraceControlComponent
) iterator
.next();
301 child
.removeAllChildren();
304 // fireCompenentChanged(this);
309 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#containsChild(java.lang.String)
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
)) {
325 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#hasChildren()
328 public boolean hasChildren() {
329 return !fChildren
.isEmpty();
334 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#addComponentListener(org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponentChangedListener)
337 public void addComponentListener(ITraceControlComponentChangedListener listener
) {
339 fParent
.addComponentListener(listener
);
341 fListeners
.add(listener
);
347 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#removeComponentListener(org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponentChangedListener)
350 public void removeComponentListener(ITraceControlComponentChangedListener listener
) {
352 fParent
.removeComponentListener(listener
);
354 fListeners
.remove(listener
);
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)
363 public void fireComponentAdded(ITraceControlComponent parent
, ITraceControlComponent component
) {
364 if (component
== null) {
368 if (fParent
!= null) {
369 fParent
.fireComponentAdded(parent
, component
);
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
);
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)
384 public void fireComponentRemoved(ITraceControlComponent parent
, ITraceControlComponent component
) {
385 if (component
== null) {
389 if (fParent
!= null) {
390 fParent
.fireComponentRemoved(parent
, component
);
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
);
402 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent#fireCompenentChanged(org.eclipse.linuxtools.lttng.ui.views.control.model.ITraceControlComponent)
405 public void fireComponentChanged(ITraceControlComponent component
) {
406 if (component
== null) {
410 if (fParent
!= null) {
411 fParent
.fireComponentChanged(component
);
413 Object
[] listeners
= fListeners
.getListeners();
414 for (int i
= 0; i
< listeners
.length
; i
++) {
415 ITraceControlComponentChangedListener listener
= (ITraceControlComponentChangedListener
) listeners
[i
];
416 listener
.componentChanged(component
);
423 * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
425 @SuppressWarnings("rawtypes")
427 public Object
getAdapter(Class adapter
) {