Add support for filter feature of LTTng Tools 2.1
[deliverable/tracecompass.git] / org.eclipse.linuxtools.lttng2.ui / src / org / eclipse / linuxtools / internal / lttng2 / ui / views / control / dialogs / EnableUstEventsComposite.java
1 /**********************************************************************
2 * Copyright (c) 2012 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.linuxtools.internal.lttng2.ui.views.control.dialogs;
13
14 import java.util.ArrayList;
15 import java.util.HashSet;
16 import java.util.List;
17 import java.util.Set;
18
19 import org.eclipse.jface.dialogs.MessageDialog;
20 import org.eclipse.jface.viewers.CheckStateChangedEvent;
21 import org.eclipse.jface.viewers.CheckboxTreeViewer;
22 import org.eclipse.jface.viewers.ICheckStateListener;
23 import org.eclipse.linuxtools.internal.lttng2.core.control.model.LogLevelType;
24 import org.eclipse.linuxtools.internal.lttng2.core.control.model.TraceLogLevel;
25 import org.eclipse.linuxtools.internal.lttng2.ui.views.control.messages.Messages;
26 import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent;
27 import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.BaseEventComponent;
28 import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TargetNodeComponent;
29 import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceControlContentProvider;
30 import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceControlLabelProvider;
31 import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceProviderGroup;
32 import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.UstProviderComponent;
33 import org.eclipse.swt.SWT;
34 import org.eclipse.swt.custom.CCombo;
35 import org.eclipse.swt.events.SelectionAdapter;
36 import org.eclipse.swt.events.SelectionEvent;
37 import org.eclipse.swt.graphics.Image;
38 import org.eclipse.swt.layout.GridData;
39 import org.eclipse.swt.layout.GridLayout;
40 import org.eclipse.swt.widgets.Button;
41 import org.eclipse.swt.widgets.Composite;
42 import org.eclipse.swt.widgets.Group;
43 import org.eclipse.swt.widgets.Label;
44 import org.eclipse.swt.widgets.Text;
45
46 /**
47 * <p>
48 * A composite for collecting information about UST events to be enabled.
49 * </p>
50 *
51 * @author Bernd Hufmann
52 */
53 public class EnableUstEventsComposite extends Composite implements IEnableUstEvents {
54
55 // ------------------------------------------------------------------------
56 // Constants
57 // ------------------------------------------------------------------------
58
59 private enum GroupEnum { TRACEPOINTS, WILDCARD, LOGLEVEL }
60
61 // ------------------------------------------------------------------------
62 // Attributes
63 // ------------------------------------------------------------------------
64
65 /**
66 * A button to enable/disable the tracepoints group
67 */
68 private Button fTracepointsActivateButton;
69 /**
70 * A tree viewer for diplaying and selection of available tracepoints.
71 */
72 private CheckboxTreeViewer fTracepointsViewer;
73 /**
74 * A button to enable/disable the wildcard group
75 */
76 private Button fWildcardActivateButton;
77 /**
78 * A Text field for the event's wildcard.
79 */
80 private Text fWildcardText;
81 /**
82 * A button to enable/disable the log level group
83 */
84 private Button fLogLevelActivateButton;
85 /**
86 * A Text field for the event name for the log level enablement.
87 */
88 private Text fLogLevelEventNameText;
89 /**
90 * A Combo box for selecting the log level.
91 */
92 private CCombo fLogLevelCombo;
93 /**
94 * A button for selecting the log level (range 0 to level).
95 */
96 private Button fLogLevelButton;
97 /**
98 * A button for selecting the specified log level only.
99 */
100 private Button fLogLevelOnlyButton;
101 /**
102 * The filter text
103 */
104 private Text fFilterText;
105
106 /**
107 * The referenced trace provider group containing the UST providers
108 * component which contains a list of available tracepoints.
109 */
110 private final TraceProviderGroup fProviderGroup;
111 /**
112 * The flag indicating that tracepoints are selected.
113 */
114 private boolean fIsTracepoints;
115 /**
116 * The flag indicating that all tracepoints (across providers) are selected.
117 */
118 private boolean fIsAllTracepoints;
119 /**
120 * The list of tracepoints to be enabled.
121 */
122 private List<String> fSelectedEvents;
123 /**
124 * The flag indicating that all wildcard are selected..
125 */
126 private boolean fIsWildcard;
127 /**
128 * The wildcard if wildcard is selected.
129 */
130 private String fWildcard;
131 /**
132 *The flag indicating that all log level are selected.
133 */
134 private boolean fIsLogLevel;
135 /**
136 * The event name for the log level enablement.
137 */
138 private String fLogLevelEventName;
139 /**
140 * The type of the log level (loglevel or loglevel-only)
141 */
142 private LogLevelType fLogLevelType;
143 /**
144 * The actual selected log level.
145 */
146 private TraceLogLevel fLogLevel;
147 /**
148 * The filter expression
149 */
150 private String fFilterExpression;
151
152 // ------------------------------------------------------------------------
153 // Constructors
154 // ------------------------------------------------------------------------
155 /**
156 * Constructor
157 * @param parent - a parent composite
158 * @param style - a composite style
159 * @param providerGroup - the trace provider group
160 */
161 public EnableUstEventsComposite(Composite parent, int style, TraceProviderGroup providerGroup) {
162 super(parent, style);
163 fProviderGroup = providerGroup;
164 }
165
166 // ------------------------------------------------------------------------
167 // Accessors
168 // ------------------------------------------------------------------------
169
170 /*
171 * (non-Javadoc)
172 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableUstEvents#isTracepoints()
173 */
174 @Override
175 public boolean isTracepoints() {
176 return fIsTracepoints;
177 }
178
179 /*
180 * (non-Javadoc)
181 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableUstEvents#isAllTracePoints()
182 */
183 @Override
184 public boolean isAllTracePoints() {
185 return fIsAllTracepoints;
186 }
187
188 /*
189 * (non-Javadoc)
190 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableUstEvents#getEventNames()
191 */
192 @Override
193 public List<String> getEventNames() {
194 return new ArrayList<String>(fSelectedEvents);
195 }
196
197 /*
198 * (non-Javadoc)
199 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableUstEvents#isWildcard()
200 */
201 @Override
202 public boolean isWildcard() {
203 return fIsWildcard;
204 }
205
206 /*
207 * (non-Javadoc)
208 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableUstEvents#getWildcard()
209 */
210 @Override
211 public String getWildcard() {
212 return fWildcard;
213 }
214
215 /*
216 * (non-Javadoc)
217 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableUstEvents#isLogLevel()
218 */
219 @Override
220 public boolean isLogLevel() {
221 return fIsLogLevel;
222 }
223
224 /*
225 * (non-Javadoc)
226 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableUstEvents#getLogLevelType()
227 */
228 @Override
229 public LogLevelType getLogLevelType() {
230 return fLogLevelType;
231 }
232
233 /*
234 * (non-Javadoc)
235 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableUstEvents#getLogLevel()
236 */
237 @Override
238 public TraceLogLevel getLogLevel() {
239 return fLogLevel;
240 }
241
242 /*
243 * (non-Javadoc)
244 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableUstEvents#getLogLevelEventName()
245 */
246 @Override
247 public String getLogLevelEventName() {
248 return fLogLevelEventName;
249 }
250
251 /*
252 * (non-Javadoc)
253 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableUstEvents#getFilterExpression()
254 */
255 @Override
256 public String getFilterExpression() {
257 return fFilterExpression;
258 }
259
260 // ------------------------------------------------------------------------
261 // Operations
262 // ------------------------------------------------------------------------
263
264 /**
265 * Create the contents of this event composite
266 */
267 public void createContent() {
268
269 // Tracepoints Group
270 createTracepointsGroup();
271
272 // Wildcard Group
273 createWildCardGroup();
274
275 // Log Level Group
276 createLogLevelGroup();
277
278 // Filter Group
279 createFilterGroup();
280
281 // Set default enablements
282 setEnablements(GroupEnum.TRACEPOINTS);
283 }
284
285 /**
286 * Validates the UST composite input data.
287 * @return true if configured data is valid and can be retrieved.
288 */
289 public boolean isValid() {
290
291 fIsTracepoints = fTracepointsActivateButton.getSelection();
292 fIsWildcard = fWildcardActivateButton.getSelection();
293 fIsLogLevel = fLogLevelActivateButton.getSelection();
294
295 // initialize tracepoint fields
296 fIsAllTracepoints = false;
297 fSelectedEvents = new ArrayList<String>();
298 if (fIsTracepoints) {
299 fIsAllTracepoints = fTracepointsViewer.getChecked(fProviderGroup);
300 Set<String> set = new HashSet<String>();
301 Object[] checkedElements = fTracepointsViewer.getCheckedElements();
302 for (int i = 0; i < checkedElements.length; i++) {
303 ITraceControlComponent component = (ITraceControlComponent)checkedElements[i];
304 if (!set.contains(component.getName()) && (component instanceof BaseEventComponent)) {
305 set.add(component.getName());
306 fSelectedEvents.add(component.getName());
307 }
308 }
309 }
310
311 // initialize log level event name string
312 fLogLevelType = LogLevelType.LOGLEVEL_NONE;
313 fLogLevelEventName = null;
314
315 if (fIsLogLevel) {
316 if (fLogLevelButton.getSelection()) {
317 fLogLevelType = LogLevelType.LOGLEVEL;
318 } else if (fLogLevelOnlyButton.getSelection()) {
319 fLogLevelType = LogLevelType.LOGLEVEL_ONLY;
320 }
321
322 String temp = fLogLevelEventNameText.getText();
323 if (!temp.matches("^[\\s]{0,}$") && !temp.matches("^[a-zA-Z0-9\\-\\_]{1,}$")) { //$NON-NLS-1$ //$NON-NLS-2$
324 MessageDialog.openError(getShell(),
325 Messages.TraceControl_EnableEventsDialogTitle,
326 Messages.TraceControl_InvalidLogLevelEventNameError + " (" + temp + ") \n"); //$NON-NLS-1$ //$NON-NLS-2$
327
328 return false;
329 }
330
331 if(!temp.matches("\\s*")) { //$NON-NLS-1$
332 fLogLevelEventName = temp;
333 }
334
335 TraceLogLevel[] levels = TraceLogLevel.values();
336 int id = fLogLevelCombo.getSelectionIndex();
337
338 if (id < 0) {
339 MessageDialog.openError(getShell(),
340 Messages.TraceControl_EnableEventsDialogTitle,
341 Messages.TraceControl_InvalidLogLevel + " (" + temp + ") \n"); //$NON-NLS-1$ //$NON-NLS-2$
342
343 return false;
344 }
345 fLogLevel = levels[id];
346 }
347
348 // initialize wildcard with null
349 fWildcard = null;
350 if (fIsWildcard) {
351 String tempWildcard = fWildcardText.getText();
352 if (!tempWildcard.matches("^[\\s]{0,}$") && !tempWildcard.matches("^[a-zA-Z0-9\\-\\_\\*]{1,}$")) { //$NON-NLS-1$ //$NON-NLS-2$
353 MessageDialog.openError(getShell(),
354 Messages.TraceControl_EnableEventsDialogTitle,
355 Messages.TraceControl_InvalidWildcardError + " (" + tempWildcard + ") \n"); //$NON-NLS-1$ //$NON-NLS-2$
356
357 return false;
358 }
359
360 if(!tempWildcard.matches("\\s*")) { //$NON-NLS-1$
361 fWildcard = tempWildcard;
362 }
363 }
364
365 // initialize filter with null
366 fFilterExpression = null;
367 if (fProviderGroup.isEventFilteringSupported()) {
368 String tempFilter = fFilterText.getText();
369
370 if(!tempFilter.matches("\\s*")) { //$NON-NLS-1$
371 fFilterExpression = tempFilter;
372 }
373 }
374
375 // validation successful -> call super.okPressed()
376 return true;
377 }
378
379 // ------------------------------------------------------------------------
380 // Helper methods
381 // ------------------------------------------------------------------------
382
383 /**
384 * Creates tracepoints group.
385 */
386 private void createTracepointsGroup() {
387 Group tpMainGroup = new Group(this, SWT.SHADOW_NONE);
388 tpMainGroup.setText(Messages.TraceControl_EnableEventsTracepointGroupName);
389 GridLayout layout = new GridLayout(2, false);
390 tpMainGroup.setLayout(layout);
391 GridData data = new GridData(GridData.FILL_BOTH);
392 tpMainGroup.setLayoutData(data);
393
394 Composite buttonComposite = new Composite(tpMainGroup, SWT.NONE);
395 layout = new GridLayout(1, true);
396 buttonComposite.setLayout(layout);
397 data = new GridData(SWT.BEGINNING, SWT.CENTER, false, true);
398 buttonComposite.setLayoutData(data);
399
400 fTracepointsActivateButton = new Button(buttonComposite, SWT.RADIO);
401 fTracepointsActivateButton.setText(Messages.TraceControl_EnableGroupSelectionName);
402 data = new GridData(GridData.FILL_HORIZONTAL);
403 fTracepointsActivateButton.setLayoutData(data);
404 fTracepointsActivateButton.addSelectionListener(new SelectionAdapter() {
405 @Override
406 public void widgetSelected(SelectionEvent e) {
407 setEnablements(GroupEnum.TRACEPOINTS);
408 }
409 });
410
411 Group tpGroup = new Group(tpMainGroup, SWT.SHADOW_NONE);
412 layout = new GridLayout(1, true);
413 tpGroup.setLayout(layout);
414 data = new GridData(GridData.FILL_BOTH);
415 tpGroup.setLayoutData(data);
416
417 fTracepointsViewer = new CheckboxTreeViewer(tpGroup, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
418 fTracepointsViewer.getTree().setToolTipText(Messages.TraceControl_EnableEventsTracepointTreeTooltip);
419 fTracepointsViewer.setContentProvider(new UstContentProvider());
420
421 fTracepointsViewer.setLabelProvider(new UstLabelProvider());
422 fTracepointsViewer.addCheckStateListener(new UstCheckStateListener());
423
424 fTracepointsViewer.setInput(fProviderGroup.getParent());
425 fTracepointsViewer.getTree().setLayoutData(new GridData(GridData.FILL_BOTH));
426 }
427
428 /**
429 * Creates wildcard group.
430 */
431 private void createWildCardGroup() {
432 Group wildcardMainGroup = new Group(this, SWT.SHADOW_NONE);
433 wildcardMainGroup.setText(Messages.TraceControl_EnableEventsWildcardGroupName);
434 GridLayout layout = new GridLayout(2, false);
435 wildcardMainGroup.setLayout(layout);
436 GridData data = new GridData(GridData.FILL_HORIZONTAL);
437 wildcardMainGroup.setLayoutData(data);
438
439 Composite buttonComposite = new Composite(wildcardMainGroup, SWT.NONE);
440 layout = new GridLayout(1, false);
441 buttonComposite.setLayout(layout);
442 data = new GridData(SWT.BEGINNING, SWT.CENTER, false, true);
443 buttonComposite.setLayoutData(data);
444
445 fWildcardActivateButton = new Button(buttonComposite, SWT.RADIO);
446 fWildcardActivateButton.setText(Messages.TraceControl_EnableGroupSelectionName);
447 fWildcardActivateButton.setSelection(false);
448 data = new GridData(GridData.FILL_HORIZONTAL);
449 fWildcardActivateButton.setLayoutData(data);
450 fWildcardActivateButton.addSelectionListener(new SelectionAdapter() {
451 @Override
452 public void widgetSelected(SelectionEvent e) {
453 setEnablements(GroupEnum.WILDCARD);
454 }
455 });
456
457 Group wildcardGroup = new Group(wildcardMainGroup, SWT.SHADOW_NONE);
458 layout = new GridLayout(3, true);
459 wildcardGroup.setLayout(layout);
460 data = new GridData(GridData.FILL_HORIZONTAL);
461 wildcardGroup.setLayoutData(data);
462
463 Label wildcardLabel = new Label(wildcardGroup, SWT.LEFT);
464 wildcardLabel.setText(Messages.TraceControl_EnableEventsWildcardLabel);
465 data = new GridData(GridData.FILL_HORIZONTAL);
466 data.horizontalSpan = 1;
467 wildcardLabel.setLayoutData(data);
468
469 fWildcardText = new Text(wildcardGroup, SWT.LEFT);
470 fWildcardText.setToolTipText(Messages.TraceControl_EnableEventsWildcardTooltip);
471 data = new GridData(GridData.FILL_HORIZONTAL);
472 data.horizontalSpan = 2;
473 fWildcardText.setLayoutData(data);
474 }
475
476 /**
477 * Creates log level group.
478 */
479 private void createLogLevelGroup() {
480 Group logLevelMainGroup = new Group(this, SWT.SHADOW_NONE);
481 logLevelMainGroup.setText(Messages.TraceControl_EnableEventsLogLevelGroupName);
482 GridLayout layout = new GridLayout(2, false);
483 logLevelMainGroup.setLayout(layout);
484 GridData data = new GridData(GridData.FILL_HORIZONTAL);
485 logLevelMainGroup.setLayoutData(data);
486
487 Composite buttonComposite = new Composite(logLevelMainGroup, SWT.NONE);
488 layout = new GridLayout(1, false);
489 buttonComposite.setLayout(layout);
490 data = new GridData(SWT.BEGINNING, SWT.CENTER, false, true);
491 buttonComposite.setLayoutData(data);
492
493 fLogLevelActivateButton = new Button(buttonComposite, SWT.RADIO);
494 fLogLevelActivateButton.setText(Messages.TraceControl_EnableGroupSelectionName);
495 fLogLevelActivateButton.setSelection(false);
496 data = new GridData(GridData.FILL_HORIZONTAL);
497 fLogLevelActivateButton.setLayoutData(data);
498 fLogLevelActivateButton.addSelectionListener(new SelectionAdapter() {
499 @Override
500 public void widgetSelected(SelectionEvent e) {
501 setEnablements(GroupEnum.LOGLEVEL);
502 }
503 });
504
505 Group logLevelGroup = new Group(logLevelMainGroup, SWT.SHADOW_NONE);
506 layout = new GridLayout(3, true);
507 logLevelGroup.setLayout(layout);
508 logLevelGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
509
510 Label logLevelEventNameLabel = new Label(logLevelGroup, SWT.LEFT);
511 logLevelEventNameLabel.setText(Messages.TraceControl_EnableEventsEventNameLabel);
512
513 data = new GridData(GridData.FILL_BOTH);
514 data.horizontalSpan = 1;
515 logLevelEventNameLabel.setLayoutData(data);
516
517 fLogLevelEventNameText = new Text(logLevelGroup, SWT.LEFT);
518 fLogLevelEventNameText.setToolTipText(Messages.TraceControl_EnableEventsLoglevelEventNameTooltip);
519 data = new GridData(GridData.FILL_BOTH);
520 data.horizontalSpan = 2;
521 fLogLevelEventNameText.setLayoutData(data);
522
523 TraceLogLevel[] levels = TraceLogLevel.values();
524
525 String[] levelNames = new String[levels.length - 1];
526 int k = 0;
527 for (int i = 0; i < levels.length; i++) {
528 if (levels[i] != TraceLogLevel.LEVEL_UNKNOWN) {
529 levelNames[k++] = levels[i].getInName();
530 }
531 }
532
533 fLogLevelCombo = new CCombo(logLevelGroup, SWT.READ_ONLY);
534 fLogLevelCombo.setItems(levelNames);
535 fLogLevelCombo.setToolTipText(Messages.TraceControl_EnableEventsLogLevelTooltip);
536 data = new GridData(GridData.FILL_HORIZONTAL);
537 data.horizontalSpan = 4;
538 fLogLevelCombo.setLayoutData(data);
539
540 fLogLevelButton = new Button(logLevelGroup, SWT.RADIO);
541 fLogLevelButton.setText(Messages.TraceControl_EnableEventsLogLevelTypeName);
542 fLogLevelButton.setToolTipText(Messages.TraceControl_EnableEventsLogLevelTypeTooltip);
543 data = new GridData(GridData.FILL_BOTH);
544 fLogLevelButton.setLayoutData(data);
545
546 fLogLevelOnlyButton = new Button(logLevelGroup, SWT.RADIO);
547 fLogLevelOnlyButton.setText(Messages.TraceControl_EnableEventsLogLevelOnlyTypeName);
548 fLogLevelOnlyButton.setToolTipText(Messages.TraceControl_EnableEventsLogLevelOnlyTypeTooltip);
549 data = new GridData(GridData.FILL_BOTH);
550 fLogLevelButton.setLayoutData(data);
551 }
552
553 void createFilterGroup() {
554 if (fProviderGroup.isEventFilteringSupported()) {
555 Group filterMainGroup = new Group(this, SWT.SHADOW_NONE);
556 filterMainGroup.setText(Messages.TraceControl_EnableEventsFilterGroupName);
557 GridLayout layout = new GridLayout(3, false);
558 filterMainGroup.setLayout(layout);
559 GridData data = new GridData(GridData.FILL_HORIZONTAL);
560 filterMainGroup.setLayoutData(data);
561
562 fFilterText = new Text(filterMainGroup, SWT.LEFT);
563 fFilterText.setToolTipText(Messages.TraceControl_EnableEventsFilterTooltip);
564 data = new GridData(GridData.FILL_HORIZONTAL);
565 fFilterText.setLayoutData(data);
566 }
567 }
568
569 /**
570 * Enable/selects widgets depending on the group specified.
571 * @param group - group to enable.
572 */
573 private void setEnablements(GroupEnum group) {
574
575 // Enable/disable trace point items
576 fTracepointsActivateButton.setSelection(group == GroupEnum.TRACEPOINTS);
577 fTracepointsViewer.getTree().setEnabled(group == GroupEnum.TRACEPOINTS);
578
579 // Enable/disable wildcard items
580 fWildcardActivateButton.setSelection(group == GroupEnum.WILDCARD);
581 fWildcardText.setEnabled(group == GroupEnum.WILDCARD);
582
583 // Enable/disable log level items
584 fLogLevelActivateButton.setSelection(group == GroupEnum.LOGLEVEL);
585 fLogLevelEventNameText.setEnabled(group == GroupEnum.LOGLEVEL);
586 fLogLevelCombo.setEnabled(group == GroupEnum.LOGLEVEL);
587 fLogLevelButton.setEnabled(group == GroupEnum.LOGLEVEL);
588 fLogLevelOnlyButton.setEnabled(group == GroupEnum.LOGLEVEL);
589 }
590
591 // ------------------------------------------------------------------------
592 // Local classes
593 // ------------------------------------------------------------------------
594 /**
595 * Content provider for the tracepoints tree.
596 */
597 final static public class UstContentProvider extends TraceControlContentProvider {
598 @Override
599 public Object[] getChildren(Object parentElement) {
600 if (parentElement instanceof TargetNodeComponent) {
601 List<ITraceControlComponent> children = ((ITraceControlComponent)parentElement).getChildren(TraceProviderGroup.class);
602 return children.toArray(new ITraceControlComponent[children.size()]);
603 }
604 if (parentElement instanceof TraceProviderGroup) {
605 List<ITraceControlComponent> children = ((ITraceControlComponent)parentElement).getChildren(UstProviderComponent.class);
606 return children.toArray(new ITraceControlComponent[children.size()]);
607 }
608 if (parentElement instanceof ITraceControlComponent) {
609 return ((ITraceControlComponent)parentElement).getChildren();
610 }
611 return new Object[0];
612 }
613 }
614
615 /**
616 * Content label for the tracepoints tree.
617 */
618 final static public class UstLabelProvider extends TraceControlLabelProvider {
619 @Override
620 public Image getImage(Object element) {
621 return null;
622 }
623 @Override
624 public String getText(Object element) {
625 if ((element != null) && (element instanceof TraceProviderGroup)) {
626 return Messages.TraceControl_EnableEventsTracepointTreeAllLabel;
627 }
628
629 if ((element != null) && (element instanceof UstProviderComponent)) {
630 return Messages.TraceControl_EnableEventsTracepointTreeAllLabel + " - " + ((UstProviderComponent)element).getName(); //$NON-NLS-1$
631 }
632 return super.getText(element);
633 }
634 }
635
636 /**
637 * Check state listener for the tracepoints tree.
638 */
639 final public class UstCheckStateListener implements ICheckStateListener {
640 @Override
641 public void checkStateChanged(CheckStateChangedEvent event) {
642 if (event.getChecked()) {
643 if (event.getElement() instanceof TraceProviderGroup) {
644 fTracepointsViewer.setSubtreeChecked(event.getElement(), true);
645 }
646 if (event.getElement() instanceof UstProviderComponent) {
647 fTracepointsViewer.setSubtreeChecked(event.getElement(), true);
648 }
649 } else {
650 if (event.getElement() instanceof TraceProviderGroup) {
651 fTracepointsViewer.setSubtreeChecked(event.getElement(), true);
652 }
653 if (event.getElement() instanceof UstProviderComponent) {
654 ITraceControlComponent component = (ITraceControlComponent) event.getElement();
655 fTracepointsViewer.setSubtreeChecked(event.getElement(), false);
656 fTracepointsViewer.setChecked(component.getParent(), false);
657 } else {
658 ITraceControlComponent component = (ITraceControlComponent) event.getElement();
659 fTracepointsViewer.setChecked(component.getParent(), false);
660 fTracepointsViewer.setChecked(component.getParent().getParent(), false);
661 }
662 }
663 }
664 }
665 }
This page took 0.05132 seconds and 6 git commands to generate.