From 1d3942b2d8991865251f87e9f443b8fc78c79fd8 Mon Sep 17 00:00:00 2001
From: timmolter <tim.molter@gmail.com>
Date: Sun, 9 Sep 2012 23:30:56 +0200
Subject: [PATCH] removed NaNs as acceptable data points, made charts
 dynamically resizable, fixed chart padding and layout calculations, removed
 deprecated SwingWrapper constructor

---
 src/main/java/com/xeiam/xchart/Axis.java      |  7 +-
 src/main/java/com/xeiam/xchart/AxisPair.java  |  3 -
 src/main/java/com/xeiam/xchart/AxisTick.java  | 11 ++-
 .../java/com/xeiam/xchart/AxisTickLabels.java | 11 ++-
 .../java/com/xeiam/xchart/AxisTickMarks.java  |  4 +-
 src/main/java/com/xeiam/xchart/AxisTitle.java | 14 ++--
 src/main/java/com/xeiam/xchart/Chart.java     |  8 +-
 .../java/com/xeiam/xchart/ChartLegend.java    |  5 +-
 .../java/com/xeiam/xchart/ChartTitle.java     | 23 +++---
 src/main/java/com/xeiam/xchart/Plot.java      |  4 +-
 .../java/com/xeiam/xchart/PlotContent.java    | 82 +++++++++----------
 .../java/com/xeiam/xchart/series/Series.java  | 49 ++---------
 .../com/xeiam/xchart/swing/SwingWrapper.java  | 17 ----
 .../com/xeiam/xchart/swing/XChartJPanel.java  | 10 +--
 .../com/xeiam/xchart/example/Example10.java   | 54 ------------
 .../com/xeiam/xchart/example/Example3.java    |  9 +-
 .../com/xeiam/xchart/example/Example7.java    | 16 ++--
 .../com/xeiam/xchart/example/Example9.java    |  3 +-
 18 files changed, 115 insertions(+), 215 deletions(-)
 delete mode 100644 src/test/java/com/xeiam/xchart/example/Example10.java

