Ignore:
Timestamp:
2012-09-30T17:36:39+02:00 (12 years ago)
Author:
Don-vip
Message:

fix #8090 - Removing saved non-uploadable layer asks for confirmation

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java

    r5459 r5519  
    2828import java.util.List;
    2929import java.util.Map;
     30import java.util.concurrent.CopyOnWriteArrayList;
    3031
    3132import javax.swing.AbstractAction;
     
    165166        void commandChanged(int queueSize, int redoSize);
    166167    }
     168   
     169    /**
     170     * Listener called when a state of this layer has changed.
     171     */
     172    public interface LayerStateChangeListener {
     173        /**
     174         * Notifies that the "upload discouraged" (upload=no) state has changed.
     175         * @param layer The layer that has been modified
     176         * @param newValue The new value of the state
     177         */
     178        void uploadDiscouragedChanged(OsmDataLayer layer, boolean newValue);
     179    }
     180   
     181    private final CopyOnWriteArrayList<LayerStateChangeListener> layerStateChangeListeners = new CopyOnWriteArrayList<LayerStateChangeListener>();
     182   
     183    /**
     184     * Adds a layer state change listener
     185     *
     186     * @param listener the listener. Ignored if null or already registered.
     187     * @since 5519
     188     */
     189    public void addLayerStateChangeListener(LayerStateChangeListener listener) {
     190        if (listener != null) {
     191            layerStateChangeListeners.addIfAbsent(listener);
     192        }
     193    }
     194   
     195    /**
     196     * Removes a layer property change listener
     197     *
     198     * @param listener the listener. Ignored if null or already registered.
     199     * @since 5519
     200     */
     201    public void removeLayerPropertyChangeListener(LayerStateChangeListener listener) {
     202        layerStateChangeListeners.remove(listener);
     203    }
    167204
    168205    /**
     
    742779
    743780    public final void setUploadDiscouraged(boolean uploadDiscouraged) {
    744         data.setUploadDiscouraged(uploadDiscouraged);
     781        if (uploadDiscouraged ^ isUploadDiscouraged()) {
     782            data.setUploadDiscouraged(uploadDiscouraged);
     783            for (LayerStateChangeListener l : layerStateChangeListeners) {
     784                l.uploadDiscouragedChanged(this, uploadDiscouraged);
     785            }
     786        }
    745787    }
    746788
Note: See TracChangeset for help on using the changeset viewer.