Update usage of IAdaptable#getAdapter
[deliverable/tracecompass.git] / lttng / org.eclipse.tracecompass.lttng2.control.ui / src / org / eclipse / tracecompass / internal / lttng2 / control / ui / views / model / impl / TraceControlComponent.java
CommitLineData
eb1bab5b 1/**********************************************************************
60ae41e1 2 * Copyright (c) 2012, 2014 Ericsson
cfdb727a 3 *
eb1bab5b
BH
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
cfdb727a
AM
8 *
9 * Contributors:
eb1bab5b
BH
10 * Bernd Hufmann - Initial API and implementation
11 **********************************************************************/
9bc60be7 12package org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl;
eb1bab5b
BH
13
14import java.util.ArrayList;
15import java.util.Iterator;
16import java.util.List;
17
18import org.eclipse.core.runtime.ListenerList;
eb1bab5b 19import org.eclipse.swt.graphics.Image;
9bc60be7
AM
20import org.eclipse.tracecompass.internal.lttng2.control.core.model.TargetNodeState;
21import org.eclipse.tracecompass.internal.lttng2.control.ui.Activator;
22import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.ITraceControlComponent;
23import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.ITraceControlComponentChangedListener;
24import org.eclipse.tracecompass.internal.lttng2.control.ui.views.service.ILttngControlService;
eb1bab5b
BH
25
26/**
eb1bab5b
BH
27 * <p>
28 * Base implementation for trace control component.
29 * </p>
cfdb727a 30 *
dbd4432d 31 * @author Bernd Hufmann
eb1bab5b
BH
32 */
33public class TraceControlComponent implements ITraceControlComponent {
34
35 // ------------------------------------------------------------------------
36 // Constants
37 // ------------------------------------------------------------------------
38
39 // ------------------------------------------------------------------------
40 // Attributes
41 // ------------------------------------------------------------------------
42 /**
6503ae0f 43 * The name of the component
eb1bab5b
BH
44 */
45 private String fName = ""; //$NON-NLS-1$
46 /**
47 * The image to be displayed for the component.
48 */
49 private Image fImage = null;
50 /**
51 * The tool tip to be displayed for the component.
52 */
53 private String fToolTip = null;
54 /**
55 * The parent component.
56 */
57 private ITraceControlComponent fParent = null;
58 /**
59 * The list if children components.
60 */
e0838ca1 61 private final List<ITraceControlComponent> fChildren = new ArrayList<>();
eb1bab5b 62 /**
6503ae0f 63 * The list of listeners to be notified about changes.
eb1bab5b 64 */
cfdb727a 65 private final ListenerList fListeners = new ListenerList();
eb1bab5b
BH
66
67 // ------------------------------------------------------------------------
68 // Constructors
69 // ------------------------------------------------------------------------
cfdb727a 70
eb1bab5b
BH
71 /**
72 * Constructor
73 * @param name - the name of the component.
74 */
75 public TraceControlComponent(String name) {
76 this(name, null);
77 }
cfdb727a 78
eb1bab5b
BH
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 }
cfdb727a 88
eb1bab5b
BH
89 // ------------------------------------------------------------------------
90 // Accessors
91 // ------------------------------------------------------------------------
11252342 92
eb1bab5b
BH
93 @Override
94 public String getName() {
95 return fName;
96 }
97
eb1bab5b
BH
98 @Override
99 public void setName(String name) {
100 fName = name;
101 }
102
eb1bab5b
BH
103 @Override
104 public Image getImage() {
cfdb727a 105 return fImage;
eb1bab5b
BH
106 }
107
eb1bab5b
BH
108 @Override
109 public void setImage(String path) {
31a6a4e4 110 fImage = Activator.getDefault().loadIcon(path);
eb1bab5b
BH
111 }
112
eb1bab5b
BH
113 @Override
114 public void setImage(Image image) {
115 fImage = image;
116 }
cfdb727a 117
eb1bab5b
BH
118 @Override
119 public String getToolTip() {
120 return fToolTip;
121 }
122
eb1bab5b
BH
123 @Override
124 public void setToolTip(String toolTip) {
125 fToolTip = toolTip;
126 }
cfdb727a 127
cfdb727a 128 @Override
eb1bab5b
BH
129 public TargetNodeState getTargetNodeState() {
130 if (getParent() != null) {
131 return getParent().getTargetNodeState();
132 }
133 return TargetNodeState.DISCONNECTED;
134 }
cfdb727a 135
eb1bab5b
BH
136 @Override
137 public void setTargetNodeState(TargetNodeState state) {
138 if (getParent() != null) {
139 getParent().setTargetNodeState(state);
140 }
141 }
142
eb1bab5b
BH
143 @Override
144 public ITraceControlComponent getParent() {
145 return fParent;
146 }
147
eb1bab5b
BH
148 @Override
149 public void setParent(ITraceControlComponent parent) {
150 fParent = parent;
151 }
152
eb1bab5b
BH
153 @Override
154 public ITraceControlComponent[] getChildren() {
cfdb727a 155 return fChildren.toArray(new ITraceControlComponent[fChildren.size()]);
eb1bab5b
BH
156 }
157
eb1bab5b
BH
158 @Override
159 public void setChildren(List<ITraceControlComponent> children) {
160 for (Iterator<ITraceControlComponent> iterator = children.iterator(); iterator.hasNext();) {
cfdb727a 161 ITraceControlComponent traceControlComponent = iterator.next();
eb1bab5b 162 fChildren.add(traceControlComponent);
b957fb8c 163 fireComponentChanged(this);
eb1bab5b
BH
164 }
165 }
166
eb1bab5b
BH
167 @Override
168 public ITraceControlComponent getChild(String name) {
169 ITraceControlComponent child = null;
170 for (int i = 0; i < fChildren.size(); i++) {
171 if (fChildren.get(i).getName().equals(name)) {
172 child = fChildren.get(i);
173 break;
174 }
175 }
176 return child;
177 }
11252342 178
6503ae0f
BH
179 @Override
180 public List<ITraceControlComponent> getChildren(Class<? extends ITraceControlComponent> clazz) {
e0838ca1 181 List<ITraceControlComponent> list = new ArrayList<>();
6503ae0f
BH
182
183 for (Iterator<ITraceControlComponent> iterator = fChildren.iterator(); iterator.hasNext();) {
cfdb727a 184 ITraceControlComponent child = iterator.next();
6503ae0f
BH
185 if (child.getClass() == clazz) {
186 list.add(child);
187 }
188 }
189 return list;
190 }
191
6503ae0f
BH
192 @Override
193 public ILttngControlService getControlService() {
194 if (getParent() != null) {
195 return getParent().getControlService();
196 }
197 return null;
198 }
199
6503ae0f
BH
200 @Override
201 public void setControlService(ILttngControlService service) {
202 if (getParent() != null) {
203 getParent().setControlService(service);
204 }
205 }
eb1bab5b
BH
206
207 // ------------------------------------------------------------------------
208 // Operations
209 // ------------------------------------------------------------------------
11252342 210
eb1bab5b
BH
211 @Override
212 public void dispose() {
213 // default implementation
214 }
215
eb1bab5b
BH
216 @Override
217 public void addChild(ITraceControlComponent component) {
218 if (component != null) {
219 fChildren.add(component);
220 }
4775bcbf 221 fireComponentAdded(this, component);
eb1bab5b
BH
222 }
223
eb1bab5b
BH
224 @Override
225 public void removeChild(ITraceControlComponent component) {
226 if (component != null) {
227 fChildren.remove(component);
228 component.dispose();
229 }
4775bcbf 230 fireComponentRemoved(this, component);
eb1bab5b
BH
231 }
232
eb1bab5b
BH
233 @Override
234 public void removeAllChildren() {
235 for (Iterator<ITraceControlComponent> iterator = fChildren.iterator(); iterator.hasNext();) {
cfdb727a 236 ITraceControlComponent child = iterator.next();
eb1bab5b
BH
237 child.removeAllChildren();
238 }
239 fChildren.clear();
240// fireCompenentChanged(this);
241 }
242
eb1bab5b
BH
243 @Override
244 public boolean containsChild(String name) {
245 boolean retValue = false;
246 for (int i = 0; i < fChildren.size(); i++) {
247 if (fChildren.get(i).getName().equals(name)) {
248 retValue = true;
249 break;
250 }
251 }
252 return retValue;
253 }
254
eb1bab5b
BH
255 @Override
256 public boolean hasChildren() {
257 return !fChildren.isEmpty();
258 }
259
eb1bab5b
BH
260 @Override
261 public void addComponentListener(ITraceControlComponentChangedListener listener) {
cfdb727a 262 if (fParent != null) {
eb1bab5b 263 fParent.addComponentListener(listener);
cfdb727a 264 } else {
eb1bab5b
BH
265 fListeners.add(listener);
266 }
267 }
268
eb1bab5b
BH
269 @Override
270 public void removeComponentListener(ITraceControlComponentChangedListener listener) {
cfdb727a 271 if (fParent != null) {
eb1bab5b 272 fParent.removeComponentListener(listener);
cfdb727a 273 } else {
eb1bab5b
BH
274 fListeners.remove(listener);
275 }
276 }
277
eb1bab5b 278 @Override
4775bcbf 279 public void fireComponentAdded(ITraceControlComponent parent, ITraceControlComponent component) {
eb1bab5b
BH
280 if (component == null) {
281 return;
282 }
283
284 if (fParent != null) {
4775bcbf 285 fParent.fireComponentAdded(parent, component);
eb1bab5b
BH
286 } else {
287 Object[] listeners = fListeners.getListeners();
288 for (int i = 0; i < listeners.length; i++) {
289 ITraceControlComponentChangedListener listener = (ITraceControlComponentChangedListener) listeners[i];
290 listener.componentAdded(parent, component);
291 }
292 }
293 }
294
eb1bab5b 295 @Override
4775bcbf 296 public void fireComponentRemoved(ITraceControlComponent parent, ITraceControlComponent component) {
eb1bab5b
BH
297 if (component == null) {
298 return;
299 }
300
301 if (fParent != null) {
4775bcbf 302 fParent.fireComponentRemoved(parent, component);
eb1bab5b
BH
303 } else {
304 Object[] listeners = fListeners.getListeners();
305 for (int i = 0; i < listeners.length; i++) {
306 ITraceControlComponentChangedListener listener = (ITraceControlComponentChangedListener) listeners[i];
307 listener.componentRemoved(parent, component);
308 }
309 }
310 }
cfdb727a 311
eb1bab5b 312 @Override
4775bcbf 313 public void fireComponentChanged(ITraceControlComponent component) {
eb1bab5b
BH
314 if (component == null) {
315 return;
316 }
317
318 if (fParent != null) {
4775bcbf 319 fParent.fireComponentChanged(component);
eb1bab5b
BH
320 } else {
321 Object[] listeners = fListeners.getListeners();
322 for (int i = 0; i < listeners.length; i++) {
323 ITraceControlComponentChangedListener listener = (ITraceControlComponentChangedListener) listeners[i];
324 listener.componentChanged(component);
325 }
326 }
327 }
328
eb1bab5b 329 @Override
e58fe1d5 330 public <T> T getAdapter(Class<T> adapter) {
eb1bab5b
BH
331 return null;
332 }
333}
This page took 0.09349 seconds and 5 git commands to generate.