Java 类org.jfree.data.time.DateRange 实例源码

项目:parabuild-ci    文件:DateAxisTests.java   
/**
 * Test that the setRange() method works.
 */
public void testSetRange() {

    DateAxis axis = new DateAxis("Test Axis");
    Calendar calendar = Calendar.getInstance();
    calendar.set(1999, Calendar.JANUARY, 3);
    Date d1 = calendar.getTime();
    calendar.set(1999, Calendar.JANUARY, 31);
    Date d2 = calendar.getTime();
    axis.setRange(d1, d2);

    DateRange range = (DateRange) axis.getRange();
    assertEquals(d1, range.getLowerDate());
    assertEquals(d2, range.getUpperDate());

}
项目:parabuild-ci    文件:DateAxisTests.java   
/**
 * Test that the setRange() method works.
 */
public void testSetRange() {

    DateAxis axis = new DateAxis("Test Axis");
    Calendar calendar = Calendar.getInstance();
    calendar.set(1999, Calendar.JANUARY, 3);
    Date d1 = calendar.getTime();
    calendar.set(1999, Calendar.JANUARY, 31);
    Date d2 = calendar.getTime();
    axis.setRange(d1, d2);

    DateRange range = (DateRange) axis.getRange();
    assertEquals(d1, range.getLowerDate());
    assertEquals(d2, range.getUpperDate());

}
项目:ccu-historian    文件:DateAxisTest.java   
/**
 * Test that the setRange() method works.
 */
@Test
public void testSetRange() {

    DateAxis axis = new DateAxis("Test Axis");
    Calendar calendar = Calendar.getInstance();
    calendar.set(1999, Calendar.JANUARY, 3);
    Date d1 = calendar.getTime();
    calendar.set(1999, Calendar.JANUARY, 31);
    Date d2 = calendar.getTime();
    axis.setRange(d1, d2);

    DateRange range = (DateRange) axis.getRange();
    assertEquals(d1, range.getLowerDate());
    assertEquals(d2, range.getUpperDate());

}
项目:jfreechart    文件:DateAxisTest.java   
/**
 * Test that the setRange() method works.
 */
@Test
public void testSetRange() {

    DateAxis axis = new DateAxis("Test Axis");
    Calendar calendar = Calendar.getInstance();
    calendar.set(1999, Calendar.JANUARY, 3);
    Date d1 = calendar.getTime();
    calendar.set(1999, Calendar.JANUARY, 31);
    Date d2 = calendar.getTime();
    axis.setRange(d1, d2);

    DateRange range = (DateRange) axis.getRange();
    assertEquals(d1, range.getLowerDate());
    assertEquals(d2, range.getUpperDate());

}
项目:aya-lang    文件:DateAxisTest.java   
/**
 * Test that the setRange() method works.
 */
@Test
public void testSetRange() {

    DateAxis axis = new DateAxis("Test Axis");
    Calendar calendar = Calendar.getInstance();
    calendar.set(1999, Calendar.JANUARY, 3);
    Date d1 = calendar.getTime();
    calendar.set(1999, Calendar.JANUARY, 31);
    Date d2 = calendar.getTime();
    axis.setRange(d1, d2);

    DateRange range = (DateRange) axis.getRange();
    assertEquals(d1, range.getLowerDate());
    assertEquals(d2, range.getUpperDate());

}
项目:HTML5_WebSite    文件:DateAxis.java   
/**
 * Sets the minimum date visible on the axis and sends an
 * {@link AxisChangeEvent} to all registered listeners.  If
 * <code>date</code> is on or after the current maximum date for
 * the axis, the maximum date will be shifted to preserve the current
 * length of the axis.
 *
 * @param date  the date (<code>null</code> not permitted).
 *
 * @see #getMinimumDate()
 * @see #setMaximumDate(Date)
 */
public void setMinimumDate(Date date) {
    if (date == null) {
        throw new IllegalArgumentException("Null 'date' argument.");
    }
    // check the new minimum date relative to the current maximum date
    Date maxDate = getMaximumDate();
    long maxMillis = maxDate.getTime();
    long newMinMillis = date.getTime();
    if (maxMillis <= newMinMillis) {
        Date oldMin = getMinimumDate();
        long length = maxMillis - oldMin.getTime();
        maxDate = new Date(newMinMillis + length);
    }
    setRange(new DateRange(date, maxDate), true, false);
    notifyListeners(new AxisChangeEvent(this));
}
项目:HTML5_WebSite    文件:DateAxis.java   
/**
 * Sets the maximum date visible on the axis and sends an
 * {@link AxisChangeEvent} to all registered listeners.  If
 * <code>maximumDate</code> is on or before the current minimum date for
 * the axis, the minimum date will be shifted to preserve the current
 * length of the axis.
 *
 * @param maximumDate  the date (<code>null</code> not permitted).
 *
 * @see #getMinimumDate()
 * @see #setMinimumDate(Date)
 */
