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
.internal
.lttng2
.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
.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
;
38 * Dialog box for collecting information events to be enabled.
41 * @author Bernd Hufmann
43 public class EnableEventsDialog
extends Dialog
implements IEnableEventsDialog
{
45 // ------------------------------------------------------------------------
47 // ------------------------------------------------------------------------
50 * The icon file for this dialog box.
52 public static final String ENABLE_EVENT_ICON_FILE
= "icons/elcl16/enable_event.gif"; //$NON-NLS-1$
54 // ------------------------------------------------------------------------
56 // ------------------------------------------------------------------------
58 * The dialog composite.
60 private Composite fDialogComposite
;
62 * The composite with widgets for collecting information about kernel events.
64 private EnableKernelEventComposite fKernelComposite
;
66 * The composite with widgets for collecting information about UST events.
68 private EnableUstEventsComposite fUstComposite
;
70 * Radio button for selecting kernel domain.
72 private Button fKernelButton
;
74 * Radio button for selecting UST domain.
76 private Button fUstButton
;
78 * The referenced trace provider group containing the kernel provider and UST
79 * provider component which contains a list of available tracepoints.
81 private TraceProviderGroup fProviderGroup
;
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).
86 private TraceDomainComponent fDomain
;
88 * Output domain information. True in case of Kernel domain. False for UST.
90 private boolean fIsKernel
;
92 // ------------------------------------------------------------------------
94 // ------------------------------------------------------------------------
97 * @param shell - a shell for the display of the dialog
99 public EnableEventsDialog(Shell shell
) {
101 setShellStyle(SWT
.RESIZE
);
104 // ------------------------------------------------------------------------
106 // ------------------------------------------------------------------------
110 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableKernelEvents#isTracpoints()
113 public boolean isTracepoints() {
115 return fKernelComposite
.isTracepoints();
117 return fUstComposite
.isTracepoints();
121 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableKernelEvents#isAllTracePoints()
124 public boolean isAllTracePoints() {
126 return fKernelComposite
.isAllTracePoints();
128 return fUstComposite
.isAllTracePoints();
133 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableKernelEvents#isSysCalls()
136 public boolean isSysCalls() {
138 return fKernelComposite
.isSysCalls();
144 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableKernelEvents#isAllSysCalls()
147 public boolean isAllSysCalls() {
149 return fKernelComposite
.isSysCalls();
155 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableKernelEvents#getEventNames()
158 public List
<String
> getEventNames() {
160 return fKernelComposite
.getEventNames();
162 return fUstComposite
.getEventNames();
166 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableKernelEvents#isDynamicProbe()
169 public boolean isDynamicProbe() {
171 return fKernelComposite
.isDynamicProbe();
177 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableKernelEvents#getProbeName()
180 public String
getProbeName() {
182 return fKernelComposite
.getProbeName();
188 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableKernelEvents#getProbeEventName()
191 public String
getProbeEventName() {
193 return fKernelComposite
.getProbeEventName();
200 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableKernelEvents#isDynamicFunctionProbe()
203 public boolean isDynamicFunctionProbe() {
205 return fKernelComposite
.isDynamicFunctionProbe();
211 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableKernelEvents#getFunctionEventName()
214 public String
getFunctionEventName() {
216 return fKernelComposite
.getFunctionEventName();
223 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableKernelEvents#getFunction()
226 public String
getFunction() {
228 return fKernelComposite
.getFunction();
235 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableUstEvents#isWildcard()
238 public boolean isWildcard() {
240 return fUstComposite
.isWildcard();
247 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableUstEvents#getWildcard()
250 public String
getWildcard() {
252 return fUstComposite
.getWildcard();
260 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableUstEvents#isLogLevel()
263 public boolean isLogLevel() {
265 return fUstComposite
.isLogLevel();
273 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableUstEvents#getLogLevelType()
276 public LogLevelType
getLogLevelType() {
278 return fUstComposite
.getLogLevelType();
286 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableUstEvents#getLogLevel()
289 public TraceLogLevel
getLogLevel() {
291 return fUstComposite
.getLogLevel();
299 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableUstEvents#getLogLevelEventName()
302 public String
getLogLevelEventName() {
304 return fUstComposite
.getLogLevelEventName();
311 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableEventsDialog#isKernel()
314 public boolean isKernel() {
320 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableEventsDialog#setTraceProviderGroup(org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceProviderGroup)
323 public void setTraceProviderGroup(TraceProviderGroup providerGroup
) {
324 fProviderGroup
= providerGroup
;
329 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableEventsDialog#setTraceDomainComponent(org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceDomainComponent)
332 public void setTraceDomainComponent(TraceDomainComponent domain
) {
334 if (fDomain
!= null) {
335 fIsKernel
= fDomain
.isKernel();
337 fIsKernel
= fProviderGroup
!= null ? fProviderGroup
.hasKernelProvider() : true;
343 * @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.dialogs.IEnableUstEvents#getFilterExpression()
346 public String
getFilterExpression() {
348 return fUstComposite
.getFilterExpression();
353 // ------------------------------------------------------------------------
355 // ------------------------------------------------------------------------
358 * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)
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
));
369 * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
372 protected Control
createDialogArea(Composite parent
) {
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
));
380 // ------------------------------------------------------------------------
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
);
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
);
395 if ((fDomain
!= null) || ((fProviderGroup
!= null) && (!fProviderGroup
.hasKernelProvider()))) {
396 fKernelButton
.setEnabled(false);
397 fUstButton
.setEnabled(false);
401 GridData data
= new GridData(GridData
.FILL_HORIZONTAL
);
402 domainGroup
.setLayoutData(data
);
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
);
409 // ------------------------------------------------------------------------
410 // Kernel or UST event data group
411 // ------------------------------------------------------------------------
412 fUstComposite
= null;
413 fKernelComposite
= null;
415 createKernelComposite();
416 fUstComposite
= null;
418 createUstComposite();
421 fKernelButton
.addSelectionListener(new SelectionAdapter() {
423 public void widgetSelected(SelectionEvent e
) {
424 if (fKernelButton
.getSelection()) {
425 disposeUstComposite();
426 createKernelComposite();
427 fDialogComposite
.layout();
432 fUstButton
.addSelectionListener(new SelectionAdapter() {
434 public void widgetSelected(SelectionEvent e
) {
435 if (fUstButton
.getSelection()) {
436 disposeKernelComposite();
437 createUstComposite();
438 fDialogComposite
.layout();
443 fDialogComposite
.layout();
445 getShell().setMinimumSize(new Point(500, 650));
447 return fDialogComposite
;
453 * @see org.eclipse.jface.dialogs.Dialog#createButtonsForButtonBar(org.eclipse.swt.widgets.Composite)
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$
463 * @see org.eclipse.jface.dialogs.Dialog#okPressed()
466 protected void okPressed() {
467 fIsKernel
= fKernelButton
.getSelection();
469 // Validate kernel composite in case of kernel domain
470 if (fKernelComposite
!= null && !fKernelComposite
.isValid()) {
474 // Validate UST composite in case of UST domain
475 if (fUstComposite
!= null && !fUstComposite
.isValid()) {
479 // validation successful -> call super.okPressed()
483 // ------------------------------------------------------------------------
485 // ------------------------------------------------------------------------
487 * Creates the kernel composite (if not existing)
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
));
496 fKernelComposite
.createContent();
501 * Disposes the kernel composite (if existing)
503 private void disposeKernelComposite() {
504 if (fKernelComposite
!= null) {
505 fKernelComposite
.dispose();
506 fKernelComposite
= null;
511 * Creates the UST composite (if not existing)
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
));
520 fUstComposite
.createContent();
525 * Disposes the UST composite (if existing)
527 private void disposeUstComposite() {
528 if (fUstComposite
!= null) {
529 fUstComposite
.dispose();
530 fUstComposite
= null;