// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.gui.widgets;
import static org.openstreetmap.josm.tools.I18n.tr;
import javax.swing.JTextField;
import javax.swing.text.JTextComponent;
/**
* @author Matthias Julius
*/
public class OsmIdTextField extends JTextField {
private OsmIdValidator validator;
public OsmIdTextField() {
validator = OsmIdValidator.decorate(this);
}
public int getOsmId() {
return validator.getOsmId();
}
/**
* Validator for a changeset ID entered in a {@see JTextComponent}.
*
*/
static private class OsmIdValidator extends AbstractTextComponentValidator {
static public OsmIdValidator decorate(JTextComponent tc) {
return new OsmIdValidator(tc);
}
public OsmIdValidator(JTextComponent tc) {
super(tc, false);
}
@Override
public boolean isValid() {
return getOsmId() > 0;
}
@Override
public void validate() {
if (!isValid()) {
feedbackInvalid(tr("The current value is not a valid OSM ID. Please enter an integer value > 0"));
} else {
feedbackValid(tr("Please enter an integer value > 0"));
}
}
public int getOsmId() {
String value = getComponent().getText();
if (value == null || value.trim().length() == 0) return 0;
try {
int osmId = Integer.parseInt(value.trim());
if (osmId > 0) return osmId;
return 0;
} catch(NumberFormatException e) {
return 0;
}
}
}
}