public void setMaximumDate(Date maximumDate) {
    if (maximumDate == null) {
        throw new IllegalArgumentException("Null 'maximumDate' argument.");
    }
    // check the new maximum date relative to the current minimum date
    Date minDate = getMinimumDate();
    long minMillis = minDate.getTime();
    long newMaxMillis = maximumDate.getTime();
    if (minMillis >= newMaxMillis) {
        Date oldMax = getMaximumDate();
        long length = oldMax.getTime() - minMillis;
        minDate = new Date(newMaxMillis - length);
    }
    setRange(new DateRange(minDate, maximumDate), true, false);
    notifyListeners(new AxisChangeEvent(this));
}
项目:PI    文件:DateAxis.java   
/**
 * Sets the minimum date visible on the axis and sends an
 * {@link AxisChangeEvent} to all registered listeners.  If
 * <code>date</code> is on or after the current maximum date for
 * the axis, the maximum date will be shifted to preserve the current
 * length of the axis.
 *
 * @param date  the date (<code>null</code> not permitted).
 *
 * @see #getMinimumDate()
 * @see #setMaximumDate(Date)
 */
public void setMinimumDate(Date date) {
    if (date == null) {
        throw new IllegalArgumentException("Null 'date' argument.");
    }
    // check the new minimum date relative to the current maximum date
    Date maxDate = getMaximumDate();
    long maxMillis = maxDate.getTime();
    long newMinMillis = date.getTime();
    if (maxMillis <= newMinMillis) {
        Date oldMin = getMinimumDate();
        long length = maxMillis - oldMin.getTime();
        maxDate = new Date(newMinMillis + length);
    }
    setRange(new DateRange(date, maxDate), true, false);
    notifyListeners(new AxisChangeEvent(this));
}
项目:PI    文件:DateAxis.java   
/**
 * Sets the maximum date visible on the axis and sends an
 * {@link AxisChangeEvent} to all registered listeners.  If
 * <code>maximumDate</code> is on or before the current minimum date for
 * the axis, the minimum date will be shifted to preserve the current
 * length of the axis.
 *
 * @param maximumDate  the date (<code>null</code> not permitted).
 *
 * @see #getMinimumDate()
 * @see #setMinimumDate(Date)
 */
public void setMaximumDate(Date maximumDate) {
    if (maximumDate == null) {
        throw new IllegalArgumentException("Null 'maximumDate' argument.");
    }
    // check the new maximum date relative to the current minimum date
    Date minDate = getMinimumDate();
    long minMillis = minDate.getTime();
    long newMaxMillis = maximumDate.getTime();
    if (minMillis >= newMaxMillis) {
        Date oldMax = getMaximumDate();
        long length = oldMax.getTime() - minMillis;
        minDate = new Date(newMaxMillis - length);
    }
    setRange(new DateRange(minDate, maximumDate), true, false);
    notifyListeners(new AxisChangeEvent(this));
}
项目:nabs    文件:DateAxisTests.java   
/**
 * Test that the setRange() method works.
 */
public void testSetRange() {

    DateAxis axis = new DateAxis("Test Axis");
    Calendar calendar = Calendar.getInstance();
    calendar.set(1999, Calendar.JANUARY, 3);
    Date d1 = calendar.getTime();
    calendar.set(1999, Calendar.JANUARY, 31);
    Date d2 = calendar.getTime();
    axis.setRange(d1, d2);

    DateRange range = (DateRange) axis.getRange();
    assertEquals(d1, range.getLowerDate());
    assertEquals(d2, range.getUpperDate());

}
项目:ECG-Viewer    文件:DateAxisTest.java   
/**
 * Test that the setRange() method works.
 */
@Test
public void testSetRange() {

    DateAxis axis = new DateAxis("Test Axis");
    Calendar calendar = Calendar.getInstance();
    calendar.set(1999, Calendar.JANUARY, 3);
    Date d1 = calendar.getTime();
    calendar.set(1999, Calendar.JANUARY, 31);
    Date d2 = calendar.getTime();
    axis.setRange(d1, d2);

    DateRange range = (DateRange) axis.getRange();
    assertEquals(d1, range.getLowerDate());
    assertEquals(d2, range.getUpperDate());

}
项目:astor    文件:DateAxisTests.java   
/**
 * Test that the setRange() method works.
 */
public void testSetRange() {

    DateAxis axis = new DateAxis("Test Axis");
    Calendar calendar = Calendar.getInstance();
    calendar.set(1999, Calendar.JANUARY, 3);
    Date d1 = calendar.getTime();
    calendar.set(1999, Calendar.JANUARY, 31);
    Date d2 = calendar.getTime();
    axis.setRange(d1, d2);

    DateRange range = (DateRange) axis.getRange();
    assertEquals(d1, range.getLowerDate());
    assertEquals(d2, range.getUpperDate());

}
项目:astor    文件:DateAxis.java   
/**
 * Sets the minimum date visible on the axis and sends an
 * {@link AxisChangeEvent} to all registered listeners.  If
 * <code>date</code> is on or after the current maximum date for
 * the axis, the maximum date will be shifted to preserve the current
 * length of the axis.
 *
 * @param date  the date (<code>null</code> not permitted).
 *
 * @see #getMinimumDate()
 * @see #setMaximumDate(Date)
 */
