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