package com.revolsys.swing.map.layer.raster;
import com.revolsys.geometry.model.GeometryFactory;
import com.revolsys.logging.Logs;
import com.revolsys.swing.map.layer.MapTile;
import com.revolsys.util.Cancellable;
public class TileLoadTask implements Runnable {
private final GeometryFactory geometryFactory;
private final MapTile mapTile;
private final TiledImageLayerRenderer renderer;
private final Cancellable cancellable;
public TileLoadTask(final TiledImageLayerRenderer renderer, final Cancellable cancellable,
final GeometryFactory geometryFactory, final MapTile mapTile) {
this.renderer = renderer;
this.cancellable = cancellable;
this.geometryFactory = geometryFactory;
this.mapTile = mapTile;
}
public GeometryFactory getGeometryFactory() {
return this.geometryFactory;
}
public MapTile getMapTile() {
return this.mapTile;
}
public TiledImageLayerRenderer getRenderer() {
return this.renderer;
}
@Override
public void run() {
try {
if (!this.cancellable.isCancelled()) {
this.mapTile.loadImage(this.geometryFactory);
}
if (!this.cancellable.isCancelled()) {
this.renderer.setLoaded(this);
}
} catch (final Throwable e) {
if (!this.cancellable.isCancelled()) {
Logs.error(this, "Unable to load " + this.mapTile, e);
}
}
}
}