public void setMinimumDate(Date date) {
    if (date == null) {
        throw new IllegalArgumentException("Null 'date' argument.");
    }
    // check the new minimum date relative to the current maximum date
    Date maxDate = getMaximumDate();
    long maxMillis = maxDate.getTime();
    long newMinMillis = date.getTime();
    if (maxMillis <= newMinMillis) {
        Date oldMin = getMinimumDate();
        long length = maxMillis - oldMin.getTime();
        maxDate = new Date(newMinMillis + length);
    }
    setRange(new DateRange(date, maxDate), true, false);
    notifyListeners(new AxisChangeEvent(this));
}
项目:astor    文件:DateAxis.java   
/**
 * Sets the maximum date visible on the axis and sends an
 * {@link AxisChangeEvent} to all registered listeners.  If
 * <code>maximumDate</code> is on or before the current minimum date for
 * the axis, the minimum date will be shifted to preserve the current
 * length of the axis.
 *
 * @param maximumDate  the date (<code>null</code> not permitted).
 *
 * @see #getMinimumDate()
 * @see #setMinimumDate(Date)
 */
public void setMaximumDate(Date maximumDate) {
    if (maximumDate == null) {
        throw new IllegalArgumentException("Null 'maximumDate' argument.");
    }
    // check the new maximum date relative to the current minimum date
    Date minDate = getMinimumDate();
    long minMillis = minDate.getTime();
    long newMaxMillis = maximumDate.getTime();
    if (minMillis >= newMaxMillis) {
        Date oldMax = getMaximumDate();
        long length = oldMax.getTime() - minMillis;
        minDate = new Date(newMaxMillis - length);
    }
    setRange(new DateRange(minDate, maximumDate), true, false);
    notifyListeners(new AxisChangeEvent(this));
}
项目:conqat    文件:SeriesCreatorBase.java   
/** Computes the date range of the values of the chart */
private DateRange getDateRange() {
    ArrayList<DateValueSeries> seriesList = getSeries();

    if (seriesList.isEmpty()) {
        return new DateRange(DateUtils.getNow(), DateUtils.getNow());
    }

    Date lower = seriesList.get(0).getEarliestDate();
    Date upper = seriesList.get(0).getLatestDate();

    for (DateValueSeries series : seriesList) {
        lower = DateUtils.min(lower, series.getEarliestDate());
        upper = DateUtils.min(upper, series.getLatestDate());
    }

    return new DateRange(lower, upper);
}
项目:group-five    文件:DateAxisTest.java   
/**
 * Test that the setRange() method works.
 */
@Test
public void testSetRange() {

    DateAxis axis = new DateAxis("Test Axis");
    Calendar calendar = Calendar.getInstance();
    calendar.set(1999, Calendar.JANUARY, 3);
    Date d1 = calendar.getTime();
    calendar.set(1999, Calendar.JANUARY, 31);
    Date d2 = calendar.getTime();
    axis.setRange(d1, d2);

    DateRange range = (DateRange) axis.getRange();
    assertEquals(d1, range.getLowerDate());
    assertEquals(d2, range.getUpperDate());

}
项目:buffer_bci    文件:DateAxisTest.java   
/**
 * Test that the setRange() method works.
 */
@Test
public void testSetRange() {

    DateAxis axis = new DateAxis("Test Axis");
    Calendar calendar = Calendar.getInstance();
    calendar.set(1999, Calendar.JANUARY, 3);
    Date d1 = calendar.getTime();
    calendar.set(1999, Calendar.JANUARY, 31);
    Date d2 = calendar.getTime();
    axis.setRange(d1, d2);

    DateRange range = (DateRange) axis.getRange();
    assertEquals(d1, range.getLowerDate());
    assertEquals(d2, range.getUpperDate());

}
项目:proyecto-teoria-control-utn-frro    文件:DateAxisTest.java   
/**
 * Test that the setRange() method works.
 */
@Test
public void testSetRange() {

    DateAxis axis = new DateAxis("Test Axis");
    Calendar calendar = Calendar.getInstance();
    calendar.set(1999, Calendar.JANUARY, 3);
    Date d1 = calendar.getTime();
    calendar.set(1999, Calendar.JANUARY, 31);
    Date d2 = calendar.getTime();
    axis.setRange(d1, d2);

    DateRange range = (DateRange) axis.getRange();
    assertEquals(d1, range.getLowerDate());
    assertEquals(d2, range.getUpperDate());

}
项目:Memetic-Algorithm-for-TSP    文件:DateAxisTest.java   
/**
 * Test that the setRange() method works.
 */
@Test
public void testSetRange() {

    DateAxis axis = new DateAxis("Test Axis");
    Calendar calendar = Calendar.getInstance();
    calendar.set(1999, Calendar.JANUARY, 3);
    Date d1 = calendar.getTime();
    calendar.set(1999, Calendar.JANUARY, 31);
    Date d2 = calendar.getTime();
    axis.setRange(d1, d2);

    DateRange range = (DateRange) axis.getRange();
    assertEquals(d1, range.getLowerDate());
    assertEquals(d2, range.getUpperDate());

}
项目:parabuild-ci    文件:DateAxis.java   
/**
 * Sets the axis range and sends an {@link AxisChangeEvent} to all registered listeners.
 *
 * @param lower  the lower bound for the axis.
 * @param upper  the upper bound for the axis.
 */
