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
.internal
.lttng2
.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
.internal
.lttng2
.core
.control
.model
.TargetNodeState
;
20 import org
.eclipse
.linuxtools
.internal
.lttng2
.ui
.Activator
;
21 import org
.eclipse
.linuxtools
.internal
.lttng2
.ui
.views
.control
.model
.ITraceControlComponent
;
22 import org
.eclipse
.linuxtools
.internal
.lttng2
.ui
.views
.control
.model
.ITraceControlComponentChangedListener
;
23 import org
.eclipse
.linuxtools
.internal
.lttng2
.ui
.views
.control
.service
.ILttngControlService
;
24 import org
.eclipse
.swt
.graphics
.Image
;
28 * Base implementation for trace control component.
31 * @author Bernd Hufmann
33 public class TraceControlComponent
implements ITraceControlComponent
{
35 // ------------------------------------------------------------------------
37 // ------------------------------------------------------------------------
39 // ------------------------------------------------------------------------
41 // ------------------------------------------------------------------------
43 * The name of the component
45 private String fName
= ""; //$NON-NLS-1$
47 * The image to be displayed for the component.
49 private Image fImage
= null;
51 * The tool tip to be displayed for the component.
53 private String fToolTip
= null;
55 * The parent component.
57 private ITraceControlComponent fParent
= null;
59 * The list if children components.
61 private final List
<ITraceControlComponent
> fChildren
= new ArrayList
<ITraceControlComponent
>();
63 * The list of listeners to be notified about changes.
65 private final 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.internal.lttng2.ui.views.control.model.ITraceControlComponent#getName()
97 public String
getName() {
103 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent#setName(java.lang.String)
106 public void setName(String name
) {
112 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent#getImage()
115 public Image
getImage() {
121 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent#setImage(java.lang.String)
124 public void setImage(String path
) {
125 fImage
= Activator
.getDefault().loadIcon(path
);
130 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent#setImage(org.eclipse.swt.graphics.Image)
133 public void setImage(Image image
) {
139 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent#getToolTip()
142 public String
getToolTip() {
148 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent#setToolTip(java.lang.String)
151 public void setToolTip(String toolTip
) {
157 * @see org.eclipse.linuxtools.internal.lttng2.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.internal.lttng2.ui.views.control.model.ITraceControlComponent#setTargetNodeState(org.eclipse.linuxtools.internal.lttng2.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.internal.lttng2.ui.views.control.model.ITraceControlComponent#getParent()
183 public ITraceControlComponent
getParent() {
189 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent#setParent(org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent)
192 public void setParent(ITraceControlComponent parent
) {
198 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent#getChildren()
201 public ITraceControlComponent
[] getChildren() {
202 return fChildren
.toArray(new ITraceControlComponent
[fChildren
.size()]);
206 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponents#etChildren(java.util.List)
209 public void setChildren(List
<ITraceControlComponent
> children
) {
210 for (Iterator
<ITraceControlComponent
> iterator
= children
.iterator(); iterator
.hasNext();) {
211 ITraceControlComponent traceControlComponent
= iterator
.next();
212 fChildren
.add(traceControlComponent
);
213 fireComponentChanged(this);
219 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent#getChild(java.lang.String)
222 public ITraceControlComponent
getChild(String name
) {
223 ITraceControlComponent child
= null;
224 for (int i
= 0; i
< fChildren
.size(); i
++) {
225 if (fChildren
.get(i
).getName().equals(name
)) {
226 child
= fChildren
.get(i
);
234 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent#getChildren(java.lang.Class)
237 public List
<ITraceControlComponent
> getChildren(Class
<?
extends ITraceControlComponent
> clazz
) {
238 List
<ITraceControlComponent
> list
= new ArrayList
<ITraceControlComponent
>();
240 for (Iterator
<ITraceControlComponent
> iterator
= fChildren
.iterator(); iterator
.hasNext();) {
241 ITraceControlComponent child
= iterator
.next();
242 if (child
.getClass() == clazz
) {
251 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent#getControlService()
254 public ILttngControlService
getControlService() {
255 if (getParent() != null) {
256 return getParent().getControlService();
263 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent#setControlService(org.eclipse.linuxtools.internal.lttng2.ui.views.control.service.ILttngControlService)
266 public void setControlService(ILttngControlService service
) {
267 if (getParent() != null) {
268 getParent().setControlService(service
);
272 // ------------------------------------------------------------------------
274 // ------------------------------------------------------------------------
277 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent#dispose()
280 public void dispose() {
281 // default implementation
286 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent#addChild(org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent)
289 public void addChild(ITraceControlComponent component
) {
290 if (component
!= null) {
291 fChildren
.add(component
);
293 fireComponentAdded(this, component
);
298 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent#removeChild(org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent)
301 public void removeChild(ITraceControlComponent component
) {
302 if (component
!= null) {
303 fChildren
.remove(component
);
306 fireComponentRemoved(this, component
);
311 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent#removeAllChildren()
314 public void removeAllChildren() {
315 for (Iterator
<ITraceControlComponent
> iterator
= fChildren
.iterator(); iterator
.hasNext();) {
316 ITraceControlComponent child
= iterator
.next();
317 child
.removeAllChildren();
320 // fireCompenentChanged(this);
325 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent#containsChild(java.lang.String)
328 public boolean containsChild(String name
) {
329 boolean retValue
= false;
330 for (int i
= 0; i
< fChildren
.size(); i
++) {
331 if (fChildren
.get(i
).getName().equals(name
)) {
341 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent#hasChildren()
344 public boolean hasChildren() {
345 return !fChildren
.isEmpty();
350 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent#addComponentListener(org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponentChangedListener)
353 public void addComponentListener(ITraceControlComponentChangedListener listener
) {
354 if (fParent
!= null) {
355 fParent
.addComponentListener(listener
);
357 fListeners
.add(listener
);
363 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent#removeComponentListener(org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponentChangedListener)
366 public void removeComponentListener(ITraceControlComponentChangedListener listener
) {
367 if (fParent
!= null) {
368 fParent
.removeComponentListener(listener
);
370 fListeners
.remove(listener
);
376 * @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)
379 public void fireComponentAdded(ITraceControlComponent parent
, ITraceControlComponent component
) {
380 if (component
== null) {
384 if (fParent
!= null) {
385 fParent
.fireComponentAdded(parent
, component
);
387 Object
[] listeners
= fListeners
.getListeners();
388 for (int i
= 0; i
< listeners
.length
; i
++) {
389 ITraceControlComponentChangedListener listener
= (ITraceControlComponentChangedListener
) listeners
[i
];
390 listener
.componentAdded(parent
, component
);
397 * @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)
400 public void fireComponentRemoved(ITraceControlComponent parent
, ITraceControlComponent component
) {
401 if (component
== null) {
405 if (fParent
!= null) {
406 fParent
.fireComponentRemoved(parent
, component
);
408 Object
[] listeners
= fListeners
.getListeners();
409 for (int i
= 0; i
< listeners
.length
; i
++) {
410 ITraceControlComponentChangedListener listener
= (ITraceControlComponentChangedListener
) listeners
[i
];
411 listener
.componentRemoved(parent
, component
);
418 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent#fireCompenentChanged(org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent)
421 public void fireComponentChanged(ITraceControlComponent component
) {
422 if (component
== null) {
426 if (fParent
!= null) {
427 fParent
.fireComponentChanged(component
);
429 Object
[] listeners
= fListeners
.getListeners();
430 for (int i
= 0; i
< listeners
.length
; i
++) {
431 ITraceControlComponentChangedListener listener
= (ITraceControlComponentChangedListener
) listeners
[i
];
432 listener
.componentChanged(component
);
439 * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
441 @SuppressWarnings("rawtypes")
443 public Object
getAdapter(Class adapter
) {