refs bug 302220 - updated javadocs
diff --git a/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/AnnotatedTimeLine.java b/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/AnnotatedTimeLine.java
index 0bf93a5..94ea60c 100644
--- a/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/AnnotatedTimeLine.java
+++ b/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/AnnotatedTimeLine.java
@@ -12,6 +12,7 @@
  ******************************************************************************/
 package org.eclipse.rap.rwt.visualization.google;
 
+import org.eclipse.swt.SWTException;
 import org.eclipse.swt.widgets.Composite;
 
 /**
@@ -50,11 +51,34 @@
  * }
  * </pre>
  * </p>
- *  @see <a href="http://code.google.com/apis/visualization/documentation/gallery/annotatedtimeline.html">Annotated Timeline Example</a>
+ * 
+ * @see <a href="http://code.google.com/apis/visualization/documentation/gallery/annotatedtimeline.html">Annotated Timeline Example</a>
  *
  */
 public class AnnotatedTimeLine extends VisualizationWidget {
 
+  /**
+   * Constructs an annotated timeline widget in the specified parent and style. 
+   * A visualization widget by default will auto-resize to fill its parent.
+   * <p>
+   * The style value is either one of the style constants defined in
+   * class <code>SWT</code> which is applicable to instances of this
+   * class, or must be built by <em>bitwise OR</em>'ing together
+   * (that is, using the <code>int</code> "|" operator) two or more
+   * of those <code>SWT</code> style constants. The class description
+   * lists the style constants that are applicable to the class, if any.
+   * Style bits are also inherited from superclasses.
+   * </p>
+   * @param parent the parent composite (cannot be <code>null</code>)
+   * @param style the style bits of the widget
+   * @exception IllegalArgumentException <ul>
+   *    <li>ERROR_NULL_ARGUMENT - if the parent is null</li>
+   * </ul>
+   * @exception SWTException <ul>
+   *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent</li>
+   * </ul>
+   *
+   */
   public AnnotatedTimeLine( Composite parent, int style ) {
     super( parent, style );
   }
diff --git a/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/AreaChart.java b/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/AreaChart.java
index bc6886f..853437f 100644
--- a/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/AreaChart.java
+++ b/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/AreaChart.java
@@ -53,6 +53,28 @@
  */
 public class AreaChart extends VisualizationWidget {
 
+  /**
+   * Constructs an area chart widget in the specified parent and style. 
+   * A visualization widget by default will auto-resize to fill its parent.
+   * <p>
+   * The style value is either one of the style constants defined in
+   * class <code>SWT</code> which is applicable to instances of this
+   * class, or must be built by <em>bitwise OR</em>'ing together
+   * (that is, using the <code>int</code> "|" operator) two or more
+   * of those <code>SWT</code> style constants. The class description
+   * lists the style constants that are applicable to the class, if any.
+   * Style bits are also inherited from superclasses.
+   * </p>
+   * @param parent the parent composite (cannot be <code>null</code>)
+   * @param style the style bits of the widget
+   * @exception IllegalArgumentException <ul>
+   *    <li>ERROR_NULL_ARGUMENT - if the parent is null</li>
+   * </ul>
+   * @exception SWTException <ul>
+   *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent</li>
+   * </ul>
+   *
+   */
   public AreaChart( final Composite parent, final int style ) {
     super( parent, style );
   }
diff --git a/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/BarChart.java b/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/BarChart.java
index a8f5117..8594556 100644
--- a/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/BarChart.java
+++ b/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/BarChart.java
@@ -54,6 +54,28 @@
  */
 public class BarChart extends VisualizationWidget {
 
+  /**
+   * Constructs a bar chart widget in the specified parent and style. 
+   * A visualization widget by default will auto-resize to fill its parent.
+   * <p>
+   * The style value is either one of the style constants defined in
+   * class <code>SWT</code> which is applicable to instances of this
+   * class, or must be built by <em>bitwise OR</em>'ing together
+   * (that is, using the <code>int</code> "|" operator) two or more
+   * of those <code>SWT</code> style constants. The class description
+   * lists the style constants that are applicable to the class, if any.
+   * Style bits are also inherited from superclasses.
+   * </p>
+   * @param parent the parent composite (cannot be <code>null</code>)
+   * @param style the style bits of the widget
+   * @exception IllegalArgumentException <ul>
+   *    <li>ERROR_NULL_ARGUMENT - if the parent is null</li>
+   * </ul>
+   * @exception SWTException <ul>
+   *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent</li>
+   * </ul>
+   *
+   */
   public BarChart( final Composite parent, final int style ) {
     super( parent, style );
   }
diff --git a/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/ColumnChart.java b/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/ColumnChart.java
index 84e9af5..a311b64 100644
--- a/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/ColumnChart.java
+++ b/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/ColumnChart.java
@@ -53,6 +53,29 @@
  */
 public class ColumnChart extends VisualizationWidget {
 
+  
+  /**
+   * Constructs a column chart widget in the specified parent and style. 
+   * A visualization widget by default will auto-resize to fill its parent.
+   * <p>
+   * The style value is either one of the style constants defined in
+   * class <code>SWT</code> which is applicable to instances of this
+   * class, or must be built by <em>bitwise OR</em>'ing together
+   * (that is, using the <code>int</code> "|" operator) two or more
+   * of those <code>SWT</code> style constants. The class description
+   * lists the style constants that are applicable to the class, if any.
+   * Style bits are also inherited from superclasses.
+   * </p>
+   * @param parent the parent composite (cannot be <code>null</code>)
+   * @param style the style bits of the widget
+   * @exception IllegalArgumentException <ul>
+   *    <li>ERROR_NULL_ARGUMENT - if the parent is null</li>
+   * </ul>
+   * @exception SWTException <ul>
+   *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent</li>
+   * </ul>
+   *
+   */
   public ColumnChart( final Composite parent, final int style ) {
     super( parent, style );
   }
diff --git a/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/Gauge.java b/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/Gauge.java
index 4273c6a..5dac2b0 100644
--- a/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/Gauge.java
+++ b/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/Gauge.java
@@ -52,6 +52,28 @@
  */
 public class Gauge extends VisualizationWidget {
 
+  /**
+   * Constructs a gauge widget in the specified parent and style. 
+   * A visualization widget by default will auto-resize to fill its parent.
+   * <p>
+   * The style value is either one of the style constants defined in
+   * class <code>SWT</code> which is applicable to instances of this
+   * class, or must be built by <em>bitwise OR</em>'ing together
+   * (that is, using the <code>int</code> "|" operator) two or more
+   * of those <code>SWT</code> style constants. The class description
+   * lists the style constants that are applicable to the class, if any.
+   * Style bits are also inherited from superclasses.
+   * </p>
+   * @param parent the parent composite (cannot be <code>null</code>)
+   * @param style the style bits of the widget
+   * @exception IllegalArgumentException <ul>
+   *    <li>ERROR_NULL_ARGUMENT - if the parent is null</li>
+   * </ul>
+   * @exception SWTException <ul>
+   *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent</li>
+   * </ul>
+   *
+   */
   public Gauge( final Composite parent, final int style ) {
     super( parent, style );
   }
diff --git a/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/Geomap.java b/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/Geomap.java
index 6450184..b583c26 100644
--- a/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/Geomap.java
+++ b/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/Geomap.java
@@ -56,6 +56,28 @@
  */
 public class Geomap extends VisualizationWidget {
 
+  /**
+   * Constructs a geomap widget in the specified parent and style. 
+   * A visualization widget by default will auto-resize to fill its parent.
+   * <p>
+   * The style value is either one of the style constants defined in
+   * class <code>SWT</code> which is applicable to instances of this
+   * class, or must be built by <em>bitwise OR</em>'ing together
+   * (that is, using the <code>int</code> "|" operator) two or more
+   * of those <code>SWT</code> style constants. The class description
+   * lists the style constants that are applicable to the class, if any.
+   * Style bits are also inherited from superclasses.
+   * </p>
+   * @param parent the parent composite (cannot be <code>null</code>)
+   * @param style the style bits of the widget
+   * @exception IllegalArgumentException <ul>
+   *    <li>ERROR_NULL_ARGUMENT - if the parent is null</li>
+   * </ul>
+   * @exception SWTException <ul>
+   *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent</li>
+   * </ul>
+   *
+   */
   public Geomap( final Composite parent, final int style ) {
     super( parent, style );
   }
diff --git a/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/IntensityMap.java b/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/IntensityMap.java
index 837ea72..e30e956 100644
--- a/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/IntensityMap.java
+++ b/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/IntensityMap.java
@@ -16,48 +16,67 @@
 
 /**
  * Renders a Google Visualization Intensity Map.
- * @See http://code.google.com/apis/visualization/documentation/gallery/intensitymap.html
- * 
- * Note that this widget does not work properly in my testing.  
- * It always renders in the upper left corner of the composite to
- * which it is added.  In addition, this widget is not fully tested.
- * 
- * Note that this widget is rendered upon calling the setWidgetData method.  
- * So if you wish to set options like width, height, colors, etc., you must do this 
- * using method setWidgetOptions, before calling setWidgetData.
- * 
- * Usage:
- * <code>
+ * <p> 
+ * This visualization is configured using the widget data and options 
+ * set by <code>setWidgetData()</code> and <code>setWidgetOptions()</code>.  
+ * Note that if the widget data or options are changed after initial rendering, 
+ * the <code>redraw()</code> method should be called to render the changes.  
+ * </p>
+ * <p>
+ * <b>Usage:</b>
+ * <pre>
  * JSONGoogleDataTable dataTable = new JSONGoogleDataTable();
-    dataTable.addColumn("Country", "Country", "string", null);
-    dataTable.addColumn("Happiness", "Happiness", "number", null);
-    dataTable.addColumn("Income", "Income", "number", null);
-    dataTable.addRow(new Object[] {"TZ", 25, 3});
-    dataTable.addRow(new Object[] {"US", 40, 40});
-    dataTable.addRow(new Object[] {"UK", 38, 35});
-    widgetData = dataTable.toString();
-    
-    IntensityMap intensityMap = new IntensityMap( composite, SWT.NONE );
-    intensityMap.setWidgetOptions("{width: 440, height: 220}");
-    intensityMap.setWidgetData(widgetData);
-    gridData = new GridData(440, 220);
-    intensityMap.setLayoutData(gridData);
-    intensityMap.addListener(SWT.Selection, this);
-    </code>
-    
-    <code>
-    public void handleEvent(Event event) {
-    log.info("Event: " + event);
-    VisualizationWidget widget = (VisualizationWidget)event.widget;
-    log.info( "Selected item=" + widget.getSelectedItem() + 
-        "; row=" + widget.getSelectedRow() +
-        "; column=" + widget.getSelectedColumn() +
-        "; value=" + widget.getSelectedValue());
-    </code>
- * 
+ * dataTable.addColumn("Country", "Country", "string", null);
+ * dataTable.addColumn("Happiness", "Happiness", "number", null);
+ * dataTable.addColumn("Income", "Income", "number", null);
+ * dataTable.addRow(new Object[] {"TZ", 25, 3});
+ * dataTable.addRow(new Object[] {"US", 40, 40});
+ * dataTable.addRow(new Object[] {"UK", 38, 35});
+ * widgetData = dataTable.toString();
+ *   
+ * IntensityMap intensityMap = new IntensityMap( composite, SWT.NONE );
+ * intensityMap.setWidgetOptions("{width: 440, height: 220}");
+ * intensityMap.setWidgetData(widgetData);
+ * intensityMap.addListener(SWT.Selection, this);
+ * </pre>
+ * </p>
+ * <pre>
+ * public void handleEvent(Event event) {
+ *   System.out.println("Event: " + event);
+ *   VisualizationWidget widget = (VisualizationWidget)event.widget;
+ *   System.out.println("Selected item=" + widget.getSelectedItem() + 
+ *     "; row=" + widget.getSelectedRow() +
+ *     "; column=" + widget.getSelectedColumn() +
+ *     "; value=" + widget.getSelectedValue());
+ * }
+ * </pre>
+ * </p>
+ * @see <a href="http://code.google.com/apis/visualization/documentation/gallery/intensitymap.html">Intensity Map Example</a>
  */
 public class IntensityMap extends VisualizationWidget {
 
+  /**
+   * Constructs an intensity map widget in the specified parent and style. 
+   * A visualization widget by default will auto-resize to fill its parent.
+   * <p>
+   * The style value is either one of the style constants defined in
+   * class <code>SWT</code> which is applicable to instances of this
+   * class, or must be built by <em>bitwise OR</em>'ing together
+   * (that is, using the <code>int</code> "|" operator) two or more
+   * of those <code>SWT</code> style constants. The class description
+   * lists the style constants that are applicable to the class, if any.
+   * Style bits are also inherited from superclasses.
+   * </p>
+   * @param parent the parent composite (cannot be <code>null</code>)
+   * @param style the style bits of the widget
+   * @exception IllegalArgumentException <ul>
+   *    <li>ERROR_NULL_ARGUMENT - if the parent is null</li>
+   * </ul>
+   * @exception SWTException <ul>
+   *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent</li>
+   * </ul>
+   *
+   */
   public IntensityMap( final Composite parent, final int style ) {
     super( parent, style );
   }
diff --git a/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/LineChart.java b/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/LineChart.java
index 764a582..eb9e513 100644
--- a/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/LineChart.java
+++ b/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/LineChart.java
@@ -16,63 +16,70 @@
 
 /**
  * Renders a Google Visualization Line Chart.
- * @see http://code.google.com/apis/visualization/documentation/gallery/linechart.html
- * 
- * Note that this widget is rendered upon calling the setWidgetData method.  
- * So if you wish to set options like width, height, colors, etc., you must do this 
- * using method setWidgetOptions, before calling setWidgetData.
- * 
- * Usage:
- * <code>
+ * <p> 
+ * This visualization is configured using the widget data and options 
+ * set by <code>setWidgetData()</code> and <code>setWidgetOptions()</code>.  
+ * Note that if the widget data or options are changed after initial rendering, 
+ * the <code>redraw()</code> method should be called to render the changes.  
+ * </p>
+ * <p>
+ * <b>Usage:</b>
+ * <pre>
  * JSONGoogleDataTable dataTable = new JSONGoogleDataTable();
-    dataTable.addColumn("Month", "Month", "string", null);
-    dataTable.addColumn("Provider1", "Provider 1", "number", null);
-    dataTable.addColumn("Provider2", "Provider 2", "number", null);
-    dataTable.addColumn("Provider3", "Provider 3", "number", null);
-    dataTable.addRow(new Object[] {"May", 10, 15, 20});
-    dataTable.addRow(new Object[] {"June", 12, 23, 33});
-    dataTable.addRow(new Object[] {"July", 11, 25, 50});
-    widgetData = dataTable.toString();
-    
-    LineChart lineChart = new LineChart( composite, SWT.NONE );
-    lineChart.setWidgetOptions("{width: 300, height: 300}");
-    lineChart.setWidgetData(widgetData);
-    gridData = new GridData(300, 300);
-    lineChart.setLayoutData(gridData);
-    lineChart.addListener(SWT.Selection, this);
-    </code>
-    
-    <code>
-    public void handleEvent(Event event) {
-    log.info("Event: " + event);
-    VisualizationWidget widget = (VisualizationWidget)event.widget;
-    log.info( "Selected item=" + widget.getSelectedItem() + 
-        "; row=" + widget.getSelectedRow() +
-        "; column=" + widget.getSelectedColumn() +
-        "; value=" + widget.getSelectedValue());
-    </code>
- *
+ * dataTable.addColumn("Month", "Month", "string", null);
+ * dataTable.addColumn("Provider1", "Provider 1", "number", null);
+ * dataTable.addColumn("Provider2", "Provider 2", "number", null);
+ * dataTable.addColumn("Provider3", "Provider 3", "number", null);
+ * dataTable.addRow(new Object[] {"May", 10, 15, 20});
+ * dataTable.addRow(new Object[] {"June", 12, 23, 33});
+ * dataTable.addRow(new Object[] {"July", 11, 25, 50});
+ * widgetData = dataTable.toString();
+ *   
+ * LineChart lineChart = new LineChart( composite, SWT.NONE );
+ * lineChart.setWidgetOptions("{width: 300, height: 300}");
+ * lineChart.setWidgetData(widgetData);
+ * lineChart.addListener(SWT.Selection, this);
+ * </pre>
+ * </p>
+ * <pre>
+ * public void handleEvent(Event event) {
+ *   System.out.println("Event: " + event);
+ *   VisualizationWidget widget = (VisualizationWidget)event.widget;
+ *   System.out.println("Selected item=" + widget.getSelectedItem() + 
+ *     "; row=" + widget.getSelectedRow() +
+ *     "; column=" + widget.getSelectedColumn() +
+ *     "; value=" + widget.getSelectedValue());
+ * }
+ * </pre>
+ * </p>
+ * @see <a href="http://code.google.com/apis/visualization/documentation/gallery/linechart.html">Line Chart Example</a>
  */
 public class LineChart extends VisualizationWidget {
 
-  protected String prevWidgetData;
-  protected String prevWidgetOptions;
-  protected boolean dirty;
-  
+  /**
+   * Constructs a line chart widget in the specified parent and style. 
+   * A visualization widget by default will auto-resize to fill its parent.
+   * <p>
+   * The style value is either one of the style constants defined in
+   * class <code>SWT</code> which is applicable to instances of this
+   * class, or must be built by <em>bitwise OR</em>'ing together
+   * (that is, using the <code>int</code> "|" operator) two or more
+   * of those <code>SWT</code> style constants. The class description
+   * lists the style constants that are applicable to the class, if any.
+   * Style bits are also inherited from superclasses.
+   * </p>
+   * @param parent the parent composite (cannot be <code>null</code>)
+   * @param style the style bits of the widget
+   * @exception IllegalArgumentException <ul>
+   *    <li>ERROR_NULL_ARGUMENT - if the parent is null</li>
+   * </ul>
+   * @exception SWTException <ul>
+   *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent</li>
+   * </ul>
+   *
+   */
   public LineChart( Composite parent, int style ) {
     super( parent, style );
   }
-  
-  public void redraw() {
-    super.redraw();
-    dirty = true;
-  }
-  
-  public void setDirty (boolean dirty) {
-    this.dirty = dirty;
-  }
-  
-  public boolean isDirty () {
-    return dirty; 
-  }
+
 }
diff --git a/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/MotionChart.java b/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/MotionChart.java
index 9808749..637f57c 100644
--- a/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/MotionChart.java
+++ b/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/MotionChart.java
@@ -19,48 +19,89 @@
 import org.eclipse.swt.widgets.Composite;
 
 /**
- * Renders a Google Visualization Motion Chart.  This originally appeared at gapminder.org
- * as Gapminder's Trendalyzer.
- * @see http://code.google.com/apis/visualization/documentation/gallery/scatterchart.html
- * @see http://www.ted.com/index.php/talks/hans_rosling_shows_the_best_stats_you_ve_ever_seen.html
- * 
- * Note that this widget is rendered upon calling the setWidgetData method.  
- * So if you wish to set options like width, height, colors, etc., you must do this 
- * using method setWidgetOptions, before calling setWidgetData.
- * 
- * Usage:
- * <code>
+ * Renders a Google Visualization Motion Chart.
+ * <p> 
+ * This visualization is configured using the widget data and options 
+ * set by <code>setWidgetData()</code> and <code>setWidgetOptions()</code>.  
+ * Note that if the widget data or options are changed after initial rendering, 
+ * the <code>redraw()</code> method should be called to render the changes.  
+ * </p>
+ * <p>
+ * The Motion Chart 'state' parameter can be set in the widget options.
+ * Changes to the state may be listened to using <code>addStateListener()</code> 
+ * </p>
+ * <p>
+ * <b>Usage:</b>
+ * <pre>
  * JSONGoogleDataTable dataTable = new JSONGoogleDataTable();
-    dataTable.addColumn("Model", "Model", "string", null);
-    dataTable.addColumn("thedate", "Date", "date", null);
-    dataTable.addColumn("CO2", "CO2", "number", null);
-    dataTable.addColumn("Temperature", "Temperature", "number", null);
-    dataTable.addRow(new Object[] {"Model1", new Date(), 389, 14.8});
-    dataTable.addRow(new Object[] {"Model1", new Date(4070908800), 450, 19});
-    dataTable.addRow(new Object[] {"Model2", new Date(), 389, 14.8});
-    dataTable.addRow(new Object[] {"Model2", new Date(4070908800), 700, 23});
-    String serializedData = dataTable.toString();
-     
-    MotionChart motionChart = new MotionChart( composite, SWT.NONE );
-    motionChart.setWidgetOptions("width: 500, height: 300");
-    motionChart.setWidgetData(serializedData);
-    GridData gridData = new GridData(500, 300);
-    motionChart.setLayoutData(gridData);
-    </code>
- *   
+ * dataTable.addColumn("Model", "Model", "string", null);
+ * dataTable.addColumn("thedate", "Date", "date", null);
+ * dataTable.addColumn("CO2", "CO2", "number", null);
+ * dataTable.addColumn("Temperature", "Temperature", "number", null);
+ * dataTable.addRow(new Object[] {"Model1", new Date(), 389, 14.8});
+ * dataTable.addRow(new Object[] {"Model1", new Date(4070908800), 450, 19});
+ * dataTable.addRow(new Object[] {"Model2", new Date(), 389, 14.8});
+ * dataTable.addRow(new Object[] {"Model2", new Date(4070908800), 700, 23});
+ * String serializedData = dataTable.toString();
+ *    
+ * MotionChart motionChart = new MotionChart( composite, SWT.NONE );
+ * motionChart.setWidgetOptions("width: 500, height: 300");
+ * motionChart.setWidgetData(serializedData);
+ * motionChart.addStateListener(this);
+ * </pre>
+ * </p>
+ * <pre>
+ * public void stateChanged (String state) {
+ *   System.out.println(state);
+ * }
+ * </pre>
+ * <p>    
+ * The concept originally appeared at gapminder.org as Gapminder's Trendalyzer.
+ * </p>
+ * @see <a href="http://code.google.com/apis/visualization/documentation/gallery/motionchart.html">Motion Chart Example</a>
+ *
  */
 public class MotionChart extends VisualizationWidget {
 
   protected Set listeners;
   
+  /**
+   * Constructs a motion chart widget in the specified parent and style. 
+   * A visualization widget by default will auto-resize to fill its parent.
+   * <p>
+   * The style value is either one of the style constants defined in
+   * class <code>SWT</code> which is applicable to instances of this
+   * class, or must be built by <em>bitwise OR</em>'ing together
+   * (that is, using the <code>int</code> "|" operator) two or more
+   * of those <code>SWT</code> style constants. The class description
+   * lists the style constants that are applicable to the class, if any.
+   * Style bits are also inherited from superclasses.
+   * </p>
+   * @param parent the parent composite (cannot be <code>null</code>)
+   * @param style the style bits of the widget
+   * @exception IllegalArgumentException <ul>
+   *    <li>ERROR_NULL_ARGUMENT - if the parent is null</li>
+   * </ul>
+   * @exception SWTException <ul>
+   *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent</li>
+   * </ul>
+   *
+   */
   public MotionChart( Composite parent, int style ) {
     super( parent, style );
   }
   
+  /**
+   * Listener interface for widget 'state' option changes. 
+   */
   public static interface StateListener {
     void stateChanged (String state);
   }
   
+  /**
+   * Notifies state listeners that the Motion Chart 'state' option has changed. 
+   * @param state the new state of teh chart
+   */
   public void notifyListeners (String state) {
     if (listeners != null) {
       StateListener[] listenerArray = (StateListener[])listeners.toArray(new StateListener[listeners.size()]);
@@ -74,13 +115,29 @@
     }
   }
 
+  /**
+   * Adds a listener to be notified of changes to the Motion Chart 'state' option.
+   * Multiple registrations of the same listener have no effect.
+   * @param stateListener the listener to add. Cannot be <code>null</code>.
+   */
   public void addStateListener(StateListener stateListener) {
+    if (stateListener == null) { 
+      throw new IllegalArgumentException("State listener cannot be null.");
+    }
     if (listeners == null) { 
       listeners = Collections.synchronizedSet(new LinkedHashSet());
     }
     listeners.add(stateListener);
   }
+  
+  /**
+   * Removes a listener from the list that will be notified of changes to the Motion Chart 'state' option.
+   * @param stateListener the listener to remove. Cannot be <code>null</code>.
+   */
   public void removeStateListener(StateListener stateListener) {
+    if (stateListener == null) { 
+      throw new IllegalArgumentException("State listener cannot be null.");
+    }
     if (listeners != null) { 
       listeners.remove(stateListener);
     }
diff --git a/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/PieChart.java b/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/PieChart.java
index f25e7b2..1c2db2a 100644
--- a/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/PieChart.java
+++ b/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/PieChart.java
@@ -16,43 +16,67 @@
 
 /**
  * Renders a Google Visualization Pie Chart.
- * @See http://code.google.com/apis/visualization/documentation/gallery/piechart.html
- * 
- * Note that this widget is rendered upon calling the setWidgetData method.  
- * So if you wish to set options like width, height, colors, etc., you must do this 
- * using method setWidgetOptions, before calling setWidgetData.
- * 
- * Usage:
- * <code>
+ * <p> 
+ * This visualization is configured using the widget data and options 
+ * set by <code>setWidgetData()</code> and <code>setWidgetOptions()</code>.  
+ * Note that if the widget data or options are changed after initial rendering, 
+ * the <code>redraw()</code> method should be called to render the changes.  
+ * </p>
+ * <p>
+ * <b>Usage:</b>
+ * <pre>
  * JSONGoogleDataTable dataTable = new JSONGoogleDataTable();
-    dataTable.addColumn("Activity", "Activity", "string", null);
-    dataTable.addColumn("Hours", "Hours per Week", "number", null);
-    dataTable.addRow(new Object[] {"software architect", 40});
-    dataTable.addRow(new Object[] {"primary care medicine", 9});
-    dataTable.addRow(new Object[] {"open source development", 10});
-    widgetData = dataTable.toString();
-    
-    PieChart pieChart = new PieChart( composite, SWT.NONE );
-    pieChart.setWidgetOptions("{width: 300, height: 300}");
-    pieChart.setWidgetData(widgetData);
-    gridData = new GridData(300, 300);
-    pieChart.setLayoutData(gridData);
-    pieChart.addListener(SWT.Selection, this);
-    </code>
-    
-    <code>
-    public void handleEvent(Event event) {
-    log.info("Event: " + event);
-    VisualizationWidget widget = (VisualizationWidget)event.widget;
-    log.info( "Selected item=" + widget.getSelectedItem() + 
-        "; row=" + widget.getSelectedRow() +
-        "; column=" + widget.getSelectedColumn() +
-        "; value=" + widget.getSelectedValue());
-    </code>
- *
+ * dataTable.addColumn("Activity", "Activity", "string", null);
+ * dataTable.addColumn("Hours", "Hours per Week", "number", null);
+ * dataTable.addRow(new Object[] {"software architect", 40});
+ * dataTable.addRow(new Object[] {"primary care medicine", 9});
+ * dataTable.addRow(new Object[] {"open source development", 10});
+ * widgetData = dataTable.toString();
+ *   
+ * PieChart pieChart = new PieChart( composite, SWT.NONE );
+ * pieChart.setWidgetOptions("{width: 300, height: 300}");
+ * pieChart.setWidgetData(widgetData);
+ * pieChart.addListener(SWT.Selection, this);
+ * </pre>
+ * </p>
+ * <pre>
+ * public void handleEvent(Event event) {
+ *   System.out.println("Event: " + event);
+ *   VisualizationWidget widget = (VisualizationWidget)event.widget;
+ *   System.out.println("Selected item=" + widget.getSelectedItem() + 
+ *     "; row=" + widget.getSelectedRow() +
+ *     "; column=" + widget.getSelectedColumn() +
+ *     "; value=" + widget.getSelectedValue());
+ * }
+ * </pre>
+ * </p>
+ * @see <a href="http://code.google.com/apis/visualization/documentation/gallery/piechart.html">Pie Chart Example</a>
+ * 
  */
 public class PieChart extends VisualizationWidget {
 
+  /**
+   * Constructs a pie chart widget in the specified parent and style. 
+   * A visualization widget by default will auto-resize to fill its parent.
+   * <p>
+   * The style value is either one of the style constants defined in
+   * class <code>SWT</code> which is applicable to instances of this
+   * class, or must be built by <em>bitwise OR</em>'ing together
+   * (that is, using the <code>int</code> "|" operator) two or more
+   * of those <code>SWT</code> style constants. The class description
+   * lists the style constants that are applicable to the class, if any.
+   * Style bits are also inherited from superclasses.
+   * </p>
+   * @param parent the parent composite (cannot be <code>null</code>)
+   * @param style the style bits of the widget
+   * @exception IllegalArgumentException <ul>
+   *    <li>ERROR_NULL_ARGUMENT - if the parent is null</li>
+   * </ul>
+   * @exception SWTException <ul>
+   *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent</li>
+   * </ul>
+   *
+   */
   public PieChart( Composite parent, int style ) {
     super( parent, style );
   }
diff --git a/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/ScatterChart.java b/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/ScatterChart.java
index 08c6b65..590a6e4 100644
--- a/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/ScatterChart.java
+++ b/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/ScatterChart.java
@@ -16,44 +16,67 @@
 
 /**
  * Renders a Google Visualization Scatter Chart.
- * @see http://code.google.com/apis/visualization/documentation/gallery/scatterchart.html
- * 
- * Note that this widget is rendered upon calling the setWidgetData method.  
- * So if you wish to set options like width, height, colors, etc., you must do this 
- * using method setWidgetOptions, before calling setWidgetData.
- * 
- * Usage:
- * <code>
+ * <p> 
+ * This visualization is configured using the widget data and options 
+ * set by <code>setWidgetData()</code> and <code>setWidgetOptions()</code>.  
+ * Note that if the widget data or options are changed after initial rendering, 
+ * the <code>redraw()</code> method should be called to render the changes.  
+ * </p>
+ * <p>
+ * <b>Usage:</b>
+ * <pre>
  * JSONGoogleDataTable dataTable = new JSONGoogleDataTable();
-    dataTable.addColumn("CO2", "CO2", "number", null);
-    dataTable.addColumn("CH4", "CH4", "number", null);
-    dataTable.addColumn("Temperature", "Temperature", "number", null);
-    dataTable.addRow(new Object[] {350, 10, 22});
-    dataTable.addRow(new Object[] {375, 12, 23});
-    dataTable.addRow(new Object[] {400, 16, 25});
-    widgetData = dataTable.toString();
-    
-    ScatterChart scatterChart = new ScatterChart( composite, SWT.NONE );
-    scatterChart.setWidgetOptions("{width: 300, height: 300}");
-    scatterChart.setWidgetData(widgetData);
-    gridData = new GridData(300, 300);
-    scatterChart.setLayoutData(gridData);
-    scatterChart.addListener(SWT.Selection, this);
-    </code>
-    
-    <code>
-    public void handleEvent(Event event) {
-    log.info("Event: " + event);
-    VisualizationWidget widget = (VisualizationWidget)event.widget;
-    log.info( "Selected item=" + widget.getSelectedItem() + 
-        "; row=" + widget.getSelectedRow() +
-        "; column=" + widget.getSelectedColumn() +
-        "; value=" + widget.getSelectedValue());
-    </code>
- *
+ * dataTable.addColumn("CO2", "CO2", "number", null);
+ * dataTable.addColumn("CH4", "CH4", "number", null);
+ * dataTable.addColumn("Temperature", "Temperature", "number", null);
+ * dataTable.addRow(new Object[] {350, 10, 22});
+ * dataTable.addRow(new Object[] {375, 12, 23});
+ * dataTable.addRow(new Object[] {400, 16, 25});
+ * widgetData = dataTable.toString();
+ *   
+ * ScatterChart scatterChart = new ScatterChart( composite, SWT.NONE );
+ * scatterChart.setWidgetOptions("{width: 300, height: 300}");
+ * scatterChart.setWidgetData(widgetData);
+ * scatterChart.addListener(SWT.Selection, this);
+ * </pre>
+ * </p>
+ * <pre>
+ * public void handleEvent(Event event) {
+ *   System.out.println("Event: " + event);
+ *   VisualizationWidget widget = (VisualizationWidget)event.widget;
+ *   System.out.println("Selected item=" + widget.getSelectedItem() + 
+ *     "; row=" + widget.getSelectedRow() +
+ *     "; column=" + widget.getSelectedColumn() +
+ *     "; value=" + widget.getSelectedValue());
+ * }
+ * </pre>
+ * </p>
+ * @see <a href="http://code.google.com/apis/visualization/documentation/gallery/scatterchart.html">Scatter Chart Example</a>
  */
 public class ScatterChart extends VisualizationWidget {
 
+  /**
+   * Constructs a scatter chart widget in the specified parent and style. 
+   * A visualization widget by default will auto-resize to fill its parent.
+   * <p>
+   * The style value is either one of the style constants defined in
+   * class <code>SWT</code> which is applicable to instances of this
+   * class, or must be built by <em>bitwise OR</em>'ing together
+   * (that is, using the <code>int</code> "|" operator) two or more
+   * of those <code>SWT</code> style constants. The class description
+   * lists the style constants that are applicable to the class, if any.
+   * Style bits are also inherited from superclasses.
+   * </p>
+   * @param parent the parent composite (cannot be <code>null</code>)
+   * @param style the style bits of the widget
+   * @exception IllegalArgumentException <ul>
+   *    <li>ERROR_NULL_ARGUMENT - if the parent is null</li>
+   * </ul>
+   * @exception SWTException <ul>
+   *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent</li>
+   * </ul>
+   *
+   */
   public ScatterChart( Composite parent, int style ) {
     super( parent, style );
   }
diff --git a/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/Table.java b/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/Table.java
index da6c481..7145478 100644
--- a/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/Table.java
+++ b/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/Table.java
@@ -16,88 +16,70 @@
 
 /**
  * Renders a Google Visualization Table widget.
- * @See http://code.google.com/apis/visualization/documentation/gallery/table.html
- * 
- * Note that this widget is rendered upon calling the setWidgetData method.  
- * So if you wish to set options like width, height, colors, etc., you must do this 
- * using method setWidgetOptions, before calling setWidgetData.
- * 
- * Usage:
- * <code>
+ * <p> 
+ * This visualization is configured using the widget data and options 
+ * set by <code>setWidgetData()</code> and <code>setWidgetOptions()</code>.  
+ * Note that if the widget data or options are changed after initial rendering, 
+ * the <code>redraw()</code> method should be called to render the changes.  
+ * </p>
+ * <p>
+ * <b>Usage:</b>
+ * <pre>
  * JSONGoogleDataTable dataTable = new JSONGoogleDataTable();
-    dataTable.addColumn("theyear", "Date", "string", null);
-    dataTable.addColumn("CO2", "CO2", "number", null);
-    dataTable.addColumn("Temperature", "Temperature (C)", "number", null);
-    dataTable.addRow(new Object[] {"1970", 325, 14.1});
-    dataTable.addRow(new Object[] {"2009", 389, 14.8});
-    String serializedData = dataTable.toString();
-    
-    Table table = new Table( composite, SWT.NONE );
-    table.setWidgetOptions("{width: 300, height: 300}");
-    table.setWidgetData(serializedData);
-    gridData = new GridData(300, 300);
-    table.setLayoutData(gridData);
-    table.addListener(SWT.Selection, this);
-    </code>
-    
-    <code>
-    public void handleEvent(Event event) {
-    log.info("Event: " + event);
-    VisualizationWidget widget = (VisualizationWidget)event.widget;
-    log.info( "Selected item=" + widget.getSelectedItem() + 
-        "; row=" + widget.getSelectedRow() +
-        "; column=" + widget.getSelectedColumn() +
-        "; value=" + widget.getSelectedValue());
-    </code>
+ * dataTable.addColumn("theyear", "Date", "string", null);
+ * dataTable.addColumn("CO2", "CO2", "number", null);
+ * dataTable.addColumn("Temperature", "Temperature (C)", "number", null);
+ * dataTable.addRow(new Object[] {"1970", 325, 14.1});
+ * dataTable.addRow(new Object[] {"2009", 389, 14.8});
+ * String serializedData = dataTable.toString();
+ *  
+ * Table table = new Table( composite, SWT.NONE );
+ * table.setWidgetOptions("{width: 300, height: 300}");
+ * table.setWidgetData(serializedData);
+ * table.addListener(SWT.Selection, this);
+ * </pre>
+ * </p>
+ * <pre>
+ * public void handleEvent(Event event) {
+ *   System.out.println("Event: " + event);
+ *   VisualizationWidget widget = (VisualizationWidget)event.widget;
+ *   System.out.println("Selected item=" + widget.getSelectedItem() + 
+ *     "; row=" + widget.getSelectedRow() +
+ *     "; column=" + widget.getSelectedColumn() +
+ *     "; value=" + widget.getSelectedValue());
+ * }
+ * </pre>
+ * </p>
+ * 
+ * @see <a href="http://code.google.com/apis/visualization/documentation/gallery/table.html">Table Example</a>
  * 
  */
 public class Table extends VisualizationWidget {
 
-//  private static final Logger log = Logger.getLogger(TableLCA.class);
-  
-  private String selectedItem;
-//  private List<SelectionListener> listeners = new ArrayList<SelectionListener>();
-  
+  /**
+   * Constructs a table widget in the specified parent and style. 
+   * A visualization widget by default will auto-resize to fill its parent.
+   * <p>
+   * The style value is either one of the style constants defined in
+   * class <code>SWT</code> which is applicable to instances of this
+   * class, or must be built by <em>bitwise OR</em>'ing together
+   * (that is, using the <code>int</code> "|" operator) two or more
+   * of those <code>SWT</code> style constants. The class description
+   * lists the style constants that are applicable to the class, if any.
+   * Style bits are also inherited from superclasses.
+   * </p>
+   * @param parent the parent composite (cannot be <code>null</code>)
+   * @param style the style bits of the widget
+   * @exception IllegalArgumentException <ul>
+   *    <li>ERROR_NULL_ARGUMENT - if the parent is null</li>
+   * </ul>
+   * @exception SWTException <ul>
+   *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent</li>
+   * </ul>
+   *
+   */
   public Table( final Composite parent, final int style ) {
     super( parent, style );
   }
 
-//  public void addSelectionListener(SelectionListener listener) {
-//    listeners.add(listener);
-//  }
-  
-//  public void addSelectionListener (SelectionListener listener) {
-//    checkWidget ();
-//    TypedListener typedListener = new TypedListener (listener);
-//    addListener (SWT.Selection,typedListener);
-//    addListener (SWT.DefaultSelection,typedListener);
-//  }
-  
-//  public void removeSelectionListener(SelectionListener listener) {
-//    listeners.remove(listener);
-//  }
-  
-//  public void removeSelectionListener (SelectionListener listener) {
-//    checkWidget();
-//    TypedListener typedListener = new TypedListener(listener);
-//    removeListener(SWT.Selection,typedListener);
-//    removeListener(SWT.DefaultSelection,typedListener);
-//  }
-  
-//  private void selectionChanged() {
-//    Event event = new Event();
-//    event.data = selectedItem;
-//    event.text = selectedItem;
-//    event.widget = this;
-//    VisualizationSelectionEvent selectionEvent = new VisualizationSelectionEvent(event);
-//    selectionEvent.setWidget(this);
-//    selectionEvent.setSource(this);
-//    selectionEvent.data = selectedItem;
-//    selectionEvent.text = selectedItem;
-//    for (SelectionListener listener: listeners) {
-//      listener.widgetSelected( selectionEvent );
-//    }
-//  }
-  
-  
 }
diff --git a/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/VisualizationWidget.java b/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/VisualizationWidget.java
index 7fbfef8..526ab37 100644
--- a/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/VisualizationWidget.java
+++ b/bundles/org.eclipse.rap.rwt.visualization.google/src/org/eclipse/rap/rwt/visualization/google/VisualizationWidget.java
@@ -37,8 +37,8 @@
   
   /**
    * Constructs a visualization widget in the specified parent and style. A visualization widget by
-   * default will resize to fill its parent.
-   * @param parent the parent composite
+   * default will auto-resize to fill its parent.
+   * @param parent the parent composite (cannot be <code>null</code>)
    * @param style the style of this widget
    */
   protected VisualizationWidget( final Composite parent, final int style ) {