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