/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 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.*; import javax.swing.JToolBar; import javax.swing.plaf.metal.MetalBorders.ToolBarBorder; import de.muntjak.tinylookandfeel.Theme; import de.muntjak.tinylookandfeel.TinyToolBarUI; import de.muntjak.tinylookandfeel.controlpanel.DrawRoutines; /** * TinyToolBarBorder * * @version 1.0 * @author Hans Bickel */ 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); } }