From 5bc523fa93cf75ea12e04c12938ba7428a771079 Mon Sep 17 00:00:00 2001
From: Tim Molter <tim.molter@gmail.com>
Date: Sun, 10 Feb 2013 07:52:26 +0100
Subject: [PATCH] plot gridline visibility, got rid of IHideable

---
 .../src/main/java/com/xeiam/xchart/Chart.java | 12 -------
 .../xchart/internal/chartpart/AxisTick.java   |  8 +----
 .../xchart/internal/chartpart/AxisTitle.java  |  8 +----
 .../xchart/internal/chartpart/ChartTitle.java |  8 +----
 .../xchart/internal/chartpart/Legend.java     |  8 +----
 .../internal/chartpart/PlotSurface.java       | 14 ++------
 .../xchart/internal/interfaces/IHideable.java | 19 -----------
 .../com/xeiam/xchart/style/StyleManager.java  | 34 +++++++++++++++++--
 .../com/xeiam/xchart/style/theme/Theme.java   |  4 +++
 .../xeiam/xchart/style/theme/XChartTheme.java | 10 ++++++
 10 files changed, 52 insertions(+), 73 deletions(-)
 delete mode 100644 xchart/src/main/java/com/xeiam/xchart/internal/interfaces/IHideable.java

diff --git a/xchart/src/main/java/com/xeiam/xchart/Chart.java b/xchart/src/main/java/com/xeiam/xchart/Chart.java
index 6d4b3064..20fd1971 100644
--- a/xchart/src/main/java/com/xeiam/xchart/Chart.java
+++ b/xchart/src/main/java/com/xeiam/xchart/Chart.java
@@ -254,18 +254,6 @@ public class Chart {
     this.axisPair.yAxis.axisTitle.setText(title);
   }
 
-  // ChartPart visibility ////////////////////////////////
-
-  /**
-   * Set the chart grid lines visibility
-   * 
-   * @param isVisible
-   */
-  public void setGridlinesVisible(boolean isVisible) {
-
-    this.plot.plotSurface.setVisible(isVisible);
-  }
-
   /**
    * Set the chart foreground color - the part the series are drawn on
    * 
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTick.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTick.java
index 030fe332..20207578 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTick.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTick.java
@@ -26,13 +26,12 @@ import java.util.TimeZone;
 import com.xeiam.xchart.internal.chartpart.Axis.AxisType;
 import com.xeiam.xchart.internal.chartpart.Axis.Direction;
 import com.xeiam.xchart.internal.interfaces.IChartPart;
-import com.xeiam.xchart.internal.interfaces.IHideable;
 import com.xeiam.xchart.internal.misc.AxisValueFormatterUtil;
 
 /**
  * An axis tick
  */
