From 4b47f980a2a383d5d553f2d16e8d96f2e830cdc0 Mon Sep 17 00:00:00 2001
From: Tim Molter <tim.molter@gmail.com>
Date: Sun, 3 Feb 2013 20:10:17 +0100
Subject: [PATCH] added style manager

---
 .../xeiam/xchart/demo/charts/Example1.java    |  4 +-
 .../xeiam/xchart/demo/charts/Example10.java   |  8 +-
 .../xeiam/xchart/demo/charts/Example2.java    |  8 +-
 .../xeiam/xchart/demo/charts/Example4.java    |  2 +-
 .../xeiam/xchart/demo/charts/Example8.java    |  8 +-
 .../xeiam/xchart/demo/charts/Example9.java    | 16 ++--
 .../src/main/java/com/xeiam/xchart/Chart.java | 54 ++++-------
 .../java/com/xeiam/xchart/QuickChart.java     |  3 +
 .../xchart/{ => appearance}/ChartColor.java   |  2 +-
 .../xeiam/xchart/{ => appearance}/Series.java |  2 +-
 .../xchart/{ => appearance}/SeriesColor.java  |  2 +-
 .../{ => appearance}/SeriesLineStyle.java     |  2 +-
 .../xchart/{ => appearance}/SeriesMarker.java |  2 +-
 .../xeiam/xchart/appearance/StyleManager.java | 90 +++++++++++++++++++
 .../xchart/internal/chartpart/AxisPair.java   |  2 +-
 .../internal/chartpart/AxisTickLabels.java    |  2 +-
 .../internal/chartpart/AxisTickMarks.java     |  6 +-
 .../xchart/internal/chartpart/AxisTitle.java  |  2 +-
 .../xchart/internal/chartpart/ChartTitle.java |  2 +-
 .../xchart/internal/chartpart/Legend.java     |  8 +-
 .../internal/chartpart/PlotContent.java       |  4 +-
 .../internal/chartpart/PlotSurface.java       |  4 +-
 .../SeriesColorMarkerLineStyleCycler.java     |  6 +-
 23 files changed, 156 insertions(+), 83 deletions(-)
 rename xchart/src/main/java/com/xeiam/xchart/{ => appearance}/ChartColor.java (97%)
 rename xchart/src/main/java/com/xeiam/xchart/{ => appearance}/Series.java (99%)
 rename xchart/src/main/java/com/xeiam/xchart/{ => appearance}/SeriesColor.java (98%)
 rename xchart/src/main/java/com/xeiam/xchart/{ => appearance}/SeriesLineStyle.java (98%)
 rename xchart/src/main/java/com/xeiam/xchart/{ => appearance}/SeriesMarker.java (97%)
 create mode 100644 xchart/src/main/java/com/xeiam/xchart/appearance/StyleManager.java

diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example1.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example1.java
index 4a35d8d9..409d81da 100644
--- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example1.java
+++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example1.java
@@ -19,9 +19,9 @@ import java.util.Arrays;
 import java.util.Collection;
 
 import com.xeiam.xchart.Chart;
-import com.xeiam.xchart.Series;
-import com.xeiam.xchart.SeriesMarker;
 import com.xeiam.xchart.SwingWrapper;
