| /********************************************************************** |
| * Copyright (c) 2016 Ericsson |
| * |
| * All rights reserved. This program and the accompanying materials are |
| * made available under the terms of the Eclipse Public License 2.0 which |
| * accompanies this distribution, and is available at |
| * https://www.eclipse.org/legal/epl-2.0/ |
| * |
| * SPDX-License-Identifier: EPL-2.0 |
| * |
| * Contributors: |
| * Bruno Roy - Initial API and implementation |
| **********************************************************************/ |
| package org.eclipse.tracecompass.internal.lttng2.control.ui.views.dialogs; |
| |
| import java.util.Arrays; |
| |
| import org.eclipse.jface.dialogs.Dialog; |
| import org.eclipse.jface.dialogs.IDialogConstants; |
| import org.eclipse.swt.SWT; |
| import org.eclipse.swt.custom.CCombo; |
| import org.eclipse.swt.events.SelectionEvent; |
| import org.eclipse.swt.events.SelectionListener; |
| import org.eclipse.swt.graphics.Point; |
| import org.eclipse.swt.layout.GridData; |
| import org.eclipse.swt.layout.GridLayout; |
| import org.eclipse.swt.widgets.Composite; |
| import org.eclipse.swt.widgets.Control; |
| import org.eclipse.swt.widgets.Group; |
| import org.eclipse.swt.widgets.Shell; |
| import org.eclipse.tracecompass.internal.lttng2.control.ui.Activator; |
| import org.eclipse.tracecompass.internal.lttng2.control.ui.views.messages.Messages; |
| import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.TraceSessionComponent; |
| |
| /** |
| * Base dialog box for collecting information about the event(s) or logger(s) to |
| * enable. |
| * |
| * @author Bruno Roy |
| */ |
| public class BaseGetInfoDialog extends Dialog implements IBaseGetInfoDialog { |
| |
| // ------------------------------------------------------------------------ |
| // Constants |
| // ------------------------------------------------------------------------ |
| /** |
| * The icon file for this dialog box. |
| */ |
| public static final String TARGET_NEW_CONNECTION_ICON_FILE = "icons/elcl16/enable_event.gif"; //$NON-NLS-1$ |
| |
| // ------------------------------------------------------------------------ |
| // Attributes |
| // ------------------------------------------------------------------------ |
| /** |
| * The session combo box. |
| */ |
| protected CCombo fSessionsCombo = null; |
| /** |
| * The list of available sessions. |
| */ |
| protected TraceSessionComponent[] fSessions; |
| /** |
| * Index in session array (selected session). |
| */ |
| protected int fSessionIndex = 0; |
| |
| // ------------------------------------------------------------------------ |
| // Constructors |
| // ------------------------------------------------------------------------ |
| /** |
| * Constructor of dialog box. |
| * |
| * @param shell |
| * the shell for the dialog box |
| */ |
| public BaseGetInfoDialog(Shell shell) { |
| super(shell); |
| setShellStyle(SWT.RESIZE | getShellStyle()); |
| } |
| |
| // ------------------------------------------------------------------------ |
| // Accessors |
| // ------------------------------------------------------------------------ |
| |
| @Override |
| public TraceSessionComponent getSession() { |
| return fSessions[fSessionIndex]; |
| } |
| |
| @Override |
| public void setSessions(TraceSessionComponent[] sessions) { |
| fSessions = Arrays.copyOf(sessions, sessions.length); |
| } |
| |
| // ------------------------------------------------------------------------ |
| // Operations |
| // ------------------------------------------------------------------------ |
| |
| @Override |
| protected void configureShell(Shell newShell) { |
| super.configureShell(newShell); |
| newShell.setText(Messages.TraceControl_EnableEventsDialogTitle); |
| newShell.setImage(Activator.getDefault().loadIcon(TARGET_NEW_CONNECTION_ICON_FILE)); |
| } |
| |
| @Override |
| // Only the component that are common to every type of GetInfoDialog |
| protected Control createDialogArea(Composite parent) { |
| |
| // Main dialog panel |
| Composite dialogComposite = new Composite(parent, SWT.NONE); |
| GridLayout layout = new GridLayout(1, true); |
| dialogComposite.setLayout(layout); |
| dialogComposite.setLayoutData(new GridData(GridData.FILL_BOTH)); |
| |
| // Creating the group for the sessions |
| Group sessionsGroup = new Group(dialogComposite, SWT.SHADOW_NONE); |
| sessionsGroup.setText(Messages.TraceControl_EnableEventsSessionGroupName); |
| layout = new GridLayout(1, true); |
| sessionsGroup.setLayout(layout); |
| GridData data = new GridData(GridData.FILL_HORIZONTAL); |
| sessionsGroup.setLayoutData(data); |
| |
| fSessionsCombo = new CCombo(sessionsGroup, SWT.READ_ONLY); |
| fSessionsCombo.setToolTipText(Messages.TraceControl_EnableEventsSessionsTooltip); |
| fSessionsCombo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); |
| |
| String items[] = new String[fSessions.length]; |
| for (int i = 0; i < items.length; i++) { |
| items[i] = String.valueOf(fSessions[i].getName()); |
| } |
| |
| fSessionsCombo.setItems(items); |
| fSessionsCombo.setEnabled(fSessions.length > 0); |
| |
| // Default listener, should be overrided in the sub classes |
| fSessionsCombo.addSelectionListener(new SelectionListener() { |
| @Override |
| public void widgetSelected(SelectionEvent e) { |
| fSessionIndex = fSessionsCombo.getSelectionIndex(); |
| } |
| |
| @Override |
| public void widgetDefaultSelected(SelectionEvent e) { |
| // Do nothing |
| } |
| }); |
| |
| getShell().setMinimumSize(new Point(300, 200)); |
| |
| return dialogComposite; |
| } |
| |
| @Override |
| protected void createButtonsForButtonBar(Composite parent) { |
| createButton(parent, IDialogConstants.CANCEL_ID, "&Cancel", true); //$NON-NLS-1$ |
| createButton(parent, IDialogConstants.OK_ID, "&Ok", true); //$NON-NLS-1$ |
| } |
| } |