From b51a75fc4e7bf815a6c5c5415622f9ccbe364c6c Mon Sep 17 00:00:00 2001
From: Tim Molter <tim.molter@gmail.com>
Date: Sun, 3 Feb 2013 20:49:59 +0100
Subject: [PATCH] chart title visibility

---
 .../xeiam/xchart/demo/charts/Example1.java    |  2 +-
 .../xeiam/xchart/demo/charts/Example2.java    |  2 +-
 .../xeiam/xchart/demo/charts/Example8.java    |  2 +-
 .../xeiam/xchart/demo/charts/Example9.java    |  2 +-
 .../src/main/java/com/xeiam/xchart/Chart.java | 20 -------------------
 .../xchart/internal/chartpart/ChartTitle.java | 15 ++++++--------
 .../xchart/internal/interfaces/IHideable.java |  1 +
 .../com/xeiam/xchart/style/StyleManager.java  | 18 +++++++++++++++++
 .../com/xeiam/xchart/style/theme/Theme.java   |  6 ++++++
 .../xeiam/xchart/style/theme/XChartTheme.java |  6 ++++++
 10 files changed, 41 insertions(+), 33 deletions(-)

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 a42d16ac..40588fc6 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
@@ -75,7 +75,7 @@ public class Example1 implements ExampleChart {
 
     // Customize Chart
     chart.setTitle("Example1");
-    chart.setTitleVisible(false);
+    chart.getStyleManager().setChartTitleVisible(false);
     chart.setLegendVisible(false);
 
     // Series 1
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 cf6d62a6..9da85d2c 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
@@ -56,7 +56,7 @@ public class Example2 implements ExampleChart {
     Chart chart = new Chart(800, 600);
 
     // Customize Chart
-    chart.setTitleVisible(false);
+    chart.getStyleManager().setChartTitleVisible(false);
     chart.setLegendVisible(false);
 
     // Series 1
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 59a6550c..b6d9036a 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
@@ -57,7 +57,7 @@ public class Example8 implements ExampleChart {
     Chart chart = new Chart(800, 600);
 
     // Customize Chart
-    chart.setTitleVisible(false);
+    chart.getStyleManager().setChartTitleVisible(false);
     chart.setLegendVisible(false);
     chart.setAxisTitlesVisible(false);
 
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 41be965a..f53a8e14 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
@@ -80,7 +80,7 @@ public class Example9 implements ExampleChart {
     chart.setLegendBackgroundColor(Color.PINK);
     chart.getStyleManager().setChartBordersColor(Color.GREEN);
     chart.getStyleManager().setChartFontColor(Color.MAGENTA);
-    chart.setTitleFont(new Font(Font.MONOSPACED, Font.BOLD, 24));
+    chart.getStyleManager().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));
     chart.setTickLabelFont(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 61509807..332a5e14 100644
--- a/xchart/src/main/java/com/xeiam/xchart/Chart.java
+++ b/xchart/src/main/java/com/xeiam/xchart/Chart.java
@@ -249,16 +249,6 @@ public class Chart {
 
   // ChartPart visibility ////////////////////////////////
 
-  /**
-   * Set the chart title visibility
-   * 
-   * @param isVisible
-   */
-  public void setTitleVisible(boolean isVisible) {
-
-    this.chartTitle.setVisible(isVisible);
-  }
-
   /**
    * Set the x- and y-axis titles visibility
    * 
@@ -371,16 +361,6 @@ public class Chart {
     this.chartLegend.backgroundColor = color;
   }
 
-  /**
-   * Set the chart title font
-   * 
-   * @param font
-   */
-  public void setTitleFont(Font font) {
-
-    styleManager.setTitleFont(font);
-  }
-
   /**
    * Set the chart legend font
    * 
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 ddf9ec70..649768c7 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
@@ -35,9 +35,6 @@ public class ChartTitle implements IChartPart, IHideable {
   /** the title text */
   protected String text = ""; // default to ""
 
-  /** the visibility state of title */
-  protected boolean isVisible = false; // default to false
-
   /** the bounds */
   private Rectangle bounds;
 
@@ -54,9 +51,9 @@ public class ChartTitle implements IChartPart, IHideable {
   public void setText(String text) {
 
     if (text.trim().equalsIgnoreCase("")) {
-      this.isVisible = false;
+      chart.getStyleManager().setChartTitleVisible(false);
     } else {
-      this.isVisible = true;
+      chart.getStyleManager().setChartTitleVisible(true);
     }
     this.text = text;
   }
@@ -64,7 +61,6 @@ public class ChartTitle implements IChartPart, IHideable {
   @Override
   public void setVisible(boolean isVisible) {
 
-    this.isVisible = isVisible;
   }
 
   @Override
@@ -73,15 +69,16 @@ public class ChartTitle implements IChartPart, IHideable {
     bounds = new Rectangle();
     g.setFont(chart.getStyleManager().getChartTitleFont());
 
-    if (isVisible) {
+    if (chart.getStyleManager().isChartTitleVisible()) {
 
       FontRenderContext frc = g.getFontRenderContext();
       TextLayout textLayout = new TextLayout(text, chart.getStyleManager().getChartTitleFont(), frc);
       Rectangle rectangle = textLayout.getPixelBounds(null, 0, 0);
       int xOffset = (int) ((chart.width - rectangle.getWidth()) / 2.0);
-      int yOffset = (int) ((isVisible ? (Chart.CHART_PADDING - rectangle.getY()) : 0));
+      int yOffset = (int) ((chart.getStyleManager().isChartTitleVisible() ? (Chart.CHART_PADDING - rectangle.getY()) : 0));
 
-      bounds = new Rectangle(xOffset, yOffset + (isVisible ? (int) rectangle.getY() : 0), (int) rectangle.getWidth(), (int) (isVisible ? rectangle.getHeight() : 0));
+      bounds = new Rectangle(xOffset, yOffset + (chart.getStyleManager().isChartTitleVisible() ? (int) rectangle.getY() : 0), (int) rectangle.getWidth(), (int) (chart.getStyleManager()
+          .isChartTitleVisible() ? rectangle.getHeight() : 0));
       // g.setColor(Color.green);
       // g.draw(bounds);
 
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
index b546fc47..9c4fb791 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/interfaces/IHideable.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/interfaces/IHideable.java
@@ -11,6 +11,7 @@ package com.xeiam.xchart.internal.interfaces;
  * 
  * @author timmolter
  */
+// TODO get rid of this after theme refactor is done
 public interface IHideable extends IChartPart {
 
   public void setVisible(boolean isVisible);
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 2374e400..b08bc3ea 100644
--- a/xchart/src/main/java/com/xeiam/xchart/style/StyleManager.java
+++ b/xchart/src/main/java/com/xeiam/xchart/style/StyleManager.java
@@ -41,6 +41,8 @@ public class StyleManager {
 
   private Font chartTitleFont;
 
+  private boolean isChartTitleVisible;
+
   /**
    * Constructor
    */
@@ -55,6 +57,7 @@ public class StyleManager {
     chartBordersColor = theme.getChartBordersColor();
     chartFontColor = theme.getChartFontColor();
     chartTitleFont = theme.getChartTitleFont();
+    isChartTitleVisible = theme.isChartTitleVisible();
   }
 
   /**
@@ -132,6 +135,21 @@ public class StyleManager {
     return chartTitleFont;
   }
 
+  /**
+   * Set the chart title visibility
+   * 
+   * @param isVisible
+   */
+  public void setChartTitleVisible(boolean isChartTitleVisible) {
+
+    this.isChartTitleVisible = isChartTitleVisible;
+  }
+
+  public boolean isChartTitleVisible() {
+
+    return isChartTitleVisible;
+  }
+
   // Chart Legend ///////////////////////////////
   // Chart Title ///////////////////////////////
 
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 7170e105..f3388869 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
@@ -29,12 +29,18 @@ import java.awt.Font;
  */
 public interface Theme {
 
+  // Chart Style ///////////////////////////////
+
   public Color getChartBackgroundColor();
 
   public Color getChartBordersColor();
 
   public Color getChartFontColor();
 
+  // Chart Title ///////////////////////////////
+
   public Font getChartTitleFont();
 
+  public boolean isChartTitleVisible();
+
 }
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 e266bb50..f541f4f7 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
@@ -55,4 +55,10 @@ public class XChartTheme implements Theme {
     return new Font(Font.SANS_SERIF, Font.BOLD, 14);
   }
 
+  @Override
+  public boolean isChartTitleVisible() {
+
+    return false;
+  }
+
 }
-- 
GitLab