You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
144 lines
4.2 KiB
144 lines
4.2 KiB
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
|
* 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.*; |
|
import javax.swing.*; |
|
|
|
import javax.swing.plaf.ComponentUI; |
|
import javax.swing.plaf.UIResource; |
|
import javax.swing.plaf.basic.BasicToolBarSeparatorUI; |
|
|
|
/** |
|
* ToolBarSeparatorUI |
|
* |
|
* @version 1.0 |
|
* @author Hans Bickel |
|
*/ |
|
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()); |
|
} |
|
} |
|
}
|
|
|