package org.jactr.eclipse.ui.generic.dialog; /* * default logging */ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.eclipse.jface.dialogs.IMessageProvider; import org.eclipse.jface.dialogs.TitleAreaDialog; import org.eclipse.swt.SWT; 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.Label; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; /** * general filterable dialog. * * @author harrison */ public class NumericInputDialog extends TitleAreaDialog { /** * Logger definition */ static private final transient Log LOGGER = LogFactory .getLog(NumericInputDialog.class); private String _title; private String _message; private Text _field; double _value; public NumericInputDialog(Shell parentShell, String title, String message, double defaultValue) { super(parentShell); _title = title; _message = message; _value = defaultValue; } @Override public void create() { super.create(); setTitle(_title); setMessage(_message, IMessageProvider.INFORMATION); } @Override protected boolean isResizable() { return false; } @Override protected Control createDialogArea(Composite parent) { Composite area = (Composite) super.createDialogArea(parent); Composite container = new Composite(area, SWT.NONE); container.setLayoutData(new GridData(GridData.FILL_BOTH)); GridLayout layout = new GridLayout(2, false); container.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); container.setLayout(layout); createField(container); return area; } private void createField(Composite container) { Label lbtFirstName = new Label(container, SWT.NONE); lbtFirstName.setText("Value"); GridData dataFirstName = new GridData(); dataFirstName.grabExcessHorizontalSpace = true; dataFirstName.horizontalAlignment = GridData.FILL; _field = new Text(container, SWT.BORDER); _field.setLayoutData(dataFirstName); _field.setText(Double.toString(_value)); } public double getValue() { return _value; } @Override protected void okPressed() { try { _value = Double.parseDouble(_field.getText()); } catch (Exception e) { _value = 0; } super.okPressed(); } }