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
1 /**********************************************************************
2 * Copyright (c) 2012, 2014 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.tracecompass.internal.lttng2.control.ui.views.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.swt.graphics.Image;
20 import org.eclipse.tracecompass.internal.lttng2.control.core.model.TargetNodeState;
21 import org.eclipse.tracecompass.internal.lttng2.control.ui.Activator;
22 import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.ITraceControlComponent;
23 import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.ITraceControlComponentChangedListener;
24 import org.eclipse.tracecompass.internal.lttng2.control.ui.views.service.ILttngControlService;
25
26 /**
27 * <p>
28 * Base implementation for trace control component.
29 * </p>
30 *
31 * @author Bernd Hufmann
32 */
33 public class TraceControlComponent implements ITraceControlComponent {
34
35 // ------------------------------------------------------------------------
36 // Constants
37 // ------------------------------------------------------------------------
38
39 // ------------------------------------------------------------------------
40 // Attributes
41 // ------------------------------------------------------------------------
42 /**
43 * The name of the component
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 */
61 private final List<ITraceControlComponent> fChildren = new ArrayList<>();
62 /**
63 * The list of listeners to be notified about changes.
64 */
65 private final ListenerList fListeners = new ListenerList();
66
67 // ------------------------------------------------------------------------
68 // Constructors
69 // ------------------------------------------------------------------------
70
71 /**
72 * Constructor
73 * @param name - the name of the component.
74 */
75 public TraceControlComponent(String name) {
76 this(name, null);
77 }
78
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 }
88
89 // ------------------------------------------------------------------------
90 // Accessors
91 // ------------------------------------------------------------------------
92
93 @Override
94 public String getName() {
95 return fName;
96 }
97
98 @Override
99 public void setName(String name) {
100 fName = name;
101 }
102
103 @Override
104 public Image getImage() {
105 return fImage;
106 }
107
108 @Override
109 public void setImage(String path) {
110 fImage = Activator.getDefault().loadIcon(path);
111 }
112
113 @Override
114 public void setImage(Image image) {
115 fImage = image;
116 }
117
118 @Override
119 public String getToolTip() {
120 return fToolTip;
121 }
122
123 @Override
124 public void setToolTip(String toolTip) {
125 fToolTip = toolTip;
126 }
127
128 @Override
129 public TargetNodeState getTargetNodeState() {
130 if (getParent() != null) {
131 return getParent().getTargetNodeState();
132 }
133 return TargetNodeState.DISCONNECTED;
134 }
135
136 @Override
137 public void setTargetNodeState(TargetNodeState state) {
138 if (getParent() != null) {
139 getParent().setTargetNodeState(state);
140 }
141 }
142
143 @Override
144 public ITraceControlComponent getParent() {
145 return fParent;
146 }
147
148 @Override
149 public void setParent(ITraceControlComponent parent) {
150 fParent = parent;
151 }
152
153 @Override
154 public ITraceControlComponent[] getChildren() {
155 return fChildren.toArray(new ITraceControlComponent[fChildren.size()]);
156 }
157
158 @Override
159 public void setChildren(List<ITraceControlComponent> children) {
160 for (Iterator<ITraceControlComponent> iterator = children.iterator(); iterator.hasNext();) {
161 ITraceControlComponent traceControlComponent = iterator.next();
162 fChildren.add(traceControlComponent);
163 fireComponentChanged(this);
164 }
165 }
166
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 }
178
179 @Override
180 public List<ITraceControlComponent> getChildren(Class<? extends ITraceControlComponent> clazz) {
181 List<ITraceControlComponent> list = new ArrayList<>();
182
183 for (Iterator<ITraceControlComponent> iterator = fChildren.iterator(); iterator.hasNext();) {
184 ITraceControlComponent child = iterator.next();
185 if (child.getClass() == clazz) {
186 list.add(child);
187 }
188 }
189 return list;
190 }
191
192 @Override
193 public ILttngControlService getControlService() {
194 if (getParent() != null) {
195 return getParent().getControlService();
196 }
197 return null;
198 }
199
200 @Override
201 public void setControlService(ILttngControlService service) {
202 if (getParent() != null) {
203 getParent().setControlService(service);
204 }
205 }
206
207 // ------------------------------------------------------------------------
208 // Operations
209 // ------------------------------------------------------------------------
210
211 @Override
212 public void dispose() {
213 // default implementation
214 }
215
216 @Override
217 public void addChild(ITraceControlComponent component) {
218 if (component != null) {
219 fChildren.add(component);
220 }
221 fireComponentAdded(this, component);
222 }
223
224 @Override
225 public void removeChild(ITraceControlComponent component) {
226 if (component != null) {
227 fChildren.remove(component);
228 component.dispose();
229 }
230 fireComponentRemoved(this, component);
231 }
232
233 @Override
234 public void removeAllChildren() {
235 for (Iterator<ITraceControlComponent> iterator = fChildren.iterator(); iterator.hasNext();) {
236 ITraceControlComponent child = iterator.next();
237 child.removeAllChildren();
238 }
239 fChildren.clear();
240 // fireCompenentChanged(this);
241 }
242
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
255 @Override
256 public boolean hasChildren() {
257 return !fChildren.isEmpty();
258 }
259
260 @Override
261 public void addComponentListener(ITraceControlComponentChangedListener listener) {
262 if (fParent != null) {
263 fParent.addComponentListener(listener);
264 } else {
265 fListeners.add(listener);
266 }
267 }
268
269 @Override
270 public void removeComponentListener(ITraceControlComponentChangedListener listener) {
271 if (fParent != null) {
272 fParent.removeComponentListener(listener);
273 } else {
274 fListeners.remove(listener);
275 }
276 }
277
278 @Override
279 public void fireComponentAdded(ITraceControlComponent parent, ITraceControlComponent component) {
280 if (component == null) {
281 return;
282 }
283
284 if (fParent != null) {
285 fParent.fireComponentAdded(parent, component);
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
295 @Override
296 public void fireComponentRemoved(ITraceControlComponent parent, ITraceControlComponent component) {
297 if (component == null) {
298 return;
299 }
300
301 if (fParent != null) {
302 fParent.fireComponentRemoved(parent, component);
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 }
311
312 @Override
313 public void fireComponentChanged(ITraceControlComponent component) {
314 if (component == null) {
315 return;
316 }
317
318 if (fParent != null) {
319 fParent.fireComponentChanged(component);
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
329 @Override
330 public <T> T getAdapter(Class<T> adapter) {
331 return null;
332 }
333 }
This page took 0.039758 seconds and 5 git commands to generate.