c585246223069c86870a5cd2e0a94feba9ec40b7
[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.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$
307
308 return false;
309 }
310
311 fLogLevelEventName = temp;
312
313 TraceLogLevel[] levels = TraceLogLevel.values();
314 int id = fLogLevelCombo.getSelectionIndex();
315
316 if (id < 0) {
317 MessageDialog.openError(getShell(),
318 Messages.TraceControl_EnableEventsDialogTitle,
319 Messages.TraceControl_InvalidLogLevel + " (" + temp + ") \n"); //$NON-NLS-1$ //$NON-NLS-2$
320
321 return false;
322 }
323 fLogLevel = levels[id];
324 }
325
326 // initialize wildcard with null
327 fWildcard = null;
328 if (fIsWildcard) {
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$
336
337 return false;
338 }
339
340 fWildcard = tempWildcard;
341 }
342
343 // initialize filter with null
344 fFilterExpression = null;
345 if (fProviderGroup.isEventFilteringSupported(false)) {
346 String tempFilter = fFilterText.getText();
347
348 if(!tempFilter.isEmpty() && !tempFilter.matches("\\s*")) { //$NON-NLS-1$
349 fFilterExpression = tempFilter;
350 }
351 }
352
353 // validation successful -> call super.okPressed()
354 return true;
355 }
356
357 // ------------------------------------------------------------------------
358 // Helper methods
359 // ------------------------------------------------------------------------
360
361 /**
362 * Creates tracepoints group.
363 */
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);
371
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);
377
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() {
383 @Override
384 public void widgetSelected(SelectionEvent e) {
385 setEnablements(GroupEnum.TRACEPOINTS);
386 }
387 });
388
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) {
395 @Override
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());
400
401 fTracepointsViewer.setLabelProvider(new UstLabelProvider());
402 fTracepointsViewer.addCheckStateListener(new UstCheckStateListener());
403
404 fTracepointsViewer.setInput(fProviderGroup.getParent());
405 fTracepointsViewer.getTree().setLayoutData(new GridData(GridData.FILL_BOTH));
406 return fTracepointsViewer;
407 }
408 };
409 }
410
411 /**
412 * Creates wildcard group.
413 */
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);
421
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);
427
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() {
434 @Override
435 public void widgetSelected(SelectionEvent e) {
436 setEnablements(GroupEnum.WILDCARD);
437 }
438 });
439
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);
445
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);
451
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);
457 }
458
459 /**
460 * Creates log level group.
461 */
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);
469
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);
475
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() {
482 @Override
483 public void widgetSelected(SelectionEvent e) {
484 setEnablements(GroupEnum.LOGLEVEL);
485 }
486 });
487
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));
492
493 Label logLevelEventNameLabel = new Label(logLevelGroup, SWT.LEFT);
494 logLevelEventNameLabel.setText(Messages.TraceControl_EnableEventsEventNameLabel);
495
496 data = new GridData(GridData.FILL_BOTH);
497 data.horizontalSpan = 1;
498 logLevelEventNameLabel.setLayoutData(data);
499
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);
505
506 TraceLogLevel[] levels = TraceLogLevel.values();
507
508 String[] levelNames = new String[levels.length - 1];
509 int k = 0;
510 for (int i = 0; i < levels.length; i++) {
511 if (levels[i] != TraceLogLevel.LEVEL_UNKNOWN) {
512 levelNames[k++] = levels[i].getInName();
513 }
514 }
515
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);
522
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);
529
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);
535 }
536
537 void createFilterGroup() {
538 if (fProviderGroup.isEventFilteringSupported(false)) {
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);
545
546 fFilterText = new Text(filterMainGroup, SWT.LEFT);
547 fFilterText.setToolTipText(Messages.TraceControl_EnableEventsFilterTooltip);
548 data = new GridData(GridData.FILL_HORIZONTAL);
549 fFilterText.setLayoutData(data);
550 }
551 }
552
553 /**
554 * Enable/selects widgets depending on the group specified.
555 * @param group - group to enable.
556 */
557 private void setEnablements(GroupEnum group) {
558
559 // Enable/disable trace point items
560 fTracepointsActivateButton.setSelection(group == GroupEnum.TRACEPOINTS);
561 fTracepointsViewer.getTree().setEnabled(group == GroupEnum.TRACEPOINTS);
562
563 // Enable/disable wildcard items
564 fWildcardActivateButton.setSelection(group == GroupEnum.WILDCARD);
565 fWildcardText.setEnabled(group == GroupEnum.WILDCARD);
566
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);
573 }
574
575 // ------------------------------------------------------------------------
576 // Local classes
577 // ------------------------------------------------------------------------
578 /**
579 * Content provider for the tracepoints tree.
580 */
581 public static final class UstContentProvider extends TraceControlContentProvider {
582 @Override
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()]);
587 }
588 if (parentElement instanceof TraceProviderGroup) {
589 List<ITraceControlComponent> children = ((ITraceControlComponent)parentElement).getChildren(UstProviderComponent.class);
590 return children.toArray(new ITraceControlComponent[children.size()]);
591 }
592 if (parentElement instanceof ITraceControlComponent) {
593 return ((ITraceControlComponent)parentElement).getChildren();
594 }
595 return new Object[0];
596 }
597 }
598
599 /**
600 * Content label for the tracepoints tree.
601 */
602 public static final class UstLabelProvider extends TraceControlLabelProvider {
603 @Override
604 public Image getImage(Object element) {
605 return null;
606 }
607 @Override
608 public String getText(Object element) {
609 if ((element != null) && (element instanceof TraceProviderGroup)) {
610 return Messages.TraceControl_EnableEventsTracepointTreeAllLabel;
611 }
612
613 if ((element != null) && (element instanceof UstProviderComponent)) {
614 return Messages.TraceControl_EnableEventsTracepointTreeAllLabel + " - " + ((UstProviderComponent)element).getName(); //$NON-NLS-1$
615 }
616 return super.getText(element);
617 }
618 }
619
620 /**
621 * Check state listener for the tracepoints tree.
622 */
623 public final class UstCheckStateListener implements ICheckStateListener {
624 @Override
625 public void checkStateChanged(CheckStateChangedEvent event) {
626 if (event.getChecked()) {
627 if (event.getElement() instanceof TraceProviderGroup) {
628 fTracepointsViewer.setSubtreeChecked(event.getElement(), true);
629 }
630 if (event.getElement() instanceof UstProviderComponent) {
631 fTracepointsViewer.setSubtreeChecked(event.getElement(), true);
632 }
633 } else {
634 if (event.getElement() instanceof TraceProviderGroup) {
635 fTracepointsViewer.setSubtreeChecked(event.getElement(), true);
636 }
637 if (event.getElement() instanceof UstProviderComponent) {
638 ITraceControlComponent component = (ITraceControlComponent) event.getElement();
639 fTracepointsViewer.setSubtreeChecked(event.getElement(), false);
640 fTracepointsViewer.setChecked(component.getParent(), false);
641 } else {
642 ITraceControlComponent component = (ITraceControlComponent) event.getElement();
643 fTracepointsViewer.setChecked(component.getParent(), false);
644 fTracepointsViewer.setChecked(component.getParent().getParent(), false);
645 }
646 }
647 }
648 }
649 }
This page took 0.045296 seconds and 4 git commands to generate.