Ignore:
Timestamp:
2010-08-29T09:52:54+02:00 (14 years ago)
Author:
jttt
Message:

Allow to set tilesource to (none) - useful when somebody wants to have plugin installed but don't want to have slippymap layer created every time.

Location:
applications/editors/josm/plugins/slippymap/src/org/openstreetmap/josm/plugins/slippymap
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/slippymap/src/org/openstreetmap/josm/plugins/slippymap/SlippyMapLayer.java

    r22550 r22848  
    3838import org.openstreetmap.josm.actions.RenameLayerAction;
    3939import org.openstreetmap.josm.data.Bounds;
    40 import org.openstreetmap.josm.data.Preferences.PreferenceChangeEvent;
    41 import org.openstreetmap.josm.data.Preferences.PreferenceChangedListener;
    4240import org.openstreetmap.josm.data.coor.LatLon;
    4341import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
     
    5755 *
    5856 */
    59 public class SlippyMapLayer extends Layer implements PreferenceChangedListener, ImageObserver,
     57public class SlippyMapLayer extends Layer implements ImageObserver,
    6058    TileLoaderListener {
    6159    boolean debug = false;
     
    263261                    public void layerRemoved(Layer oldLayer) {
    264262                        MapView.removeLayerChangeListener(this);
    265                         Main.pref.removePreferenceChangeListener(SlippyMapLayer.this);
    266263                    }
    267264                });
    268265            }
    269266        });
    270 
    271         Main.pref.addPreferenceChangeListener(this);
    272267    }
    273268
     
    879874        }
    880875
    881         int fontHeight = g.getFontMetrics().getHeight();
    882 
    883876        g.setColor(Color.DARK_GRAY);
    884877
     
    962955            ts.loadAllTiles(false); // make sure there are tile objects for all tiles
    963956        Tile clickedTile = null;
    964         Point p1 = null, p2 = null;
    965957        for (Tile t1 : ts.allTiles()) {
    966958            Tile t2 = tempCornerTile(t1);
     
    10401032        return x * 45.0 / Math.pow(2.0, zoom - 3) - 180.0;
    10411033    }
    1042 
    1043     /*
    1044      * (non-Javadoc)
    1045      *
    1046      * @seeorg.openstreetmap.josm.data.Preferences.PreferenceChangedListener#
    1047      * preferenceChanged(java.lang.String, java.lang.String)
    1048      */
    1049     public void preferenceChanged(PreferenceChangeEvent event) {
    1050         if (event.getKey().startsWith(SlippyMapPreferences.PREFERENCE_PREFIX)) {
    1051             // System.err.println(this + ".preferenceChanged('" + key + "', '"
    1052             // + newValue + "') called");
    1053             // when fade background changed, no need to clear tile storage
    1054             // TODO move this code to SlippyMapPreferences class.
    1055             if (!event.getKey().equals(SlippyMapPreferences.PREFERENCE_FADE_BACKGROUND)) {
    1056                 autoZoomPopup.setSelected(SlippyMapPreferences.getAutozoom());
    1057             }
    1058             if (event.getKey().equals(SlippyMapPreferences.PREFERENCE_TILE_SOURCE)) {
    1059                 newTileStorage();
    1060             }
    1061             redraw();
    1062         }
    1063     }
    1064 
    1065     @Override
    1066     public void destroy() {
    1067         Main.pref.removePreferenceChangeListener(SlippyMapLayer.this);
    1068     }
    10691034}
  • applications/editors/josm/plugins/slippymap/src/org/openstreetmap/josm/plugins/slippymap/SlippyMapPlugin.java

    r19477 r22848  
    11package org.openstreetmap.josm.plugins.slippymap;
    22
     3import java.util.List;
     4
    35import org.openstreetmap.josm.Main;
     6import org.openstreetmap.josm.data.Preferences.PreferenceChangeEvent;
     7import org.openstreetmap.josm.data.Preferences.PreferenceChangedListener;
    48import org.openstreetmap.josm.gui.MapFrame;
    59import org.openstreetmap.josm.gui.preferences.PreferenceSetting;
     
    1317 *
    1418 */
    15 public class SlippyMapPlugin extends Plugin
     19public class SlippyMapPlugin extends Plugin implements PreferenceChangedListener
    1620{
    1721    public SlippyMapPlugin(PluginInformation info)
    1822    {
    1923        super(info);
     24        Main.pref.addPreferenceChangeListener(this);
    2025    }
    2126
    22     public void mapFrameInitialized(MapFrame oldFrame, MapFrame newFrame)
     27    @Override
     28        public void mapFrameInitialized(MapFrame oldFrame, MapFrame newFrame)
    2329    {
    24         if (newFrame != null){
     30        if (newFrame != null && SlippyMapPreferences.getMapSource() != SlippyMapPreferences.NO_DEFAULT_TILE_SOURCE) {
    2531            SlippyMapLayer smlayer;
    2632            smlayer = new SlippyMapLayer();
     
    4046    }
    4147
     48    /*
     49     * (non-Javadoc)
     50     *
     51     * @seeorg.openstreetmap.josm.data.Preferences.PreferenceChangedListener#
     52     * preferenceChanged(java.lang.String, java.lang.String)
     53     */
     54    public void preferenceChanged(PreferenceChangeEvent event) {
     55        if (!Main.isDisplayingMapView()) {
     56                return;
     57        }
     58        List<SlippyMapLayer> layes = Main.map.mapView.getLayersOfType(SlippyMapLayer.class);
     59        assert layes.size() <= 1;
     60        SlippyMapLayer layer = layes.isEmpty()?null:layes.get(0);
     61
     62        if (event.getKey().equals(SlippyMapPreferences.PREFERENCE_TILE_SOURCE)) {
     63                if (layer == null && SlippyMapPreferences.getMapSource() != SlippyMapPreferences.NO_DEFAULT_TILE_SOURCE) {
     64                        Main.map.mapView.addLayer(new SlippyMapLayer());
     65                } else if (layer != null && SlippyMapPreferences.getMapSource() == SlippyMapPreferences.NO_DEFAULT_TILE_SOURCE) {
     66                        Main.map.mapView.removeLayer(layer);
     67                } else if (layer == null && SlippyMapPreferences.getMapSource() == SlippyMapPreferences.NO_DEFAULT_TILE_SOURCE) {
     68                        // Do nothing
     69                } else {
     70                        layer.newTileStorage();
     71                }
     72        } else  if (event.getKey().startsWith(SlippyMapPreferences.PREFERENCE_PREFIX) && layer != null) {
     73            // System.err.println(this + ".preferenceChanged('" + key + "', '"
     74            // + newValue + "') called");
     75            // when fade background changed, no need to clear tile storage
     76            // TODO move this code to SlippyMapPreferences class.
     77            if (!event.getKey().equals(SlippyMapPreferences.PREFERENCE_FADE_BACKGROUND)) {
     78                layer.autoZoomPopup.setSelected(SlippyMapPreferences.getAutozoom());
     79            }
     80            layer.redraw();
     81        }
     82    }
     83
    4284}
  • applications/editors/josm/plugins/slippymap/src/org/openstreetmap/josm/plugins/slippymap/SlippyMapPreferenceSetting.java

    r19302 r22848  
    22
    33import static org.openstreetmap.josm.tools.I18n.tr;
     4
     5import java.awt.event.ActionEvent;
     6import java.awt.event.ActionListener;
     7import java.util.ArrayList;
     8import java.util.List;
    49
    510import javax.swing.Box;
     
    1116import javax.swing.JSpinner;
    1217import javax.swing.SpinnerNumberModel;
    13 import java.awt.event.ActionListener;
    14 import java.awt.event.ActionEvent;
    15 import java.util.Collection;
    1618
    17 import org.openstreetmap.gui.jmapviewer.*;
    18 import org.openstreetmap.gui.jmapviewer.interfaces.*;
    19 
    20 import org.openstreetmap.josm.gui.preferences.PreferenceDialog;
     19import org.openstreetmap.gui.jmapviewer.interfaces.TileSource;
    2120import org.openstreetmap.josm.gui.preferences.PreferenceSetting;
    2221import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
     
    3433     */
    3534    private JComboBox tileSourceCombo;
    36    
     35
    3736    private JCheckBox autozoomActive = new JCheckBox(tr("autozoom"));
    3837    private JCheckBox autoloadTiles = new JCheckBox(tr("autoload tiles"));
     
    4039    private JSpinner minZoomLvl = new JSpinner();
    4140    private JSlider fadeBackground = new JSlider(0, 100);
    42    
     41
    4342    public void addGui(PreferenceTabbedPane gui)
    4443    {
     
    4746        //String description = tr("A plugin that adds to JOSM new layer. This layer could render external tiles.");
    4847        JPanel slippymapTab = gui.createPreferenceTab("slippymap.png", tr("SlippyMap"), tr("Settings for the SlippyMap plugin."));
    49         Collection<TileSource> allSources = SlippyMapPreferences.getAllMapSources();
     48        List<TileSource> allSources = new ArrayList<TileSource>(SlippyMapPreferences.getAllMapSources());
     49        allSources.add(0, SlippyMapPreferences.NO_DEFAULT_TILE_SOURCE);
    5050        //Collection<String> allSources = SlippyMapPreferences.getAllMapNames();
    5151        tileSourceCombo = new JComboBox(allSources.toArray());
     
    5555        slippymapTab.add(GBC.glue(5, 0), GBC.std());
    5656        slippymapTab.add(tileSourceCombo, GBC.eol().fill(GBC.HORIZONTAL));
    57        
     57
    5858        slippymapTab.add(new JLabel(tr("Auto zoom: ")), GBC.std());
    5959        slippymapTab.add(GBC.glue(5, 0), GBC.std().fill(GBC.HORIZONTAL));
    6060        slippymapTab.add(autozoomActive, GBC.eol().fill(GBC.HORIZONTAL));
    61        
     61
    6262        slippymapTab.add(new JLabel(tr("Autoload Tiles: ")), GBC.std());
    6363        slippymapTab.add(GBC.glue(5, 0), GBC.std().fill(GBC.HORIZONTAL));
    6464        slippymapTab.add(autoloadTiles, GBC.eol().fill(GBC.HORIZONTAL));
    65        
     65
    6666        slippymapTab.add(new JLabel(tr("Min zoom lvl: ")), GBC.std());
    6767        slippymapTab.add(GBC.glue(5, 0), GBC.std().fill(GBC.HORIZONTAL));
    6868        slippymapTab.add(this.minZoomLvl, GBC.eol().fill(GBC.HORIZONTAL));
    69        
     69
    7070        slippymapTab.add(new JLabel(tr("Max zoom lvl: ")), GBC.std());
    7171        slippymapTab.add(GBC.glue(5, 0), GBC.std().fill(GBC.HORIZONTAL));
     
    7575        slippymapTab.add(GBC.glue(5, 0), GBC.std().fill(GBC.HORIZONTAL));
    7676        slippymapTab.add(this.fadeBackground, GBC.eol().fill(GBC.HORIZONTAL));
    77        
     77
    7878        slippymapTab.add(Box.createVerticalGlue(), GBC.eol().fill(GBC.VERTICAL));
    7979
     
    128128        this.fadeBackground.setValue(Math.round(SlippyMapPreferences.getFadeBackground()*100f));
    129129    }
    130    
     130
    131131    /**
    132132     * <p>
     
    139139    public boolean ok()
    140140    {
    141         SlippyMapPreferences.setMapSource((TileSource)this.tileSourceCombo.getSelectedItem());
     141        SlippyMapPreferences.setMapSource((TileSource)this.tileSourceCombo.getSelectedItem());
    142142        SlippyMapPreferences.setAutozoom(this.autozoomActive.isSelected());
    143143        SlippyMapPreferences.setAutoloadTiles(this.autoloadTiles.isSelected());
  • applications/editors/josm/plugins/slippymap/src/org/openstreetmap/josm/plugins/slippymap/SlippyMapPreferences.java

    r19887 r22848  
    11package org.openstreetmap.josm.plugins.slippymap;
    22
     3import static org.openstreetmap.josm.tools.I18n.tr;
     4
     5import java.util.ArrayList;
     6import java.util.List;
     7import java.util.Map;
     8
     9import org.openstreetmap.gui.jmapviewer.OsmTileSource;
     10import org.openstreetmap.gui.jmapviewer.OsmTileSource.AbstractOsmTileSource;
     11import org.openstreetmap.gui.jmapviewer.interfaces.TileSource;
    312import org.openstreetmap.josm.Main;
    4 import java.util.List;
    5 import java.util.ArrayList;
    6 import java.util.Collection;
    7 import java.util.Map;
    8 import org.openstreetmap.gui.jmapviewer.*;
    9 import org.openstreetmap.gui.jmapviewer.interfaces.*;
    1013
    1114/**
     
    1821public class SlippyMapPreferences
    1922{
     23        public static final String NO_DEFAULT_TILE_SOURCE_NAME = "{%no_default%}";
    2024    public static final String PREFERENCE_PREFIX   = "slippymap";
    2125
     
    3539    public static final int DEFAULT_MIN_ZOOM = 2;
    3640
     41
    3742    public static TileSource getMapSource()
    3843    {
     
    4247    public static TileSource getMapSource(String name)
    4348    {
     49        if (NO_DEFAULT_TILE_SOURCE_NAME.equals(name)) {
     50                return NO_DEFAULT_TILE_SOURCE; // User don't want to load slippy layer on startup
     51        }
     52
    4453        List<TileSource> sources = SlippyMapPreferences.getAllMapSources();
    45         TileSource source = sources.get(0);
     54
    4655        if (name == null || "".equals(name)) {
    47             name = source.getName();
    48             Main.pref.put(PREFERENCE_TILE_SOURCE, name);
    49         }
     56            Main.pref.put(PREFERENCE_TILE_SOURCE, sources.get(0).getName());
     57            return sources.get(0);
     58        }
     59
    5060        for (TileSource s : sources) {
    51             if (!name.equals(s.getName()))
    52                 continue;
    53             source = s;
    54             break;
    55         }
    56         return source;
     61            if (name.equals(s.getName()))
     62                return s;
     63        }
     64
     65        return sources.get(0);
    5766    }
    5867
    5968    public static void setMapSource(TileSource source) {
    60         Main.pref.put(SlippyMapPreferences.PREFERENCE_TILE_SOURCE, source.getName());
     69        Main.pref.put(SlippyMapPreferences.PREFERENCE_TILE_SOURCE, source == NO_DEFAULT_TILE_SOURCE?NO_DEFAULT_TILE_SOURCE_NAME:source.getName());
    6170    }
    6271
     
    236245    }
    237246
     247    public static TileSource NO_DEFAULT_TILE_SOURCE = new AbstractOsmTileSource(tr("(none)"), "") {
     248                public TileUpdate getTileUpdate() {
     249                        return null;
     250                }
     251    };
     252
    238253    public static class Coastline extends OsmTileSource.AbstractOsmTileSource {
    239254        public Coastline() {
     
    266281        }
    267282
    268         public int getMaxZoom() {
     283        @Override
     284                public int getMaxZoom() {
    269285            return 21;
    270286        }
    271287
    272         public String getTilePath(int zoom, int tilex, int tiley) {
     288        @Override
     289                public String getTilePath(int zoom, int tilex, int tiley) {
    273290            return "z=" + zoom + "&x=" + tilex + "&y=" + tiley;
    274291        }
     
    278295        }
    279296    }
    280    
     297
    281298
    282299    public static class HaitiImagery extends OsmTileSource.AbstractOsmTileSource {
     
    285302        }
    286303
    287         public int getMaxZoom() {
     304        @Override
     305                public int getMaxZoom() {
    288306            return 21;
    289307        }
    290308
    291         public String getTilePath(int zoom, int tilex, int tiley) {
     309        @Override
     310                public String getTilePath(int zoom, int tilex, int tiley) {
    292311                return "/" + zoom + "/" + tilex + "/" + tiley + ".png";
    293312        }
Note: See TracChangeset for help on using the changeset viewer.