Changeset 9860 in josm
- Timestamp:
- 2016-02-23T20:39:21+01:00 (9 years ago)
- Location:
- trunk/src/org/openstreetmap/josm/gui/layer
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/layer/AbstractCachedTileSourceLayer.java
r8840 r9860 9 9 import org.apache.commons.jcs.access.behavior.ICacheAccess; 10 10 import org.openstreetmap.gui.jmapviewer.interfaces.TileLoader; 11 import org.openstreetmap.gui.jmapviewer.tilesources.AbstractTMSTileSource; 11 12 import org.openstreetmap.josm.Main; 12 13 import org.openstreetmap.josm.data.cache.BufferedImageCacheEntry; … … 22 23 * 23 24 * @author Wiktor Niesiobędzki 25 * @param <T> Tile Source class used by this Imagery Layer 24 26 * 25 27 */ 26 public abstract class AbstractCachedTileSourceLayer extends AbstractTileSourceLayer { 28 public abstract class AbstractCachedTileSourceLayer<T extends AbstractTMSTileSource> extends AbstractTileSourceLayer<T> { 27 29 /** loader factory responsible for loading tiles for all layers */ 28 30 private static Map<String, TileLoaderFactory> loaderFactories = new ConcurrentHashMap<>(); -
trunk/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java
r9826 r9860 95 95 * @author Upliner 96 96 * @author Wiktor Niesiobędzki 97 * @param <T> Tile Source class used for this layer 97 98 * @since 3715 98 99 * @since 8526 (copied from TMSLayer) 99 100 */ 100 public abstract class AbstractTileSourceLayer extends ImageryLayer implements ImageObserver, TileLoaderListener, ZoomChangeListener { 101 public abstract class AbstractTileSourceLayer<T extends AbstractTMSTileSource> extends ImageryLayer implements ImageObserver, TileLoaderListener, ZoomChangeListener { 101 102 private static final String PREFERENCE_PREFIX = "imagery.generic"; 102 103 … … 151 152 */ 152 153 protected TileCache tileCache; // initialized together with tileSource 153 protected AbstractTMSTileSourcetileSource;154 protected T tileSource; 154 155 protected TileLoader tileLoader; 155 156 … … 173 174 * @throws IllegalArgumentException when Imagery is not supported by layer 174 175 */ 175 protected abstract AbstractTMSTileSourcegetTileSource(ImageryInfo info);176 177 protected Map<String, String> getHeaders(T ileSourcetileSource) {176 protected abstract T getTileSource(ImageryInfo info); 177 178 protected Map<String, String> getHeaders(T tileSource) { 178 179 if (tileSource instanceof TemplatedTileSource) { 179 180 return ((TemplatedTileSource) tileSource).getHeaders(); … … 182 183 } 183 184 184 protected void initTileSource( AbstractTMSTileSourcetileSource) {185 protected void initTileSource(T tileSource) { 185 186 attribution.initialize(tileSource); 186 187 … … 1180 1181 1181 1182 private final TileSet nullTileSet = new TileSet((LatLon) null, (LatLon) null, 0); 1183 1182 1184 private final class TileSet { 1183 1185 int x0, x1, y0, y1; … … 1349 1351 } 1350 1352 1351 private static TileSetInfo getTileSetInfo(TileSet ts) { 1353 private static <S extends AbstractTMSTileSource> TileSetInfo getTileSetInfo(AbstractTileSourceLayer<S>.TileSet ts) { 1352 1354 List<Tile> allTiles = ts.allExistingTiles(); 1353 1355 TileSetInfo result = new TileSetInfo(); … … 1374 1376 private final TileSet[] tileSets; 1375 1377 private final TileSetInfo[] tileSetInfos; 1378 1379 @SuppressWarnings("unchecked") 1376 1380 DeepTileSet(EastNorth topLeft, EastNorth botRight, int minZoom, int maxZoom) { 1377 1381 this.topLeft = topLeft; … … 1379 1383 this.minZoom = minZoom; 1380 1384 this.maxZoom = maxZoom; 1381 this.tileSets = new TileSet[maxZoom - minZoom + 1]; 1385 this.tileSets = new AbstractTileSourceLayer.TileSet[maxZoom - minZoom + 1]; 1382 1386 this.tileSetInfos = new TileSetInfo[maxZoom - minZoom + 1]; 1383 1387 } … … 1742 1746 * To prevent accidental clear of the queue, new download executor is created with separate queue 1743 1747 * 1744 * @param pr ecacheTaskTask responsible for precaching imagery1748 * @param progressMonitor Task responsible for precaching imagery 1745 1749 * @param points lat/lon coordinates to download 1746 1750 * @param bufferX how many units in current Coordinate Reference System to cover in X axis in both sides 1747 1751 * @param bufferY how many units in current Coordinate Reference System to cover in Y axis in both sides 1748 */ 1749 public void downloadAreaToCache(final PrecacheTask precacheTask, List<LatLon> points, double bufferX, double bufferY) { 1752 * @return 1753 */ 1754 public AbstractTileSourceLayer<T>.PrecacheTask downloadAreaToCache(final ProgressMonitor progressMonitor, List<LatLon> points, double bufferX, double bufferY) { 1755 PrecacheTask precacheTask = new PrecacheTask(progressMonitor); 1750 1756 final Set<Tile> requestedTiles = new ConcurrentSkipListSet<>(new Comparator<Tile>() { 1751 1757 @Override … … 1780 1786 loader.createTileLoaderJob(t).submit(); 1781 1787 } 1788 return precacheTask; 1782 1789 } 1783 1790 -
trunk/src/org/openstreetmap/josm/gui/layer/TMSLayer.java
r9825 r9860 33 33 * 34 34 */ 35 public class TMSLayer extends AbstractCachedTileSourceLayer implements NativeScaleLayer { 35 public class TMSLayer extends AbstractCachedTileSourceLayer<TMSTileSource> implements NativeScaleLayer { 36 36 private static final String CACHE_REGION_NAME = "TMS"; 37 37 … … 78 78 */ 79 79 @Override 80 protected AbstractTMSTileSource getTileSource(ImageryInfo info) throws IllegalArgumentException {80 protected TMSTileSource getTileSource(ImageryInfo info) throws IllegalArgumentException { 81 81 return getTileSourceStatic(info, new Runnable() { 82 82 @Override … … 127 127 * @throws IllegalArgumentException if url from imagery info is null or invalid 128 128 */ 129 public static AbstractTMSTileSource getTileSourceStatic(ImageryInfo info, Runnable attributionLoadedTask) throws IllegalArgumentException {129 public static TMSTileSource getTileSourceStatic(ImageryInfo info, Runnable attributionLoadedTask) throws IllegalArgumentException { 130 130 if (info.getImageryType() == ImageryType.TMS) { 131 131 TemplatedTMSTileSource.checkUrl(info.getUrl()); -
trunk/src/org/openstreetmap/josm/gui/layer/WMSLayer.java
r9848 r9860 18 18 import org.apache.commons.jcs.access.CacheAccess; 19 19 import org.openstreetmap.gui.jmapviewer.interfaces.TileLoader; 20 import org.openstreetmap.gui.jmapviewer.interfaces.TileSource;21 import org.openstreetmap.gui.jmapviewer.tilesources.AbstractTMSTileSource;22 20 import org.openstreetmap.josm.Main; 23 21 import org.openstreetmap.josm.data.cache.BufferedImageCacheEntry; … … 37 35 * 38 36 */ 39 public class WMSLayer extends AbstractCachedTileSourceLayer { 37 public class WMSLayer extends AbstractCachedTileSourceLayer<TemplatedWMSTileSource> { 40 38 private static final String PREFERENCE_PREFIX = "imagery.wms."; 41 39 … … 75 73 76 74 @Override 77 protected AbstractTMSTileSource getTileSource(ImageryInfo info) {75 protected TemplatedWMSTileSource getTileSource(ImageryInfo info) { 78 76 if (info.getImageryType() == ImageryType.WMS && info.getUrl() != null) { 79 77 TemplatedWMSTileSource.checkUrl(info.getUrl()); … … 105 103 106 104 @Override 107 protected Map<String, String> getHeaders(TileSource tileSource) { 108 if (tileSource instanceof TemplatedWMSTileSource) { 109 return ((TemplatedWMSTileSource) tileSource).getHeaders(); 110 } 111 return null; 105 protected Map<String, String> getHeaders(TemplatedWMSTileSource tileSource) { 106 return tileSource.getHeaders(); 112 107 } 113 108 … … 155 150 } 156 151 157 if (!newValue.equals(oldValue) && tileSource instanceof TemplatedWMSTileSource) {158 ((TemplatedWMSTileSource)tileSource).initProjection(newValue);152 if (!newValue.equals(oldValue)) { 153 tileSource.initProjection(newValue); 159 154 } 160 155 } -
trunk/src/org/openstreetmap/josm/gui/layer/WMTSLayer.java
r9825 r9860 7 7 import org.apache.commons.jcs.access.CacheAccess; 8 8 import org.openstreetmap.gui.jmapviewer.interfaces.TileLoader; 9 import org.openstreetmap.gui.jmapviewer.tilesources.AbstractTMSTileSource;10 9 import org.openstreetmap.josm.Main; 11 10 import org.openstreetmap.josm.data.cache.BufferedImageCacheEntry; … … 27 26 * 28 27 */ 29 public class WMTSLayer extends AbstractCachedTileSourceLayer implements NativeScaleLayer { 28 public class WMTSLayer extends AbstractCachedTileSourceLayer<WMTSTileSource> implements NativeScaleLayer { 30 29 /** 31 30 * default setting of autozoom per layer … … 44 43 45 44 @Override 46 protected AbstractTMSTileSource getTileSource(ImageryInfo info) {45 protected WMTSTileSource getTileSource(ImageryInfo info) { 47 46 try { 48 47 if (info.getImageryType() == ImageryType.WMTS && info.getUrl() != null) { … … 78 77 @Override 79 78 public boolean isProjectionSupported(Projection proj) { 80 Set<String> supportedProjections = ((WMTSTileSource)tileSource).getSupportedProjections();79 Set<String> supportedProjections = tileSource.getSupportedProjections(); 81 80 return supportedProjections.contains(proj.toCode()); 82 81 } … … 85 84 public String nameSupportedProjections() { 86 85 StringBuilder ret = new StringBuilder(); 87 for (String e: ((WMTSTileSource)tileSource).getSupportedProjections()) {86 for (String e: tileSource.getSupportedProjections()) { 88 87 ret.append(e).append(", "); 89 88 } … … 94 93 public void projectionChanged(Projection oldValue, Projection newValue) { 95 94 super.projectionChanged(oldValue, newValue); 96 ((WMTSTileSource)tileSource).initProjection(newValue);95 tileSource.initProjection(newValue); 97 96 } 98 97 … … 116 115 @Override 117 116 public ScaleList getNativeScales() { 118 return ((WMTSTileSource)tileSource).getNativeScales();117 return tileSource.getNativeScales(); 119 118 } 120 119 } -
trunk/src/org/openstreetmap/josm/gui/layer/gpx/DownloadWmsAlongTrackAction.java
r9719 r9860 16 16 import javax.swing.JPanel; 17 17 18 import org.openstreetmap.gui.jmapviewer.tilesources.AbstractTMSTileSource; 18 19 import org.openstreetmap.josm.Main; 19 20 import org.openstreetmap.josm.actions.AbstractMergeAction.LayerListCellRenderer; … … 26 27 import org.openstreetmap.josm.gui.PleaseWaitRunnable; 27 28 import org.openstreetmap.josm.gui.layer.AbstractTileSourceLayer; 28 import org.openstreetmap.josm.gui.layer.AbstractTileSourceLayer.PrecacheTask;29 29 import org.openstreetmap.josm.gui.progress.ProgressTaskId; 30 30 import org.openstreetmap.josm.gui.progress.ProgressTaskIds; … … 53 53 static class PrecacheWmsTask extends PleaseWaitRunnable { 54 54 55 private final AbstractTileSourceLayer layer; 55 private final AbstractTileSourceLayer<? extends AbstractTMSTileSource> layer; 56 56 private final List<LatLon> points; 57 private PrecacheTask precacheTask; 57 private AbstractTileSourceLayer<? extends AbstractTMSTileSource>.PrecacheTask precacheTask; 58 58 59 protected PrecacheWmsTask(AbstractTileSourceLayer layer, List<LatLon> points) { 59 protected PrecacheWmsTask(AbstractTileSourceLayer<? extends AbstractTMSTileSource> layer, List<LatLon> points) { 60 60 super(tr("Precaching WMS")); 61 61 this.layer = layer; … … 65 65 @Override 66 66 protected void realRun() throws SAXException, IOException, OsmTransferException { 67 precacheTask = layer.new PrecacheTask(progressMonitor); 68 layer.downloadAreaToCache(precacheTask, points, 0, 0); 67 precacheTask = layer.downloadAreaToCache(progressMonitor, points, 0, 0); 69 68 while (!precacheTask.isFinished() && !progressMonitor.isCanceled()) { 70 69 synchronized (this) { … … 106 105 points.add(p.getCoor()); 107 106 } 108 AbstractTileSourceLayer layer = askedLayer(); 107 AbstractTileSourceLayer<? extends AbstractTMSTileSource> layer = askedLayer(); 109 108 return layer != null ? new PrecacheWmsTask(layer, points) : null; 110 109 } … … 118 117 } 119 118 120 protected AbstractTileSourceLayer askedLayer() { 119 @SuppressWarnings({ "rawtypes", "unchecked" }) 120 protected AbstractTileSourceLayer<? extends AbstractTMSTileSource> askedLayer() { 121 121 if (!Main.isDisplayingMapView()) { 122 122 return null;
Note:
See TracChangeset
for help on using the changeset viewer.