package com.vividsolutions.jump.workbench.ui.renderer; import java.awt.Graphics2D; import java.util.*; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.Map; import com.vividsolutions.jump.feature.Feature; import com.vividsolutions.jump.workbench.model.Layer; import com.vividsolutions.jump.workbench.ui.LayerViewPanel; import com.vividsolutions.jump.workbench.ui.renderer.style.Style; /** * @see ImageCachingFeatureCollectionRenderer * @see FeatureCollectionRenderer */ public class SimpleFeatureCollectionRenderer extends SimpleRenderer { public SimpleFeatureCollectionRenderer(Object contentID, LayerViewPanel panel) { super(contentID, panel); } private void paint(Graphics2D g, Collection features, Layer layer, Style style) throws Exception { if (!layer.isVisible()) { return; } if (!style.isEnabled()) { return; } style.initialize(layer); //new ArrayList to avoid ConcurrentModificationException. [Jon Aquino] for (Iterator i = new ArrayList(features).iterator(); i.hasNext();) { final Feature feature = (Feature) i.next(); if (cancelled) { return; } if (feature.getGeometry().isEmpty()) { continue; } style.paint(feature, g, panel.getViewport()); } } protected void paint(Graphics2D g) throws Exception { for (Iterator i = styles.iterator(); i.hasNext();) { Style style = (Style) i.next(); if (cancelled) { return; } for (Iterator j = layerToFeaturesMap.keySet().iterator(); j .hasNext();) { Layer layer = (Layer) j.next(); if (cancelled) { return; } Collection features = (Collection) layerToFeaturesMap .get(layer); paint(g, features, layer, style); } } } private Collection styles = new ArrayList(); private Map layerToFeaturesMap = new HashMap(); protected void setLayerToFeaturesMap(Map layerToFeaturesMap) { this.layerToFeaturesMap = layerToFeaturesMap; } protected void setStyles(Collection styles) { this.styles = styles; } }