public void setRange(Date lower, Date upper) {

    // check arguments...
    if (lower.getTime() >= upper.getTime()) {
        throw new IllegalArgumentException("DateAxis.setRange(...): lower not before upper.");
    }

    // make the change...
    setRange(new DateRange(lower, upper));

}
项目:parabuild-ci    文件:DateAxis.java   
/**
 * Sets the axis range and sends an {@link AxisChangeEvent} to all registered listeners.
 *
 * @param lower  the lower bound for the axis.
 * @param upper  the upper bound for the axis.
 */
public void setRange(double lower, double upper) {

    // check arguments...
    if (lower >= upper) {
        throw new IllegalArgumentException("DateAxis.setRange(...): lower >= upper.");
    }

    // make the change...
    setRange(new DateRange(lower, upper));

}
项目:parabuild-ci    文件:DateAxis.java   
/**
 * Translates the data value to the display coordinates (Java 2D User Space)
 * of the chart.
 *
 * @param value  the date to be plotted.
 * @param area  the rectangle (in Java2D space) where the data is to be plotted.
 * @param edge  the axis location.
 *
 * @return the coordinate corresponding to the supplied data value.
 */
public double valueToJava2D(double value, Rectangle2D area, RectangleEdge edge) {

    value = this.timeline.toTimelineValue(new Date((long) value));

    DateRange range = (DateRange) getRange();
    double axisMin = this.timeline.toTimelineValue(range.getLowerDate());
    double axisMax = this.timeline.toTimelineValue(range.getUpperDate());
    double result = 0.0;
    if (RectangleEdge.isTopOrBottom(edge)) {
        double minX = area.getX();
        double maxX = area.getMaxX();
        if (isInverted()) {
            result = maxX + ((value - axisMin) / (axisMax - axisMin)) * (minX - maxX);
        }
        else {
            result = minX + ((value - axisMin) / (axisMax - axisMin)) * (maxX - minX);
        }
    }
    else if (RectangleEdge.isLeftOrRight(edge)) {
        double minY = area.getMinY();
        double maxY = area.getMaxY();
        if (isInverted()) {
            result = minY + (((value - axisMin) / (axisMax - axisMin)) * (maxY - minY));
        }
        else {
            result = maxY - (((value - axisMin) / (axisMax - axisMin)) * (maxY - minY));
        }
    }
    return result;

}
项目:parabuild-ci    文件:DateAxis.java   
/**
 * Translates a Java2D coordinate into the corresponding data value.  To perform this
 * translation, you need to know the area used for plotting data, and which edge the
 * axis is located on.
 *
 * @param java2DValue  the coordinate in Java2D space.
 * @param area  the rectangle (in Java2D space) where the data is to be plotted.
 * @param edge  the axis location.
 *
 * @return A data value.
 */
public double java2DToValue(double java2DValue, Rectangle2D area, RectangleEdge edge) {

    DateRange range = (DateRange) getRange();
    double axisMin = this.timeline.toTimelineValue(range.getLowerDate());
    double axisMax = this.timeline.toTimelineValue(range.getUpperDate());

    double min = 0.0;
    double max = 0.0;
    if (RectangleEdge.isTopOrBottom(edge)) {
        min = area.getX();
        max = area.getMaxX();
    }
    else if (RectangleEdge.isLeftOrRight(edge)) {
        min = area.getMaxY();
        max = area.getY();
    }

    double result;
    if (isInverted()) {
         result = axisMax - ((java2DValue - min) / (max - min) * (axisMax - axisMin));
    }
    else {
         result = axisMin + ((java2DValue - min) / (max - min) * (axisMax - axisMin));
    }

    return this.timeline.toMillisecond((long) result); 
}
项目:parabuild-ci    文件:DateAxis.java   
/**
 * Estimates the maximum width of the tick labels, assuming the specified tick unit is used.
 * <P>
 * Rather than computing the string bounds of every tick on the axis, we just look at two
 * values: the lower bound and the upper bound for the axis.  These two values will usually
 * be representative.
 *
 * @param g2  the graphics device.
 * @param unit  the tick unit to use for calculation.
 *
 * @return the estimated maximum width of the tick labels.
 */
