private List<ILayer> getLayers() { List<ILayer> layers = new ArrayList<ILayer>(); ICompositeRenderContext context1 = getContext(); IRenderContext[] contexts = context1.getContexts().toArray(new IRenderContext[context1.getContexts().size()]); if (contexts.length == 0) throw new RuntimeException(Messages.BasicWMSRenderer2_no_layers_to_render); for (IRenderContext renderContext : contexts) { if (renderContext.getLayer().isVisible()) { layers.add(renderContext.getLayer()); } } if (layers.isEmpty()) { WMSPlugin.log("WARNING: WMS Renderer contains no layers."); // $NON-NLS-1$ } return layers; }
public boolean canAddLayer(ILayer layer) { if (!layer.hasResource(Layer.class)) return false; try { if (!layer .findGeoResource(Layer.class) .parent(ProgressManager.instance().get()) .equals(getRenderContext().getGeoResource().parent(ProgressManager.instance().get()))) return false; } catch (IOException e2) { return false; } double opacity = Double.NaN; ICompositeRenderContext context1 = (ICompositeRenderContext) context; IRenderContext[] contexts = context1.getContexts().toArray(new IRenderContext[context1.getContexts().size()]); Arrays.sort(contexts); List<Layer> owsLayers = new ArrayList<Layer>(); IService currentService; try { owsLayers.add(layer.getResource(Layer.class, new NullProgressMonitor())); currentService = layer.getResource(IService.class, null); } catch (IOException e1) { WMSPlugin.log("", e1); // $NON-NLS-1$ return false; } for (IRenderContext renderContext : contexts) { ILayer previousLayer = renderContext.getLayer(); try { owsLayers.add(previousLayer.getResource(Layer.class, new NullProgressMonitor())); IService previousService = previousLayer.getResource(IService.class, null); if (currentService != previousService) { return false; } } catch (IOException e) { WMSPlugin.log("Error while retrieving service.", e); // $NON-NLS-1$ return false; } if (BasicWMSRenderer2.findRequestCRS(owsLayers, context.getCRS(), context.getMap()) == null) return false; Style style = (Style) previousLayer.getStyleBlackboard().get(SLDContent.ID); if (style != null) { opacity = SLDs.rasterOpacity(SLDs.rasterSymbolizer(style)); } } Style style = (Style) layer.getStyleBlackboard().get(SLDContent.ID); if (style == null && Double.isNaN(opacity)) { return true; } double result = SLDs.rasterOpacity(SLDs.rasterSymbolizer(style)); if (result == opacity) { return true; } return false; }