You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by rolandpeng <ml...@n2.nabble.com> on 2008/10/08 08:50:54 UTC

a way to show jfreechart tooltip on the image

This is my sample code to to show jfreechart tooltip on the image.
The key is to override onComponentTagBody() and use replaceComponentTagBody().

Just post my tried to share.
There should be better way to tune the performance.

--source code  here--
public class JFreeChartImage extends NonCachingImage {

	private String imageMapId;
	private int width;
	private int height;
	private JFreeChart chart;
	private ChartRenderingInfo info = new ChartRenderingInfo(
			new StandardEntityCollection());

	public JFreeChartImage(String id, String imageMapId,
			int width, int height) {
		// super(id, new Model(defaultImage));
		super(id);
		this.imageMapId = imageMapId;
		this.width = width;
		this.height = height;
	}

	@Override
	protected Resource getImageResource() {
		Resource imageResource = null;
		final JFreeChart chart = getChart();
		imageResource = new DynamicImageResource() {
			@Override
			protected byte[] getImageData() {
				ByteArrayOutputStream stream = new ByteArrayOutputStream();
				try {
					if (chart != null) {
						info.clear();
						ChartUtilities.writeChartAsPNG(stream, chart, width,
								height, info);
					}
				} catch (IOException e) {
					System.out.println("IOException: " + e.getMessage());
				}
				return stream.toByteArray();
			}
		};		return imageResource;
	}

	@Override
	protected void onComponentTagBody(MarkupStream markupStream,
			ComponentTag openTag) {
		JFreeChart chart = getChart();
		if (chart == null)
			return;
		ByteArrayOutputStream stream = new ByteArrayOutputStream();
		try {
			if (chart != null) {
				info.clear();
				ChartUtilities.writeChartAsPNG(stream, chart, width, height,
						info);
			}
		} catch (IOException e) {
			System.out.println("IOException: " + e.getMessage());
		}
		System.out.println(ChartUtilities.getImageMap(imageMapId, info));
		replaceComponentTagBody(markupStream, openTag, ChartUtilities
				.getImageMap(imageMapId, info));
	}

	public JFreeChart getChart() {
		return chart;
	}

	public void setChart(JFreeChart chart) {
		this.chart = chart;
	}

}

________________________________________
Public email at Nabble.com


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org