Copyright header update, 2015 edition
[deliverable/tracecompass.git] / org.eclipse.tracecompass.lttng2.control.ui / src / org / eclipse / tracecompass / internal / lttng2 / control / ui / views / dialogs / EnableUstEventsComposite.java
CommitLineData
ccc66d01 1/**********************************************************************
ed902a2b 2 * Copyright (c) 2012, 2015 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 10 * Bernd Hufmann - Initial API and implementation
ba3a9bd2 11 * Bernd Hufmann - Updated for support of LTTng Tools 2.1
d4489ec9 12 * Marc-Andre Laperle - Add filtering textbox
ccc66d01 13 **********************************************************************/
9bc60be7 14package org.eclipse.tracecompass.internal.lttng2.control.ui.views.dialogs;
ccc66d01
BH
15
16import java.util.ArrayList;
17import java.util.HashSet;
18import java.util.List;
19import java.util.Set;
20
21import org.eclipse.jface.dialogs.MessageDialog;
22import org.eclipse.jface.viewers.CheckStateChangedEvent;
23import org.eclipse.jface.viewers.CheckboxTreeViewer;
24import org.eclipse.jface.viewers.ICheckStateListener;
d4489ec9 25import org.eclipse.jface.viewers.TreeViewer;
ccc66d01
BH
26import org.eclipse.swt.SWT;
27import org.eclipse.swt.custom.CCombo;
28import org.eclipse.swt.events.SelectionAdapter;
29import org.eclipse.swt.events.SelectionEvent;
30import org.eclipse.swt.graphics.Image;
31import org.eclipse.swt.layout.GridData;
32import org.eclipse.swt.layout.GridLayout;
33import org.eclipse.swt.widgets.Button;
34import org.eclipse.swt.widgets.Composite;
35import org.eclipse.swt.widgets.Group;
36import org.eclipse.swt.widgets.Label;
37import org.eclipse.swt.widgets.Text;
9bc60be7
AM
38import org.eclipse.tracecompass.internal.lttng2.control.core.model.LogLevelType;
39import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceLogLevel;
40import org.eclipse.tracecompass.internal.lttng2.control.ui.views.messages.Messages;
41import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.ITraceControlComponent;
42import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.BaseEventComponent;
43import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.TargetNodeComponent;
44import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.TraceControlContentProvider;
45import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.TraceControlLabelProvider;
46import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.TraceProviderGroup;
47import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.UstProviderComponent;
d4489ec9
MAL
48import org.eclipse.ui.dialogs.FilteredTree;
49import org.eclipse.ui.dialogs.PatternFilter;
ccc66d01
BH
50
51/**
ccc66d01
BH
52 * <p>
53 * A composite for collecting information about UST events to be enabled.
54 * </p>
cfdb727a 55 *
dbd4432d 56 * @author Bernd Hufmann
ccc66d01
BH
57 */
58public class EnableUstEventsComposite extends Composite implements IEnableUstEvents {
59
60 // ------------------------------------------------------------------------
61 // Constants
62 // ------------------------------------------------------------------------
cfdb727a
AM
63
64 private enum GroupEnum { TRACEPOINTS, WILDCARD, LOGLEVEL }
65
ccc66d01
BH
66 // ------------------------------------------------------------------------
67 // Attributes
68 // ------------------------------------------------------------------------
cfdb727a 69
ccc66d01
BH
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;
d4514365
BH
106 /**
107 * The filter text
108 */
109 private Text fFilterText;
110
ccc66d01 111 /**
cfdb727a 112 * The referenced trace provider group containing the UST providers
ccc66d01
BH
113 * component which contains a list of available tracepoints.
114 */
cfdb727a 115 private final TraceProviderGroup fProviderGroup;
ccc66d01
BH
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 /**
cfdb727a 129 * The flag indicating that all wildcard are selected..
ccc66d01
BH
130 */
131 private boolean fIsWildcard;
132 /**
cfdb727a 133 * The wildcard if wildcard is selected.
ccc66d01
BH
134 */
135 private String fWildcard;
136 /**
cfdb727a 137 *The flag indicating that all log level are selected.
ccc66d01
BH
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;
d4514365
BH
152 /**
153 * The filter expression
154 */
155 private String fFilterExpression;
ccc66d01
BH
156
157 // ------------------------------------------------------------------------
158 // Constructors
159 // ------------------------------------------------------------------------
160 /**
161 * Constructor
162 * @param parent - a parent composite
cfdb727a 163 * @param style - a composite style
ccc66d01
BH
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
ccc66d01
BH
175 @Override
176 public boolean isTracepoints() {
177 return fIsTracepoints;
178 }
cfdb727a 179
ccc66d01
BH
180 @Override
181 public boolean isAllTracePoints() {
182 return fIsAllTracepoints;
183 }
cfdb727a 184
ccc66d01
BH
185 @Override
186 public List<String> getEventNames() {
e0838ca1 187 return new ArrayList<>(fSelectedEvents);
ccc66d01
BH
188 }
189
ccc66d01
BH
190 @Override
191 public boolean isWildcard() {
192 return fIsWildcard;
193 }
194
ccc66d01
BH
195 @Override
196 public String getWildcard() {
7a6e4bfd 197 return fWildcard;
ccc66d01
BH
198 }
199
ccc66d01
BH
200 @Override
201 public boolean isLogLevel() {
202 return fIsLogLevel;
203 }
204
ccc66d01
BH
205 @Override
206 public LogLevelType getLogLevelType() {
207 return fLogLevelType;
208 }
209
ccc66d01
BH
210 @Override
211 public TraceLogLevel getLogLevel() {
212 return fLogLevel;
213 }
214
ccc66d01
BH
215 @Override
216 public String getLogLevelEventName() {
217 return fLogLevelEventName;
218 }
cfdb727a 219
d4514365
BH
220 @Override
221 public String getFilterExpression() {
222 return fFilterExpression;
223 }
224
ccc66d01
BH
225 // ------------------------------------------------------------------------
226 // Operations
227 // ------------------------------------------------------------------------
228
cfdb727a
AM
229 /**
230 * Create the contents of this event composite
231 */
ccc66d01 232 public void createContent() {
cfdb727a
AM
233
234 // Tracepoints Group
ccc66d01
BH
235 createTracepointsGroup();
236
cfdb727a 237 // Wildcard Group
ccc66d01
BH
238 createWildCardGroup();
239
cfdb727a 240 // Log Level Group
ccc66d01 241 createLogLevelGroup();
cfdb727a 242
d4514365
BH
243 // Filter Group
244 createFilterGroup();
245
ccc66d01
BH
246 // Set default enablements
247 setEnablements(GroupEnum.TRACEPOINTS);
248 }
249
250 /**
11252342
AM
251 * Validates the UST composite input data.
252 *
253 * @return true if configured data is valid and can be retrieved.
254 */
ccc66d01 255 public boolean isValid() {
cfdb727a 256
ccc66d01
BH
257 fIsTracepoints = fTracepointsActivateButton.getSelection();
258 fIsWildcard = fWildcardActivateButton.getSelection();
259 fIsLogLevel = fLogLevelActivateButton.getSelection();
cfdb727a 260
5f1f22f8
BH
261 // initialize tracepoint fields
262 fIsAllTracepoints = false;
e0838ca1 263 fSelectedEvents = new ArrayList<>();
5f1f22f8 264 if (fIsTracepoints) {
e0838ca1 265 Set<String> set = new HashSet<>();
5f1f22f8 266 Object[] checkedElements = fTracepointsViewer.getCheckedElements();
579acd01 267 int totalNbEvents = 0;
5f1f22f8 268 for (int i = 0; i < checkedElements.length; i++) {
579acd01
BH
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 }
5f1f22f8 276 }
579acd01
BH
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;
ccc66d01 285 }
579acd01 286 fIsAllTracepoints = (nbUstEvents == totalNbEvents);
ccc66d01
BH
287 }
288
ccc66d01 289 // initialize log level event name string
5f1f22f8 290 fLogLevelType = LogLevelType.LOGLEVEL_NONE;
ccc66d01 291 fLogLevelEventName = null;
ccc66d01 292
5f1f22f8
BH
293 if (fIsLogLevel) {
294 if (fLogLevelButton.getSelection()) {
295 fLogLevelType = LogLevelType.LOGLEVEL;
296 } else if (fLogLevelOnlyButton.getSelection()) {
297 fLogLevelType = LogLevelType.LOGLEVEL_ONLY;
298 }
ccc66d01 299
5f1f22f8 300 String temp = fLogLevelEventNameText.getText();
c371fa43
BH
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$
5f1f22f8
BH
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
c371fa43 311 fLogLevelEventName = temp;
ccc66d01 312
5f1f22f8
BH
313 TraceLogLevel[] levels = TraceLogLevel.values();
314 int id = fLogLevelCombo.getSelectionIndex();
c56972bb 315
5f1f22f8
BH
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;
5f1f22f8 322 }
cfdb727a 323 fLogLevel = levels[id];
c56972bb
BH
324 }
325
d4514365 326 // initialize wildcard with null
ccc66d01 327 fWildcard = null;
5f1f22f8
BH
328 if (fIsWildcard) {
329 String tempWildcard = fWildcardText.getText();
c371fa43
BH
330 if (tempWildcard.isEmpty() ||
331 tempWildcard.matches("\\s*") || //$NON-NLS-1$
774a7993 332 (!tempWildcard.matches("^[\\s]{0,}$") && !tempWildcard.matches("^[a-zA-Z0-9\\-\\_\\*\\\\\\']{1,}$"))) { //$NON-NLS-1$ //$NON-NLS-2$
5f1f22f8
BH
333 MessageDialog.openError(getShell(),
334 Messages.TraceControl_EnableEventsDialogTitle,
335 Messages.TraceControl_InvalidWildcardError + " (" + tempWildcard + ") \n"); //$NON-NLS-1$ //$NON-NLS-2$
ccc66d01 336
5f1f22f8
BH
337 return false;
338 }
339
c371fa43 340 fWildcard = tempWildcard;
ccc66d01 341 }
5f1f22f8 342
d4514365
BH
343 // initialize filter with null
344 fFilterExpression = null;
345 if (fProviderGroup.isEventFilteringSupported()) {
346 String tempFilter = fFilterText.getText();
347
c371fa43 348 if(!tempFilter.isEmpty() && !tempFilter.matches("\\s*")) { //$NON-NLS-1$
d4514365
BH
349 fFilterExpression = tempFilter;
350 }
351 }
352
ccc66d01
BH
353 // validation successful -> call super.okPressed()
354 return true;
355 }
cfdb727a 356
ccc66d01
BH
357 // ------------------------------------------------------------------------
358 // Helper methods
359 // ------------------------------------------------------------------------
cfdb727a 360
ccc66d01
BH
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);
cfdb727a 371
ccc66d01
BH
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 });
cfdb727a 388
ccc66d01
BH
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);
d4489ec9
MAL
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());
cfdb727a 400
d4489ec9
MAL
401 fTracepointsViewer.setLabelProvider(new UstLabelProvider());
402 fTracepointsViewer.addCheckStateListener(new UstCheckStateListener());
ccc66d01 403
d4489ec9
MAL
404 fTracepointsViewer.setInput(fProviderGroup.getParent());
405 fTracepointsViewer.getTree().setLayoutData(new GridData(GridData.FILL_BOTH));
406 return fTracepointsViewer;
407 }
408 };
ccc66d01 409 }
cfdb727a 410
ccc66d01
BH
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);
cfdb727a 421
ccc66d01
BH
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 });
cfdb727a 439
ccc66d01
BH
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);
cfdb727a 445
ccc66d01
BH
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);
cfdb727a 451
ccc66d01
BH
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 }
cfdb727a 458
ccc66d01
BH
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);
cfdb727a 469
ccc66d01
BH
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();
cfdb727a 507
ccc66d01
BH
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);
23839724 528 fLogLevelButton.setSelection(true);
ccc66d01
BH
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 }
cfdb727a 536
d4514365
BH
537 void createFilterGroup() {
538 if (fProviderGroup.isEventFilteringSupported()) {
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
ccc66d01
BH
553 /**
554 * Enable/selects widgets depending on the group specified.
555 * @param group - group to enable.
556 */
557 private void setEnablements(GroupEnum group) {
cfdb727a 558
ccc66d01
BH
559 // Enable/disable trace point items
560 fTracepointsActivateButton.setSelection(group == GroupEnum.TRACEPOINTS);
561 fTracepointsViewer.getTree().setEnabled(group == GroupEnum.TRACEPOINTS);
cfdb727a 562
ccc66d01
BH
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 /**
cfdb727a 579 * Content provider for the tracepoints tree.
ccc66d01 580 */
77735e82 581 public static final class UstContentProvider extends TraceControlContentProvider {
ccc66d01
BH
582 @Override
583 public Object[] getChildren(Object parentElement) {
584 if (parentElement instanceof TargetNodeComponent) {
585 List<ITraceControlComponent> children = ((ITraceControlComponent)parentElement).getChildren(TraceProviderGroup.class);
cfdb727a 586 return children.toArray(new ITraceControlComponent[children.size()]);
ccc66d01
BH
587 }
588 if (parentElement instanceof TraceProviderGroup) {
589 List<ITraceControlComponent> children = ((ITraceControlComponent)parentElement).getChildren(UstProviderComponent.class);
cfdb727a 590 return children.toArray(new ITraceControlComponent[children.size()]);
ccc66d01
BH
591 }
592 if (parentElement instanceof ITraceControlComponent) {
593 return ((ITraceControlComponent)parentElement).getChildren();
594 }
595 return new Object[0];
596 }
597 }
cfdb727a 598
ccc66d01 599 /**
cfdb727a 600 * Content label for the tracepoints tree.
ccc66d01 601 */
77735e82 602 public static final class UstLabelProvider extends TraceControlLabelProvider {
ccc66d01
BH
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 /**
cfdb727a 621 * Check state listener for the tracepoints tree.
ccc66d01 622 */
77735e82 623 public final class UstCheckStateListener implements ICheckStateListener {
ccc66d01
BH
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);
cfdb727a 632 }
ccc66d01
BH
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.085565 seconds and 5 git commands to generate.