package org.chartsy.main.utils; import java.awt.Component; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.Stroke; import javax.swing.JComponent; import javax.swing.JList; import javax.swing.ListCellRenderer; /** * * @author viorel.gheba */ public class StrokeComboBoxRenderer extends JComponent implements ListCellRenderer { private Stroke stroke; public StrokeComboBoxRenderer(int width, int height) { setOpaque(true); setPreferredSize(new Dimension(width, height)); } public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { stroke = (Stroke) value; if (isSelected) { setBackground(list.getSelectionBackground()); setForeground(list.getSelectionForeground()); } else { setBackground(list.getBackground()); setForeground(list.getForeground()); } return this; } public void paint(Graphics g) { Graphics2D g2 = (Graphics2D)g; g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); Stroke oldStroke = g2.getStroke(); g.setColor(getBackground()); g.fillRect(0, 0, getWidth(), getHeight()); g2.setStroke(stroke); g2.setColor(getForeground()); int x = 5; while (getWidth() <= 2 * x) { x--; } g2.drawLine(x, getHeight() / 2, getWidth() - x, getHeight() / 2); g2.setStroke(oldStroke); } }