Package com.positive.charts.axis.ticks

Examples of com.positive.charts.axis.ticks.DateTickUnit


    f5.setTimeZone(zone);
    f6.setTimeZone(zone);
    f7.setTimeZone(zone);

    // milliseconds
    units.add(new DateTickUnit(DateTickUnit.MILLISECOND, 1, f1));
    units.add(new DateTickUnit(DateTickUnit.MILLISECOND, 5,
        DateTickUnit.MILLISECOND, 1, f1));
    units.add(new DateTickUnit(DateTickUnit.MILLISECOND, 10,
        DateTickUnit.MILLISECOND, 1, f1));
    units.add(new DateTickUnit(DateTickUnit.MILLISECOND, 25,
        DateTickUnit.MILLISECOND, 5, f1));
    units.add(new DateTickUnit(DateTickUnit.MILLISECOND, 50,
        DateTickUnit.MILLISECOND, 10, f1));
    units.add(new DateTickUnit(DateTickUnit.MILLISECOND, 100,
        DateTickUnit.MILLISECOND, 10, f1));
    units.add(new DateTickUnit(DateTickUnit.MILLISECOND, 250,
        DateTickUnit.MILLISECOND, 10, f1));
    units.add(new DateTickUnit(DateTickUnit.MILLISECOND, 500,
        DateTickUnit.MILLISECOND, 50, f1));

    // seconds
    units.add(new DateTickUnit(DateTickUnit.SECOND, 1,
        DateTickUnit.MILLISECOND, 50, f2));
    units.add(new DateTickUnit(DateTickUnit.SECOND, 5, DateTickUnit.SECOND,
        1, f2));
    units.add(new DateTickUnit(DateTickUnit.SECOND, 10,
        DateTickUnit.SECOND, 1, f2));
    units.add(new DateTickUnit(DateTickUnit.SECOND, 30,
        DateTickUnit.SECOND, 5, f2));

    // minutes
    units.add(new DateTickUnit(DateTickUnit.MINUTE, 1, DateTickUnit.SECOND,
        5, f3));
    units.add(new DateTickUnit(DateTickUnit.MINUTE, 2, DateTickUnit.SECOND,
        10, f3));
    units.add(new DateTickUnit(DateTickUnit.MINUTE, 5, DateTickUnit.MINUTE,
        1, f3));
    units.add(new DateTickUnit(DateTickUnit.MINUTE, 10,
        DateTickUnit.MINUTE, 1, f3));
    units.add(new DateTickUnit(DateTickUnit.MINUTE, 15,
        DateTickUnit.MINUTE, 5, f3));
    units.add(new DateTickUnit(DateTickUnit.MINUTE, 20,
        DateTickUnit.MINUTE, 5, f3));
    units.add(new DateTickUnit(DateTickUnit.MINUTE, 30,
        DateTickUnit.MINUTE, 5, f3));

    // hours
    units.add(new DateTickUnit(DateTickUnit.HOUR, 1, DateTickUnit.MINUTE,
        5, f3));
    units.add(new DateTickUnit(DateTickUnit.HOUR, 2, DateTickUnit.MINUTE,
        10, f3));
    units.add(new DateTickUnit(DateTickUnit.HOUR, 4, DateTickUnit.MINUTE,
        30, f3));
    units.add(new DateTickUnit(DateTickUnit.HOUR, 6, DateTickUnit.HOUR, 1,
        f3));
    units.add(new DateTickUnit(DateTickUnit.HOUR, 12, DateTickUnit.HOUR, 1,
        f4));

    // days
    units.add(new DateTickUnit(DateTickUnit.DAY, 1, DateTickUnit.HOUR, 1,
        f5));
    units.add(new DateTickUnit(DateTickUnit.DAY, 2, DateTickUnit.HOUR, 1,
        f5));
    units
        .add(new DateTickUnit(DateTickUnit.DAY, 7, DateTickUnit.DAY, 1,
            f5));
    units.add(new DateTickUnit(DateTickUnit.DAY, 15, DateTickUnit.DAY, 1,
        f5));

    // months
    units.add(new DateTickUnit(DateTickUnit.MONTH, 1, DateTickUnit.DAY, 1,
        f6));
    units.add(new DateTickUnit(DateTickUnit.MONTH, 2, DateTickUnit.DAY, 1,
        f6));
    units.add(new DateTickUnit(DateTickUnit.MONTH, 3, DateTickUnit.MONTH,
        1, f6));
    units.add(new DateTickUnit(DateTickUnit.MONTH, 4, DateTickUnit.MONTH,
        1, f6));
    units.add(new DateTickUnit(DateTickUnit.MONTH, 6, DateTickUnit.MONTH,
        1, f6));

    // years
    units.add(new DateTickUnit(DateTickUnit.YEAR, 1, DateTickUnit.MONTH, 1,
        f7));
    units.add(new DateTickUnit(DateTickUnit.YEAR, 2, DateTickUnit.MONTH, 3,
        f7));
    units.add(new DateTickUnit(DateTickUnit.YEAR, 5, DateTickUnit.YEAR, 1,
        f7));
    units.add(new DateTickUnit(DateTickUnit.YEAR, 10, DateTickUnit.YEAR, 1,
        f7));
    units.add(new DateTickUnit(DateTickUnit.YEAR, 25, DateTickUnit.YEAR, 5,
        f7));
    units.add(new DateTickUnit(DateTickUnit.YEAR, 50, DateTickUnit.YEAR,
        10, f7));
    units.add(new DateTickUnit(DateTickUnit.YEAR, 100, DateTickUnit.YEAR,
        20, f7));

    return units;

  }