+import com.xeiam.xchart.appearance.Series;
+import com.xeiam.xchart.appearance.SeriesMarker;
 
 /**
  * Manual Data
diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example10.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example10.java
index 77704de2..269e4d05 100644
--- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example10.java
+++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example10.java
@@ -16,11 +16,11 @@
 package com.xeiam.xchart.demo.charts;
 
 import com.xeiam.xchart.Chart;
-import com.xeiam.xchart.Series;
-import com.xeiam.xchart.SeriesColor;
-import com.xeiam.xchart.SeriesLineStyle;
-import com.xeiam.xchart.SeriesMarker;
 import com.xeiam.xchart.SwingWrapper;
+import com.xeiam.xchart.appearance.Series;
+import com.xeiam.xchart.appearance.SeriesColor;
+import com.xeiam.xchart.appearance.SeriesLineStyle;
+import com.xeiam.xchart.appearance.SeriesMarker;
 
 /**
  * Plots Hundreds of Series on One Plot
diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example2.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example2.java
index 03854664..2a60a46a 100644
--- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example2.java
+++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example2.java
@@ -19,11 +19,11 @@ import java.util.ArrayList;
 import java.util.Collection;
 
 import com.xeiam.xchart.Chart;
-import com.xeiam.xchart.Series;
-import com.xeiam.xchart.SeriesColor;
-import com.xeiam.xchart.SeriesLineStyle;
-import com.xeiam.xchart.SeriesMarker;
 import com.xeiam.xchart.SwingWrapper;
+import com.xeiam.xchart.appearance.Series;
+import com.xeiam.xchart.appearance.SeriesColor;
+import com.xeiam.xchart.appearance.SeriesLineStyle;
+import com.xeiam.xchart.appearance.SeriesMarker;
 
 /**
  * Sine wave with customized series style
diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example4.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example4.java
index 433e9bf1..37be3ffa 100644
--- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example4.java
+++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example4.java
@@ -24,8 +24,8 @@ import java.util.Date;
 import java.util.TimeZone;
 
 import com.xeiam.xchart.Chart;
-import com.xeiam.xchart.Series;
 import com.xeiam.xchart.SwingWrapper;
+import com.xeiam.xchart.appearance.Series;
 
 /**
  * Date Axis
diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example8.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example8.java
index c6c23fdd..bc93ee1d 100644
--- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example8.java
+++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example8.java
@@ -19,11 +19,11 @@ import java.util.ArrayList;
 import java.util.Collection;
 
 import com.xeiam.xchart.Chart;
-import com.xeiam.xchart.Series;
-import com.xeiam.xchart.SeriesColor;
-import com.xeiam.xchart.SeriesLineStyle;
-import com.xeiam.xchart.SeriesMarker;
 import com.xeiam.xchart.SwingWrapper;
+import com.xeiam.xchart.appearance.Series;
+import com.xeiam.xchart.appearance.SeriesColor;
+import com.xeiam.xchart.appearance.SeriesLineStyle;
+import com.xeiam.xchart.appearance.SeriesMarker;
 
 /**
  * Error bars
diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example9.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example9.java
index c8d2576f..0eb6fe62 100644
--- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example9.java
+++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example9.java
@@ -26,12 +26,12 @@ import java.util.Date;
 import java.util.Locale;
 
 import com.xeiam.xchart.Chart;
-import com.xeiam.xchart.ChartColor;
-import com.xeiam.xchart.Series;
-import com.xeiam.xchart.SeriesColor;
-import com.xeiam.xchart.SeriesLineStyle;
-import com.xeiam.xchart.SeriesMarker;
 import com.xeiam.xchart.SwingWrapper;
+import com.xeiam.xchart.appearance.ChartColor;
+import com.xeiam.xchart.appearance.Series;
+import com.xeiam.xchart.appearance.SeriesColor;
+import com.xeiam.xchart.appearance.SeriesLineStyle;
+import com.xeiam.xchart.appearance.SeriesMarker;
 
 /**
  * Extensive chart customization
@@ -76,10 +76,10 @@ public class Example9 implements ExampleChart {
     chart.setYAxisTitle("Y");
     chart.setForegroundColor(ChartColor.getAWTColor(ChartColor.GREY));
     chart.setGridLinesColor(new Color(255, 255, 255));
-    chart.setBackgroundColor(Color.WHITE);
+    chart.getStyleManager().setBackgroundColor(Color.WHITE);
     chart.setLegendBackgroundColor(Color.PINK);
-    chart.setLinesColor(Color.GREEN);
-    chart.setFontColor(Color.MAGENTA);
+    chart.getStyleManager().setBordersColor(Color.GREEN);
+    chart.getStyleManager().setFontColor(Color.MAGENTA);
     chart.setTitleFont(new Font(Font.MONOSPACED, Font.BOLD, 24));
     chart.setLegendFont(new Font(Font.SERIF, Font.PLAIN, 18));
     chart.setAxisTitleFont(new Font(Font.SANS_SERIF, Font.ITALIC, 18));
diff --git a/xchart/src/main/java/com/xeiam/xchart/Chart.java b/xchart/src/main/java/com/xeiam/xchart/Chart.java
index c955a7b2..3167c92a 100644
--- a/xchart/src/main/java/com/xeiam/xchart/Chart.java
+++ b/xchart/src/main/java/com/xeiam/xchart/Chart.java
@@ -25,6 +25,8 @@ import java.util.Date;
 import java.util.Locale;
 import java.util.TimeZone;
 
+import com.xeiam.xchart.appearance.Series;
+import com.xeiam.xchart.appearance.StyleManager;
 import com.xeiam.xchart.internal.chartpart.AxisPair;
 import com.xeiam.xchart.internal.chartpart.ChartTitle;
 import com.xeiam.xchart.internal.chartpart.Legend;
@@ -39,12 +41,12 @@ public class Chart {
 
   public int width;
   public int height;
-  private Color backgroundColor;
-  public Color bordersColor;
-  public Color fontColor;
+
+  private StyleManager styleManager = new StyleManager();
 
   public final static int CHART_PADDING = 10;
 
+  // Chart Parts
   public ChartTitle chartTitle = new ChartTitle(this);
   public Legend chartLegend = new Legend(this);
   public AxisPair axisPair = new AxisPair(this);
@@ -60,9 +62,7 @@ public class Chart {
 
     this.width = width;
     this.height = height;
-    backgroundColor = ChartColor.getAWTColor(ChartColor.GREY);
-    bordersColor = ChartColor.getAWTColor(ChartColor.DARK_GREY);
-    fontColor = ChartColor.getAWTColor(ChartColor.BLACK);
+
   }
 
   /**
@@ -103,7 +103,7 @@ public class Chart {
     }
 
     g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); // global rendering hint
-    g.setColor(backgroundColor);
+    g.setColor(styleManager.getBackgroundColor());
     g.fillRect(0, 0, width, height);
 
     chartTitle.paint(g);
@@ -340,16 +340,6 @@ public class Chart {
     this.plot.plotSurface.setVisible(isVisible);
   }
 
-  /**
-   * Set the chart background color - the part around the edge of the chart
-   * 
-   * @param color
-   */
-  public void setBackgroundColor(Color color) {
-
-    this.backgroundColor = color;
-  }
-
   /**
    * Set the chart foreground color - the part the series are drawn on
    * 
@@ -380,26 +370,6 @@ public class Chart {
     this.chartLegend.backgroundColor = color;
   }
 
-  /**
-   * Sets the color of the plot border, legend border, tick marks, and error bars
-   * 
-   * @param color
-   */
-  public void setLinesColor(Color color) {
-
-    this.bordersColor = color;
-  }
-
-  /**
-   * Set the chart font color
-   * 
-   * @param color
-   */
-  public void setFontColor(Color color) {
-
-    this.fontColor = color;
-  }
-
   /**
    * Set the chart title font
    * 
@@ -496,4 +466,14 @@ public class Chart {
     this.axisPair.yAxis.axisTick.timezone = timezone;
   }
 
+  /**
+   * Gets the Chart's style manager, which can be used to customize the Chart's appearance
+   * 
+   * @return the style manager
+   */
+  public StyleManager getStyleManager() {
+
+    return styleManager;
+  }
+
 }
