org.jfree.chart.editor.PaletteSample Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jfreechart Show documentation
Show all versions of jfreechart Show documentation
JFreeChart is a class library, written in Java, for generating charts.
Utilising the Java2D API, it supports a wide range of chart types including
bar charts, pie charts, line charts, XY-plots, time series plots, Sankey charts
and more.
/* ===========================================================
* JFreeChart : a free chart library for the Java(tm) platform
* ===========================================================
*
* (C) Copyright 2000-2011, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
* USA.
*
* [Oracle and Java are registered trademarks of Oracle and/or its affiliates.
* Other names may be trademarks of their respective owners.]
*
* ------------------
* PaletteSample.java
* ------------------
* (C) Copyright 2002-2008, by David M. O'Donnell.
*
* Original Author: David M. O'Donnell;
* Contributor(s): David Gilbert (for Object Refinery Limited);
*
* Changes
* -------
* 21-Jan-2003 : Added standard header (DG);
* ------------- JFREECHART 1.0.x ---------------------------------------------
* 31-Jan-2007 : Deprecated (DG);
*
*/
package org.jfree.chart.editor;
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;
import org.jfree.chart.plot.ColorPalette;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYBlockRenderer;
/**
* A panel that displays a palette sample.
*
* @deprecated This class is no longer supported (as of version 1.0.4). If
* you are creating contour plots, please try to use {@link XYPlot} and
* {@link XYBlockRenderer}.
*/
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();
}
}