package com.revolsys.swing.map.layer;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import com.revolsys.collection.map.MapEx;
import com.revolsys.logging.Logs;
import com.revolsys.swing.map.Viewport2D;
import com.revolsys.util.Cancellable;
public class LayerGroupRenderer extends AbstractLayerRenderer<LayerGroup> {
public LayerGroupRenderer(final LayerGroup layer) {
super("group", layer);
}
@Override
public void render(final Viewport2D viewport, final Cancellable cancellable,
final LayerGroup layer) {
final double scaleForVisible = viewport.getScaleForVisible();
if (layer.isVisible(scaleForVisible)) {
final List<Layer> layers = new ArrayList<>(layer.getLayers());
Collections.reverse(layers);
for (final Layer childLayer : cancellable.cancellable(layers)) {
if (childLayer.isVisible(scaleForVisible)) {
try {
final LayerRenderer<Layer> renderer = childLayer.getRenderer();
if (renderer != null) {
renderer.render(viewport, cancellable);
}
} catch (final Throwable e) {
if (!cancellable.isCancelled()) {
Logs.error(this, "Error rendering layer: " + childLayer, e);
}
}
}
}
}
}
@Override
public MapEx toMap() {
return MapEx.EMPTY;
}
}