Example usage for org.jfree.chart.axis DateTickMarkPosition END

List of usage examples for org.jfree.chart.axis DateTickMarkPosition END

Introduction

In this page you can find the example usage for org.jfree.chart.axis DateTickMarkPosition END.

Prototype

DateTickMarkPosition END

To view the source code for org.jfree.chart.axis DateTickMarkPosition END.

Click Source Link

Document

End of period.

Usage

From source file:com.xpn.xwiki.plugin.charts.params.DateTickMarkPositionChartParam.java

@Override
protected void init() {
    addChoice("start", DateTickMarkPosition.START);
    addChoice("middle", DateTickMarkPosition.MIDDLE);
    addChoice("end", DateTickMarkPosition.END);
}

From source file:org.xwiki.rendering.internal.macro.chart.source.AxisConfigurator.java

/**
 * Set the axes in the chart model.//from   w  w  w  . j  a  v  a  2s  . c  o  m
 *
 * @param plotType The target plot type.
 * @param chartModel The target chart model.
 * @throws MacroExecutionException if the axes are incorrectly configured.
 */
public void setAxes(PlotType plotType, SimpleChartModel chartModel) throws MacroExecutionException {
    AxisType[] defaultAxisTypes = plotType.getDefaultAxisTypes();

    for (int i = 0; i < axisTypes.length; i++) {
        AxisType type = axisTypes[i];
        if (i >= defaultAxisTypes.length) {
            if (type != null) {
                throw new MacroExecutionException("To many axes for plot type.");
            }
            continue;
        }
        if (type == null) {
            type = defaultAxisTypes[i];
        }

        Axis axis;

        switch (type) {
        case NUMBER:
            NumberAxis numberAxis = new NumberAxis();
            axis = numberAxis;
            setNumberLimits(numberAxis, i);
            break;
        case CATEGORY:
            axis = new CategoryAxis();
            break;
        case DATE:
            DateAxis dateAxis = new DateAxis();
            axis = dateAxis;
            dateAxis.setTickMarkPosition(DateTickMarkPosition.END);
            if (axisDateFormat[i] != null) {
                try {
                    DateFormat dateFormat = new SimpleDateFormat(axisDateFormat[i],
                            localeConfiguration.getLocale());
                    dateAxis.setDateFormatOverride(dateFormat);
                } catch (IllegalArgumentException e) {
                    throw new MacroExecutionException(
                            String.format("Invalid date format [%s].", axisDateFormat[i]));
                }
            }
            setDateLimits(dateAxis, i);
            break;
        default:
            throw new MacroExecutionException(String.format("Unsupported axis type [%s]", type.getName()));
        }

        chartModel.setAxis(i, axis);
    }
}

From source file:ucar.unidata.idv.control.chart.TimeSeriesChart.java

/**
 * Make the plot/*w  ww .  ja  v a  2  s . c om*/
 *
 * @return The plot_
 */
public Plot doMakePlot() {

    IdvPreferenceManager pref = control.getControlContext().getIdv().getPreferenceManager();
    TimeZone timeZone = pref.getDefaultTimeZone();
    NumberAxis valueAxis = new FixedWidthNumberAxis("");
    final SimpleDateFormat sdf = new SimpleDateFormat(
            ((dateFormat != null) ? dateFormat : pref.getDefaultDateFormat()));
    sdf.setTimeZone(timeZone);
    DateAxis timeAxis = new DateAxis("Time (" + timeZone.getID() + ")", timeZone) {

        protected List xxxxxrefreshTicksHorizontal(Graphics2D g2, Rectangle2D dataArea, RectangleEdge edge) {

            List ticks = super.refreshTicksHorizontal(g2, dataArea, edge);

            List<Tick> result = new java.util.ArrayList<Tick>();

            Font tickLabelFont = getTickLabelFont();
            g2.setFont(tickLabelFont);

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

            DateTickUnit unit = getTickUnit();
            Date tickDate = calculateLowestVisibleTickValue(unit);
            Date upperDate = getMaximumDate();

            Date firstDate = null;
            while (tickDate.before(upperDate)) {

                if (!isHiddenValue(tickDate.getTime())) {
                    // work out the value, label and position
                    String tickLabel;
                    DateFormat formatter = getDateFormatOverride();
                    if (firstDate == null) {
                        if (formatter != null) {
                            tickLabel = formatter.format(tickDate);
                        } else {
                            tickLabel = getTickUnit().dateToString(tickDate);
                        }
                        firstDate = tickDate;
                    } else {
                        double msdiff = tickDate.getTime() - firstDate.getTime();
                        int hours = (int) (msdiff / 1000 / 60 / 60);
                        tickLabel = hours + "H";
                    }
                    //                tickLabel = tickLabel;
                    TextAnchor anchor = null;
                    TextAnchor rotationAnchor = null;
                    double angle = 0.0;
                    if (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;
                        }
                    }

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

                    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):
                case (DateTickUnit.DAY):
                    break;

                case (DateTickUnit.MONTH):
                    tickDate = calculateDateForPositionX(new Month(tickDate, getTimeZone()),
                            getTickMarkPosition());

                    break;

                case (DateTickUnit.YEAR):
                    tickDate = calculateDateForPositionX(new Year(tickDate, getTimeZone()),
                            getTickMarkPosition());

                    break;

                default:
                    break;

                }

            }

            return result;

        }

        private Date calculateDateForPositionX(RegularTimePeriod period, DateTickMarkPosition position) {

            if (position == null) {
                throw new IllegalArgumentException("Null 'position' argument.");
            }
            Date result = null;
            if (position == DateTickMarkPosition.START) {
                result = new Date(period.getFirstMillisecond());
            } else if (position == DateTickMarkPosition.MIDDLE) {
                result = new Date(period.getMiddleMillisecond());
            } else if (position == DateTickMarkPosition.END) {
                result = new Date(period.getLastMillisecond());
            }

            return result;

        }

    };
    timeAxis.setDateFormatOverride(sdf);

    final XYPlot[] xyPlotHolder = { null };

    xyPlotHolder[0] = new MyXYPlot(new TimeSeriesCollection(), timeAxis, valueAxis, null) {
        public void drawBackground(Graphics2D g2, Rectangle2D area) {
            super.drawBackground(g2, area);
            drawSunriseSunset(g2, xyPlotHolder[0], area);
        }
    };

    if (animationTimeAnnotation != null) {
        xyPlotHolder[0].addAnnotation(animationTimeAnnotation);
    }

    return xyPlotHolder[0];

}