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
.dialogs
;
14 import java
.util
.ArrayList
;
15 import java
.util
.HashSet
;
16 import java
.util
.List
;
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
;
48 * A composite for collecting information about UST events to be enabled.
51 * @author Bernd Hufmann
53 public class EnableUstEventsComposite
extends Composite
implements IEnableUstEvents
{
55 // ------------------------------------------------------------------------
57 // ------------------------------------------------------------------------
59 private enum GroupEnum
{ TRACEPOINTS
, WILDCARD
, LOGLEVEL
}
61 // ------------------------------------------------------------------------
63 // ------------------------------------------------------------------------
66 * A button to enable/disable the tracepoints group
68 private Button fTracepointsActivateButton
;
70 * A tree viewer for diplaying and selection of available tracepoints.
72 private CheckboxTreeViewer fTracepointsViewer
;
74 * A button to enable/disable the wildcard group
76 private Button fWildcardActivateButton
;
78 * A Text field for the event's wildcard.
80 private Text fWildcardText
;
82 * A button to enable/disable the log level group
84 private Button fLogLevelActivateButton
;
86 * A Text field for the event name for the log level enablement.
88 private Text fLogLevelEventNameText
;
90 * A Combo box for selecting the log level.
92 private CCombo fLogLevelCombo
;
94 * A button for selecting the log level (range 0 to level).
96 private Button fLogLevelButton
;
98 * A button for selecting the specified log level only.
100 private Button fLogLevelOnlyButton
;
104 private Text fFilterText
;
107 * The referenced trace provider group containing the UST providers
108 * component which contains a list of available tracepoints.
110 private final TraceProviderGroup fProviderGroup
;
112 * The flag indicating that tracepoints are selected.
114 private boolean fIsTracepoints
;
116 * The flag indicating that all tracepoints (across providers) are selected.
118 private boolean fIsAllTracepoints
;
120 * The list of tracepoints to be enabled.
122 private List
<String
> fSelectedEvents
;
124 * The flag indicating that all wildcard are selected..
126 private boolean fIsWildcard
;
128 * The wildcard if wildcard is selected.
130 private String fWildcard
;
132 *The flag indicating that all log level are selected.
134 private boolean fIsLogLevel
;
136 * The event name for the log level enablement.
138 private String fLogLevelEventName
;
140 * The type of the log level (loglevel or loglevel-only)
142 private LogLevelType fLogLevelType
;
144 * The actual selected log level.
146 private TraceLogLevel fLogLevel
;
148 * The filter expression
150 private String fFilterExpression
;
152 // ------------------------------------------------------------------------
154 // ------------------------------------------------------------------------
157 * @param parent - a parent composite
158 * @param style - a composite style
159 * @param providerGroup - the trace provider group
161 public EnableUstEventsComposite(Composite parent
, int style
, TraceProviderGroup providerGroup
) {
162 super(parent
, style
);
163 fProviderGroup
= providerGroup
;
166 // ------------------------------------------------------------------------
168 // ------------------------------------------------------------------------
172 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableUstEvents#isTracepoints()
175 public boolean isTracepoints() {
176 return fIsTracepoints
;
181 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableUstEvents#isAllTracePoints()
184 public boolean isAllTracePoints() {
185 return fIsAllTracepoints
;
190 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableUstEvents#getEventNames()
193 public List
<String
> getEventNames() {
194 return new ArrayList
<String
>(fSelectedEvents
);
199 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableUstEvents#isWildcard()
202 public boolean isWildcard() {
208 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableUstEvents#getWildcard()
211 public String
getWildcard() {
217 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableUstEvents#isLogLevel()
220 public boolean isLogLevel() {
226 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableUstEvents#getLogLevelType()
229 public LogLevelType
getLogLevelType() {
230 return fLogLevelType
;
235 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableUstEvents#getLogLevel()
238 public TraceLogLevel
getLogLevel() {
244 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableUstEvents#getLogLevelEventName()
247 public String
getLogLevelEventName() {
248 return fLogLevelEventName
;
253 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableUstEvents#getFilterExpression()
256 public String
getFilterExpression() {
257 return fFilterExpression
;
260 // ------------------------------------------------------------------------
262 // ------------------------------------------------------------------------
265 * Create the contents of this event composite
267 public void createContent() {
270 createTracepointsGroup();
273 createWildCardGroup();
276 createLogLevelGroup();
281 // Set default enablements
282 setEnablements(GroupEnum
.TRACEPOINTS
);
286 * Validates the UST composite input data.
287 * @return true if configured data is valid and can be retrieved.
289 public boolean isValid() {
291 fIsTracepoints
= fTracepointsActivateButton
.getSelection();
292 fIsWildcard
= fWildcardActivateButton
.getSelection();
293 fIsLogLevel
= fLogLevelActivateButton
.getSelection();
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());
311 // initialize log level event name string
312 fLogLevelType
= LogLevelType
.LOGLEVEL_NONE
;
313 fLogLevelEventName
= null;
316 if (fLogLevelButton
.getSelection()) {
317 fLogLevelType
= LogLevelType
.LOGLEVEL
;
318 } else if (fLogLevelOnlyButton
.getSelection()) {
319 fLogLevelType
= LogLevelType
.LOGLEVEL_ONLY
;
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$
331 if(!temp
.matches("\\s*")) { //$NON-NLS-1$
332 fLogLevelEventName
= temp
;
335 TraceLogLevel
[] levels
= TraceLogLevel
.values();
336 int id
= fLogLevelCombo
.getSelectionIndex();
339 MessageDialog
.openError(getShell(),
340 Messages
.TraceControl_EnableEventsDialogTitle
,
341 Messages
.TraceControl_InvalidLogLevel
+ " (" + temp
+ ") \n"); //$NON-NLS-1$ //$NON-NLS-2$
345 fLogLevel
= levels
[id
];
348 // initialize wildcard with null
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$
360 if(!tempWildcard
.matches("\\s*")) { //$NON-NLS-1$
361 fWildcard
= tempWildcard
;
365 // initialize filter with null
366 fFilterExpression
= null;
367 if (fProviderGroup
.isEventFilteringSupported()) {
368 String tempFilter
= fFilterText
.getText();
370 if(!tempFilter
.matches("\\s*")) { //$NON-NLS-1$
371 fFilterExpression
= tempFilter
;
375 // validation successful -> call super.okPressed()
379 // ------------------------------------------------------------------------
381 // ------------------------------------------------------------------------
384 * Creates tracepoints group.
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
);
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
);
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() {
406 public void widgetSelected(SelectionEvent e
) {
407 setEnablements(GroupEnum
.TRACEPOINTS
);
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
);
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());
421 fTracepointsViewer
.setLabelProvider(new UstLabelProvider());
422 fTracepointsViewer
.addCheckStateListener(new UstCheckStateListener());
424 fTracepointsViewer
.setInput(fProviderGroup
.getParent());
425 fTracepointsViewer
.getTree().setLayoutData(new GridData(GridData
.FILL_BOTH
));
429 * Creates wildcard group.
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
);
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
);
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() {
452 public void widgetSelected(SelectionEvent e
) {
453 setEnablements(GroupEnum
.WILDCARD
);
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
);
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
);
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
);
477 * Creates log level group.
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
);
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
);
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() {
500 public void widgetSelected(SelectionEvent e
) {
501 setEnablements(GroupEnum
.LOGLEVEL
);
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
));
510 Label logLevelEventNameLabel
= new Label(logLevelGroup
, SWT
.LEFT
);
511 logLevelEventNameLabel
.setText(Messages
.TraceControl_EnableEventsEventNameLabel
);
513 data
= new GridData(GridData
.FILL_BOTH
);
514 data
.horizontalSpan
= 1;
515 logLevelEventNameLabel
.setLayoutData(data
);
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
);
523 TraceLogLevel
[] levels
= TraceLogLevel
.values();
525 String
[] levelNames
= new String
[levels
.length
- 1];
527 for (int i
= 0; i
< levels
.length
; i
++) {
528 if (levels
[i
] != TraceLogLevel
.LEVEL_UNKNOWN
) {
529 levelNames
[k
++] = levels
[i
].getInName();
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
);
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
);
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
);
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
);
562 fFilterText
= new Text(filterMainGroup
, SWT
.LEFT
);
563 fFilterText
.setToolTipText(Messages
.TraceControl_EnableEventsFilterTooltip
);
564 data
= new GridData(GridData
.FILL_HORIZONTAL
);
565 fFilterText
.setLayoutData(data
);
570 * Enable/selects widgets depending on the group specified.
571 * @param group - group to enable.
573 private void setEnablements(GroupEnum group
) {
575 // Enable/disable trace point items
576 fTracepointsActivateButton
.setSelection(group
== GroupEnum
.TRACEPOINTS
);
577 fTracepointsViewer
.getTree().setEnabled(group
== GroupEnum
.TRACEPOINTS
);
579 // Enable/disable wildcard items
580 fWildcardActivateButton
.setSelection(group
== GroupEnum
.WILDCARD
);
581 fWildcardText
.setEnabled(group
== GroupEnum
.WILDCARD
);
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
);
591 // ------------------------------------------------------------------------
593 // ------------------------------------------------------------------------
595 * Content provider for the tracepoints tree.
597 final static public class UstContentProvider
extends TraceControlContentProvider
{
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()]);
604 if (parentElement
instanceof TraceProviderGroup
) {
605 List
<ITraceControlComponent
> children
= ((ITraceControlComponent
)parentElement
).getChildren(UstProviderComponent
.class);
606 return children
.toArray(new ITraceControlComponent
[children
.size()]);
608 if (parentElement
instanceof ITraceControlComponent
) {
609 return ((ITraceControlComponent
)parentElement
).getChildren();
611 return new Object
[0];
616 * Content label for the tracepoints tree.
618 final static public class UstLabelProvider
extends TraceControlLabelProvider
{
620 public Image
getImage(Object element
) {
624 public String
getText(Object element
) {
625 if ((element
!= null) && (element
instanceof TraceProviderGroup
)) {
626 return Messages
.TraceControl_EnableEventsTracepointTreeAllLabel
;
629 if ((element
!= null) && (element
instanceof UstProviderComponent
)) {
630 return Messages
.TraceControl_EnableEventsTracepointTreeAllLabel
+ " - " + ((UstProviderComponent
)element
).getName(); //$NON-NLS-1$
632 return super.getText(element
);
637 * Check state listener for the tracepoints tree.
639 final public class UstCheckStateListener
implements ICheckStateListener
{
641 public void checkStateChanged(CheckStateChangedEvent event
) {
642 if (event
.getChecked()) {
643 if (event
.getElement() instanceof TraceProviderGroup
) {
644 fTracepointsViewer
.setSubtreeChecked(event
.getElement(), true);
646 if (event
.getElement() instanceof UstProviderComponent
) {
647 fTracepointsViewer
.setSubtreeChecked(event
.getElement(), true);
650 if (event
.getElement() instanceof TraceProviderGroup
) {
651 fTracepointsViewer
.setSubtreeChecked(event
.getElement(), true);
653 if (event
.getElement() instanceof UstProviderComponent
) {
654 ITraceControlComponent component
= (ITraceControlComponent
) event
.getElement();
655 fTracepointsViewer
.setSubtreeChecked(event
.getElement(), false);
656 fTracepointsViewer
.setChecked(component
.getParent(), false);
658 ITraceControlComponent component
= (ITraceControlComponent
) event
.getElement();
659 fTracepointsViewer
.setChecked(component
.getParent(), false);
660 fTracepointsViewer
.setChecked(component
.getParent().getParent(), false);