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
.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
;
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 name 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
>();
62 * The list of listeners to be notified about changes.
64 private ListenerList fListeners
= new ListenerList();
66 // ------------------------------------------------------------------------
68 // ------------------------------------------------------------------------
72 * @param name - the name of the component.
74 public TraceControlComponent(String name
) {
80 * @param name - the name of the component.
81 * @param parent - the parent component.
83 public TraceControlComponent(String name
, ITraceControlComponent parent
) {
88 // ------------------------------------------------------------------------
90 // ------------------------------------------------------------------------
93 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent#getName()
96 public String
getName() {
102 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent#setName(java.lang.String)
105 public void setName(String name
) {
111 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent#getImage()
114 public Image
getImage() {
120 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent#setImage(java.lang.String)
123 public void setImage(String path
) {
124 fImage
= Activator
.getDefault().loadIcon(path
);
129 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent#setImage(org.eclipse.swt.graphics.Image)
132 public void setImage(Image image
) {
138 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent#getToolTip()
141 public String
getToolTip() {
147 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent#setToolTip(java.lang.String)
150 public void setToolTip(String toolTip
) {
156 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent#getTargetNodeState()
159 public TargetNodeState
getTargetNodeState() {
160 if (getParent() != null) {
161 return getParent().getTargetNodeState();
163 return TargetNodeState
.DISCONNECTED
;
168 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent#setTargetNodeState(org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent.TargetNodeState)
171 public void setTargetNodeState(TargetNodeState state
) {
172 if (getParent() != null) {
173 getParent().setTargetNodeState(state
);
179 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent#getParent()
182 public ITraceControlComponent
getParent() {
188 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent#setParent(org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent)
191 public void setParent(ITraceControlComponent parent
) {
197 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent#getChildren()
200 public ITraceControlComponent
[] getChildren() {
201 return (ITraceControlComponent
[])fChildren
.toArray(new ITraceControlComponent
[fChildren
.size()]);
205 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponents#etChildren(java.util.List)
208 public void setChildren(List
<ITraceControlComponent
> children
) {
209 for (Iterator
<ITraceControlComponent
> iterator
= children
.iterator(); iterator
.hasNext();) {
210 ITraceControlComponent traceControlComponent
= (ITraceControlComponent
) iterator
.next();
211 fChildren
.add(traceControlComponent
);
212 fireComponentChanged(this);
218 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent#getChild(java.lang.String)
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
);
233 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent#getChildren(java.lang.Class)
236 public List
<ITraceControlComponent
> getChildren(Class
<?
extends ITraceControlComponent
> clazz
) {
237 List
<ITraceControlComponent
> list
= new ArrayList
<ITraceControlComponent
>();
239 for (Iterator
<ITraceControlComponent
> iterator
= fChildren
.iterator(); iterator
.hasNext();) {
240 ITraceControlComponent child
= (ITraceControlComponent
) iterator
.next();
241 if (child
.getClass() == clazz
) {
250 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent#getControlService()
253 public ILttngControlService
getControlService() {
254 if (getParent() != null) {
255 return getParent().getControlService();
262 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent#setControlService(org.eclipse.linuxtools.internal.lttng2.ui.views.control.service.ILttngControlService)
265 public void setControlService(ILttngControlService service
) {
266 if (getParent() != null) {
267 getParent().setControlService(service
);
271 // ------------------------------------------------------------------------
273 // ------------------------------------------------------------------------
276 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent#dispose()
279 public void dispose() {
280 // default implementation
285 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent#addChild(org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent)
288 public void addChild(ITraceControlComponent component
) {
289 if (component
!= null) {
290 fChildren
.add(component
);
292 fireComponentAdded(this, component
);
297 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent#removeChild(org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent)
300 public void removeChild(ITraceControlComponent component
) {
301 if (component
!= null) {
302 fChildren
.remove(component
);
305 fireComponentRemoved(this, component
);
310 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent#removeAllChildren()
313 public void removeAllChildren() {
314 for (Iterator
<ITraceControlComponent
> iterator
= fChildren
.iterator(); iterator
.hasNext();) {
315 ITraceControlComponent child
= (ITraceControlComponent
) iterator
.next();
316 child
.removeAllChildren();
319 // fireCompenentChanged(this);
324 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent#containsChild(java.lang.String)
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
)) {
340 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent#hasChildren()
343 public boolean hasChildren() {
344 return !fChildren
.isEmpty();
349 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent#addComponentListener(org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponentChangedListener)
352 public void addComponentListener(ITraceControlComponentChangedListener listener
) {
354 fParent
.addComponentListener(listener
);
356 fListeners
.add(listener
);
362 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent#removeComponentListener(org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponentChangedListener)
365 public void removeComponentListener(ITraceControlComponentChangedListener listener
) {
367 fParent
.removeComponentListener(listener
);
369 fListeners
.remove(listener
);
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)
378 public void fireComponentAdded(ITraceControlComponent parent
, ITraceControlComponent component
) {
379 if (component
== null) {
383 if (fParent
!= null) {
384 fParent
.fireComponentAdded(parent
, component
);
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
);
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)
399 public void fireComponentRemoved(ITraceControlComponent parent
, ITraceControlComponent component
) {
400 if (component
== null) {
404 if (fParent
!= null) {
405 fParent
.fireComponentRemoved(parent
, component
);
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
);
417 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent#fireCompenentChanged(org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent)
420 public void fireComponentChanged(ITraceControlComponent component
) {
421 if (component
== null) {
425 if (fParent
!= null) {
426 fParent
.fireComponentChanged(component
);
428 Object
[] listeners
= fListeners
.getListeners();
429 for (int i
= 0; i
< listeners
.length
; i
++) {
430 ITraceControlComponentChangedListener listener
= (ITraceControlComponentChangedListener
) listeners
[i
];
431 listener
.componentChanged(component
);
438 * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
440 @SuppressWarnings("rawtypes")
442 public Object
getAdapter(Class adapter
) {