changeset 675:226d6fc60d69 2.1-b18

Merge
author igor
date Tue, 20 Mar 2012 18:49:15 -0700
parents 8aa657f4528c 5c9047caf4b1
children c6776ca2f0e2
files javafx-ui-common/test/unit/com/sun/javafx/css/HonorDeveloperSettingsTest.css
diffstat 20 files changed, 719 insertions(+), 241 deletions(-) [+]
line wrap: on
line diff
--- a/javafx-ui-charts/test/javafx/scene/chart/StackedAreaChartTest.java	Tue Mar 20 11:04:48 2012 -0700
+++ b/javafx-ui-charts/test/javafx/scene/chart/StackedAreaChartTest.java	Tue Mar 20 18:49:15 2012 -0700
@@ -18,6 +18,7 @@
 import javafx.stage.Stage;
 import javafx.scene.shape.*;
 
+import org.junit.Ignore;
 
 
 public class StackedAreaChartTest extends ChartTestBase {
@@ -85,7 +86,7 @@
         }
     }
     
-    @Test
+    @Test @Ignore
     public void testDataItemRemove() {
         startApp();
         ac.getData().addAll(series1);
@@ -98,7 +99,7 @@
         }
     }
     
-    @Test
+    @Test @Ignore
     public void testDataItemAdd() {
         startApp();
         ac.getData().addAll(series1);
@@ -111,7 +112,7 @@
         }
     }
     
-    @Test
+    @Test @Ignore
     public void testDataItemInsert() {
         startApp();
         ac.getData().addAll(series1);
@@ -124,7 +125,7 @@
         }
     }
     
-    @Test
+    @Test @Ignore
     public void testDataItemChange() {
         startApp();
         ac.getData().addAll(series1);
--- a/javafx-ui-charts/test/javafx/scene/chart/StackedBarChartTest.java	Tue Mar 20 11:04:48 2012 -0700
+++ b/javafx-ui-charts/test/javafx/scene/chart/StackedBarChartTest.java	Tue Mar 20 18:49:15 2012 -0700
@@ -19,6 +19,7 @@
 import javafx.scene.shape.*;
 import javafx.scene.layout.Region;
 
+import org.junit.Ignore;
 
 public class StackedBarChartTest extends ChartTestBase {
     
@@ -125,7 +126,7 @@
         }
     }
     
-    @Test
+    @Test @Ignore
     public void testDataItemChange() {
         startApp();
         sbc.getData().addAll(series1);
--- a/javafx-ui-common/src/com/sun/javafx/css/StyleHelper.java	Tue Mar 20 11:04:48 2012 -0700
+++ b/javafx-ui-common/src/com/sun/javafx/css/StyleHelper.java	Tue Mar 20 18:49:15 2012 -0700
@@ -46,6 +46,7 @@
 import javafx.beans.property.BooleanProperty;
 import javafx.beans.property.SimpleBooleanProperty;
 import javafx.beans.value.WritableValue;
+import javafx.scene.text.Text;
 
 /**
  * The StyleHelper is a helper class used for applying CSS information to Nodes.
@@ -587,13 +588,11 @@
 
         @Override
         public boolean isSettable(Node node) {
-            assert(false);
             return false;
         }
 
         @Override
         public WritableValue<Font> getWritableValue(Node node) {
-            assert(false);
             return null;
         }
     };
@@ -624,6 +623,14 @@
             }
         }
 
+        final WritableValue writable = fontKey.getWritableValue(node);
+        if (writable != null) {
+            Stylesheet.Origin origin = fontKey.getOrigin(writable);
+            if (origin == Stylesheet.Origin.USER) {
+                return (Font)fontKey.getWritableValue(node).getValue();                
+            }
+        }
+        
         //
         // need to distinguish the "inherited" font since it could resolve
         // to Font.getDefault() and we don't want that to look like it was
@@ -643,10 +650,12 @@
             if (cv != null && cv.value instanceof Font) return (Font)cv.value;
         }
 
-        // Go looking for the font for this node
         // Pass null for originating node to avoid infinite loop
         final CalculatedValue inherited = 
-            inherit(node, fontKey, false, userStyles, null, cacheEntry, styleList);
+            lookup(node, fontKey, false, 
+                   getPseudoClassState(node), userStyles, null,
+                   cacheEntry, styleList);
+        
         // The inherited value might be SKIP for example, so check to make
         // sure that it really is a Font before casting it. If the inherited
         // value isn't a Font, then we will simply use the JavaFX default Font.
@@ -978,8 +987,7 @@
             // the style came from the user agent stylesheet, then
             // skip the value. A style from a user agent stylesheet should
             // not override the user set style.
-            if (style.getOrigin() == Stylesheet.Origin.USER_AGENT
-                    && isUserSetProperty(originatingNode, styleable)) {
+            if (isUserSet && style.getOrigin() == Stylesheet.Origin.USER_AGENT) {
                 return new CalculatedValue(SKIP, style.getOrigin(), true);
             }
 
@@ -988,7 +996,7 @@
             final ParsedValue cssValue = style.getParsedValue();
             if (cssValue != null && "inherit".equals(cssValue.getValue())) {
                 if (styleList != null) styleList.add(style.getStyle());
-                return inherit(node, styleable, isUserSet, userStyles, 
+                return inherit(node, styleable, userStyles, 
                         originatingNode, cacheEntry, styleList);
             }
         }
@@ -1104,7 +1112,7 @@
             }
 
             CalculatedValue cv =
-                inherit(node, styleable, isUserSet, userStyles, 
+                inherit(node, styleable, userStyles, 
                     originatingNode, cacheEntry, styleList);
 
             return cv;
@@ -1154,10 +1162,25 @@
      * Called when we must inherit a value from a parent node in the scenegraph.
      */
     private CalculatedValue inherit(Node node, StyleableProperty styleable,
-            boolean isUserSet, Map<String,CascadingStyle> userStyles, 
+            Map<String,CascadingStyle> userStyles, 
             Node originatingNode, CacheEntry cacheEntry, List<Style> styleList) {
+        
+        //
+        // RT-20145 - if node has the property, use the property value instead
+        // of looking for matching styles. If the property was styled, then 
+        // we are getting the right value since the parent is styled before the
+        // child. If the property was not styled, then we're still getting the
+        // right value - either the default value or some user set value.
+        //
+
+        WritableValue prop = styleable.getWritableValue(node);
+        if (prop != null) {
+            final Stylesheet.Origin origin = StyleableProperty.getOrigin(prop);
+            return new CalculatedValue(prop.getValue(), origin, true);
+        }
+        
         // Locate the first parentStyleHelper in the hierarchy
-        Node parent = node.getParent();
+        Node parent = node.getParent();        
         StyleHelper parentStyleHelper = parent == null ? null : parent.impl_getStyleHelper();
         while (parent != null && parentStyleHelper == null) {
             parent = parent.getParent();
@@ -1169,7 +1192,7 @@
         if (parent == null) {
             return new CalculatedValue(SKIP, null, true);
         }
-        return parentStyleHelper.lookup(parent, styleable, isUserSet,
+        return parentStyleHelper.lookup(parent, styleable, false,
                 parentStyleHelper.getPseudoClassState(parent),
                 getStyles(parent), originatingNode, cacheEntry, styleList);
     }
--- a/javafx-ui-common/src/com/sun/javafx/css/parser/CSSParser.java	Tue Mar 20 11:04:48 2012 -0700
+++ b/javafx-ui-common/src/com/sun/javafx/css/parser/CSSParser.java	Tue Mar 20 18:49:15 2012 -0700
@@ -172,11 +172,16 @@
         CSSLexer lex = CSSLexer.getInstance();
         lex.setReader(reader);
 
-        this.parse(lex);
-
         try {
+            this.parse(lex);
             reader.close();
         } catch (IOException ioe) {
+        } catch (Exception ex) {
+            // Sometimes bad syntax causes an exception. The code should be 
+            // fixed to handle the bad syntax, but the fallback is 
+            // to handle the exception here. Uncaught, the exception can cause 
+            // problems like RT-20311
+            reportException(ex);
         }
 
     }
@@ -189,19 +194,25 @@
             final Reader reader = new CharArrayReader(stylesheetText.toCharArray());
             final CSSLexer lexer = CSSLexer.getInstance();
             lexer.setReader(reader);
-            currentToken = nextToken(lexer);
-            final List<Declaration> declarations = declarations(lexer);
-            if (declarations != null && !declarations.isEmpty()) {
-                final Selector selector = Selector.getUniversalSelector();
-                final Rule rule = new Rule(
-                    Collections.singletonList(selector),
-                    declarations
-                );
-                rules.add(rule);
-            }
             try {
+                currentToken = nextToken(lexer);
+                final List<Declaration> declarations = declarations(lexer);
+                if (declarations != null && !declarations.isEmpty()) {
+                    final Selector selector = Selector.getUniversalSelector();
+                    final Rule rule = new Rule(
+                        Collections.singletonList(selector),
+                        declarations
+                    );
+                    rules.add(rule);
+                }
                 reader.close();
             } catch (IOException ioe) {
+            } catch (Exception ex) {
+                // Sometimes bad syntax causes an exception. The code should be 
+                // fixed to handle the bad syntax, but the fallback is 
+                // to handle the exception here. Uncaught, the exception can cause 
+                // problems like RT-20311
+                reportException(ex);
             }
         }
         stylesheet.getRules().addAll(rules);
@@ -231,6 +242,12 @@
             if (LOGGER.isLoggable(PlatformLogger.WARNING)) {
                 LOGGER.warning("\"" +property + ": " + expr  + "\" " + e.toString());
             }
+        } catch (Exception ex) {
+            // Sometimes bad syntax causes an exception. The code should be 
+            // fixed to handle the bad syntax, but the fallback is 
+            // to handle the exception here. Uncaught, the exception can cause 
+            // problems like RT-20311
+            reportException(ex);
         }
         notifyErrors();
         return value;
@@ -348,6 +365,29 @@
         throw pe;
     }
 
