- /* ===========================================================
- * JFreeChart : a free chart library for the Java(tm) platform
- * ===========================================================
- *
- * (C) Copyright 2000-2004, by Object Refinery Limited and Contributors.
- *
- * Project Info: http://www.jfree.org/jfreechart/index.html
- *
- * This library is free software; you can redistribute it and/or modify it under the terms
- * of the GNU Lesser General Public License as published by the Free Software Foundation;
- * either version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
- * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- * See the GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this
- * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * [Java is a trademark or registered trademark of Sun Microsystems, Inc.
- * in the United States and other countries.]
- *
- * ------------------
- * PaletteSample.java
- * ------------------
- * (C) Copyright 2002-2004, by David M. O'Donnell.
- *
- * Original Author: David M. O'Donnell;
- * Contributor(s): David Gilbert (for Object Refinery Limited);
- *
- * $Id: PaletteSample.java,v 1.1 2004/08/31 14:54:21 mungady Exp $
- *
- * Changes
- * -------
- * 21-Jan-2003 : Added standard header (DG);
- *
- */
- package org.jfree.chart.ui;
- import java.awt.BasicStroke;
- import java.awt.Component;
- import java.awt.Dimension;
- import java.awt.Graphics;
- import java.awt.Graphics2D;
- import java.awt.Insets;
- import java.awt.RenderingHints;
- import java.awt.geom.Line2D;
- import javax.swing.JComponent;
- import javax.swing.JList;
- import javax.swing.ListCellRenderer;
- /**
- * A panel that displays a palette sample.
- *
- * @author David M. O'Donnell
- */
- public class PaletteSample extends JComponent implements ListCellRenderer {
- /** The palette being displayed. */
- private ColorPalette palette;
- /** The preferred size of the component; */
- private Dimension preferredSize;
- /**
- * Creates a new sample.
- *
- * @param palette the palette.
- */
- public PaletteSample(ColorPalette palette) {
- this.palette = palette;
- this.preferredSize = new Dimension(80, 18);
- }
- /**
- * Returns a list cell renderer for the stroke, so the sample can be displayed in a list or
- * combo.
- *
- * @param list the list component.
- * @param value the value.
- * @param index the index.
- * @param isSelected a flag that indicates whether or not the item is selected.
- * @param cellHasFocus a flag that indicates whether or not the cell has the focus.
- *
- * @return The renderer.
- */
- public Component getListCellRendererComponent(JList list, Object value, int index,
- boolean isSelected, boolean cellHasFocus) {
- if (value instanceof PaletteSample) {
- PaletteSample in = (PaletteSample) value;
- setPalette(in.getPalette());
- }
- return this;
- }
- /**
- * Returns the current palette object being displayed.
- *
- * @return The palette.
- */
- public ColorPalette getPalette() {
- return this.palette;
- }
- /**
- * Returns the preferred size of the component.
- *
- * @return The preferred size.
- */
- public Dimension getPreferredSize() {
- return this.preferredSize;
- }
- /**
- * Draws the sample.
- *
- * @param g the graphics device.
- */
- public void paintComponent(Graphics g) {
- Graphics2D g2 = (Graphics2D) g;
- g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF);
- Dimension size = getSize();
- Insets insets = getInsets();
- double ww = size.getWidth() - insets.left - insets.right;
- double hh = size.getHeight() - insets.top - insets.bottom;
- g2.setStroke(new BasicStroke(1.0f));
- double y1 = insets.top;
- double y2 = y1 + hh;
- double xx = insets.left;
- Line2D line = new Line2D.Double();
- int count = 0;
- while (xx <= insets.left + ww) {
- count++;
- line.setLine(xx, y1, xx, y2);
- g2.setPaint(this.palette.getColor(count));
- g2.draw(line);
- xx += 1;
- }
- }
- /**
- * Sets the palette object being displayed.
- *
- * @param palette the palette.
- */
- public void setPalette(ColorPalette palette) {
- this.palette = palette;
- this.repaint();
- }
- }