/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 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.*; import javax.swing.border.AbstractBorder; import javax.swing.plaf.UIResource; import de.muntjak.tinylookandfeel.*; /** * TinyPopupMenuBorder * * @version 1.0 * @author Hans Bickel */ 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]; } }