X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.simulation.ui%2Fsrc%2Forg%2Fsimantics%2Fsimulation%2Fui%2Fhandlers%2Fe4%2FTimeInputDialog.java;fp=bundles%2Forg.simantics.simulation.ui%2Fsrc%2Forg%2Fsimantics%2Fsimulation%2Fui%2Fhandlers%2Fe4%2FTimeInputDialog.java;h=e2615b6eb86dfb45fbcdc05425167afffab9dd42;hb=ca59190923cb45fbcde8d18d78c9c1418c1f0471;hp=0000000000000000000000000000000000000000;hpb=5e340942bc7de041b75c6ba281617eb0c800f30a;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.simulation.ui/src/org/simantics/simulation/ui/handlers/e4/TimeInputDialog.java b/bundles/org.simantics.simulation.ui/src/org/simantics/simulation/ui/handlers/e4/TimeInputDialog.java new file mode 100644 index 000000000..e2615b6eb --- /dev/null +++ b/bundles/org.simantics.simulation.ui/src/org/simantics/simulation/ui/handlers/e4/TimeInputDialog.java @@ -0,0 +1,60 @@ +package org.simantics.simulation.ui.handlers.e4; + +import java.text.ParseException; + +import org.eclipse.jface.dialogs.InputDialog; +import org.eclipse.osgi.util.NLS; +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.swt.widgets.Text; +import org.simantics.simulation.experiment.SimulationTimeUtil; + +/** + * @author Tuukka Lehtonen + */ +public class TimeInputDialog extends InputDialog { + + private Text statusText; + + public TimeInputDialog(Shell parentShell, String dialogTitle, String topic, String initialValue) { + super(parentShell, dialogTitle, message(topic), initialValue, new TimeValidator()); + } + + @Override + protected Control createDialogArea(Composite parent) { + Composite composite = (Composite) super.createDialogArea(parent); + + statusText = new Text(composite, SWT.READ_ONLY | SWT.WRAP); + statusText.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL + | GridData.HORIZONTAL_ALIGN_FILL)); + + return composite; + } + + @Override + protected void validateInput() { + super.validateInput(); + + try { + double t = (double) SimulationTimeUtil.getTimeFormat().parseObject(getText().getText()); + statusText.setText(statusMessage(t)); + } catch (ParseException e) { + statusText.setText(""); + } + } + + private static String message(String topic) { + return NLS.bind("Give {0} in seconds or timestamp format ([Yy] [Dd] HH:mm:ss.ddd)", topic); + } + + private static String statusMessage(double time) { + return NLS.bind( + "Specified time is {0} s ({1})", + SimulationTimeUtil.formatSeconds(time), + SimulationTimeUtil.formatHMSS(time)); + } + +}