diff --git a/src/main/java/com/xeiam/xchart/Axis.java b/src/main/java/com/xeiam/xchart/Axis.java
index eb7a5c0b..dc704cd3 100644
--- a/src/main/java/com/xeiam/xchart/Axis.java
+++ b/src/main/java/com/xeiam/xchart/Axis.java
@@ -58,10 +58,10 @@ public class Axis implements IChartPart {
   private BigDecimal max = null;
 
   /** the bounds */
-  private Rectangle bounds = new Rectangle(); // default all-zero rectangle
+  private Rectangle bounds;
 
   /** the paint zone */
-  private Rectangle paintZone = new Rectangle(); // default all-zero rectangle
+  private Rectangle paintZone;
 
   /** An axis direction */
   public enum Direction {
@@ -198,6 +198,9 @@ public class Axis implements IChartPart {
   @Override
   public void paint(Graphics2D g) {
 
+    paintZone = new Rectangle();
+    bounds = new Rectangle();
+
     // determine Axis bounds
     if (direction == Direction.Y) { // Y-Axis
 
diff --git a/src/main/java/com/xeiam/xchart/AxisPair.java b/src/main/java/com/xeiam/xchart/AxisPair.java
index 2a7e9886..7a6896ff 100644
--- a/src/main/java/com/xeiam/xchart/AxisPair.java
+++ b/src/main/java/com/xeiam/xchart/AxisPair.java
@@ -77,9 +77,6 @@ public class AxisPair implements IChartPart {
     if (xData != null && xData.size() == 0) {
       throw new IllegalArgumentException("X-Axis data cannot be empty!!!");
     }
-    if (yData.size() == 1 && Double.isNaN(yData.iterator().next().doubleValue())) {
-      throw new IllegalArgumentException("Y-Axis data cannot contain a single NaN value!!!");
-    }
 
     Series series = null;
     if (xData != null) {
diff --git a/src/main/java/com/xeiam/xchart/AxisTick.java b/src/main/java/com/xeiam/xchart/AxisTick.java
index 63f58587..03bb98a1 100644
--- a/src/main/java/com/xeiam/xchart/AxisTick.java
+++ b/src/main/java/com/xeiam/xchart/AxisTick.java
@@ -43,10 +43,10 @@ public class AxisTick implements IChartPart, IHideable {
   private AxisTickMarks axisTickMarks;
 
   /** the arraylist of tick label position in pixels */
-  private List<Integer> tickLocations = new LinkedList<Integer>();
+  private List<Integer> tickLocations;
 
   /** the arraylist of tick label vales */
-  private List<String> tickLabels = new LinkedList<String>();
+  private List<String> tickLabels;
 
   private int workingSpace;
 
@@ -66,7 +66,7 @@ public class AxisTick implements IChartPart, IHideable {
   private SimpleDateFormat simpleDateformat = new SimpleDateFormat("MM-dd");
 
   /** the bounds */
-  private Rectangle bounds = new Rectangle(); // default all-zero rectangle
+  private Rectangle bounds;
 
   /** the visibility state of axistick */
   protected boolean isVisible = true; // default to true
@@ -119,6 +119,8 @@ public class AxisTick implements IChartPart, IHideable {
   @Override
   public void paint(Graphics2D g) {
 
+    bounds = new Rectangle();
+
     if (axis.getDirection() == Axis.Direction.Y) {
       workingSpace = (int) axis.getPaintZone().getHeight(); // number of pixels the axis has to work with for drawing AxisTicks
       // System.out.println("workingspace= " + workingSpace);
@@ -160,6 +162,9 @@ public class AxisTick implements IChartPart, IHideable {
    */
   private void determineAxisTick() {
 
+    tickLocations = new LinkedList<Integer>();
+    tickLabels = new LinkedList<String>();
+
     // System.out.println("workingSpace= " + workingSpace);
 
     int tickSpace = AxisPair.getTickSpace(workingSpace);
diff --git a/src/main/java/com/xeiam/xchart/AxisTickLabels.java b/src/main/java/com/xeiam/xchart/AxisTickLabels.java
index d9332c72..8ddbbd32 100644
--- a/src/main/java/com/xeiam/xchart/AxisTickLabels.java
+++ b/src/main/java/com/xeiam/xchart/AxisTickLabels.java
@@ -41,7 +41,7 @@ public class AxisTickLabels implements IChartPart {
   private Color foreground = ChartColor.getAWTColor(ChartColor.DARK_GREY);// default foreground color
 
   /** the bounds */
-  private Rectangle bounds = new Rectangle(); // default all-zero rectangle
+  private Rectangle bounds;
 
   /**
    * Constructor
@@ -68,6 +68,8 @@ public class AxisTickLabels implements IChartPart {
   @Override
   public void paint(Graphics2D g) {
 
+    bounds = new Rectangle();
+
     g.setColor(foreground);
 
     if (axis.getDirection() == Axis.Direction.Y) { // Y-Axis
@@ -80,7 +82,9 @@ public class AxisTickLabels implements IChartPart {
         String tickLabel = axisTick.getTickLabels().get(i);
         int tickLocation = axisTick.getTickLocations().get(i);
 
-        TextLayout layout = new TextLayout(tickLabel, font, new FontRenderContext(null, true, false));
+        FontRenderContext frc = g.getFontRenderContext();
+        // TextLayout layout = new TextLayout(tickLabel, font, new FontRenderContext(null, true, false));
+        TextLayout layout = new TextLayout(tickLabel, font, frc);
         Rectangle tickLabelBounds = layout.getPixelBounds(null, 0, 0);
         layout.draw(g, xOffset, (int) (yOffset + axis.getPaintZone().getHeight() - tickLocation + tickLabelBounds.getHeight() / 2.0));
 
@@ -104,7 +108,8 @@ public class AxisTickLabels implements IChartPart {
         String tickLabel = axisTick.getTickLabels().get(i);
         int tickLocation = axisTick.getTickLocations().get(i);
 
-        TextLayout layout = new TextLayout(tickLabel, font, new FontRenderContext(null, true, false));
+        FontRenderContext frc = g.getFontRenderContext();
+        TextLayout layout = new TextLayout(tickLabel, font, frc);
         Rectangle tickLabelBounds = layout.getPixelBounds(null, 0, 0);
         layout.draw(g, (int) (xOffset + tickLocation - tickLabelBounds.getWidth() / 2.0), yOffset);
 
diff --git a/src/main/java/com/xeiam/xchart/AxisTickMarks.java b/src/main/java/com/xeiam/xchart/AxisTickMarks.java
index f21f78f7..c8a8eeab 100644
--- a/src/main/java/com/xeiam/xchart/AxisTickMarks.java
+++ b/src/main/java/com/xeiam/xchart/AxisTickMarks.java
@@ -43,7 +43,7 @@ public class AxisTickMarks implements IChartPart {
   public static final int TICK_LENGTH = 3;
 
   /** the bounds */
-  private Rectangle bounds = new Rectangle(); // default all-zero rectangle
+  private Rectangle bounds;
 
   /**
    * Constructor
@@ -66,6 +66,8 @@ public class AxisTickMarks implements IChartPart {
   @Override
   public void paint(Graphics2D g) {
 
+    bounds = new Rectangle();
+
     g.setColor(foreground);
 
     if (axis.getDirection() == Axis.Direction.Y) { // Y-Axis
diff --git a/src/main/java/com/xeiam/xchart/AxisTitle.java b/src/main/java/com/xeiam/xchart/AxisTitle.java
index 8c3dd17d..fc321637 100644
--- a/src/main/java/com/xeiam/xchart/AxisTitle.java
+++ b/src/main/java/com/xeiam/xchart/AxisTitle.java
@@ -25,7 +25,6 @@ import java.awt.geom.AffineTransform;
 
 import com.xeiam.xchart.interfaces.IHideable;
 
-
 /**
  * AxisTitle
  */
@@ -47,7 +46,7 @@ public class AxisTitle implements IHideable {
   private Color foreground = ChartColor.getAWTColor(ChartColor.DARK_GREY); // default foreground color
 
   /** the bounds */
-  private Rectangle bounds = new Rectangle(); // default all-zero rectangle
+  private Rectangle bounds;
 
   protected final static int AXIS_TITLE_PADDING = 10;
 
@@ -96,18 +95,19 @@ public class AxisTitle implements IHideable {
   @Override
   public void paint(Graphics2D g) {
 
+    bounds = new Rectangle();
+
     g.setColor(foreground);
 
     if (axis.getDirection() == Axis.Direction.Y) {
-      if (isVisible && !this.text.trim().equalsIgnoreCase("")) {
+      if (isVisible) {
 
         FontRenderContext frc = g.getFontRenderContext();
-
-        TextLayout nonRotatedTextLayout = new TextLayout(this.text, this.font, frc);
+        TextLayout nonRotatedTextLayout = new TextLayout(text, font, frc);
         Rectangle nonRotatedRectangle = nonRotatedTextLayout.getPixelBounds(null, 0, 0);
         // System.out.println(nonRotatedRectangle);
 
-        TextLayout rotatedTextLayout = new TextLayout(this.text, this.font.deriveFont(AffineTransform.getRotateInstance(Math.PI / -2.0, 0, 0)), frc);
+        TextLayout rotatedTextLayout = new TextLayout(text, font.deriveFont(AffineTransform.getRotateInstance(Math.PI / -2.0, 0, 0)), frc);
         // Rectangle rotatedRectangle = rotatedTextLayout.getPixelBounds(null, 0, 0);
         // System.out.println(rotatedRectangle);
 
@@ -129,7 +129,7 @@ public class AxisTitle implements IHideable {
       if (isVisible) {
 
         FontRenderContext frc = g.getFontRenderContext();
-        TextLayout textLayout = new TextLayout(this.text, this.font, frc);
+        TextLayout textLayout = new TextLayout(text, font, frc);
         Rectangle rectangle = textLayout.getPixelBounds(null, 0, 0);
         // System.out.println(rectangle);
 
diff --git a/src/main/java/com/xeiam/xchart/Chart.java b/src/main/java/com/xeiam/xchart/Chart.java
index 0693f0f5..519a6cea 100644
--- a/src/main/java/com/xeiam/xchart/Chart.java
+++ b/src/main/java/com/xeiam/xchart/Chart.java
@@ -15,7 +15,6 @@
  */
 package com.xeiam.xchart;
 
-import java.awt.Color;
 import java.awt.Graphics2D;
 import java.awt.RenderingHints;
 import java.util.ArrayList;
@@ -57,10 +56,7 @@ public class Chart {
   /**
    * @param g
    */
-  public void paint(final Graphics2D g, int width, int height) {
-
-    g.setColor(Color.white);
-    g.fillRect(0, 0, width, height);
+  public void paint(Graphics2D g, int width, int height) {
 
     this.width = width;
     this.height = height;
@@ -71,7 +67,7 @@ public class Chart {
   /**
    * @param g
    */
-  public void paint(final Graphics2D g) {
+  public void paint(Graphics2D g) {
 
     // Sanity check
     if (axisPair.getSeriesMap().isEmpty()) {
diff --git a/src/main/java/com/xeiam/xchart/ChartLegend.java b/src/main/java/com/xeiam/xchart/ChartLegend.java
index 6e49361b..ee6da956 100644
--- a/src/main/java/com/xeiam/xchart/ChartLegend.java
+++ b/src/main/java/com/xeiam/xchart/ChartLegend.java
@@ -49,10 +49,11 @@ public class ChartLegend implements IHideable {
 
   /** the foreground color */
   private Color foreground = ChartColor.getAWTColor(ChartColor.BLACK); // default foreground color
+
   private final int LEGEND_PADDING = 10;
 
   /** the bounds */
-  private Rectangle bounds = new Rectangle(); // default all-zero rectangle
+  private Rectangle bounds;
 
   /**
    * Constructor
@@ -71,6 +72,8 @@ public class ChartLegend implements IHideable {
   @Override
   public void paint(Graphics2D g) {
 
+    bounds = new Rectangle();
+
     if (isVisible) {
 
       Map<Integer, Series> seriesMap = chart.getAxisPair().getSeriesMap();
diff --git a/src/main/java/com/xeiam/xchart/ChartTitle.java b/src/main/java/com/xeiam/xchart/ChartTitle.java
index 415b5d40..1ec98f64 100644
--- a/src/main/java/com/xeiam/xchart/ChartTitle.java
+++ b/src/main/java/com/xeiam/xchart/ChartTitle.java
@@ -45,7 +45,7 @@ public class ChartTitle implements IHideable {
   private Color foreground = ChartColor.getAWTColor(ChartColor.DARK_GREY); // default foreground color
 
   /** the bounds */
-  private Rectangle bounds = new Rectangle(); // default all-zero rectangle
+  private Rectangle bounds;
 
   /**
    * Constructor
@@ -74,17 +74,20 @@ public class ChartTitle implements IHideable {
   @Override
   public void paint(Graphics2D g) {
 
-    FontRenderContext frc = g.getFontRenderContext();
-    TextLayout textLayout = new TextLayout(this.text, this.font, frc);
-    Rectangle rectangle = textLayout.getPixelBounds(null, 0, 0);
-    int xOffset = (int) ((chart.getWidth() - rectangle.getWidth()) / 2.0);
-    int yOffset = (int) ((isVisible ? (Chart.CHART_PADDING - rectangle.getY()) : 0));
-
-    bounds = new Rectangle(xOffset, yOffset + (isVisible ? (int) rectangle.getY() : 0), (int) rectangle.getWidth(), (int) (isVisible ? rectangle.getHeight() : 0));
-    // g.setColor(Color.green);
-    // g.draw(bounds);
+    bounds = new Rectangle();
 
     if (isVisible) {
+
+      FontRenderContext frc = g.getFontRenderContext();
+      TextLayout textLayout = new TextLayout(text, font, frc);
+      Rectangle rectangle = textLayout.getPixelBounds(null, 0, 0);
+      int xOffset = (int) ((chart.getWidth() - rectangle.getWidth()) / 2.0);
+      int yOffset = (int) ((isVisible ? (Chart.CHART_PADDING - rectangle.getY()) : 0));
+
+      bounds = new Rectangle(xOffset, yOffset + (isVisible ? (int) rectangle.getY() : 0), (int) rectangle.getWidth(), (int) (isVisible ? rectangle.getHeight() : 0));
+      // g.setColor(Color.green);
+      // g.draw(bounds);
+
       g.setColor(foreground);
       textLayout.draw(g, xOffset, yOffset);
     }
diff --git a/src/main/java/com/xeiam/xchart/Plot.java b/src/main/java/com/xeiam/xchart/Plot.java
index d57d8ddc..37720e38 100644
--- a/src/main/java/com/xeiam/xchart/Plot.java
+++ b/src/main/java/com/xeiam/xchart/Plot.java
@@ -34,7 +34,7 @@ public class Plot implements IChartPart {
   public static final int PLOT_PADDING = 3;
 
   /** the bounds */
-  private Rectangle bounds = new Rectangle(); // default all-zero rectangle
+  private Rectangle bounds;
 
   public Plot(Chart chart) {
 
@@ -52,6 +52,8 @@ public class Plot implements IChartPart {
   @Override
   public void paint(Graphics2D g) {
 
+    bounds = new Rectangle();
+
     // calculate bounds
     int xOffset = (int) (chart.getAxisPair().getYAxis().getBounds().getX() + chart.getAxisPair().getYAxis().getBounds().getWidth() + (chart.getAxisPair().getYAxis().getAxisTick().isVisible ? (Plot.PLOT_PADDING + 1) : 0));
     int yOffset = (int) (chart.getAxisPair().getYAxis().getBounds().getY());
diff --git a/src/main/java/com/xeiam/xchart/PlotContent.java b/src/main/java/com/xeiam/xchart/PlotContent.java
index e1d7d7c7..de4933e0 100644
--- a/src/main/java/com/xeiam/xchart/PlotContent.java
+++ b/src/main/java/com/xeiam/xchart/PlotContent.java
@@ -102,55 +102,53 @@ public class PlotContent implements IChartPart {
         if (errorBars != null) {
           eb = ebItr.next().doubleValue();
         }
-        if (!Double.isNaN(x.doubleValue()) && !Double.isNaN(y.doubleValue())) {
 
-          // int xTransform = (int) (xLeftMargin + ((x - xMin) / (xMax - xMin) * xTickSpace));
-          int xTransform = (int) (xLeftMargin + (x.subtract(xMin).doubleValue() / xMax.subtract(xMin).doubleValue() * xTickSpace));
-          // int yTransform = (int) (bounds.getHeight() - (yTopMargin + (y - yMin) / (yMax - yMin) * yTickSpace));
-          int yTransform = (int) (bounds.getHeight() - (yTopMargin + y.subtract(yMin).doubleValue() / yMax.subtract(yMin).doubleValue() * yTickSpace));
+        // int xTransform = (int) (xLeftMargin + ((x - xMin) / (xMax - xMin) * xTickSpace));
+        int xTransform = (int) (xLeftMargin + (x.subtract(xMin).doubleValue() / xMax.subtract(xMin).doubleValue() * xTickSpace));
+        // int yTransform = (int) (bounds.getHeight() - (yTopMargin + (y - yMin) / (yMax - yMin) * yTickSpace));
+        int yTransform = (int) (bounds.getHeight() - (yTopMargin + y.subtract(yMin).doubleValue() / yMax.subtract(yMin).doubleValue() * yTickSpace));
 
-          // a check if all y data are the exact same values
-          if (Math.abs(xMax.subtract(xMin).doubleValue()) / 5 == 0.0) {
-            xTransform = (int) (bounds.getWidth() / 2.0);
-          }
+        // a check if all y data are the exact same values
+        if (Math.abs(xMax.subtract(xMin).doubleValue()) / 5 == 0.0) {
+          xTransform = (int) (bounds.getWidth() / 2.0);
+        }
 
-          // a check if all y data are the exact same values
-          if (Math.abs(yMax.subtract(yMin).doubleValue()) / 5 == 0.0) {
-            yTransform = (int) (bounds.getHeight() / 2.0);
-          }
+        // a check if all y data are the exact same values
+        if (Math.abs(yMax.subtract(yMin).doubleValue()) / 5 == 0.0) {
+          yTransform = (int) (bounds.getHeight() / 2.0);
+        }
 
-          int xOffset = (int) (bounds.getX() + xTransform - 1);
-          int yOffset = (int) (bounds.getY() + yTransform);
-          // System.out.println(yOffset);
-          // System.out.println(yTransform);
-
-          // paint line
-          if (series.getLineStyle() != null) {
-            if (previousX != Integer.MIN_VALUE && previousY != Integer.MIN_VALUE) {
-              g.setColor(series.getLineColor());
-              g.setStroke(series.getLineStyle());
-              g.drawLine(previousX, previousY, xOffset, yOffset);
-            }
-            previousX = xOffset;
-            previousY = yOffset;
+        int xOffset = (int) (bounds.getX() + xTransform - 1);
+        int yOffset = (int) (bounds.getY() + yTransform);
+        // System.out.println(yOffset);
+        // System.out.println(yTransform);
+
+        // paint line
+        if (series.getLineStyle() != null) {
+          if (previousX != Integer.MIN_VALUE && previousY != Integer.MIN_VALUE) {
+            g.setColor(series.getLineColor());
+            g.setStroke(series.getLineStyle());
+            g.drawLine(previousX, previousY, xOffset, yOffset);
           }
+          previousX = xOffset;
+          previousY = yOffset;
+        }
 
-          // paint marker
-          if (series.getMarker() != null) {
-            g.setColor(series.getMarkerColor());
-            series.getMarker().paint(g, xOffset, yOffset);
-          }
+        // paint marker
+        if (series.getMarker() != null) {
+          g.setColor(series.getMarkerColor());
+          series.getMarker().paint(g, xOffset, yOffset);
+        }
 
-          // paint errorbar
-          if (errorBars != null) {
-            g.setColor(ChartColor.getAWTColor(ChartColor.DARK_GREY));
-            g.setStroke(SeriesLineStyle.getBasicStroke(SeriesLineStyle.SOLID));
-            int bottom = (int) (-1 * bounds.getHeight() * eb / (yMax.subtract(yMin).doubleValue()));
-            int top = (int) (bounds.getHeight() * eb / (yMax.subtract(yMin).doubleValue()));
-            g.drawLine(xOffset, yOffset + bottom, xOffset, yOffset + top);
-            g.drawLine(xOffset - 3, yOffset + bottom, xOffset + 3, yOffset + bottom);
-            g.drawLine(xOffset - 3, yOffset + top, xOffset + 3, yOffset + top);
-          }
+        // paint errorbar
+        if (errorBars != null) {
+          g.setColor(ChartColor.getAWTColor(ChartColor.DARK_GREY));
+          g.setStroke(SeriesLineStyle.getBasicStroke(SeriesLineStyle.SOLID));
+          int bottom = (int) (-1 * bounds.getHeight() * eb / (yMax.subtract(yMin).doubleValue()));
+          int top = (int) (bounds.getHeight() * eb / (yMax.subtract(yMin).doubleValue()));
+          g.drawLine(xOffset, yOffset + bottom, xOffset, yOffset + top);
+          g.drawLine(xOffset - 3, yOffset + bottom, xOffset + 3, yOffset + bottom);
+          g.drawLine(xOffset - 3, yOffset + top, xOffset + 3, yOffset + top);
         }
       }
 
diff --git a/src/main/java/com/xeiam/xchart/series/Series.java b/src/main/java/com/xeiam/xchart/series/Series.java
index 287b6ff9..e096657c 100644
--- a/src/main/java/com/xeiam/xchart/series/Series.java
+++ b/src/main/java/com/xeiam/xchart/series/Series.java
@@ -32,8 +32,6 @@ public class Series {
 
   private String name = "";
 
-  // private AxisType seriesType;
-
   protected Collection<?> xData;
 
   protected Collection<Number> yData;
@@ -121,25 +119,17 @@ public class Series {
       BigDecimal bigDecimal = null;
 
       if (axisType == AxisType.NUMBER) {
-        bigDecimal = new BigDecimal(((Number) dataPoint).doubleValue());
-        verify(bigDecimal);
+        bigDecimal = new BigDecimal(((Number) dataPoint).toString());
 
       } else if (axisType == AxisType.DATE) {
         Date date = (Date) dataPoint;
         bigDecimal = new BigDecimal(date.getTime());
-        verify(bigDecimal);
       }
-      // if (min == null || bigDecimal < min) {
       if (min == null || bigDecimal.compareTo(min) < 0) {
-        if (!Double.isNaN(bigDecimal.doubleValue())) {
-          min = bigDecimal;
-        }
+        min = bigDecimal;
       }
-      // if (max == null || bigDecimal > max) {
       if (max == null || bigDecimal.compareTo(max) > 0) {
-        if (!Double.isNaN(bigDecimal.doubleValue())) {
-          max = bigDecimal;
-        }
+        max = bigDecimal;
       }
     }
 
@@ -162,45 +152,16 @@ public class Series {
     while (itr.hasNext()) {
       BigDecimal bigDecimal = new BigDecimal(itr.next().doubleValue());
       BigDecimal eb = new BigDecimal(ebItr.next().doubleValue());
-      verify(bigDecimal);
       if (min == null || (bigDecimal.subtract(eb)).compareTo(min) < 0) {
-        if (!Double.isNaN(bigDecimal.doubleValue())) {
-          min = bigDecimal.subtract(eb);
-        }
+        min = bigDecimal.subtract(eb);
       }
       if (max == null || (bigDecimal.add(eb)).compareTo(max) > 0) {
-        if (!Double.isNaN(bigDecimal.doubleValue())) {
-          max = bigDecimal.add(eb);
-        }
+        max = bigDecimal.add(eb);
       }
     }
     return new BigDecimal[] { min, max };
   }
 
-  /**
-   * Checks for invalid values in data array
-   * 
-   * @param data
-   */
-  private void verify(BigDecimal value) {
-
-    // TODO get rid of this if not a Number axis type
-    double doubleValue = value.doubleValue();
-    if (doubleValue == Double.POSITIVE_INFINITY) {
-      throw new RuntimeException("Axis data cannot contain Double.POSITIVE_INFINITY!!!");
-    } else if (doubleValue == Double.NEGATIVE_INFINITY) {
-      throw new RuntimeException("Axis data cannot contain Double.NEGATIVE_INFINITY!!!");
-    }
-    // TODO get rid of this if not a Date axis type
-    long longValue = value.longValue();
-    if (longValue == Long.MAX_VALUE) {
-      throw new RuntimeException("Axis data cannot be greater than Long.MAX_VALUE!!!");
-    } else if (longValue == Long.MIN_VALUE) {
-      throw new RuntimeException("Axis data cannot be less than Long.MIN_VALUE!!!");
-    }
-
-  }
-
   public String getName() {
 
     return name;
diff --git a/src/main/java/com/xeiam/xchart/swing/SwingWrapper.java b/src/main/java/com/xeiam/xchart/swing/SwingWrapper.java
index 6696234b..7ec6c30b 100644
--- a/src/main/java/com/xeiam/xchart/swing/SwingWrapper.java
+++ b/src/main/java/com/xeiam/xchart/swing/SwingWrapper.java
@@ -43,23 +43,6 @@ public class SwingWrapper {
     this.charts.add(chart);
   }
 
-  /**
-   * Deprecated Constructor - use the one that takes a Collection! This will be removed in next version.
-   * 
-   * @param charts
-   * @param numRows
-   * @param numColumns
-   */
-  @Deprecated
-  public SwingWrapper(Chart[] charts, int numRows, int numColumns) {
-
-    for (int i = 0; i < charts.length; i++) {
-      this.charts.add(charts[i]);
-    }
-    this.numRows = numRows;
-    this.numColumns = numColumns;
-  }
-
   /**
    * Constructor - The number of rows and columns will be calculated automatically
    * 
diff --git a/src/main/java/com/xeiam/xchart/swing/XChartJPanel.java b/src/main/java/com/xeiam/xchart/swing/XChartJPanel.java
index cd74d039..2c2beb8a 100644
--- a/src/main/java/com/xeiam/xchart/swing/XChartJPanel.java
+++ b/src/main/java/com/xeiam/xchart/swing/XChartJPanel.java
@@ -29,11 +29,12 @@ import com.xeiam.xchart.Chart;
  */
 public class XChartJPanel extends JPanel {
 
-  private Chart chart;
+  private final Chart chart;
 
-  public XChartJPanel(Chart chart) {
+  public XChartJPanel(final Chart chart) {
 
     this.chart = chart;
+
   }
 
   @Override
@@ -41,10 +42,7 @@ public class XChartJPanel extends JPanel {
 
     super.paintComponent(g);
 
-    super.removeAll();
-    System.out.println(getSize().toString());
-
-    chart.paint((Graphics2D) g, getSize().width, getSize().height);
+    chart.paint((Graphics2D) g, getWidth(), getHeight());
   }
 
   @Override
diff --git a/src/test/java/com/xeiam/xchart/example/Example10.java b/src/test/java/com/xeiam/xchart/example/Example10.java
deleted file mode 100644
index af8e4150..00000000
--- a/src/test/java/com/xeiam/xchart/example/Example10.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/**
- * Copyright 2011-2012 Xeiam LLC.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.xeiam.xchart.example;
-
-import java.util.Arrays;
-import java.util.Collection;
-
-import com.xeiam.xchart.Chart;
-import com.xeiam.xchart.swing.SwingWrapper;
-
-/**
- * Creates a simple charts using Longs as inputs
- * 
- * @author timmolter
- */
-public class Example10 {
-
-  public static void main(String[] args) throws Exception {
-
-    Collection<Number> xData = Arrays
-        .asList(new Number[] { 1222812000000L, 1222898400000L, 1222984800000L, 1223071200000L, 1223157600000L, 1223244000000L, 1223330400000L, 1223416800000L, 1223503200000L, 1223589600000L });
-    // .asList(new Number[] { 12228120L, 12228984L, 12229848L, 12230712L, 12231576L, 12232440L, 12233304L, 12234168L, 12235032L, 12235896L });
-    // .asList(new Number[] { 12228120, 12228984, 12229848, 12230712, 12231576, 12232440, 12233304, 12234168, 12235032, 12235896 });
-    // .asList(new Number[] { 12228120.0, 12228984.0, 12229848.0, 12230712.0, 12231576.0, 12232440.0, 12233304.0, 12234168.0, 12235032.0, 12235896.0 });
-    // .asList(new Number[] { 0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 });
-    // .asList(new Number[] { 0.0, 100.0, 200.0, 300.0, 400.0, 500.0, 600.0, 700.0, 800.0, 900.0 });
-    // .asList(new Number[] { 0.0, 100000000.0, 200000000.0, 300000000.0, 400000000.0, 500000000.0, 600000000.0, 700000000.0, 800000000.0, 900000000.0 });
-    Collection<Number> yData = Arrays.asList(new Number[] { 0.0, 1.0, 2.0, 0.0, 1.0, 2.0, 0.0, 1.0, 2.0, 0.0 });
-
-    // Create Chart
-    Chart chart = new Chart(700, 500);
-    chart.setChartTitle("Sample Chart");
-    chart.setXAxisTitle("X");
-    chart.setYAxisTitle("Y");
-    chart.addSeries("y(x)", xData, yData);
-
-    new SwingWrapper(chart).displayChart();
-
-  }
-
-}
diff --git a/src/test/java/com/xeiam/xchart/example/Example3.java b/src/test/java/com/xeiam/xchart/example/Example3.java
index acf9f2c4..0ae74838 100644
--- a/src/test/java/com/xeiam/xchart/example/Example3.java
+++ b/src/test/java/com/xeiam/xchart/example/Example3.java
@@ -48,19 +48,12 @@ public class Example3 {
       chart.setChartTitle("Sample Chart");
       chart.setXAxisTitle("X");
       chart.setYAxisTitle("Y");
-      // chart.setAxisTicksVisible(false);
-      // chart.setAxisTitlesVisible(false);
-      // chart.setXAxisTitleVisible(false);
-      // chart.setXAxisTicksVisible(false);
-      chart.setChartTitleVisible(false);
-      chart.setChartLegendVisible(false);
-      chart.setChartGridlinesVisible(false);
 
       String seriesName = "y=" + 2 * i + "x-" + i * b + "b";
       chart.addSeries(seriesName, xData, yData);
 
     }
-
+    // JFrame testFrame = new TestFrame(chart);
     new SwingWrapper(chart).displayChart();
   }
 }
diff --git a/src/test/java/com/xeiam/xchart/example/Example7.java b/src/test/java/com/xeiam/xchart/example/Example7.java
index 8a4949e6..eaf20a17 100644
--- a/src/test/java/com/xeiam/xchart/example/Example7.java
+++ b/src/test/java/com/xeiam/xchart/example/Example7.java
@@ -15,29 +15,33 @@
  */
 package com.xeiam.xchart.example;
 
+import java.util.Arrays;
+import java.util.Collection;
+
 import com.xeiam.xchart.Chart;
 import com.xeiam.xchart.swing.SwingWrapper;
 
 /**
- * Create chart with NaN values
+ * Creates a simple charts using Longs as inputs
  * 
  * @author timmolter
  */
 public class Example7 {
 
-  public static void main(String[] args) {
+  public static void main(String[] args) throws Exception {
+
+    Collection<Number> xData = Arrays.asList(new Number[] { 12228120L, 12228984L, 12229848L, 12230712L, 12231576L, 12232440L, 12233304L, 12234168L, 12235032L, 12235896L });
+    Collection<Number> yData = Arrays.asList(new Number[] { 0.0, 1.0, 2.0, 0.0, 1.0, 2.0, 0.0, 1.0, 2.0, 0.0 });
 
     // Create Chart
     Chart chart = new Chart(700, 500);
-
-    // Customize Chart
     chart.setChartTitle("Sample Chart");
     chart.setXAxisTitle("X");
     chart.setYAxisTitle("Y");
-
-    chart.addSeries("NaN Value at (3,2)", null, new double[] { 0, 1, Double.NaN, 3, 4 });
+    chart.addSeries("y(x)", xData, yData);
 
     new SwingWrapper(chart).displayChart();
+
   }
 
 }
diff --git a/src/test/java/com/xeiam/xchart/example/Example9.java b/src/test/java/com/xeiam/xchart/example/Example9.java
index 64260399..03313b36 100644
--- a/src/test/java/com/xeiam/xchart/example/Example9.java
+++ b/src/test/java/com/xeiam/xchart/example/Example9.java
@@ -52,7 +52,8 @@ public class Example9 {
     chart.setChartTitle("Sample Chart with Date X-Axis");
     chart.setXAxisTitle("X");
     chart.setYAxisTitle("Y");
-
+    chart.setChartGridlinesVisible(false);
+    chart.setXAxisTicksVisible(false);
     chart.addDateSeries("Fake Data", xData, yData);
 
     new SwingWrapper(chart).displayChart();
-- 
GitLab