1 /**********************************************************************
2 * Copyright (c) 2012, 2015 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 * Bernd Hufmann - Updated for support of LTTng Tools 2.1
12 * Marc-Andre Laperle - Add filtering textbox
13 **********************************************************************/
14 package org
.eclipse
.tracecompass
.internal
.lttng2
.control
.ui
.views
.dialogs
;
16 import java
.util
.ArrayList
;
17 import java
.util
.HashSet
;
18 import java
.util
.List
;
21 import org
.eclipse
.jface
.dialogs
.MessageDialog
;
22 import org
.eclipse
.jface
.viewers
.CheckStateChangedEvent
;
23 import org
.eclipse
.jface
.viewers
.CheckboxTreeViewer
;
24 import org
.eclipse
.jface
.viewers
.ICheckStateListener
;
25 import org
.eclipse
.jface
.viewers
.TreeViewer
;
26 import org
.eclipse
.swt
.SWT
;
27 import org
.eclipse
.swt
.custom
.CCombo
;
28 import org
.eclipse
.swt
.events
.SelectionAdapter
;
29 import org
.eclipse
.swt
.events
.SelectionEvent
;
30 import org
.eclipse
.swt
.graphics
.Image
;
31 import org
.eclipse
.swt
.layout
.GridData
;
32 import org
.eclipse
.swt
.layout
.GridLayout
;
33 import org
.eclipse
.swt
.widgets
.Button
;
34 import org
.eclipse
.swt
.widgets
.Composite
;
35 import org
.eclipse
.swt
.widgets
.Group
;
36 import org
.eclipse
.swt
.widgets
.Label
;
37 import org
.eclipse
.swt
.widgets
.Text
;
38 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.core
.model
.LogLevelType
;
39 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.core
.model
.TraceLogLevel
;
40 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.ui
.views
.messages
.Messages
;
41 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.ui
.views
.model
.ITraceControlComponent
;
42 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.ui
.views
.model
.impl
.BaseEventComponent
;
43 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.ui
.views
.model
.impl
.TargetNodeComponent
;
44 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.ui
.views
.model
.impl
.TraceControlContentProvider
;
45 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.ui
.views
.model
.impl
.TraceControlLabelProvider
;
46 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.ui
.views
.model
.impl
.TraceProviderGroup
;
47 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.ui
.views
.model
.impl
.UstProviderComponent
;
48 import org
.eclipse
.ui
.dialogs
.FilteredTree
;
49 import org
.eclipse
.ui
.dialogs
.PatternFilter
;
53 * A composite for collecting information about UST events to be enabled.
56 * @author Bernd Hufmann
58 public class EnableUstEventsComposite
extends Composite
implements IEnableUstEvents
{
60 // ------------------------------------------------------------------------
62 // ------------------------------------------------------------------------
64 private enum GroupEnum
{ TRACEPOINTS
, WILDCARD
, LOGLEVEL
}
66 // ------------------------------------------------------------------------
68 // ------------------------------------------------------------------------
71 * A button to enable/disable the tracepoints group
73 private Button fTracepointsActivateButton
;
75 * A tree viewer for diplaying and selection of available tracepoints.
77 private CheckboxTreeViewer fTracepointsViewer
;
79 * A button to enable/disable the wildcard group
81 private Button fWildcardActivateButton
;
83 * A Text field for the event's wildcard.
85 private Text fWildcardText
;
87 * A button to enable/disable the log level group
89 private Button fLogLevelActivateButton
;
91 * A Text field for the event name for the log level enablement.
93 private Text fLogLevelEventNameText
;
95 * A Combo box for selecting the log level.
97 private CCombo fLogLevelCombo
;
99 * A button for selecting the log level (range 0 to level).
101 private Button fLogLevelButton
;
103 * A button for selecting the specified log level only.
105 private Button fLogLevelOnlyButton
;
109 private Text fFilterText
;
112 * The referenced trace provider group containing the UST providers
113 * component which contains a list of available tracepoints.
115 private final TraceProviderGroup fProviderGroup
;
117 * The flag indicating that tracepoints are selected.
119 private boolean fIsTracepoints
;
121 * The flag indicating that all tracepoints (across providers) are selected.
123 private boolean fIsAllTracepoints
;
125 * The list of tracepoints to be enabled.
127 private List
<String
> fSelectedEvents
;
129 * The flag indicating that all wildcard are selected..
131 private boolean fIsWildcard
;
133 * The wildcard if wildcard is selected.
135 private String fWildcard
;
137 *The flag indicating that all log level are selected.
139 private boolean fIsLogLevel
;
141 * The event name for the log level enablement.
143 private String fLogLevelEventName
;
145 * The type of the log level (loglevel or loglevel-only)
147 private LogLevelType fLogLevelType
;
149 * The actual selected log level.
151 private TraceLogLevel fLogLevel
;
153 * The filter expression
155 private String fFilterExpression
;
157 // ------------------------------------------------------------------------
159 // ------------------------------------------------------------------------
162 * @param parent - a parent composite
163 * @param style - a composite style
164 * @param providerGroup - the trace provider group
166 public EnableUstEventsComposite(Composite parent
, int style
, TraceProviderGroup providerGroup
) {
167 super(parent
, style
);
168 fProviderGroup
= providerGroup
;
171 // ------------------------------------------------------------------------
173 // ------------------------------------------------------------------------
176 public boolean isTracepoints() {
177 return fIsTracepoints
;
181 public boolean isAllTracePoints() {
182 return fIsAllTracepoints
;
186 public List
<String
> getEventNames() {
187 return new ArrayList
<>(fSelectedEvents
);
191 public boolean isWildcard() {
196 public String
getWildcard() {
201 public boolean isLogLevel() {
206 public LogLevelType
getLogLevelType() {
207 return fLogLevelType
;
211 public TraceLogLevel
getLogLevel() {
216 public String
getLogLevelEventName() {
217 return fLogLevelEventName
;
221 public String
getFilterExpression() {
222 return fFilterExpression
;
225 // ------------------------------------------------------------------------
227 // ------------------------------------------------------------------------
230 * Create the contents of this event composite
232 public void createContent() {
235 createTracepointsGroup();
238 createWildCardGroup();
241 createLogLevelGroup();
246 // Set default enablements
247 setEnablements(GroupEnum
.TRACEPOINTS
);
251 * Validates the UST composite input data.
253 * @return true if configured data is valid and can be retrieved.
255 public boolean isValid() {
257 fIsTracepoints
= fTracepointsActivateButton
.getSelection();
258 fIsWildcard
= fWildcardActivateButton
.getSelection();
259 fIsLogLevel
= fLogLevelActivateButton
.getSelection();
261 // initialize tracepoint fields
262 fIsAllTracepoints
= false;
263 fSelectedEvents
= new ArrayList
<>();
264 if (fIsTracepoints
) {
265 Set
<String
> set
= new HashSet
<>();
266 Object
[] checkedElements
= fTracepointsViewer
.getCheckedElements();
267 int totalNbEvents
= 0;
268 for (int i
= 0; i
< checkedElements
.length
; i
++) {
269 ITraceControlComponent component
= (ITraceControlComponent
) checkedElements
[i
];
270 if (component
instanceof BaseEventComponent
) {
272 if (!set
.contains(component
.getName())) {
273 set
.add(component
.getName());
274 fSelectedEvents
.add(component
.getName());
280 // verify if all events are selected
282 List
<ITraceControlComponent
> comps
= fProviderGroup
.getChildren(UstProviderComponent
.class);
283 for (ITraceControlComponent comp
: comps
) {
284 nbUstEvents
+= comp
.getChildren().length
;
286 fIsAllTracepoints
= (nbUstEvents
== totalNbEvents
);
289 // initialize log level event name string
290 fLogLevelType
= LogLevelType
.LOGLEVEL_NONE
;
291 fLogLevelEventName
= null;
294 if (fLogLevelButton
.getSelection()) {
295 fLogLevelType
= LogLevelType
.LOGLEVEL
;
296 } else if (fLogLevelOnlyButton
.getSelection()) {
297 fLogLevelType
= LogLevelType
.LOGLEVEL_ONLY
;
300 String temp
= fLogLevelEventNameText
.getText();
301 if (temp
.isEmpty() ||
302 temp
.matches("\\s*") || //$NON-NLS-1$
303 (!temp
.matches("^[\\s]{0,}$") && !temp
.matches("^[a-zA-Z0-9\\-\\_]{1,}$"))) { //$NON-NLS-1$ //$NON-NLS-2$
304 MessageDialog
.openError(getShell(),
305 Messages
.TraceControl_EnableEventsDialogTitle
,
306 Messages
.TraceControl_InvalidLogLevelEventNameError
+ " (" + temp
+ ") \n"); //$NON-NLS-1$ //$NON-NLS-2$
311 fLogLevelEventName
= temp
;
313 TraceLogLevel
[] levels
= TraceLogLevel
.values();
314 int id
= fLogLevelCombo
.getSelectionIndex();
317 MessageDialog
.openError(getShell(),
318 Messages
.TraceControl_EnableEventsDialogTitle
,
319 Messages
.TraceControl_InvalidLogLevel
+ " (" + temp
+ ") \n"); //$NON-NLS-1$ //$NON-NLS-2$
323 fLogLevel
= levels
[id
];
326 // initialize wildcard with null
329 String tempWildcard
= fWildcardText
.getText();
330 if (tempWildcard
.isEmpty() ||
331 tempWildcard
.matches("\\s*") || //$NON-NLS-1$
332 (!tempWildcard
.matches("^[\\s]{0,}$") && !tempWildcard
.matches("^[a-zA-Z0-9\\-\\_\\*\\\\\\']{1,}$"))) { //$NON-NLS-1$ //$NON-NLS-2$
333 MessageDialog
.openError(getShell(),
334 Messages
.TraceControl_EnableEventsDialogTitle
,
335 Messages
.TraceControl_InvalidWildcardError
+ " (" + tempWildcard
+ ") \n"); //$NON-NLS-1$ //$NON-NLS-2$
340 fWildcard
= tempWildcard
;
343 // initialize filter with null
344 fFilterExpression
= null;
345 if (fProviderGroup
.isEventFilteringSupported()) {
346 String tempFilter
= fFilterText
.getText();
348 if(!tempFilter
.isEmpty() && !tempFilter
.matches("\\s*")) { //$NON-NLS-1$
349 fFilterExpression
= tempFilter
;
353 // validation successful -> call super.okPressed()
357 // ------------------------------------------------------------------------
359 // ------------------------------------------------------------------------
362 * Creates tracepoints group.
364 private void createTracepointsGroup() {
365 Group tpMainGroup
= new Group(this, SWT
.SHADOW_NONE
);
366 tpMainGroup
.setText(Messages
.TraceControl_EnableEventsTracepointGroupName
);
367 GridLayout layout
= new GridLayout(2, false);
368 tpMainGroup
.setLayout(layout
);
369 GridData data
= new GridData(GridData
.FILL_BOTH
);
370 tpMainGroup
.setLayoutData(data
);
372 Composite buttonComposite
= new Composite(tpMainGroup
, SWT
.NONE
);
373 layout
= new GridLayout(1, true);
374 buttonComposite
.setLayout(layout
);
375 data
= new GridData(SWT
.BEGINNING
, SWT
.CENTER
, false, true);
376 buttonComposite
.setLayoutData(data
);
378 fTracepointsActivateButton
= new Button(buttonComposite
, SWT
.RADIO
);
379 fTracepointsActivateButton
.setText(Messages
.TraceControl_EnableGroupSelectionName
);
380 data
= new GridData(GridData
.FILL_HORIZONTAL
);
381 fTracepointsActivateButton
.setLayoutData(data
);
382 fTracepointsActivateButton
.addSelectionListener(new SelectionAdapter() {
384 public void widgetSelected(SelectionEvent e
) {
385 setEnablements(GroupEnum
.TRACEPOINTS
);
389 Group tpGroup
= new Group(tpMainGroup
, SWT
.SHADOW_NONE
);
390 layout
= new GridLayout(1, true);
391 tpGroup
.setLayout(layout
);
392 data
= new GridData(GridData
.FILL_BOTH
);
393 tpGroup
.setLayoutData(data
);
394 new FilteredTree(tpGroup
, SWT
.MULTI
| SWT
.H_SCROLL
| SWT
.V_SCROLL
| SWT
.BORDER
, new PatternFilter(), true) {
396 protected TreeViewer
doCreateTreeViewer(Composite aparent
, int style
) {
397 fTracepointsViewer
= new CheckboxTreeViewer(aparent
, SWT
.MULTI
| SWT
.H_SCROLL
| SWT
.V_SCROLL
);
398 fTracepointsViewer
.getTree().setToolTipText(Messages
.TraceControl_EnableEventsTracepointTreeTooltip
);
399 fTracepointsViewer
.setContentProvider(new UstContentProvider());
401 fTracepointsViewer
.setLabelProvider(new UstLabelProvider());
402 fTracepointsViewer
.addCheckStateListener(new UstCheckStateListener());
404 fTracepointsViewer
.setInput(fProviderGroup
.getParent());
405 fTracepointsViewer
.getTree().setLayoutData(new GridData(GridData
.FILL_BOTH
));
406 return fTracepointsViewer
;
412 * Creates wildcard group.
414 private void createWildCardGroup() {
415 Group wildcardMainGroup
= new Group(this, SWT
.SHADOW_NONE
);
416 wildcardMainGroup
.setText(Messages
.TraceControl_EnableEventsWildcardGroupName
);
417 GridLayout layout
= new GridLayout(2, false);
418 wildcardMainGroup
.setLayout(layout
);
419 GridData data
= new GridData(GridData
.FILL_HORIZONTAL
);
420 wildcardMainGroup
.setLayoutData(data
);
422 Composite buttonComposite
= new Composite(wildcardMainGroup
, SWT
.NONE
);
423 layout
= new GridLayout(1, false);
424 buttonComposite
.setLayout(layout
);
425 data
= new GridData(SWT
.BEGINNING
, SWT
.CENTER
, false, true);
426 buttonComposite
.setLayoutData(data
);
428 fWildcardActivateButton
= new Button(buttonComposite
, SWT
.RADIO
);
429 fWildcardActivateButton
.setText(Messages
.TraceControl_EnableGroupSelectionName
);
430 fWildcardActivateButton
.setSelection(false);
431 data
= new GridData(GridData
.FILL_HORIZONTAL
);
432 fWildcardActivateButton
.setLayoutData(data
);
433 fWildcardActivateButton
.addSelectionListener(new SelectionAdapter() {
435 public void widgetSelected(SelectionEvent e
) {
436 setEnablements(GroupEnum
.WILDCARD
);
440 Group wildcardGroup
= new Group(wildcardMainGroup
, SWT
.SHADOW_NONE
);
441 layout
= new GridLayout(3, true);
442 wildcardGroup
.setLayout(layout
);
443 data
= new GridData(GridData
.FILL_HORIZONTAL
);
444 wildcardGroup
.setLayoutData(data
);
446 Label wildcardLabel
= new Label(wildcardGroup
, SWT
.LEFT
);
447 wildcardLabel
.setText(Messages
.TraceControl_EnableEventsWildcardLabel
);
448 data
= new GridData(GridData
.FILL_HORIZONTAL
);
449 data
.horizontalSpan
= 1;
450 wildcardLabel
.setLayoutData(data
);
452 fWildcardText
= new Text(wildcardGroup
, SWT
.LEFT
);
453 fWildcardText
.setToolTipText(Messages
.TraceControl_EnableEventsWildcardTooltip
);
454 data
= new GridData(GridData
.FILL_HORIZONTAL
);
455 data
.horizontalSpan
= 2;
456 fWildcardText
.setLayoutData(data
);
460 * Creates log level group.
462 private void createLogLevelGroup() {
463 Group logLevelMainGroup
= new Group(this, SWT
.SHADOW_NONE
);
464 logLevelMainGroup
.setText(Messages
.TraceControl_EnableEventsLogLevelGroupName
);
465 GridLayout layout
= new GridLayout(2, false);
466 logLevelMainGroup
.setLayout(layout
);
467 GridData data
= new GridData(GridData
.FILL_HORIZONTAL
);
468 logLevelMainGroup
.setLayoutData(data
);
470 Composite buttonComposite
= new Composite(logLevelMainGroup
, SWT
.NONE
);
471 layout
= new GridLayout(1, false);
472 buttonComposite
.setLayout(layout
);
473 data
= new GridData(SWT
.BEGINNING
, SWT
.CENTER
, false, true);
474 buttonComposite
.setLayoutData(data
);
476 fLogLevelActivateButton
= new Button(buttonComposite
, SWT
.RADIO
);
477 fLogLevelActivateButton
.setText(Messages
.TraceControl_EnableGroupSelectionName
);
478 fLogLevelActivateButton
.setSelection(false);
479 data
= new GridData(GridData
.FILL_HORIZONTAL
);
480 fLogLevelActivateButton
.setLayoutData(data
);
481 fLogLevelActivateButton
.addSelectionListener(new SelectionAdapter() {
483 public void widgetSelected(SelectionEvent e
) {
484 setEnablements(GroupEnum
.LOGLEVEL
);
488 Group logLevelGroup
= new Group(logLevelMainGroup
, SWT
.SHADOW_NONE
);
489 layout
= new GridLayout(3, true);
490 logLevelGroup
.setLayout(layout
);
491 logLevelGroup
.setLayoutData(new GridData(GridData
.FILL_HORIZONTAL
));
493 Label logLevelEventNameLabel
= new Label(logLevelGroup
, SWT
.LEFT
);
494 logLevelEventNameLabel
.setText(Messages
.TraceControl_EnableEventsEventNameLabel
);
496 data
= new GridData(GridData
.FILL_BOTH
);
497 data
.horizontalSpan
= 1;
498 logLevelEventNameLabel
.setLayoutData(data
);
500 fLogLevelEventNameText
= new Text(logLevelGroup
, SWT
.LEFT
);
501 fLogLevelEventNameText
.setToolTipText(Messages
.TraceControl_EnableEventsLoglevelEventNameTooltip
);
502 data
= new GridData(GridData
.FILL_BOTH
);
503 data
.horizontalSpan
= 2;
504 fLogLevelEventNameText
.setLayoutData(data
);
506 TraceLogLevel
[] levels
= TraceLogLevel
.values();
508 String
[] levelNames
= new String
[levels
.length
- 1];
510 for (int i
= 0; i
< levels
.length
; i
++) {
511 if (levels
[i
] != TraceLogLevel
.LEVEL_UNKNOWN
) {
512 levelNames
[k
++] = levels
[i
].getInName();
516 fLogLevelCombo
= new CCombo(logLevelGroup
, SWT
.READ_ONLY
);
517 fLogLevelCombo
.setItems(levelNames
);
518 fLogLevelCombo
.setToolTipText(Messages
.TraceControl_EnableEventsLogLevelTooltip
);
519 data
= new GridData(GridData
.FILL_HORIZONTAL
);
520 data
.horizontalSpan
= 4;
521 fLogLevelCombo
.setLayoutData(data
);
523 fLogLevelButton
= new Button(logLevelGroup
, SWT
.RADIO
);
524 fLogLevelButton
.setText(Messages
.TraceControl_EnableEventsLogLevelTypeName
);
525 fLogLevelButton
.setToolTipText(Messages
.TraceControl_EnableEventsLogLevelTypeTooltip
);
526 data
= new GridData(GridData
.FILL_BOTH
);
527 fLogLevelButton
.setLayoutData(data
);
528 fLogLevelButton
.setSelection(true);
530 fLogLevelOnlyButton
= new Button(logLevelGroup
, SWT
.RADIO
);
531 fLogLevelOnlyButton
.setText(Messages
.TraceControl_EnableEventsLogLevelOnlyTypeName
);
532 fLogLevelOnlyButton
.setToolTipText(Messages
.TraceControl_EnableEventsLogLevelOnlyTypeTooltip
);
533 data
= new GridData(GridData
.FILL_BOTH
);
534 fLogLevelButton
.setLayoutData(data
);
537 void createFilterGroup() {
538 if (fProviderGroup
.isEventFilteringSupported()) {
539 Group filterMainGroup
= new Group(this, SWT
.SHADOW_NONE
);
540 filterMainGroup
.setText(Messages
.TraceControl_EnableEventsFilterGroupName
);
541 GridLayout layout
= new GridLayout(3, false);
542 filterMainGroup
.setLayout(layout
);
543 GridData data
= new GridData(GridData
.FILL_HORIZONTAL
);
544 filterMainGroup
.setLayoutData(data
);
546 fFilterText
= new Text(filterMainGroup
, SWT
.LEFT
);
547 fFilterText
.setToolTipText(Messages
.TraceControl_EnableEventsFilterTooltip
);
548 data
= new GridData(GridData
.FILL_HORIZONTAL
);
549 fFilterText
.setLayoutData(data
);
554 * Enable/selects widgets depending on the group specified.
555 * @param group - group to enable.
557 private void setEnablements(GroupEnum group
) {
559 // Enable/disable trace point items
560 fTracepointsActivateButton
.setSelection(group
== GroupEnum
.TRACEPOINTS
);
561 fTracepointsViewer
.getTree().setEnabled(group
== GroupEnum
.TRACEPOINTS
);
563 // Enable/disable wildcard items
564 fWildcardActivateButton
.setSelection(group
== GroupEnum
.WILDCARD
);
565 fWildcardText
.setEnabled(group
== GroupEnum
.WILDCARD
);
567 // Enable/disable log level items
568 fLogLevelActivateButton
.setSelection(group
== GroupEnum
.LOGLEVEL
);
569 fLogLevelEventNameText
.setEnabled(group
== GroupEnum
.LOGLEVEL
);
570 fLogLevelCombo
.setEnabled(group
== GroupEnum
.LOGLEVEL
);
571 fLogLevelButton
.setEnabled(group
== GroupEnum
.LOGLEVEL
);
572 fLogLevelOnlyButton
.setEnabled(group
== GroupEnum
.LOGLEVEL
);
575 // ------------------------------------------------------------------------
577 // ------------------------------------------------------------------------
579 * Content provider for the tracepoints tree.
581 public static final class UstContentProvider
extends TraceControlContentProvider
{
583 public Object
[] getChildren(Object parentElement
) {
584 if (parentElement
instanceof TargetNodeComponent
) {
585 List
<ITraceControlComponent
> children
= ((ITraceControlComponent
)parentElement
).getChildren(TraceProviderGroup
.class);
586 return children
.toArray(new ITraceControlComponent
[children
.size()]);
588 if (parentElement
instanceof TraceProviderGroup
) {
589 List
<ITraceControlComponent
> children
= ((ITraceControlComponent
)parentElement
).getChildren(UstProviderComponent
.class);
590 return children
.toArray(new ITraceControlComponent
[children
.size()]);
592 if (parentElement
instanceof ITraceControlComponent
) {
593 return ((ITraceControlComponent
)parentElement
).getChildren();
595 return new Object
[0];
600 * Content label for the tracepoints tree.
602 public static final class UstLabelProvider
extends TraceControlLabelProvider
{
604 public Image
getImage(Object element
) {
608 public String
getText(Object element
) {
609 if ((element
!= null) && (element
instanceof TraceProviderGroup
)) {
610 return Messages
.TraceControl_EnableEventsTracepointTreeAllLabel
;
613 if ((element
!= null) && (element
instanceof UstProviderComponent
)) {
614 return Messages
.TraceControl_EnableEventsTracepointTreeAllLabel
+ " - " + ((UstProviderComponent
)element
).getName(); //$NON-NLS-1$
616 return super.getText(element
);
621 * Check state listener for the tracepoints tree.
623 public final class UstCheckStateListener
implements ICheckStateListener
{
625 public void checkStateChanged(CheckStateChangedEvent event
) {
626 if (event
.getChecked()) {
627 if (event
.getElement() instanceof TraceProviderGroup
) {
628 fTracepointsViewer
.setSubtreeChecked(event
.getElement(), true);
630 if (event
.getElement() instanceof UstProviderComponent
) {
631 fTracepointsViewer
.setSubtreeChecked(event
.getElement(), true);
634 if (event
.getElement() instanceof TraceProviderGroup
) {
635 fTracepointsViewer
.setSubtreeChecked(event
.getElement(), true);
637 if (event
.getElement() instanceof UstProviderComponent
) {
638 ITraceControlComponent component
= (ITraceControlComponent
) event
.getElement();
639 fTracepointsViewer
.setSubtreeChecked(event
.getElement(), false);
640 fTracepointsViewer
.setChecked(component
.getParent(), false);
642 ITraceControlComponent component
= (ITraceControlComponent
) event
.getElement();
643 fTracepointsViewer
.setChecked(component
.getParent(), false);
644 fTracepointsViewer
.setChecked(component
.getParent().getParent(), false);