package org.esa.snap.productlibrary.rcp.toolviews.timeline; import org.esa.snap.productlibrary.rcp.toolviews.model.DatabaseStatistics; import java.awt.Graphics2D; import java.awt.event.MouseEvent; import java.util.Set; /** * Shows product counts by months */ class MonthsPlot extends TimelinePlot { private final String[] monthNames = new String[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; MonthsPlot(final DatabaseStatistics stats) { super(stats); } /** * Paints the panel component * * @param g2d The Graphics */ @Override protected void paintPlot(final Graphics2D g2d) { final DatabaseStatistics.MonthData monthData = stats.getMonthData(); final Set<Integer> months = monthData.getMonthSet(); final int numMonths = months.size(); final int maxMonthCnt = monthData.getMaxMonthCnt(); final int w = getWidth(); final int h = getHeight()-15; interval = w / (float)numMonths; final float halfInterval = interval/2; final float barWidth = halfInterval/2; final int y = getHeight() - 2; float x = halfInterval; for (Integer month : months) { drawButton(g2d, monthNames[month], (int)x-10, y, monthData.isSelected(month)); final float newH = (monthData.get(month)/(float)maxMonthCnt) * h; drawBar(g2d, (int)(x-barWidth), h-(int)newH, (int)halfInterval, (int)newH, h); x += interval; } } @Override public void mouseClicked(MouseEvent e) { int x = (int)(e.getX() / interval); final DatabaseStatistics.MonthData monthData = stats.getMonthData(); monthData.setSelected(x, !monthData.isSelected(x)); repaint(); } @Override public String getToolTipText(MouseEvent event) { int x = (int)(event.getX() / interval); final Set<Integer> monthSet = stats.getMonthData().getMonthSet(); final Integer[] months = monthSet.toArray(new Integer[monthSet.size()]); int value = stats.getMonthData().get(x); if(value == 0) return ""; return monthNames[months[x]]+": "+value; } }