diff --git a/xchart/src/main/java/com/xeiam/xchart/QuickChart.java b/xchart/src/main/java/com/xeiam/xchart/QuickChart.java
index 75931dec..22ba2eb4 100644
--- a/xchart/src/main/java/com/xeiam/xchart/QuickChart.java
+++ b/xchart/src/main/java/com/xeiam/xchart/QuickChart.java
@@ -17,6 +17,9 @@ package com.xeiam.xchart;
 
 import java.util.Collection;
 
+import com.xeiam.xchart.appearance.Series;
+import com.xeiam.xchart.appearance.SeriesMarker;
+
 /**
  * A convenience class for making Charts with one line of code
  * 
diff --git a/xchart/src/main/java/com/xeiam/xchart/ChartColor.java b/xchart/src/main/java/com/xeiam/xchart/appearance/ChartColor.java
similarity index 97%
rename from xchart/src/main/java/com/xeiam/xchart/ChartColor.java
rename to xchart/src/main/java/com/xeiam/xchart/appearance/ChartColor.java
index 36a967ea..dffbfa85 100644
--- a/xchart/src/main/java/com/xeiam/xchart/ChartColor.java
+++ b/xchart/src/main/java/com/xeiam/xchart/appearance/ChartColor.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.xeiam.xchart;
+package com.xeiam.xchart.appearance;
 
 import java.awt.Color;
 
diff --git a/xchart/src/main/java/com/xeiam/xchart/Series.java b/xchart/src/main/java/com/xeiam/xchart/appearance/Series.java
similarity index 99%
rename from xchart/src/main/java/com/xeiam/xchart/Series.java
rename to xchart/src/main/java/com/xeiam/xchart/appearance/Series.java
index b49e1dca..3b05288f 100644
--- a/xchart/src/main/java/com/xeiam/xchart/Series.java
+++ b/xchart/src/main/java/com/xeiam/xchart/appearance/Series.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.xeiam.xchart;
+package com.xeiam.xchart.appearance;
 
 import java.awt.BasicStroke;
 import java.awt.Color;
diff --git a/xchart/src/main/java/com/xeiam/xchart/SeriesColor.java b/xchart/src/main/java/com/xeiam/xchart/appearance/SeriesColor.java
similarity index 98%
rename from xchart/src/main/java/com/xeiam/xchart/SeriesColor.java
rename to xchart/src/main/java/com/xeiam/xchart/appearance/SeriesColor.java
index 8640a462..f5994a65 100644
--- a/xchart/src/main/java/com/xeiam/xchart/SeriesColor.java
+++ b/xchart/src/main/java/com/xeiam/xchart/appearance/SeriesColor.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.xeiam.xchart;
+package com.xeiam.xchart.appearance;
 
 import java.awt.Color;
 
diff --git a/xchart/src/main/java/com/xeiam/xchart/SeriesLineStyle.java b/xchart/src/main/java/com/xeiam/xchart/appearance/SeriesLineStyle.java
similarity index 98%
rename from xchart/src/main/java/com/xeiam/xchart/SeriesLineStyle.java
rename to xchart/src/main/java/com/xeiam/xchart/appearance/SeriesLineStyle.java
index 1801ac01..b73d6d35 100644
--- a/xchart/src/main/java/com/xeiam/xchart/SeriesLineStyle.java
+++ b/xchart/src/main/java/com/xeiam/xchart/appearance/SeriesLineStyle.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.xeiam.xchart;
+package com.xeiam.xchart.appearance;
 
 import java.awt.BasicStroke;
 
diff --git a/xchart/src/main/java/com/xeiam/xchart/SeriesMarker.java b/xchart/src/main/java/com/xeiam/xchart/appearance/SeriesMarker.java
similarity index 97%
rename from xchart/src/main/java/com/xeiam/xchart/SeriesMarker.java
rename to xchart/src/main/java/com/xeiam/xchart/appearance/SeriesMarker.java
index 04db9f00..e486620f 100644
--- a/xchart/src/main/java/com/xeiam/xchart/SeriesMarker.java
+++ b/xchart/src/main/java/com/xeiam/xchart/appearance/SeriesMarker.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.xeiam.xchart;
+package com.xeiam.xchart.appearance;
 
 import com.xeiam.xchart.internal.markers.Circle;
 import com.xeiam.xchart.internal.markers.Diamond;
diff --git a/xchart/src/main/java/com/xeiam/xchart/appearance/StyleManager.java b/xchart/src/main/java/com/xeiam/xchart/appearance/StyleManager.java
new file mode 100644
index 00000000..64bcce88
--- /dev/null
+++ b/xchart/src/main/java/com/xeiam/xchart/appearance/StyleManager.java
@@ -0,0 +1,90 @@
+/**
+ * Copyright (C) 2013 Xeiam LLC http://xeiam.com
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of
+ * this software and associated documentation files (the "Software"), to deal in
+ * the Software without restriction, including without limitation the rights to
+ * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+ * of the Software, and to permit persons to whom the Software is furnished to do
+ * so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+package com.xeiam.xchart.appearance;
+
+import java.awt.Color;
+
+/**
+ * @author timmolter
+ */
+public class StyleManager {
+
+  private Color backgroundColor;
+  public Color bordersColor;
+  public Color fontColor;
+
+  /**
+   * Constructor
+   */
+  public StyleManager() {
+
+    backgroundColor = ChartColor.getAWTColor(ChartColor.GREY);
+    bordersColor = ChartColor.getAWTColor(ChartColor.DARK_GREY);
+    fontColor = ChartColor.getAWTColor(ChartColor.BLACK);
+  }
+
+  /**
+   * Set the chart background color - the part around the edge of the chart
+   * 
+   * @param color
+   */
+  public void setBackgroundColor(Color backgroundColor) {
+
+    this.backgroundColor = backgroundColor;
+  }
+
+  /**
+   * Sets the color of the plot border, legend border, tick marks, and error bars
+   * 
+   * @param color
+   */
+  public void setBordersColor(Color bordersColor) {
+
+    this.bordersColor = bordersColor;
+  }
+
+  /**
+   * Set the chart font color
+   * 
+   * @param color
+   */
+  public void setFontColor(Color fontColor) {
+
+    this.fontColor = fontColor;
+  }
+
+  public Color getBackgroundColor() {
+
+    return backgroundColor;
+  }
+
+  public Color getBordersColor() {
+
+    return bordersColor;
+  }
+
+  public Color getFontColor() {
+
+    return fontColor;
+  }
+
+}
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisPair.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisPair.java
index 85e3cd31..6df987ba 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisPair.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisPair.java
@@ -25,7 +25,7 @@ import java.util.LinkedHashMap;
 import java.util.Map;
 
 import com.xeiam.xchart.Chart;
