package org.openstreetmap.josm.plugins.importvec;
import static org.openstreetmap.josm.tools.I18n.tr;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.text.NumberFormat;
import java.text.ParseException;
import javax.swing.JFormattedTextField;
import javax.swing.JLabel;
import javax.swing.JPanel;
import org.openstreetmap.josm.Main;
import org.openstreetmap.josm.gui.ExtendedDialog;
import org.openstreetmap.josm.tools.GBC;
public class ImportDialog extends ExtendedDialog {
private JFormattedTextField tsdiv = new JFormattedTextField(NumberFormat.getInstance());
private JFormattedTextField tsnum = new JFormattedTextField(NumberFormat.getInstance());
private JFormattedTextField tsteps = new JFormattedTextField(NumberFormat.getIntegerInstance());
public ImportDialog() {
super(Main.parent, tr("Import vector graphics"),
new String[] { tr("OK"), tr("Cancel") },
true);
contentInsets = new Insets(15, 15, 5, 15);
setButtonIcons(new String[] { "ok.png", "cancel.png" });
final JPanel panel = new JPanel(new GridBagLayout());
panel.add(new JLabel(tr("Scale:")), GBC.eol().fill(GBC.HORIZONTAL));
final JPanel pscale = new JPanel(new GridBagLayout());
pscale.add(tsdiv,GBC.std().fill(GBC.HORIZONTAL));
pscale.add(new JLabel(tr("unit(s) = ")),GBC.std().insets(10, 0, 0, 0));
pscale.add(tsnum,GBC.std().fill(GBC.HORIZONTAL));
pscale.add(new JLabel(tr("m")),GBC.std().insets(10, 0, 0, 0));
panel.add(pscale,GBC.eop().fill(GBC.HORIZONTAL));
final JLabel label = new JLabel("Curve steps:");
panel.add(label, GBC.std());
label.setLabelFor(tsteps);
panel.add(tsteps, GBC.eol().fill(GBC.HORIZONTAL));
tsnum.setValue(Settings.getScaleNumerator());
tsdiv.setValue(Settings.getScaleDivisor());
tsteps.setValue(Settings.getCurveSteps());
setContent(panel);
setupDialog();
setVisible(true);
}
public double getScaleNumerator() {
try {
return NumberFormat.getInstance().parse(tsnum.getText()).doubleValue();
} catch (ParseException e) {
return 1;
}
}
public double getScaleDivisor() {
try {
double result = NumberFormat.getInstance().parse(tsdiv.getText()).doubleValue();
if (result <= 0.0001)
return 1;
return result;
} catch (ParseException e) {
return 1;
}
}
public int getCurveSteps() {
try {
int result = NumberFormat.getIntegerInstance().parse(tsteps.getText()).intValue();
if (result < 1)
return 1;
return result;
} catch (ParseException e) {
return 4;
}
}
public void saveSettings() {
Settings.setScaleNumerator(getScaleNumerator());
Settings.setScaleDivisor(getScaleDivisor());
Settings.setCurveSteps(getCurveSteps());
}
}