private double estimateMaximumTickLabelWidth(Graphics2D g2, DateTickUnit unit) {

    Insets tickLabelInsets = getTickLabelInsets();
    double result = tickLabelInsets.left + tickLabelInsets.right;

    Font tickLabelFont = getTickLabelFont();
    FontRenderContext frc = g2.getFontRenderContext();
    LineMetrics lm = tickLabelFont.getLineMetrics("ABCxyz", frc);
    if (isVerticalTickLabels()) {
        // all tick labels have the same width (equal to the height of the font)...
        result += lm.getHeight();
    }
    else {
        // look at lower and upper bounds...
        DateRange range = (DateRange) getRange();
        Date lower = range.getLowerDate();
        Date upper = range.getUpperDate();
        String lowerStr = null;
        String upperStr = null;
        DateFormat formatter = getDateFormatOverride();
        if (formatter != null) {
            lowerStr = formatter.format(lower);
            upperStr = formatter.format(upper);
        }
        else {
            lowerStr = unit.dateToString(lower);
            upperStr = unit.dateToString(upper);
        }
        FontMetrics fm = g2.getFontMetrics(tickLabelFont);
        double w1 = fm.stringWidth(lowerStr);
        double w2 = fm.stringWidth(upperStr);
        result += Math.max(w1, w2);
    }

    return result;

}
项目:parabuild-ci    文件:DateAxis.java   
/**
 * Estimates the maximum width of the tick labels, assuming the specified tick unit is used.
 * <P>
 * Rather than computing the string bounds of every tick on the axis, we just look at two
 * values: the lower bound and the upper bound for the axis.  These two values will usually
 * be representative.
 *
 * @param g2  the graphics device.
 * @param unit  the tick unit to use for calculation.
 *
 * @return the estimated maximum width of the tick labels.
 */
private double estimateMaximumTickLabelHeight(Graphics2D g2, DateTickUnit unit) {

    Insets tickLabelInsets = getTickLabelInsets();
    double result = tickLabelInsets.top + tickLabelInsets.bottom;

    Font tickLabelFont = getTickLabelFont();
    FontRenderContext frc = g2.getFontRenderContext();
    LineMetrics lm = tickLabelFont.getLineMetrics("ABCxyz", frc);
    if (!isVerticalTickLabels()) {
        // all tick labels have the same width (equal to the height of the font)...
        result += lm.getHeight();
    }
    else {
        // look at lower and upper bounds...
        DateRange range = (DateRange) getRange();
        Date lower = range.getLowerDate();
        Date upper = range.getUpperDate();
        String lowerStr = null;
        String upperStr = null;
        DateFormat formatter = getDateFormatOverride();
        if (formatter != null) {
            lowerStr = formatter.format(lower);
            upperStr = formatter.format(upper);
        }
        else {
            lowerStr = unit.dateToString(lower);
            upperStr = unit.dateToString(upper);
        }
        FontMetrics fm = g2.getFontMetrics(tickLabelFont);
        double w1 = fm.stringWidth(lowerStr);
        double w2 = fm.stringWidth(upperStr);
        result += Math.max(w1, w2);
    }

    return result;

}
项目:parabuild-ci    文件:DateAxis.java   
/**
 * Translates the data value to the display coordinates (Java 2D User Space)
 * of the chart.
 *
 * @param value  the date to be plotted.
 * @param area  the rectangle (in Java2D space) where the data is to be 
 *              plotted.
 * @param edge  the axis location.
 *
 * @return The coordinate corresponding to the supplied data value.
 */
public double valueToJava2D(double value, Rectangle2D area, 
                            RectangleEdge edge) {

    value = this.timeline.toTimelineValue((long) value);

    DateRange range = (DateRange) getRange();
    double axisMin = this.timeline.toTimelineValue(range.getLowerDate());
    double axisMax = this.timeline.toTimelineValue(range.getUpperDate());
    double result = 0.0;
    if (RectangleEdge.isTopOrBottom(edge)) {
        double minX = area.getX();
        double maxX = area.getMaxX();
        if (isInverted()) {
            result = maxX + ((value - axisMin) / (axisMax - axisMin)) 
                     * (minX - maxX);
        }
        else {
            result = minX + ((value - axisMin) / (axisMax - axisMin)) 
                     * (maxX - minX);
        }
    }
    else if (RectangleEdge.isLeftOrRight(edge)) {
        double minY = area.getMinY();
        double maxY = area.getMaxY();
        if (isInverted()) {
            result = minY + (((value - axisMin) / (axisMax - axisMin)) 
                     * (maxY - minY));
        }
        else {
            result = maxY - (((value - axisMin) / (axisMax - axisMin)) 
                     * (maxY - minY));
        }
    }
    return result;

}
项目:parabuild-ci    文件:DateAxis.java   
/**
 * Translates a Java2D coordinate into the corresponding data value.  To 
 * perform this translation, you need to know the area used for plotting 
 * data, and which edge the axis is located on.
 *
 * @param java2DValue  the coordinate in Java2D space.
 * @param area  the rectangle (in Java2D space) where the data is to be 
 *              plotted.
 * @param edge  the axis location.
 *
 * @return A data value.
 */
