001// License: GPL. For details, see LICENSE file. 002package org.openstreetmap.josm.gui.dialogs.changeset.query; 003 004import static org.openstreetmap.josm.tools.I18n.tr; 005 006import javax.swing.text.JTextComponent; 007 008import org.openstreetmap.josm.gui.widgets.AbstractTextComponentValidator; 009import org.openstreetmap.josm.tools.Utils; 010 011/** 012 * Validator for user ids entered in a {@link JTextComponent}. 013 * @since 11326 (extracted from AdvancedChangesetQueryPanel) 014 */ 015public class UidInputFieldValidator extends AbstractTextComponentValidator { 016 017 /** 018 * Constructs a new {@code TimeValidator} for the given text component. 019 * @param tc text component 020 */ 021 public UidInputFieldValidator(JTextComponent tc) { 022 super(tc); 023 } 024 025 /** 026 * Decorates the given text component. 027 * @param tc text component to decorate 028 * @return new uid validator attached to {@code tc} 029 */ 030 public static UidInputFieldValidator decorate(JTextComponent tc) { 031 return new UidInputFieldValidator(tc); 032 } 033 034 @Override 035 public boolean isValid() { 036 return getUid() > 0; 037 } 038 039 @Override 040 public void validate() { 041 String value = getComponent().getText(); 042 if (Utils.isBlank(value)) { 043 feedbackInvalid(""); 044 return; 045 } 046 try { 047 int uid = Integer.parseInt(value); 048 if (uid <= 0) { 049 feedbackInvalid(tr("The current value is not a valid user ID. Please enter an integer value > 0")); 050 return; 051 } 052 } catch (NumberFormatException e) { 053 feedbackInvalid(tr("The current value is not a valid user ID. Please enter an integer value > 0")); 054 return; 055 } 056 feedbackValid(tr("Please enter an integer value > 0")); 057 } 058 059 /** 060 * Returns the user identifier. 061 * @return the user identifier 062 */ 063 public int getUid() { 064 String value = getComponent().getText(); 065 if (Utils.isBlank(value)) return 0; 066 try { 067 int uid = Integer.parseInt(value.trim()); 068 if (uid > 0) 069 return uid; 070 return 0; 071 } catch (NumberFormatException e) { 072 return 0; 073 } 074 } 075}