package org.limewire.ui.swing.components; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import javax.swing.JComponent; /** * A component that draws a line. */ public class Line extends JComponent { public static Line createHorizontalLine(Color color, int thickness) { return new Line(true, color, thickness); } public static Line createHorizontalLine(Color color) { return new Line(true, color, 1); } public static Line createHorizontalLine() { return new Line(true, Color.BLACK, 1); } public static Line createVerticalLine(Color color, int thickness) { return new Line(false, color, thickness); } public static Line createVerticalLine(Color color) { return new Line(false, color, 1); } public static Line createVerticalLine() { return new Line(false, Color.BLACK, 1); } private boolean horizontal; private Color color; private Line(boolean horizontal, Color color, int thickness) { if(color == null) throw new IllegalArgumentException("color must not be null"); this.horizontal = horizontal; this.color = color; initSize(horizontal, thickness); } private void initSize(boolean horizontal, int thickness) { if(horizontal) { setPreferredSize(new Dimension(1, thickness)); setMinimumSize(new Dimension(0, thickness)); setMaximumSize(new Dimension(Short.MAX_VALUE, thickness)); } else { setPreferredSize(new Dimension(thickness, 1)); setMinimumSize(new Dimension(thickness, 0)); setMaximumSize(new Dimension(thickness, Short.MAX_VALUE)); } } public void setThickness(int thickness) { initSize(horizontal, thickness); } public void setColor(Color color) { this.color = color; } public Color getColor() { return color; } @Override public void paintComponent(Graphics g) { super.paintComponent(g); Color oldColor = g.getColor(); g.setColor(color); g.fillRect(0, 0, getWidth(), getHeight()); g.setColor(oldColor); } }