// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.plugins.elevation.grid; import org.openstreetmap.gui.jmapviewer.Tile; import org.openstreetmap.gui.jmapviewer.TileController; import org.openstreetmap.gui.jmapviewer.interfaces.TileCache; import org.openstreetmap.gui.jmapviewer.interfaces.TileLoader; import org.openstreetmap.gui.jmapviewer.interfaces.TileLoaderListener; import org.openstreetmap.gui.jmapviewer.interfaces.TileSource; /** * Subclass to apply some patches to TileController (see FIXME tags). * @author Olli * */ public class ElevationGridTileController extends TileController { public ElevationGridTileController(TileSource source, TileCache tileCache, TileLoaderListener listener, TileLoader loader) { super(source, tileCache, listener); tileSource = source; // FIXME: hard-coded in base class (although parameter is given)!! tileLoader = loader; // FIXME: hard-coded in base class! } @Override public Tile getTile(int tilex, int tiley, int zoom) { int max = (1 << zoom); if (tilex < 0 || tilex >= max || tiley < 0 || tiley >= max) return null; Tile tile = tileCache.getTile(tileSource, tilex, tiley, zoom); if (tile == null) { // FIXME: Provide/use a factory method here tile = new ElevationGridTile(tileSource, tilex, tiley, zoom); tileCache.addTile(tile); tile.loadPlaceholderFromCache(tileCache); } if (tile.hasError()) { tile.loadPlaceholderFromCache(tileCache); } if (!tile.isLoaded()) { tileLoader.createTileLoaderJob(tile).submit(); } return tile; } /** * */ }