-public class AxisTick implements IChartPart, IHideable {
+public class AxisTick implements IChartPart {
 
   /** the default tick mark step hint for x axis */
   private static final int DEFAULT_TICK_MARK_STEP_HINT_X = 74;
@@ -265,9 +264,4 @@ public class AxisTick implements IChartPart, IHideable {
 
   }
 
-  @Override
-  public void setVisible(boolean isVisible) {
-
-    // this.isVisible = isVisible;
-  }
 }
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 2317d430..fa0391a6 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
@@ -22,12 +22,11 @@ import java.awt.font.TextLayout;
 import java.awt.geom.AffineTransform;
 
 import com.xeiam.xchart.internal.interfaces.IChartPart;
-import com.xeiam.xchart.internal.interfaces.IHideable;
 
 /**
  * AxisTitle
  */
-public class AxisTitle implements IChartPart, IHideable {
+public class AxisTitle implements IChartPart {
 
   /** parent */
   private final Axis axis;
@@ -58,11 +57,6 @@ public class AxisTitle implements IChartPart, IHideable {
     this.text = text;
   }
 
-  @Override
-  public void setVisible(boolean isVisible) {
-
-  }
-
   @Override
   public Rectangle getBounds() {
 
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 01284ef4..654db3bd 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
@@ -22,12 +22,11 @@ import java.awt.font.TextLayout;
 
 import com.xeiam.xchart.Chart;
 import com.xeiam.xchart.internal.interfaces.IChartPart;
-import com.xeiam.xchart.internal.interfaces.IHideable;
 
 /**
  * Chart Title
  */
-public class ChartTitle implements IChartPart, IHideable {
+public class ChartTitle implements IChartPart {
 
   /** parent */
   private final Chart chart;
@@ -58,11 +57,6 @@ public class ChartTitle implements IChartPart, IHideable {
     this.text = text;
   }
 
-  @Override
-  public void setVisible(boolean isVisible) {
-
-  }
-
   @Override
   public void paint(Graphics2D g) {
 
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 95c8d3a7..3c1a8793 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
@@ -23,14 +23,13 @@ import java.util.Map;
 
 import com.xeiam.xchart.Chart;
 import com.xeiam.xchart.internal.interfaces.IChartPart;
-import com.xeiam.xchart.internal.interfaces.IHideable;
 import com.xeiam.xchart.internal.markers.Marker;
 import com.xeiam.xchart.style.Series;
 
 /**
  * @author timmolter
  */
-public class Legend implements IChartPart, IHideable {
+public class Legend implements IChartPart {
 
   /** parent */
   private final Chart chart;
@@ -48,11 +47,6 @@ public class Legend implements IChartPart, IHideable {
     this.chart = chart;
   }
 
-  @Override
-  public void setVisible(boolean isVisible) {
-
-  }
-
   @Override
   public void paint(Graphics2D g) {
 
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 2942fdc9..146f766b 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
@@ -22,13 +22,12 @@ import java.awt.Rectangle;
 import java.util.List;
 
 import com.xeiam.xchart.internal.interfaces.IChartPart;
-import com.xeiam.xchart.internal.interfaces.IHideable;
 import com.xeiam.xchart.style.ChartColor;
 
 /**
  * @author timmolter
  */
-public class PlotSurface implements IChartPart, IHideable {
+public class PlotSurface implements IChartPart {
 
   /** parent */
   private Plot plot;
@@ -42,9 +41,6 @@ public class PlotSurface implements IChartPart, IHideable {
   /** the line style */
   private BasicStroke stroke;
 
-  /** the visibility state of PlotSurface */
-  protected boolean isVisible = true; // default to true
-
   /**
    * Constructor
    * 
@@ -78,7 +74,7 @@ public class PlotSurface implements IChartPart, IHideable {
     g.draw(borderRectangle);
 
     // paint grid lines
-    if (isVisible) {
+    if (plot.chart.getStyleManager().isPlotGridLinesVisible()) {
       // horizontal
       List<Integer> yAxisTickLocations = plot.chart.axisPair.yAxis.axisTick.tickLocations;
       for (int i = 0; i < yAxisTickLocations.size(); i++) {
@@ -106,12 +102,6 @@ public class PlotSurface implements IChartPart, IHideable {
     }
   }
 
-  @Override
-  public void setVisible(boolean isVisible) {
-
-    this.isVisible = isVisible;
-  }
-
   /**
    * @param gridLinesColor the gridLinesColor to set
    */
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/interfaces/IHideable.java b/xchart/src/main/java/com/xeiam/xchart/internal/interfaces/IHideable.java
deleted file mode 100644
index 9c4fb791..00000000
--- a/xchart/src/main/java/com/xeiam/xchart/internal/interfaces/IHideable.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008-2011 SWTChart project. All rights reserved. 
- * 
- * This code is distributed under the terms of the Eclipse Public License v1.0
- * which is available at http://www.eclipse.org/legal/epl-v10.html
- *******************************************************************************/
-package com.xeiam.xchart.internal.interfaces;
-
-/**
- * ChartParts that can be set visible or not should implement this interface
- * 
- * @author timmolter
- */
-// TODO get rid of this after theme refactor is done
-public interface IHideable extends IChartPart {
-
-  public void setVisible(boolean isVisible);
-
-}
\ No newline at end of file
diff --git a/xchart/src/main/java/com/xeiam/xchart/style/StyleManager.java b/xchart/src/main/java/com/xeiam/xchart/style/StyleManager.java
index 2fea5b2e..6988a744 100644
--- a/xchart/src/main/java/com/xeiam/xchart/style/StyleManager.java
+++ b/xchart/src/main/java/com/xeiam/xchart/style/StyleManager.java
@@ -35,19 +35,23 @@ public class StyleManager {
   /** the default Theme */
   private Theme theme = new XChartTheme();
 
+  // Chart Style ///////////////////////////////
   private Color chartBackgroundColor;
   public Color chartBordersColor;
   public Color chartFontColor;
   private int chartPadding;
 
+  // Chart Title ///////////////////////////////
   private Font chartTitleFont;
   private boolean isChartTitleVisible;
 
+  // Chart Legend ///////////////////////////////
   private boolean isLegendVisible;
   private Color legendBackgroundColor;
   private Font legendFont;
   private int legendPadding;
 
+  // Chart Axes ///////////////////////////////
   private boolean xAxisTitleVisible;
   private boolean yAxisTitleVisible;
   private Font axisTitleFont;
@@ -60,6 +64,9 @@ public class StyleManager {
   private int plotPadding;
   private int axisTitlePadding;
 
+  // Chart Plot Area ///////////////////////////////
+  private boolean isPlotGridLinesVisible;
+
   /**
    * Constructor
    */
@@ -70,19 +77,22 @@ public class StyleManager {
 
   private void setAllStyles() {
 
-    // chart
+    // Chart Style ///////////////////////////////
     chartBackgroundColor = theme.getChartBackgroundColor();
     chartBordersColor = theme.getChartBordersColor();
     chartFontColor = theme.getChartFontColor();
     chartPadding = theme.getChartPadding();
-    // chart title
+
+    // Chart Title ///////////////////////////////
     chartTitleFont = theme.getChartTitleFont();
     isChartTitleVisible = theme.isChartTitleVisible();
+
     // legend
     isLegendVisible = theme.isLegendVisible();
     legendBackgroundColor = theme.getLegendBackgroundColor();
     legendFont = theme.getLegendFont();
     legendPadding = theme.getLegendPadding();
+
     // axes
     xAxisTitleVisible = theme.isXAxisTitleVisible();
     yAxisTitleVisible = theme.isYAxisTitleVisible();
@@ -95,6 +105,9 @@ public class StyleManager {
     isAxisTicksLineVisible = theme.isAxisTicksLineVisible();
     plotPadding = theme.getPlotPadding();
     axisTitlePadding = theme.getAxisTitlePadding();
+
+    // Chart Plot Area ///////////////////////////////
+    isPlotGridLinesVisible = theme.isPlotGridLinesVisible();
   }
 
   /**
@@ -456,4 +469,21 @@ public class StyleManager {
 
     return axisTitlePadding;
   }
+
+  // Chart Plot Area ///////////////////////////////
+
+  /**
+   * sets the visibility of the gridlines on the plot area
+   * 
+   * @param isPlotGridLinesVisible
+   */
+  public void setPlotGridLinesVisible(boolean isPlotGridLinesVisible) {
+
+    this.isPlotGridLinesVisible = isPlotGridLinesVisible;
+  }
+
+  public boolean isPlotGridLinesVisible() {
+
+    return isPlotGridLinesVisible;
+  }
 }
diff --git a/xchart/src/main/java/com/xeiam/xchart/style/theme/Theme.java b/xchart/src/main/java/com/xeiam/xchart/style/theme/Theme.java
index 87abdcec..b31cefa2 100644
--- a/xchart/src/main/java/com/xeiam/xchart/style/theme/Theme.java
+++ b/xchart/src/main/java/com/xeiam/xchart/style/theme/Theme.java
@@ -79,4 +79,8 @@ public interface Theme {
 
   public int getPlotPadding();
 
+  // Chart Plot Area ///////////////////////////////
+
+  public boolean isPlotGridLinesVisible();
+
 }
diff --git a/xchart/src/main/java/com/xeiam/xchart/style/theme/XChartTheme.java b/xchart/src/main/java/com/xeiam/xchart/style/theme/XChartTheme.java
index 93ed3b98..86d69e42 100644
--- a/xchart/src/main/java/com/xeiam/xchart/style/theme/XChartTheme.java
+++ b/xchart/src/main/java/com/xeiam/xchart/style/theme/XChartTheme.java
@@ -97,6 +97,8 @@ public class XChartTheme implements Theme {
     return 10;
   }
 
+  // Chart Axes ///////////////////////////////
+
   @Override
   public boolean isXAxisTitleVisible() {
 
@@ -162,4 +164,12 @@ public class XChartTheme implements Theme {
 
     return 10;
   }
+
+  // Chart Plot Area ///////////////////////////////
+
+  @Override
+  public boolean isPlotGridLinesVisible() {
+
+    return true;
+  }
 }
-- 
GitLab