package jas.hist; import jas.plot.DataArea; import jas.plot.DateAxis; import jas.plot.DoubleAxis; import jas.plot.Legend; import java.util.TimeZone; final class DateScatterDataManager extends ScatterDataManager { DateScatterDataManager(JASHist plot, final DataArea da, final Legend l, StatisticsBlock stats) { super(plot, da, l, stats); // Configure the Axes if (xm.getType() instanceof DateAxis) xAxisType = (DateAxis) xm.getType(); else { xAxisType = new DateAxis(); xm.setType(xAxisType); } DoubleAxis yAxisType; if (ym[0].getType() instanceof DoubleAxis) yAxisType = (DoubleAxis) ym[0].getType(); else { yAxisType = new DoubleAxis(); ym[0].setType(yAxisType); } xm.setDataManager(this, false, xAxisType); ym[0].setDataManager(this, false, yAxisType); } final protected void calcMinMaxXBins(double x1, double x2) { long iLow = (long) (x1*1000); long iHigh = (long) (x2*1000); long oldXMin = xAxisType.getAxisMin(); long oldXMax = xAxisType.getAxisMax(); // Only update the axis if the new range is outside of the old range, // or occupies less than 75% of the old range if (iLow < oldXMin || iHigh > oldXMax || (iHigh - iLow) / (oldXMax - oldXMin) < 0.75) { xAxisType.setMin(iLow); xAxisType.setMax(iHigh); xm.invalidate(); } } JASHistData add(DataSource ds) { JASHistData jhd = super.add(ds); TimeZone tz = jhd.getStyle().getTimeZone(); if (tz != null) xAxisType.setTimeZone(tz); return jhd; } void styleUpdate(JASHistData data) { TimeZone tz = data.getStyle().getTimeZone(); if (tz != null) xAxisType.setTimeZone(tz); super.styleUpdate(data); } private DateAxis xAxisType; }