| /********************************************************************** |
| * Copyright (c) 2005, 2014 IBM Corporation, 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: |
| * IBM - Initial API and implementation |
| * Bernd Hufmann - Updated for TMF |
| **********************************************************************/ |
| |
| package org.eclipse.tracecompass.tmf.ui.views.uml2sd.dialogs; |
| |
| import org.eclipse.jface.dialogs.Dialog; |
| import org.eclipse.jface.dialogs.IDialogConstants; |
| import org.eclipse.swt.SWT; |
| import org.eclipse.swt.events.SelectionEvent; |
| import org.eclipse.swt.events.SelectionListener; |
| 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.Label; |
| import org.eclipse.swt.widgets.Shell; |
| import org.eclipse.swt.widgets.Text; |
| import org.eclipse.tracecompass.tmf.core.timestamp.TmfTimestamp; |
| import org.eclipse.tracecompass.tmf.ui.project.model.TraceUtils; |
| import org.eclipse.tracecompass.tmf.ui.views.uml2sd.SDWidget; |
| import org.eclipse.tracecompass.tmf.ui.views.uml2sd.util.Messages; |
| |
| /** |
| * Dialog box for entering minimum and maximum time range for time compression bar. |
| * |
| * @version 1.0 |
| * @author sveyrier |
| * @author Bernd Hufmann |
| * |
| */ |
| public class MinMaxDialog extends Dialog { |
| |
| // ------------------------------------------------------------------------ |
| // Attributes |
| // ------------------------------------------------------------------------ |
| /** |
| * Text field for minimum. |
| */ |
| private Text fMinText; |
| /** |
| * Text field for maximum. |
| */ |
| private Text fMaxText; |
| /** |
| * Text field for scale. |
| */ |
| private Text fScaleText; |
| /** |
| * Text field for precision (legacy, value will be ignored). |
| */ |
| private Text fPrecisionText; |
| /** |
| * The sequence diagram widget reference. |
| */ |
| private SDWidget fSdWidget; |
| |
| // ------------------------------------------------------------------------ |
| // Constructor |
| // ------------------------------------------------------------------------ |
| /** |
| * Standard constructor. |
| * @param shell The shell |
| * @param viewer The sequence diagram widget reference. |
| */ |
| public MinMaxDialog(Shell shell, SDWidget viewer) { |
| super(shell); |
| fSdWidget = viewer; |
| } |
| |
| // ------------------------------------------------------------------------ |
| // Methods |
| // ------------------------------------------------------------------------ |
| /** |
| * Method to create a grid data base on horizontal span. |
| * @param span The horizontal span |
| * @return a grid data object |
| */ |
| protected GridData newGridData(int span) { |
| GridData data = new GridData(GridData.GRAB_VERTICAL | GridData.VERTICAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL); |
| data.horizontalSpan = span; |
| return data; |
| } |
| |
| @Override |
| protected Control createDialogArea(Composite p) { |
| p.getShell().setText(Messages.SequenceDiagram_TimeCompressionBarConfig); |
| Composite parent = (Composite) super.createDialogArea(p); |
| |
| GridLayout parentLayout = new GridLayout(); |
| parentLayout.numColumns = 6; |
| parent.setLayout(parentLayout); |
| |
| Group g1 = new Group(parent, SWT.SHADOW_NONE); |
| g1.setLayoutData(newGridData(3)); |
| GridLayout g1layout = new GridLayout(); |
| g1layout.numColumns = 3; |
| g1.setLayout(g1layout); |
| |
| Label minLabel = new Label(g1, SWT.RADIO); |
| minLabel.setText(Messages.SequenceDiagram_MinTime); |
| minLabel.setLayoutData(newGridData(1)); |
| |
| fMinText = new Text(g1, SWT.SINGLE | SWT.BORDER); |
| fMinText.setLayoutData(newGridData(2)); |
| fMinText.setText(String.valueOf(fSdWidget.getFrame().getMinTime().getValue())); |
| |
| Label maxLabel = new Label(g1, SWT.RADIO); |
| maxLabel.setText(Messages.SequenceDiagram_MaxTime); |
| maxLabel.setLayoutData(newGridData(1)); |
| |
| fMaxText = new Text(g1, SWT.SINGLE | SWT.BORDER); |
| fMaxText.setLayoutData(newGridData(2)); |
| fMaxText.setText(String.valueOf(fSdWidget.getFrame().getMaxTime().getValue())); |
| |
| Label scaleLabel = new Label(g1, SWT.RADIO); |
| scaleLabel.setText(Messages.SequenceDiagram_Scale); |
| scaleLabel.setLayoutData(newGridData(1)); |
| |
| fScaleText = new Text(g1, SWT.SINGLE | SWT.BORDER); |
| fScaleText.setLayoutData(newGridData(2)); |
| fScaleText.setText(String.valueOf(fSdWidget.getFrame().getMinTime().getScale())); |
| |
| |
| Label precisionLabel = new Label(g1, SWT.RADIO); |
| precisionLabel.setText(Messages.SequenceDiagram_Precision); |
| precisionLabel.setLayoutData(newGridData(1)); |
| |
| fPrecisionText = new Text(g1, SWT.SINGLE | SWT.BORDER); |
| fPrecisionText.setLayoutData(newGridData(2)); |
| fPrecisionText.setText(String.valueOf(0)); |
| |
| return parent; |
| } |
| |
| @Override |
| protected void okPressed() { |
| long min = 0; |
| long max = 0; |
| int scale = 0; |
| try { |
| min = Long.parseLong(fMinText.getText()); |
| max = Long.parseLong(fMaxText.getText()); |
| scale = Integer.parseInt(fScaleText.getText()); |
| |
| fSdWidget.getFrame().setMax(TmfTimestamp.create(max, scale)); |
| fSdWidget.getFrame().setMin(TmfTimestamp.create(min, scale)); |
| |
| fSdWidget.redraw(); |
| |
| super.okPressed(); |
| } catch (Exception e) { |
| TraceUtils.displayErrorMsg(Messages.SequenceDiagram_Error, Messages.SequenceDiagram_InvalidRange); |
| } |
| } |
| |
| @Override |
| protected void createButtonsForButtonBar(Composite parent) { |
| super.createButtonsForButtonBar(parent); |
| createButton(parent, IDialogConstants.CLIENT_ID, Messages.SequenceDiagram_Default, false); |
| getButton(IDialogConstants.CLIENT_ID).addSelectionListener(new SelectionListener() { |
| |
| @Override |
| public void widgetSelected(SelectionEvent e) { |
| fSdWidget.getFrame().resetCustomMinMax(); |
| fMinText.setText(String.valueOf(fSdWidget.getFrame().getMinTime().getValue())); |
| fMaxText.setText(String.valueOf(fSdWidget.getFrame().getMaxTime().getValue())); |
| fScaleText.setText(String.valueOf(fSdWidget.getFrame().getMinTime().getScale())); |
| fPrecisionText.setText(String.valueOf(0)); |
| fMaxText.getParent().layout(true); |
| } |
| |
| @Override |
| public void widgetDefaultSelected(SelectionEvent e) { |
| // nothing to do |
| } |
| }); |
| } |
| } |