/*
|
* CDDL HEADER START
|
*
|
* The contents of this file are subject to the terms of the
|
* Common Development and Distribution License, Version 1.0 only
|
* (the "License"). You may not use this file except in compliance
|
* with the License.
|
*
|
* You can obtain a copy of the license at
|
* trunk/opends/resource/legal-notices/OpenDS.LICENSE
|
* or https://OpenDS.dev.java.net/OpenDS.LICENSE.
|
* See the License for the specific language governing permissions
|
* and limitations under the License.
|
*
|
* When distributing Covered Code, include this CDDL HEADER in each
|
* file and include the License file at
|
* trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
|
* add the following below this CDDL HEADER, with the fields enclosed
|
* by brackets "[]" replaced with your own identifying information:
|
* Portions Copyright [yyyy] [name of copyright owner]
|
*
|
* CDDL HEADER END
|
*
|
*
|
* Copyright 2008-2009 Sun Microsystems, Inc.
|
*/
|
|
package org.opends.guitools.controlpanel.ui.renderer;
|
|
import java.awt.Component;
|
|
import javax.swing.BorderFactory;
|
import javax.swing.JComponent;
|
import javax.swing.JTable;
|
import javax.swing.border.Border;
|
import javax.swing.table.DefaultTableCellRenderer;
|
import javax.swing.table.TableCellRenderer;
|
|
import org.opends.guitools.controlpanel.ui.ColorAndFontConstants;
|
import org.opends.guitools.controlpanel.ui.components.LabelWithHelpIcon;
|
import org.opends.guitools.controlpanel.util.Utilities;
|
import org.opends.messages.Message;
|
|
/**
|
* Class used to render the tables.
|
*/
|
public class CustomCellRenderer extends LabelWithHelpIcon
|
implements TableCellRenderer
|
{
|
private static final long serialVersionUID = -8604332267021523835L;
|
/**
|
* The border of the first column.
|
*/
|
protected final static Border column0Border =
|
BorderFactory.createCompoundBorder(
|
BorderFactory.createMatteBorder(0, 1, 0, 0,
|
ColorAndFontConstants.gridColor),
|
BorderFactory.createEmptyBorder(4, 4, 4, 4));
|
/**
|
* The default border.
|
*/
|
public final static Border defaultBorder =
|
BorderFactory.createEmptyBorder(4, 4, 4, 4);
|
private static Border defaultFocusBorder;
|
|
/**
|
* Default constructor.
|
*/
|
public CustomCellRenderer()
|
{
|
super(Message.EMPTY, null);
|
setHelpIconVisible(false);
|
setFont(ColorAndFontConstants.tableFont);
|
setOpaque(true);
|
setBackground(ColorAndFontConstants.treeBackground);
|
setForeground(ColorAndFontConstants.treeForeground);
|
}
|
|
/**
|
* {@inheritDoc}
|
*/
|
public Component getTableCellRendererComponent(JTable table, Object value,
|
boolean isSelected, boolean hasFocus, int row, int column) {
|
if (value instanceof String)
|
{
|
String s = (String)value;
|
if (s.indexOf("<html>") == 0)
|
{
|
value = "<html>"+
|
Utilities.applyFont(s.substring(6), ColorAndFontConstants.tableFont);
|
}
|
setText((String)value);
|
}
|
else
|
{
|
setText(String.valueOf(value));
|
}
|
|
if (hasFocus)
|
{
|
setBorder(getDefaultFocusBorder(table, value, isSelected, row, column));
|
}
|
else if (column == 0)
|
{
|
setBorder(column0Border);
|
}
|
else
|
{
|
setBorder(defaultBorder);
|
}
|
return this;
|
}
|
|
/**
|
* Returns the border to be used for a given cell in a table.
|
* @param table the table.
|
* @param value the value to be rendered.
|
* @param isSelected whether the row is selected or not.
|
* @param row the row number of the cell.
|
* @param column the column number of the cell.
|
* @return the border to be used for a given cell in a table.
|
*/
|
public static Border getDefaultFocusBorder(JTable table, Object value,
|
boolean isSelected, int row, int column)
|
{
|
if (defaultFocusBorder == null)
|
{
|
DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
|
JComponent comp = (JComponent)
|
renderer.getTableCellRendererComponent(table, value, isSelected,
|
true, row, column);
|
Border border = comp.getBorder();
|
if (border != null)
|
{
|
defaultFocusBorder = border;
|
}
|
else
|
{
|
defaultFocusBorder = defaultBorder;
|
}
|
}
|
return defaultFocusBorder;
|
}
|
}
|