Ignore:
Timestamp:
2009-12-19T12:55:50+01:00 (14 years ago)
Author:
jttt
Message:

Cache list of used tags in properties dialog (faster adding of keys in large datasets)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java

    r2656 r2657  
    717717     */
    718718    public void setKeys(Map<String, String> keys) {
     719        Map<String, String> originalKeys = getKeys();
    719720        if (keys == null) {
    720721            this.keys = null;
     722            keysChangedImpl(originalKeys);
    721723            return;
    722724        }
     
    728730        }
    729731        this.keys = newKeys;
    730         keysChangedImpl();
     732        keysChangedImpl(originalKeys);
    731733    }
    732734
     
    741743     */
    742744    public final void put(String key, String value) {
     745        Map<String, String> originalKeys = getKeys();
    743746        if (key == null)
    744747            return;
     
    747750        } else if (keys == null || keys.length == 0){
    748751            keys = new String[] {key, value};
    749             keysChangedImpl();
     752            keysChangedImpl(originalKeys);
    750753        } else {
    751754            for (int i=0; i<keys.length;i+=2) {
    752755                if (keys[i].equals(key)) {
    753756                    keys[i+1] = value;
    754                     keysChangedImpl();
     757                    keysChangedImpl(originalKeys);
    755758                    return;
    756759                }
     
    764767            newKeys[keys.length + 1] = value;
    765768            keys = newKeys;
    766             keysChangedImpl();
     769            keysChangedImpl(originalKeys);
    767770        }
    768771    }
     
    776779        if (!hasKey(key))
    777780            return;
     781        Map<String, String> originalKeys = getKeys();
    778782        if (keys.length == 2) {
    779783            keys = null;
    780             keysChangedImpl();
     784            keysChangedImpl(originalKeys);
    781785            return;
    782786        }
     
    790794        }
    791795        keys = newKeys;
    792         keysChangedImpl();
     796        keysChangedImpl(originalKeys);
    793797    }
    794798
     
    799803     */
    800804    public final void removeAll() {
    801         keys = null;
    802         keysChangedImpl();
     805        if (keys != null) {
     806            Map<String, String> originalKeys = getKeys();
     807            keys = null;
     808            keysChangedImpl(originalKeys);
     809        }
    803810    }
    804811
     
    854861    }
    855862
    856     private void keysChangedImpl() {
     863    private void keysChangedImpl(Map<String, String> originalKeys) {
    857864        clearCached();
    858865        updateHasDirectionKeys();
    859866        updateTagged();
    860867        if (dataSet != null) {
    861             dataSet.fireTagsChanged(this);
     868            dataSet.fireTagsChanged(this, originalKeys);
    862869        }
    863870    }
Note: See TracChangeset for help on using the changeset viewer.