40 lines
1.4 KiB
Java
40 lines
1.4 KiB
Java
package net.sf.jasperreports.charts.util;
|
|
|
|
import java.util.Map;
|
|
import net.sf.jasperreports.engine.JRPrintHyperlink;
|
|
import net.sf.jasperreports.engine.util.Pair;
|
|
import org.jfree.chart.entity.ChartEntity;
|
|
import org.jfree.chart.entity.XYItemEntity;
|
|
import org.jfree.data.xy.XYDataset;
|
|
|
|
public class XYChartHyperlinkProvider implements ChartHyperlinkProvider {
|
|
private static final long serialVersionUID = 10200L;
|
|
|
|
private Map itemHyperlinks;
|
|
|
|
public XYChartHyperlinkProvider(Map itemHyperlinks) {
|
|
this.itemHyperlinks = itemHyperlinks;
|
|
}
|
|
|
|
public JRPrintHyperlink getEntityHyperlink(ChartEntity entity) {
|
|
JRPrintHyperlink printHyperlink = null;
|
|
if (hasHyperlinks() && entity instanceof XYItemEntity) {
|
|
XYItemEntity itemEntity = (XYItemEntity)entity;
|
|
XYDataset dataset = itemEntity.getDataset();
|
|
Comparable serie = dataset.getSeriesKey(itemEntity.getSeriesIndex());
|
|
Map serieHyperlinks = (Map)this.itemHyperlinks.get(serie);
|
|
if (serieHyperlinks != null) {
|
|
Number x = dataset.getX(itemEntity.getSeriesIndex(), itemEntity.getItem());
|
|
Number y = dataset.getY(itemEntity.getSeriesIndex(), itemEntity.getItem());
|
|
Object xyKey = new Pair(x, y);
|
|
printHyperlink = (JRPrintHyperlink)serieHyperlinks.get(xyKey);
|
|
}
|
|
}
|
|
return printHyperlink;
|
|
}
|
|
|
|
public boolean hasHyperlinks() {
|
|
return (this.itemHyperlinks != null && this.itemHyperlinks.size() > 0);
|
|
}
|
|
}
|