Ticket #5564: DefaultValuesFilling-property_4018.diff

File DefaultValuesFilling-property_4018.diff, 4.5 KB (added by Nakor, 13 years ago)

Patch updated against 4018

  • src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java

     
    5656import org.openstreetmap.josm.data.osm.RelationMember;
    5757import org.openstreetmap.josm.data.osm.Tag;
    5858import org.openstreetmap.josm.data.osm.Way;
     59import org.openstreetmap.josm.data.preferences.BooleanProperty;
    5960import org.openstreetmap.josm.gui.ExtendedDialog;
    6061import org.openstreetmap.josm.gui.MapView;
    6162import org.openstreetmap.josm.gui.QuadStateCheckBox;
     
    113114    public String locale_name;
    114115    public final static String OPTIONAL_TOOLTIP_TEXT = "Optional tooltip text";
    115116    private static File zipIcons = null;
     117    // filling default values for tagged osm primitives feature - see http://josm.openstreetmap.de/ticket/5564
     118    private static final BooleanProperty PROP_FILL_DEFAULT = new BooleanProperty("taggingpreset.fill-default-for-tagged-primitives", false);
    116119
    117120    public static abstract class Item {
    118121        protected void initAutoCompletionField(AutoCompletingTextField field, String key) {
     
    246249            AutoCompletingTextField textField = new AutoCompletingTextField();
    247250            initAutoCompletionField(textField, key);
    248251            if (usage.unused()){
    249                 if (use_last_as_default && lastValue.containsKey(key)) {
    250                     textField.setText(lastValue.get(key));
     252                if (!usage.hadKeys() || PROP_FILL_DEFAULT.get()) {
     253                    // selected osm primitives are untagged or filling default values feature is enabled
     254                    if (use_last_as_default && lastValue.containsKey(key)) {
     255                        textField.setText(lastValue.get(key));
     256                    } else {
     257                        textField.setText(default_);
     258                    }
    251259                } else {
    252                     textField.setText(default_);
     260                    // selected osm primitives are tagged and filling default values feature is disabled
     261                    textField.setText("");
    253262                }
    254263                value = textField;
    255264                originalValue = null;
     
    336345                oneValue = s;
    337346            }
    338347            if (usage.values.size() < 2 && (oneValue == null || value_on.equals(oneValue) || value_off.equals(oneValue))) {
    339                 if(def)
    340                 {
     348                if (def && !PROP_FILL_DEFAULT.get()) {
     349                    // default is set and filling default values feature is disabled - check if all primitives are untagged
    341350                    for (OsmPrimitive s : sel)
    342351                        if(s.hasKeys()) {
    343352                            def = false;
     
    487496            tf.getAutoCompletionList().add(Arrays.asList(display_array), AutoCompletionItemPritority.IS_IN_STANDARD);
    488497            combo.setEditor(tf);
    489498
    490             if (usage.hasUniqueValue() && !usage.unused()){
     499            if (usage.hasUniqueValue()) {
     500                // all items have the same value (and there were no unset items)
    491501                originalValue=lhm.get(usage.getFirst());
     502                combo.setSelectedItem(originalValue);
    492503            }
    493             // use default only in case it is a totally new entry
    494             else if(def != null && !usage.hadKeys()) {
     504            else if (def != null && usage.unused()) {
     505                // default is set and all items were unset
     506                if (!usage.hadKeys() || PROP_FILL_DEFAULT.get()) {
     507                    // selected osm primitives are untagged or filling default feature is enabled
     508                    combo.setSelectedItem(def);
     509                } else {
     510                    // selected osm primitives are tagged and filling default feature is disabled
     511                    combo.setSelectedItem("");
     512                }
    495513                originalValue=lhm.get(DIFFERENT);
    496514            }
    497             else if(usage.unused()){
     515            else if (usage.unused()) {
     516                // all items were unset (and so is default)
    498517                originalValue=lhm.get("");
     518                combo.setSelectedItem(originalValue);
    499519            }
    500             else{
     520            else {
    501521                originalValue=lhm.get(DIFFERENT);
     522                combo.setSelectedItem(originalValue);
    502523            }
    503             combo.setSelectedItem(originalValue);
    504524
    505525            if(locale_text == null) {
    506526                if(text_context != null) {