1 /**********************************************************************
2 * Copyright (c) 2012, 2013 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 * Bernd Hufmann - Updated for support of LTTng Tools 2.1
12 **********************************************************************/
13 package org
.eclipse
.linuxtools
.internal
.lttng2
.ui
.views
.control
.dialogs
;
15 import java
.util
.List
;
17 import org
.eclipse
.jface
.dialogs
.Dialog
;
18 import org
.eclipse
.jface
.dialogs
.IDialogConstants
;
19 import org
.eclipse
.linuxtools
.internal
.lttng2
.core
.control
.model
.LogLevelType
;
20 import org
.eclipse
.linuxtools
.internal
.lttng2
.core
.control
.model
.TraceLogLevel
;
21 import org
.eclipse
.linuxtools
.internal
.lttng2
.ui
.Activator
;
22 import org
.eclipse
.linuxtools
.internal
.lttng2
.ui
.views
.control
.messages
.Messages
;
23 import org
.eclipse
.linuxtools
.internal
.lttng2
.ui
.views
.control
.model
.impl
.TraceDomainComponent
;
24 import org
.eclipse
.linuxtools
.internal
.lttng2
.ui
.views
.control
.model
.impl
.TraceProviderGroup
;
25 import org
.eclipse
.swt
.SWT
;
26 import org
.eclipse
.swt
.events
.SelectionAdapter
;
27 import org
.eclipse
.swt
.events
.SelectionEvent
;
28 import org
.eclipse
.swt
.graphics
.Point
;
29 import org
.eclipse
.swt
.layout
.GridData
;
30 import org
.eclipse
.swt
.layout
.GridLayout
;
31 import org
.eclipse
.swt
.widgets
.Button
;
32 import org
.eclipse
.swt
.widgets
.Composite
;
33 import org
.eclipse
.swt
.widgets
.Control
;
34 import org
.eclipse
.swt
.widgets
.Group
;
35 import org
.eclipse
.swt
.widgets
.Shell
;
39 * Dialog box for collecting information events to be enabled.
42 * @author Bernd Hufmann
44 public class EnableEventsDialog
extends Dialog
implements IEnableEventsDialog
{
46 // ------------------------------------------------------------------------
48 // ------------------------------------------------------------------------
51 * The icon file for this dialog box.
53 public static final String ENABLE_EVENT_ICON_FILE
= "icons/elcl16/enable_event.gif"; //$NON-NLS-1$
55 // ------------------------------------------------------------------------
57 // ------------------------------------------------------------------------
59 * The dialog composite.
61 private Composite fDialogComposite
;
63 * The composite with widgets for collecting information about kernel events.
65 private EnableKernelEventComposite fKernelComposite
;
67 * The composite with widgets for collecting information about UST events.
69 private EnableUstEventsComposite fUstComposite
;
71 * Radio button for selecting kernel domain.
73 private Button fKernelButton
;
75 * Radio button for selecting UST domain.
77 private Button fUstButton
;
79 * The referenced trace provider group containing the kernel provider and UST
80 * provider component which contains a list of available tracepoints.
82 private TraceProviderGroup fProviderGroup
;
84 * The parent domain component where the channel node should be added.
85 * Null in case the domain is not known (i.e. on session level).
87 private TraceDomainComponent fDomain
;
89 * Output domain information. True in case of Kernel domain. False for UST.
91 private boolean fIsKernel
;
93 // ------------------------------------------------------------------------
95 // ------------------------------------------------------------------------
98 * @param shell - a shell for the display of the dialog
100 public EnableEventsDialog(Shell shell
) {
102 setShellStyle(SWT
.RESIZE
);
105 // ------------------------------------------------------------------------
107 // ------------------------------------------------------------------------
111 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableKernelEvents#isTracpoints()
114 public boolean isTracepoints() {
116 return fKernelComposite
.isTracepoints();
118 return fUstComposite
.isTracepoints();
122 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableKernelEvents#isAllTracePoints()
125 public boolean isAllTracePoints() {
127 return fKernelComposite
.isAllTracePoints();
129 return fUstComposite
.isAllTracePoints();
134 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableKernelEvents#isSysCalls()
137 public boolean isSysCalls() {
139 return fKernelComposite
.isSysCalls();
145 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableKernelEvents#isAllSysCalls()
148 public boolean isAllSysCalls() {
150 return fKernelComposite
.isSysCalls();
156 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableKernelEvents#getEventNames()
159 public List
<String
> getEventNames() {
161 return fKernelComposite
.getEventNames();
163 return fUstComposite
.getEventNames();
167 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableKernelEvents#isDynamicProbe()
170 public boolean isDynamicProbe() {
172 return fKernelComposite
.isDynamicProbe();
178 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableKernelEvents#getProbeName()
181 public String
getProbeName() {
183 return fKernelComposite
.getProbeName();
189 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableKernelEvents#getProbeEventName()
192 public String
getProbeEventName() {
194 return fKernelComposite
.getProbeEventName();
201 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableKernelEvents#isDynamicFunctionProbe()
204 public boolean isDynamicFunctionProbe() {
206 return fKernelComposite
.isDynamicFunctionProbe();
212 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableKernelEvents#getFunctionEventName()
215 public String
getFunctionEventName() {
217 return fKernelComposite
.getFunctionEventName();
224 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableKernelEvents#getFunction()
227 public String
getFunction() {
229 return fKernelComposite
.getFunction();
236 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableUstEvents#isWildcard()
239 public boolean isWildcard() {
241 return fUstComposite
.isWildcard();
248 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableUstEvents#getWildcard()
251 public String
getWildcard() {
253 return fUstComposite
.getWildcard();
261 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableUstEvents#isLogLevel()
264 public boolean isLogLevel() {
266 return fUstComposite
.isLogLevel();
274 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableUstEvents#getLogLevelType()
277 public LogLevelType
getLogLevelType() {
279 return fUstComposite
.getLogLevelType();
287 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableUstEvents#getLogLevel()
290 public TraceLogLevel
getLogLevel() {
292 return fUstComposite
.getLogLevel();
300 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableUstEvents#getLogLevelEventName()
303 public String
getLogLevelEventName() {
305 return fUstComposite
.getLogLevelEventName();
312 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableEventsDialog#isKernel()
315 public boolean isKernel() {
321 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableEventsDialog#setTraceProviderGroup(org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceProviderGroup)
324 public void setTraceProviderGroup(TraceProviderGroup providerGroup
) {
325 fProviderGroup
= providerGroup
;
330 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableEventsDialog#setTraceDomainComponent(org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceDomainComponent)
333 public void setTraceDomainComponent(TraceDomainComponent domain
) {
335 if (fDomain
!= null) {
336 fIsKernel
= fDomain
.isKernel();
338 fIsKernel
= fProviderGroup
!= null ? fProviderGroup
.hasKernelProvider() : true;
344 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableUstEvents#getFilterExpression()
347 public String
getFilterExpression() {
349 return fUstComposite
.getFilterExpression();
354 // ------------------------------------------------------------------------
356 // ------------------------------------------------------------------------
359 * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)
362 protected void configureShell(Shell newShell
) {
363 super.configureShell(newShell
);
364 newShell
.setText(Messages
.TraceControl_EnableEventsDialogTitle
);
365 newShell
.setImage(Activator
.getDefault().loadIcon(ENABLE_EVENT_ICON_FILE
));
370 * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
373 protected Control
createDialogArea(Composite parent
) {
376 fDialogComposite
= new Composite(parent
, SWT
.NONE
);
377 GridLayout layout
= new GridLayout(1, true);
378 fDialogComposite
.setLayout(layout
);
379 fDialogComposite
.setLayoutData(new GridData(GridData
.FILL_BOTH
));
381 // ------------------------------------------------------------------------
383 // ------------------------------------------------------------------------
384 Group domainGroup
= new Group(fDialogComposite
, SWT
.SHADOW_NONE
);
385 domainGroup
.setText(Messages
.TraceControl_DomainDisplayName
);
386 layout
= new GridLayout(2, true);
387 domainGroup
.setLayout(layout
);
389 fKernelButton
= new Button(domainGroup
, SWT
.RADIO
);
390 fKernelButton
.setText(Messages
.TraceControl_KernelDomainDisplayName
);
391 fKernelButton
.setSelection(fIsKernel
);
392 fUstButton
= new Button(domainGroup
, SWT
.RADIO
);
393 fUstButton
.setText(Messages
.TraceControl_UstDisplayName
);
394 fUstButton
.setSelection(!fIsKernel
);
396 if ((fDomain
!= null) || ((fProviderGroup
!= null) && (!fProviderGroup
.hasKernelProvider()))) {
397 fKernelButton
.setEnabled(false);
398 fUstButton
.setEnabled(false);
402 GridData data
= new GridData(GridData
.FILL_HORIZONTAL
);
403 domainGroup
.setLayoutData(data
);
405 data
= new GridData(SWT
.BEGINNING
, SWT
.BEGINNING
, true, true);
406 fKernelButton
.setLayoutData(data
);
407 data
= new GridData(SWT
.BEGINNING
, SWT
.BEGINNING
, true, true);
408 fUstButton
.setLayoutData(data
);
410 // ------------------------------------------------------------------------
411 // Kernel or UST event data group
412 // ------------------------------------------------------------------------
413 fUstComposite
= null;
414 fKernelComposite
= null;
416 createKernelComposite();
417 fUstComposite
= null;
419 createUstComposite();
422 fKernelButton
.addSelectionListener(new SelectionAdapter() {
424 public void widgetSelected(SelectionEvent e
) {
425 if (fKernelButton
.getSelection()) {
426 disposeUstComposite();
427 createKernelComposite();
428 fDialogComposite
.layout();
433 fUstButton
.addSelectionListener(new SelectionAdapter() {
435 public void widgetSelected(SelectionEvent e
) {
436 if (fUstButton
.getSelection()) {
437 disposeKernelComposite();
438 createUstComposite();
439 fDialogComposite
.layout();
444 fDialogComposite
.layout();
446 getShell().setMinimumSize(new Point(500, 650));
448 return fDialogComposite
;
454 * @see org.eclipse.jface.dialogs.Dialog#createButtonsForButtonBar(org.eclipse.swt.widgets.Composite)
457 protected void createButtonsForButtonBar(Composite parent
) {
458 createButton(parent
, IDialogConstants
.CANCEL_ID
, "&Cancel", true); //$NON-NLS-1$
459 createButton(parent
, IDialogConstants
.OK_ID
, "&Ok", true); //$NON-NLS-1$
464 * @see org.eclipse.jface.dialogs.Dialog#okPressed()
467 protected void okPressed() {
468 fIsKernel
= fKernelButton
.getSelection();
470 // Validate kernel composite in case of kernel domain
471 if (fKernelComposite
!= null && !fKernelComposite
.isValid()) {
475 // Validate UST composite in case of UST domain
476 if (fUstComposite
!= null && !fUstComposite
.isValid()) {
480 // validation successful -> call super.okPressed()
484 // ------------------------------------------------------------------------
486 // ------------------------------------------------------------------------
488 * Creates the kernel composite (if not existing)
490 private void createKernelComposite() {
491 if (fKernelComposite
== null) {
492 fKernelComposite
= new EnableKernelEventComposite(fDialogComposite
, SWT
.NONE
, fProviderGroup
);
493 GridLayout layout
= new GridLayout(1, true);
494 fKernelComposite
.setLayout(layout
);
495 fKernelComposite
.setLayoutData(new GridData(GridData
.FILL_BOTH
));
497 fKernelComposite
.createContent();
502 * Disposes the kernel composite (if existing)
504 private void disposeKernelComposite() {
505 if (fKernelComposite
!= null) {
506 fKernelComposite
.dispose();
507 fKernelComposite
= null;
512 * Creates the UST composite (if not existing)
514 private void createUstComposite() {
515 if (fUstComposite
== null) {
516 fUstComposite
= new EnableUstEventsComposite(fDialogComposite
, SWT
.NONE
, fProviderGroup
);
517 GridLayout layout
= new GridLayout(1, true);
518 fUstComposite
.setLayout(layout
);
519 fUstComposite
.setLayoutData(new GridData(GridData
.FILL_BOTH
));
521 fUstComposite
.createContent();
526 * Disposes the UST composite (if existing)
528 private void disposeUstComposite() {
529 if (fUstComposite
!= null) {
530 fUstComposite
.dispose();
531 fUstComposite
= null;