/******************************************************************************* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 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 } } }