/******************************************************************************* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 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.Component; import java.awt.Graphics; import java.awt.Insets; import javax.swing.border.AbstractBorder; import javax.swing.plaf.UIResource; import de.muntjak.tinylookandfeel.Theme; /** * TinyPopupMenuBorder * * @version 1.0 * @author Hans Bickel */ @SuppressWarnings ( { "all" } ) public class TinyPopupMenuBorder extends AbstractBorder implements UIResource { /** * Draws a simple 3d border for the given component. * * @param mainColor The component to draw its border. * @param g The graphics context. * @param x The x coordinate of the top left corner. * @param y The y coordinate of the top left corner. * @param w The width. * @param h The height. */ public void paintBorder ( Component c, Graphics g, int x, int y, int w, int h ) { switch ( Theme.derivedStyle [ Theme.style ] ) { case Theme.TINY_STYLE : drawTinyBorder ( g, x, y, w, h ); break; case Theme.W99_STYLE : drawWinBorder ( g, x, y, w, h ); break; case Theme.YQ_STYLE : drawXpBorder ( g, x, y, w, h ); break; } } private void drawTinyBorder ( Graphics g, int x, int y, int w, int h ) { } private void drawWinBorder ( Graphics g, int x, int y, int w, int h ) { g.translate ( x, y ); // Inner highlight: g.setColor ( Theme.menuInnerHilightColor [ Theme.style ].getColor () ); g.drawLine ( 1, 1, w - 3, 1 ); g.drawLine ( 1, 1, 1, h - 3 ); // Inner shadow: g.setColor ( Theme.menuInnerShadowColor [ Theme.style ].getColor () ); g.drawLine ( w - 2, 1, w - 2, h - 2 ); g.drawLine ( 1, h - 2, w - 2, h - 2 ); // Outer highlight: g.setColor ( Theme.menuOuterHilightColor [ Theme.style ].getColor () ); g.drawLine ( 0, 0, w - 2, 0 ); g.drawLine ( 0, 0, 0, h - 1 ); // Outer shadow: g.setColor ( Theme.menuOuterShadowColor [ Theme.style ].getColor () ); g.drawLine ( w - 1, 0, w - 1, h - 1 ); g.drawLine ( 0, h - 1, w - 1, h - 1 ); g.translate ( -x, -y ); } private void drawXpBorder ( Graphics g, int x, int y, int w, int h ) { g.translate ( x, y ); // Inner highlight: g.setColor ( Theme.menuInnerHilightColor [ Theme.style ].getColor () ); g.drawLine ( 1, 1, w - 3, 1 ); g.drawLine ( 1, 1, 1, h - 3 ); // Inner shadow: g.setColor ( Theme.menuInnerShadowColor [ Theme.style ].getColor () ); g.drawLine ( w - 2, 1, w - 2, h - 2 ); g.drawLine ( 1, h - 2, w - 2, h - 2 ); // Outer highlight: g.setColor ( Theme.menuOuterHilightColor [ Theme.style ].getColor () ); g.drawLine ( 0, 0, w - 2, 0 ); g.drawLine ( 0, 0, 0, h - 1 ); // Outer shadow: g.setColor ( Theme.menuOuterShadowColor [ Theme.style ].getColor () ); g.drawLine ( w - 1, 0, w - 1, h - 1 ); g.drawLine ( 0, h - 1, w - 1, h - 1 ); g.translate ( -x, -y ); } /** * Gets the border insets for a given component. * * @param mainColor The component to get its border insets. * @return Always returns the same insets as defined in <code>insets</code>. */ public Insets getBorderInsets ( Component c ) { return Theme.menuBorderInsets [ Theme.style ]; } }