From ec99df8b3ee7c599c572b193bb22e02ed35b4c39 Mon Sep 17 00:00:00 2001 From: Tim Molter <tim@knowm.org> Date: Mon, 5 Oct 2015 00:15:10 +0200 Subject: [PATCH] added back date X-Axis for Bar charts, requiring a manually-set date formatting pattern --- .../xchart/demo/charts/bar/BarChart02.java | 1 + .../chartpart/AxisTickBarChartCalculator.java | 21 +++++++++++++++++-- .../chartpart/AxisTickDateCalculator.java | 2 +- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/bar/BarChart02.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/bar/BarChart02.java index 361b6428..aa3d5c3b 100644 --- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/bar/BarChart02.java +++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/bar/BarChart02.java @@ -78,6 +78,7 @@ public class BarChart02 implements ExampleChart { series.setLineColor(SeriesColor.RED); chart.getStyleManager().setPlotGridLinesVisible(false); chart.getStyleManager().setBarFilled(false); + chart.getStyleManager().setDatePattern("YYYY"); return chart; } diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickBarChartCalculator.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickBarChartCalculator.java index 0c71b058..fcad0c31 100644 --- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickBarChartCalculator.java +++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickBarChartCalculator.java @@ -16,6 +16,8 @@ package com.xeiam.xchart.internal.chartpart; import java.math.BigDecimal; +import java.text.SimpleDateFormat; +import java.util.Date; import java.util.List; import com.xeiam.xchart.Series; @@ -70,7 +72,18 @@ public class AxisTickBarChartCalculator extends AxisTickCalculator { double firstPosition = gridStep / 2.0; // set up String formatters that may be encountered - NumberFormatter numberFormatter = new NumberFormatter(styleManager); + NumberFormatter numberFormatter = null; + SimpleDateFormat simpleDateformat = null; + if (chartPainter.getAxisPair().getXAxis().getAxisType() == AxisType.Number) { + numberFormatter = new NumberFormatter(styleManager); + } + else if (chartPainter.getAxisPair().getXAxis().getAxisType() == AxisType.Date) { + if (styleManager.getDatePattern() == null) { + throw new RuntimeException("You need to set the Date Formatting Pattern!!!"); + } + simpleDateformat = new SimpleDateFormat(styleManager.getDatePattern(), styleManager.getLocale()); + simpleDateformat.setTimeZone(styleManager.getTimezone()); + } int counter = 0; @@ -80,9 +93,13 @@ public class AxisTickBarChartCalculator extends AxisTickCalculator { double tickLabelPosition = margin + firstPosition + gridStep * counter++; tickLocations.add(tickLabelPosition); } - else { + else if (chartPainter.getAxisPair().getXAxis().getAxisType() == AxisType.Number) { tickLabels.add(numberFormatter.formatNumber(new BigDecimal(category.toString()), minValue, maxValue, axisDirection)); } + else if (chartPainter.getAxisPair().getXAxis().getAxisType() == AxisType.Date) { + + tickLabels.add(simpleDateformat.format((((Date) category).getTime()))); + } double tickLabelPosition = (int) (margin + firstPosition + gridStep * counter++); tickLocations.add(tickLabelPosition); } diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickDateCalculator.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickDateCalculator.java index 8ef429ab..5b77b80a 100644 --- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickDateCalculator.java +++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickDateCalculator.java @@ -192,7 +192,7 @@ public class AxisTickDateCalculator extends AxisTickCalculator { SimpleDateFormat simpleDateformat = new SimpleDateFormat(datePattern, styleManager.getLocale()); simpleDateformat.setTimeZone(styleManager.getTimezone()); - simpleDateformat.applyPattern(datePattern); + // simpleDateformat.applyPattern(datePattern); // return simpleDateformat.format(value); -- GitLab