-import com.xeiam.xchart.Series;
+import com.xeiam.xchart.appearance.Series;
 import com.xeiam.xchart.internal.chartpart.Axis.AxisType;
 import com.xeiam.xchart.internal.interfaces.IChartPart;
 import com.xeiam.xchart.internal.misc.SeriesColorMarkerLineStyleCycler;
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickLabels.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickLabels.java
index 74dbd943..f0696f14 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickLabels.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickLabels.java
@@ -60,7 +60,7 @@ public class AxisTickLabels implements IChartPart {
     bounds = new Rectangle();
     g.setFont(font);
 
-    g.setColor(axisTick.axis.axisPair.chart.fontColor);
+    g.setColor(axisTick.axis.axisPair.chart.getStyleManager().getFontColor());
 
     if (axisTick.axis.direction == Axis.Direction.Y) { // Y-Axis
 
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickMarks.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickMarks.java
index 9aca4a0e..a0dcfa1f 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickMarks.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickMarks.java
@@ -60,7 +60,7 @@ public class AxisTickMarks implements IChartPart {
 
     bounds = new Rectangle();
 
-    g.setColor(axisTick.axis.axisPair.chart.bordersColor);
+    g.setColor(axisTick.axis.axisPair.chart.getStyleManager().getBordersColor());
 
     if (axisTick.axis.direction == Axis.Direction.Y) { // Y-Axis
 
@@ -72,7 +72,7 @@ public class AxisTickMarks implements IChartPart {
 
         int tickLocation = axisTick.tickLocations.get(i);
 
-        g.setColor(axisTick.axis.axisPair.chart.bordersColor);
+        g.setColor(axisTick.axis.axisPair.chart.getStyleManager().getBordersColor());
         g.setStroke(stroke);
 
         g.drawLine(xOffset, yOffset + (int) (axisTick.axis.getPaintZone().getHeight() - tickLocation), xOffset + TICK_LENGTH, yOffset + (int) (axisTick.axis.getPaintZone().getHeight() - tickLocation));
@@ -96,7 +96,7 @@ public class AxisTickMarks implements IChartPart {
 
         int tickLocation = axisTick.tickLocations.get(i);
 
-        g.setColor(axisTick.axis.axisPair.chart.bordersColor);
+        g.setColor(axisTick.axis.axisPair.chart.getStyleManager().getBordersColor());
         g.setStroke(stroke);
 
         g.drawLine(xOffset + tickLocation, yOffset, xOffset + tickLocation, yOffset - TICK_LENGTH);
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTitle.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTitle.java
index 4c9f84e7..2d5dde1e 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTitle.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTitle.java
@@ -100,7 +100,7 @@ public class AxisTitle implements IChartPart, IHideable {
 
     bounds = new Rectangle();
 
-    g.setColor(axis.axisPair.chart.fontColor);
+    g.setColor(axis.axisPair.chart.getStyleManager().getFontColor());
     g.setFont(font);
 
     if (axis.direction == Axis.Direction.Y) {
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/ChartTitle.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/ChartTitle.java
index 480ea606..ac50ea78 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/ChartTitle.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/ChartTitle.java
@@ -90,7 +90,7 @@ public class ChartTitle implements IChartPart, IHideable {
       // g.setColor(Color.green);
       // g.draw(bounds);
 
-      g.setColor(chart.fontColor);
+      g.setColor(chart.getStyleManager().getFontColor());
       textLayout.draw(g, xOffset, yOffset);
     }
 
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/Legend.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/Legend.java
index a1260406..7084c0a4 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/Legend.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/Legend.java
@@ -24,8 +24,8 @@ import java.awt.font.TextLayout;
 import java.util.Map;
 
 import com.xeiam.xchart.Chart;
-import com.xeiam.xchart.ChartColor;
-import com.xeiam.xchart.Series;
+import com.xeiam.xchart.appearance.ChartColor;
+import com.xeiam.xchart.appearance.Series;
 import com.xeiam.xchart.internal.interfaces.IChartPart;
 import com.xeiam.xchart.internal.interfaces.IHideable;
 import com.xeiam.xchart.internal.markers.Marker;
@@ -111,7 +111,7 @@ public class Legend implements IChartPart, IHideable {
       int xOffset = chart.width - legendBoxWidth - Chart.CHART_PADDING;
       int yOffset = (int) ((chart.height - legendBoxHeight) / 2.0 + chart.chartTitle.getBounds().getY() + chart.chartTitle.getBounds().getHeight());
 
-      g.setColor(chart.bordersColor);
+      g.setColor(chart.getStyleManager().getBordersColor());
       g.drawRect(xOffset, yOffset, legendBoxWidth, legendBoxHeight);
       g.setColor(backgroundColor);
       g.fillRect(xOffset + 1, yOffset + 1, legendBoxWidth - 1, legendBoxHeight - 1);
@@ -134,7 +134,7 @@ public class Legend implements IChartPart, IHideable {
         }
 
         // paint series name
-        g.setColor(chart.fontColor);
+        g.setColor(chart.getStyleManager().getFontColor());
         TextLayout layout = new TextLayout(series.name, font, new FontRenderContext(null, true, false));
         layout.draw(g, (float) (startx + Marker.SIZE + (Marker.SIZE * 1.5) + LEGEND_PADDING), (starty + Marker.SIZE));
         starty = starty + legendTextContentMaxHeight + LEGEND_PADDING;
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContent.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContent.java
index 7dd8fa7c..d2970a87 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContent.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContent.java
@@ -24,7 +24,7 @@ import java.util.Date;
 import java.util.Iterator;
 import java.util.Map;
 
-import com.xeiam.xchart.Series;
+import com.xeiam.xchart.appearance.Series;
 import com.xeiam.xchart.internal.chartpart.Axis.AxisType;
 import com.xeiam.xchart.internal.interfaces.IChartPart;
 
@@ -145,7 +145,7 @@ public class PlotContent implements IChartPart {
 
         // paint errorbar
         if (errorBars != null) {
-          g.setColor(plot.chart.bordersColor);
+          g.setColor(plot.chart.getStyleManager().getBordersColor());
           g.setStroke(new BasicStroke(1, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL));
           int bottom = (int) (-1 * bounds.getHeight() * eb / (yMax.subtract(yMin).doubleValue()));
           int top = (int) (bounds.getHeight() * eb / (yMax.subtract(yMin).doubleValue()));
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotSurface.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotSurface.java
index 6f51c622..29ad0049 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotSurface.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotSurface.java
@@ -21,7 +21,7 @@ import java.awt.Graphics2D;
 import java.awt.Rectangle;
 import java.util.List;
 
-import com.xeiam.xchart.ChartColor;
+import com.xeiam.xchart.appearance.ChartColor;
 import com.xeiam.xchart.internal.interfaces.IChartPart;
 import com.xeiam.xchart.internal.interfaces.IHideable;
 
@@ -74,7 +74,7 @@ public class PlotSurface implements IChartPart, IHideable {
     g.setColor(foregroundColor);
     g.fill(backgroundRectangle);
     Rectangle borderRectangle = new Rectangle((int) bounds.getX() - 1, (int) bounds.getY(), (int) (bounds.getWidth()), (int) bounds.getHeight());
-    g.setColor(plot.chart.bordersColor);
+    g.setColor(plot.chart.getStyleManager().getBordersColor());
     g.draw(borderRectangle);
 
     // paint grid lines
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/misc/SeriesColorMarkerLineStyleCycler.java b/xchart/src/main/java/com/xeiam/xchart/internal/misc/SeriesColorMarkerLineStyleCycler.java
index 15d674a3..23166c83 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/misc/SeriesColorMarkerLineStyleCycler.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/misc/SeriesColorMarkerLineStyleCycler.java
@@ -25,9 +25,9 @@ import java.util.EnumSet;
 import java.util.HashMap;
 import java.util.Map;
 
-import com.xeiam.xchart.SeriesColor;
-import com.xeiam.xchart.SeriesLineStyle;
-import com.xeiam.xchart.SeriesMarker;
+import com.xeiam.xchart.appearance.SeriesColor;
+import com.xeiam.xchart.appearance.SeriesLineStyle;
+import com.xeiam.xchart.appearance.SeriesMarker;
 
 /**
  * Cycles through the different colors, markers, and strokes in a predetermined way
-- 
GitLab