/* * (C) Copyright 2005 Nilo J. Gonzalez * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser Gereral Public Licence as published by the Free * Software Foundation; either version 2 of the Licence, or (at your opinion) any * later version. * * This library is distributed in the hope that it will be usefull, but WITHOUT ANY * WARRANTY; without even the implied warranty of merchantability or fitness for a * particular purpose. See the GNU Lesser General Public Licence for more details. * * You should have received a copy of the GNU Lesser General Public Licence along * with this library; if not, write to the Free Software Foundation, Inc., 59 * Temple Place, Suite 330, Boston, Ma 02111-1307 USA. * * http://www.gnu.org/licenses/lgpl.html (English) * http://gugs.sindominio.net/gnu-gpl/lgpl-es.html (Espa�ol) * * * Original author: Nilo J. Gonzalez */ /** * Esta clase dibuja varios de los iconos que se usan a lo largo de todo el LookAndFeel. * Esta es la clase que hace el trabajo duro de pintar checkboxes, radios, sliders... Consta de * varias inner clases privadas y de funciones que las dan acceso. Las inner clases mas o menos * son todas iguales: pintan un icono base leido de un archivo PNG, segun cual sea el estado del * objeto (seleccionado, inactivo...) le dan una capa de color y si es necesario vuelven a pintar * otro icono. * Podria hacerse mas sencillo pintando un unico icono segun el estado del componente, teniendo * un PNG por cada estado, pero entonces no se podria usar colores en ellos porque si cambiara el * color de seleccion o foco, por ejemplo a verde, todos los objetos de la aplicacion se pintarian * seleccionados en verde menos los iconos, que se pintarian con el color con que hubieramos pintado * el PNG, dando un aspecto inconsistente. Por eso se pinta un icono trasparente y una capa de color * cuando hace falta, para decidir en tiempo real cual es el color apropiado. * @author Nilo J. Gonzalez */ package com.nilo.plaf.nimrod; import java.awt.*; import javax.swing.*; import javax.swing.plaf.UIResource; import java.io.Serializable; public class NimRODIconFactory implements Serializable { private static final long serialVersionUID = 7191199335114123414L; private static Icon checkBoxIcon; private static Icon radioButtonIcon; private static Icon checkBoxMenuItemIcon; private static Icon radioButtonMenuItemIcon; private static Icon sliderHorizIcon; private static Icon sliderVertIcon; private static Icon treeCollapsedIcon; private static Icon treeExpandedIcon; private static Icon bandaMenuItemIcon; private static Icon comboFlechaIcon; private static Icon scrollNorthIcon; private static Icon scrollSouthIcon; private static Icon scrollEastIcon; private static Icon scrollWestIcon; private static Icon frameCloseIcon; private static Icon frameMaxIcon; private static Icon frameMinIcon; private static Icon frameAltMaximizeIcon; private static Icon spinnerNextIcon; private static Icon spinnerPreviousIcon; public static Icon getSpinnerNextIcon() { if ( spinnerNextIcon == null ) { spinnerNextIcon = new SpinnerNextIcon(); } return spinnerNextIcon; } public static Icon getSpinnerPreviousIcon() { if ( spinnerPreviousIcon == null ) { spinnerPreviousIcon = new SpinnerPreviousIcon(); } return spinnerPreviousIcon; } public static Icon getFrameCloseIcon() { if ( frameCloseIcon == null ) { frameCloseIcon = new FrameGenericIcon( "InternalFrame.NimCloseIcon", "InternalFrame.NimCloseIconRoll", "InternalFrame.NimCloseIconPush"); } return frameCloseIcon; } public static Icon getFrameMaxIcon() { if ( frameMaxIcon == null ) { frameMaxIcon = new FrameGenericIcon( "InternalFrame.NimMaxIcon", "InternalFrame.NimMaxIconRoll", "InternalFrame.NimMaxIconPush"); } return frameMaxIcon; } public static Icon getFrameMinIcon() { if ( frameMinIcon == null ) { frameMinIcon = new FrameGenericIcon( "InternalFrame.NimMinIcon", "InternalFrame.NimMinIconRoll", "InternalFrame.NimMinIconPush"); } return frameMinIcon; } public static Icon getFrameAltMaximizeIcon() { if ( frameAltMaximizeIcon == null ) { frameAltMaximizeIcon = new FrameGenericIcon( "InternalFrame.NimResizeIcon", "InternalFrame.NimResizeIconRoll", "InternalFrame.NimResizeIconPush"); } return frameAltMaximizeIcon; } public static Icon getComboFlechaIcon() { if ( comboFlechaIcon == null ) { comboFlechaIcon = new ComboFlechaIcon(); } return comboFlechaIcon; } public static Icon getBandaMenuItemIcon() { if ( bandaMenuItemIcon == null ) { bandaMenuItemIcon = new BandaMenuItemIcon(); } return bandaMenuItemIcon; } public static Icon getCheckBoxIcon() { if ( checkBoxIcon == null ) { checkBoxIcon = new CheckBoxIcon(); } return checkBoxIcon; } public static Icon getRadioButtonIcon() { if ( radioButtonIcon == null ) { radioButtonIcon = new RadioButtonIcon(); } return radioButtonIcon; } public static Icon getCheckBoxMenuItemIcon() { if ( checkBoxMenuItemIcon == null ) { checkBoxMenuItemIcon = new CheckBoxMenuItemIcon(); } return checkBoxMenuItemIcon; } public static Icon getRadioButtonMenuItemIcon() { if ( radioButtonMenuItemIcon == null ) { radioButtonMenuItemIcon = new RadioButtonMenuItemIcon(); } return radioButtonMenuItemIcon; } public static Icon getSliderVerticalIcon() { if ( sliderVertIcon == null ) { sliderVertIcon = new SliderVerticalIcon(); } return sliderVertIcon; } public static Icon getSliderHorizontalIcon() { if ( sliderHorizIcon == null ) { sliderHorizIcon = new SliderHorizontalIcon(); } return sliderHorizIcon; } public static Icon getTreeCollapsedIcon() { if ( treeCollapsedIcon == null ) { treeCollapsedIcon = new TreeCollapsedIcon(); } return treeCollapsedIcon; } public static Icon getTreeExpandedIcon() { if ( treeExpandedIcon == null ) { treeExpandedIcon = new TreeExpandedIcon(); } return treeExpandedIcon; } public static Icon getScrollBarNorthButtonIcon() { if ( scrollNorthIcon == null ) { scrollNorthIcon = new ScrollBarNorthButtonIcon(); } return scrollNorthIcon; } public static Icon getScrollBarSouthButtonIcon() { if ( scrollSouthIcon == null ) { scrollSouthIcon = new ScrollBarSouthButtonIcon(); } return scrollSouthIcon; } public static Icon getScrollBarEastButtonIcon() { if ( scrollEastIcon == null ) { scrollEastIcon = new ScrollBarEastButtonIcon(); } return scrollEastIcon; } public static Icon getScrollBarWestButtonIcon() { if ( scrollWestIcon == null ) { scrollWestIcon = new ScrollBarWestButtonIcon(); } return scrollWestIcon; } /******************************************************************************************/ private static class ComboFlechaIcon implements Icon, UIResource, Serializable { private static final long serialVersionUID = -3071886619903027901L; private int w, h; public ComboFlechaIcon() { w = 15; h = 15; } public void paintIcon( Component c, Graphics g, int x, int y ) { Icon icon = UIManager.getIcon( "ComboBox.flechaIcon"); w = icon.getIconWidth(); h = icon.getIconHeight(); icon.paintIcon( c, g, x, y); g.setColor( NimRODLookAndFeel.getFocusColor()); g.drawLine( x+2, y+5, x+7, y+10); g.drawLine( x+7, y+10, x+12, y+5); g.drawLine( x+2, y+4, x+7, y+9); g.drawLine( x+7, y+9, x+12, y+4); } public int getIconWidth() { return w; } public int getIconHeight() { return h; } } /******************************************************************************************/ private static class ScrollBarNorthButtonIcon implements Icon, UIResource, Serializable { private static final long serialVersionUID = -3074532619903027901L; private int w, h; public ScrollBarNorthButtonIcon() { w = 15; h = 15; } public void paintIcon( Component c, Graphics g, int x, int y ) { Icon icon = UIManager.getIcon( "ScrollBar.northButtonIconImage"); w = icon.getIconWidth(); h = icon.getIconHeight(); icon.paintIcon( c, g, x, y); g.setColor( NimRODLookAndFeel.getFocusColor()); g.drawLine( x+2, y+8, x+7, y+3); g.drawLine( x+7, y+3, x+12, y+8); g.drawLine( x+2, y+9, x+7, y+4); g.drawLine( x+7, y+4, x+12, y+9); } public int getIconWidth() { return w; } public int getIconHeight() { return h; } } /******************************************************************************************/ private static class ScrollBarSouthButtonIcon implements Icon, UIResource, Serializable { private static final long serialVersionUID = -3074532619903027901L; private int w, h; public ScrollBarSouthButtonIcon() { w = 15; h = 15; } public void paintIcon( Component c, Graphics g, int x, int y ) { Icon icon = UIManager.getIcon( "ScrollBar.southButtonIconImage"); w = icon.getIconWidth(); h = icon.getIconHeight(); icon.paintIcon( c, g, x, y); g.setColor( NimRODLookAndFeel.getFocusColor()); g.drawLine( x+2, y+5, x+7, y+10); g.drawLine( x+7, y+10, x+12, y+5); g.drawLine( x+2, y+6, x+7, y+11); g.drawLine( x+7, y+11, x+12, y+6); } public int getIconWidth() { return w; } public int getIconHeight() { return h; } } /******************************************************************************************/ private static class ScrollBarEastButtonIcon implements Icon, UIResource, Serializable { private static final long serialVersionUID = -3074532619903027901L; private int w, h; public ScrollBarEastButtonIcon() { w = 15; h = 15; } public void paintIcon( Component c, Graphics g, int x, int y ) { Icon icon = UIManager.getIcon( "ScrollBar.eastButtonIconImage"); w = icon.getIconWidth(); h = icon.getIconHeight(); icon.paintIcon( c, g, x, y); g.setColor( NimRODLookAndFeel.getFocusColor()); g.drawLine( x+5, y+2, x+10, y+7); g.drawLine( x+10, y+7, x+5, y+12); g.drawLine( x+6, y+2, x+11, y+7); g.drawLine( x+11, y+7, x+6, y+12); } public int getIconWidth() { return w; } public int getIconHeight() { return h; } } /******************************************************************************************/ private static class ScrollBarWestButtonIcon implements Icon, UIResource, Serializable { private static final long serialVersionUID = -3074532619903027901L; private int w, h; public ScrollBarWestButtonIcon() { w = 15; h = 15; } public void paintIcon( Component c, Graphics g, int x, int y ) { Icon icon = UIManager.getIcon( "ScrollBar.westButtonIconImage"); w = icon.getIconWidth(); h = icon.getIconHeight(); icon.paintIcon( c, g, x, y); g.setColor( NimRODLookAndFeel.getFocusColor()); g.drawLine( x+9, y+2, x+4, y+7); g.drawLine( x+4, y+7, x+9, y+12); g.drawLine( x+10, y+2, x+5, y+7); g.drawLine( x+5, y+7, x+10, y+12); } public int getIconWidth() { return w; } public int getIconHeight() { return h; } } /******************************************************************************************/ private static class CheckBoxIcon implements Icon, UIResource, Serializable { private static final long serialVersionUID = 7191199235214123414L; private int w, h; public CheckBoxIcon() { w = 21; h = 21; } public void paintIcon( Component c, Graphics g, int x, int y ) { JCheckBox b = (JCheckBox) c; ButtonModel model = b.getModel(); boolean isEnabled = model.isEnabled(); boolean isOn = model.isSelected() || model.isPressed(); g.setColor( NimRODLookAndFeel.getControl()); g.fillRect( x+4,y+3, 13,15); g.drawLine( x+3,y+4, x+3,y+16); g.drawLine( x+17,y+4, x+17,y+16); Icon icono = UIManager.getIcon( "CheckBox.iconBase"); icono.paintIcon( c, g, x, y); if ( isOn ) { g.setColor( NimRODLookAndFeel.getFocusColor()); g.fillRect( x+4,y+3, 13,15); g.drawLine( x+3,y+4, x+3,y+16); g.drawLine( x+17,y+4, x+17,y+16); } if ( model.isArmed() && isEnabled ) { g.setColor( new Color( 255,255,155, 127)); g.fillRect( x+5,y+5, 11,11); } if ( isOn ) { icono = UIManager.getIcon( "CheckBox.iconTick"); icono.paintIcon( c, g, x, y); } } public int getIconWidth() { return w; } public int getIconHeight() { return h; } } /******************************************************************************************/ private static class RadioButtonIcon implements Icon, UIResource, Serializable { private static final long serialVersionUID = 7191299335214123414L; private int w, h; public RadioButtonIcon() { w = 21; h = 21; } public void paintIcon( Component c, Graphics g, int x, int y ) { JRadioButton b = (JRadioButton) c; ButtonModel model = b.getModel(); boolean isEnabled = model.isEnabled(); boolean isOn = model.isSelected() || model.isPressed(); Graphics2D g2D = (Graphics2D)g; g2D.setRenderingHint( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2D.setColor( NimRODLookAndFeel.getControl()); g2D.fillOval( x+3,y+3, 15,15); Icon icono = UIManager.getIcon( "RadioButton.iconBase"); icono.paintIcon( c, g, x, y); if ( isOn ) { g2D.setColor( NimRODLookAndFeel.getFocusColor()); g2D.fillOval( x+3,y+3, 15,15); } if ( model.isArmed() && isEnabled ) { g2D.setColor( new Color( 255,255,155, 127)); g2D.fillOval( x+5,y+5, 11,11); } if ( isOn ) { icono = UIManager.getIcon( "RadioButton.iconTick"); icono.paintIcon( c, g, x, y); } g2D.setRenderingHint( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_DEFAULT); } public int getIconWidth() { return w; } public int getIconHeight() { return h; } } /******************************************************************************************/ private static class CheckBoxMenuItemIcon implements Icon, UIResource, Serializable { private static final long serialVersionUID = 7291199335214123414L; private int w, h; public CheckBoxMenuItemIcon() { w = 21; h = 0; } public void paintIcon( Component c, Graphics g, int x, int y ) { JMenuItem b = (JMenuItem) c; ButtonModel model = b.getModel(); x = 1; y = 0; boolean isEnabled = model.isEnabled(); boolean isOn = model.isSelected() || model.isPressed(); Icon icono = UIManager.getIcon( "MenuCheckBox.iconBase"); icono.paintIcon( c, g, x, y); if ( !isEnabled ) { g.setColor( new Color( 0,0,0, 63)); g.fillRect( x+4,y+3, 13,15); g.drawLine( x+3,y+4, x+3,y+16); g.drawLine( x+17,y+4, x+17,y+16); } else if ( isOn ) { g.setColor( NimRODLookAndFeel.getFocusColor()); g.fillRect( x+4,y+3, 13,15); g.drawLine( x+3,y+4, x+3,y+16); g.drawLine( x+17,y+4, x+17,y+16); } if ( model.isArmed() && isEnabled ) { g.setColor( new Color( 255,255,155, 127)); g.fillRect( x+5,y+5, 11,11); } if ( isOn ) { icono = UIManager.getIcon( "MenuCheckBox.iconTick"); icono.paintIcon( c, g, x, y); } g.setColor( NimRODUtils.getRolloverColor()); g.fillRect( 0,0, 22,b.getHeight()); g.setColor( NimRODUtils.getSombra()); g.drawLine( 22,0, 22,b.getHeight()); g.setColor( NimRODUtils.getBrillo()); g.drawLine( 23,0, 23,b.getHeight()); } public int getIconWidth() { return w; } public int getIconHeight() { return h; } } /******************************************************************************************/ private static class BandaMenuItemIcon implements Icon, UIResource, Serializable { private static final long serialVersionUID = 8191199335214123414L; private int w, h; public BandaMenuItemIcon() { w = 21; h = 0; // Esta chapuza es solo para que se pueda pintar como es debido en JDK 1.6 } public void paintIcon( Component c, Graphics g, int x, int y ) { JMenuItem b = (JMenuItem) c; g.setColor( NimRODUtils.getRolloverColor()); g.fillRect( 0,0, 22,b.getHeight()); g.setColor( NimRODUtils.getSombra()); g.drawLine( 22,0, 22,b.getHeight()); g.setColor( NimRODUtils.getBrillo()); g.drawLine( 23,0, 23,b.getHeight()); } public int getIconWidth() { return w; } public int getIconHeight() { return h; } } /******************************************************************************************/ private static class RadioButtonMenuItemIcon implements Icon, UIResource, Serializable { private static final long serialVersionUID = 8191199335214123414L; private int w, h; public RadioButtonMenuItemIcon() { w = 21; h = 0; } public void paintIcon( Component c, Graphics g, int x, int y ) { JMenuItem b = (JMenuItem) c; ButtonModel model = b.getModel(); x = 1; y = 0; boolean isEnabled = model.isEnabled(); boolean isOn = model.isSelected() || model.isPressed(); Icon icono = UIManager.getIcon( "MenuRadioButton.iconBase"); icono.paintIcon( c, g, x, y); Graphics2D g2D = (Graphics2D)g; g2D.setRenderingHint( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); if ( !isEnabled ) { g2D.setColor( new Color( 0,0,0, 63)); g2D.fillOval( x+3,y+3, 15,15); } else if ( isOn ) { g2D.setColor( NimRODLookAndFeel.getFocusColor()); g2D.fillOval( x+3,y+3, 15,15); } if ( model.isArmed() && isEnabled ) { g2D.setColor( new Color( 255,255,155, 127)); g2D.fillOval( x+5,y+5, 11,11); } if ( isOn ) { icono = UIManager.getIcon( "MenuRadioButton.iconTick"); icono.paintIcon( c, g, x, y); } g.setColor( NimRODUtils.getRolloverColor()); g.fillRect( 0,0, 22,b.getHeight()); g.setColor( NimRODUtils.getSombra()); g.drawLine( 22,0, 22,b.getHeight()); g.setColor( NimRODUtils.getBrillo()); g.drawLine( 23,0, 23,b.getHeight()); g2D.setRenderingHint( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_DEFAULT); } public int getIconWidth() { return w; } public int getIconHeight() { return h; } } /***************************************************************************************************************/ private static class SliderVerticalIcon implements Icon, UIResource, Serializable { private static final long serialVersionUID = 3191199335214123414L; private int w, h; public SliderVerticalIcon() { w = 21; h = 19; } public void paintIcon( Component c, Graphics g, int x, int y ) { Graphics2D g2D = (Graphics2D)g; g2D.setRenderingHint( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); if ( c.hasFocus() ) { g2D.setColor( NimRODLookAndFeel.getFocusColor()); g2D.fillOval( x+1,y+4, 17,11); } else if ( !c.isEnabled() ) { g2D.setColor( Color.gray); g2D.fillOval( x+1,y+4, 17,11); } Icon icono = UIManager.getIcon( "Slider.verticalThumbIconImage"); icono.paintIcon( c, g, x, y); g2D.setRenderingHint( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_DEFAULT); } public int getIconWidth() { return w; } public int getIconHeight() { return h; } } /***************************************************************************************************************/ private static class SliderHorizontalIcon implements Icon, UIResource, Serializable { private static final long serialVersionUID = 1191199335214123414L; private int w, h; public SliderHorizontalIcon() { w = 19; h = 21; } public void paintIcon( Component c, Graphics g, int x, int y ) { Graphics2D g2D = (Graphics2D)g; g2D.setRenderingHint( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); if ( c.hasFocus() ) { g2D.setColor( NimRODLookAndFeel.getFocusColor()); g2D.fillOval( x+3,y+2, 11,17); } else if ( !c.isEnabled() ) { g2D.setColor( Color.gray); g2D.fillOval( x+3,y+2, 11,17); } Icon icono = UIManager.getIcon( "Slider.horizontalThumbIconImage"); icono.paintIcon( c, g, x, y); g2D.setRenderingHint( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_DEFAULT); } public int getIconWidth() { return w; } public int getIconHeight() { return h; } } /***************************************************************************************************************/ private static class TreeCollapsedIcon implements Icon, UIResource, Serializable { private static final long serialVersionUID = 6191195335214123414L; private int w, h; public TreeCollapsedIcon() { w = 18; h = 18; } public void paintIcon( Component c, Graphics g, int x, int y ) { g.translate( x, y); Graphics2D g2D = (Graphics2D)g; g2D.setRenderingHint( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2D.setColor( NimRODLookAndFeel.getFocusColor()); g2D.fillOval( 6,6, 6,6); // g2D.fillOval( 2,2, 14,14); danja g2D.setColor( NimRODLookAndFeel.getBlack()); g2D.fillOval( 8,8, 2,2); // g2D.drawLine( 11,11, 7,7); danja // g2D.drawLine( 11,11, 7,11); // g2D.drawLine( 11,11, 11,7); Icon icono = UIManager.getIcon( "Tree.PelotillaIcon"); icono.paintIcon( c, g, 0,0); g2D.setRenderingHint( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_DEFAULT); g.translate( -x, -y); } public int getIconWidth() { return w; } public int getIconHeight() { return h; } } /***************************************************************************************************************/ private static class TreeExpandedIcon implements Icon, UIResource, Serializable { private static final long serialVersionUID = 7191199335214121114L; private int w, h; public TreeExpandedIcon() { w = 18; h = 18; } public void paintIcon( Component c, Graphics g, int x, int y ) { g.translate( x, y); Graphics2D g2D = (Graphics2D)g; g2D.setRenderingHint( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2D.setColor( NimRODLookAndFeel.getFocusColor()); // g2D.fillOval( 2,2, 14,14); danja g2D.fillOval( 6,6, 6,6); g2D.setColor( NimRODLookAndFeel.getWhite()); // danja g2D.fillOval( 8,8, 2,2); // g2D.drawLine( 10,10, 6,6); // g2D.drawLine( 6,6, 6,10); // g2D.drawLine( 6,6, 10,6); Icon icono = UIManager.getIcon( "Tree.PelotillaIcon"); icono.paintIcon( c, g, 0,0); g2D.setRenderingHint( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_DEFAULT); g.translate( -x, -y); } public int getIconWidth() { return w; } public int getIconHeight() { return h; } } /***************************************************************************************************************/ private static class FrameGenericIcon implements Icon, UIResource, Serializable { private static final long serialVersionUID = 1191199335214123414L; private String sIcono, sIconoR, sIconoP; private int w, h; public FrameGenericIcon( String icon, String iconR, String iconP) { w = 20; h = 20; sIcono = icon; sIconoR = iconR; sIconoP = iconP; } public void paintIcon( Component c, Graphics g, int x, int y ) { ButtonModel model = ((JButton)c).getModel(); Graphics2D g2D = (Graphics2D)g; g2D.setRenderingHint( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); Icon icono = null; if ( model.isPressed() ) { g2D.setColor( NimRODLookAndFeel.getFocusColor()); g2D.fillRoundRect( x,y, w,h, 4,4); icono = UIManager.getIcon( sIconoP); } else if ( model.isRollover() ) { icono = UIManager.getIcon( sIconoR); } else { icono = UIManager.getIcon( sIcono); } icono.paintIcon( c, g, x, y); g2D.setRenderingHint( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_DEFAULT); } public int getIconWidth() { return w; } public int getIconHeight() { return h; } } /***************************************************************************************************************/ private static class SpinnerNextIcon implements Icon, UIResource, Serializable { private static final long serialVersionUID = 8191199334213423414L; private int w, h; public SpinnerNextIcon() { w = 7; h = 5; } public void paintIcon( Component c, Graphics g, int x, int y ) { g.translate( x, y); Graphics2D g2D = (Graphics2D)g; g2D.setRenderingHint( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); if ( !c.isEnabled() ) { g2D.setColor( NimRODLookAndFeel.getInactiveControlTextColor()); } else { ButtonModel mod = ((JButton)c).getModel(); if ( mod.isPressed() ) { g2D.setColor( NimRODLookAndFeel.getFocusColor()); } else { g2D.setColor( NimRODLookAndFeel.getControlTextColor()); } } g2D.drawLine( 1,3, 3,1); g2D.drawLine( 3,1, 5,3); g2D.drawLine( 1,4, 3,2); g2D.drawLine( 3,2, 5,4); g2D.setRenderingHint( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_DEFAULT); g.translate( -x,-y); } public int getIconWidth() { return w; } public int getIconHeight() { return h; } } /***************************************************************************************************************/ private static class SpinnerPreviousIcon implements Icon, UIResource, Serializable { private static final long serialVersionUID = 8191199334213423414L; private int w, h; public SpinnerPreviousIcon() { w = 7; h = 5; } public void paintIcon( Component c, Graphics g, int x, int y ) { g.translate( x, y); Graphics2D g2D = (Graphics2D)g; g2D.setRenderingHint( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); if ( !c.isEnabled() ) { g2D.setColor( NimRODLookAndFeel.getInactiveControlTextColor()); } else { ButtonModel mod = ((JButton)c).getModel(); if ( mod.isPressed() ) { g2D.setColor( NimRODLookAndFeel.getFocusColor()); } else { g2D.setColor( NimRODLookAndFeel.getControlTextColor()); } } g2D.drawLine( 1,1, 3,3); g2D.drawLine( 3,3, 5,1); g2D.drawLine( 1,2, 3,4); g2D.drawLine( 3,4, 5,2); g2D.setRenderingHint( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_DEFAULT); g.translate( -x,-y); } public int getIconWidth() { return w; } public int getIconHeight() { return h; } } }