/*************************************************** * * cismet GmbH, Saarbruecken, Germany * * ... and it just works. * ****************************************************/ package de.cismet.cismap.commons.raster.wms; import java.awt.Color; import java.awt.Component; import javax.swing.JTree; import javax.swing.tree.DefaultTreeCellRenderer; import de.cismet.cismap.commons.interaction.CismapBroker; import de.cismet.cismap.commons.wms.capabilities.Layer; import de.cismet.cismap.commons.wms.capabilities.Style; /** * DOCUMENT ME! * * @author thorsten.hell@cismet.de * @version $Revision$, $Date$ */ public class WMSCapabilitiesTreeCellRenderer extends DefaultTreeCellRenderer { //~ Instance fields -------------------------------------------------------- private final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(this.getClass()); private javax.swing.ImageIcon layersIcon; private javax.swing.ImageIcon layerIcon; private javax.swing.ImageIcon layersInfoIcon; private javax.swing.ImageIcon layerInfoIcon; private javax.swing.ImageIcon styleIcon; private javax.swing.ImageIcon unselectedStyleIcon; private javax.swing.ImageIcon serverIcon; private DefaultTreeCellRenderer defaultRenderer; private javax.swing.ImageIcon disabledLayersIcon; private javax.swing.ImageIcon disabledLayerIcon; private javax.swing.ImageIcon disabledLayerInfoIcon; //~ Constructors ----------------------------------------------------------- /** * Creates a new instance of WMSCapabilitiesTreeCellRenderer. */ public WMSCapabilitiesTreeCellRenderer() { layersIcon = new javax.swing.ImageIcon(getClass().getResource( "/de/cismet/cismap/commons/raster/wms/res/layers.png")); // NOI18N layerIcon = new javax.swing.ImageIcon(getClass().getResource( "/de/cismet/cismap/commons/raster/wms/res/layer.png")); // NOI18N layersInfoIcon = new javax.swing.ImageIcon(getClass().getResource( "/de/cismet/cismap/commons/raster/wms/res/layers_i.png")); // NOI18N layerInfoIcon = new javax.swing.ImageIcon(getClass().getResource( "/de/cismet/cismap/commons/raster/wms/res/layer_i.png")); // NOI18N styleIcon = new javax.swing.ImageIcon(getClass().getResource( "/de/cismet/cismap/commons/raster/wms/res/style.png")); // NOI18N unselectedStyleIcon = new javax.swing.ImageIcon(getClass().getResource( "/de/cismet/cismap/commons/raster/wms/res/style.png")); // NOI18N serverIcon = new javax.swing.ImageIcon(getClass().getResource( "/de/cismet/cismap/commons/raster/wms/res/server.png")); // NOI18N disabledLayersIcon = new javax.swing.ImageIcon(getClass().getResource( "/de/cismet/cismap/commons/raster/wms/res/disabledLayers.png")); // NOI18N disabledLayerIcon = new javax.swing.ImageIcon(getClass().getResource( "/de/cismet/cismap/commons/raster/wms/res/disabledLayer.png")); // NOI18N disabledLayerInfoIcon = new javax.swing.ImageIcon(getClass().getResource( "/de/cismet/cismap/commons/raster/wms/res/disabledLayer_i.png")); // NOI18N } //~ Methods ---------------------------------------------------------------- @Override public Component getTreeCellRendererComponent(final JTree tree, final Object value, final boolean isSelected, final boolean expanded, final boolean leaf, final int row, final boolean hasFocus) { super.getTreeCellRendererComponent( tree, value, isSelected, expanded, leaf, row, hasFocus); // setForeground(Color.black); if (value instanceof Layer) { final Layer tmpLayer = (Layer)value; boolean rightScale = true; try { final double mxScale = tmpLayer.getScaleDenominationMax(); final double mnScale = tmpLayer.getScaleDenominationMin(); final double scale = CismapBroker.getInstance().getMappingComponent().getCurrentOGCScale(); if ((scale < mnScale) || (scale > mxScale)) { if (!isSelected) { setForeground(Color.GRAY); } rightScale = false; // setTooltip("Im momentanen Ma\u00DFstab nicht darstellbar"); } } catch (Exception e) { // TODO logging last // log.debug("Fehler bei der ScaleHint Verarbeitung.Kein Problem",e); } setText(tmpLayer.getTitle()); if (tmpLayer.isQueryable()) { if (tmpLayer.getChildren().length == 0) { if (rightScale) { setIcon(layerInfoIcon); } else { setIcon(disabledLayerInfoIcon); } } else { if (rightScale) { setIcon(layersInfoIcon); } else { // TODO setIcon(layersInfoIcon); } } } else { if (tmpLayer.getChildren().length == 0) { if (rightScale) { setIcon(layerIcon); } else { setIcon(disabledLayerIcon); } } else { if (rightScale) { setIcon(layersIcon); } else { setIcon(disabledLayersIcon); } } } } else if (value instanceof Style) { final Style tmpStyle = (Style)value; if ((tmpStyle.getTitle() != null) && (tmpStyle.getTitle().trim().length() > 0)) { setText(tmpStyle.getTitle()); } else { setText(tmpStyle.getName()); } setIcon(styleIcon); } return this; } }