1 /**********************************************************************
2 * Copyright (c) 2012 Ericsson
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
10 * Bernd Hufmann - Initial API and implementation
11 **********************************************************************/
12 package org
.eclipse
.linuxtools
.lttng
.ui
.views
.control
.dialogs
;
14 import java
.util
.List
;
16 import org
.eclipse
.jface
.dialogs
.Dialog
;
17 import org
.eclipse
.jface
.dialogs
.IDialogConstants
;
18 import org
.eclipse
.linuxtools
.lttng
.ui
.LTTngUiPlugin
;
19 import org
.eclipse
.linuxtools
.lttng
.ui
.views
.control
.Messages
;
20 import org
.eclipse
.linuxtools
.lttng
.ui
.views
.control
.model
.LogLevelType
;
21 import org
.eclipse
.linuxtools
.lttng
.ui
.views
.control
.model
.TraceLogLevel
;
22 import org
.eclipse
.linuxtools
.lttng
.ui
.views
.control
.model
.impl
.TraceDomainComponent
;
23 import org
.eclipse
.linuxtools
.lttng
.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
;
37 * <b><u>EnableEventsDialog</u></b>
39 * Dialog box for collecting information events to be enabled.
42 public class EnableEventsDialog
extends Dialog
implements IEnableEventsDialog
{
44 // ------------------------------------------------------------------------
46 // ------------------------------------------------------------------------
49 * The icon file for this dialog box.
51 public static final String ENABLE_EVENT_ICON_FILE
= "icons/elcl16/edit.gif"; //$NON-NLS-1$
53 // ------------------------------------------------------------------------
55 // ------------------------------------------------------------------------
57 * The dialog composite.
59 private Composite fDialogComposite
;
61 * The composite with widgets for collecting information about kernel events.
63 private EnableKernelEventComposite fKernelComposite
;
65 * The composite with widgets for collecting information about UST events.
67 private EnableUstEventsComposite fUstComposite
;
69 * Radio button for selecting kernel domain.
71 private Button fKernelButton
;
73 * Radio button for selecting UST domain.
75 private Button fUstButton
;
77 * The referenced trace provider group containing the kernel provider and UST
78 * provider component which contains a list of available tracepoints.
80 private TraceProviderGroup fProviderGroup
;
82 * The parent domain component where the channel node should be added.
83 * Null in case the domain is not known (i.e. on session level).
85 private TraceDomainComponent fDomain
;
87 * Output domain information. True in case of Kernel domain. False for UST.
89 private boolean fIsKernel
;
91 // ------------------------------------------------------------------------
93 // ------------------------------------------------------------------------
96 * @param shell - a shell for the display of the dialog
97 * @param providerGroup - the trace provider group
99 public EnableEventsDialog(Shell shell
, TraceProviderGroup providerGroup
) {
100 this(shell
, providerGroup
, null);
105 * @param shell - a shell for the display of the dialog
106 * @param providerGroup - a trace provider group
107 * @param domain - a domain of the events (null if not known)
109 public EnableEventsDialog(Shell shell
, TraceProviderGroup providerGroup
, TraceDomainComponent domain
) {
111 fProviderGroup
= providerGroup
;
112 setShellStyle(SWT
.RESIZE
);
114 if (fDomain
!= null) {
115 fIsKernel
= fDomain
.isKernel();
121 // ------------------------------------------------------------------------
123 // ------------------------------------------------------------------------
127 * @see org.eclipse.linuxtools.lttng.ui.views.control.dialogs.IEnableKernelEvents#isTracpoints()
130 public boolean isTracepoints() {
132 return fKernelComposite
.isTracepoints();
134 return fUstComposite
.isTracepoints();
138 * @see org.eclipse.linuxtools.lttng.ui.views.control.dialogs.IEnableKernelEvents#isAllTracePoints()
141 public boolean isAllTracePoints() {
143 return fKernelComposite
.isAllTracePoints();
145 return fUstComposite
.isAllTracePoints();
150 * @see org.eclipse.linuxtools.lttng.ui.views.control.dialogs.IEnableKernelEvents#isSysCalls()
153 public boolean isSysCalls() {
155 return fKernelComposite
.isSysCalls();
161 * @see org.eclipse.linuxtools.lttng.ui.views.control.dialogs.IEnableKernelEvents#isAllSysCalls()
164 public boolean isAllSysCalls() {
166 return fKernelComposite
.isSysCalls();
172 * @see org.eclipse.linuxtools.lttng.ui.views.control.dialogs.IEnableKernelEvents#getEventNames()
175 public List
<String
> getEventNames() {
177 return fKernelComposite
.getEventNames();
179 return fUstComposite
.getEventNames();
183 * @see org.eclipse.linuxtools.lttng.ui.views.control.dialogs.IEnableKernelEvents#isDynamicProbe()
186 public boolean isDynamicProbe() {
188 return fKernelComposite
.isDynamicProbe();
194 * @see org.eclipse.linuxtools.lttng.ui.views.control.dialogs.IEnableKernelEvents#getProbeName()
197 public String
getProbeName() {
199 return fKernelComposite
.getProbeName();
205 * @see org.eclipse.linuxtools.lttng.ui.views.control.dialogs.IEnableKernelEvents#getProbeEventName()
208 public String
getProbeEventName() {
210 return fKernelComposite
.getProbeEventName();
217 * @see org.eclipse.linuxtools.lttng.ui.views.control.dialogs.IEnableKernelEvents#isDynamicFunctionProbe()
220 public boolean isDynamicFunctionProbe() {
222 return fKernelComposite
.isDynamicFunctionProbe();
228 * @see org.eclipse.linuxtools.lttng.ui.views.control.dialogs.IEnableKernelEvents#getFunctionEventName()
231 public String
getFunctionEventName() {
233 return fKernelComposite
.getFunctionEventName();
240 * @see org.eclipse.linuxtools.lttng.ui.views.control.dialogs.IEnableKernelEvents#getFunction()
243 public String
getFunction() {
245 return fKernelComposite
.getFunction();
252 * @see org.eclipse.linuxtools.lttng.ui.views.control.dialogs.IEnableUstEvents#isWildcard()
255 public boolean isWildcard() {
257 return fUstComposite
.isWildcard();
264 * @see org.eclipse.linuxtools.lttng.ui.views.control.dialogs.IEnableUstEvents#getWildcard()
267 public String
getWildcard() {
269 return fUstComposite
.getWildcard();
277 * @see org.eclipse.linuxtools.lttng.ui.views.control.dialogs.IEnableUstEvents#isLogLevel()
280 public boolean isLogLevel() {
282 return fUstComposite
.isLogLevel();
290 * @see org.eclipse.linuxtools.lttng.ui.views.control.dialogs.IEnableUstEvents#getLogLevelType()
293 public LogLevelType
getLogLevelType() {
295 return fUstComposite
.getLogLevelType();
303 * @see org.eclipse.linuxtools.lttng.ui.views.control.dialogs.IEnableUstEvents#getLogLevel()
306 public TraceLogLevel
getLogLevel() {
308 return fUstComposite
.getLogLevel();
316 * @see org.eclipse.linuxtools.lttng.ui.views.control.dialogs.IEnableUstEvents#getLogLevelEventName()
319 public String
getLogLevelEventName() {
321 return fUstComposite
.getLogLevelEventName();
328 * @see org.eclipse.linuxtools.lttng.ui.views.control.dialogs.IEnableEventsDialog#isKernel()
331 public boolean isKernel() {
335 // ------------------------------------------------------------------------
337 // ------------------------------------------------------------------------
340 * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)
343 protected void configureShell(Shell newShell
) {
344 super.configureShell(newShell
);
345 newShell
.setText(Messages
.TraceControl_EnableEventsDialogTitle
);
346 newShell
.setImage(LTTngUiPlugin
.getDefault().loadIcon(ENABLE_EVENT_ICON_FILE
));
351 * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
354 protected Control
createDialogArea(Composite parent
) {
357 fDialogComposite
= new Composite(parent
, SWT
.NONE
);
358 GridLayout layout
= new GridLayout(1, true);
359 fDialogComposite
.setLayout(layout
);
360 fDialogComposite
.setLayoutData(new GridData(GridData
.FILL_BOTH
));
362 // ------------------------------------------------------------------------
364 // ------------------------------------------------------------------------
365 Group domainGroup
= new Group(fDialogComposite
, SWT
.SHADOW_NONE
);
366 domainGroup
.setText(Messages
.TraceControl_DomainDisplayName
);
367 layout
= new GridLayout(2, true);
368 domainGroup
.setLayout(layout
);
370 fKernelButton
= new Button(domainGroup
, SWT
.RADIO
);
371 fKernelButton
.setText(Messages
.TraceControl_KernelDomainDisplayName
);
372 fKernelButton
.setSelection(fIsKernel
);
373 fUstButton
= new Button(domainGroup
, SWT
.RADIO
);
374 fUstButton
.setText(Messages
.TraceControl_UstDisplayName
);
375 fUstButton
.setSelection(!fIsKernel
);
377 if (fDomain
!= null) {
378 fKernelButton
.setEnabled(false);
379 fUstButton
.setEnabled(false);
383 GridData data
= new GridData(GridData
.FILL_HORIZONTAL
);
384 domainGroup
.setLayoutData(data
);
386 data
= new GridData(SWT
.BEGINNING
, SWT
.BEGINNING
, true, true);
387 fKernelButton
.setLayoutData(data
);
388 data
= new GridData(SWT
.BEGINNING
, SWT
.BEGINNING
, true, true);
389 fUstButton
.setLayoutData(data
);
391 // ------------------------------------------------------------------------
392 // Kernel or UST event data group
393 // ------------------------------------------------------------------------
395 createKernelComposite();
397 createUstComposite();
400 fKernelButton
.addSelectionListener(new SelectionAdapter() {
402 public void widgetSelected(SelectionEvent e
) {
403 if (fKernelButton
.getSelection()) {
404 disposeUstComposite();
405 createKernelComposite();
406 fDialogComposite
.layout();
411 fUstButton
.addSelectionListener(new SelectionAdapter() {
413 public void widgetSelected(SelectionEvent e
) {
414 if (fUstButton
.getSelection()) {
415 disposeKernelComposite();
416 createUstComposite();
417 fDialogComposite
.layout();
422 fDialogComposite
.layout();
424 getShell().setMinimumSize(new Point(500, 650));
426 return fDialogComposite
;
432 * @see org.eclipse.jface.dialogs.Dialog#createButtonsForButtonBar(org.eclipse.swt.widgets.Composite)
435 protected void createButtonsForButtonBar(Composite parent
) {
436 createButton(parent
, IDialogConstants
.OK_ID
, "&Ok", true); //$NON-NLS-1$
441 * @see org.eclipse.jface.dialogs.Dialog#okPressed()
444 protected void okPressed() {
445 if (fKernelButton
.getSelection() == true) {
451 // Validate kernel composite in case of kernel domain
452 if (fKernelComposite
!= null && !fKernelComposite
.isValid()) {
456 // Validate UST composite in case of UST domain
457 if (fUstComposite
!= null && !fUstComposite
.isValid()) {
461 // validation successful -> call super.okPressed()
465 // ------------------------------------------------------------------------
467 // ------------------------------------------------------------------------
469 * Creates the kernel composite (if not existing)
471 private void createKernelComposite() {
472 if (fKernelComposite
== null) {
473 fKernelComposite
= new EnableKernelEventComposite(fDialogComposite
, SWT
.NONE
, fProviderGroup
);
474 GridLayout layout
= new GridLayout(1, true);
475 fKernelComposite
.setLayout(layout
);
476 fKernelComposite
.setLayoutData(new GridData(GridData
.FILL_BOTH
));
478 fKernelComposite
.createContent();
483 * Disposes the kernel composite (if existing)
485 private void disposeKernelComposite() {
486 if (fKernelComposite
!= null) {
487 fKernelComposite
.dispose();
488 fKernelComposite
= null;
493 * Creates the UST composite (if not existing)
495 private void createUstComposite() {
496 if (fUstComposite
== null) {
497 fUstComposite
= new EnableUstEventsComposite(fDialogComposite
, SWT
.NONE
, fProviderGroup
);
498 GridLayout layout
= new GridLayout(1, true);
499 fUstComposite
.setLayout(layout
);
500 fUstComposite
.setLayoutData(new GridData(GridData
.FILL_BOTH
));
502 fUstComposite
.createContent();
507 * Disposes the UST composite (if existing)
509 private void disposeUstComposite() {
510 if (fUstComposite
!= null) {
511 fUstComposite
.dispose();
512 fUstComposite
= null;