// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.gui.dialogs.changeset.query;
import static org.openstreetmap.josm.tools.I18n.tr;
import javax.swing.text.JTextComponent;
import org.openstreetmap.josm.gui.widgets.AbstractTextComponentValidator;
/**
* Validator for user ids entered in a {@link JTextComponent}.
* @since 11326 (extracted from AdvancedChangesetQueryPanel)
*/
public class UidInputFieldValidator extends AbstractTextComponentValidator {
/**
* Constructs a new {@code TimeValidator} for the given text component.
* @param tc text component
*/
public UidInputFieldValidator(JTextComponent tc) {
super(tc);
}
/**
* Decorates the given text component.
* @param tc text component to decorate
* @return new uid validator attached to {@code tc}
*/
public static UidInputFieldValidator decorate(JTextComponent tc) {
return new UidInputFieldValidator(tc);
}
@Override
public boolean isValid() {
return getUid() > 0;
}
@Override
public void validate() {
String value = getComponent().getText();
if (value == null || value.trim().isEmpty()) {
feedbackInvalid("");
return;
}
try {
int uid = Integer.parseInt(value);
if (uid <= 0) {
feedbackInvalid(tr("The current value is not a valid user ID. Please enter an integer value > 0"));
return;
}
} catch (NumberFormatException e) {
feedbackInvalid(tr("The current value is not a valid user ID. Please enter an integer value > 0"));
return;
}
feedbackValid(tr("Please enter an integer value > 0"));
}
/**
* Returns the user identifier.
* @return the user identifier
*/
public int getUid() {
String value = getComponent().getText();
if (value == null || value.trim().isEmpty()) return 0;
try {
int uid = Integer.parseInt(value.trim());
if (uid > 0)
return uid;
return 0;
} catch (NumberFormatException e) {
return 0;
}
}
}