blob: 4618f742c44065bed2131365dfad3cf7f87bcc62 [file] [log] [blame]
/**********************************************************************
* 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$
}
}