Ticket #5564: DefaultValuesFilling-property.diff

File DefaultValuesFilling-property.diff, 4.6 KB (added by AlfonZ, 14 years ago)

patch for filling default values controlled by property

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

     
    5151import org.openstreetmap.josm.data.osm.RelationMember;
    5252import org.openstreetmap.josm.data.osm.Tag;
    5353import org.openstreetmap.josm.data.osm.Way;
     54import org.openstreetmap.josm.data.preferences.BooleanProperty;
    5455import org.openstreetmap.josm.gui.ExtendedDialog;
    5556import org.openstreetmap.josm.gui.MapView;
    5657import org.openstreetmap.josm.gui.QuadStateCheckBox;
     
    104105    public String locale_name;
    105106    public final static String OPTIONAL_TOOLTIP_TEXT = "Optional tooltip text";
    106107    private static File zipIcons = null;
     108    // filling default values for tagged osm primitives feature - see http://josm.openstreetmap.de/ticket/5564
     109    private static final BooleanProperty PROP_FILL_DEFAULT = new BooleanProperty("taggingpreset.fill-default-for-tagged-primitives", false);
    107110
    108111    public static abstract class Item {
    109112        protected void initAutoCompletionField(AutoCompletingTextField field, String key) {
     
    192195            AutoCompletingTextField textField = new AutoCompletingTextField();
    193196            initAutoCompletionField(textField, key);
    194197            if (usage.unused()){
    195                 if (use_last_as_default && lastValue.containsKey(key)) {
    196                     textField.setText(lastValue.get(key));
     198                if (!usage.hadKeys() || PROP_FILL_DEFAULT.get()) {
     199                    // selected osm primitives are untagged or filling default values feature is enabled
     200                    if (use_last_as_default && lastValue.containsKey(key)) {
     201                        textField.setText(lastValue.get(key));
     202                    } else {
     203                        textField.setText(default_);
     204                    }
    197205                } else {
    198                     textField.setText(default_);
     206                    // selected osm primitives are tagged and filling default values feature is disabled
     207                    textField.setText("");
    199208                }
    200209                value = textField;
    201210                originalValue = null;
     
    282291                oneValue = s;
    283292            }
    284293            if (usage.values.size() < 2 && (oneValue == null || value_on.equals(oneValue) || value_off.equals(oneValue))) {
    285                 if(def)
    286                 {
     294                if (def && !PROP_FILL_DEFAULT.get()) {
     295                    // default is set and filling default values feature is disabled - check if all primitives are untagged
    287296                    for (OsmPrimitive s : sel)
    288297                        if(s.hasKeys()) {
    289298                            def = false;
     
    412421            tf.getAutoCompletionList().add(Arrays.asList(display_array), AutoCompletionItemPritority.IS_IN_STANDARD);
    413422            combo.setEditor(tf);
    414423
    415             if (usage.hasUniqueValue() && !usage.unused()){
    416                 originalValue=usage.getFirst();
     424            if (usage.hasUniqueValue()) {
     425                // all items have the same value (and there were no unset items)
     426                originalValue = usage.getFirst();
    417427                combo.setSelectedItem(lhm.get(originalValue));
    418428            }
    419             // use default only in case it is a totally new entry
    420             else if(def != null && !usage.hadKeys()) {
    421                 combo.setSelectedItem(def);
    422                 originalValue=DIFFERENT;
     429            else if (def != null && usage.unused()) {
     430                // default is set and all items were unset
     431                if (!usage.hadKeys() || PROP_FILL_DEFAULT.get()) {
     432                    // selected osm primitives are untagged or filling default feature is enabled
     433                    combo.setSelectedItem(def);
     434                } else {
     435                    // selected osm primitives are tagged and filling default feature is disabled
     436                    combo.setSelectedItem("");
     437                }
     438                originalValue = DIFFERENT;
    423439            }
    424             else if(usage.unused()){
     440            else if (usage.unused()) {
     441                // all items were unset (and so is default)
    425442                combo.setSelectedItem("");
    426                 originalValue="";
     443                originalValue = "";
    427444            }
    428             else{
     445            else {
    429446                combo.setSelectedItem(DIFFERENT);
    430                 originalValue=DIFFERENT;
     447                originalValue = DIFFERENT;
    431448            }
    432449
    433450            if(locale_text == null) {