/*******************************************************************************
* Copyright (c) 2010 Stefan A. Tzeggai.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Public License v2.0
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
*
* Contributors:
* Stefan A. Tzeggai - initial API and implementation
******************************************************************************/
package org.geopublishing.geopublisher.gui.datapool;
import java.awt.Color;
import java.awt.Component;
import java.util.List;
import java.util.Vector;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableCellRenderer;
import org.apache.log4j.Logger;
import org.geopublishing.atlasViewer.dp.layer.LayerStyle;
import de.schmitzm.swing.SwingUtil;
/**
* A {@link TableCellRenderer} that renders a sub-table listing the available
* views.
*
* @author Stefan A. Tzeggai
*/
public class LayerViewsTableCellRenderer extends DefaultTableCellRenderer {
Logger LOGGER = Logger.getLogger(LayerViewsTableCellRenderer.class);
public LayerViewsTableCellRenderer() {
setHorizontalAlignment(SwingConstants.LEFT);
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
if (value instanceof List && (!((List<LayerStyle>) value).isEmpty())) {
List<LayerStyle> styles = (List<LayerStyle>) value;
Vector<String> cols = new Vector<String>();
cols.add(""); // Added but is never shown, still cols need the right amount of values
Box stylesBox = new Box(BoxLayout.Y_AXIS);
Vector<Vector<String>> titles = new Vector<Vector<String>>();
for (LayerStyle ls : styles) {
JLabel styleNameLabel = new JLabel(ls.getTitle().toString());
stylesBox.add(styleNameLabel);
Vector<String> row1 = new Vector<String>();
// row1.add(ls.getFilename());
row1.add(ls.getTitle().toString());
titles.add(row1);
}
JTable stylesTable = new JTable(titles, cols);
stylesTable.setTableHeader(null);
if (isSelected)
stylesTable.getSelectionModel().addSelectionInterval(0, 1000);
else
stylesTable.getSelectionModel().clearSelection();
stylesTable.setShowVerticalLines(false);
stylesTable.setGridColor(new Color(210, 210, 210));
//
if (stylesTable.getPreferredSize().getHeight() > 7) {
SwingUtil.setPreferredHeight(stylesTable, (int) stylesTable
.getPreferredSize().getHeight() - 7);
SwingUtil.setPreferredWidth(stylesTable, (int) stylesTable
.getPreferredSize().getWidth() + 2);
}
return stylesTable;
} else
return super.getTableCellRendererComponent(table, "", isSelected,
hasFocus, row, column);
}
}