public double java2DToValue(double java2DValue, Rectangle2D area, 
                            RectangleEdge edge) {

    DateRange range = (DateRange) getRange();
    double axisMin = this.timeline.toTimelineValue(range.getLowerDate());
    double axisMax = this.timeline.toTimelineValue(range.getUpperDate());

    double min = 0.0;
    double max = 0.0;
    if (RectangleEdge.isTopOrBottom(edge)) {
        min = area.getX();
        max = area.getMaxX();
    }
    else if (RectangleEdge.isLeftOrRight(edge)) {
        min = area.getMaxY();
        max = area.getY();
    }

    double result;
    if (isInverted()) {
         result = axisMax - ((java2DValue - min) / (max - min) 
                  * (axisMax - axisMin));
    }
    else {
         result = axisMin + ((java2DValue - min) / (max - min) 
                  * (axisMax - axisMin));
    }

    return this.timeline.toMillisecond((long) result); 
}
项目:parabuild-ci    文件:DateAxis.java   
/**
 * Estimates the maximum width of the tick labels, assuming the specified 
 * tick unit is used.
 * <P>
 * Rather than computing the string bounds of every tick on the axis, we
 * just look at two values: the lower bound and the upper bound for the 
 * axis.  These two values will usually be representative.
 *
 * @param g2  the graphics device.
 * @param unit  the tick unit to use for calculation.
 *
 * @return The estimated maximum width of the tick labels.
 */
private double estimateMaximumTickLabelWidth(Graphics2D g2, 
                                             DateTickUnit unit) {

    RectangleInsets tickLabelInsets = getTickLabelInsets();
    double result = tickLabelInsets.getLeft() + tickLabelInsets.getRight();

    Font tickLabelFont = getTickLabelFont();
    FontRenderContext frc = g2.getFontRenderContext();
    LineMetrics lm = tickLabelFont.getLineMetrics("ABCxyz", frc);
    if (isVerticalTickLabels()) {
        // all tick labels have the same width (equal to the height of 
        // the font)...
        result += lm.getHeight();
    }
    else {
        // look at lower and upper bounds...
        DateRange range = (DateRange) getRange();
        Date lower = range.getLowerDate();
        Date upper = range.getUpperDate();
        String lowerStr = null;
        String upperStr = null;
        DateFormat formatter = getDateFormatOverride();
        if (formatter != null) {
            lowerStr = formatter.format(lower);
            upperStr = formatter.format(upper);
        }
        else {
            lowerStr = unit.dateToString(lower);
            upperStr = unit.dateToString(upper);
        }
        FontMetrics fm = g2.getFontMetrics(tickLabelFont);
        double w1 = fm.stringWidth(lowerStr);
        double w2 = fm.stringWidth(upperStr);
        result += Math.max(w1, w2);
    }

    return result;

}
项目:parabuild-ci    文件:DateAxis.java   
/**
 * Estimates the maximum width of the tick labels, assuming the specified 
 * tick unit is used.
 * <P>
 * Rather than computing the string bounds of every tick on the axis, we 
 * just look at two values: the lower bound and the upper bound for the 
 * axis.  These two values will usually be representative.
 *
 * @param g2  the graphics device.
 * @param unit  the tick unit to use for calculation.
 *
 * @return The estimated maximum width of the tick labels.
 */
private double estimateMaximumTickLabelHeight(Graphics2D g2, 
                                              DateTickUnit unit) {

    RectangleInsets tickLabelInsets = getTickLabelInsets();
    double result = tickLabelInsets.getTop() + tickLabelInsets.getBottom();

    Font tickLabelFont = getTickLabelFont();
    FontRenderContext frc = g2.getFontRenderContext();
    LineMetrics lm = tickLabelFont.getLineMetrics("ABCxyz", frc);
    if (!isVerticalTickLabels()) {
        // all tick labels have the same width (equal to the height of 
        // the font)...
        result += lm.getHeight();
    }
    else {
        // look at lower and upper bounds...
        DateRange range = (DateRange) getRange();
        Date lower = range.getLowerDate();
        Date upper = range.getUpperDate();
        String lowerStr = null;
        String upperStr = null;
        DateFormat formatter = getDateFormatOverride();
        if (formatter != null) {
            lowerStr = formatter.format(lower);
            upperStr = formatter.format(upper);
        }
        else {
            lowerStr = unit.dateToString(lower);
            upperStr = unit.dateToString(upper);
        }
        FontMetrics fm = g2.getFontMetrics(tickLabelFont);
        double w1 = fm.stringWidth(lowerStr);
        double w2 = fm.stringWidth(upperStr);
        result += Math.max(w1, w2);
    }

    return result;

}
项目:ccu-historian    文件:PeriodAxisTest.java   
/**
 * A test for bug 1932146.
 */
@Test
public void test1932146() {
    PeriodAxis axis = new PeriodAxis("TestAxis");
    axis.addChangeListener(this);
    this.lastEvent = null;
    axis.setRange(new DateRange(0L, 1000L));
    assertTrue(this.lastEvent != null);
}
项目:ccu-historian    文件:DateAxis.java   
/**
 * Sets the axis range and sends an {@link AxisChangeEvent} to all
 * registered listeners.
 *
 * @param lower  the lower bound for the axis.
 * @param upper  the upper bound for the axis.
 */
@Override
public void setRange(double lower, double upper) {
    if (lower >= upper) {
        throw new IllegalArgumentException("Requires 'lower' < 'upper'.");
    }
    setRange(new DateRange(lower, upper));
}
项目:ccu-historian    文件:DateAxis.java   
/**
 * Returns the earliest date visible on the axis.
 *
 * @return The date.
 *
 * @see #setMinimumDate(Date)
 * @see #getMaximumDate()
 */
