// 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.interfaces.TileJob;
import org.openstreetmap.gui.jmapviewer.interfaces.TileLoader;
import org.openstreetmap.gui.jmapviewer.interfaces.TileLoaderListener;
import org.openstreetmap.josm.tools.CheckParameterUtil;
/**
* @author Olli
*
*/
public class ElevationGridTileLoader implements TileLoader {
protected TileLoaderListener listener;
public ElevationGridTileLoader(TileLoaderListener listener) {
CheckParameterUtil.ensureParameterNotNull(listener);
this.listener = listener;
}
@Override
public TileJob createTileLoaderJob(final Tile tile) {
CheckParameterUtil.ensureParameterNotNull(tile);
return new TileJob() {
@Override
public void run() {
synchronized (tile) {
if ((tile.isLoaded() && !tile.hasError()) || tile.isLoading())
return;
tile.initLoading();
}
try {
tile.loadImage(null);
tile.setLoaded(true);
listener.tileLoadingFinished(tile, true);
} catch (Exception e) {
tile.setError(e.getMessage());
listener.tileLoadingFinished(tile, false);
} finally {
tile.finishLoading();
}
}
@Override
public void submit() {
run();
}
@Override
public void submit(boolean force) {
submit();
}
};
}
@Override
public void cancelOutstandingTasks() {
// intentionally left blank
}
}