package com.limegroup.gnutella.gui.statistics.panes;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import javax.swing.JComponent;
import javax.swing.JPanel;
import javax.swing.border.LineBorder;
import com.limegroup.gnutella.gui.BoxPanel;
/**
* The legend displayed for a given graph.
*/
final class GraphLegend {
private final JPanel PANEL = new BoxPanel();
private final List LIST = new LinkedList();
private int _curHeight = 20;
GraphLegend() {
Dimension size = new Dimension(150, _curHeight);
PANEL.setPreferredSize(size);
PANEL.setMaximumSize(size);
PANEL.setBorder(new LineBorder(Color.black));
PANEL.add(new LegendPainter());
}
public void add(StatHandler handler) {
_curHeight += 20;
Dimension size = new Dimension(150, _curHeight);
PANEL.setPreferredSize(size);
PANEL.setMaximumSize(size);
PANEL.revalidate();
LIST.add(handler);
}
JComponent getComponent() {
return PANEL;
}
private class LegendPainter extends JComponent {
public void paintComponent(Graphics g) {
super.paintComponent(g);
int dim = 15;
Iterator iter = LIST.iterator();
for(int i=0, x=6, y=12; iter.hasNext(); i++, y+=20) {
StatHandler handler = (StatHandler)iter.next();
String name = handler.getDisplayName();
Color oldColor = g.getColor();
g.drawRect(120, y-1, 21, dim+1);
g.setColor(handler.getColor());
g.fillRect(121, y, 20, dim);
g.setColor(oldColor);
g.drawString(name, x, y+dim-1);
}
}
}
}