/*
* GeoTools - The Open Source Java GIS Toolkit
* http://geotools.org
*
* (C) 2002-2008, Open Source Geospatial Foundation (OSGeo)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*/
package org.geotools.gui.swing.contexttree;
import java.awt.Font;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import org.geotools.gui.swing.icon.IconBundle;
import org.jdesktop.swingx.renderer.CellContext;
import org.jdesktop.swingx.renderer.ComponentProvider;
/**
* Provider for ContextTree to render TreeColumn
*
* @author Johann Sorel
*
* @source $URL$
*/
public final class TreeNodeProvider extends ComponentProvider<JLabel> {
private static final ImageIcon ICON_LAYER_VISIBLE = IconBundle.getResource().getIcon("16_maplayer_visible");
private static final ImageIcon ICON_LAYER_UNVISIBLE = IconBundle.getResource().getIcon("16_maplayer_unvisible");
private static final ImageIcon ICON_LAYER_FILE_VECTOR_VISIBLE = IconBundle.getResource().getIcon("JS16_layer_e_fv");
private static final ImageIcon ICON_LAYER_FILE_VECTOR_UNVISIBLE = IconBundle.getResource().getIcon("JS16_layer_d_fv");
private static final ImageIcon ICON_LAYER_FILE_RASTER_VISIBLE = IconBundle.getResource().getIcon("JS16_layer_e_fr");
private static final ImageIcon ICON_LAYER_FILE_RASTER_UNVISIBLE = IconBundle.getResource().getIcon("JS16_layer_d_fr");
private static final ImageIcon ICON_LAYER_DB_VISIBLE = IconBundle.getResource().getIcon("JS16_layer_e_db");
private static final ImageIcon ICON_LAYER_DB_UNVISIBLE = IconBundle.getResource().getIcon("JS16_layer_d_db");
private static final ImageIcon ICON_CONTEXT_ACTIVE = IconBundle.getResource().getIcon("16_mapcontext_enable");
private static final ImageIcon ICON_CONTEXT_DESACTIVE = IconBundle.getResource().getIcon("16_mapcontext_disable");
private final JContextTree tree;
/**
* Provider for ContextTree to render TreeColumn
*
* @param tree related JContextTree
*/
public TreeNodeProvider(JContextTree tree) {
this.tree = tree;
rendererComponent = new JLabel();
}
/**
* {@inheritDoc}
* @param arg0
*/
@Override
protected void configureState(CellContext arg0) {
}
/**
* {@inheritDoc}
* @return
*/
@Override
protected JLabel createRendererComponent() {
return new JLabel();
}
/**
* {@inheritDoc}
* @param arg0
*/
@Override
protected void format(CellContext arg0) {
if (arg0.getValue() instanceof ContextTreeNode) {
ContextTreeNode node = (ContextTreeNode) arg0.getValue();
Icon ico = node.getIcon();
Object value = node.getValue();
rendererComponent.setIcon( (ico == null)? arg0.getIcon(): ico);
rendererComponent.setText( (value == null)? "" : value.toString() );
rendererComponent.setToolTipText(node.getToolTip());
// if (node.getUserObject() instanceof MapContext) {
// if (node.getUserObject().equals(tree.getActiveContext())) {
// rendererComponent.setIcon(ICON_CONTEXT_ACTIVE);
// rendererComponent.setFont(new Font("Tahoma", Font.BOLD, 10));
// } else {
// rendererComponent.setIcon(ICON_CONTEXT_DESACTIVE);
// rendererComponent.setFont(new Font("Tahoma", Font.PLAIN, 10));
// }
// rendererComponent.setText(((MapContext) node.getUserObject()).getTitle());
// } else if (node.getUserObject() instanceof MapLayer) {
// MapLayer layer = (MapLayer) node.getUserObject();
//
// rendererComponent.setFont(new Font("Arial", Font.PLAIN, 9));
//
// //choose icon from datastoretype
// DataStore ds = layer.getFeatureSource().getDataStore();
//
// if (layer.getFeatureSource().getSchema().getName().getLocalPart().equals("GridCoverage")) {
// rendererComponent.setIcon((layer.isVisible()) ? ICON_LAYER_FILE_RASTER_VISIBLE : ICON_LAYER_FILE_RASTER_UNVISIBLE);
// } else if (AbstractFileDataStore.class.isAssignableFrom(ds.getClass())) {
// rendererComponent.setIcon((layer.isVisible()) ? ICON_LAYER_FILE_VECTOR_VISIBLE : ICON_LAYER_FILE_VECTOR_UNVISIBLE);
// } else if (JDBC1DataStore.class.isAssignableFrom(ds.getClass())) {
// rendererComponent.setIcon((layer.isVisible()) ? ICON_LAYER_DB_VISIBLE : ICON_LAYER_DB_UNVISIBLE);
// } else {
// rendererComponent.setIcon((layer.isVisible()) ? ICON_LAYER_VISIBLE : ICON_LAYER_UNVISIBLE);
// }
//
// rendererComponent.setText(layer.getTitle());
// } else {
// rendererComponent.setText(arg0.getValue().toString());
// }
}
//should never happen
else{
rendererComponent.setIcon(arg0.getIcon());
rendererComponent.setText(arg0.getValue().toString());
rendererComponent.setFont(new Font("Tahoma", Font.BOLD, 8));
}
}
}