06e88be32288d5d3185764c447922d34f1aec580
[deliverable/tracecompass.git] / org.eclipse.linuxtools.lttng2.ui / src / org / eclipse / linuxtools / internal / lttng2 / ui / views / control / dialogs / EnableEventsDialog.java
1 /**********************************************************************
2 * Copyright (c) 2012 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 **********************************************************************/
12 package org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs;
13
14 import java.util.List;
15
16 import org.eclipse.jface.dialogs.Dialog;
17 import org.eclipse.jface.dialogs.IDialogConstants;
18 import org.eclipse.linuxtools.internal.lttng2.core.control.model.LogLevelType;
19 import org.eclipse.linuxtools.internal.lttng2.core.control.model.TraceLogLevel;
20 import org.eclipse.linuxtools.internal.lttng2.ui.Activator;
21 import org.eclipse.linuxtools.internal.lttng2.ui.views.control.messages.Messages;
22 import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceDomainComponent;
23 import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceProviderGroup;
24 import org.eclipse.swt.SWT;
25 import org.eclipse.swt.events.SelectionAdapter;
26 import org.eclipse.swt.events.SelectionEvent;
27 import org.eclipse.swt.graphics.Point;
28 import org.eclipse.swt.layout.GridData;
29 import org.eclipse.swt.layout.GridLayout;
30 import org.eclipse.swt.widgets.Button;
31 import org.eclipse.swt.widgets.Composite;
32 import org.eclipse.swt.widgets.Control;
33 import org.eclipse.swt.widgets.Group;
34 import org.eclipse.swt.widgets.Shell;
35
36 /**
37 * <p>
38 * Dialog box for collecting information events to be enabled.
39 * </p>
40 *
41 * @author Bernd Hufmann
42 */
43 public class EnableEventsDialog extends Dialog implements IEnableEventsDialog {
44
45 // ------------------------------------------------------------------------
46 // Constants
47 // ------------------------------------------------------------------------
48
49 /**
50 * The icon file for this dialog box.
51 */
52 public static final String ENABLE_EVENT_ICON_FILE = "icons/elcl16/enable_event.gif"; //$NON-NLS-1$
53
54 // ------------------------------------------------------------------------
55 // Attributes
56 // ------------------------------------------------------------------------
57 /**
58 * The dialog composite.
59 */
60 private Composite fDialogComposite;
61 /**
62 * The composite with widgets for collecting information about kernel events.
63 */
64 private EnableKernelEventComposite fKernelComposite;
65 /**
66 * The composite with widgets for collecting information about UST events.
67 */
68 private EnableUstEventsComposite fUstComposite;
69 /**
70 * Radio button for selecting kernel domain.
71 */
72 private Button fKernelButton;
73 /**
74 * Radio button for selecting UST domain.
75 */
76 private Button fUstButton;
77 /**
78 * The referenced trace provider group containing the kernel provider and UST
79 * provider component which contains a list of available tracepoints.
80 */
81 private TraceProviderGroup fProviderGroup;
82 /**
83 * The parent domain component where the channel node should be added.
84 * Null in case the domain is not known (i.e. on session level).
85 */
86 private TraceDomainComponent fDomain;
87 /**
88 * Output domain information. True in case of Kernel domain. False for UST.
89 */
90 private boolean fIsKernel;
91
92 // ------------------------------------------------------------------------
93 // Constructors
94 // ------------------------------------------------------------------------
95 /**
96 * Constructor
97 * @param shell - a shell for the display of the dialog
98 */
99 public EnableEventsDialog(Shell shell) {
100 super(shell);
101 setShellStyle(SWT.RESIZE);
102 }
103
104 // ------------------------------------------------------------------------
105 // Accessors
106 // ------------------------------------------------------------------------
107
108 /*
109 * (non-Javadoc)
110 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableKernelEvents#isTracpoints()
111 */
112 @Override
113 public boolean isTracepoints() {
114 if (fIsKernel) {
115 return fKernelComposite.isTracepoints();
116 }
117 return fUstComposite.isTracepoints();
118 }
119
120 /* (non-Javadoc)
121 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableKernelEvents#isAllTracePoints()
122 */
123 @Override
124 public boolean isAllTracePoints() {
125 if (fIsKernel) {
126 return fKernelComposite.isAllTracePoints();
127 }
128 return fUstComposite.isAllTracePoints();
129 }
130
131 /*
132 * (non-Javadoc)
133 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableKernelEvents#isSysCalls()
134 */
135 @Override
136 public boolean isSysCalls() {
137 if (fIsKernel) {
138 return fKernelComposite.isSysCalls();
139 }
140 return false;
141 }
142
143 /* (non-Javadoc)
144 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableKernelEvents#isAllSysCalls()
145 */
146 @Override
147 public boolean isAllSysCalls() {
148 if (fIsKernel) {
149 return fKernelComposite.isSysCalls();
150 }
151 return false;
152 }
153
154 /* (non-Javadoc)
155 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableKernelEvents#getEventNames()
156 */
157 @Override
158 public List<String> getEventNames() {
159 if (fIsKernel) {
160 return fKernelComposite.getEventNames();
161 }
162 return fUstComposite.getEventNames();
163 }
164 /*
165 * (non-Javadoc)
166 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableKernelEvents#isDynamicProbe()
167 */
168 @Override
169 public boolean isDynamicProbe() {
170 if (fIsKernel) {
171 return fKernelComposite.isDynamicProbe();
172 }
173 return false;
174 }
175
176 /* (non-Javadoc)
177 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableKernelEvents#getProbeName()
178 */
179 @Override
180 public String getProbeName() {
181 if (fIsKernel) {
182 return fKernelComposite.getProbeName();
183 }
184 return null;
185 }
186
187 /* (non-Javadoc)
188 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableKernelEvents#getProbeEventName()
189 */
190 @Override
191 public String getProbeEventName() {
192 if (fIsKernel) {
193 return fKernelComposite.getProbeEventName();
194 }
195 return null;
196 }
197
198 /*
199 * (non-Javadoc)
200 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableKernelEvents#isDynamicFunctionProbe()
201 */
202 @Override
203 public boolean isDynamicFunctionProbe() {
204 if (fIsKernel) {
205 return fKernelComposite.isDynamicFunctionProbe();
206 }
207 return false;
208 }
209
210 /* (non-Javadoc)
211 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableKernelEvents#getFunctionEventName()
212 */
213 @Override
214 public String getFunctionEventName() {
215 if (fIsKernel) {
216 return fKernelComposite.getFunctionEventName();
217 }
218 return null;
219 }
220
221 /*
222 * (non-Javadoc)
223 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableKernelEvents#getFunction()
224 */
225 @Override
226 public String getFunction() {
227 if (fIsKernel) {
228 return fKernelComposite.getFunction();
229 }
230 return null;
231 }
232
233 /*
234 * (non-Javadoc)
235 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableUstEvents#isWildcard()
236 */
237 @Override
238 public boolean isWildcard() {
239 if (!fIsKernel) {
240 return fUstComposite.isWildcard();
241 }
242 return false;
243 }
244
245 /*
246 * (non-Javadoc)
247 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableUstEvents#getWildcard()
248 */
249 @Override
250 public String getWildcard() {
251 if (!fIsKernel) {
252 return fUstComposite.getWildcard();
253 }
254 return null;
255
256 }
257
258 /*
259 * (non-Javadoc)
260 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableUstEvents#isLogLevel()
261 */
262 @Override
263 public boolean isLogLevel() {
264 if (!fIsKernel) {
265 return fUstComposite.isLogLevel();
266 }
267 return false;
268
269 }
270
271 /*
272 * (non-Javadoc)
273 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableUstEvents#getLogLevelType()
274 */
275 @Override
276 public LogLevelType getLogLevelType() {
277 if (!fIsKernel) {
278 return fUstComposite.getLogLevelType();
279 }
280 return null;
281
282 }
283
284 /*
285 * (non-Javadoc)
286 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableUstEvents#getLogLevel()
287 */
288 @Override
289 public TraceLogLevel getLogLevel() {
290 if (!fIsKernel) {
291 return fUstComposite.getLogLevel();
292 }
293 return null;
294
295 }
296
297 /*
298 * (non-Javadoc)
299 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableUstEvents#getLogLevelEventName()
300 */
301 @Override
302 public String getLogLevelEventName() {
303 if (!fIsKernel) {
304 return fUstComposite.getLogLevelEventName();
305 }
306 return null;
307 }
308
309 /*
310 * (non-Javadoc)
311 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableEventsDialog#isKernel()
312 */
313 @Override
314 public boolean isKernel() {
315 return fIsKernel;
316 }
317
318 /*
319 * (non-Javadoc)
320 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableEventsDialog#setTraceProviderGroup(org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceProviderGroup)
321 */
322 @Override
323 public void setTraceProviderGroup(TraceProviderGroup providerGroup) {
324 fProviderGroup = providerGroup;
325 }
326
327 /*
328 * (non-Javadoc)
329 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableEventsDialog#setTraceDomainComponent(org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceDomainComponent)
330 */
331 @Override
332 public void setTraceDomainComponent(TraceDomainComponent domain) {
333 fDomain = domain;
334 if (fDomain != null) {
335 fIsKernel = fDomain.isKernel();
336 } else {
337 fIsKernel = fProviderGroup != null ? fProviderGroup.hasKernelProvider() : true;
338 }
339 }
340
341 /*
342 * (non-Javadoc)
343 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableUstEvents#getFilterExpression()
344 */
345 @Override
346 public String getFilterExpression() {
347 if (!fIsKernel) {
348 return fUstComposite.getFilterExpression();
349 }
350 return null;
351 }
352
353 // ------------------------------------------------------------------------
354 // Operations
355 // ------------------------------------------------------------------------
356 /*
357 * (non-Javadoc)
358 * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)
359 */
360 @Override
361 protected void configureShell(Shell newShell) {
362 super.configureShell(newShell);
363 newShell.setText(Messages.TraceControl_EnableEventsDialogTitle);
364 newShell.setImage(Activator.getDefault().loadIcon(ENABLE_EVENT_ICON_FILE));
365 }
366
367 /*
368 * (non-Javadoc)
369 * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
370 */
371 @Override
372 protected Control createDialogArea(Composite parent) {
373
374 // Main dialog panel
375 fDialogComposite = new Composite(parent, SWT.NONE);
376 GridLayout layout = new GridLayout(1, true);
377 fDialogComposite.setLayout(layout);
378 fDialogComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
379
380 // ------------------------------------------------------------------------
381 // Domain Group
382 // ------------------------------------------------------------------------
383 Group domainGroup = new Group(fDialogComposite, SWT.SHADOW_NONE);
384 domainGroup.setText(Messages.TraceControl_DomainDisplayName);
385 layout = new GridLayout(2, true);
386 domainGroup.setLayout(layout);
387
388 fKernelButton = new Button(domainGroup, SWT.RADIO);
389 fKernelButton.setText(Messages.TraceControl_KernelDomainDisplayName);
390 fKernelButton.setSelection(fIsKernel);
391 fUstButton = new Button(domainGroup, SWT.RADIO);
392 fUstButton.setText(Messages.TraceControl_UstDisplayName);
393 fUstButton.setSelection(!fIsKernel);
394
395 if ((fDomain != null) || ((fProviderGroup != null) && (!fProviderGroup.hasKernelProvider()))) {
396 fKernelButton.setEnabled(false);
397 fUstButton.setEnabled(false);
398 }
399
400 // layout widgets
401 GridData data = new GridData(GridData.FILL_HORIZONTAL);
402 domainGroup.setLayoutData(data);
403
404 data = new GridData(SWT.BEGINNING, SWT.BEGINNING, true, true);
405 fKernelButton.setLayoutData(data);
406 data = new GridData(SWT.BEGINNING, SWT.BEGINNING, true, true);
407 fUstButton.setLayoutData(data);
408
409 // ------------------------------------------------------------------------
410 // Kernel or UST event data group
411 // ------------------------------------------------------------------------
412 fUstComposite = null;
413 fKernelComposite = null;
414 if (fIsKernel) {
415 createKernelComposite();
416 fUstComposite = null;
417 } else {
418 createUstComposite();
419 }
420
421 fKernelButton.addSelectionListener(new SelectionAdapter() {
422 @Override
423 public void widgetSelected(SelectionEvent e) {
424 if (fKernelButton.getSelection()) {
425 disposeUstComposite();
426 createKernelComposite();
427 fDialogComposite.layout();
428 }
429 }
430 });
431
432 fUstButton.addSelectionListener(new SelectionAdapter() {
433 @Override
434 public void widgetSelected(SelectionEvent e) {
435 if (fUstButton.getSelection()) {
436 disposeKernelComposite();
437 createUstComposite();
438 fDialogComposite.layout();
439 }
440 }
441 });
442
443 fDialogComposite.layout();
444
445 getShell().setMinimumSize(new Point(500, 650));
446
447 return fDialogComposite;
448 }
449
450
451 /*
452 * (non-Javadoc)
453 * @see org.eclipse.jface.dialogs.Dialog#createButtonsForButtonBar(org.eclipse.swt.widgets.Composite)
454 */
455 @Override
456 protected void createButtonsForButtonBar(Composite parent) {
457 createButton(parent, IDialogConstants.CANCEL_ID, "&Cancel", true); //$NON-NLS-1$
458 createButton(parent, IDialogConstants.OK_ID, "&Ok", true); //$NON-NLS-1$
459 }
460
461 /*
462 * (non-Javadoc)
463 * @see org.eclipse.jface.dialogs.Dialog#okPressed()
464 */
465 @Override
466 protected void okPressed() {
467 fIsKernel = fKernelButton.getSelection();
468
469 // Validate kernel composite in case of kernel domain
470 if (fKernelComposite != null && !fKernelComposite.isValid()) {
471 return;
472 }
473
474 // Validate UST composite in case of UST domain
475 if (fUstComposite != null && !fUstComposite.isValid()) {
476 return;
477 }
478
479 // validation successful -> call super.okPressed()
480 super.okPressed();
481 }
482
483 // ------------------------------------------------------------------------
484 // Helper methods
485 // ------------------------------------------------------------------------
486 /**
487 * Creates the kernel composite (if not existing)
488 */
489 private void createKernelComposite() {
490 if (fKernelComposite == null) {
491 fKernelComposite = new EnableKernelEventComposite(fDialogComposite, SWT.NONE, fProviderGroup);
492 GridLayout layout = new GridLayout(1, true);
493 fKernelComposite.setLayout(layout);
494 fKernelComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
495
496 fKernelComposite.createContent();
497 }
498 }
499
500 /**
501 * Disposes the kernel composite (if existing)
502 */
503 private void disposeKernelComposite() {
504 if (fKernelComposite != null) {
505 fKernelComposite.dispose();
506 fKernelComposite = null;
507 }
508 }
509
510 /**
511 * Creates the UST composite (if not existing)
512 */
513 private void createUstComposite() {
514 if (fUstComposite == null) {
515 fUstComposite = new EnableUstEventsComposite(fDialogComposite, SWT.NONE, fProviderGroup);
516 GridLayout layout = new GridLayout(1, true);
517 fUstComposite.setLayout(layout);
518 fUstComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
519
520 fUstComposite.createContent();
521 }
522 }
523
524 /**
525 * Disposes the UST composite (if existing)
526 */
527 private void disposeUstComposite() {
528 if (fUstComposite != null) {
529 fUstComposite.dispose();
530 fUstComposite = null;
531 }
532 }
533 }
This page took 0.04298 seconds and 4 git commands to generate.