/*******************************************************************************
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Tiny Look and Feel * * (C) Copyright 2003 - 2007 Hans Bickel * * For
* licensing information and credits, please refer to the * comment in file
* de.muntjak.tinylookandfeel.TinyLookAndFeel * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*/
package de.muntjak.tinylookandfeel.borders;
import java.awt.Color;
import java.awt.Component;
import java.awt.Graphics;
import java.awt.Insets;
import javax.swing.border.AbstractBorder;
import javax.swing.plaf.UIResource;
import de.muntjak.tinylookandfeel.Theme;
import de.muntjak.tinylookandfeel.controlpanel.ColorRoutines;
/**
* TinyTableHeaderBorder is the border displayed for table headers of
* non-sortable table models and of sortable table models if the column in
* question is not the rollover column.
*
* @version 1.0
* @author Hans Bickel
*/
@SuppressWarnings (
{ "all" } )
public class TinyTableHeaderBorder extends AbstractBorder implements UIResource
{
protected static final Insets insets98 = new Insets ( 1, 1, 1, 1 );
protected static final Insets insetsXP = new Insets ( 3, 0, 3, 2 );
protected Color color1, color2, color3, color4, color5;
public Insets getBorderInsets ( Component c )
{
if ( Theme.derivedStyle [ Theme.style ] == Theme.YQ_STYLE )
{
return insetsXP;
}
return insets98;
}
public Insets getBorderInsets ( Component c, Insets insets )
{
if ( Theme.derivedStyle [ Theme.style ] == Theme.YQ_STYLE )
{
insets.left = insetsXP.left;
insets.top = insetsXP.top;
insets.right = insetsXP.right;
insets.bottom = insetsXP.bottom;
}
else
{
insets.left = insets98.left;
insets.top = insets98.top;
insets.right = insets98.right;
insets.bottom = insets98.bottom;
}
return insets;
}
public void paintBorder ( Component c, Graphics g, int x, int y, int w, int h )
{
if ( Theme.derivedStyle [ Theme.style ] == Theme.YQ_STYLE )
{
if ( color1 == null )
{
color1 = ColorRoutines.darken ( c.getBackground (), 5 );
color2 = ColorRoutines.darken ( c.getBackground (), 10 );
color3 = ColorRoutines.darken ( c.getBackground (), 15 );
color4 = Theme.tableHeaderDarkColor [ Theme.style ].getColor ();
color5 = Theme.tableHeaderLightColor [ Theme.style ].getColor ();
}
// paint 3 bottom lines
g.setColor ( color1 );
g.drawLine ( x, y + h - 3, x + w - 1, y + h - 3 );
g.setColor ( color2 );
g.drawLine ( x, y + h - 2, x + w - 1, y + h - 2 );
g.setColor ( color3 );
g.drawLine ( x, y + h - 1, x + w - 1, y + h - 1 );
// paint separator
g.setColor ( color4 );
g.drawLine ( x + w - 2, y + 3, x + w - 2, y + h - 5 );
g.setColor ( color5 );
g.drawLine ( x + w - 1, y + 3, x + w - 1, y + h - 5 );
}
else
{ // 98 style
if ( color4 == null )
{
color4 = Theme.tableHeaderLightColor [ Theme.style ].getColor ();
color5 = Theme.tableHeaderDarkColor [ Theme.style ].getColor ();
}
g.setColor ( color4 );
g.drawLine ( x, y, x, y + h - 1 ); // left
g.drawLine ( x, y, x + w - 1, y ); // top
g.setColor ( color5 );
g.drawLine ( x + w - 1, y, x + w - 1, y + h - 1 ); // right
g.drawLine ( x, y + h - 1, x + w - 1, y + h - 1 ); // bottom
}
}
}