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