public Date getMinimumDate() {
    Date result;
    Range range = getRange();
    if (range instanceof DateRange) {
        DateRange r = (DateRange) range;
        result = r.getLowerDate();
    }
    else {
        result = new Date((long) range.getLowerBound());
    }
    return result;
}
项目:ccu-historian    文件:DateAxis.java   
/**
 * Sets the minimum date visible on the axis and sends an
 * {@link AxisChangeEvent} to all registered listeners.  If
 * <code>date</code> is on or after the current maximum date for
 * the axis, the maximum date will be shifted to preserve the current
 * length of the axis.
 *
 * @param date  the date (<code>null</code> not permitted).
 *
 * @see #getMinimumDate()
 * @see #setMaximumDate(Date)
 */
public void setMinimumDate(Date date) {
    ParamChecks.nullNotPermitted(date, "date");
    // check the new minimum date relative to the current maximum date
    Date maxDate = getMaximumDate();
    long maxMillis = maxDate.getTime();
    long newMinMillis = date.getTime();
    if (maxMillis <= newMinMillis) {
        Date oldMin = getMinimumDate();
        long length = maxMillis - oldMin.getTime();
        maxDate = new Date(newMinMillis + length);
    }
    setRange(new DateRange(date, maxDate), true, false);
    fireChangeEvent();
}
项目:ccu-historian    文件:DateAxis.java   
/**
 * Returns the latest date visible on the axis.
 *
 * @return The date.
 *
 * @see #setMaximumDate(Date)
 * @see #getMinimumDate()
 */
public Date getMaximumDate() {
    Date result;
    Range range = getRange();
    if (range instanceof DateRange) {
        DateRange r = (DateRange) range;
        result = r.getUpperDate();
    }
    else {
        result = new Date((long) range.getUpperBound());
    }
    return result;
}
项目:ccu-historian    文件:DateAxis.java   
/**
 * Sets the maximum date visible on the axis and sends an
 * {@link AxisChangeEvent} to all registered listeners.  If
 * <code>maximumDate</code> is on or before the current minimum date for
 * the axis, the minimum date will be shifted to preserve the current
 * length of the axis.
 *
 * @param maximumDate  the date (<code>null</code> not permitted).
 *
 * @see #getMinimumDate()
 * @see #setMinimumDate(Date)
 */
public void setMaximumDate(Date maximumDate) {
    ParamChecks.nullNotPermitted(maximumDate, "maximumDate");
    // check the new maximum date relative to the current minimum date
    Date minDate = getMinimumDate();
    long minMillis = minDate.getTime();
    long newMaxMillis = maximumDate.getTime();
    if (minMillis >= newMaxMillis) {
        Date oldMax = getMaximumDate();
        long length = oldMax.getTime() - minMillis;
        minDate = new Date(newMaxMillis - length);
    }
    setRange(new DateRange(minDate, maximumDate), true, false);
    fireChangeEvent();
}
项目:ccu-historian    文件:DateAxis.java   
/**
 * Translates the data value to the display coordinates (Java 2D User Space)
 * of the chart.
 *
 * @param value  the date to be plotted.
 * @param area  the rectangle (in Java2D space) where the data is to be
 *              plotted.
 * @param edge  the axis location.
 *
 * @return The coordinate corresponding to the supplied data value.
 */
@Override
public double valueToJava2D(double value, Rectangle2D area,
        RectangleEdge edge) {

    value = this.timeline.toTimelineValue((long) value);

    DateRange range = (DateRange) getRange();
    double axisMin = this.timeline.toTimelineValue(range.getLowerMillis());
    double axisMax = this.timeline.toTimelineValue(range.getUpperMillis());
    double result = 0.0;
    if (RectangleEdge.isTopOrBottom(edge)) {
        double minX = area.getX();
        double maxX = area.getMaxX();
        if (isInverted()) {
            result = maxX + ((value - axisMin) / (axisMax - axisMin))
                     * (minX - maxX);
        }
        else {
            result = minX + ((value - axisMin) / (axisMax - axisMin))
                     * (maxX - minX);
        }
    }
    else if (RectangleEdge.isLeftOrRight(edge)) {
        double minY = area.getMinY();
        double maxY = area.getMaxY();
        if (isInverted()) {
            result = minY + (((value - axisMin) / (axisMax - axisMin))
                     * (maxY - minY));
        }
        else {
            result = maxY - (((value - axisMin) / (axisMax - axisMin))
                     * (maxY - minY));
        }
    }
    return result;
}
项目:ccu-historian    文件:DateAxis.java   
/**
 * Translates a Java2D coordinate into the corresponding data value.  To
 * perform this translation, you need to know the area used for plotting
 * data, and which edge the axis is located on.
 *
 * @param java2DValue  the coordinate in Java2D space.
 * @param area  the rectangle (in Java2D space) where the data is to be
 *              plotted.
 * @param edge  the axis location.
 *
 * @return A data value.
 */
