From cc76f6a6de9d420912e6d065d6ac4fbdf1a62303 Mon Sep 17 00:00:00 2001
From: Tim Molter <tim.molter@gmail.com>
Date: Sat, 15 Nov 2014 14:57:14 +0100
Subject: [PATCH] Issue #87 allow error bar color to match series color

---
 .../java/com/xeiam/xchart/StyleManager.java   | 19 ++++++++++++++++++-
 .../chartpart/PlotContentLineChart.java       |  9 ++++++++-
 .../xchart/internal/style/GGPlot2Theme.java   |  5 +++++
 .../xchart/internal/style/MatlabTheme.java    |  5 +++++
 .../xeiam/xchart/internal/style/Theme.java    |  2 ++
 .../xchart/internal/style/XChartTheme.java    |  6 ++++++
 6 files changed, 44 insertions(+), 2 deletions(-)

diff --git a/xchart/src/main/java/com/xeiam/xchart/StyleManager.java b/xchart/src/main/java/com/xeiam/xchart/StyleManager.java
index fb4d87a2..58fe2917 100644
--- a/xchart/src/main/java/com/xeiam/xchart/StyleManager.java
+++ b/xchart/src/main/java/com/xeiam/xchart/StyleManager.java
@@ -143,6 +143,7 @@ public class StyleManager {
 
   // Error Bars ///////////////////////////////
   private Color errorBarsColor;
+  private boolean isErrorBarsColorSeriesColor;
 
   // Formatting ////////////////////////////////
   private Locale locale;
@@ -231,6 +232,7 @@ public class StyleManager {
 
     // Error Bars ///////////////////////////////
     errorBarsColor = theme.getErrorBarsColor();
+    isErrorBarsColorSeriesColor = theme.isErrorBarsColorSeriesColor();
 
     // Formatting ////////////////////////////////
     locale = Locale.getDefault();
@@ -1045,7 +1047,7 @@ public class StyleManager {
 
   /**
    * set whether or no bars are filled with a solid color or empty.
-   * 
+   *
    * @param isBarFilled
    */
   public void setBarFilled(boolean isBarFilled) {
@@ -1092,6 +1094,21 @@ public class StyleManager {
     return errorBarsColor;
   }
 
+  /**
+   * Set true if the the error bar color should match the series color
+   *
+   * @return
+   */
+  public void setErrorBarsColorSeriesColor(boolean isErrorBarsColorSeriesColor) {
+
+    this.isErrorBarsColorSeriesColor = isErrorBarsColorSeriesColor;
+  }
+
+  public boolean isErrorBarsColorSeriesColor() {
+
+    return isErrorBarsColorSeriesColor;
+  }
+
   // Formatting ////////////////////////////////
 
   /**
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContentLineChart.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContentLineChart.java
index 0b2e49aa..bcf987e8 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContentLineChart.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContentLineChart.java
@@ -236,7 +236,14 @@ public class PlotContentLineChart extends PlotContent {
 
         if (errorBars != null) {
 
-          g.setColor(getChartPainter().getStyleManager().getErrorBarsColor());
+          // set error bar color
+
+          if (getChartPainter().getStyleManager().isErrorBarsColorSeriesColor()) {
+            g.setColor(series.getStrokeColor());
+          }
+          else {
+            g.setColor(getChartPainter().getStyleManager().getErrorBarsColor());
+          }
           g.setStroke(errorBarStroke);
 
           double topValue = 0.0;
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/style/GGPlot2Theme.java b/xchart/src/main/java/com/xeiam/xchart/internal/style/GGPlot2Theme.java
index cb95e1a1..5a454f99 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/style/GGPlot2Theme.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/style/GGPlot2Theme.java
@@ -315,4 +315,9 @@ public class GGPlot2Theme implements Theme {
     return ChartColor.getAWTColor(ChartColor.DARK_GREY);
   }
 
+  @Override
+  public boolean isErrorBarsColorSeriesColor() {
+
+    return false;
+  }
 }
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/style/MatlabTheme.java b/xchart/src/main/java/com/xeiam/xchart/internal/style/MatlabTheme.java
index 5756a29d..1cbbe35a 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/style/MatlabTheme.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/style/MatlabTheme.java
@@ -316,4 +316,9 @@ public class MatlabTheme implements Theme {
     return ChartColor.getAWTColor(ChartColor.BLACK);
   }
 
+  @Override
+  public boolean isErrorBarsColorSeriesColor() {
+
+    return false;
+  }
 }
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/style/Theme.java b/xchart/src/main/java/com/xeiam/xchart/internal/style/Theme.java
index 4ca1c5dd..97b4bffb 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/style/Theme.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/style/Theme.java
@@ -132,4 +132,6 @@ public interface Theme {
 
   public Color getErrorBarsColor();
 
+  public boolean isErrorBarsColorSeriesColor();
+
 }
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/style/XChartTheme.java b/xchart/src/main/java/com/xeiam/xchart/internal/style/XChartTheme.java
index 1a4cf322..d09084da 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/style/XChartTheme.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/style/XChartTheme.java
@@ -315,4 +315,10 @@ public class XChartTheme implements Theme {
     return ChartColor.getAWTColor(ChartColor.DARK_GREY);
   }
 
+  @Override
+  public boolean isErrorBarsColorSeriesColor() {
+
+    return false;
+  }
+
 }
-- 
GitLab