// License: GPL. For details, see LICENSE file. package reverter; import java.util.Collection; import java.util.Collections; import java.util.StringTokenizer; import java.util.TreeSet; import javax.swing.text.JTextComponent; import org.openstreetmap.josm.gui.widgets.AbstractIdTextField; import org.openstreetmap.josm.gui.widgets.ChangesetIdTextField; public class ChangesetIdsTextField extends AbstractIdTextField<ChangesetIdsTextField.OsmIdsValidator> { public ChangesetIdsTextField() { super(OsmIdsValidator.class); } @Override public boolean readIds() { return validator.readChangesetId(); } public Collection<Integer> getIdsInReverseOrder() { return validator.ids; } public static class OsmIdsValidator extends ChangesetIdTextField.ChangesetIdValidator { private Collection<Integer> ids = new TreeSet<>(Collections.reverseOrder()); public OsmIdsValidator(JTextComponent tc) { super(tc); } @Override public boolean readChangesetId() { ids.clear(); String value = getComponent().getText(); try { final StringTokenizer tokenizer = new StringTokenizer(value, ",.+/ \t\n"); while (tokenizer.hasMoreTokens()) { ids.add(Integer.parseInt(tokenizer.nextToken().trim())); } return true; } catch (NumberFormatException e) { ids.clear(); return false; } } } }