@Override
public double java2DToValue(double java2DValue, Rectangle2D area, 
        RectangleEdge edge) {

    DateRange range = (DateRange) getRange();
    double axisMin = this.timeline.toTimelineValue(range.getLowerMillis());
    double axisMax = this.timeline.toTimelineValue(range.getUpperMillis());

    double min = 0.0;
    double max = 0.0;
    if (RectangleEdge.isTopOrBottom(edge)) {
        min = area.getX();
        max = area.getMaxX();
    }
    else if (RectangleEdge.isLeftOrRight(edge)) {
        min = area.getMaxY();
        max = area.getY();
    }

    double result;
    if (isInverted()) {
         result = axisMax - ((java2DValue - min) / (max - min)
                  * (axisMax - axisMin));
    }
    else {
         result = axisMin + ((java2DValue - min) / (max - min)
                  * (axisMax - axisMin));
    }

    return this.timeline.toMillisecond((long) result);
}
项目:ccu-historian    文件:DateAxis.java   
/**
 * Estimates the maximum width of the tick labels, assuming the specified
 * tick unit is used.
 * <P>
 * Rather than computing the string bounds of every tick on the axis, we
 * just look at two values: the lower bound and the upper bound for the
 * axis.  These two values will usually be representative.
 *
 * @param g2  the graphics device.
 * @param unit  the tick unit to use for calculation.
 *
 * @return The estimated maximum width of the tick labels.
 */
private double estimateMaximumTickLabelWidth(Graphics2D g2, 
        DateTickUnit unit) {

    RectangleInsets tickLabelInsets = getTickLabelInsets();
    double result = tickLabelInsets.getLeft() + tickLabelInsets.getRight();

    Font tickLabelFont = getTickLabelFont();
    FontRenderContext frc = g2.getFontRenderContext();
    LineMetrics lm = tickLabelFont.getLineMetrics("ABCxyz", frc);
    if (isVerticalTickLabels()) {
        // all tick labels have the same width (equal to the height of
        // the font)...
        result += lm.getHeight();
    }
    else {
        // look at lower and upper bounds...
        DateRange range = (DateRange) getRange();
        Date lower = range.getLowerDate();
        Date upper = range.getUpperDate();
        String lowerStr, upperStr;
        DateFormat formatter = getDateFormatOverride();
        if (formatter != null) {
            lowerStr = formatter.format(lower);
            upperStr = formatter.format(upper);
        }
        else {
            lowerStr = unit.dateToString(lower);
            upperStr = unit.dateToString(upper);
        }
        FontMetrics fm = g2.getFontMetrics(tickLabelFont);
        double w1 = fm.stringWidth(lowerStr);
        double w2 = fm.stringWidth(upperStr);
        result += Math.max(w1, w2);
    }

    return result;

}
项目:ccu-historian    文件:DateAxis.java   
/**
 * Estimates the maximum width of the tick labels, assuming the specified
 * tick unit is used.
 * <P>
 * Rather than computing the string bounds of every tick on the axis, we
 * just look at two values: the lower bound and the upper bound for the
 * axis.  These two values will usually be representative.
 *
 * @param g2  the graphics device.
 * @param unit  the tick unit to use for calculation.
 *
 * @return The estimated maximum width of the tick labels.
 */
private double estimateMaximumTickLabelHeight(Graphics2D g2,
        DateTickUnit unit) {

    RectangleInsets tickLabelInsets = getTickLabelInsets();
    double result = tickLabelInsets.getTop() + tickLabelInsets.getBottom();

    Font tickLabelFont = getTickLabelFont();
    FontRenderContext frc = g2.getFontRenderContext();
    LineMetrics lm = tickLabelFont.getLineMetrics("ABCxyz", frc);
    if (!isVerticalTickLabels()) {
        // all tick labels have the same width (equal to the height of
        // the font)...
        result += lm.getHeight();
    }
    else {
        // look at lower and upper bounds...
        DateRange range = (DateRange) getRange();
        Date lower = range.getLowerDate();
        Date upper = range.getUpperDate();
        String lowerStr, upperStr;
        DateFormat formatter = getDateFormatOverride();
        if (formatter != null) {
            lowerStr = formatter.format(lower);
            upperStr = formatter.format(upper);
        }
        else {
            lowerStr = unit.dateToString(lower);
            upperStr = unit.dateToString(upper);
        }
        FontMetrics fm = g2.getFontMetrics(tickLabelFont);
        double w1 = fm.stringWidth(lowerStr);
        double w2 = fm.stringWidth(upperStr);
        result += Math.max(w1, w2);
    }

    return result;

}
项目:jfreechart    文件:DateAxis.java   
/**
 * Sets the axis range and sends an {@link AxisChangeEvent} to all
 * registered listeners.
 *
 * @param lower  the lower bound for the axis.
 * @param upper  the upper bound for the axis.
 */
@Override
public void setRange(double lower, double upper) {
    if (lower >= upper) {
        throw new IllegalArgumentException("Requires 'lower' < 'upper'.");
    }
    setRange(new DateRange(lower, upper));
}