Ignore:
Timestamp:
2017-09-09T16:58:45+02:00 (2 years ago)
Author:
Don-vip
Message:

see #15229 - see #15182 - remove GUI references from OsmApi

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/io/OsmApi.java

    r12636 r12804  
    3030import org.openstreetmap.josm.data.osm.OsmPrimitive;
    3131import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
    32 import org.openstreetmap.josm.gui.MainApplication;
    33 import org.openstreetmap.josm.gui.layer.ImageryLayer;
    34 import org.openstreetmap.josm.gui.layer.Layer;
    3532import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
    3633import org.openstreetmap.josm.gui.progress.ProgressMonitor;
     
    3835import org.openstreetmap.josm.tools.CheckParameterUtil;
    3936import org.openstreetmap.josm.tools.HttpClient;
     37import org.openstreetmap.josm.tools.ListenerList;
    4038import org.openstreetmap.josm.tools.Logging;
    4139import org.openstreetmap.josm.tools.Utils;
     
    5250 * It is conceivable to extract this into an interface later and create various
    5351 * classes implementing the interface, to be able to talk to various kinds of servers.
    54  *
     52 * @ince 1523
    5553 */
    5654public class OsmApi extends OsmConnection {
     
    7674
    7775    // The collection of instantiated OSM APIs
    78     private static Map<String, OsmApi> instances = new HashMap<>();
     76    private static final Map<String, OsmApi> instances = new HashMap<>();
     77
     78    private static final ListenerList<OsmApiInitializationListener> listeners = ListenerList.create();
    7979
    8080    private URL url;
     81
     82    /**
     83     * OSM API initialization listener.
     84     * @since 12804
     85     */
     86    public interface OsmApiInitializationListener {
     87        /**
     88         * Called when an OSM API instance has been successfully initialized.
     89         * @param instance the initialized OSM API instance
     90         */
     91        void apiInitialized(OsmApi instance);
     92    }
     93
     94    /**
     95     * Adds a new OSM API initialization listener.
     96     * @param listener OSM API initialization listener to add
     97     * @since 12804
     98     */
     99    public static void addOsmApiInitializationListener(OsmApiInitializationListener listener) {
     100        listeners.addListener(listener);
     101    }
     102
     103    /**
     104     * Removes an OSM API initialization listener.
     105     * @param listener OSM API initialization listener to remove
     106     * @since 12804
     107     */
     108    public static void removeOsmApiInitializationListener(OsmApiInitializationListener listener) {
     109        listeners.removeListener(listener);
     110    }
    81111
    82112    /**
     
    236266            }
    237267
    238             /* This checks if there are any layers currently displayed that
    239              * are now on the blacklist, and removes them. This is a rare
    240              * situation - probably only occurs if the user changes the API URL
    241              * in the preferences menu. Otherwise they would not have been able
    242              * to load the layers in the first place because they would have
    243              * been disabled! */
    244             if (MainApplication.isDisplayingMapView()) {
    245                 for (Layer l : MainApplication.getLayerManager().getLayersOfType(ImageryLayer.class)) {
    246                     if (((ImageryLayer) l).getInfo().isBlacklisted()) {
    247                         Logging.info(tr("Removed layer {0} because it is not allowed by the configured API.", l.getName()));
    248                         MainApplication.getLayerManager().removeLayer(l);
    249                     }
    250                 }
    251             }
    252 
     268            listeners.fireEvent(l -> l.apiInitialized(this));
    253269        } catch (OsmTransferCanceledException e) {
    254270            throw e;
Note: See TracChangeset for help on using the changeset viewer.