package com.quiltplayer.view.swing.images; import java.awt.Color; import java.awt.Component; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.LinearGradientPaint; import java.awt.RenderingHints; import java.awt.geom.Point2D; import javax.swing.ImageIcon; import com.quiltplayer.properties.Configuration; import com.quiltplayer.view.swing.FontFactory; /** * @author Vlado Palczynski. */ public class QImageIcon extends ImageIcon { private static final long serialVersionUID = 1L; private Color[] gradient = { new Color(80, 80, 80), new Color(50, 50, 50), new Color(20, 20, 20), new Color(00, 00, 00) }; private float[] dist = { 0.0f, 0.60f, 0.64f, 1.0f }; private int width; private String label; public QImageIcon(String label, int width) { this.width = width; this.label = label; } /* * (non-Javadoc) * * @see javax.swing.ImageIcon#paintIcon(java.awt.Component, java.awt.Graphics, int, int) */ @Override public synchronized void paintIcon(Component c, Graphics g, int x, int y) { Graphics2D g2d = (Graphics2D) g; g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); Point2D start = new Point2D.Float(0, 0); Point2D end = new Point2D.Float(0, width); if (gradient == null) { gradient = Configuration.getInstance().getColorConstants() .getControlPanelGradientColors(); } LinearGradientPaint p = new LinearGradientPaint(start, end, dist, gradient); g2d.setPaint(p); /** * Arcs must be uneven or is gets unsymmetrically. */ g2d.fillRoundRect(0, 0, width, width, 0, 0); Font font = FontFactory.getFont(12f); g.setFont(font); char[] carray = label.toCharArray(); g.setColor(new Color(90, 90, 90)); g.drawChars(carray, 0, carray.length, 25, 35); } /* * (non-Javadoc) * * @see javax.swing.Icon#getIconHeight() */ @Override public int getIconHeight() { return width; } /* * (non-Javadoc) * * @see javax.swing.Icon#getIconWidth() */ @Override public int getIconWidth() { return width; } }