+    private void reportException(Exception exception) {
+        
+        if (LOGGER.isLoggable(PlatformLogger.WARNING)) {
+            final StackTraceElement[] stea = exception.getStackTrace();
+            if (stea.length > 0) {
+                final StringBuilder buf = 
+                    new StringBuilder("Please report ");
+                buf.append(exception.getClass().getName())
+                   .append(" at:");
+                int end = 0;
+                while(end < stea.length) {
+                    // only report parser part of the stack trace.
+                    if (!getClass().getName().equals(stea[end].getClassName())) {
+                        break;
+                    }
+                    buf.append("\n\t")
+                    .append(stea[end++].toString());
+                }
+                LOGGER.warning(buf.toString());
+            }
+        }
+    }
+    
     private String formatDeprecatedMessage(final Term root, final String syntax) {
         final StringBuilder buf = 
             new StringBuilder("Using deprecated syntax for ");
--- a/javafx-ui-common/src/javafx/scene/Node.java	Tue Mar 20 11:04:48 2012 -0700
+++ b/javafx-ui-common/src/javafx/scene/Node.java	Tue Mar 20 18:49:15 2012 -0700
@@ -992,16 +992,16 @@
      * Specifies how opaque (that is, solid) the {@code Node} appears. A Node
      * with 0% opacity is fully translucent. That is, while it is still
      * {@link #visibleProperty visible} and rendered, you generally won't be able to see it. The
-     * exception to this rule is when the Z{@code Node} is combined with a
+     * exception to this rule is when the {@code Node} is combined with a
      * blending mode and blend effect in which case a translucent Node may still
      * have an impact in rendering. An opacity of 50% will render the node as
      * being 50% transparent.
      * <p>
      * A {@link #visibleProperty visible} node with any opacity setting still receives mouse
      * events and can receive keyboard focus. For example, if you want to have
-     * a large invisible rectangle overlay all Nodes in the scene graph in order
-     * to intercept mouse events but not be visible to the user, you could
-     * create a large Rectangle that had an opacity of 0%.
+     * a large invisible rectangle overlay all {@code Node}s in the scene graph
+     * in order to intercept mouse events but not be visible to the user, you could
+     * create a large {@code Rectangle} that had an opacity of 0%.
      * <p>
      * Opacity is specified as a value between 0 and 1. Values less than 0 are
      * treated as 0, values greater than 1 are treated as 1.
@@ -1180,7 +1180,7 @@
      * little benefit to caching Nodes as bitmaps when blurs and other effects
      * are used since they are very fast to render on the GPU.
      *
-     * The {@code cacheHint} variable provides additional options for enabling
+     * The {@link cacheHint} variable provides additional options for enabling
      * more aggressive bitmap caching.
      *
      * <p>
@@ -1295,11 +1295,11 @@
 
     /**
      * Indicates whether depth testing is used when rendering this node.
-     * If the depthTest flag is DepthTest.DISABLE, then depth testing
+     * If the depthTest flag is {@code DepthTest.DISABLE}, then depth testing
      * is disabled for this node.
-     * If the depthTest flag is DepthTest.ENABLE, then depth testing
+     * If the depthTest flag is {@code DepthTest.ENABLE}, then depth testing
      * is enabled for this node.
-     * If the depthTest flag is DepthTest.INHERIT, then depth testing
+     * If the depthTest flag is {@code DepthTest.INHERIT}, then depth testing
      * is enabled for this node if it is enabled for the parent node or the
      * parent node is null.
      * <p>
@@ -1863,7 +1863,8 @@
     /**
      * Defines whether or not this node's layout will be managed by it's parent.
      * If the node is managed, it's parent will factor the node's geometry
-     * into its own preferred size and layoutBounds calculations and will lay it
+     * into its own preferred size and {@link #layoutBoundsProperty layoutBounds}
+     * calculations and will lay it
      * out during the scene's layout pass.  If a managed node's layoutBounds
      * changes, it will automatically trigger relayout up the scene-graph
      * to the nearest layout root (which is typically the scene's root node).
@@ -1871,15 +1872,17 @@
      * If the node is unmanaged, its parent will ignore the child in both preferred
      * size computations and layout.   Changes in layoutBounds will not trigger
      * relayout above it.   If an unmanaged node is of type {@link javafx.scene.Parent Parent},
-     * it will act as a "layout root", meaning that calls to requestLayout()
+     * it will act as a "layout root", meaning that calls to {@link requestLayout()}
      * beneath it will cause only the branch rooted by the node to be relayed out,
      * thereby isolating layout changes to that root and below.  It's the application's
      * responsibility to set the size and position of an unmanaged node.
      * <p>
      * By default all nodes are managed.
-     * <p>
+     * </p>
+     * 
      * @see #isResizable()
-     * @see #getLayoutBounds()
+     * @see #layoutBoundsProperty()
+     * @see Parent#requestLayout()
      *
      */
     private BooleanProperty managed;
@@ -1922,7 +1925,7 @@
      * Defines the x coordinate of the translation that is added to this {@code Node}'s
      * transform for the purpose of layout.  The value should be computed as the
      * offset required to adjust the position of the node from its current
-     * {@code layoutBounds minX} position (which might not be 0) to the desired location.
+     * {@link #layoutBoundsProperty() layoutBounds minX} position (which might not be 0) to the desired location.
      *
      * <p>For example, if {@code textnode} should be positioned at {@code finalX}
      * <code><pre>
@@ -1930,7 +1933,7 @@
      * </pre></code>
      * <p>
      * Failure to subtract {@code layoutBounds minX} may result in misplacement
-     * of the node.  The {@code relocate(x,y)} method will automatically do the
+     * of the node.  The {@link #relocate(double, double) relocate(x, y)} method will automatically do the
      * correct computation and should generally be used over setting layoutX directly.
      * <p>
      * The node's final translation will be computed as {@code layoutX} + {@link #translateXProperty translateX},
@@ -1943,7 +1946,8 @@
      * own layout policy.   If the node is unmanaged or parented by a {@link Group},
      * then the application may set {@code layoutX} directly to position it.
      * <p>
-     * @see #relocate(double, double) 
+     * @see #relocate(double, double)
+     * @see #layoutBoundsProperty()
      *
      */
     private DoubleProperty layoutX;
@@ -1983,7 +1987,7 @@
      * Defines the y coordinate of the translation that is added to this {@code Node}'s
      * transform for the purpose of layout.  The value should be computed as the
      * offset required to adjust the position of the node from its current
-     * {@code layoutBounds minY} position (which might not be 0) to the desired location.
+     * {@link #layoutBoundsProperty() layoutBounds minY} position (which might not be 0) to the desired location.
      *
      * <p>For example, if {@code textnode} should be positioned at {@code finalY}
      * <code><pre>
@@ -1991,7 +1995,7 @@
      * </pre></code>
      * <p>
      * Failure to subtract {@code layoutBounds minY} may result in misplacement
-     * of the node.  The {@code relocate(x,y)} method will automatically do the
+     * of the node.  The {@link #relocate(double, double) relocate(x, y)} method will automatically do the
      * correct computation and should generally be used over setting layoutY directly.
      * <p>
      * The node's final translation will be computed as {@code layoutY} + {@link #translateYProperty translateY},
@@ -2005,6 +2009,7 @@
      * then the application may set {@code layoutY} directly to position it.
      *
      * @see #relocate(double, double) 
+     * @see #layoutBoundsProperty()
      */
     private DoubleProperty layoutY;
 
@@ -4856,7 +4861,7 @@
      * due to the mouse being over the node, though it could be due to a pen
      * hovering on a graphics tablet or other form of input.
      *
-     * the <p>NOTE current implementation of hover relies on mouse enter and
+     * <p>Note that current implementation of hover relies on mouse enter and
      * exit events to determine whether this Node is in the hover state; this
      * means that this feature is currently supported only on systems that
      * have a mouse. Future implementations may provide alternative means of
@@ -5346,8 +5351,9 @@
      * Indicates whether this {@code Node} currently has the input focus.
      * To have the input focus, a node must be the {@code Scene}'s focus
      * owner, and the scene must be in a {@code Stage} that is visible
-     * and active. See {@code requestFocus()} for more information.
+     * and active. See {@link requestFocus()} for more information.
      *
+     * @see #requestFocus()
      * @defaultValue false
      */
     private ReadOnlyBooleanWrapper focused;
@@ -5402,8 +5408,9 @@
      * {@code Node} whose {@code focusTraversable} variable is true
      * and that is eligible to receive the focus,
      * unless the focus had been set explicitly via a call
-     * to {@code requestFocus()}.
+     * to {@link requestFocus()}.
      *
+     * @see #requestFocus()
      * @defaultValue false
      */
     private BooleanProperty focusTraversable;
--- a/javafx-ui-common/src/javafx/scene/doc-files/cssref.html	Tue Mar 20 11:04:48 2012 -0700
+++ b/javafx-ui-common/src/javafx/scene/doc-files/cssref.html	Tue Mar 20 18:49:15 2012 -0700
@@ -2,11 +2,9 @@
 <html lang="en-US">
   <head>
     <meta name="description" content="This document describes the JavaFX 
-              Cascading Style Sheets (CSS) for JavaFX 2 and explains the
-              styles, values, properties and associated grammar.">
+              Cascading Style Sheets (CSS) for JavaFX 2 and explains the              styles, values, properties and associated grammar.">
     <meta name="keywords" content="JavaFX 2, JavaFX CSS, JavaFX CSS 
-              reference, JavaFX styling, CSS styles, CSS, cascading style sheets,
-              JavaFX GUI development, JavaFX application development">
+              reference, JavaFX styling, CSS styles, CSS, cascading style sheets,              JavaFX GUI development, JavaFX application development">
     <meta http-equiv="content-type" content="text/html; charset=UTF-8">
     <title>JavaFX CSS Reference Guide</title>
     <style>
@@ -275,6 +273,7 @@
               <li><a href="#checkbox">CheckBox</a></li>
               <li><a href="#checkmenuitem">CheckMenuItem</a></li>
               <li><a href="#choicebox">ChoiceBox</a></li>
+              <li><a href="#combobox">ComboBox</a></li>
               <li><a href="#control">Control</a></li>
               <li><a href="#hyperlink">Hyperlink</a></li>
               <li><a href="#indexedcell">IndexedCell</a></li>
@@ -317,19 +316,19 @@
         <ul>
           <li> javafx.scene.chart
             <ul>
-              <li><a href="#Chart">Chart</a> </li>
-              <li><a href="#XYChart">XYChart</a> </li>
-              <li><a href="#AreaChart">AreaChart</a> </li>
-              <li><a href="#BarChart">BarChart</a> </li>
-              <li><a href="#BubbleChart">BubbleChart</a> </li>
-              <li><a href="#LineChart">LineChart</a> </li>
-              <li><a href="#ScatterChart">ScatterChart</a> </li>
-              <li><a href="#PieChart">PieChart</a> </li>
-              <li><a href="#Axis">Axis</a> </li>
-              <li><a href="#ValueAxis">ValueAxis</a> </li>
-              <li><a href="#NumberAxis">NumberAxis</a> </li>
-              <li><a href="#CategoryAxis">CategoryAxis</a> </li>
-              <li><a href="#Legend">Legend</a> </li>
+              <li><a href="#areachart">AreaChart</a> </li>
+              <li><a href="#barchart">BarChart</a> </li>
+              <li><a href="#bubblechart">BubbleChart</a> </li>
+              <li><a href="#chart">Chart</a> </li>
+              <li><a href="#linechart">LineChart</a> </li>
+              <li><a href="#scatterchart">ScatterChart</a> </li>
+              <li><a href="#piechart">PieChart</a> </li>
+              <li><a href="#xychart">XYChart</a> </li>
+              <li><a href="#axis">Axis</a> </li>
+              <li><a href="#valueaxis">ValueAxis</a> </li>
+              <li><a href="#numberaxis">NumberAxis</a> </li>
+              <li><a href="#categoryaxis">CategoryAxis</a> </li>
+              <li><a href="#legend">Legend</a> </li>
             </ul>
           </li>
         </ul>
@@ -563,7 +562,7 @@
     <h3><a name="introexamples" id="introexamples">Examples</a></h3>
     <p>Consider the following simple JavaFX application: </p>
     <p class="example">Scene scene = new Scene(new Group()); <br>
-      scene.getStylesheets().add(“test.css”); <br>
+      scene.getStylesheets().add(&ldquo;test.css&rdquo;); <br>
       Rectangle rect = new Rectangle(100,100); <br>
       rect.setLayoutX(50); <br>
       rect.setLayoutY(50); <br>
@@ -665,12 +664,13 @@
     </ul>
     <p><strong>Absolute</strong></p>
     <ul>
-      <li><strong>in</strong>: inches — 1 inch is equal to 2.54 centimeters.</li>
+      <li><strong>in</strong>: inches &mdash; 1 inch is equal to 2.54
+        centimeters.</li>
       <li><strong>cm</strong>: centimeters</li>
       <li><strong>mm</strong>: millimeters</li>
-      <li><strong>pt</strong>: points — the points used by CSS 2.1 are equal to
-        1/72nd of an inch.</li>
-      <li><strong>pc</strong>: picas — 1 pica is equal to 12 points.</li>
+      <li><strong>pt</strong>: points &mdash; the points used by CSS 2.1 are
+        equal to 1/72nd of an inch.</li>
+      <li><strong>pc</strong>: picas &mdash; 1 pica is equal to 12 points.</li>
     </ul>
     <h4><a name="typepercentage" id="typepercentage">&lt;percentage&gt;</a></h4>
     <p>These are a percentage of some length, typically to the width or height
@@ -1507,36 +1507,49 @@
       , <a href="#typenumber" class="typelink">&lt;integer&gt;</a> %, <a href="#typenumber"
         class="typelink">&lt;number&gt;</a>
       )</p>
-    <p>These examples all specify the same color:</p>
-    <p class="example">em { color: #f00 } /* #rgb */ em { color: #ff0000 } /*
-      #rrggbb */ em { color: rgb(255,0,0) }<br>
-      em { color: rgb(100%, 0%, 0%) } em { color: rgba(255,0,0,1) }</p>
+    <p>These examples all specify the same color for the text fill of a Label:</p>
+    <p class="example"></p>
+    <ul style="list-style: none;">
+      <li>.label { -fx-text-fill: #f00 } /* #rgb */</li>
+      <li>.label { -fx-text-fill: #ff0000 } /* #rrggbb */</li>
+      <li>.label { -fx-text-fill: rgb(255,0,0) }</li>
+      <li> .label { -fx-text-fill: rgb(100%, 0%, 0%) }</li>
+      <li>.label { -fx-text-fill: rgba(255,0,0,1) }</li>
+    </ul>
+    <p></p>
     <p><strong>RGB Hex</strong>: The format of an RGB value in hexadecimal
-      notation is a ‘#’ immediately followed by either three or six hexadecimal
-      characters. The three-digit RGB notation (#rgb) is converted into
-      six-digit form (#rrggbb) by replicating digits, not by adding zeros. For
-      example, #fb0 expands to #ffbb00. This ensures that white (#ffffff) can be
-      specified with the short notation (#fff) and removes any dependencies on
-      the color depth of the display.</p>
+      notation is a &lsquo;#&rsquo; immediately followed by either three or six
+      hexadecimal characters. The three-digit RGB notation (#rgb) is converted
+      into six-digit form (#rrggbb) by replicating digits, not by adding zeros.
+      For example, #fb0 expands to #ffbb00. This ensures that white (#ffffff)
+      can be specified with the short notation (#fff) and removes any
+      dependencies on the color depth of the display.</p>
     <p><strong>RGB Decimal or Percent</strong>: The format of an RGB value in
-      the functional notation is ‘rgb(’ followed by a comma-separated list of
-      three numerical values (either three decimal integer values or three
-      percentage values) followed by ‘)’. The integer value 255 corresponds to
-      100%, and to F or FF in the hexadecimal notation: rgb(255,255,255) =
-      rgb(100%,100%,100%) = #FFF. White space characters are allowed around the
-      numerical values.</p>
+      the functional notation is &lsquo;rgb(&rsquo; followed by a
+      comma-separated list of three numerical values (either three decimal
+      integer values or three percentage values) followed by &lsquo;)&rsquo;.
+      The integer value 255 corresponds to 100%, and to F or FF in the
+      hexadecimal notation: rgb(255,255,255) = rgb(100%,100%,100%) = #FFF. White
+      space characters are allowed around the numerical values.</p>
     <p><strong>RGB + Alpha</strong>: This is an extension of the RGB color model
-      to include an ‘alpha’ value that specifies the opacity of a color. This is
-      accomplished via a functional syntax of the form rgba(...) form that takes
-      a fourth parameter which is the alpha value. The alpha value must be a
-      number in the range 0.0 (representing completely transparent) and 1.0
-      (completely opaque). As with the rgb() function, the red, green, and blue
-      values may be decimal integers or percentages. The following examples all
-      specify the same color:</p>
-    <p class="example">em { color: rgb(255,0,0) } /* integer range 0 - 255*/ em
-      { color: rgba(255,0,0,1) /* the same, with explicit opacity of 1 */ em {
-      color: rgb(100%,0%,0%) } /* float range 0.0% - 100.0% */ em { color:
-      rgba(100%,0%,0%,1) } /* the same, with explicit opacity of 1 */</p>
+      to include an &lsquo;alpha&rsquo; value that specifies the opacity of a
+      color. This is accomplished via a functional syntax of the form rgba(...)
+      form that takes a fourth parameter which is the alpha value. The alpha
+      value must be a number in the range 0.0 (representing completely
+      transparent) and 1.0 (completely opaque). As with the rgb() function, the
+      red, green, and blue values may be decimal integers or percentages. The
+      following examples all specify the same color:</p>
+    <p class="example"></p>
+    <ul style="list-style: none;">
+      <li>.label { -fx-text-fill: rgb(255,0,0) } /* integer range 0 - 255*/</li>
+      <li> .label { -fx-text-fill: rgba(255,0,0,1) /* the same, with explicit
+        opacity of 1 */</li>
+      <li> .label { -fx-text-fill: rgb(100%,0%,0%) } /* float range 0.0% -
+        100.0% */</li>
+      <li> .label { -fx-text-fill: rgba(100%,0%,0%,1) } /* the same, with
+        explicit opacity of 1 */</li>
+    </ul>
+    <p></p>
     <h4>HSB Colors <span class="grammar" style="font-size: smaller;">&lt;hsb-color&gt;</span></h4>
     <p>Colors can be specified using the HSB (sometimes called HSV) color model,
       as follows:</p>
@@ -1614,7 +1627,31 @@
         </tr>
       </tbody>
     </table>
+    <h4><a name="group" id="group">Group</a></h4>
+    <p class="styleclass">Style class: empty by default</p>
+    <table summary="property table" class="csspropertytable" cellpadding="2" cellspacing="1">
+      <thead>
+        <tr>
+          <th class="propertyname">CSS Property</th>
+          <th class="value">Values</th>
+          <th class="default">Default</th>
+          <th>Comments</th>
+        </tr>
+      </thead>
+      <tbody>
+        <tr>
+          <td colspan="4">Group extends Parent. Group does not add any addtional
+            CSS properties.</td>
+        </tr>
+        <tr>
+          <td colspan="4" class="parents">Also has all properties of <a href="#parent">Parent</a></td>
+        </tr>
+      </tbody>
+    </table>
+    <br>
     <h4><a name="node" id="node">Node</a></h4>
+    <p class="styleclass">Style class: empty by default<br>
+    </p>
     <table summary="property table" class="csspropertytable" cellpadding="2" cellspacing="1">
       <thead>
         <tr>
@@ -1765,6 +1802,8 @@
       </tbody>
     </table>
     <h4><a name="parent" id="parent">Parent</a></h4>
+    <p class="styleclass">Style
+      class: empty by default</p>
     <table summary="property table" class="csspropertytable" cellpadding="2" cellspacing="1">
       <thead>
         <tr>
@@ -1776,17 +1815,18 @@
       </thead>
       <tbody>
         <tr>
-          <td colspan="4">Parent extends Node. Parent
-            does not add any addtional CSS properties.</td>
+          <td colspan="4">Parent extends Node. Parent does not add any addtional
+            CSS properties.</td>
         </tr>
         <tr>
           <td colspan="4" class="parents">Also has all properties of <a href="#node">Node</a></td>
         </tr>
       </tbody>
     </table>
-    <br>    
+    <br>
     <h4><a name="scene" id="scene">Scene</a></h4>
-    <p class="styleclass">Style class: scene</p>
+    <p class="styleclass">Style class: not applicable<br>
+    </p>
     <p>The Scene object has no settable CSS properties, nor does it have any
       pseudo-classes. However, the root node of the scene is assigned the style
       class "root" (in addition to style classes already assigned to the node).
@@ -1801,6 +1841,7 @@
       </tbody>
     </table>
     <h4><a name="imageview" id="imageview">ImageView</a></h4>
+<p class="styleclass">Style class: empty by default</p>
     <table summary="property table" class="csspropertytable" cellpadding="2" cellspacing="1">
       <thead>
         <tr>
@@ -1831,6 +1872,7 @@
     </table>
     <br>
     <h4><a name="anchorpane" id="anchorpane">AnchorPane</a></h4>
+<p class="styleclass">Style class: empty by default</p>
     <table summary="property table" class="csspropertytable" cellpadding="2" cellspacing="1">
       <thead>
         <tr>
@@ -1851,6 +1893,7 @@
       </tbody>
     </table>
     <h4><a name="border" id="border">BorderPane</a></h4>
+<p class="styleclass">Style class: empty by default</p>
     <table summary="property table" class="csspropertytable" cellpadding="2" cellspacing="1">
       <thead>
         <tr>
@@ -1872,6 +1915,7 @@
     </table>
     <br>
     <h4><a name="flowpane" id="flowpane">FlowPane</a></h4>
+<p class="styleclass">Style class: empty by default</p>
     <table summary="property table" class="csspropertytable" cellpadding="2" cellspacing="1">
       <thead>
         <tr>
@@ -1926,6 +1970,7 @@
       </tbody>
     </table>
     <h4><a name="gridpane" id="gridpane">GridPane</a></h4>
+<p class="styleclass">Style class: empty by default</p>
     <table summary="property table" class="csspropertytable" cellpadding="2" cellspacing="1">
       <thead>
         <tr>
@@ -1977,6 +2022,7 @@
       </tbody>
     </table>
     <h4><a name="hbox" id="hbox">HBox</a></h4>
+<p class="styleclass">Style class: empty by default</p>
     <table summary="property table" class="csspropertytable" cellpadding="2" cellspacing="1">
       <thead>
         <tr>
@@ -2013,6 +2059,7 @@
       </tbody>
     </table>
     <h4><a name="pane" id="pane">Pane</a></h4>
+<p class="styleclass">Style class: empty by default</p>
     <table summary="property table" class="csspropertytable" cellpadding="2" cellspacing="1">
       <thead>
         <tr>
@@ -2034,6 +2081,7 @@
     </table>
     <br>
     <h4><a name="region" id="region">Region</a></h4>
+<p class="styleclass">Style class: empty by default</p>
     <p>A Region is a Node (extending from Parent) with backgrounds and borders
       that are styleable via CSS. A Region is typically a rounded rectangle,
       though this can be modified through CSS to be an arbitrary shape. Regions
@@ -2122,7 +2170,10 @@
       </thead>
       <tbody>
         <tr>
-          <td colspan="4" class="propertyname"><em>BACKGROUND FILLS</em> (see <a href="http://www.w3.org/TR/css3-background/#backgrounds" target="_blank">CSS Backgrounds and Borders Module Level 3: Backgrounds</a>)</td>
+          <td colspan="4" class="propertyname"><em>BACKGROUND FILLS</em> (see <a
+              href="http://www.w3.org/TR/css3-background/#backgrounds"
+              target="_blank">CSS
+              Backgrounds and Borders Module Level 3: Backgrounds</a>)</td>
         </tr>
         <tr>
           <td class="propertyname">-fx-background-color</td>
@@ -2177,7 +2228,10 @@
           </td>
         </tr>
         <tr>
-          <td colspan="4" class="propertyname"><em>BACKGROUND IMAGES</em> (see <a href="http://www.w3.org/TR/css3-background/#the-background-image" target="_blank">CSS Backgrounds and Borders Module Level 3: Background Image</a>)</td>
+          <td colspan="4" class="propertyname"><em>BACKGROUND IMAGES</em> (see <a
+              href="http://www.w3.org/TR/css3-background/#the-background-image"
+              target="_blank">CSS
+              Backgrounds and Borders Module Level 3: Background Image</a>)</td>
         </tr>
         <tr>
           <td class="propertyname">-fx-background-image</td>
@@ -2232,7 +2286,10 @@
           </td>
         </tr>
         <tr>
-          <td colspan="4" class="propertyname"><em>STROKED BORDERS</em> (see <a href="http://www.w3.org/TR/css3-background/#borders" target="_blank">CSS Backgrounds and Borders Module Level 3: Borders</a>)</td>
+          <td colspan="4" class="propertyname"><em>STROKED BORDERS</em> (see <a
+              href="http://www.w3.org/TR/css3-background/#borders"
+              target="_blank">CSS
+              Backgrounds and Borders Module Level 3: Borders</a>)</td>
         </tr>
         <tr>
           <td class="propertyname">-fx-border-color</td>
@@ -2356,7 +2413,9 @@
           </td>
         </tr>
         <tr>
-          <td colspan="4" class="propertyname"><em>BORDER IMAGES</em> (see <a href="http://www.w3.org/TR/css3-background/#border-images" target="_blank">CSS Backgrounds and Borders Module Level 3: Border Images</a>)</td>
+          <td colspan="4" class="propertyname"><em>BORDER IMAGES</em> (see <a href="http://www.w3.org/TR/css3-background/#border-images"
+              target="_blank">CSS
+              Backgrounds and Borders Module Level 3: Border Images</a>)</td>
         </tr>
         <tr>
           <td class="propertyname">-fx-border-image</td>
@@ -2558,6 +2617,7 @@
     </table>
     <br>
     <h4><a name="stackpane" id="stackpane">StackPane</a></h4>
+<p class="styleclass">Style class: empty by default</p>
     <table summary="property table" class="csspropertytable" cellpadding="2" cellspacing="1">
       <thead>
         <tr>
@@ -2582,6 +2642,7 @@
       </tbody>
     </table>
     <h4><a name="tilepane" id="tilepane">TilePane</a></h4>
+<p class="styleclass">Style class: empty by default</p>
     <table summary="property table" class="csspropertytable" cellpadding="2" cellspacing="1">
       <thead>
         <tr>
@@ -2656,6 +2717,7 @@
       </tbody>
     </table>
     <h4><a name="vbox" id="vbox">VBox</a></h4>
+<p class="styleclass">Style class: empty by default</p>
     <table summary="property table" class="csspropertytable" cellpadding="2" cellspacing="1">
       <thead>
         <tr>
@@ -2699,6 +2761,7 @@
       </tbody>
     </table>
     <h4><a name="shape" id="shape">Shape</a></h4>
+<p class="styleclass">Style class: empty by default</p>
     <table summary="property table" class="csspropertytable" cellpadding="2" cellspacing="1">
       <thead>
         <tr>
@@ -2776,30 +2839,39 @@
       </tbody>
     </table>
     <h4><a name="arc" id="arc">Arc</a></h4>
+<p class="styleclass">Style class: empty by default</p>
     <p>The Arc node has all the properties of <a href="#shape">Shape</a> and <a
         href="#node">Node</a>.</p>
     <h4><a name="circle" id="circle">Circle</a></h4>
+<p class="styleclass">Style class: empty by default</p>
     <p>The Circle node has all the properties of <a href="#shape">Shape</a> and
       <a href="#node">Node</a>.</p>
     <h4><a name="cubiccurve" id="cubiccurve">CubicCurve</a></h4>
+<p class="styleclass">Style class: empty by default</p>
     <p>The CubicCurve node has all the properties of <a href="#shape">Shape</a>
       and <a href="#node">Node</a>.</p>
     <h4><a name="ellipse" id="ellipse">Ellipse</a></h4>
+<p class="styleclass">Style class: empty by default</p>
     <p>The Ellipse node has all the properties of <a href="#shape">Shape</a>
       and <a href="#node">Node</a>.</p>
     <h4><a name="line" id="line">Line</a></h4>
+<p class="styleclass">Style class: empty by default</p>
     <p>The Line node has all the properties of <a href="#shape">Shape</a> and <a
         href="#node">Node</a>.</p>
     <h4><a name="path" id="path">Path</a></h4>
+<p class="styleclass">Style class: empty by default</p>
     <p>The Path node has all the properties of <a href="#shape">Shape</a> and <a
         href="#node">Node</a>.</p>
     <h4><a name="polygon" id="polygon">Polygon</a></h4>
+<p class="styleclass">Style class: empty by default</p>
     <p>The Polygon node has all the properties of <a href="#shape">Shape</a>
       and <a href="#node">Node</a>.</p>
     <h4><a name="quadcurve" id="quadcurve">QuadCurve</a></h4>
+<p class="styleclass">Style class: empty by default</p>
     <p>The QuadCurve node has all the properties of <a href="#shape">Shape</a>
       and <a href="#node">Node</a>.</p>
     <h4><a name="rectangle" id="rectangle">Rectangle</a></h4>
+<p class="styleclass">Style class: empty by default</p>
     <table summary="property table" class="csspropertytable" cellpadding="2" cellspacing="1">
       <thead>
         <tr>
@@ -2828,6 +2900,7 @@
       </tbody>
     </table>
     <h4><a name="svgpath" id="svgpath">SVGPath</a></h4>
+<p class="styleclass">Style class: empty by default</p>
     <p>The SVGPath node has all the properties of <a href="#shape">Shape</a>
       and <a href="#node">Node</a>.</p>
     <table summary="property table" class="package" width="100%">
@@ -2838,6 +2911,7 @@
       </tbody>
     </table>
     <h4><a name="text" id="text">Text</a></h4>
+<p class="styleclass">Style class: empty by default</p>
     <table summary="property table" class="csspropertytable" cellpadding="2" cellspacing="1">
       <thead>
         <tr>
@@ -2891,8 +2965,7 @@
       </tbody>
     </table>
     <!-- 
-        --        --        -- Controls        --
-        -->
+        --        --        -- Controls        --        -->
     <table summary="property table" class="package" width="100%">
       <tbody>
         <tr>
@@ -2939,8 +3012,7 @@
             otherwise consumed</td>
         </tr>
         <tr>
-          <td colspan="2" class="parents">Also has all pseudo-classes of
-            <a href="#buttonbase">ButtonBase</a></td>
+          <td colspan="2" class="parents">Also has all pseudo-classes of <a href="#buttonbase">ButtonBase</a></td>
         </tr>
       </tbody>
     </table>
@@ -3015,6 +3087,10 @@
         </tr>
       </tbody>
     </table>
+    <h4>Substructure</h4>
+    <ul>
+      <li>text - a Labeled</li>
+    </ul>
     <h4><a name="checkbox" id="checkbox">CheckBox</a></h4>
     <p class="styleclass">Style class: check-box</p>
     <p>The CheckBox control has all the properties of <a href="#buttonbase">ButtonBase</a></p>
@@ -3041,16 +3117,15 @@
           <td>applies when the <strong>indeterminate </strong>variable is true</td>
         </tr>
         <tr>
-          <td colspan="2" class="parents">Also has all pseudo-classes of
-            <a href="#buttonbase">ButtonBase</a></td>
+          <td colspan="2" class="parents">Also has all pseudo-classes of <a href="#buttonbase">ButtonBase</a></td>
         </tr>
       </tbody>
     </table>
     <h4>Substructure</h4>
     <ul>
-      <li>box — a StackPane</li>
+      <li>box &mdash; a StackPane</li>
       <ul>
-        <li>mark — a StackPane</li>
+        <li>mark &mdash; a StackPane</li>
       </ul>
     </ul>
     <h4><a name="checkmenuitem" id="checkmenuitem">CheckMenuItem</a></h4>
@@ -3071,15 +3146,67 @@
     </table>
     <h4><a name="choicebox" id="choicebox">ChoiceBox</a></h4>
     <p class="styleclass">Style class: choice-box</p>
-    <p>The ChoiceBox control has all the properties and pseudo-classes of <a href="#labeled">Control</a></p>
+    <p>The ChoiceBox control has all the properties and pseudo-classes of <a href="#control">Control</a></p>
     <h4>Substructure</h4>
     <ul>
-      <li>open-button — Region
+      <li>open-button &mdash; Region
         <ul>
-          <li>arrow — Region </li>
+          <li>arrow &mdash; Region </li>
         </ul>
       </li>
     </ul>
+    <h4><a name="combobox" id="combobox">ComboBox</a></h4>
+    <p class="styleclass">Style class: combo-box</p>
+    <p>The ComboBox control has all the properties and pseudo-classes of <a href="#comboboxbase">ComboBoxBase</a></p>
+    <h4>Substructure</h4>
+    <ul>
+      <li>list-cell - a ListCell instance used to show the selection in the
+        button area of a non-editable ComboBox</li>
+      <li>text-input &mdash; a TextField instance used to show the selection and
+        allow input in the button area of an editable ComboBox</li>
+      <li>combo-box-popup - a PopupControl that is displayed when the button is
+        pressed
+        <ul>
+          <li>list-view - a ListView</li>
+          <ul>
+            <li>list-cell - a ListCell</li>
+          </ul>
+        </ul>
+      </li>
+    </ul>
+    <h4><a name="comboboxbase" id="comboboxbase">ComboBoxBase</a></h4>
+    <p class="styleclass">Style class: combo-box-base</p>
+    <p>The ComboBoxBase control has all the properties of <a href="#control">Control</a></p>
+    <h4>Substructure</h4>
+    <ul>
+      <li>arrow-button &mdash; a StackPane
+        <ul>
+          <li>arrow &mdash; a StackPane </li>
+        </ul>
+      </li>
+    </ul>
+    <table summary="property table" class="csspropertytable" cellpadding="2" cellspacing="1">
+      <thead>
+        <tr>
+          <th class="propertyname">CSS Pseudo-class</th>
+          <th>Comments</th>
+        </tr>
+      </thead>
+      <tbody>
+        <tr>
+          <td class="propertyname">editable</td>
+          <td>applies when the <strong>editable </strong>variable is true</td>
+        </tr>
+        <tr>
+          <td class="propertyname">showing</td>
+          <td>applies when the <strong>showing </strong>variable is true</td>
+        </tr>
+        <tr>
+          <td class="propertyname">armed</td>
+          <td>applies when the <strong>armed </strong>variable is true</td>
+        </tr>
+      </tbody>
+    </table>
     <h4><a name="control" id="control">Control</a></h4>
     <p>The Control class has all the properties of <a href="#parent">Parent</a></p>
     <table summary="property table" class="csspropertytable" cellpadding="2" cellspacing="1">
@@ -3117,14 +3244,13 @@
           <td>applies when the <strong>visited </strong>variable is true</td>
         </tr>
         <tr>
-          <td colspan="2" class="parents">Also has all pseudo-classes of
-            <a href="#buttonbase">ButtonBase</a></td>
+          <td colspan="2" class="parents">Also has all pseudo-classes of <a href="#buttonbase">ButtonBase</a></td>
         </tr>
       </tbody>
     </table>
     <h4>Substructure</h4>
     <ul>
-      <li>label — Label</li>
+      <li>label &mdash; Label</li>
     </ul>
     <h4><a name="indexedcell" id="indexedcell">IndexedCell</a></h4>
     <p class="styleclass">Style class: indexed-cell</p>
@@ -3368,6 +3494,7 @@
     <h4><a name="passwordfield" id="passwordfield">PasswordField</a></h4>
     <p class="styleclass">Style class: password-field</p>
     <p>The PasswordField control has all the properties of <a href="#textfield">TextField</a></p>
+    <h4><a name="popupcontrol" id="popupcontrol">PopupControl</a></h4>
     <h4><a name="progressbar" id="progressbar">ProgressBar</a></h4>
     <p class="styleclass">Style class: progress-bar</p>
     <p>The ProgressBar control has all the properties of and pseudo-class state
@@ -3376,7 +3503,7 @@
     <ul>
       <li>track - StackPane</li>
       <ul>
-        <li>bar — Region</li>
+        <li>bar &mdash; Region</li>
       </ul>
     </ul>
     <h4><a name="progressindicator" id="progressindicator">ProgressIndicator</a></h4>
@@ -3392,6 +3519,29 @@
       </thead>
       <tbody>
         <tr>
+          <td class="propertyname">-fx-skin</td>
+          <td class="value"><a href="#string" class="typelink">&lt;the fully
+              qualified class name of the Skin&gt;</a></td>
+          <td>null</td>
+          <td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td>The PopupControl is a PopupWindow and does not have any other CSS
+            properties</td>
+        </tr>
+      </tbody>
+    </table>
+    <table summary="property table" class="csspropertytable" cellpadding="2" cellspacing="1">
+      <thead>
+        <tr>
+          <th class="propertyname">CSS Property</th>
+          <th class="value">Values</th>
+          <th>Default</th>
+          <th>Comments</th>
+        </tr>
+      </thead>
+      <tbody>
+        <tr>
           <td class="propertyname">-fx-progress-color</td>
           <td class="value"><a href="#typepaint" class="typelink">&lt;paint&gt;</a></td>
           <td>dodgerblue</td>
@@ -3426,7 +3576,7 @@
     </table>
     <h4>Substructure</h4>
     <ul>
-      <li>indicator — StackPane</li>
+      <li>indicator &mdash; StackPane</li>
       <li>progress - StackPane</li>
       <li>percentage - Text</li>
       <li>tick - StackPane</li>
@@ -3436,12 +3586,12 @@
     <p>The RadioButton control has all the properties of <a href="#togglebutton">ToggleButton</a></p>
     <h4>Substructure</h4>
     <ul>
-      <li>radio — Region
+      <li>radio &mdash; Region
         <ul>
-          <li>dot — Region</li>
+          <li>dot &mdash; Region</li>
         </ul>
       </li>
-      <li>label — Label</li>
+      <li>label &mdash; Label</li>
     </ul>
     <h4><a name="radiomenuitem" id="radiomenuitem">RadioMenuItem</a></h4>
     <h4>Pseudo-classes</h4>
@@ -3515,15 +3665,15 @@
     </table>
     <h4>Substructure</h4>
     <ul>
-      <li>decrement-button — StackPane</li>
+      <li>decrement-button &mdash; StackPane</li>
       <ul>
-        <li>decrement-arrow — StackPane </li>
+        <li>decrement-arrow &mdash; StackPane </li>
       </ul>
-      <li>track — StackPane</li>
-      <li>thumb — StackPane</li>
-      <li>increment-button — StackPane</li>
+      <li>track &mdash; StackPane</li>
+      <li>thumb &mdash; StackPane</li>
+      <li>increment-button &mdash; StackPane</li>
       <ul>
-        <li>increment-arrow — StackPane</li>
+        <li>increment-arrow &mdash; StackPane</li>
       </ul>
     </ul>
     <h4><a name="scrollpane" id="scrollpane">ScrollPane</a></h4>
@@ -3601,8 +3751,8 @@
     </table>
     <h4>Substructure</h4>
     <ul>
-      <li>scroll-bar:vertical — ScrollBar</li>
-      <li>scroll-bar:horizontall — ScrollBar</li>
+      <li>scroll-bar:vertical &mdash; ScrollBar</li>
+      <li>scroll-bar:horizontall &mdash; ScrollBar</li>
       <li>corner - StackPane</li>
     </ul>
     <h4><a name="separator" id="separator">Separator</a></h4>
@@ -3664,7 +3814,7 @@
     </table>
     <h4>Substructure</h4>
     <ul>
-      <li>line — Region</li>
+      <li>line &mdash; Region</li>
     </ul>
     <h4><a name="slider" id="slider">Slider</a></h4>
     <p class="styleclass">Style class: slider</p>
@@ -3755,9 +3905,9 @@
     </table>
     <h4>Substructure</h4>
     <ul>
-      <li>axis — NumberAxis</li>
-      <li>track — Region</li>
-      <li>thumb — Region</li>
+      <li>axis &mdash; NumberAxis</li>
+      <li>track &mdash; Region</li>
+      <li>thumb &mdash; Region</li>
     </ul>
     <h4><a name="splitmenubutton" id="splitmenubutton">SplitMenuButton</a></h4>
     <p class="styleclass">Style class: split-menu-button</p>
@@ -3808,10 +3958,10 @@
     </table>
     <h4>Substructure</h4>
     <ul>
-      <li>split-pane-divider — StackPane</li>
+      <li>split-pane-divider &mdash; StackPane</li>
       <ul>
-        <li>vertical-grabber — StackPane</li>
-        <li>horizontal-grabber — StackPane</li>
+        <li>vertical-grabber &mdash; StackPane</li>
+        <li>horizontal-grabber &mdash; StackPane</li>
       </ul>
     </ul>
     <h4><a name="tabpane" id="tabpane">TabPane</a></h4>
@@ -3888,7 +4038,7 @@
     </table>
     <h4>Substructure</h4>
     <ul>
-      <li>tab-header-area — StackPane</li>
+      <li>tab-header-area &mdash; StackPane</li>
       <ul>
         <li>headers-region - StackPane</li>
         <li>tab-header-background - StackPane</li>
@@ -3905,7 +4055,7 @@
           <li>tab-close-button - StackPane</li>
         </ul>
       </ul>
-      <li>tab-content-area — StackPane</li>
+      <li>tab-content-area &mdash; StackPane</li>
     </ul>
     <h4><a name="tableview" id="tableview">TableView</a></h4>
     <p class="styleclass">Style class: table-view</p>
@@ -3970,8 +4120,7 @@
     </ul>
     <h4><a name="textarea" id="textarea">TextArea</a></h4>
     <p class="styleclass">Style class: text-area</p>
-    <p>TextArea has all the properties and pseudo-class state of
-      <a href="#textinputcontrol">TextInputControl</a></p>
+    <p>TextArea has all the properties and pseudo-class state of <a href="#textinputcontrol">TextInputControl</a></p>
     <h4>Substructure</h4>
     <ul>
       <li>scroll-pane - ScrollPane</li>
@@ -4071,8 +4220,7 @@
           <td>&nbsp;</td>
         </tr>
         <tr>
-          <td colspan="4" class="parents">Also has all properties of
-            <a href="#textinputcontrol">TextInputControl</a></td>
+          <td colspan="4" class="parents">Also has all properties of <a href="#textinputcontrol">TextInputControl</a></td>
         </tr>
       </tbody>
     </table>
@@ -4130,16 +4278,16 @@
     </table>
     <h4>Substructure</h4>
     <ul>
-      <li>title — HBox</li>
+      <li>title &mdash; HBox</li>
       <ul>
-        <li>text — Label/li&gt; </li>
-        <li>arrow-button — StackPane/li&gt;
+        <li>text &mdash; Label/li&gt; </li>
+        <li>arrow-button &mdash; StackPane/li&gt;
           <ul>
-            <li>arrow — StackPane</li>
+            <li>arrow &mdash; StackPane</li>
           </ul>
         </li>
       </ul>
-      <li>content — StackPane/li&gt; </li>
+      <li>content &mdash; StackPane/li&gt; </li>
     </ul>
     <h4><a name="togglebutton" id="togglebutton">ToggleButton</a></h4>
     <p class="styleclass">Style class: toggle-button</p>
@@ -4158,8 +4306,7 @@
           <td>applies if this ToggleButton is selected</td>
         </tr>
         <tr>
-          <td colspan="2" class="parents">Also has all pseudo-classes of
-            <a href="#buttonbase">ButtonBase</a></td>
+          <td colspan="2" class="parents">Also has all pseudo-classes of <a href="#buttonbase">ButtonBase</a></td>
         </tr>
       </tbody>
     </table>
@@ -4276,8 +4423,8 @@
     </table>
     <h4>Substructure</h4>
     <ul>
-      <li>label — Label</li>
-      <li>page-corner — StackPane</li>
+      <li>label &mdash; Label</li>
+      <li>page-corner &mdash; StackPane</li>
     </ul>
     <h4><a name="treecell" id="treecell">TreeCell</a></h4>
     <p class="styleclass">Style class: tree-cell</p>
@@ -4321,8 +4468,7 @@
           <td>applies if this cell is not expanded</td>
         </tr>
         <tr>
-          <td colspan="2" class="parents">Also has all pseudo-classes of
-            <a href="#indexedcell">IndexedCell</a></td>
+          <td colspan="2" class="parents">Also has all pseudo-classes of <a href="#indexedcell">IndexedCell</a></td>
         </tr>
       </tbody>
     </table>
@@ -4330,8 +4476,7 @@
     <p class="styleclass">Style class: tree-view</p>
     <p>TreeView has all the properites and pseudo-class state of <a href="#control">Control</a></p>
     <!-- 
-        --        --        -- Charts        --
-        -->
+        --        --        -- Charts        --        -->
     <h2><a name="charts" id="charts">Charts</a></h2>
     <table summary="property table" class="package" width="100%">
       <tbody>
@@ -4340,7 +4485,7 @@
         </tr>
       </tbody>
     </table>
-    <h4><a name="AreaChart" id="AreaChart">AreaChart</a></h4>
+    <h4><a name="areachart" id="areachart">AreaChart</a></h4>
     <table summary="property table" class="csspropertytable" cellpadding="2" cellspacing="1">
       <thead>
         <tr>
@@ -4354,29 +4499,29 @@
           <td class="propertyname">"chart-series-area-line series&lt;i&gt;
             default-color&lt;j&gt;"</td>
           <td>Where &lt;i&gt; is the index of the series and &lt;j&gt; is the
-            series’ color index</td>
+            series&rsquo; color index</td>
           <td><a href="#node" class="typelink">Node</a> </td>
         </tr>
         <tr>
           <td class="propertyname">"chart-series-area-fill series&lt;i&gt;
             default-color&lt;j&gt;"</td>
           <td>Where &lt;i&gt; is the index of the series and &lt;j&gt; is the
-            series’ color index</td>
+            series&rsquo; color index</td>
           <td><a href="#path" class="typelink">Path</a> </td>
         </tr>
         <tr>
           <td class="propertyname">"chart-area-symbol series&lt;i&gt;
             data&lt;j&gt; default-color&lt;k&gt;"</td>
           <td>Where &lt;i&gt; is the index of the series, &lt;j&gt; is the index
-            of the data within the series, and &lt;k&gt; is the series’ color
-            index</td>
+            of the data within the series, and &lt;k&gt; is the series&rsquo;
+            color index</td>
           <td><a href="#path" class="typelink">Path</a> </td>
         </tr>
         <tr>
           <td class="propertyname">"chart-area-symbol series&lt;i&gt;
             area-legend-symbol default-color&lt;j&gt;"</td>
           <td>Where &lt;i&gt; is the index of the series and &lt;j&gt; is the
-            series’ color index</td>
+            series&rsquo; color index</td>
           <td><a href="#LegendItem" class="typelink">LegendItem</a> </td>
         </tr>
       </tbody>
@@ -4398,7 +4543,7 @@
         </tbody>
       </table>
     </p>
-    <h4><a name="BarChart" id="BarChart">BarChart</a></h4>
+    <h4><a name="barchart" id="barchart">BarChart</a></h4>
     <table summary="property table" class="csspropertytable" cellpadding="2" cellspacing="1">
       <thead>
         <tr>
@@ -4417,16 +4562,16 @@
           <td class="propertyname">"chart-bar series&lt;i&gt; data&lt;j&gt;
             default-color&lt;k&gt;"</td>
           <td>Where &lt;i&gt; is the index of the series, &lt;j&gt; is the index
-            of the data within the series, and &lt;k&gt; is the series’ color
-            index. If the data value is negative, the "negative" style class is
-            added.</td>
+            of the data within the series, and &lt;k&gt; is the series&rsquo;
+            color index. If the data value is negative, the "negative" style
+            class is added.</td>
           <td><a href="#node" class="typelink">Node</a> </td>
         </tr>
         <tr>
           <td class="propertyname">"chart-bar series&lt;i&gt; bar-legend-symbol
             default-color&lt;j&gt;"</td>
           <td>Where &lt;i&gt; is the index of the series and &lt;j&gt; is the
-            series’ color index</td>
+            series&rsquo; color index</td>
           <td><a href="#LegendItem" class="typelink">LegendItem</a> </td>
         </tr>
       </tbody>
@@ -4460,7 +4605,7 @@
         </tbody>
       </table>
     </p>
-    <h4><a name="BubbleChart" id="BubbleChart">BubbleChart</a></h4>
+    <h4><a name="bubblechart" id="bubblechart">BubbleChart</a></h4>
     <table summary="property table" class="csspropertytable" cellpadding="2" cellspacing="1">
       <thead>
         <tr>
@@ -4474,15 +4619,15 @@
           <td class="propertyname">"chart-bubble series&lt;i&gt; data&lt;j&gt;
             default-color&lt;k&gt;"</td>
           <td>Where &lt;i&gt; is the index of the series, &lt;j&gt; is the index
-            of the data within the series, and &lt;k&gt; is the series’ color
-            index</td>
+            of the data within the series, and &lt;k&gt; is the series&rsquo;
+            color index</td>
           <td><a href="#node" class="typelink">Node</a> </td>
         </tr>
         <tr>
           <td class="propertyname">"chart-bubble series&lt;i&gt;
             bubble-legend-symbol default-color&lt;j&gt;"</td>
           <td>Where &lt;i&gt; is the index of the series and &lt;j&gt; is the
-            series’ color index</td>
+            series&rsquo; color index</td>
           <td><a href="#LegendItem" class="typelink">LegendItem</a> </td>
         </tr>
       </tbody>
@@ -4504,7 +4649,48 @@
         </tbody>
       </table>
     </p>
-    <h4><a name="LineChart" id="LineChart">LineChart</a></h4>
+    <h4><a name="chart" id="chart">Chart</a></h4>
+    <table summary="property table" class="csspropertytable" cellpadding="2" cellspacing="1">
+<p class="styleclass">Style class: chart</p>
+      <table summary="property table" class="csspropertytable" cellpadding="2" cellspacing="1">
+        <thead>
+          <tr>
+            <th class="propertyname">CSS Property</th>
+            <th class="value">Values</th>
+            <th>Default</th>
+            <th>Comments</th>
+          </tr>
+        </thead>
+        <tbody>
+          <tr>
+            <td class="propertyname">-fx-legend-side</td>
+            <td class="value">Side</td>
+            <td>bottom</td>
+            <td>&nbsp;</td>
+          </tr>
+          <tr>
+            <td class="propertyname">-fx-legend-visible</td>
+            <td class="value"><a href="#typeboolean" class="typelink">&lt;boolean&gt;</a></td>
+            <td>true</td>
+            <td>&nbsp;</td>
+          </tr>
+          <tr>
+            <td class="propertyname">-fx-title-side</td>
+            <td class="value">Side</td>
+            <td>top</td>
+            <td>&nbsp;</td>
+          </tr>
+          <tr>
+            <td colspan="4" class="parents">Has all properties of <a href="#region">Region</a></td>
+          </tr>
+        </tbody>
+      </table>
+    <h4>Substructure</h4>
+    <ul>
+      <li>chart-title &mdash; Label</li>
+      <li>chart-content &mdash; Pane</li>
+    </ul>
+    <h4><a name="linechart" id="linechart">LineChart</a></h4>
     <table summary="property table" class="csspropertytable" cellpadding="2" cellspacing="1">
       <thead>
         <tr>
@@ -4518,22 +4704,22 @@
           <td class="propertyname">"chart-series-line series&lt;i&gt;
             default-color&lt;j&gt;"</td>
           <td>Where &lt;i&gt; is the index of the series and &lt;j&gt; is the
-            series’ color index</td>
+            series&rsquo; color index</td>
           <td><a href="#node" class="typelink">Node</a> </td>
         </tr>
         <tr>
           <td class="propertyname">"chart-line-symbol series&lt;i&gt;
             data&lt;j&gt; default-color&lt;k&gt;"</td>
           <td>Where &lt;i&gt; is the index of the series, &lt;j&gt; is the index
-            of the data within the series, and &lt;k&gt; is the series’ color
-            index</td>
+            of the data within the series, and &lt;k&gt; is the series&rsquo;
+            color index</td>
           <td><a href="#node" class="typelink">Node</a> </td>
         </tr>
         <tr>
           <td class="propertyname">"chart-line-symblol series&lt;i&gt;
             default-color&lt;j&gt;"</td>
           <td>Where &lt;i&gt; is the index of the series and &lt;j&gt; is the
-            series’ color index</td>
+            series&rsquo; color index</td>
           <td><a href="#LegendItem" class="typelink">LegendItem</a> </td>
         </tr>
       </tbody>
@@ -4561,7 +4747,7 @@
         </tbody>
       </table>
     </p>
-    <h4><a name="ScatterChart" id="ScatterChart">ScatterChart</a></h4>
+    <h4><a name="scatterchart" id="scatterchart">ScatterChart</a></h4>
     <table summary="property table" class="csspropertytable" cellpadding="2" cellspacing="1">
       <thead>
         <tr>
@@ -4575,8 +4761,8 @@
           <td class="propertyname">"chart-symbol series&lt;i&gt; data&lt;j&gt;
             default-color&lt;k&gt;"</td>
           <td>Where &lt;i&gt; is the index of the series, &lt;j&gt; is the index
-            of the data within the series, and &lt;k&gt; is the series’ color
-            index</td>
+            of the data within the series, and &lt;k&gt; is the series&rsquo;
+            color index</td>
           <td><a href="#node" class="typelink">Node</a> </td>
         </tr>
         <tr>
@@ -4604,7 +4790,7 @@
         </tbody>
       </table>
     </p>
-    <h4><a name="PieChart" id="PieChart">PieChart</a></h4>
+    <h4><a name="piechart" id="piechart">PieChart</a></h4>
     <table summary="property table" class="csspropertytable" cellpadding="2" cellspacing="1">
       <thead>
         <tr>
@@ -4618,8 +4804,8 @@
           <td class="propertyname">"chart-pie data&lt;i&gt;
             default-color&lt;j&gt;"</td>
           <td>Where &lt;i&gt; is the index of the data and &lt;j&gt; is the
-            series’ color index. If the data value is negative, the "negative"
-            style class is added.</td>
+            series&rsquo; color index. If the data value is negative, the
+            "negative" style class is added.</td>
           <td><a href="#node" class="typelink">Node</a> </td>
         </tr>
         <tr>
@@ -4634,7 +4820,7 @@
         </tr>
         <tr>
           <td class="propertyname">"pie-legend-symbol &lt;<i>i<sup>th</sup></i>
-            data item’s style class&gt;"</td>
+            data item&rsquo;s style class&gt;"</td>
           <td>Each item in the legend has the style class "pie-legend-symbol"
             plus the style class of the corresponding data item</td>
           <td><a href="#LegendItem" class="typelink">LegendItem</a> </td>
@@ -4682,8 +4868,8 @@
         </tbody>
       </table>
     </p>
-    <h4><a name="Axis" id="Axis">Axis</a></h4>
-    <p class="styleclass">Style class: axis</p>
+    <h4><a name="xychart" id="xychart">XYChart</a></h4>
+    <p class="styleclass">Style class: set by sub-type</p>
     <table summary="property table" class="csspropertytable" cellpadding="2" cellspacing="1">
       <thead>
         <tr>
@@ -4695,6 +4881,70 @@
       </thead>
       <tbody>
         <tr>
+          <td class="propertyname">-fx-alternative-column-fill-visible</td>
+          <td class="value"><a href="#typeboolean" class="typelink">&lt;boolean&gt;</a></td>
+          <td>true</td>
+          <td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td class="propertyname">-fx-alternative-row-fill-visible</td>
+          <td class="value"><a href="#typeboolean" class="typelink">&lt;boolean&gt;</a></td>
+          <td>true</td>
+          <td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td class="propertyname">-fx-horizontal-grid-lines-visible</td>
+          <td class="value"><a href="#typeboolean" class="typelink">&lt;boolean&gt;</a></td>
+          <td>true</td>
+          <td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td class="propertyname">-fx-horizontal-zero-line-visible</td>
+          <td class="value"><a href="#typeboolean" class="typelink">&lt;boolean&gt;</a></td>
+          <td>true</td>
+          <td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td class="propertyname">-fx-vertical-grid-lines-visible</td>
+          <td class="value"><a href="#typeboolean" class="typelink">&lt;boolean&gt;</a></td>
+          <td>true</td>
+          <td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td class="propertyname">-fx-vertical-zero-line-visible</td>
+          <td class="value"><a href="#typeboolean" class="typelink">&lt;boolean&gt;</a></td>
+          <td>true</td>
+          <td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td colspan="4" class="parents">Has all properties of <a href="#chart">chart</a></td>
+        </tr>
+      </tbody>
+    </table>
+    <h4>Substructure</h4>
+    <ul>
+        <li>plot-content &mdash; Group</li>
+        <li>chart-plot-background &mdash; Region</li>
+        <li>chart-alternative-column-fill &mdash; Path</li>
+        <li>chart-alternative-row-fill &mdash; Path</li>
+        <li>chart-vertical-grid-lines &mdash; Path</li>
+        <li>chart-horizontal-grid-lines &mdash; Path</li>
+        <li>chart-vertical-zero-line &mdash; Line</li>
+        <li>chart-horizontal-zero-line &mdash; Line</li>
+    </ul>
+    <h4><a name="axis" id="axis">Axis</a></h4>
+    <p class="styleclass">Style class: axis</p>
+    <table summary="property table" class="csspropertytable" cellpadding="2" cellspacing="1">
+      <thead>
+        <tr>
+          <th class="propertyname">CSS Property</th>
+          <th class="value">Values</th>
+          <th>Default</th>
+          <th>Comments</th>
+        </tr>
+      </thead>
+      <tbody>
+        <tr>
           <td class="propertyname">-fx-side</td>
           <td class="value">Side</td>
           <td>null</td>
@@ -4743,11 +4993,11 @@
     </table>
     <h4>Substructure</h4>
     <ul>
-      <li>axis-label — Text</li>
-      <li>axis-tick-mark — Path</li>
-      <li>tick-mark — Text</li>
+      <li>axis-label &mdash; Text</li>
+      <li>axis-tick-mark &mdash; Path</li>
+      <li>tick-mark &mdash; Text</li>
     </ul>
-    <h4><a name="ValueAxis" id="ValueAxis">ValueAxis</a></h4>
+    <h4><a name="valueaxis" id="valueaxis">ValueAxis</a></h4>
     <p class="styleclass">Style class: axis</p>
     <table summary="property table" class="csspropertytable" cellpadding="2" cellspacing="1">
       <thead>
@@ -4784,9 +5034,9 @@
     </table>
     <h4>Substructure</h4>
     <ul>
-      <li>axis-minor-tick-mark — Path</li>
+      <li>axis-minor-tick-mark &mdash; Path</li>
     </ul>
-    <h4><a name="NumberAxis" id="NumberAxis">ValueAxis</a></h4>
+    <h4><a name="numberaxis" id="numberaxis">NumberAxis</a></h4>
     <p class="styleclass">Style class: axis</p>
     <table summary="property table" class="csspropertytable" cellpadding="2" cellspacing="1">
       <thead>
@@ -4809,7 +5059,7 @@
         </tr>
       </tbody>
     </table>
-    <h4><a name="CategoyAxis" id="CategoryAxis">CategoryAxis</a></h4>
+    <h4><a name="categoyaxis" id="categoryaxis">CategoryAxis</a></h4>
     <p class="styleclass">Style class: axis</p>
     <table summary="property table" class="csspropertytable" cellpadding="2" cellspacing="1">
       <thead>
@@ -4845,7 +5095,7 @@
         </tr>
       </tbody>
     </table>
-    <h4><a name="Legend" id="Legend">Legend</a></h4>
+    <h4><a name="legend" id="legend">Legend</a></h4>
     <p class="styleclass">Style class: chart-legend</p>
     <table summary="property table" class="csspropertytable" cellpadding="2" cellspacing="1">
       <thead>
@@ -4883,5 +5133,5 @@
         rights reserved. Use is subject to <a href="http://download.oracle.com/javafx/2.0/api/license.html">license
           terms</a>. </small> </p>
     <br>
- </body>
+  </body>
 </html>
--- a/javafx-ui-common/src/javafx/scene/layout/TilePane.java	Tue Mar 20 11:04:48 2012 -0700
+++ b/javafx-ui-common/src/javafx/scene/layout/TilePane.java	Tue Mar 20 18:49:15 2012 -0700
@@ -984,13 +984,13 @@
 
             @Override
             public boolean isSettable(TilePane node) {
-                return node.prefRows == null ||
-                        !node.prefRows.isBound();
+                return node.prefTileWidth == null ||
+                        !node.prefTileWidth.isBound();
             }
 
             @Override
             public WritableValue<Number> getWritableValue(TilePane node) {
-                return node.prefRowsProperty();
+                return node.prefTileWidthProperty();
             }
         };
 
--- a/javafx-ui-common/src/javafx/stage/Stage.java	Tue Mar 20 11:04:48 2012 -0700
+++ b/javafx-ui-common/src/javafx/stage/Stage.java	Tue Mar 20 18:49:15 2012 -0700
@@ -59,7 +59,12 @@
  * Stage objects must be constructed and modified on the
  * JavaFX Application Thread.
  * </p>
- *
+ * <p>
+ * Many of the {@code Stage} properties are read only because they can
+ * be changed externally by the underlying platform and therefore must
+ * not be bindable.
+ * </p>
+ * 
  * <p><b>Style</b></p>
  * <p>
  * A stage has one of the following styles:
@@ -73,7 +78,7 @@
  * <li>{@link StageStyle#UTILITY} - a stage with a solid white background and
  * minimal platform decorations.</li>
  * </ul>
- * The style must be initialized before the stage is made visible.
+ * <p>The style must be initialized before the stage is made visible.</p>
  * 
  * <p><b>Owner</b></p>
  * <p>
@@ -97,19 +102,14 @@
  * from its child hierarchy.</li>
  * </ul> 
  * 
- * When a window is blocked by a modal stage, it receives no input events, but 
- * continues to animate and render normally. Note that showing a modal stage does
- * not block the calling thread. The {@link #show} method returns immediately 
- * regardless of the modality.
- * The modality must be initialized before the stage is made visible. 
- * 
- * <p>
- * Many of the {@code Stage} properties are read only because they can
- * be changed externally by the underlying platform and therefore must
- * not be bindable.
- * </p>
+ * <p>When a window is blocked by a modal stage its Z-order relative to its ancestors
+ * is preserved, and it receives no input events and no window activation events,
+ * but continues to animate and render normally.
+ * Note that showing a modal stage does not block the calling thread. The
+ * {@link #show} method returns immediately regardless of the modality.
+ * The modality must be initialized before the stage is made visible.</p> 
  *
- * <p>Example:</p>
+ * <p><b>Example:</b></p>
  *
  *
 <pre><code>
--- a/javafx-ui-common/test/unit/com/sun/javafx/css/HonorDeveloperSettingsTest.css	Tue Mar 20 11:04:48 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-/*
- * We specify from CSS that this rectangle should have an opacity value of
- * .76
- */
-#rectangle {
-    -fx-opacity: .76;
-    -fx-cursor: HAND;
-    -fx-effect: dropshadow( two-pass-box , rgba(0,0,0,0.4) , 15, 0.0 , 0 , 6 );
-}
-
-#text {
-    -fx-font: 32pt "Amble Cn";
-}
\ No newline at end of file
--- a/javafx-ui-common/test/unit/com/sun/javafx/css/HonorDeveloperSettingsTest.java	Tue Mar 20 11:04:48 2012 -0700
+++ b/javafx-ui-common/test/unit/com/sun/javafx/css/HonorDeveloperSettingsTest.java	Tue Mar 20 18:49:15 2012 -0700
@@ -24,15 +24,19 @@
  */
 package com.sun.javafx.css;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotSame;
-import static org.junit.Assert.assertSame;
+import com.sun.javafx.css.parser.CSSParser;
+import com.sun.javafx.tk.Toolkit;
+import java.io.IOException;
+import java.net.URL;
+import static org.junit.Assert.*;
 import javafx.scene.Cursor;
 import javafx.scene.Group;
 import javafx.scene.Scene;
+import javafx.scene.paint.Color;
 import javafx.scene.shape.Rectangle;
 import javafx.scene.text.Font;
 import javafx.scene.text.Text;
+import javafx.stage.Stage;
 import javafx.stage.Window;
 
 import org.junit.Before;
@@ -69,18 +73,22 @@
         Group group = new Group();
         group.getChildren().addAll(rect, text);
 
-        scene = new Scene(group) {
+        scene = new Scene(group);/* {
             TestWindow window;
             {
                 window = new TestWindow();
                 window.setScene(HonorDeveloperSettingsTest.this.scene);
                 impl_setWindow(window);
             }
-        };
-        //scene.getStylesheets().add("/com/sun/javafx/css/HonorDeveloperSettingsTest.css");
+        };*/
+        
         System.setProperty("binary.css", "false");
-        String url = getClass().getResource("HonorDeveloperSettingsTest.css").toExternalForm();
+        String url = getClass().getResource("HonorDeveloperSettingsTest_UA.css").toExternalForm();
         StyleManager.getInstance().setDefaultUserAgentStylesheet(url);
+        
+        Stage stage = new Stage();
+        stage.setScene(scene);
+        stage.show();
     }
 
     @Test
@@ -225,4 +233,31 @@
         assertSame(f, text.getFont());
     }
     
+    @Test
+    public void testUseInheritedFontSizeFromStylesheetForEmSize() {
+        
+        String url = getClass().getResource("HonorDeveloperSettingsTest_AUTHOR.css").toExternalForm();
+        scene.getStylesheets().add(url);
+        Toolkit.getToolkit().firePulse();
+        assertEquals(20, rect.getStrokeWidth(), 0.00001);
+        
+    }
+    
+    @Test
+    public void testInhertWithNoStyleDoesNotOverrideUserSetValue() {
+        Font font = Font.font("Amble", 14);
+        text.setFont(font);
+        
+        String url = getClass().getResource("HonorDeveloperSettingsTest_AUTHOR.css").toExternalForm();
+        scene.getStylesheets().add(url);
+           
+        Toolkit.getToolkit().firePulse();
+        //
+        // Stroke width is set to 1em in the author stylesheet. If 
+        // RT-20145 is not working, then the code will pick up the 20px
+        // font size.
+        //
+        assertEquals(14, text.getStrokeWidth(), 0.00001);
+        
+    }
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/javafx-ui-common/test/unit/com/sun/javafx/css/HonorDeveloperSettingsTest_AUTHOR.css	Tue Mar 20 18:49:15 2012 -0700
@@ -0,0 +1,11 @@
+
+.root { -fx-font: 20 Amble; }
+
+/* 
+ * setting stroke width to 1em will cause CSS to lookup the
+ * inherited font. 
+ */
+#text { -fx-stroke: red; -fx-stroke-width: 1em; }
+#rectangle { -fx-stroke: red; -fx-stroke-width: 1em; }
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/javafx-ui-common/test/unit/com/sun/javafx/css/HonorDeveloperSettingsTest_UA.css	Tue Mar 20 18:49:15 2012 -0700
@@ -0,0 +1,13 @@
+/*
+ * We specify from CSS that this rectangle should have an opacity value of
+ * .76
+ */
+#rectangle {
+    -fx-opacity: .76;
+    -fx-cursor: HAND;
+    -fx-effect: dropshadow( two-pass-box , rgba(0,0,0,0.4) , 15, 0.0 , 0 , 6 );
+}
+
+#text {
+    -fx-font: 32pt "Amble Cn";
+}
\ No newline at end of file
--- a/javafx-ui-common/test/unit/com/sun/javafx/css/StylesheetTest.java	Tue Mar 20 11:04:48 2012 -0700
+++ b/javafx-ui-common/test/unit/com/sun/javafx/css/StylesheetTest.java	Tue Mar 20 18:49:15 2012 -0700
@@ -37,7 +37,7 @@
     URL testURL = null;
     
     public StylesheetTest() {
-        testURL = getClass().getResource("HonorDeveloperSettingsTest.css");
+        testURL = getClass().getResource("HonorDeveloperSettingsTest_UA.css");
     }
 
     /**
--- a/javafx-ui-common/test/unit/com/sun/javafx/css/parser/CSSParserTest.java	Tue Mar 20 11:04:48 2012 -0700
+++ b/javafx-ui-common/test/unit/com/sun/javafx/css/parser/CSSParserTest.java	Tue Mar 20 18:49:15 2012 -0700
@@ -218,4 +218,18 @@
         assertEquals(Color.YELLOW, paint);
     }
     
+    @Test
+    public void testRT_20311() {
+
+        CSSParser instance = CSSParser.getInstance();
+        
+        try {
+            instance.parse(".rt-20311 {  -fx-background-color:red\n-fx-border-color:black; }");
+        } catch (Exception e) {
+            fail(e.toString());
+        }
+        
+    }
+    
+    
 }
--- a/javafx-ui-common/test/unit/javafx/scene/layout/TilePaneTest.java	Tue Mar 20 11:04:48 2012 -0700
+++ b/javafx-ui-common/test/unit/javafx/scene/layout/TilePaneTest.java	Tue Mar 20 18:49:15 2012 -0700
@@ -26,13 +26,19 @@
 
 package javafx.scene.layout;
 
+import com.sun.javafx.css.ParsedValue;
+import com.sun.javafx.css.StyleableProperty;
+import com.sun.javafx.css.parser.CSSParser;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNull;
 import javafx.geometry.Insets;
 import javafx.geometry.Orientation;
 import javafx.geometry.Pos;
 import javafx.scene.Node;
+import javafx.scene.Scene;
 import javafx.scene.shape.Rectangle;
+import javafx.stage.Stage;
+import org.junit.Assert;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -911,6 +917,21 @@
         assertEquals(100, last.getLayoutBounds().getHeight(), 1e-100);
     }
 
-
+    @Test public void testCSSsetPrefTileWidthAndHeight_RT20388() {        
+        Scene scene = new Scene(tilepane);
+        Stage stage = new Stage();
+        stage.setScene(scene);                
+        stage.show();
+        
+        ParsedValue pv = CSSParser.getInstance().parseExpr("-fx-perf-tile-width","67.0");
+        Object val = pv.convert(null);        
+        StyleableProperty prop = StyleableProperty.getStyleableProperty(tilepane.prefTileWidthProperty());
+        try {
+            prop.set(tilepane, val, null);
+            assertEquals(67.0, tilepane.getPrefTileWidth(), 0.00001);
+        } catch (Exception e) {
+            Assert.fail(e.toString());
+        }
+    }
       
 }
--- a/javafx-ui-controls/src/com/sun/javafx/scene/control/skin/ComboBoxBaseSkin.java	Tue Mar 20 11:04:48 2012 -0700
+++ b/javafx-ui-controls/src/com/sun/javafx/scene/control/skin/ComboBoxBaseSkin.java	Tue Mar 20 18:49:15 2012 -0700
@@ -155,10 +155,13 @@
     }
     
     @Override protected double computePrefHeight(double width) {
-        final Insets padding = getInsets();
+        if (displayNode == null) {
+            updateDisplayArea();
+        }
 
         if (displayNode == null) {
             final int DEFAULT_HEIGHT = 21;
+            final Insets padding = getInsets();
             final Insets arrowButtonPadding = arrowButton.getInsets();
             double arrowHeight = arrowButtonPadding.getTop() + arrow.prefHeight(-1) + arrowButtonPadding.getBottom();
             return padding.getTop() + Math.max(DEFAULT_HEIGHT, arrowHeight) + padding.getBottom();
--- a/javafx-ui-controls/src/com/sun/javafx/scene/control/skin/TableViewSkin.java	Tue Mar 20 11:04:48 2012 -0700
+++ b/javafx-ui-controls/src/com/sun/javafx/scene/control/skin/TableViewSkin.java	Tue Mar 20 18:49:15 2012 -0700
@@ -179,6 +179,7 @@
         registerChangeListener(tableView.rowFactoryProperty(), "ROW_FACTORY");
         registerChangeListener(tableView.placeholderProperty(), "PLACEHOLDER");
         registerChangeListener(tableView.focusTraversableProperty(), "FOCUS_TRAVERSABLE");
+        registerChangeListener(tableView.widthProperty(), "WIDTH");
     }
 
     @Override protected void handleControlPropertyChanged(String p) {
@@ -196,6 +197,8 @@
             updatePlaceholderRegionVisibility();
         } else if (p == "FOCUS_TRAVERSABLE") {
             flow.setFocusTraversable(getSkinnable().isFocusTraversable());
+        } else if (p == "WIDTH") {
+            tableHeaderRow.setTablePadding(getInsets());
         }
     }
     
--- a/javafx-ui-controls/src/com/sun/javafx/scene/control/skin/TitledPaneSkin.java	Tue Mar 20 11:04:48 2012 -0700
+++ b/javafx-ui-controls/src/com/sun/javafx/scene/control/skin/TitledPaneSkin.java	Tue Mar 20 18:49:15 2012 -0700
@@ -350,8 +350,10 @@
 
             setOnMouseReleased(new EventHandler<MouseEvent>() {
                 @Override public void handle(MouseEvent e) {
-                    getBehavior().toggle();
-                 }
+                    if (getSkinnable().isCollapsible() && getSkinnable().isFocused()) {                        
+                        getBehavior().toggle();
+                    }
+                }
             });
 
             // title region consists of the title and the arrow regions
--- a/javafx-ui-controls/src/javafx/scene/control/package.html	Tue Mar 20 11:04:48 2012 -0700
+++ b/javafx-ui-controls/src/javafx/scene/control/package.html	Tue Mar 20 18:49:15 2012 -0700
@@ -128,7 +128,6 @@
     <p>The class documentation for each Control defines the default Skin
     regions which can be styled. For further information regarding the CSS
     capabilities provided with JavaFX, see the
-    <!-- TODO workaround for broken relative links from package docs -->
-    <a href="javafx.scene/doc-files/cssref.html">CSS Reference Guide</a>.</p>
+    <a href="../doc-files/cssref.html">CSS Reference Guide</a>.</p>
 </body>
 </html>
--- a/javafx-ui-controls/test/javafx/scene/control/TitledPaneTest.java	Tue Mar 20 11:04:48 2012 -0700
+++ b/javafx-ui-controls/test/javafx/scene/control/TitledPaneTest.java	Tue Mar 20 18:49:15 2012 -0700
@@ -13,10 +13,13 @@
 import javafx.beans.property.ObjectProperty;
 import javafx.beans.property.SimpleBooleanProperty;
 import javafx.beans.property.SimpleObjectProperty;
+import javafx.event.EventType;
 import javafx.geometry.Pos;
 import javafx.scene.Node;
 import javafx.scene.Scene;
 import javafx.scene.input.KeyCode;
+import javafx.scene.input.MouseButton;
+import javafx.scene.input.MouseEvent;
 import javafx.scene.layout.StackPane;
 import javafx.scene.shape.Rectangle;
 import javafx.stage.Stage;
@@ -261,7 +264,8 @@
         
         assertEquals(Pos.BOTTOM_RIGHT, titledPane.getAlignment());              
     }
-    @Test public void focusOnNonCollapsibleTitledPane_RT19660() {
+    
+    @Test public void keyboardFocusOnNonCollapsibleTitledPane_RT19660() {
         Button button = new Button("Button");
         
         titledPane.setCollapsible(false);
@@ -287,4 +291,68 @@
         assertFalse(titledPane.isFocused());
         assertTrue(button.isFocused());
     }    
+    
+    @Test public void mouseFocusOnNonCollapsibleTitledPane_RT19660() {
+        Button button = new Button("Button");
+        
+        titledPane.setCollapsible(false);
+        titledPane.setExpanded(true);
+        titledPane.setAnimated(false);
+        titledPane.setContent(button);
+        
+        root.getChildren().add(titledPane);
+        show();
+
+        tk.firePulse();        
+        assertTrue(titledPane.isFocused());
+
+        double xval = (titledPane.localToScene(titledPane.getLayoutBounds())).getMinX();
+        double yval = (titledPane.localToScene(titledPane.getLayoutBounds())).getMinY();
+   
+        final TitledPaneTest.MouseEventGenerator generator = new TitledPaneTest.MouseEventGenerator();
+        scene.impl_processMouseEvent(
+            generator.generateMouseEvent(MouseEvent.MOUSE_PRESSED, xval+20, yval+20));
+        scene.impl_processMouseEvent(
+            generator.generateMouseEvent(MouseEvent.MOUSE_RELEASED, xval+20, yval+20));
+        
+        tk.firePulse();
+        assertTrue(titledPane.isExpanded());
+        assertTrue(titledPane.isFocused());
+
+        KeyEventFirer keyboard = new KeyEventFirer(titledPane);        
+        keyboard.doKeyPress(KeyCode.TAB);
+        tk.firePulse();
+        assertFalse(titledPane.isFocused());
+        assertTrue(button.isFocused());
+    }      
+    
+    static final class MouseEventGenerator {
+        private boolean primaryButtonDown = false;
+
+        public MouseEvent generateMouseEvent(EventType<MouseEvent> type,
+                double x, double y) {
+
+            MouseButton button = MouseButton.NONE;
+            if (type == MouseEvent.MOUSE_PRESSED ||
+                    type == MouseEvent.MOUSE_RELEASED ||
+                    type == MouseEvent.MOUSE_DRAGGED) {
+                button = MouseButton.PRIMARY;
+            }
+
+            if (type == MouseEvent.MOUSE_PRESSED ||
+                    type == MouseEvent.MOUSE_DRAGGED) {
+                primaryButtonDown = true;
+            }
+
+            if (type == MouseEvent.MOUSE_RELEASED) {
+                primaryButtonDown = false;
+            }
+
+            MouseEvent event = MouseEvent.impl_mouseEvent(x, y, x, y, button,
+                    1, false, false, false, false, false, primaryButtonDown,
+                    false, false, type);
+
+            return event;
+        }    
+    }
 }