/******************************************************************************* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 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.JToolBar; import javax.swing.plaf.metal.MetalBorders.ToolBarBorder; import de.muntjak.tinylookandfeel.Theme; import de.muntjak.tinylookandfeel.TinyToolBarUI; /** * TinyToolBarBorder * * @version 1.0 * @author Hans Bickel */ @SuppressWarnings ( { "all" } ) public class TinyToolBarBorder extends ToolBarBorder { public Insets getBorderInsets ( Component c ) { return getBorderInsets ( c, new Insets ( 0, 0, 0, 0 ) ); } public Insets getBorderInsets ( Component c, Insets newInsets ) { newInsets.top = newInsets.left = newInsets.bottom = newInsets.right = 2; // we cannot assume that c is a JToolBar if ( ! ( c instanceof JToolBar ) ) return newInsets; if ( ( ( JToolBar ) c ).isFloatable () ) { if ( ( ( JToolBar ) c ).getOrientation () == HORIZONTAL ) { if ( c.getComponentOrientation ().isLeftToRight () ) { newInsets.left = TinyToolBarUI.floatableGripSize + 2; } else { newInsets.right = TinyToolBarUI.floatableGripSize + 2; } } else { // vertical newInsets.top = TinyToolBarUI.floatableGripSize + 2; } } Insets margin = ( ( JToolBar ) c ).getMargin (); if ( margin != null ) { newInsets.left += margin.left; newInsets.top += margin.top; newInsets.right += margin.right; newInsets.bottom += margin.bottom; } return newInsets; } public void paintBorder ( Component c, Graphics g, int x, int y, int w, int h ) { if ( ! ( c instanceof JToolBar ) ) return; switch ( Theme.derivedStyle [ Theme.style ] ) { case Theme.TINY_STYLE : drawTinyBorder ( c, g, x, y, w, h ); break; case Theme.W99_STYLE : drawWinBorder ( c, g, x, y, w, h ); break; case Theme.YQ_STYLE : // paint WIN border drawWinBorder ( c, g, x, y, w, h ); break; } if ( ( ( JToolBar ) c ).getOrientation () == HORIZONTAL ) { g.setColor ( Theme.toolBarLightColor [ Theme.style ].getColor () ); g.drawLine ( x, y, w - 1, y ); // top g.setColor ( Theme.toolBarDarkColor [ Theme.style ].getColor () ); g.drawLine ( x, h - 1, w - 1, h - 1 ); // bottom } else { g.setColor ( Theme.toolBarLightColor [ Theme.style ].getColor () ); g.drawLine ( x, y, x, h - 1 ); // left g.setColor ( Theme.toolBarDarkColor [ Theme.style ].getColor () ); g.drawLine ( w - 1, y, w - 1, h - 1 ); // right } } protected void drawTinyBorder ( Component c, Graphics g, int x, int y, int w, int h ) { } protected void drawWinBorder ( Component c, Graphics g, int x, int y, int w, int h ) { g.translate ( x, y ); if ( ( ( JToolBar ) c ).isFloatable () ) { // paint grip if ( ( ( JToolBar ) c ).getOrientation () == HORIZONTAL ) { int xoff = 3; if ( !c.getComponentOrientation ().isLeftToRight () ) { xoff = c.getBounds ().width - TinyToolBarUI.floatableGripSize + 3; } g.setColor ( Theme.toolGripLightColor [ Theme.style ].getColor () ); g.drawLine ( xoff, 3, xoff + 1, 3 ); g.drawLine ( xoff, 3, xoff, h - 5 ); g.setColor ( Theme.toolGripDarkColor [ Theme.style ].getColor () ); g.drawLine ( xoff, h - 4, xoff + 1, h - 4 ); g.drawLine ( xoff + 2, 3, xoff + 2, h - 4 ); } else { // vertical g.setColor ( Theme.toolGripLightColor [ Theme.style ].getColor () ); g.drawLine ( 3, 3, 3, 4 ); g.drawLine ( 3, 3, w - 4, 3 ); g.setColor ( Theme.toolGripDarkColor [ Theme.style ].getColor () ); g.drawLine ( w - 4, 4, w - 4, 5 ); g.drawLine ( 3, 5, w - 4, 5 ); } } g.translate ( -x, -y ); } }