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