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
.Arrays
;
18 import java
.util
.HashSet
;
19 import java
.util
.List
;
22 import org
.eclipse
.jface
.dialogs
.MessageDialog
;
23 import org
.eclipse
.jface
.viewers
.CheckStateChangedEvent
;
24 import org
.eclipse
.jface
.viewers
.CheckboxTreeViewer
;
25 import org
.eclipse
.jface
.viewers
.ICheckStateListener
;
26 import org
.eclipse
.jface
.viewers
.TreeViewer
;
27 import org
.eclipse
.swt
.SWT
;
28 import org
.eclipse
.swt
.custom
.CCombo
;
29 import org
.eclipse
.swt
.events
.SelectionAdapter
;
30 import org
.eclipse
.swt
.events
.SelectionEvent
;
31 import org
.eclipse
.swt
.graphics
.Image
;
32 import org
.eclipse
.swt
.layout
.GridData
;
33 import org
.eclipse
.swt
.layout
.GridLayout
;
34 import org
.eclipse
.swt
.widgets
.Button
;
35 import org
.eclipse
.swt
.widgets
.Composite
;
36 import org
.eclipse
.swt
.widgets
.Group
;
37 import org
.eclipse
.swt
.widgets
.Label
;
38 import org
.eclipse
.swt
.widgets
.Text
;
39 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.core
.model
.TraceDomainType
;
40 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.core
.model
.LogLevelType
;
41 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.core
.model
.TraceLogLevel
;
42 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.ui
.views
.messages
.Messages
;
43 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.ui
.views
.model
.ITraceControlComponent
;
44 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.ui
.views
.model
.impl
.BaseEventComponent
;
45 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.ui
.views
.model
.impl
.TargetNodeComponent
;
46 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.ui
.views
.model
.impl
.TraceControlContentProvider
;
47 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.ui
.views
.model
.impl
.TraceControlLabelProvider
;
48 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.ui
.views
.model
.impl
.TraceProviderGroup
;
49 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.ui
.views
.model
.impl
.UstProviderComponent
;
50 import org
.eclipse
.ui
.dialogs
.FilteredTree
;
51 import org
.eclipse
.ui
.dialogs
.PatternFilter
;
55 * A composite for collecting information about UST events to be enabled.
58 * @author Bernd Hufmann
60 public class EnableUstEventsComposite
extends Composite
implements IEnableUstEvents
{
62 // ------------------------------------------------------------------------
64 // ------------------------------------------------------------------------
66 private enum GroupEnum
{ TRACEPOINTS
, WILDCARD
, LOGLEVEL
}
68 // ------------------------------------------------------------------------
70 // ------------------------------------------------------------------------
73 * A button to enable/disable the tracepoints group
75 private Button fTracepointsActivateButton
;
77 * A tree viewer for diplaying and selection of available tracepoints.
79 private CheckboxTreeViewer fTracepointsViewer
;
81 * A button to enable/disable the wildcard group
83 private Button fWildcardActivateButton
;
85 * A Text field for the event's wildcard.
87 private Text fWildcardText
;
89 * A button to enable/disable the log level group
91 private Button fLogLevelActivateButton
;
93 * A Text field for the event name for the log level enablement.
95 private Text fLogLevelEventNameText
;
97 * A Combo box for selecting the log level.
99 private CCombo fLogLevelCombo
;
101 * A button for selecting the log level (range 0 to level).
103 private Button fLogLevelButton
;
105 * A button for selecting the specified log level only.
107 private Button fLogLevelOnlyButton
;
111 private Text fFilterText
;
114 * The referenced trace provider group containing the UST providers
115 * component which contains a list of available tracepoints.
117 private final TraceProviderGroup fProviderGroup
;
119 * The flag indicating that tracepoints are selected.
121 private boolean fIsTracepoints
;
123 * The flag indicating that all tracepoints (across providers) are selected.
125 private boolean fIsAllTracepoints
;
127 * The list of tracepoints to be enabled.
129 private List
<String
> fSelectedEvents
;
131 * The flag indicating that all wildcard are selected..
133 private boolean fIsWildcard
;
135 * The wildcard if wildcard is selected.
137 private String fWildcard
;
139 * The flag indicating that all log level are selected.
141 private boolean fIsLogLevel
;
143 * The type of the log level (loglevel or loglevel-only)
145 private LogLevelType fLogLevelType
;
147 * The actual selected log level.
149 private TraceLogLevel fLogLevel
;
151 * The filter expression
153 private String fFilterExpression
;
155 * A button to enable/disable the exclusion of event(s).
157 private Button fExcludedEventsButton
;
159 * A Text field for the excluded event(s).
161 private Text fExcludedEventsText
;
163 * A list of event(s) to be excluded.
165 private List
<String
> fExcludedEvents
;
167 * The flag indicating that excluded event(s) are selected.
169 private boolean fIsExcludedEvents
;
171 // ------------------------------------------------------------------------
173 // ------------------------------------------------------------------------
176 * @param parent - a parent composite
177 * @param style - a composite style
178 * @param providerGroup - the trace provider group
180 public EnableUstEventsComposite(Composite parent
, int style
, TraceProviderGroup providerGroup
) {
181 super(parent
, style
);
182 fProviderGroup
= providerGroup
;
185 // ------------------------------------------------------------------------
187 // ------------------------------------------------------------------------
190 public boolean isTracepoints() {
191 return fIsTracepoints
;
195 public boolean isAllTracePoints() {
196 return fIsAllTracepoints
;
200 public List
<String
> getEventNames() {
201 return new ArrayList
<>(fSelectedEvents
);
205 public boolean isWildcard() {
210 public String
getWildcard() {
215 public boolean isLogLevel() {
220 public LogLevelType
getLogLevelType() {
221 return fLogLevelType
;
225 public TraceLogLevel
getLogLevel() {
230 public String
getFilterExpression() {
231 return fFilterExpression
;
235 public List
<String
> getExcludedEvents(){
236 return fExcludedEvents
;
239 // ------------------------------------------------------------------------
241 // ------------------------------------------------------------------------
244 * Create the contents of this event composite
246 public void createContent() {
249 createTracepointsGroup();
252 createWildCardGroup();
255 createExcludeGroup();
258 createLogLevelGroup();
263 // Set default enablements
264 setEnablements(GroupEnum
.TRACEPOINTS
);
268 * Validates the UST composite input data.
270 * @return true if configured data is valid and can be retrieved.
272 public boolean isValid() {
274 fIsTracepoints
= fTracepointsActivateButton
.getSelection();
275 fIsWildcard
= fWildcardActivateButton
.getSelection();
276 fIsLogLevel
= fLogLevelActivateButton
.getSelection();
277 fIsExcludedEvents
= fExcludedEventsButton
.getSelection();
279 // initialize tracepoint fields
280 fIsAllTracepoints
= false;
281 fSelectedEvents
= new ArrayList
<>();
282 if (fIsTracepoints
) {
283 Set
<String
> set
= new HashSet
<>();
284 Object
[] checkedElements
= fTracepointsViewer
.getCheckedElements();
285 int totalNbEvents
= 0;
286 for (int i
= 0; i
< checkedElements
.length
; i
++) {
287 ITraceControlComponent component
= (ITraceControlComponent
) checkedElements
[i
];
288 if (component
instanceof BaseEventComponent
) {
290 if (!set
.contains(component
.getName())) {
291 set
.add(component
.getName());
292 fSelectedEvents
.add(component
.getName());
298 // verify if all events are selected
300 List
<ITraceControlComponent
> comps
= fProviderGroup
.getChildren(UstProviderComponent
.class);
301 for (ITraceControlComponent comp
: comps
) {
302 List
<ITraceControlComponent
> children
= comp
.getChildren(BaseEventComponent
.class);
303 nbUstEvents
= children
.size();
305 fIsAllTracepoints
= (nbUstEvents
== totalNbEvents
);
308 // Get the list of event(s) to exclude
309 fExcludedEvents
= null;
310 if (fIsExcludedEvents
) {
311 String tmpExcludedEvent
= fExcludedEventsText
.getText();
312 if (tmpExcludedEvent
.trim().isEmpty()) {
313 MessageDialog
.openError(getShell(),
314 Messages
.TraceControl_EnableEventsDialogTitle
,
315 Messages
.TraceControl_InvalidExcludedEventsError
);
319 // Format the text to a List<String>
320 // Removing all non visible characters
321 tmpExcludedEvent
= tmpExcludedEvent
.replaceAll("\\s", ""); //$NON-NLS-1$ //$NON-NLS-2$
322 // Splitting the different events that are separated by commas
323 fExcludedEvents
= Arrays
.asList(tmpExcludedEvent
.split(",")); //$NON-NLS-1$
327 // initialize log level event name string
328 // We are using the fSelectedEvents for the loglevels
329 fLogLevelType
= LogLevelType
.LOGLEVEL_NONE
;
332 if (fLogLevelButton
.getSelection()) {
333 fLogLevelType
= LogLevelType
.LOGLEVEL
;
334 } else if (fLogLevelOnlyButton
.getSelection()) {
335 fLogLevelType
= LogLevelType
.LOGLEVEL_ONLY
;
338 String temp
= fLogLevelEventNameText
.getText();
339 // TODO : Add support for comma separated list of events
340 if (temp
.trim().isEmpty() ||
341 (!temp
.matches("^[\\s]{0,}$") && !temp
.matches("^[a-zA-Z0-9\\-\\_]{1,}$"))) { //$NON-NLS-1$ //$NON-NLS-2$
342 MessageDialog
.openError(getShell(),
343 Messages
.TraceControl_EnableEventsDialogTitle
,
344 Messages
.TraceControl_InvalidLogLevelEventNameError
+ " (" + temp
+ ") \n"); //$NON-NLS-1$ //$NON-NLS-2$
349 // Format the String into a List<String>
350 fSelectedEvents
= Arrays
.asList(temp
.trim().split(",")); //$NON-NLS-1$
352 TraceLogLevel
[] levels
= TraceLogLevel
.values();
353 int id
= fLogLevelCombo
.getSelectionIndex();
356 MessageDialog
.openError(getShell(),
357 Messages
.TraceControl_EnableEventsDialogTitle
,
358 Messages
.TraceControl_InvalidLogLevel
+ " (" + temp
+ ") \n"); //$NON-NLS-1$ //$NON-NLS-2$
362 fLogLevel
= levels
[id
];
365 // initialize wildcard with null
368 String tempWildcard
= fWildcardText
.getText();
369 if (tempWildcard
.trim().isEmpty() ||
370 (!tempWildcard
.matches("^[\\s]{0,}$") && !tempWildcard
.matches("^[a-zA-Z0-9\\-\\_\\*\\\\\\']{1,}$"))) { //$NON-NLS-1$ //$NON-NLS-2$
371 MessageDialog
.openError(getShell(),
372 Messages
.TraceControl_EnableEventsDialogTitle
,
373 Messages
.TraceControl_InvalidWildcardError
+ " (" + tempWildcard
+ ") \n"); //$NON-NLS-1$ //$NON-NLS-2$
378 fWildcard
= tempWildcard
;
381 // initialize filter with null
382 fFilterExpression
= null;
383 if (fProviderGroup
.isEventFilteringSupported(TraceDomainType
.UST
)) {
384 String tempFilter
= fFilterText
.getText();
386 if(!tempFilter
.trim().isEmpty()) {
387 fFilterExpression
= tempFilter
;
391 // validation successful -> call super.okPressed()
395 // ------------------------------------------------------------------------
397 // ------------------------------------------------------------------------
400 * Creates tracepoints group.
402 private void createTracepointsGroup() {
403 Group tpMainGroup
= new Group(this, SWT
.SHADOW_NONE
);
404 tpMainGroup
.setText(Messages
.TraceControl_EnableEventsTracepointGroupName
);
405 GridLayout layout
= new GridLayout(2, false);
406 tpMainGroup
.setLayout(layout
);
407 GridData data
= new GridData(GridData
.FILL_BOTH
);
408 tpMainGroup
.setLayoutData(data
);
410 Composite buttonComposite
= new Composite(tpMainGroup
, SWT
.NONE
);
411 layout
= new GridLayout(1, true);
412 buttonComposite
.setLayout(layout
);
413 data
= new GridData(SWT
.BEGINNING
, SWT
.CENTER
, false, true);
414 buttonComposite
.setLayoutData(data
);
416 fTracepointsActivateButton
= new Button(buttonComposite
, SWT
.RADIO
);
417 fTracepointsActivateButton
.setText(Messages
.TraceControl_EnableGroupSelectionName
);
418 data
= new GridData(GridData
.FILL_HORIZONTAL
);
419 fTracepointsActivateButton
.setLayoutData(data
);
420 fTracepointsActivateButton
.addSelectionListener(new SelectionAdapter() {
422 public void widgetSelected(SelectionEvent e
) {
423 setEnablements(GroupEnum
.TRACEPOINTS
);
427 Group tpGroup
= new Group(tpMainGroup
, SWT
.SHADOW_NONE
);
428 layout
= new GridLayout(1, true);
429 tpGroup
.setLayout(layout
);
430 data
= new GridData(GridData
.FILL_BOTH
);
431 tpGroup
.setLayoutData(data
);
432 new FilteredTree(tpGroup
, SWT
.MULTI
| SWT
.H_SCROLL
| SWT
.V_SCROLL
| SWT
.BORDER
, new PatternFilter(), true) {
434 protected TreeViewer
doCreateTreeViewer(Composite aparent
, int style
) {
435 fTracepointsViewer
= new CheckboxTreeViewer(aparent
, SWT
.MULTI
| SWT
.H_SCROLL
| SWT
.V_SCROLL
);
436 fTracepointsViewer
.getTree().setToolTipText(Messages
.TraceControl_EnableEventsTracepointTreeTooltip
);
437 fTracepointsViewer
.setContentProvider(new UstContentProvider());
439 fTracepointsViewer
.setLabelProvider(new UstLabelProvider());
440 fTracepointsViewer
.addCheckStateListener(new UstCheckStateListener());
442 fTracepointsViewer
.setInput(fProviderGroup
.getParent());
443 fTracepointsViewer
.getTree().setLayoutData(new GridData(GridData
.FILL_BOTH
));
444 return fTracepointsViewer
;
450 * Creates wildcard group.
452 private void createWildCardGroup() {
453 Group wildcardMainGroup
= new Group(this, SWT
.SHADOW_NONE
);
454 wildcardMainGroup
.setText(Messages
.TraceControl_EnableEventsWildcardGroupName
);
455 GridLayout layout
= new GridLayout(2, false);
456 wildcardMainGroup
.setLayout(layout
);
457 GridData data
= new GridData(GridData
.FILL_HORIZONTAL
);
458 wildcardMainGroup
.setLayoutData(data
);
460 Composite buttonComposite
= new Composite(wildcardMainGroup
, SWT
.NONE
);
461 layout
= new GridLayout(1, false);
462 buttonComposite
.setLayout(layout
);
463 data
= new GridData(SWT
.BEGINNING
, SWT
.CENTER
, false, true);
464 buttonComposite
.setLayoutData(data
);
466 fWildcardActivateButton
= new Button(buttonComposite
, SWT
.RADIO
);
467 fWildcardActivateButton
.setText(Messages
.TraceControl_EnableGroupSelectionName
);
468 fWildcardActivateButton
.setSelection(false);
469 data
= new GridData(GridData
.FILL_HORIZONTAL
);
470 fWildcardActivateButton
.setLayoutData(data
);
471 fWildcardActivateButton
.addSelectionListener(new SelectionAdapter() {
473 public void widgetSelected(SelectionEvent e
) {
474 setEnablements(GroupEnum
.WILDCARD
);
478 Group wildcardGroup
= new Group(wildcardMainGroup
, SWT
.SHADOW_NONE
);
479 layout
= new GridLayout(3, true);
480 wildcardGroup
.setLayout(layout
);
481 data
= new GridData(GridData
.FILL_HORIZONTAL
);
482 wildcardGroup
.setLayoutData(data
);
484 Label wildcardLabel
= new Label(wildcardGroup
, SWT
.LEFT
);
485 wildcardLabel
.setText(Messages
.TraceControl_EnableEventsWildcardLabel
);
486 data
= new GridData(GridData
.FILL_HORIZONTAL
);
487 data
.horizontalSpan
= 1;
488 wildcardLabel
.setLayoutData(data
);
490 fWildcardText
= new Text(wildcardGroup
, SWT
.LEFT
);
491 fWildcardText
.setToolTipText(Messages
.TraceControl_EnableEventsWildcardTooltip
);
492 data
= new GridData(GridData
.FILL_HORIZONTAL
);
493 data
.horizontalSpan
= 2;
494 fWildcardText
.setLayoutData(data
);
498 * Creates exclude events group.
500 private void createExcludeGroup() {
501 Group excludedEventMainGroup
= new Group(this, SWT
.SHADOW_NONE
);
502 excludedEventMainGroup
.setText(Messages
.TraceControl_EnableEventsExcludedEventGroupName
);
503 GridLayout layout
= new GridLayout(2, false);
504 excludedEventMainGroup
.setLayout(layout
);
505 GridData data
= new GridData(GridData
.FILL_HORIZONTAL
);
506 excludedEventMainGroup
.setLayoutData(data
);
508 Composite buttonComposite
= new Composite(excludedEventMainGroup
, SWT
.NONE
);
509 layout
= new GridLayout(1, false);
510 buttonComposite
.setLayout(layout
);
511 data
= new GridData(SWT
.BEGINNING
, SWT
.CENTER
, false, true);
512 buttonComposite
.setLayoutData(data
);
514 fExcludedEventsButton
= new Button(buttonComposite
, SWT
.CHECK
);
515 fExcludedEventsButton
.setText(Messages
.TraceControl_EnableGroupSelectionName
);
516 fExcludedEventsButton
.setSelection(false);
518 data
= new GridData(GridData
.FILL_HORIZONTAL
);
519 fExcludedEventsButton
.setLayoutData(data
);
521 fExcludedEventsButton
.addSelectionListener(new SelectionAdapter() {
523 public void widgetSelected(SelectionEvent e
) {
524 fExcludedEventsText
.setEnabled(fExcludedEventsButton
.getSelection());
528 Group excludedEventGroup
= new Group(excludedEventMainGroup
, SWT
.SHADOW_NONE
);
529 layout
= new GridLayout(3, true);
530 excludedEventGroup
.setLayout(layout
);
531 data
= new GridData(GridData
.FILL_HORIZONTAL
);
532 excludedEventGroup
.setLayoutData(data
);
534 Label excludedEventLabel
= new Label(excludedEventGroup
, SWT
.LEFT
);
535 excludedEventLabel
.setText(Messages
.TraceControl_EnableEventsExcludedEventLabel
);
537 data
.horizontalSpan
= 1;
538 excludedEventLabel
.setLayoutData(data
);
540 fExcludedEventsText
= new Text(excludedEventGroup
, SWT
.LEFT
);
541 fExcludedEventsText
.setToolTipText(Messages
.TraceControl_EnableEventsExcludedEventTooltip
);
542 data
= new GridData(GridData
.FILL_HORIZONTAL
);
543 data
.horizontalSpan
= 2;
544 fExcludedEventsText
.setLayoutData(data
);
545 fExcludedEventsText
.setEnabled(false);
550 * Creates log level group.
552 private void createLogLevelGroup() {
553 Group logLevelMainGroup
= new Group(this, SWT
.SHADOW_NONE
);
554 logLevelMainGroup
.setText(Messages
.TraceControl_EnableEventsLogLevelGroupName
);
555 GridLayout layout
= new GridLayout(2, false);
556 logLevelMainGroup
.setLayout(layout
);
557 GridData data
= new GridData(GridData
.FILL_HORIZONTAL
);
558 logLevelMainGroup
.setLayoutData(data
);
560 Composite buttonComposite
= new Composite(logLevelMainGroup
, SWT
.NONE
);
561 layout
= new GridLayout(1, false);
562 buttonComposite
.setLayout(layout
);
563 data
= new GridData(SWT
.BEGINNING
, SWT
.CENTER
, false, true);
564 buttonComposite
.setLayoutData(data
);
566 fLogLevelActivateButton
= new Button(buttonComposite
, SWT
.RADIO
);
567 fLogLevelActivateButton
.setText(Messages
.TraceControl_EnableGroupSelectionName
);
568 fLogLevelActivateButton
.setSelection(false);
569 data
= new GridData(GridData
.FILL_HORIZONTAL
);
570 fLogLevelActivateButton
.setLayoutData(data
);
571 fLogLevelActivateButton
.addSelectionListener(new SelectionAdapter() {
573 public void widgetSelected(SelectionEvent e
) {
574 setEnablements(GroupEnum
.LOGLEVEL
);
578 Group logLevelGroup
= new Group(logLevelMainGroup
, SWT
.SHADOW_NONE
);
579 layout
= new GridLayout(3, true);
580 logLevelGroup
.setLayout(layout
);
581 logLevelGroup
.setLayoutData(new GridData(GridData
.FILL_HORIZONTAL
));
583 Label logLevelEventNameLabel
= new Label(logLevelGroup
, SWT
.LEFT
);
584 logLevelEventNameLabel
.setText(Messages
.TraceControl_EnableEventsEventNameLabel
);
586 data
= new GridData(GridData
.FILL_BOTH
);
587 data
.horizontalSpan
= 1;
588 logLevelEventNameLabel
.setLayoutData(data
);
590 fLogLevelEventNameText
= new Text(logLevelGroup
, SWT
.LEFT
);
591 fLogLevelEventNameText
.setToolTipText(Messages
.TraceControl_EnableEventsLoglevelEventNameTooltip
);
592 data
= new GridData(GridData
.FILL_BOTH
);
593 data
.horizontalSpan
= 2;
594 fLogLevelEventNameText
.setLayoutData(data
);
596 fLogLevelButton
= new Button(logLevelGroup
, SWT
.RADIO
);
597 fLogLevelButton
.setText(Messages
.TraceControl_EnableEventsLogLevelTypeName
);
598 fLogLevelButton
.setToolTipText(Messages
.TraceControl_EnableEventsLogLevelTypeTooltip
);
599 data
= new GridData(GridData
.FILL_BOTH
);
600 fLogLevelButton
.setLayoutData(data
);
601 fLogLevelButton
.setSelection(true);
603 fLogLevelOnlyButton
= new Button(logLevelGroup
, SWT
.RADIO
);
604 fLogLevelOnlyButton
.setText(Messages
.TraceControl_EnableEventsLogLevelOnlyTypeName
);
605 fLogLevelOnlyButton
.setToolTipText(Messages
.TraceControl_EnableEventsLogLevelOnlyTypeTooltip
);
606 data
= new GridData(GridData
.FILL_BOTH
);
607 fLogLevelButton
.setLayoutData(data
);
609 TraceLogLevel
[] levels
= TraceLogLevel
.values();
611 String
[] levelNames
= new String
[levels
.length
- 1];
613 for (int i
= 0; i
< levels
.length
; i
++) {
614 if (levels
[i
] != TraceLogLevel
.LEVEL_UNKNOWN
) {
615 levelNames
[k
++] = levels
[i
].getInName();
619 fLogLevelCombo
= new CCombo(logLevelGroup
, SWT
.READ_ONLY
);
620 fLogLevelCombo
.setItems(levelNames
);
621 fLogLevelCombo
.setToolTipText(Messages
.TraceControl_EnableEventsLogLevelTooltip
);
622 data
= new GridData(GridData
.FILL_HORIZONTAL
);
623 data
.horizontalSpan
= 4;
624 fLogLevelCombo
.setLayoutData(data
);
627 void createFilterGroup() {
628 if (fProviderGroup
.isEventFilteringSupported(TraceDomainType
.UST
)) {
629 Group filterMainGroup
= new Group(this, SWT
.SHADOW_NONE
);
630 filterMainGroup
.setText(Messages
.TraceControl_EnableEventsFilterGroupName
);
631 GridLayout layout
= new GridLayout(3, false);
632 filterMainGroup
.setLayout(layout
);
633 GridData data
= new GridData(GridData
.FILL_HORIZONTAL
);
634 filterMainGroup
.setLayoutData(data
);
636 fFilterText
= new Text(filterMainGroup
, SWT
.LEFT
);
637 fFilterText
.setToolTipText(Messages
.TraceControl_EnableEventsFilterTooltip
);
638 data
= new GridData(GridData
.FILL_HORIZONTAL
);
639 fFilterText
.setLayoutData(data
);
644 * Enable/selects widgets depending on the group specified.
645 * @param group - group to enable.
647 private void setEnablements(GroupEnum group
) {
649 // Enable/disable trace point items
650 fTracepointsActivateButton
.setSelection(group
== GroupEnum
.TRACEPOINTS
);
651 fTracepointsViewer
.getTree().setEnabled(group
== GroupEnum
.TRACEPOINTS
);
653 // Enable/disable wildcard items
654 fWildcardActivateButton
.setSelection(group
== GroupEnum
.WILDCARD
);
655 fWildcardText
.setEnabled(group
== GroupEnum
.WILDCARD
);
657 // Enable/disable log level items
658 fLogLevelActivateButton
.setSelection(group
== GroupEnum
.LOGLEVEL
);
659 fLogLevelEventNameText
.setEnabled(group
== GroupEnum
.LOGLEVEL
);
660 fLogLevelCombo
.setEnabled(group
== GroupEnum
.LOGLEVEL
);
661 fLogLevelButton
.setEnabled(group
== GroupEnum
.LOGLEVEL
);
662 fLogLevelOnlyButton
.setEnabled(group
== GroupEnum
.LOGLEVEL
);
665 // ------------------------------------------------------------------------
667 // ------------------------------------------------------------------------
669 * Content provider for the tracepoints tree.
671 public static final class UstContentProvider
extends TraceControlContentProvider
{
673 public Object
[] getChildren(Object parentElement
) {
674 if (parentElement
instanceof TargetNodeComponent
) {
675 List
<ITraceControlComponent
> children
= ((ITraceControlComponent
)parentElement
).getChildren(TraceProviderGroup
.class);
676 return children
.toArray(new ITraceControlComponent
[children
.size()]);
678 if (parentElement
instanceof TraceProviderGroup
) {
679 List
<ITraceControlComponent
> children
= ((ITraceControlComponent
)parentElement
).getChildren(UstProviderComponent
.class);
680 return children
.toArray(new ITraceControlComponent
[children
.size()]);
682 if (parentElement
instanceof UstProviderComponent
) {
683 List
<ITraceControlComponent
> events
= ((UstProviderComponent
) parentElement
).getChildren(BaseEventComponent
.class);
684 return events
.toArray(new BaseEventComponent
[events
.size()]);
687 return new Object
[0];
692 * Content label for the tracepoints tree.
694 public static final class UstLabelProvider
extends TraceControlLabelProvider
{
696 public Image
getImage(Object element
) {
700 public String
getText(Object element
) {
701 if ((element
!= null) && (element
instanceof TraceProviderGroup
)) {
702 return Messages
.TraceControl_EnableEventsTreeAllLabel
;
705 if ((element
!= null) && (element
instanceof UstProviderComponent
)) {
706 return Messages
.TraceControl_EnableEventsTreeAllLabel
+ " - " + ((UstProviderComponent
)element
).getName(); //$NON-NLS-1$
708 return super.getText(element
);
713 * Check state listener for the tracepoints tree.
715 public final class UstCheckStateListener
implements ICheckStateListener
{
717 public void checkStateChanged(CheckStateChangedEvent event
) {
718 if (event
.getChecked()) {
719 if (event
.getElement() instanceof TraceProviderGroup
) {
720 fTracepointsViewer
.setSubtreeChecked(event
.getElement(), true);
722 if (event
.getElement() instanceof UstProviderComponent
) {
723 fTracepointsViewer
.setSubtreeChecked(event
.getElement(), true);
726 if (event
.getElement() instanceof TraceProviderGroup
) {
727 fTracepointsViewer
.setSubtreeChecked(event
.getElement(), true);
729 if (event
.getElement() instanceof UstProviderComponent
) {
730 ITraceControlComponent component
= (ITraceControlComponent
) event
.getElement();
731 fTracepointsViewer
.setSubtreeChecked(event
.getElement(), false);
732 fTracepointsViewer
.setChecked(component
.getParent(), false);
734 ITraceControlComponent component
= (ITraceControlComponent
) event
.getElement();
735 fTracepointsViewer
.setChecked(component
.getParent(), false);
736 fTracepointsViewer
.setChecked(component
.getParent().getParent(), false);