View Full Code Here


  private boolean hasDuplicates() {

    new java.util.ArrayList();

    final DateTickUnit unit = this.getTickUnit();
    Date tickDate = this.calculateLowestVisibleTickValue(unit);

    String previousTickLabel = "";
    String tickLabel = "";

    final Date upperDate = this.getMaximumDate();

    while (tickDate.before(upperDate)) {
      if (!this.isHiddenValue(tickDate.getTime())) {

        final DateFormat formatter = this.getDateFormatOverride();
        if (formatter != null) {
          tickLabel = formatter.format(tickDate);
        } else {
          tickLabel = this.tickUnit.dateToString(tickDate);
        }

        // TODO: Code below fixes duplicated labels problem
        if (tickLabel.equals(previousTickLabel)) {
          tickLabel = "";
          return true;
        } else {
          previousTickLabel = tickLabel;
        }

        tickDate = unit.addToDate(tickDate);
      } else {
        tickDate = unit.rollDate(tickDate);
      }
    }

    return false;
  }
View Full Code Here

    if (this.isAutoTickUnitSelection()) {
      this.selectAutoTickUnit(g2, dataArea, edge);
    }

    final DateTickUnit unit = this.getTickUnit();
    Date tickDate = this.calculateLowestVisibleTickValue(unit);
    final Date upperDate = this.getMaximumDate();
    // float lastX = Float.MIN_VALUE;
    String previousTickLabel = "";
    DateFormat formatter = this.getDateFormatOverride();
    if ((formatter != null) && this.hasDuplicates()) {
      previousTickLabel = formatter.format(tickDate);
    }
    while (tickDate.before(upperDate)) {

      if (!this.isHiddenValue(tickDate.getTime())) {
        // work out the value, label and position
        String tickLabel;
        formatter = this.getDateFormatOverride();
        if (formatter != null) {
          tickLabel = formatter.format(tickDate);
        } else {
          tickLabel = this.tickUnit.dateToString(tickDate);
        }

        // TODO: Code below fixes duplicated labels problem
        if (tickLabel.equals(previousTickLabel)) {
          tickLabel = "";
        } else {
          previousTickLabel = tickLabel;
        }
        TextAnchor anchor = null;
        TextAnchor rotationAnchor = null;
        double angle = 0.0;
        if (this.isVerticalTickLabels()) {
          anchor = TextAnchor.CENTER_RIGHT;
          rotationAnchor = TextAnchor.CENTER_RIGHT;
          if (edge == RectangleEdge.TOP) {
            angle = Math.PI / 2.0;
          } else {
            angle = -Math.PI / 2.0;
          }
        } else {
          if (edge == RectangleEdge.TOP) {
            anchor = TextAnchor.BOTTOM_CENTER;
            rotationAnchor = TextAnchor.BOTTOM_CENTER;
          } else {
            anchor = TextAnchor.TOP_CENTER;
            rotationAnchor = TextAnchor.TOP_CENTER;
          }
        }

        final ITick tick = new DateTick(tickDate, tickLabel, anchor,
            rotationAnchor, angle);
        result.add(tick);
        tickDate = unit.addToDate(tickDate);
      } else {
        tickDate = unit.rollDate(tickDate);
        continue;
      }

      // could add a flag to make the following correction optional...
      switch (unit.getUnit()) {

      case (DateTickUnit.MILLISECOND):
      case (DateTickUnit.SECOND):
      case (DateTickUnit.MINUTE):
      case (DateTickUnit.HOUR):
View Full Code Here

    g2.setFont(tickLabelFont);

    if (this.isAutoTickUnitSelection()) {
      this.selectAutoTickUnit(g2, dataArea, edge);
    }
    final DateTickUnit unit = this.getTickUnit();
    Date tickDate = this.calculateLowestVisibleTickValue(unit);
    // Date upperDate = calculateHighestVisibleTickValue(unit);
    final Date upperDate = this.getMaximumDate();
    while (tickDate.before(upperDate)) {

      if (!this.isHiddenValue(tickDate.getTime())) {
        // work out the value, label and position
        String tickLabel;
        final DateFormat formatter = this.getDateFormatOverride();
        if (formatter != null) {
          tickLabel = formatter.format(tickDate);
        } else {
          tickLabel = this.tickUnit.dateToString(tickDate);
        }
        TextAnchor anchor = null;
        TextAnchor rotationAnchor = null;
        double angle = 0.0;
        if (this.isVerticalTickLabels()) {
          anchor = TextAnchor.BOTTOM_CENTER;
          rotationAnchor = TextAnchor.BOTTOM_CENTER;
          if (edge == RectangleEdge.LEFT) {
            angle = -Math.PI / 2.0;
          } else {
            angle = Math.PI / 2.0;
          }
        } else {
          if (edge == RectangleEdge.LEFT) {
            anchor = TextAnchor.CENTER_RIGHT;
            rotationAnchor = TextAnchor.CENTER_RIGHT;
          } else {
            anchor = TextAnchor.CENTER_LEFT;
            rotationAnchor = TextAnchor.CENTER_LEFT;
          }
        }

        final ITick tick = new DateTick(tickDate, tickLabel, anchor,
            rotationAnchor, angle);
        result.add(tick);
        tickDate = unit.addToDate(tickDate);
      } else {
        tickDate = unit.rollDate(tickDate);
      }
    }
    return result;
  }
View Full Code Here

        edge);
    final double unit1Width = Math.abs(x1 - zero);

    // then extrapolate...
    final double guess = (tickLabelWidth / unit1Width) * unit1.getSize();
    DateTickUnit unit2 = (DateTickUnit) tickUnits.getCeilingTickUnit(guess);
    final double x2 = this.valueToJava2D(shift + unit2.getSize(), dataArea,
        edge);
    final double unit2Width = Math.abs(x2 - zero);
    tickLabelWidth = this.estimateMaximumTickLabelWidth(g2, unit2);
    if (tickLabelWidth > unit2Width) {
      unit2 = (DateTickUnit) tickUnits.getLargerTickUnit(unit2);
View Full Code Here

    final TickUnitSource tickUnits = this.getStandardTickUnits();
    final double zero = this.valueToJava2D(0.0, dataArea, edge);

    // start with a unit that is at least 1/10th of the axis length
    final double estimate1 = this.getRange().getLength() / 10.0;
    final DateTickUnit candidate1 = (DateTickUnit) tickUnits
        .getCeilingTickUnit(estimate1);
    final double labelHeight1 = this.estimateMaximumTickLabelHeight(g2,
        candidate1);
    final double y1 = this.valueToJava2D(candidate1.getSize(), dataArea,
        edge);
    final double candidate1UnitHeight = Math.abs(y1 - zero);

    // now extrapolate based on label height and unit height...
    final double estimate2 = (labelHeight1 / candidate1UnitHeight)
        * candidate1.getSize();
    final DateTickUnit candidate2 = (DateTickUnit) tickUnits
        .getCeilingTickUnit(estimate2);
    final double labelHeight2 = this.estimateMaximumTickLabelHeight(g2,
        candidate2);
    final double y2 = this.valueToJava2D(candidate2.getSize(), dataArea,
        edge);
    final double unit2Height = Math.abs(y2 - zero);

    // make final selection...
    DateTickUnit finalUnit;
    if (labelHeight2 < unit2Height) {
      finalUnit = candidate2;
    } else {
      finalUnit = (DateTickUnit) tickUnits.getLargerTickUnit(candidate2);
    }
View Full Code Here

TOP

Related Classes of com.positive.charts.axis.ticks.DateTickUnit

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.