1 /**********************************************************************
2 * Copyright (c) 2005, 2013 IBM Corporation, Ericsson
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/epl-v10.html
9 * IBM - Initial API and implementation
10 * Bernd Hufmann - Updated for TMF
11 **********************************************************************/
13 package org
.eclipse
.linuxtools
.tmf
.ui
.views
.uml2sd
.dialogs
;
15 import org
.eclipse
.jface
.dialogs
.Dialog
;
16 import org
.eclipse
.jface
.dialogs
.IDialogConstants
;
17 import org
.eclipse
.jface
.dialogs
.MessageDialog
;
18 import org
.eclipse
.linuxtools
.tmf
.core
.timestamp
.TmfTimestamp
;
19 import org
.eclipse
.linuxtools
.tmf
.ui
.views
.uml2sd
.SDWidget
;
20 import org
.eclipse
.linuxtools
.tmf
.ui
.views
.uml2sd
.util
.Messages
;
21 import org
.eclipse
.swt
.SWT
;
22 import org
.eclipse
.swt
.events
.SelectionEvent
;
23 import org
.eclipse
.swt
.events
.SelectionListener
;
24 import org
.eclipse
.swt
.layout
.GridData
;
25 import org
.eclipse
.swt
.layout
.GridLayout
;
26 import org
.eclipse
.swt
.widgets
.Composite
;
27 import org
.eclipse
.swt
.widgets
.Control
;
28 import org
.eclipse
.swt
.widgets
.Group
;
29 import org
.eclipse
.swt
.widgets
.Label
;
30 import org
.eclipse
.swt
.widgets
.Shell
;
31 import org
.eclipse
.swt
.widgets
.Text
;
34 * Dialog box for entering minimum and maximum time range for time compression bar.
38 * @author Bernd Hufmann
41 public class MinMaxDialog
extends Dialog
{
43 // ------------------------------------------------------------------------
45 // ------------------------------------------------------------------------
49 protected Label fMinLabel
;
53 protected Label fMaxLabel
;
57 protected Label fScaleLabel
;
59 * Label for precision.
61 protected Label fPrecisionLabel
;
63 * Text field for minimum.
65 protected Text fMinText
;
67 * Text field for maximum.
69 protected Text fMaxText
;
71 * Text field for scale.
73 protected Text fScaleText
;
75 * Text field for precision.
77 protected Text fPrecisionText
;
79 * The sequence diagram widget reference.
81 protected SDWidget fSdWidget
;
83 // ------------------------------------------------------------------------
85 // ------------------------------------------------------------------------
87 * Standard constructor.
88 * @param shell The shell
89 * @param viewer The sequence diagram widget reference.
91 public MinMaxDialog(Shell shell
, SDWidget viewer
) {
96 // ------------------------------------------------------------------------
98 // ------------------------------------------------------------------------
100 * Method to create a grid data base on horizontal span.
101 * @param span The horizontal span
102 * @return a grid data object
104 protected GridData
newGridData(int span
) {
105 GridData data
= new GridData(GridData
.GRAB_VERTICAL
| GridData
.VERTICAL_ALIGN_FILL
| GridData
.GRAB_HORIZONTAL
| GridData
.HORIZONTAL_ALIGN_FILL
);
106 data
.horizontalSpan
= span
;
111 protected Control
createDialogArea(Composite p
) {
112 p
.getShell().setText(Messages
.SequenceDiagram_TimeCompressionBarConfig
);
113 Composite parent
= (Composite
) super.createDialogArea(p
);
115 GridLayout parentLayout
= new GridLayout();
116 parentLayout
.numColumns
= 6;
117 parent
.setLayout(parentLayout
);
119 Group g1
= new Group(parent
, SWT
.SHADOW_NONE
);
120 g1
.setLayoutData(newGridData(3));
121 GridLayout g1layout
= new GridLayout();
122 g1layout
.numColumns
= 3;
123 g1
.setLayout(g1layout
);
125 fMinLabel
= new Label(g1
, SWT
.RADIO
);
126 fMinLabel
.setText(Messages
.SequenceDiagram_MinTime
);
127 fMinLabel
.setLayoutData(newGridData(1));
129 fMinText
= new Text(g1
, SWT
.SINGLE
| SWT
.BORDER
);
130 fMinText
.setLayoutData(newGridData(2));
131 fMinText
.setText(String
.valueOf(fSdWidget
.getFrame().getMinTime().getValue()));
133 fMaxLabel
= new Label(g1
, SWT
.RADIO
);
134 fMaxLabel
.setText(Messages
.SequenceDiagram_MaxTime
);
135 fMaxLabel
.setLayoutData(newGridData(1));
137 fMaxText
= new Text(g1
, SWT
.SINGLE
| SWT
.BORDER
);
138 fMaxText
.setLayoutData(newGridData(2));
139 fMaxText
.setText(String
.valueOf(fSdWidget
.getFrame().getMaxTime().getValue()));
141 fScaleLabel
= new Label(g1
, SWT
.RADIO
);
142 fScaleLabel
.setText(Messages
.SequenceDiagram_Scale
);
143 fScaleLabel
.setLayoutData(newGridData(1));
145 fScaleText
= new Text(g1
, SWT
.SINGLE
| SWT
.BORDER
);
146 fScaleText
.setLayoutData(newGridData(2));
147 fScaleText
.setText(String
.valueOf(fSdWidget
.getFrame().getMinTime().getScale()));
150 fPrecisionLabel
= new Label(g1
, SWT
.RADIO
);
151 fPrecisionLabel
.setText(Messages
.SequenceDiagram_Precision
);
152 fPrecisionLabel
.setLayoutData(newGridData(1));
154 fPrecisionText
= new Text(g1
, SWT
.SINGLE
| SWT
.BORDER
);
155 fPrecisionText
.setLayoutData(newGridData(2));
156 fPrecisionText
.setText(String
.valueOf(fSdWidget
.getFrame().getMinTime().getPrecision()));
162 protected void okPressed() {
168 min
= Long
.parseLong(fMinText
.getText());
169 max
= Long
.parseLong(fMaxText
.getText());
170 scale
= Integer
.parseInt(fScaleText
.getText());
171 precision
= Integer
.parseInt(fPrecisionText
.getText());
173 fSdWidget
.getFrame().setMax(new TmfTimestamp(max
, scale
, precision
));
174 fSdWidget
.getFrame().setMin(new TmfTimestamp(min
, scale
, precision
));
179 } catch (Exception e
) {
180 MessageDialog
.openError(getShell(), Messages
.SequenceDiagram_Error
, Messages
.SequenceDiagram_InvalidRange
);
185 protected void createButtonsForButtonBar(Composite parent
) {
186 super.createButtonsForButtonBar(parent
);
187 createButton(parent
, IDialogConstants
.CLIENT_ID
, Messages
.SequenceDiagram_Default
, false);
188 getButton(IDialogConstants
.CLIENT_ID
).addSelectionListener(new SelectionListener() {
191 public void widgetSelected(SelectionEvent e
) {
192 fSdWidget
.getFrame().resetCustomMinMax();
193 fMinText
.setText(String
.valueOf(fSdWidget
.getFrame().getMinTime().getValue()));
194 fMaxText
.setText(String
.valueOf(fSdWidget
.getFrame().getMaxTime().getValue()));
195 fScaleText
.setText(String
.valueOf(fSdWidget
.getFrame().getMinTime().getScale()));
196 fPrecisionText
.setText(String
.valueOf(fSdWidget
.getFrame().getMinTime().getPrecision()));
197 fMaxText
.getParent().layout(true);
201 public void widgetDefaultSelected(SelectionEvent e
) {