/*******************************************************************************
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* 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;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JComponent;
import javax.swing.JSeparator;
import javax.swing.JToolBar;
import javax.swing.plaf.ComponentUI;
import javax.swing.plaf.basic.BasicToolBarSeparatorUI;
/**
* ToolBarSeparatorUI
*
* @version 1.0
* @author Hans Bickel
*/
@SuppressWarnings (
{ "all" } )
public class TinyToolBarSeparatorUI extends BasicToolBarSeparatorUI
{
private static final int W99_SIZE = 6;
private static final int YQ_SIZE = 7;
private int defaultSize = YQ_SIZE;
public static ComponentUI createUI ( JComponent c )
{
return new TinyToolBarSeparatorUI ();
}
/**
* Overridden to do nothing
*/
protected void installDefaults ( JSeparator s )
{
if ( Theme.derivedStyle [ Theme.style ] == Theme.W99_STYLE )
{
defaultSize = W99_SIZE;
}
}
public Dimension getMinimumSize ( JComponent c )
{
JToolBar.Separator sep = ( JToolBar.Separator ) c;
if ( sep.getOrientation () == JSeparator.HORIZONTAL )
{
return new Dimension ( 0, 1 );
}
else
{
return new Dimension ( 1, 0 );
}
}
public Dimension getMaximumSize ( JComponent c )
{
JToolBar.Separator sep = ( JToolBar.Separator ) c;
Dimension size = sep.getSeparatorSize ();
if ( sep.getOrientation () == JSeparator.HORIZONTAL )
{
if ( size != null )
return new Dimension ( 32767, size.height );
return new Dimension ( 32767, defaultSize );
}
else
{
if ( size != null )
return new Dimension ( 32767, size.width );
return new Dimension ( defaultSize, 32767 );
}
}
public Dimension getPreferredSize ( JComponent c )
{
JToolBar.Separator sep = ( JToolBar.Separator ) c;
Dimension size = sep.getSeparatorSize ();
if ( size != null )
return size.getSize ();
if ( sep.getOrientation () == JSeparator.HORIZONTAL )
{
return new Dimension ( 0, defaultSize );
}
else
{
return new Dimension ( defaultSize, 0 );
}
}
public void paint ( Graphics g, JComponent c )
{
switch ( Theme.derivedStyle [ Theme.style ] )
{
case Theme.TINY_STYLE :
drawTinyToolBarSeparator ( g, c );
break;
case Theme.W99_STYLE :
drawWinToolBarSeparator ( g, c );
break;
case Theme.YQ_STYLE :
drawXpToolBarSeparator ( g, c );
break;
}
}
protected void drawTinyToolBarSeparator ( Graphics g, JComponent c )
{
}
protected void drawWinToolBarSeparator ( Graphics g, JComponent c )
{
JToolBar.Separator sep = ( JToolBar.Separator ) c;
if ( sep.getOrientation () == JSeparator.HORIZONTAL )
{
Container cont = c.getParent ();
int y = sep.getPreferredSize ().height / 2 - 1; // centered if height is
// even
g.setColor ( Theme.toolSepDarkColor [ Theme.style ].getColor () );
g.drawLine ( 1, y, cont.getWidth () - 6, y );
g.setColor ( Theme.toolSepLightColor [ Theme.style ].getColor () );
g.drawLine ( 1, y + 1, cont.getWidth () - 6, y + 1 );
}
else
{
int x = sep.getPreferredSize ().width / 2 - 1; // centered if height is
// even
g.setColor ( Theme.toolSepDarkColor [ Theme.style ].getColor () );
g.drawLine ( x, 0, x, sep.getHeight () );
g.setColor ( Theme.toolSepLightColor [ Theme.style ].getColor () );
g.drawLine ( x + 1, 0, x + 1, sep.getHeight () );
}
}
protected void drawXpToolBarSeparator ( Graphics g, JComponent c )
{
JToolBar.Separator sep = ( JToolBar.Separator ) c;
if ( sep.getOrientation () == JSeparator.HORIZONTAL )
{
int y = sep.getHeight () / 2; // centered if height is odd
g.setColor ( Theme.toolSepDarkColor [ Theme.style ].getColor () );
g.drawLine ( 0, y, sep.getWidth (), y );
}
else
{
int x = sep.getWidth () / 2; // centered if width is odd
g.setColor ( Theme.toolSepDarkColor [ Theme.style ].getColor () );
g.drawLine ( x, 0, x, sep.getHeight () );
}
}
}