Add support for filter feature of LTTng Tools 2.1
[deliverable/tracecompass.git] / org.eclipse.linuxtools.lttng2.ui / src / org / eclipse / linuxtools / internal / lttng2 / ui / views / control / dialogs / EnableUstEventsComposite.java
CommitLineData
ccc66d01
BH
1/**********************************************************************
2 * Copyright (c) 2012 Ericsson
cfdb727a 3 *
ccc66d01
BH
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
cfdb727a
AM
8 *
9 * Contributors:
ccc66d01
BH
10 * Bernd Hufmann - Initial API and implementation
11 **********************************************************************/
115b4a01 12package org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs;
ccc66d01
BH
13
14import java.util.ArrayList;
15import java.util.HashSet;
16import java.util.List;
17import java.util.Set;
18
19import org.eclipse.jface.dialogs.MessageDialog;
20import org.eclipse.jface.viewers.CheckStateChangedEvent;
21import org.eclipse.jface.viewers.CheckboxTreeViewer;
22import org.eclipse.jface.viewers.ICheckStateListener;
9315aeee
BH
23import org.eclipse.linuxtools.internal.lttng2.core.control.model.LogLevelType;
24import org.eclipse.linuxtools.internal.lttng2.core.control.model.TraceLogLevel;
25import org.eclipse.linuxtools.internal.lttng2.ui.views.control.messages.Messages;
115b4a01 26import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.ITraceControlComponent;
115b4a01
BH
27import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.BaseEventComponent;
28import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TargetNodeComponent;
9315aeee
BH
29import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceControlContentProvider;
30import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceControlLabelProvider;
115b4a01
BH
31import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceProviderGroup;
32import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.UstProviderComponent;
ccc66d01
BH
33import org.eclipse.swt.SWT;
34import org.eclipse.swt.custom.CCombo;
35import org.eclipse.swt.events.SelectionAdapter;
36import org.eclipse.swt.events.SelectionEvent;
37import org.eclipse.swt.graphics.Image;
38import org.eclipse.swt.layout.GridData;
39import org.eclipse.swt.layout.GridLayout;
40import org.eclipse.swt.widgets.Button;
41import org.eclipse.swt.widgets.Composite;
42import org.eclipse.swt.widgets.Group;
43import org.eclipse.swt.widgets.Label;
44import org.eclipse.swt.widgets.Text;
45
46/**
ccc66d01
BH
47 * <p>
48 * A composite for collecting information about UST events to be enabled.
49 * </p>
cfdb727a 50 *
dbd4432d 51 * @author Bernd Hufmann
ccc66d01
BH
52 */
53public class EnableUstEventsComposite extends Composite implements IEnableUstEvents {
54
55 // ------------------------------------------------------------------------
56 // Constants
57 // ------------------------------------------------------------------------
cfdb727a
AM
58
59 private enum GroupEnum { TRACEPOINTS, WILDCARD, LOGLEVEL }
60
ccc66d01
BH
61 // ------------------------------------------------------------------------
62 // Attributes
63 // ------------------------------------------------------------------------
cfdb727a 64
ccc66d01
BH
65 /**
66 * A button to enable/disable the tracepoints group
67 */
68 private Button fTracepointsActivateButton;
69 /**
70 * A tree viewer for diplaying and selection of available tracepoints.
71 */
72 private CheckboxTreeViewer fTracepointsViewer;
73 /**
74 * A button to enable/disable the wildcard group
75 */
76 private Button fWildcardActivateButton;
77 /**
78 * A Text field for the event's wildcard.
79 */
80 private Text fWildcardText;
81 /**
82 * A button to enable/disable the log level group
83 */
84 private Button fLogLevelActivateButton;
85 /**
86 * A Text field for the event name for the log level enablement.
87 */
88 private Text fLogLevelEventNameText;
89 /**
90 * A Combo box for selecting the log level.
91 */
92 private CCombo fLogLevelCombo;
93 /**
94 * A button for selecting the log level (range 0 to level).
95 */
96 private Button fLogLevelButton;
97 /**
98 * A button for selecting the specified log level only.
99 */
100 private Button fLogLevelOnlyButton;
d4514365
BH
101 /**
102 * The filter text
103 */
104 private Text fFilterText;
105
ccc66d01 106 /**
cfdb727a 107 * The referenced trace provider group containing the UST providers
ccc66d01
BH
108 * component which contains a list of available tracepoints.
109 */
cfdb727a 110 private final TraceProviderGroup fProviderGroup;
ccc66d01
BH
111 /**
112 * The flag indicating that tracepoints are selected.
113 */
114 private boolean fIsTracepoints;
115 /**
116 * The flag indicating that all tracepoints (across providers) are selected.
117 */
118 private boolean fIsAllTracepoints;
119 /**
120 * The list of tracepoints to be enabled.
121 */
122 private List<String> fSelectedEvents;
123 /**
cfdb727a 124 * The flag indicating that all wildcard are selected..
ccc66d01
BH
125 */
126 private boolean fIsWildcard;
127 /**
cfdb727a 128 * The wildcard if wildcard is selected.
ccc66d01
BH
129 */
130 private String fWildcard;
131 /**
cfdb727a 132 *The flag indicating that all log level are selected.
ccc66d01
BH
133 */
134 private boolean fIsLogLevel;
135 /**
136 * The event name for the log level enablement.
137 */
138 private String fLogLevelEventName;
139 /**
140 * The type of the log level (loglevel or loglevel-only)
141 */
142 private LogLevelType fLogLevelType;
143 /**
144 * The actual selected log level.
145 */
146 private TraceLogLevel fLogLevel;
d4514365
BH
147 /**
148 * The filter expression
149 */
150 private String fFilterExpression;
ccc66d01
BH
151
152 // ------------------------------------------------------------------------
153 // Constructors
154 // ------------------------------------------------------------------------
155 /**
156 * Constructor
157 * @param parent - a parent composite
cfdb727a 158 * @param style - a composite style
ccc66d01
BH
159 * @param providerGroup - the trace provider group
160 */
161 public EnableUstEventsComposite(Composite parent, int style, TraceProviderGroup providerGroup) {
162 super(parent, style);
163 fProviderGroup = providerGroup;
164 }
165
166 // ------------------------------------------------------------------------
167 // Accessors
168 // ------------------------------------------------------------------------
169
170 /*
171 * (non-Javadoc)
115b4a01 172 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableUstEvents#isTracepoints()
ccc66d01
BH
173 */
174 @Override
175 public boolean isTracepoints() {
176 return fIsTracepoints;
177 }
cfdb727a 178
ccc66d01
BH
179 /*
180 * (non-Javadoc)
115b4a01 181 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableUstEvents#isAllTracePoints()
ccc66d01
BH
182 */
183 @Override
184 public boolean isAllTracePoints() {
185 return fIsAllTracepoints;
186 }
cfdb727a 187
ccc66d01
BH
188 /*
189 * (non-Javadoc)
115b4a01 190 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableUstEvents#getEventNames()
ccc66d01
BH
191 */
192 @Override
193 public List<String> getEventNames() {
194 return new ArrayList<String>(fSelectedEvents);
195 }
196
197 /*
198 * (non-Javadoc)
115b4a01 199 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableUstEvents#isWildcard()
ccc66d01
BH
200 */
201 @Override
202 public boolean isWildcard() {
203 return fIsWildcard;
204 }
205
206 /*
207 * (non-Javadoc)
115b4a01 208 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableUstEvents#getWildcard()
ccc66d01
BH
209 */
210 @Override
211 public String getWildcard() {
7a6e4bfd 212 return fWildcard;
ccc66d01
BH
213 }
214
215 /*
216 * (non-Javadoc)
115b4a01 217 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableUstEvents#isLogLevel()
ccc66d01
BH
218 */
219 @Override
220 public boolean isLogLevel() {
221 return fIsLogLevel;
222 }
223
224 /*
225 * (non-Javadoc)
115b4a01 226 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableUstEvents#getLogLevelType()
ccc66d01
BH
227 */
228 @Override
229 public LogLevelType getLogLevelType() {
230 return fLogLevelType;
231 }
232
233 /*
234 * (non-Javadoc)
115b4a01 235 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableUstEvents#getLogLevel()
ccc66d01
BH
236 */
237 @Override
238 public TraceLogLevel getLogLevel() {
239 return fLogLevel;
240 }
241
242 /*
243 * (non-Javadoc)
115b4a01 244 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableUstEvents#getLogLevelEventName()
ccc66d01
BH
245 */
246 @Override
247 public String getLogLevelEventName() {
248 return fLogLevelEventName;
249 }
cfdb727a 250
d4514365
BH
251 /*
252 * (non-Javadoc)
253 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableUstEvents#getFilterExpression()
254 */
255 @Override
256 public String getFilterExpression() {
257 return fFilterExpression;
258 }
259
ccc66d01
BH
260 // ------------------------------------------------------------------------
261 // Operations
262 // ------------------------------------------------------------------------
263
cfdb727a
AM
264 /**
265 * Create the contents of this event composite
266 */
ccc66d01 267 public void createContent() {
cfdb727a
AM
268
269 // Tracepoints Group
ccc66d01
BH
270 createTracepointsGroup();
271
cfdb727a 272 // Wildcard Group
ccc66d01
BH
273 createWildCardGroup();
274
cfdb727a 275 // Log Level Group
ccc66d01 276 createLogLevelGroup();
cfdb727a 277
d4514365
BH
278 // Filter Group
279 createFilterGroup();
280
ccc66d01
BH
281 // Set default enablements
282 setEnablements(GroupEnum.TRACEPOINTS);
283 }
284
285 /**
c56972bb 286 * Validates the UST composite input data.
ccc66d01
BH
287 * @return true if configured data is valid and can be retrieved.
288 */
289 public boolean isValid() {
cfdb727a 290
ccc66d01
BH
291 fIsTracepoints = fTracepointsActivateButton.getSelection();
292 fIsWildcard = fWildcardActivateButton.getSelection();
293 fIsLogLevel = fLogLevelActivateButton.getSelection();
cfdb727a 294
5f1f22f8
BH
295 // initialize tracepoint fields
296 fIsAllTracepoints = false;
ccc66d01 297 fSelectedEvents = new ArrayList<String>();
5f1f22f8
BH
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());
307 }
ccc66d01
BH
308 }
309 }
310
ccc66d01 311 // initialize log level event name string
5f1f22f8 312 fLogLevelType = LogLevelType.LOGLEVEL_NONE;
ccc66d01 313 fLogLevelEventName = null;
ccc66d01 314
5f1f22f8
BH
315 if (fIsLogLevel) {
316 if (fLogLevelButton.getSelection()) {
317 fLogLevelType = LogLevelType.LOGLEVEL;
318 } else if (fLogLevelOnlyButton.getSelection()) {
319 fLogLevelType = LogLevelType.LOGLEVEL_ONLY;
320 }
ccc66d01 321
5f1f22f8
BH
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$
327
328 return false;
329 }
330
331 if(!temp.matches("\\s*")) { //$NON-NLS-1$
332 fLogLevelEventName = temp;
333 }
ccc66d01 334
5f1f22f8
BH
335 TraceLogLevel[] levels = TraceLogLevel.values();
336 int id = fLogLevelCombo.getSelectionIndex();
c56972bb 337
5f1f22f8
BH
338 if (id < 0) {
339 MessageDialog.openError(getShell(),
340 Messages.TraceControl_EnableEventsDialogTitle,
341 Messages.TraceControl_InvalidLogLevel + " (" + temp + ") \n"); //$NON-NLS-1$ //$NON-NLS-2$
342
343 return false;
5f1f22f8 344 }
cfdb727a 345 fLogLevel = levels[id];
c56972bb
BH
346 }
347
d4514365 348 // initialize wildcard with null
ccc66d01 349 fWildcard = null;
5f1f22f8
BH
350 if (fIsWildcard) {
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$
ccc66d01 356
5f1f22f8
BH
357 return false;
358 }
359
360 if(!tempWildcard.matches("\\s*")) { //$NON-NLS-1$
361 fWildcard = tempWildcard;
362 }
ccc66d01 363 }
5f1f22f8 364
d4514365
BH
365 // initialize filter with null
366 fFilterExpression = null;
367 if (fProviderGroup.isEventFilteringSupported()) {
368 String tempFilter = fFilterText.getText();
369
370 if(!tempFilter.matches("\\s*")) { //$NON-NLS-1$
371 fFilterExpression = tempFilter;
372 }
373 }
374
ccc66d01
BH
375 // validation successful -> call super.okPressed()
376 return true;
377 }
cfdb727a 378
ccc66d01
BH
379 // ------------------------------------------------------------------------
380 // Helper methods
381 // ------------------------------------------------------------------------
cfdb727a 382
ccc66d01
BH
383 /**
384 * Creates tracepoints group.
385 */
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);
cfdb727a 393
ccc66d01
BH
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);
399
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() {
405 @Override
406 public void widgetSelected(SelectionEvent e) {
407 setEnablements(GroupEnum.TRACEPOINTS);
408 }
409 });
cfdb727a 410
ccc66d01
BH
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);
cfdb727a 416
ccc66d01
BH
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());
420
421 fTracepointsViewer.setLabelProvider(new UstLabelProvider());
422 fTracepointsViewer.addCheckStateListener(new UstCheckStateListener());
423
424 fTracepointsViewer.setInput(fProviderGroup.getParent());
425 fTracepointsViewer.getTree().setLayoutData(new GridData(GridData.FILL_BOTH));
426 }
cfdb727a 427
ccc66d01
BH
428 /**
429 * Creates wildcard group.
430 */
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);
cfdb727a 438
ccc66d01
BH
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);
444
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() {
451 @Override
452 public void widgetSelected(SelectionEvent e) {
453 setEnablements(GroupEnum.WILDCARD);
454 }
455 });
cfdb727a 456
ccc66d01
BH
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);
cfdb727a 462
ccc66d01
BH
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);
cfdb727a 468
ccc66d01
BH
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);
474 }
cfdb727a 475
ccc66d01
BH
476 /**
477 * Creates log level group.
478 */
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);
cfdb727a 486
ccc66d01
BH
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);
492
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() {
499 @Override
500 public void widgetSelected(SelectionEvent e) {
501 setEnablements(GroupEnum.LOGLEVEL);
502 }
503 });
504
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));
509
510 Label logLevelEventNameLabel = new Label(logLevelGroup, SWT.LEFT);
511 logLevelEventNameLabel.setText(Messages.TraceControl_EnableEventsEventNameLabel);
512
513 data = new GridData(GridData.FILL_BOTH);
514 data.horizontalSpan = 1;
515 logLevelEventNameLabel.setLayoutData(data);
516
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);
522
523 TraceLogLevel[] levels = TraceLogLevel.values();
cfdb727a 524
ccc66d01
BH
525 String[] levelNames = new String[levels.length - 1];
526 int k = 0;
527 for (int i = 0; i < levels.length; i++) {
528 if (levels[i] != TraceLogLevel.LEVEL_UNKNOWN) {
529 levelNames[k++] = levels[i].getInName();
530 }
531 }
532
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);
539
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);
545
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);
551 }
cfdb727a 552
d4514365
BH
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);
561
562 fFilterText = new Text(filterMainGroup, SWT.LEFT);
563 fFilterText.setToolTipText(Messages.TraceControl_EnableEventsFilterTooltip);
564 data = new GridData(GridData.FILL_HORIZONTAL);
565 fFilterText.setLayoutData(data);
566 }
567 }
568
ccc66d01
BH
569 /**
570 * Enable/selects widgets depending on the group specified.
571 * @param group - group to enable.
572 */
573 private void setEnablements(GroupEnum group) {
cfdb727a 574
ccc66d01
BH
575 // Enable/disable trace point items
576 fTracepointsActivateButton.setSelection(group == GroupEnum.TRACEPOINTS);
577 fTracepointsViewer.getTree().setEnabled(group == GroupEnum.TRACEPOINTS);
cfdb727a 578
ccc66d01
BH
579 // Enable/disable wildcard items
580 fWildcardActivateButton.setSelection(group == GroupEnum.WILDCARD);
581 fWildcardText.setEnabled(group == GroupEnum.WILDCARD);
582
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);
589 }
590
591 // ------------------------------------------------------------------------
592 // Local classes
593 // ------------------------------------------------------------------------
594 /**
cfdb727a 595 * Content provider for the tracepoints tree.
ccc66d01 596 */
c56972bb 597 final static public class UstContentProvider extends TraceControlContentProvider {
ccc66d01
BH
598 @Override
599 public Object[] getChildren(Object parentElement) {
600 if (parentElement instanceof TargetNodeComponent) {
601 List<ITraceControlComponent> children = ((ITraceControlComponent)parentElement).getChildren(TraceProviderGroup.class);
cfdb727a 602 return children.toArray(new ITraceControlComponent[children.size()]);
ccc66d01
BH
603 }
604 if (parentElement instanceof TraceProviderGroup) {
605 List<ITraceControlComponent> children = ((ITraceControlComponent)parentElement).getChildren(UstProviderComponent.class);
cfdb727a 606 return children.toArray(new ITraceControlComponent[children.size()]);
ccc66d01
BH
607 }
608 if (parentElement instanceof ITraceControlComponent) {
609 return ((ITraceControlComponent)parentElement).getChildren();
610 }
611 return new Object[0];
612 }
613 }
cfdb727a 614
ccc66d01 615 /**
cfdb727a 616 * Content label for the tracepoints tree.
ccc66d01 617 */
c56972bb 618 final static public class UstLabelProvider extends TraceControlLabelProvider {
ccc66d01
BH
619 @Override
620 public Image getImage(Object element) {
621 return null;
622 }
623 @Override
624 public String getText(Object element) {
625 if ((element != null) && (element instanceof TraceProviderGroup)) {
626 return Messages.TraceControl_EnableEventsTracepointTreeAllLabel;
627 }
628
629 if ((element != null) && (element instanceof UstProviderComponent)) {
630 return Messages.TraceControl_EnableEventsTracepointTreeAllLabel + " - " + ((UstProviderComponent)element).getName(); //$NON-NLS-1$
631 }
632 return super.getText(element);
633 }
634 }
635
636 /**
cfdb727a 637 * Check state listener for the tracepoints tree.
ccc66d01
BH
638 */
639 final public class UstCheckStateListener implements ICheckStateListener {
640 @Override
641 public void checkStateChanged(CheckStateChangedEvent event) {
642 if (event.getChecked()) {
643 if (event.getElement() instanceof TraceProviderGroup) {
644 fTracepointsViewer.setSubtreeChecked(event.getElement(), true);
645 }
646 if (event.getElement() instanceof UstProviderComponent) {
647 fTracepointsViewer.setSubtreeChecked(event.getElement(), true);
cfdb727a 648 }
ccc66d01
BH
649 } else {
650 if (event.getElement() instanceof TraceProviderGroup) {
651 fTracepointsViewer.setSubtreeChecked(event.getElement(), true);
652 }
653 if (event.getElement() instanceof UstProviderComponent) {
654 ITraceControlComponent component = (ITraceControlComponent) event.getElement();
655 fTracepointsViewer.setSubtreeChecked(event.getElement(), false);
656 fTracepointsViewer.setChecked(component.getParent(), false);
657 } else {
658 ITraceControlComponent component = (ITraceControlComponent) event.getElement();
659 fTracepointsViewer.setChecked(component.getParent(), false);
660 fTracepointsViewer.setChecked(component.getParent().getParent(), false);
661 }
662 }
663 }
664 }
665}
This page took 0.06244 seconds and 5 git commands to generate.