Ticket #8413: 8413.patch

File 8413.patch, 3.6 KB (added by simon04, 10 years ago)
  • src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java

    diff --git a/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java b/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java
    index 96dd026..36df02c 100644
    a b public class TaggingPreset extends AbstractAction implements MapView.LayerChange  
    274274        return null;
    275275    }
    276276
     277    static boolean presetInitiallyMatches = false;
     278
    277279    @Override
    278280    public void actionPerformed(ActionEvent e) {
    279281        if (Main.main == null) return;
    280282        if (Main.main.getCurrentDataSet() == null) return;
    281283
    282284        Collection<OsmPrimitive> sel = createSelection(Main.main.getCurrentDataSet().getSelected());
     285        presetInitiallyMatches = !sel.isEmpty() && Utils.forAll(sel, this);
    283286        int answer = showDialog(sel, supportsRelation());
    284287
    285288        if (!sel.isEmpty() && answer == DIALOG_ANSWER_APPLY) {
  • src/org/openstreetmap/josm/gui/tagging/TaggingPresetItems.java

    diff --git a/src/org/openstreetmap/josm/gui/tagging/TaggingPresetItems.java b/src/org/openstreetmap/josm/gui/tagging/TaggingPresetItems.java
    index da1b136..852da09 100644
    a b public final class TaggingPresetItems {  
    596596                }
    597597                else if (!usage.hadKeys() || PROP_FILL_DEFAULT.get() || "force".equals(use_last_as_default)) {
    598598                    // selected osm primitives are untagged or filling default values feature is enabled
    599                     if (!"false".equals(use_last_as_default) && lastValue.containsKey(key)) {
     599                    if (!"false".equals(use_last_as_default) && lastValue.containsKey(key) && !TaggingPreset.presetInitiallyMatches) {
    600600                        textField.setText(lastValue.get(key));
    601601                    } else {
    602602                        textField.setText(default_);
    public final class TaggingPresetItems {  
    12261226            } else if (usage.unused()) {
    12271227                // all items were unset (and so is default)
    12281228                originalValue = lhm.get("");
    1229                 if ("force".equals(use_last_as_default) && lastValue.containsKey(key)) {
     1229                if ("force".equals(use_last_as_default) && lastValue.containsKey(key) && !TaggingPreset.presetInitiallyMatches) {
    12301230                    combo.setSelectedItem(lhm.get(lastValue.get(key)));
    12311231                } else {
    12321232                    combo.setSelectedItem(originalValue);
  • src/org/openstreetmap/josm/tools/Utils.java

    diff --git a/src/org/openstreetmap/josm/tools/Utils.java b/src/org/openstreetmap/josm/tools/Utils.java
    index 67f5ae4..3307859 100644
    a b public final class Utils {  
    6464     */
    6565    public static final Charset UTF_8 = Charset.forName("UTF-8");
    6666
     67    /**
     68     * Tests whether {@code predicate} applies to at least one elements from {@code collection}.
     69     */
    6770    public static <T> boolean exists(Iterable<? extends T> collection, Predicate<? super T> predicate) {
    6871        for (T item : collection) {
    6972            if (predicate.evaluate(item))
    public final class Utils {  
    7275        return false;
    7376    }
    7477
     78    /**
     79     * Tests whether {@code predicate} applies to all elements from {@code collection}.
     80     */
     81    public static <T> boolean forAll(Iterable<? extends T> collection, Predicate<? super T> predicate) {
     82        return !exists(collection, Predicates.not(predicate));
     83    }
     84
    7585    public static <T> boolean exists(Iterable<T> collection, Class<? extends T> klass) {
    7686        for (Object item : collection) {
    7787            if (klass.isInstance(item))