changeset 146:d7483b66444c

merge
author Alexandre (Shura) Iline <alexandre.iline@sun.com>
date Thu, 06 Jun 2013 18:45:02 +0400
parents 846b0a99dc08 e4d78e490620
children 9de56728202b
files functional/SceneGraphTests/src/test/scenegraph/app/AffineApp.java functional/SceneGraphTests/src/test/scenegraph/app/ImagesApp.java functional/SceneGraphTests/src/test/scenegraph/binding/BindingApp.java functional/SceneGraphTests/src/test/scenegraph/lcd/animation/AnimationLCDTextTestApp.java functional/SceneGraphTests/src/test/scenegraph/richtext/RichTextPropertiesApp.java functional/SceneGraphTests/test/security/D3DRendererNativePointerTest.java functional/SceneGraphTests/test/test/scenegraph/binding/BindingTestBase.java functional/SceneGraphTests/test/test/scenegraph/functional/SceneEventHandlersTest.java functional/SceneGraphTests/test/test/scenegraph/richtext/RichTextLabeledsTest.java functional/SceneGraphTests/test/test/scenegraph/richtext/RichTextMixedTest.java functional/SceneGraphTests/test/test/scenegraph/richtext/RichTextPropertiesFunctional.java functional/SceneGraphTests/test/test/scenegraph/richtext/RichTextRectangleTest.java functional/SceneGraphTests/test/test/scenegraph/richtext/RichTextTestBase.java functional/SceneGraphTests/test/test/scenegraph/richtext/RichTextTextTest.java tools/Jemmy/JemmyFX/samples/org/jemmy/samples/webview/WebViewSample.java tools/Jemmy/JemmyFX/src/org/jemmy/fx/control/WebNodeParent.java tools/Jemmy/JemmyFX/src/org/jemmy/fx/control/WebNodeWrap.java tools/Jemmy/JemmyFX/src/org/jemmy/fx/control/WebViewWrap.java tools/Jemmy/JemmyFX/test/org/jemmy/fx/control/WebViewTest.java
diffstat 45 files changed, 1633 insertions(+), 1354 deletions(-) [+]
line wrap: on
line diff
--- a/.hgignore	Tue Feb 12 17:57:19 2013 +0400
+++ b/.hgignore	Thu Jun 06 18:45:02 2013 +0400
@@ -6,8 +6,12 @@
 .*/dist/.*$
 .*/build/.*$
 .*/nbproject/private/.*
-tools/Jemmy/JemmyFX.*/lib/.*
+tools/Jemmy/.*/lib/.*
 tools/Jemmy/JemmyFX/docks/.*
+tools/Jemmy/.*/target/.*
+tools/Jemmy/.*/pom.xml
 .*/images-svn/*
 .*/coverage.fcov
-
+tools/Jemmy/jemmy_core
+functional/.*/.image.properties
+build.properties
--- a/functional/SceneGraphTests/nbproject/project.properties	Tue Feb 12 17:57:19 2013 +0400
+++ b/functional/SceneGraphTests/nbproject/project.properties	Thu Jun 06 18:45:02 2013 +0400
@@ -71,7 +71,7 @@
 file.reference.JemmyAWTInput.jar=../../tools/Jemmy/jemmy_core/JemmyAWTInput.jar
 file.reference.JemmyBrowser.jar=../../tools/Jemmy/jemmy_core/JemmyBrowser.jar
 file.reference.JemmyCore.jar=../../tools/Jemmy/jemmy_core/JemmyCore.jar
-file.reference.jfxrt.jar=${javafx.rt}/lib/jfxrt.jar
+file.reference.jfxrt.jar=${javafx.rt}/lib/ext/jfxrt.jar
 includes=**
 jar.archive.disabled=${jnlp.enabled}
 jar.compress=false
--- a/functional/SceneGraphTests/src/test/scenegraph/app/AffineApp.java	Tue Feb 12 17:57:19 2013 +0400
+++ b/functional/SceneGraphTests/src/test/scenegraph/app/AffineApp.java	Thu Jun 06 18:45:02 2013 +0400
@@ -1,368 +1,343 @@
-/*
- * Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- */
-package test.scenegraph.app;
-
-import javafx.event.ActionEvent;
-import javafx.event.EventHandler;
-import javafx.geometry.HPos;
-import javafx.geometry.Insets;
-import javafx.geometry.Orientation;
-import javafx.geometry.Point2D;
-import javafx.geometry.Point3D;
-import javafx.geometry.VPos;
-import javafx.scene.DepthTest;
-import javafx.scene.Group;
-import javafx.scene.PerspectiveCamera;
-import javafx.scene.Scene;
-import javafx.scene.control.CheckBox;
-import javafx.scene.control.CheckBoxBuilder;
-import javafx.scene.control.ScrollPane;
-import javafx.scene.layout.Border;
-import javafx.scene.layout.BorderStroke;
-import javafx.scene.layout.BorderStrokeStyle;
-import javafx.scene.layout.BorderWidths;
-import javafx.scene.layout.ColumnConstraints;
-import javafx.scene.layout.CornerRadii;
-import javafx.scene.layout.FlowPane;
-import javafx.scene.layout.GridPane;
-import javafx.scene.layout.RowConstraints;
-import javafx.scene.layout.StackPane;
-import javafx.scene.paint.Color;
-import javafx.scene.shape.Rectangle;
-import javafx.scene.transform.Affine;
-import javafx.scene.transform.MatrixType;
-import javafx.scene.transform.Rotate;
-import test.javaclient.shared.InteroperabilityApp;
-import test.javaclient.shared.Utils;
-
-/**
- *
- * @author Aleksandr Sakharuk
- */
-public class AffineApp extends InteroperabilityApp
-{
-    
-    public static void main(String[] args)
-    {
-	Utils.launch(AffineApp.class, args);
-    }
-
-    @Override
-    protected Scene getScene() 
-    {
-	return new AffineScene();
-    }
-    
-    private class AffineScene extends Scene
-    {
-	
-	public AffineScene()
-	{
-	    super(new Group(), 800, 600, true);
-	    
-	    regularAffine.setToIdentity();
-	    manualAffine.setToIdentity();
-	    
-	    fxTranformedRectangle.getTransforms().add(regularAffine);
-	    fxTranformedRectangle.setDepthTest(DepthTest.ENABLE);
-	    manualTranformedRectangle.getTransforms().add(manualAffine);
-	    manualTranformedRectangle.setDepthTest(DepthTest.ENABLE);
-	    
-	    fxTransRectPane.setBorder(new Border(new BorderStroke(Color.GREEN, BorderStrokeStyle.DASHED, CornerRadii.EMPTY, BorderWidths.DEFAULT)));
-	    manualTransRectPane.setBorder(new Border(new BorderStroke(Color.GREEN, BorderStrokeStyle.DASHED, CornerRadii.EMPTY, BorderWidths.DEFAULT)));
-	    
-	    fxTransRectPane.setId(FX_AFFINE_AREA);
-	    manualTransRectPane.setId(MANUAL_AFFINE_AREA);
-	    
-	    fxTransRectPane.getChildren().add(fxTranformedRectangle);
-	    manualTransRectPane.getChildren().add(manualTranformedRectangle);
-	    
-	    GridPane all = new GridPane();
-	    ScrollPane sp = new ScrollPane();
-	    FlowPane methodsFlow = new FlowPane(Orientation.VERTICAL, 10, 2);
-	    methodsFlow.setPadding(new Insets(5));
-	    sp.setContent(methodsFlow);
-            sp.setVbarPolicy(ScrollPane.ScrollBarPolicy.NEVER);
-	    
-	    ColumnConstraints leftSide = new ColumnConstraints();
-	    leftSide.setPercentWidth(50);
-	    ColumnConstraints rightSide = new ColumnConstraints();
-	    rightSide.setPercentWidth(50);
-	    RowConstraints methods = new RowConstraints();
-	    methods.setPercentHeight(40);
-	    RowConstraints rectangles = new RowConstraints();
-	    rectangles.setPercentHeight(60);
-	    
-	    GridPane.setValignment(fxTransRectPane, VPos.CENTER);
-	    GridPane.setHalignment(fxTransRectPane, HPos.CENTER);
-	    GridPane.setValignment(manualTransRectPane, VPos.CENTER);
-	    GridPane.setHalignment(manualTransRectPane, HPos.CENTER);
-            GridPane.setColumnSpan(sp, 2);
-	    
-	    all.getColumnConstraints().addAll(leftSide, rightSide);
-	    all.getRowConstraints().addAll(methods, rectangles);
-	    
-	    for(CheckBox cb: boxes)
-            {
-                methodsFlow.getChildren().add(cb);
-            }
-	    
-	    all.add(sp, 0, 0);
-	    all.add(fxTransRectPane, 0, 1);
-	    all.add(manualTransRectPane, 1, 1);
-	    
-	    setRoot(all);
-	    setCamera(new PerspectiveCamera());
-            
-            appendTransform.setId(AffineAPI.APPEND_TRANSFORM.name());
-            appendMatrix.setId(AffineAPI.APPEND_D_ARR_MATRIX_TYPE_INT.name());
-	}
-	
-	private Group root;
-	private StackPane fxTransRectPane = new StackPane();
-	private StackPane manualTransRectPane = new StackPane();
-	private Rectangle fxTranformedRectangle = new Rectangle(100, 100);
-	private Rectangle manualTranformedRectangle = new Rectangle(100, 100);
-	private Affine regularAffine = new Affine();
-	private AffineManual manualAffine = new AffineManual();
-	
-	private CheckBox append6d = CheckBoxBuilder.create().text("append(double, double, double, double, double, double)").
-                id(AffineAPI.APPEND_6D.name()).onAction(new EventHandler<ActionEvent>() {
-
-                    public void handle(ActionEvent t) {
-                        if(append6d.isSelected())
-                        {
-                            regularAffine.append(1, 0, 10, 0, 1, 10);
-                            manualAffine.append(1, 0, 10, 0, 1, 10);
-                        }
-                        else
-                        {
-                            regularAffine.append(1, 0, -10, 0, 1, -10);
-                            manualAffine.append(1, 0, -10, 0, 1, -10);
-                        }
-                    }
-                }).build();
-        
-	private CheckBox append12d = CheckBoxBuilder.create().text("append(double, double, double, double, double, double, double, double, double, double, double, double)").
-                id(AffineAPI.APPEND_12D.name()).onAction(new EventHandler<ActionEvent>() {
-
-                    public void handle(ActionEvent t) {
-
-                        double angle = Math.PI / 4;
-                        double sin = Math.sin(angle);
-                        double cos = Math.cos(angle);
-
-                        if(append12d.isSelected())
-                        {
-                            regularAffine.append(cos, sin, 0, 0, 
-                                                 -sin, cos, 0, 0, 
-                                                 0, 0, 1, 0);
-                            manualAffine.append(cos, sin, 0, 0, 
-                                                -sin, cos, 0, 0, 
-                                                0, 0, 1, 0);
-                        }
-                        else
-                        {
-                            regularAffine.append(cos, -sin, 0, 0, 
-                                                 sin, cos, 0, 0, 
-                                                 0, 0, 1, 0);
-                            manualAffine.append(cos, -sin, 0, 0, 
-                                                sin, cos, 0, 0, 
-                                                0, 0, 1, 0);
-                        }
-                    }
-                }).build();
-        
-        private CheckBox appendTransform = CheckBoxBuilder.create().text("append(Transform)").
-                id(AffineAPI.APPEND_TRANSFORM.name()).onAction(new EventHandler<ActionEvent>() {
-
-                    public void handle(ActionEvent t) {
-                        if(appendTransform.isSelected())
-                        {
-                            regularAffine.append(new Rotate(45));
-                            manualAffine.append(new Rotate(45));
-                        }
-                        else
-                        {
-                            regularAffine.append(new Rotate(-45));
-                            manualAffine.append(new Rotate(-45));
-                        }
-                    }
-                }).build();
-        
-        private CheckBox appendMatrix = CheckBoxBuilder.create().text("append(double[], MatrixType, int)").
-                id(AffineAPI.APPEND_D_ARR_MATRIX_TYPE_INT.name()).onAction(new EventHandler<ActionEvent>() {
-
-                    public void handle(ActionEvent t) {
-                        double angle = Math.PI / 4;
-                        double sin = Math.sin(angle);
-                        double cos = Math.cos(angle);
-
-                        double[] forward = {0, 0, cos, sin, 0, 0, -sin, cos, 0, 0, 0, 0, 1, 0};
-                        double[] backward = {0, 0, cos, -sin, 0, 0, sin, cos, 0, 0, 0, 0, 1, 0};
-
-                        if(appendMatrix.isSelected())
-                        {
-                            regularAffine.append(forward, MatrixType.MT_3D_3x4, 2);
-                            manualAffine.append(forward, MatrixType.MT_3D_3x4, 2);
-                        }
-                        else
-                        {
-                            regularAffine.append(backward, MatrixType.MT_3D_3x4, 2);
-                            manualAffine.append(backward, MatrixType.MT_3D_3x4, 2);
-                        }
-                    }
-                }).build();
-        
-        private CheckBox appendRotateD = CheckBoxBuilder.create().text("appendRotate(double)").
-                id(AffineAPI.APPEND_ROTATE_D.name()).onAction(new EventHandler<ActionEvent>() {
-
-            public void handle(ActionEvent t) {
-                if(appendRotateD.isSelected())
-                {
-                    regularAffine.appendRotation(30);
-                    manualAffine.appendRotation(30);
-                }
-                else
-                {
-                    regularAffine.appendRotation(-30);
-                    manualAffine.appendRotation(-30);
-                }
-            }
-        }).build();
-        
-        private CheckBox appendRotate3D = CheckBoxBuilder.create().text("appendRotate(double, double, double").
-                id(AffineAPI.APPEND_ROTATE_3D.name()).onAction(new EventHandler<ActionEvent>() {
-
-            public void handle(ActionEvent t) {
-                if(appendRotate3D.isSelected())
-                {
-                    regularAffine.appendRotation(30, 15, 15);
-                    manualAffine.appendRotation(30, 15, 15);
-                }
-                else
-                {
-                    regularAffine.appendRotation(-30, 15, 15);
-                    manualAffine.appendRotation(-30, 15, 15);
-                }
-            }
-        }).build();
-        
-        private CheckBox appendRotateDPoint2D = CheckBoxBuilder.create().text("append(double, Point2D)").
-                id(AffineAPI.APPEND_ROTATE_D_POINT2D.name()).onAction(new EventHandler<ActionEvent>() {
-
-            public void handle(ActionEvent t) {
-                if(appendRotateDPoint2D.isSelected())
-                {
-                    regularAffine.appendRotation(30, new Point2D(22, 22));
-                    manualAffine.appendRotation(30, new Point2D(22, 22));
-                }
-                else
-                {
-                    regularAffine.appendRotation(-30, new Point2D(22, 22));
-                    manualAffine.appendRotation(-30, new Point2D(22, 22));
-                }
-            }
-        }).build();
-        
-        private CheckBox appendRotate7D = CheckBoxBuilder.create().text("append(double, double, double, double, double, double, double)").
-                id(AffineAPI.APPEND_ROTATE_7D.name()).onAction(new EventHandler<ActionEvent>() {
-
-            public void handle(ActionEvent t) {
-                if(appendRotate7D.isSelected())
-                {
-                    regularAffine.appendRotation(15, 0, 0, 0, 10, 10, 10);
-                    manualAffine.appendRotation(15, 0, 0, 0, 10, 10, 10);
-                }
-                else
-                {
-                    regularAffine.appendRotation(-15, 0, 0, 0, 10, 10, 10);
-                    manualAffine.appendRotation(-15, 0, 0, 0, 10, 10, 10);
-                }
-            }
-        }).build();
-        
-        private CheckBox appendRotate4DPoint3D = CheckBoxBuilder.create().text("append(double, double, double, double, Point3D)").
-                id(AffineAPI.APPEND_ROTATE_4D_POINT3D.name()).onAction(new EventHandler<ActionEvent>() {
-
-            public void handle(ActionEvent t) {
-                if(appendRotate4DPoint3D.isSelected())
-                {
-                    regularAffine.appendRotation(15, 0, 0, 0, new Point3D(10, 10, 10));
-                    manualAffine.appendRotation(15, 0, 0, 0, new Point3D(10, 10, 10));
-                }
-                else
-                {
-                    regularAffine.appendRotation(-15, 0, 0, 0, new Point3D(10, 10, 10));
-                    manualAffine.appendRotation(-15, 0, 0, 0, new Point3D(10, 10, 10));
-                }
-            }
-        }).build();
-        
-        private CheckBox appendRotateD2Point3D = CheckBoxBuilder.create().text("append(double, Point3D, Point3D)").
-                id(AffineAPI.APPEND_ROTATE_D_2POINT3D.name()).onAction(new EventHandler<ActionEvent>() {
-
-            public void handle(ActionEvent t) {
-                if(appendRotateD2Point3D.isSelected())
-                {
-                    regularAffine.appendRotation(15, new Point3D(0, 0, 0), new Point3D(10, 10, 10));
-                    manualAffine.appendRotation(15, new Point3D(0, 0, 0), new Point3D(10, 10, 10));
-                }
-                else
-                {
-                    regularAffine.appendRotation(-15, new Point3D(0, 0, 0), new Point3D(10, 10, 10));
-                    manualAffine.appendRotation(-15, new Point3D(0, 0, 0), new Point3D(10, 10, 10));
-                }
-            }
-        }).build();
-        
-        private CheckBox[] boxes = new CheckBox[]{append6d, append12d, appendTransform, appendMatrix, appendRotateD, 
-                appendRotate3D, appendRotateDPoint2D, appendRotate7D, appendRotate4DPoint3D, appendRotateD2Point3D};
-	
-    }
-    
-    public static final String FX_AFFINE_AREA = "fx-affine-area";
-    public static final String MANUAL_AFFINE_AREA = "manual-affine-area";
-    
-    public enum AffineAPI
-    {
-        APPEND_6D,
-        APPEND_12D,
-        APPEND_TRANSFORM,
-        APPEND_D_ARR_MATRIX_TYPE_INT,
-        APPEND_ROTATE_D,
-        APPEND_ROTATE_3D,
-        APPEND_ROTATE_D_POINT2D,
-        APPEND_ROTATE_7D,
-        APPEND_ROTATE_4D_POINT3D,
-        APPEND_ROTATE_D_2POINT3D,
-        APPEND_SCALE_2D,
-        APPEND_SCALE_3D,
-        APPEND_SCALE_4D,
-        APPEND_SCALE_6D,
-        APPEND_SCALE_3D_POINT3D,
-        APPEND_SCALE_2D_POINT2D
-    }
-    
-}
+ */
+package test.scenegraph.app;
+
+import javafx.event.ActionEvent;
+import javafx.event.EventHandler;
+import javafx.geometry.HPos;
+import javafx.geometry.Insets;
+import javafx.geometry.Orientation;
+import javafx.geometry.Point2D;
+import javafx.geometry.Point3D;
+import javafx.geometry.VPos;
+import javafx.scene.DepthTest;
+import javafx.scene.Group;
+import javafx.scene.PerspectiveCamera;
+import javafx.scene.Scene;
+import javafx.scene.control.CheckBox;
+import javafx.scene.control.CheckBoxBuilder;
+import javafx.scene.control.ScrollPane;
+import javafx.scene.layout.Border;
+import javafx.scene.layout.BorderStroke;
+import javafx.scene.layout.BorderStrokeStyle;
+import javafx.scene.layout.BorderWidths;
+import javafx.scene.layout.ColumnConstraints;
+import javafx.scene.layout.CornerRadii;
+import javafx.scene.layout.FlowPane;
+import javafx.scene.layout.GridPane;
+import javafx.scene.layout.RowConstraints;
+import javafx.scene.layout.StackPane;
+import javafx.scene.paint.Color;
+import javafx.scene.shape.Rectangle;
+import javafx.scene.transform.Affine;
+import javafx.scene.transform.MatrixType;
+import javafx.scene.transform.Rotate;
+import test.javaclient.shared.InteroperabilityApp;
+import test.javaclient.shared.Utils;
+
+/**
+ *
+ * @author Aleksandr Sakharuk
+ */
+public class AffineApp extends InteroperabilityApp
+{
+    
+    public static void main(String[] args)
+    {
+	Utils.launch(AffineApp.class, args);
+    }
+
+    @Override
+    protected Scene getScene() 
+    {
+	return new AffineScene();
+    }
+    
+    private class AffineScene extends Scene
+    {
+	
+	public AffineScene()
+	{
+	    super(new Group(), 800, 600, true);
+	    
+	    regularAffine.setToIdentity();
+	    manualAffine.setToIdentity();
+	    
+	    fxTranformedRectangle.getTransforms().add(regularAffine);
+	    fxTranformedRectangle.setDepthTest(DepthTest.ENABLE);
+	    manualTranformedRectangle.getTransforms().add(manualAffine);
+	    manualTranformedRectangle.setDepthTest(DepthTest.ENABLE);
+	    
+	    fxTransRectPane.setBorder(new Border(new BorderStroke(Color.GREEN, BorderStrokeStyle.DASHED, CornerRadii.EMPTY, BorderWidths.DEFAULT)));
+	    manualTransRectPane.setBorder(new Border(new BorderStroke(Color.GREEN, BorderStrokeStyle.DASHED, CornerRadii.EMPTY, BorderWidths.DEFAULT)));
+	    
+	    fxTransRectPane.setId(FX_AFFINE_AREA);
+	    manualTransRectPane.setId(MANUAL_AFFINE_AREA);
+	    
+	    fxTransRectPane.getChildren().add(fxTranformedRectangle);
+	    manualTransRectPane.getChildren().add(manualTranformedRectangle);
+	    
+	    GridPane all = new GridPane();
+	    ScrollPane sp = new ScrollPane();
+	    FlowPane methodsFlow = new FlowPane(Orientation.VERTICAL, 10, 2);
+	    methodsFlow.setPadding(new Insets(5));
+	    sp.setContent(methodsFlow);
+            sp.setVbarPolicy(ScrollPane.ScrollBarPolicy.NEVER);
+	    
+	    ColumnConstraints leftSide = new ColumnConstraints();
+	    leftSide.setPercentWidth(50);
+	    ColumnConstraints rightSide = new ColumnConstraints();
+	    rightSide.setPercentWidth(50);
+	    RowConstraints methods = new RowConstraints();
+	    methods.setPercentHeight(40);
+	    RowConstraints rectangles = new RowConstraints();
+	    rectangles.setPercentHeight(60);
+	    
+	    GridPane.setValignment(fxTransRectPane, VPos.CENTER);
+	    GridPane.setHalignment(fxTransRectPane, HPos.CENTER);
+	    GridPane.setValignment(manualTransRectPane, VPos.CENTER);
+	    GridPane.setHalignment(manualTransRectPane, HPos.CENTER);
+            GridPane.setColumnSpan(sp, 2);
+	    
+	    all.getColumnConstraints().addAll(leftSide, rightSide);
+	    all.getRowConstraints().addAll(methods, rectangles);
+	    
+	    for(CheckBox cb: boxes)
+            {
+                methodsFlow.getChildren().add(cb);
+            }
+	    
+	    all.add(sp, 0, 0);
+	    all.add(fxTransRectPane, 0, 1);
+	    all.add(manualTransRectPane, 1, 1);
+	    
+	    setRoot(all);
+	    setCamera(new PerspectiveCamera());
+            
+            appendTransform.setId(AffineAPI.APPEND_TRANSFORM.name());
+            appendMatrix.setId(AffineAPI.APPEND_D_ARR_MATRIX_TYPE_INT.name());
+	}
+	
+	private Group root;
+	private StackPane fxTransRectPane = new StackPane();
+	private StackPane manualTransRectPane = new StackPane();
+	private Rectangle fxTranformedRectangle = new Rectangle(100, 100);
+	private Rectangle manualTranformedRectangle = new Rectangle(100, 100);
+	private Affine regularAffine = new Affine();
+	private AffineManual manualAffine = new AffineManual();
+	
+	private CheckBox append6d = CheckBoxBuilder.create().text("append(double, double, double, double, double, double)").
+                id(AffineAPI.APPEND_6D.name()).onAction(new EventHandler<ActionEvent>() {
+
+                    public void handle(ActionEvent t) {
+                        if(append6d.isSelected())
+                        {
+                            regularAffine.append(1, 0, 10, 0, 1, 10);
+                            manualAffine.append(1, 0, 10, 0, 1, 10);
+                        }
+                        else
+                        {
+                            regularAffine.append(1, 0, -10, 0, 1, -10);
+                            manualAffine.append(1, 0, -10, 0, 1, -10);
+                        }
+                    }
+                }).build();
+        
+	private CheckBox append12d = CheckBoxBuilder.create().text("append(double, double, double, double, double, double, double, double, double, double, double, double)").
+                id(AffineAPI.APPEND_12D.name()).onAction(new EventHandler<ActionEvent>() {
+
+                    public void handle(ActionEvent t) {
+
+                        double angle = Math.PI / 4;
+                        double sin = Math.sin(angle);
+                        double cos = Math.cos(angle);
+
+                        if(append12d.isSelected())
+                        {
+                            regularAffine.append(cos, sin, 0, 0, 
+                                                 -sin, cos, 0, 0, 
+                                                 0, 0, 1, 0);
+                            manualAffine.append(cos, sin, 0, 0, 
+                                                -sin, cos, 0, 0, 
+                                                0, 0, 1, 0);
+                        }
+                        else
+                        {
+                            regularAffine.append(cos, -sin, 0, 0, 
+                                                 sin, cos, 0, 0, 
+                                                 0, 0, 1, 0);
+                            manualAffine.append(cos, -sin, 0, 0, 
+                                                sin, cos, 0, 0, 
+                                                0, 0, 1, 0);
+                        }
+                    }
+                }).build();
+        
+        private CheckBox appendTransform = CheckBoxBuilder.create().text("append(Transform)").
+                id(AffineAPI.APPEND_TRANSFORM.name()).onAction(new EventHandler<ActionEvent>() {
+
+                    public void handle(ActionEvent t) {
+                        if(appendTransform.isSelected())
+                        {
+                            regularAffine.append(new Rotate(45));
+                            manualAffine.append(new Rotate(45));
+                        }
+                        else
+                        {
+                            regularAffine.append(new Rotate(-45));
+                            manualAffine.append(new Rotate(-45));
+                        }
+                    }
+                }).build();
+        
+        private CheckBox appendMatrix = CheckBoxBuilder.create().text("append(double[], MatrixType, int)").
+                id(AffineAPI.APPEND_D_ARR_MATRIX_TYPE_INT.name()).onAction(new EventHandler<ActionEvent>() {
+
+                    public void handle(ActionEvent t) {
+                        double angle = Math.PI / 4;
+                        double sin = Math.sin(angle);
+                        double cos = Math.cos(angle);
+
+                        double[] forward = {0, 0, cos, sin, 0, 0, -sin, cos, 0, 0, 0, 0, 1, 0};
+                        double[] backward = {0, 0, cos, -sin, 0, 0, sin, cos, 0, 0, 0, 0, 1, 0};
+
+                        if(appendMatrix.isSelected())
+                        {
+                            regularAffine.append(forward, MatrixType.MT_3D_3x4, 2);
+                            manualAffine.append(forward, MatrixType.MT_3D_3x4, 2);
+                        }
+                        else
+                        {
+                            regularAffine.append(backward, MatrixType.MT_3D_3x4, 2);
+                            manualAffine.append(backward, MatrixType.MT_3D_3x4, 2);
+                        }
+                    }
+                }).build();
+        
+        private CheckBox appendRotateD = CheckBoxBuilder.create().text("appendRotate(double)").
+                id(AffineAPI.APPEND_ROTATE_D.name()).onAction(new EventHandler<ActionEvent>() {
+
+            public void handle(ActionEvent t) {
+                if(appendRotateD.isSelected())
+                {
+                    regularAffine.appendRotation(30);
+                    manualAffine.appendRotation(30);
+                }
+                else
+                {
+                    regularAffine.appendRotation(-30);
+                    manualAffine.appendRotation(-30);
+                }
+            }
+        }).build();
+        
+        private CheckBox appendRotate3D = CheckBoxBuilder.create().text("appendRotate(double, double, double").
+                id(AffineAPI.APPEND_ROTATE_3D.name()).onAction(new EventHandler<ActionEvent>() {
+
+            public void handle(ActionEvent t) {
+                if(appendRotate3D.isSelected())
+                {
+                    regularAffine.appendRotation(30, 15, 15);
+                    manualAffine.appendRotation(30, 15, 15);
+                }
+                else
+                {
+                    regularAffine.appendRotation(-30, 15, 15);
+                    manualAffine.appendRotation(-30, 15, 15);
+                }
+            }
+        }).build();
+        
+        private CheckBox appendRotateDPoint2D = CheckBoxBuilder.create().text("append(double, Point2D)").
+                id(AffineAPI.APPEND_ROTATE_D_POINT2D.name()).onAction(new EventHandler<ActionEvent>() {
+
+            public void handle(ActionEvent t) {
+                if(appendRotateDPoint2D.isSelected())
+                {
+                    regularAffine.appendRotation(30, new Point2D(22, 22));
+                    manualAffine.appendRotation(30, new Point2D(22, 22));
+                }
+                else
+                {
+                    regularAffine.appendRotation(-30, new Point2D(22, 22));
+                    manualAffine.appendRotation(-30, new Point2D(22, 22));
+                }
+            }
+        }).build();
+        
+        private CheckBox appendRotate7D = CheckBoxBuilder.create().text("append(double, double, double, double, double, double, double)").
+                id(AffineAPI.APPEND_ROTATE_7D.name()).onAction(new EventHandler<ActionEvent>() {
+
+            public void handle(ActionEvent t) {
+                if(appendRotate7D.isSelected())
+                {
+                    regularAffine.appendRotation(15, 0, 0, 0, 10, 10, 10);
+                    manualAffine.appendRotation(15, 0, 0, 0, 10, 10, 10);
+                }
+                else
+                {
+                    regularAffine.appendRotation(-15, 0, 0, 0, 10, 10, 10);
+                    manualAffine.appendRotation(-15, 0, 0, 0, 10, 10, 10);
+                }
+            }
+        }).build();
+        
+        private CheckBox appendRotate4DPoint3D = CheckBoxBuilder.create().text("append(double, double, double, double, Point3D)").
+                id(AffineAPI.APPEND_ROTATE_4D_POINT3D.name()).onAction(new EventHandler<ActionEvent>() {
+
+            public void handle(ActionEvent t) {
+                if(appendRotate4DPoint3D.isSelected())
+                {
+                    regularAffine.appendRotation(15, 0, 0, 0, new Point3D(10, 10, 10));
+                    manualAffine.appendRotation(15, 0, 0, 0, new Point3D(10, 10, 10));
+                }
+                else
+                {
+                    regularAffine.appendRotation(-15, 0, 0, 0, new Point3D(10, 10, 10));
+                    manualAffine.appendRotation(-15, 0, 0, 0, new Point3D(10, 10, 10));
+                }
+            }
+        }).build();
+        
+        private CheckBox appendRotateD2Point3D = CheckBoxBuilder.create().text("append(double, Point3D, Point3D)").
+                id(AffineAPI.APPEND_ROTATE_D_2POINT3D.name()).onAction(new EventHandler<ActionEvent>() {
+
+            public void handle(ActionEvent t) {
+                if(appendRotateD2Point3D.isSelected())
+                {
+                    regularAffine.appendRotation(15, new Point3D(0, 0, 0), new Point3D(10, 10, 10));
+                    manualAffine.appendRotation(15, new Point3D(0, 0, 0), new Point3D(10, 10, 10));
+                }
+                else
+                {
+                    regularAffine.appendRotation(-15, new Point3D(0, 0, 0), new Point3D(10, 10, 10));
+                    manualAffine.appendRotation(-15, new Point3D(0, 0, 0), new Point3D(10, 10, 10));
+                }
+            }
+        }).build();
+        
+        private CheckBox[] boxes = new CheckBox[]{append6d, append12d, appendTransform, appendMatrix, appendRotateD, 
+                appendRotate3D, appendRotateDPoint2D, appendRotate7D, appendRotate4DPoint3D, appendRotateD2Point3D};
+	
+    }
+    
+    public static final String FX_AFFINE_AREA = "fx-affine-area";
+    public static final String MANUAL_AFFINE_AREA = "manual-affine-area";
+    
+    public enum AffineAPI
+    {
+        APPEND_6D,
+        APPEND_12D,
+        APPEND_TRANSFORM,
+        APPEND_D_ARR_MATRIX_TYPE_INT,
+        APPEND_ROTATE_D,
+        APPEND_ROTATE_3D,
+        APPEND_ROTATE_D_POINT2D,
+        APPEND_ROTATE_7D,
+        APPEND_ROTATE_4D_POINT3D,
+        APPEND_ROTATE_D_2POINT3D
+    }
+    
+}
--- a/functional/SceneGraphTests/src/test/scenegraph/app/ImagesApp.java	Tue Feb 12 17:57:19 2013 +0400
+++ b/functional/SceneGraphTests/src/test/scenegraph/app/ImagesApp.java	Thu Jun 06 18:45:02 2013 +0400
@@ -1,25 +1,6 @@
 /*
- * Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
+ * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  */
 package test.scenegraph.app;
 
@@ -71,7 +52,6 @@
         }
         {
             ImageView iv = new ImageView();
-            System.out.println("defaultImagePath = " + defaultImagePath);
             Image image = new Image(getClass().getResourceAsStream(defaultImagePath), 50, 50, false, false);
             if (image.getRequestedHeight() != 50) {
                 reportGetterFailure("image.getRequestedHeight()");
--- a/functional/SceneGraphTests/src/test/scenegraph/binding/BindingApp.java	Tue Feb 12 17:57:19 2013 +0400
+++ b/functional/SceneGraphTests/src/test/scenegraph/binding/BindingApp.java	Thu Jun 06 18:45:02 2013 +0400
@@ -1,26 +1,3 @@
-/*
- * Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- */
 package test.scenegraph.binding;
 
 import java.lang.reflect.Method;
@@ -159,7 +136,6 @@
 
     @Override
     public void start(Stage stage) {
-        System.out.println(System.getProperty("java.home"));
         stage.setScene(getScene());
         stage.initStyle(StageStyle.UNDECORATED);
         stage.setX(0);
--- a/functional/SceneGraphTests/src/test/scenegraph/lcd/animation/AnimationLCDTextTestApp.java	Tue Feb 12 17:57:19 2013 +0400
+++ b/functional/SceneGraphTests/src/test/scenegraph/lcd/animation/AnimationLCDTextTestApp.java	Thu Jun 06 18:45:02 2013 +0400
@@ -1,25 +1,6 @@
 /*
- * Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  */
 package test.scenegraph.lcd.animation;
 
@@ -47,6 +28,7 @@
 import javafx.scene.text.TextBuilder;
 import javafx.stage.Stage;
 import javafx.util.Duration;
+import test.javaclient.shared.Utils;
 
 /**
  *
@@ -58,9 +40,10 @@
      * @param args the command line arguments
      */
     public static void main(String[] args) {
-        launch(args);
+        //launch(args);
+        Utils.launch(AnimationLCDTextTestApp.class, args);
     }
-    
+
     @Override
     public void start(Stage primaryStage) {
         
--- a/functional/SceneGraphTests/src/test/scenegraph/richtext/RichTextPropertiesApp.java	Tue Feb 12 17:57:19 2013 +0400
+++ b/functional/SceneGraphTests/src/test/scenegraph/richtext/RichTextPropertiesApp.java	Thu Jun 06 18:45:02 2013 +0400
@@ -1,25 +1,6 @@
 /*
- * Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  */
 package test.scenegraph.richtext;
 
@@ -185,6 +166,9 @@
             }
         }
     }
+    public void setLineSpacing(double d){
+        textFlowPage.lineSpacing.setValue(d);
+    }
 
     public void setFst(FontSmoothingType fst) {
         if (textFlowPage.pages.valueProperty().get().equals(Pages.TextPage)) {
@@ -269,6 +253,7 @@
         ChoiceBox<Pages> pages = null;
         ScrollBar rotation = null;
         ScrollBar width = null;
+        ScrollBar lineSpacing = null;
         CheckBox showBorder = null;
         public TextFlowPage() {
             super();
@@ -280,6 +265,9 @@
             width = new ScrollBar();
             width.setMin(0);
             width.setMax(paneWidth);
+            lineSpacing = new ScrollBar();
+            lineSpacing.setMax(100);
+            lineSpacing.setMin(0);
             showBorder = new CheckBox("show border");
             showBorder.setOnAction(new EventHandler() {
                 public void handle(Event t) {
@@ -304,6 +292,7 @@
                         currentElement.maxWidthProperty().unbindBidirectional(width.valueProperty());
                         currentElement.minWidthProperty().unbindBidirectional(width.valueProperty());
                         currentElement.prefWidthProperty().unbindBidirectional(width.valueProperty());
+                        currentElement.lineSpacingProperty().unbindBidirectional(lineSpacing.valueProperty());
                     }
                     currentElement = elements.get((Integer) t1);
                     choiceAlignment.setValue(currentElement.textAlignmentProperty().getValue());
@@ -311,9 +300,11 @@
                     rotation.setValue(currentElement.getRotate());
                     currentElement.rotateProperty().bindBidirectional(rotation.valueProperty());
                     width.setValue(currentElement.getWidth());
+                    lineSpacing.setValue(currentElement.getLineSpacing());
                     currentElement.maxWidthProperty().bindBidirectional(width.valueProperty());
                     currentElement.minWidthProperty().bindBidirectional(width.valueProperty());
                     currentElement.prefWidthProperty().bindBidirectional(width.valueProperty());
+                    currentElement.lineSpacingProperty().bindBidirectional(lineSpacing.valueProperty());
 
                 }
             });
@@ -351,6 +342,8 @@
             getChildren().add(rotation);
             getChildren().add(new Label("Width"));
             getChildren().add(width);
+            getChildren().add(new Label("lineSpacing"));
+            getChildren().add(lineSpacing);
             getChildren().add(showBorder);
             getChildren().add(clear);
             pages = new ChoiceBox<Pages>();
--- a/functional/SceneGraphTests/test/security/D3DRendererNativePointerTest.java	Tue Feb 12 17:57:19 2013 +0400
+++ b/functional/SceneGraphTests/test/security/D3DRendererNativePointerTest.java	Thu Jun 06 18:45:02 2013 +0400
@@ -1,64 +1,110 @@
-/*
- * Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- */
-package security;
-
-import java.lang.reflect.Constructor;
-import junit.framework.Assert;
-import org.junit.Test;
-import test.javaclient.shared.Utils;
-
-/**
- *
- * @author Sergey Grinev
- */
-public class D3DRendererNativePointerTest {
-    
-    private static final String D3D_REN = "com.sun.scenario.effect.impl.hw.d3d.D3DRendererDelegate";
-
-    @Test
-    public void issue14828433_long_boolean() {
-        try {
-            Class clazz = Class.forName(D3D_REN, false, ClassLoader.getSystemClassLoader());
-            Constructor constructor = clazz.getConstructor(new Class[]{long.class, boolean.class});
-            constructor.newInstance(0x30303030, true);
-        } catch (ReflectiveOperationException ex) {
-            ex.printStackTrace();
-            Assert.assertFalse("D3DRendererDelegate constructor wasn't found on Windows. Something wrong.", Utils.isWindows());
-        }
-    }
-
-    @Test
-    public void issue14828433_long() {
-        try {
-            Class clazz = Class.forName(D3D_REN, false, ClassLoader.getSystemClassLoader());
-            Constructor constructor = clazz.getConstructor(new Class[]{long.class});
-
-            https://bug.oraclecorp.com/pls/bug/webbug_print.show?c_rptno=14828433
-            constructor.newInstance(0x30303030);
-        } catch (ReflectiveOperationException ex) {
-            ex.printStackTrace();
-            Assert.assertFalse("D3DRendererDelegate constructor wasn't found on Windows. Something wrong.", Utils.isWindows());
-        }
-    }
-}
+ */
+package security;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.nio.ByteBuffer;
+import java.util.Map;
+import junit.framework.Assert;
+import org.junit.Test;
+
+/**
+ * This is test for issue https://bug.oraclecorp.com/pls/bug/webbug_print.show?c_rptno=14828433
+
+ * @author Sergey Grinev
+ */
+public class D3DRendererNativePointerTest {
+    
+    private static final String D3D_REN = "com.sun.scenario.effect.impl.hw.d3d.D3DRendererDelegate";
+
+    @Test
+    public void issue14828433_long_boolean() {
+        try {
+            Class clazz = Class.forName(D3D_REN, false, ClassLoader.getSystemClassLoader());
+
+            Constructor constructor = clazz.getConstructor(new Class[]{long.class, boolean.class});
+            Assert.assertEquals(D3D_REN + " constructor must be private.",  Modifier.PRIVATE, constructor.getModifiers() & Modifier.PRIVATE);
+            //constructor.newInstance(0x30303030, true);
+        } catch (NoSuchMethodException ex) {
+            ex.printStackTrace();
+            System.out.println("Absent constructor is a valid result.");
+            return;
+        } catch (ClassNotFoundException ex) {
+            ex.printStackTrace();
+            System.out.println("Absent " + D3D_REN + " class is a valid result.");
+            return;
+        }
+        Assert.fail();
+    }
+
+    @Test
+    public void issue14828433_long() {
+        try {
+            Class clazz = Class.forName(D3D_REN, false, ClassLoader.getSystemClassLoader());
+
+            Constructor constructor = clazz.getConstructor(new Class[]{long.class});
+            Assert.assertEquals(D3D_REN + " constructor must be private.",  Modifier.PRIVATE, constructor.getModifiers() & Modifier.PRIVATE);
+            //constructor.newInstance(0x30303030, true);
+        } catch (NoSuchMethodException ex) {
+            ex.printStackTrace();
+            System.out.println("Absent " + D3D_REN + " constructor is a valid result.");
+            return;
+        } catch (ClassNotFoundException ex) {
+            ex.printStackTrace();
+            System.out.println("Absent " + D3D_REN + " class is a valid result.");
+            return;
+        }
+        Assert.fail();
+    }
+    
+    private static final String D3D_TEXTURE = "com.sun.scenario.effect.impl.hw.d3d.D3DTexture";
+    
+    @Test
+    public void issue14828433_texture() {
+        // com.sun.scenario.effect.impl.hw.d3d.D3DTexture.create(0x30303030, 0, 0);
+        try {
+            Class clazz = Class.forName(D3D_TEXTURE, false, ClassLoader.getSystemClassLoader());
+            Method methodCreate = clazz.getMethod("create", new Class[] {long.class, int.class, int.class});
+            
+            //methodCreate.invoke(null, 0x30303030, 0, 0);
+            Assert.assertEquals(D3D_TEXTURE + "#create must be private.",  Modifier.PRIVATE, methodCreate.getModifiers() & Modifier.PRIVATE);
+            //constructor.newInstance(0x30303030, true);
+        } catch (NoSuchMethodException ex) {
+            ex.printStackTrace();
+            System.out.println("Absent " + D3D_TEXTURE + "#create method is a valid result.");
+            return;
+        } catch (ClassNotFoundException ex) {
+            ex.printStackTrace();
+            System.out.println("Absent " + D3D_TEXTURE + " class is a valid result.");
+            return;
+        }
+        Assert.fail();
+    }
+    
+    private static final String D3D_SHADER = "com.sun.scenario.effect.impl.hw.d3d.D3DShader";
+    @Test
+    public void issue14828433_shader() {
+        //new com.sun.scenario.effect.impl.hw.d3d.D3DShader(0x30303030, null, null);
+        try {
+            Class clazz = Class.forName(D3D_SHADER, false, ClassLoader.getSystemClassLoader());
+            Constructor constructor = clazz.getConstructor(new Class[]{long.class, ByteBuffer.class, Map.class});
+            
+            Assert.assertEquals(D3D_SHADER + " constructor must be private.",  Modifier.PRIVATE, constructor.getModifiers() & Modifier.PRIVATE);
+            //constructor.newInstance(0x30303030, null, null);
+        } catch (NoSuchMethodException ex) {
+            ex.printStackTrace();
+            System.out.println("Absent " + D3D_SHADER + " constructor is a valid result.");
+            return;
+        } catch (ClassNotFoundException ex) {
+            ex.printStackTrace();
+            System.out.println("Absent " + D3D_SHADER + " class is a valid result.");
+            return;
+        }
+        Assert.fail();
+    }
+    
+}
--- a/functional/SceneGraphTests/test/test/scenegraph/binding/BindingTestBase.java	Tue Feb 12 17:57:19 2013 +0400
+++ b/functional/SceneGraphTests/test/test/scenegraph/binding/BindingTestBase.java	Thu Jun 06 18:45:02 2013 +0400
@@ -1,41 +1,18 @@
 /*
- * Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
+ * Copyright (c) 2010-2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  */
 package test.scenegraph.binding;
 
-/*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- */
 import javafx.scene.Node;
 import javafx.scene.Parent;
 import javafx.scene.Scene;
 import javafx.scene.control.Button;
 import javafx.scene.control.ChoiceBox;
 import javafx.scene.control.Slider;
+import org.jemmy.control.Wrap;
 import org.jemmy.fx.Lookups;
 import org.jemmy.fx.Root;
-import org.jemmy.control.Wrap;
 import org.jemmy.image.Image;
 import org.junit.Before;
 import test.javaclient.shared.AppLauncher;
@@ -43,10 +20,10 @@
 import test.javaclient.shared.TestUtil;
 
 /**
- *
  * @author Sergey Grinev
  */
 public class BindingTestBase {
+
     static {
         test.javaclient.shared.Utils.initializeAwt();
     }
@@ -73,7 +50,6 @@
     private void prepare(Constraint c) {
         final Constraint _c = c;
         javafx.application.Platform.runLater(new Runnable() {
-
             public void run() {
                 final Wrap<? extends ChoiceBox> list = Lookups.byID(scene, "modelsList", ChoiceBox.class);
                 list.getControl().getSelectionModel().select(_c); // no wrap yet
@@ -91,7 +67,6 @@
         }
 
         btnApply.mouse().click();
-
     }
 
     public void commonTest(NumberConstraints c) {
@@ -137,25 +112,20 @@
 
         Image image = null;
         int idx = 0;
-        for (Object current :  cb.getControl().getItems()) {
+        for (Object current : cb.getControl().getItems()) {
             final Object _current = current;
-        javafx.application.Platform.runLater(new Runnable() {
+            javafx.application.Platform.runLater(new Runnable() {
+                public void run() {
+                    cb.getControl().getSelectionModel().select(_current);
+                    btnVerify.mouse().move();
+                    btnVerify.mouse().click();
+                }
+            });
+            try {
+                Thread.sleep(20);
+                //TODO: overwise jemmy misses very first click on apply...investigate
+            } catch (InterruptedException ex) {}
 
-            public void run() {
-            cb.getControl().getSelectionModel().select(_current);
-            btnVerify.mouse().move();
-            btnVerify.mouse().click();
-            }});
-        try {
-            Thread.sleep(20);
-            //TODO: overwise jemmy misses very first click on apply...investigate
-        } catch (InterruptedException ex) {
-        }
-
-        try {
-            Thread.sleep(200);
-            //TODO: overwise left(binded) scene dont have enough time to update
-        } catch (InterruptedException ex) {}
             TestUtil.compareScreenshots(new StringBuilder(getClass().getSimpleName()).append("-").append(c).append("-").append(idx++).toString(),
                     leftPane, rightPane);
 
@@ -168,4 +138,4 @@
             }
         }
     }
-}
+}
\ No newline at end of file
--- a/functional/SceneGraphTests/test/test/scenegraph/functional/SceneEventHandlersTest.java	Tue Feb 12 17:57:19 2013 +0400
+++ b/functional/SceneGraphTests/test/test/scenegraph/functional/SceneEventHandlersTest.java	Thu Jun 06 18:45:02 2013 +0400
@@ -1,612 +1,593 @@
-/*
- * Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- */
-package test.scenegraph.functional;
-
-import com.sun.glass.ui.Robot;
-import java.util.EnumMap;
-import java.util.Map;
-import org.jemmy.Point;
-import javafx.scene.control.*;
-import org.jemmy.interfaces.Mouse;
-import org.jemmy.interfaces.Keyboard;
-import org.jemmy.action.GetAction;
-import org.jemmy.control.Wrap;
-import org.jemmy.fx.Lookups;
-import org.jemmy.fx.Root;
-import org.jemmy.fx.control.ComboBoxWrap;
-import org.jemmy.fx.control.TextControlWrap;
-import org.jemmy.timing.State;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import static test.javaclient.shared.JemmyUtils.runInOtherJVM;
-import test.javaclient.shared.TestBase;
-import test.javaclient.shared.Utils;
-import test.scenegraph.app.SceneEventHandlersApp;
-import test.scenegraph.app.SceneEventHandlersApp.EventTypes;
-
-
-/**
- *
- * @author Aleksandr Sakharuk
- */
-public class SceneEventHandlersTest extends TestBase
-{
-   static boolean isInitDone = false;
-    
-    @BeforeClass
-    public static void RunUI() 
-    {
-        SceneEventHandlersApp.main();
-    }
-    
-    @Override
-    @Before
-    public void before()
-    {
-        super.before();
-        actionButton = Lookups.byID(scene, SceneEventHandlersApp.ACTION_BUTTON_ID, Button.class).as(TextControlWrap.class);
-        eventCombo = Lookups.byID(scene, SceneEventHandlersApp.EVENTS_COMBO_ID, ComboBox.class).as(ComboBoxWrap.class);
-        dragSource = Lookups.byID(scene, SceneEventHandlersApp.DRAG_SOURCE_ID, TextField.class);
-        dropTarget = Lookups.byID(scene, SceneEventHandlersApp.DROP_TARGET_ID, TextField.class);
-        for(EventTypes t: EventTypes.values())
-        {
-            controlLabels.put(t, Lookups.byID(scene, t.toString(), Label.class).as(TextControlWrap.class));
-        }
-//        System.out.println("Initialization done");
-//        if (false == isInitDone) {
-//            eventCombo.selector().select(EventTypes.ACTION);
-//            isInitDone = true;
-//        }
-    }
-    
-    @Test
-    public void testAction()
-    {
-        verify(EventTypes.ACTION, new FireCommand<TextControlWrap>(actionButton) {
-
-            @Override
-            public void invoke() {
-                actionButton.mouse().click();
-            }
-        });
-    }
-    
-    @Test
-    public void testContextMenuRequested()
-    {
-        verify(EventTypes.CONTEXT_MENU_REQUESTED, new FireCommand<TextControlWrap>(actionButton) {
-
-            @Override
-            public void invoke() {
-//                System.out.println("Clicking");
-                actionButton.mouse().click(1, new Point(0, 0), Mouse.MouseButtons.BUTTON3);
-            }
-        });
-    }
-    
-    @Test
-    public void testDragDone()
-    {
-        verify(EventTypes.DRAG_DONE, new FireCommand<Wrap>(dragSource) {
-
-            @Override
-            public void invoke() {
-                try 
-                {
-                    dnd(dragSource, dragSource.getClickPoint(), scene, scene.getClickPoint());
-                } 
-                catch (InterruptedException ex) 
-                {
-                    System.err.println("Interrupted while drug.");
-                }
-            }
-        });
-    }
-    
-    @Test
-    public void testDragDroped()
-    {
-        verify(EventTypes.DRAG_DROPPED, new FireCommand<Wrap>(dragSource) {
-
-            @Override
-            public void invoke() {
-                try 
-                {
-                    dnd(dragSource, dragSource.getClickPoint(), dropTarget, dropTarget.getClickPoint());
-                } 
-                catch (InterruptedException ex) 
-                {
-                    System.err.println("Interrupted while drug.");
-                }
-            }
-        });
-    }
-    
-    @Test
-    public void testDragEntered()
-    {
-        verify(EventTypes.DRAG_ENTERED, new FireCommand<Wrap>(dragSource) {
-
-            @Override
-            public void invoke() {
-                try 
-                {
-                    dnd(dragSource, dragSource.getClickPoint(), scene, scene.getClickPoint());
-                } 
-                catch (InterruptedException ex) 
-                {
-                    System.err.println("Interrupted while drug.");
-                }
-            }
-        });
-    }
-    @Test
-    public void testDragEnteredTarget()
-    {
-        verify(EventTypes.DRAG_ENTERED_TARGET, new FireCommand<Wrap>(dragSource) {
-
-            @Override
-            public void invoke() {
-                try 
-                {
-                    dnd(dragSource, dragSource.getClickPoint(), scene, scene.getClickPoint());
-                } 
-                catch (InterruptedException ex) 
-                {
-                    System.err.println("Interrupted while drug.");
-                }
-            }
-        });
-    }
-    
-    @Test
-    public void testDragExited()
-    {
-        verify(EventTypes.DRAG_EXITED, new FireCommand<Wrap>(dragSource) {
-
-            @Override
-            public void invoke() {
-                try 
-                {
-                    dnd(dragSource, dragSource.getClickPoint(), scene, new Point(-25, -25));
-                } 
-                catch (InterruptedException ex) 
-                {
-                    System.err.println("Interrupted while drug.");
-                }
-            }
-        });
-    }
-    
-    @Test
-    public void testDragExitedTarget()
-    {
-        verify(EventTypes.DRAG_EXITED_TARGET, new FireCommand<Wrap>(dragSource) {
-
-            @Override
-            public void invoke() {
-                try 
-                {
-                    dnd(dragSource, dragSource.getClickPoint(), scene, new Point(-25, -25));
-                } 
-                catch (InterruptedException ex) 
-                {
-                    System.err.println("Interrupted while drug.");
-                }
-            }
-        });
-    }
-    
-    @Test
-    public void testDragOver()
-    {
-        verify(EventTypes.DRAG_OVER, new FireCommand<Wrap>(dragSource) {
-
-            @Override
-            public void invoke() {
-                try 
-                {
-                    dnd(dragSource, dragSource.getClickPoint(), scene, scene.getClickPoint());
-                } 
-                catch (InterruptedException ex) 
-                {
-                    System.err.println("Interrupted while drug.");
-                }
-            }
-        });
-    }
-    
-    @Test
-    public void testKeyPressed()
-    {
-        verify(EventTypes.KEY_PRESSED, new FireCommand<Wrap>(scene) {
-
-            @Override
-            public void invoke() {
-                actionButton.mouse().click();
-                scene.keyboard().pressKey(Keyboard.KeyboardButtons.A);
-                scene.keyboard().releaseKey(Keyboard.KeyboardButtons.A);
-            }
-        });
-    }
-    
-    @Test
-    public void testKeyReleased()
-    {
-        verify(EventTypes.KEY_RELEASED, new FireCommand<Wrap>(scene) {
-
-            @Override
-            public void invoke() {
-                actionButton.mouse().click();
-                scene.keyboard().pressKey(Keyboard.KeyboardButtons.B);
-                scene.keyboard().releaseKey(Keyboard.KeyboardButtons.B);
-            }
-        });
-    }
-    
-    @Test
-    public void testKeyTyped()
-    {
-        verify(EventTypes.KEY_TYPED, new FireCommand<Wrap>(scene) {
-
-            @Override
-            public void invoke() {
-                actionButton.mouse().click();
-                scene.keyboard().pushKey(Keyboard.KeyboardButtons.A);
-            }
-        });
-    }
-    
-    @Test
-    public void testDragDetected()
-    {
-        verify(EventTypes.DRAG_DETECTED, new FireCommand<Wrap>(scene) {
-
-            @Override
-            public void invoke() {
-                scene.mouse().move(new Point(100, 100));
-                scene.mouse().press(Mouse.MouseButtons.BUTTON1);
-                scene.mouse().move(new Point(110, 110));
-                scene.mouse().release(Mouse.MouseButtons.BUTTON1);
-            }
-        });
-    }
-    
-    @Test
-    public void testMouseClicked()
-    {
-        verify(EventTypes.MOUSE_CLICKED, new FireCommand<Wrap>(scene) {
-
-            @Override
-            public void invoke() {
-                scene.mouse().click();
-            }
-        });
-    }
-    
-    @Test
-    public void testMouseDraged()
-    {
-        verify(EventTypes.MOUSE_DRAGGED, new FireCommand<Wrap>(scene) {
-
-            @Override
-            public void invoke() {
-                scene.mouse().move(new Point(100, 100));
-                scene.mouse().press(Mouse.MouseButtons.BUTTON1);
-                scene.mouse().move(new Point(110, 110));
-                scene.mouse().release(Mouse.MouseButtons.BUTTON1);
-            }
-        });
-    }
-    
-    @Test
-    public void testMouseEntered()
-    {
-        verify(EventTypes.MOUSE_ENTERED, new FireCommand<Wrap>(scene) {
-
-            @Override
-            public void invoke() {
-                int x = -25, y = -25;
-                for(; x <= 25; y = x = x + 1)
-                {
-                    scene.mouse().move(new Point(x, y));
-                }
-            }
-        });
-    }
-    
-    @Test
-    public void testMouseEnteredTarget()
-    {
-        verify(EventTypes.MOUSE_ENTERED_TARGET, new FireCommand<Wrap>(scene) {
-
-            @Override
-            public void invoke() {
-                int x = -25, y = -25;
-                for(; x <= 25; y = x = x + 1)
-                {
-                    scene.mouse().move(new Point(x, y));
-                }
-            }
-        });
-    }
-    
-    @Test
-    public void testMouseExited()
-    {
-        verify(EventTypes.MOUSE_EXITED, new FireCommand<Wrap>(scene) {
-
-            @Override
-            public void invoke() {
-                int x = 25, y = 25;
-                for(; x >= -25; y = x = x - 1)
-                {
-                    scene.mouse().move(new Point(x, y));
-                }
-            }
-        });
-    }
-    
-    @Test
-    public void testMouseExitedTarget()
-    {
-        verify(EventTypes.MOUSE_EXITED_TARGET, new FireCommand<Wrap>(scene) {
-
-            @Override
-            public void invoke() {
-                int x = 25, y = 25;
-                for(; x >= -25; y = x = x - 1)
-                {
-                    scene.mouse().move(new Point(x, y));
-                }
-            }
-        });
-    }
-    
-    @Test
-    public void testMouseMoved()
-    {
-        verify(EventTypes.MOUSE_MOVED, new FireCommand<Wrap>(scene) {
-
-            @Override
-            public void invoke() {
-                int x = 100, y = 100;
-                for(; x <= 110; y = x = x + 1)
-                {
-                    scene.mouse().move(new Point(x, y));
-                }
-            }
-        });
-    }
-    
-    @Test
-    public void testMousePressed()
-    {
-        verify(EventTypes.MOUSE_PRESSED, new FireCommand<Wrap>(scene) {
-
-            @Override
-            public void invoke() {
-                scene.mouse().press();
-                scene.mouse().release();
-            }
-        });
-    }
-    
-    @Test
-    public void testMouseReleased()
-    {
-        verify(EventTypes.MOUSE_RELEASED, new FireCommand<Wrap>(scene) {
-
-            @Override
-            public void invoke() {
-                scene.mouse().press();
-                scene.mouse().release();
-            }
-        });
-    }
-    
-    @Test
-    public void testMouseDragEntered()
-    {
-        verify(EventTypes.MOUSE_DRAG_ENTERED, new FireCommand<Wrap>(scene) {
-
-            @Override
-            public void invoke() {
-                scene.drag().dnd(new Point(100, 100), scene, new Point(50, 50));
-            }
-        });
-    }
-    
-    @Test
-    public void testMouseDragEnteredTarget()
-    {
-        verify(EventTypes.MOUSE_DRAG_ENTERED_TARGET, new FireCommand<Wrap>(scene) {
-
-            @Override
-            public void invoke() {
-                scene.drag().dnd(new Point(100, 100), scene, new Point(50, 50));
-            }
-        });
-    }
-    
-    @Test
-    public void testMouseDragExited()
-    {
-        verify(EventTypes.MOUSE_DRAG_EXITED, new FireCommand<Wrap>(scene) {
-
-            @Override
-            public void invoke() {
-                scene.drag().dnd(new Point(25, 25), scene, new Point(-25, -25));
-            }
-        });
-    }
-    
-    @Test
-    public void testMouseDragExitedTarget()
-    {
-        verify(EventTypes.MOUSE_DRAG_EXITED_TARGET, new FireCommand<Wrap>(scene) {
-
-            @Override
-            public void invoke() {
-                scene.drag().dnd(new Point(25, 25), scene, new Point(-25, -25));
-            }
-        });
-    }
-    
-    @Test
-    public void testMouseDragOver()
-    {
-        verify(EventTypes.MOUSE_DRAG_OVER, new FireCommand<Wrap>(scene) {
-
-            @Override
-            public void invoke() {
-                scene.drag().dnd(new Point(100, 100), scene, new Point(50, 50));
-            }
-        });
-    }
-    
-    @Test
-    public void testMouseDragReleased()
-    {
-        verify(EventTypes.MOUSE_DRAG_RELEASED, new FireCommand<Wrap>(scene) {
-
-            @Override
-            public void invoke() {
-                scene.drag().dnd(new Point(100, 100), scene, new Point(50, 50));
-            }
-        });
-    }
-    
-    @Test
-    public void testScroll()
-    {
-        verify(EventTypes.SCROLL, new FireCommand<Wrap>(scene) {
-
-            @Override
-            public void invoke() {
-                scene.mouse().turnWheel(1);
-            }
-        });
-    }
-    
-    private void verify(final EventTypes eventType, FireCommand<?> fire)
-    {
-//        Selection with selectors doesn't work at least on Ubuntu. 
-//        But work well on Windows. 
-//        eventCombo.selector().select(eventType);
-        new GetAction<Object>() {
-
-            @Override
-            public void run(Object... os) throws Exception {
-                eventCombo.getControl().setValue(eventType);
-            }
-        }.dispatch(Root.ROOT.getEnvironment(), (Object[])null);
-        fire.invoke();
-        final TextControlWrap<Label> lb = controlLabels.get(eventType);
-        lb.waitState(new State<String>() {
-
-            public String reached() {
-                return lb.getControl().getStyle();
-            }
-        }, SceneEventHandlersApp.HANDLED_STYLE);
-    }
-    
-    protected void dnd(Wrap from, Point from_point, Wrap to, Point to_point) throws InterruptedException {
-            final int STEPS = 50;
-//        if (!Utils.isGlassRobotAvailable()) {
-//            System.err.println("Use jemmy robot");
-//            from.mouse().move(from_point);
-//            from.mouse().press();
-//            int differenceX = to.toAbsolute(to_point).x - from.toAbsolute(from_point).x;
-//            int differenceY = to.toAbsolute(to_point).y - from.toAbsolute(from_point).y;
-//            Mouse mouse = from.mouse();
-//            for (int i = 0; i <= STEPS; i++) {
-//                mouse.move(new Point(from_point.x + differenceX * i / STEPS, from_point.y + differenceY * i / STEPS));
-//                Thread.sleep(20);
-//            }
-//            from.mouse().release();
-//        } else
-        {
-//            System.out.println("Draging");
-            System.err.println("Use glass robot");
-            Point abs_from_point = new Point(from_point);
-            abs_from_point.translate((int)from.getScreenBounds().getX(), (int)from.getScreenBounds().getY());
-            Point abs_to_point = new Point(to_point);
-            abs_to_point.translate((int)to.getScreenBounds().getX(), (int)to.getScreenBounds().getY());
-            if (robot == null) {
-                robot = com.sun.glass.ui.Application.GetApplication().createRobot(); // can not beDrag sourceDrag source done in static block due to initialization problems on Mac
-            }
-            robot.mouseMove(abs_from_point.x, abs_from_point.y);
-            robot.mousePress(1);
-            int differenceX = abs_to_point.x - abs_from_point.x;
-            int differenceY = abs_to_point.y - abs_from_point.y;
-            for (int i = 0; i <= STEPS; i++) {
-                robot.mouseMove(abs_from_point.x + differenceX * i / STEPS, abs_from_point.y + differenceY * i / STEPS);
-                Thread.sleep(20);
-            }
-//            System.out.println("Releasing");
-            robot.mouseRelease(1);
-        }
-        //Thread.sleep(1000);
-    }
-    
-    private TextControlWrap<Button> actionButton;
-    private ComboBoxWrap<ComboBox> eventCombo;
-    //private TextInputControlWrap<TextField> dragSource;
-    //private TextInputControlWrap<TextField> dropTarget;
-    private Wrap<? extends TextInputControl> dragSource;
-    private Wrap<? extends TextInputControl> dropTarget;
-    private Map<EventTypes, TextControlWrap<Label>> controlLabels = new EnumMap<EventTypes, TextControlWrap<Label>>(EventTypes.class);
-    
-    static Robot robot = null;
-    static 
-    {
-        if (Utils.isMacOS()) 
-        {
-            //AWTRobotInputFactory.runInOtherJVM(true);
-            runInOtherJVM(true);
-        }
-    }
-    
-}
-
-abstract class FireCommand<T>
-{
-    
-    public FireCommand(T wrap)
-    {
-        this.wrap = wrap;
-    }
-    
-    public abstract void invoke();
-    
-    public T getWrap()
-    {
-        return wrap;
-    }
-    
-    private T wrap;
-    
-}
+ */
+package test.scenegraph.functional;
+
+import com.sun.glass.ui.Robot;
+import java.util.EnumMap;
+import java.util.Map;
+import javafx.scene.control.*;
+import org.jemmy.Point;
+import org.jemmy.action.GetAction;
+import org.jemmy.control.Wrap;
+import org.jemmy.fx.Lookups;
+import org.jemmy.fx.Root;
+import org.jemmy.fx.control.ComboBoxWrap;
+import org.jemmy.fx.control.TextControlWrap;
+import org.jemmy.interfaces.Keyboard;
+import org.jemmy.interfaces.Mouse;
+import org.jemmy.timing.State;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import test.javaclient.shared.TestBase;
+import test.javaclient.shared.Utils;
+import test.scenegraph.app.SceneEventHandlersApp;
+import static test.javaclient.shared.JemmyUtils.runInOtherJVM;
+
+import static test.scenegraph.app.SceneEventHandlersApp.EventTypes;
+
+/**
+ *
+ * @author Aleksandr Sakharuk
+ */
+public class SceneEventHandlersTest extends TestBase
+{
+   static boolean isInitDone = false;
+    
+    @BeforeClass
+    public static void RunUI() 
+    {
+        SceneEventHandlersApp.main();
+    }
+    
+    @Override
+    @Before
+    public void before()
+    {
+        super.before();
+        actionButton = Lookups.byID(scene, SceneEventHandlersApp.ACTION_BUTTON_ID, Button.class).as(TextControlWrap.class);
+        eventCombo = Lookups.byID(scene, SceneEventHandlersApp.EVENTS_COMBO_ID, ComboBox.class).as(ComboBoxWrap.class);
+        dragSource = Lookups.byID(scene, SceneEventHandlersApp.DRAG_SOURCE_ID, TextField.class);
+        dropTarget = Lookups.byID(scene, SceneEventHandlersApp.DROP_TARGET_ID, TextField.class);
+        for(EventTypes t: EventTypes.values())
+        {
+            controlLabels.put(t, Lookups.byID(scene, t.toString(), Label.class).as(TextControlWrap.class));
+        }
+//        System.out.println("Initialization done");
+//        if (false == isInitDone) {
+//            eventCombo.selector().select(EventTypes.ACTION);
+//            isInitDone = true;
+//        }
+    }
+    
+    @Test
+    public void testAction()
+    {
+        verify(EventTypes.ACTION, new FireCommand<TextControlWrap>(actionButton) {
+
+            @Override
+            public void invoke() {
+                actionButton.mouse().click();
+            }
+        });
+    }
+    
+    @Test
+    public void testContextMenuRequested()
+    {
+        verify(EventTypes.CONTEXT_MENU_REQUESTED, new FireCommand<TextControlWrap>(actionButton) {
+
+            @Override
+            public void invoke() {
+//                System.out.println("Clicking");
+                actionButton.mouse().click(1, new Point(0, 0), Mouse.MouseButtons.BUTTON3);
+            }
+        });
+    }
+    
+    @Test
+    public void testDragDone()
+    {
+        verify(EventTypes.DRAG_DONE, new FireCommand<Wrap>(dragSource) {
+
+            @Override
+            public void invoke() {
+                try 
+                {
+                    dnd(dragSource, dragSource.getClickPoint(), scene, scene.getClickPoint());
+                } 
+                catch (InterruptedException ex) 
+                {
+                    System.err.println("Interrupted while drug.");
+                }
+            }
+        });
+    }
+    
+    @Test
+    public void testDragDroped()
+    {
+        verify(EventTypes.DRAG_DROPPED, new FireCommand<Wrap>(dragSource) {
+
+            @Override
+            public void invoke() {
+                try 
+                {
+                    dnd(dragSource, dragSource.getClickPoint(), dropTarget, dropTarget.getClickPoint());
+                } 
+                catch (InterruptedException ex) 
+                {
+                    System.err.println("Interrupted while drug.");
+                }
+            }
+        });
+    }
+    
+    @Test
+    public void testDragEntered()
+    {
+        verify(EventTypes.DRAG_ENTERED, new FireCommand<Wrap>(dragSource) {
+
+            @Override
+            public void invoke() {
+                try 
+                {
+                    dnd(dragSource, dragSource.getClickPoint(), scene, scene.getClickPoint());
+                } 
+                catch (InterruptedException ex) 
+                {
+                    System.err.println("Interrupted while drug.");
+                }
+            }
+        });
+    }
+    @Test
+    public void testDragEnteredTarget()
+    {
+        verify(EventTypes.DRAG_ENTERED_TARGET, new FireCommand<Wrap>(dragSource) {
+
+            @Override
+            public void invoke() {
+                try 
+                {
+                    dnd(dragSource, dragSource.getClickPoint(), scene, scene.getClickPoint());
+                } 
+                catch (InterruptedException ex) 
+                {
+                    System.err.println("Interrupted while drug.");
+                }
+            }
+        });
+    }
+    
+    @Test
+    public void testDragExited()
+    {
+        verify(EventTypes.DRAG_EXITED, new FireCommand<Wrap>(dragSource) {
+
+            @Override
+            public void invoke() {
+                try 
+                {
+                    dnd(dragSource, dragSource.getClickPoint(), scene, new Point(-25, -25));
+                } 
+                catch (InterruptedException ex) 
+                {
+                    System.err.println("Interrupted while drug.");
+                }
+            }
+        });
+    }
+    
+    @Test
+    public void testDragExitedTarget()
+    {
+        verify(EventTypes.DRAG_EXITED_TARGET, new FireCommand<Wrap>(dragSource) {
+
+            @Override
+            public void invoke() {
+                try 
+                {
+                    dnd(dragSource, dragSource.getClickPoint(), scene, new Point(-25, -25));
+                } 
+                catch (InterruptedException ex) 
+                {
+                    System.err.println("Interrupted while drug.");
+                }
+            }
+        });
+    }
+    
+    @Test
+    public void testDragOver()
+    {
+        verify(EventTypes.DRAG_OVER, new FireCommand<Wrap>(dragSource) {
+
+            @Override
+            public void invoke() {
+                try 
+                {
+                    dnd(dragSource, dragSource.getClickPoint(), scene, scene.getClickPoint());
+                } 
+                catch (InterruptedException ex) 
+                {
+                    System.err.println("Interrupted while drug.");
+                }
+            }
+        });
+    }
+    
+    @Test
+    public void testKeyPressed()
+    {
+        verify(EventTypes.KEY_PRESSED, new FireCommand<Wrap>(scene) {
+
+            @Override
+            public void invoke() {
+                actionButton.mouse().click();
+                scene.keyboard().pressKey(Keyboard.KeyboardButtons.A);
+                scene.keyboard().releaseKey(Keyboard.KeyboardButtons.A);
+            }
+        });
+    }
+    
+    @Test
+    public void testKeyReleased()
+    {
+        verify(EventTypes.KEY_RELEASED, new FireCommand<Wrap>(scene) {
+
+            @Override
+            public void invoke() {
+                actionButton.mouse().click();
+                scene.keyboard().pressKey(Keyboard.KeyboardButtons.B);
+                scene.keyboard().releaseKey(Keyboard.KeyboardButtons.B);
+            }
+        });
+    }
+    
+    @Test
+    public void testKeyTyped()
+    {
+        verify(EventTypes.KEY_TYPED, new FireCommand<Wrap>(scene) {
+
+            @Override
+            public void invoke() {
+                actionButton.mouse().click();
+                scene.keyboard().pushKey(Keyboard.KeyboardButtons.A);
+            }
+        });
+    }
+    
+    @Test
+    public void testDragDetected()
+    {
+        verify(EventTypes.DRAG_DETECTED, new FireCommand<Wrap>(scene) {
+
+            @Override
+            public void invoke() {
+                scene.mouse().move(new Point(100, 100));
+                scene.mouse().press(Mouse.MouseButtons.BUTTON1);
+                scene.mouse().move(new Point(110, 110));
+                scene.mouse().release(Mouse.MouseButtons.BUTTON1);
+            }
+        });
+    }
+    
+    @Test
+    public void testMouseClicked()
+    {
+        verify(EventTypes.MOUSE_CLICKED, new FireCommand<Wrap>(scene) {
+
+            @Override
+            public void invoke() {
+                scene.mouse().click();
+            }
+        });
+    }
+    
+    @Test
+    public void testMouseDraged()
+    {
+        verify(EventTypes.MOUSE_DRAGGED, new FireCommand<Wrap>(scene) {
+
+            @Override
+            public void invoke() {
+                scene.mouse().move(new Point(100, 100));
+                scene.mouse().press(Mouse.MouseButtons.BUTTON1);
+                scene.mouse().move(new Point(110, 110));
+                scene.mouse().release(Mouse.MouseButtons.BUTTON1);
+            }
+        });
+    }
+    
+    @Test
+    public void testMouseEntered()
+    {
+        verify(EventTypes.MOUSE_ENTERED, new FireCommand<Wrap>(scene) {
+
+            @Override
+            public void invoke() {
+                int x = -25, y = -25;
+                for(; x <= 25; y = x = x + 1)
+                {
+                    scene.mouse().move(new Point(x, y));
+                }
+            }
+        });
+    }
+    
+    @Test
+    public void testMouseEnteredTarget()
+    {
+        verify(EventTypes.MOUSE_ENTERED_TARGET, new FireCommand<Wrap>(scene) {
+
+            @Override
+            public void invoke() {
+                int x = -25, y = -25;
+                for(; x <= 25; y = x = x + 1)
+                {
+                    scene.mouse().move(new Point(x, y));
+                }
+            }
+        });
+    }
+    
+    @Test
+    public void testMouseExited()
+    {
+        verify(EventTypes.MOUSE_EXITED, new FireCommand<Wrap>(scene) {
+
+            @Override
+            public void invoke() {
+                int x = 25, y = 25;
+                for(; x >= -25; y = x = x - 1)
+                {
+                    scene.mouse().move(new Point(x, y));
+                }
+            }
+        });
+    }
+    
+    @Test
+    public void testMouseExitedTarget()
+    {
+        verify(EventTypes.MOUSE_EXITED_TARGET, new FireCommand<Wrap>(scene) {
+
+            @Override
+            public void invoke() {
+                int x = 25, y = 25;
+                for(; x >= -25; y = x = x - 1)
+                {
+                    scene.mouse().move(new Point(x, y));
+                }
+            }
+        });
+    }
+    
+    @Test
+    public void testMouseMoved()
+    {
+        verify(EventTypes.MOUSE_MOVED, new FireCommand<Wrap>(scene) {
+
+            @Override
+            public void invoke() {
+                int x = 100, y = 100;
+                for(; x <= 110; y = x = x + 1)
+                {
+                    scene.mouse().move(new Point(x, y));
+                }
+            }
+        });
+    }
+    
+    @Test
+    public void testMousePressed()
+    {
+        verify(EventTypes.MOUSE_PRESSED, new FireCommand<Wrap>(scene) {
+
+            @Override
+            public void invoke() {
+                scene.mouse().press();
+                scene.mouse().release();
+            }
+        });
+    }
+    
+    @Test
+    public void testMouseReleased()
+    {
+        verify(EventTypes.MOUSE_RELEASED, new FireCommand<Wrap>(scene) {
+
+            @Override
+            public void invoke() {
+                scene.mouse().press();
+                scene.mouse().release();
+            }
+        });
+    }
+    
+    @Test
+    public void testMouseDragEntered()
+    {
+        verify(EventTypes.MOUSE_DRAG_ENTERED, new FireCommand<Wrap>(scene) {
+
+            @Override
+            public void invoke() {
+                scene.drag().dnd(new Point(100, 100), scene, new Point(50, 50));
+            }
+        });
+    }
+    
+    @Test
+    public void testMouseDragEnteredTarget()
+    {
+        verify(EventTypes.MOUSE_DRAG_ENTERED_TARGET, new FireCommand<Wrap>(scene) {
+
+            @Override
+            public void invoke() {
+                scene.drag().dnd(new Point(100, 100), scene, new Point(50, 50));
+            }
+        });
+    }
+    
+    @Test
+    public void testMouseDragExited()
+    {
+        verify(EventTypes.MOUSE_DRAG_EXITED, new FireCommand<Wrap>(scene) {
+
+            @Override
+            public void invoke() {
+                scene.drag().dnd(new Point(25, 25), scene, new Point(-25, -25));
+            }
+        });
+    }
+    
+    @Test
+    public void testMouseDragExitedTarget()
+    {
+        verify(EventTypes.MOUSE_DRAG_EXITED_TARGET, new FireCommand<Wrap>(scene) {
+
+            @Override
+            public void invoke() {
+                scene.drag().dnd(new Point(25, 25), scene, new Point(-25, -25));
+            }
+        });
+    }
+    
+    @Test
+    public void testMouseDragOver()
+    {
+        verify(EventTypes.MOUSE_DRAG_OVER, new FireCommand<Wrap>(scene) {
+
+            @Override
+            public void invoke() {
+                scene.drag().dnd(new Point(100, 100), scene, new Point(50, 50));
+            }
+        });
+    }
+    
+    @Test
+    public void testMouseDragReleased()
+    {
+        verify(EventTypes.MOUSE_DRAG_RELEASED, new FireCommand<Wrap>(scene) {
+
+            @Override
+            public void invoke() {
+                scene.drag().dnd(new Point(100, 100), scene, new Point(50, 50));
+            }
+        });
+    }
+    
+    @Test
+    public void testScroll()
+    {
+        verify(EventTypes.SCROLL, new FireCommand<Wrap>(scene) {
+
+            @Override
+            public void invoke() {
+                scene.mouse().turnWheel(1);
+            }
+        });
+    }
+    
+    private void verify(final EventTypes eventType, FireCommand<?> fire)
+    {
+//        Selection with selectors doesn't work at least on Ubuntu. 
+//        But work well on Windows. 
+//        eventCombo.selector().select(eventType);
+        new GetAction<Object>() {
+
+            @Override
+            public void run(Object... os) throws Exception {
+                eventCombo.getControl().setValue(eventType);
+            }
+        }.dispatch(Root.ROOT.getEnvironment(), (Object[])null);
+        fire.invoke();
+        final TextControlWrap<Label> lb = controlLabels.get(eventType);
+        lb.waitState(new State<String>() {
+
+            public String reached() {
+                return lb.getControl().getStyle();
+            }
+        }, SceneEventHandlersApp.HANDLED_STYLE);
+    }
+    
+    protected void dnd(Wrap from, Point from_point, Wrap to, Point to_point) throws InterruptedException {
+            final int STEPS = 50;
+//        if (!Utils.isGlassRobotAvailable()) {
+//            System.err.println("Use jemmy robot");
+//            from.mouse().move(from_point);
+//            from.mouse().press();
+//            int differenceX = to.toAbsolute(to_point).x - from.toAbsolute(from_point).x;
+//            int differenceY = to.toAbsolute(to_point).y - from.toAbsolute(from_point).y;
+//            Mouse mouse = from.mouse();
+//            for (int i = 0; i <= STEPS; i++) {
+//                mouse.move(new Point(from_point.x + differenceX * i / STEPS, from_point.y + differenceY * i / STEPS));
+//                Thread.sleep(20);
+//            }
+//            from.mouse().release();
+//        } else
+        {
+//            System.out.println("Draging");
+            System.err.println("Use glass robot");
+            Point abs_from_point = new Point(from_point);
+            abs_from_point.translate((int)from.getScreenBounds().getX(), (int)from.getScreenBounds().getY());
+            Point abs_to_point = new Point(to_point);
+            abs_to_point.translate((int)to.getScreenBounds().getX(), (int)to.getScreenBounds().getY());
+            if (robot == null) {
+                robot = com.sun.glass.ui.Application.GetApplication().createRobot(); // can not beDrag sourceDrag source done in static block due to initialization problems on Mac
+            }
+            robot.mouseMove(abs_from_point.x, abs_from_point.y);
+            robot.mousePress(1);
+            int differenceX = abs_to_point.x - abs_from_point.x;
+            int differenceY = abs_to_point.y - abs_from_point.y;
+            for (int i = 0; i <= STEPS; i++) {
+                robot.mouseMove(abs_from_point.x + differenceX * i / STEPS, abs_from_point.y + differenceY * i / STEPS);
+                Thread.sleep(20);
+            }
+//            System.out.println("Releasing");
+            robot.mouseRelease(1);
+        }
+        //Thread.sleep(1000);
+    }
+    
+    private TextControlWrap<Button> actionButton;
+    private ComboBoxWrap<ComboBox> eventCombo;
+    //private TextInputControlWrap<TextField> dragSource;
+    //private TextInputControlWrap<TextField> dropTarget;
+    private Wrap<? extends TextInputControl> dragSource;
+    private Wrap<? extends TextInputControl> dropTarget;
+    private Map<EventTypes, TextControlWrap<Label>> controlLabels = new EnumMap<EventTypes, TextControlWrap<Label>>(EventTypes.class);
+    
+    static Robot robot = null;
+    static 
+    {
+        if (Utils.isMacOS()) 
+        {
+            //AWTRobotInputFactory.runInOtherJVM(true);
+            runInOtherJVM(true);
+        }
+    }
+    
+}
+
+abstract class FireCommand<T>
+{
+    
+    public FireCommand(T wrap)
+    {
+        this.wrap = wrap;
+    }
+    
+    public abstract void invoke();
+    
+    public T getWrap()
+    {
+        return wrap;
+    }
+    
+    private T wrap;
+    
+}
--- a/functional/SceneGraphTests/test/test/scenegraph/richtext/RichTextLabeledsTest.java	Tue Feb 12 17:57:19 2013 +0400
+++ b/functional/SceneGraphTests/test/test/scenegraph/richtext/RichTextLabeledsTest.java	Thu Jun 06 18:45:02 2013 +0400
@@ -1,25 +1,6 @@
 /*
- * Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  */
 package test.scenegraph.richtext;
 
@@ -53,6 +34,9 @@
         throwErrors();
     }
 
+    /**
+     * Test for changing text of inner Text node and Labeled node.
+     */
     @Test(timeout = 10000)
     public void textChangeTest() {
         setFlowWidth(RichTextPropertiesApp.paneWidth);
@@ -68,6 +52,9 @@
         check("textChangeTest");
     }
 
+    /**
+     * Test for changing style of inner Text node and Labeled node.
+     */
     @Test(timeout = 10000)
     public void stylesTest() {
         setFlowWidth(RichTextPropertiesApp.paneWidth);
@@ -83,6 +70,9 @@
         check("stylesTest");
     }
 
+    /**
+     * Test for changing font of inner Text node and Labeled node.
+     */
     @Test(timeout = 10000)
     public void fontTest() {
         setFlowWidth(RichTextPropertiesApp.paneWidth);
--- a/functional/SceneGraphTests/test/test/scenegraph/richtext/RichTextMixedTest.java	Tue Feb 12 17:57:19 2013 +0400
+++ b/functional/SceneGraphTests/test/test/scenegraph/richtext/RichTextMixedTest.java	Thu Jun 06 18:45:02 2013 +0400
@@ -1,25 +1,6 @@
 /*
- * Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  */
 package test.scenegraph.richtext;
 
@@ -54,6 +35,9 @@
         throwErrors();
     }
 
+    /**
+     * Test for adding differents nodes in TextFlow.
+     */
     @Test(timeout = 40000)
     public void mixedAddTest() {
 
@@ -88,6 +72,9 @@
         check("mixedAddTest");
     }
 
+    /**
+     * Test for rotation differents nodes in TextFlow.
+     */
     @Test(timeout = 60000)
     public void miltipleRotationTest() {
         setFlowBorder(true);
@@ -102,7 +89,10 @@
         check("miltipleRotationTest");
     }
 
-    @Test(timeout=30000)
+    /**
+     * Test for alignment of differents nodes in TextFlow.
+     */
+    @Test(timeout = 30000)
     public void alignmentTest() {
         setFlowBorder(true);
         Pages[] list = new Pages[3];
@@ -111,14 +101,17 @@
         list[2] = Pages.ButtonPage;
         for (TextAlignment alig : TextAlignment.values()) {
             setFlowWidth(RichTextPropertiesApp.paneWidth);
-            fillFlow(list, alig.name());
+            fillFlow(list, alig.name() + MULTILINE_TEXT);
             setAlignment(alig);
             addFlow();
         }
         check("alignmentTest");
     }
 
-    @Test(timeout=30000)
+    /**
+     * Test for deleting nodes form TextFlow.
+     */
+    @Test(timeout = 30000)
     public void deleteItemTest() {
         addAllFlowCombinations("line");
         Pages[][] list = getListPagesCombinations();
--- a/functional/SceneGraphTests/test/test/scenegraph/richtext/RichTextPropertiesFunctional.java	Tue Feb 12 17:57:19 2013 +0400
+++ b/functional/SceneGraphTests/test/test/scenegraph/richtext/RichTextPropertiesFunctional.java	Thu Jun 06 18:45:02 2013 +0400
@@ -1,25 +1,6 @@
 /*
- * Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  */
 package test.scenegraph.richtext;
 
@@ -50,6 +31,9 @@
     protected final static String TEXT1 = " first string";
     protected final static String TEXT2 = " second string";
     protected final static String TEXT3 = " third string";
+    protected final static String MULTILINE_TEXT = "(first line)\n"
+            + "(second line)\n";
+    
     protected final static String STYLE1 = " -fx-fill: linear-gradient(from 0% 0% to 100% 100%, repeat, orange 0%, red 50%);"
             + "-fx-stroke: black;"
             + "-fx-stroke-width: 1;";
@@ -127,6 +111,14 @@
             }
         }).dispatch(Root.ROOT.getEnvironment());
     }
+    protected void setLineSpacing(final double d){
+        (new GetAction() {
+            @Override
+            public void run(Object... os) throws Exception {
+                application.setLineSpacing(d);
+            }
+        }).dispatch(Root.ROOT.getEnvironment());
+    }
 
     protected void setFont(final Font font) {
         (new GetAction() {
--- a/functional/SceneGraphTests/test/test/scenegraph/richtext/RichTextRectangleTest.java	Tue Feb 12 17:57:19 2013 +0400
+++ b/functional/SceneGraphTests/test/test/scenegraph/richtext/RichTextRectangleTest.java	Thu Jun 06 18:45:02 2013 +0400
@@ -1,25 +1,6 @@
 /*
- * Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  */
 package test.scenegraph.richtext;
 
@@ -52,6 +33,9 @@
         throwErrors();
     }
 
+    /**
+     * Test for resizing Rectangles inside TextFlow
+     */
     @Test(timeout = 10000)
     public void resizeTest() {
 
@@ -70,6 +54,20 @@
         check("resizeTest");
     }
 
+    /**
+     * Test for lineSpacing property.
+     */
+    @Test(timeout = 10000)
+    @Override
+    public void lineSpacingTest() {
+        addItem(TEXT1);
+        addItem(TEXT2);
+        addItem(TEXT3);
+        setFlowWidth(40);
+        setLineSpacing(40);
+        check("lineSpacingTest");
+    }
+
     protected void check(String testName) {
         checkScreenshot("RichTextRectangleTest-" + testName);
     }
--- a/functional/SceneGraphTests/test/test/scenegraph/richtext/RichTextTestBase.java	Tue Feb 12 17:57:19 2013 +0400
+++ b/functional/SceneGraphTests/test/test/scenegraph/richtext/RichTextTestBase.java	Thu Jun 06 18:45:02 2013 +0400
@@ -1,25 +1,6 @@
 /*
- * Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  */
 package test.scenegraph.richtext;
 
@@ -31,6 +12,9 @@
  */
 public abstract class RichTextTestBase extends RichTextPropertiesFunctional {
 
+    /**
+     * Test for adding nodes in TextFlow.
+     */
     @Test(timeout = 10000)
     public void simpleAddTest() {
         addItem(TEXT1);
@@ -39,6 +23,9 @@
         check("simpleAddTest");
     }
 
+    /**
+     * Test for rotation nodes in TextFlow.
+     */
     @Test(timeout = 10000)
     public void rotateTest() {
         addItem(TEXT1);
@@ -59,4 +46,17 @@
         setRotation(-315D);
         check("rotateTest");
     }
+
+    /**
+     * Test for lineSpacing property.
+     */
+    @Test(timeout = 10000)
+    public void lineSpacingTest() {
+        addItem(TEXT1);
+        addItem(TEXT2);
+        addItem(TEXT3);
+        setFlowWidth(100);
+        setLineSpacing(40);
+        check("lineSpacingTest");
+    }
 }
--- a/functional/SceneGraphTests/test/test/scenegraph/richtext/RichTextTextTest.java	Tue Feb 12 17:57:19 2013 +0400
+++ b/functional/SceneGraphTests/test/test/scenegraph/richtext/RichTextTextTest.java	Thu Jun 06 18:45:02 2013 +0400
@@ -1,25 +1,6 @@
 /*
- * Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  */
 package test.scenegraph.richtext;
 
@@ -56,6 +37,9 @@
         throwErrors();
     }
 
+    /**
+     * Test for underlineProperty.
+     */
     @Test(timeout = 10000)
     public void underlineTest() {
         setFlowWidth(RichTextPropertiesApp.paneWidth);
@@ -81,6 +65,9 @@
         check("underlineTest");
     }
 
+    /**
+     * Test for strikethroughProperty.
+     */
     @Test(timeout = 10000)
     public void strikeTest() {
         setFlowWidth(RichTextPropertiesApp.paneWidth);
--- a/tools/Jemmy/GlassImage/build.xml	Tue Feb 12 17:57:19 2013 +0400
+++ b/tools/Jemmy/GlassImage/build.xml	Thu Jun 06 18:45:02 2013 +0400
@@ -11,7 +11,30 @@
     <description>Builds, tests, and runs the project GlassImage.</description>
     <import file="nbproject/build-impl.xml"/>
     <property file="../../../build.properties"/>
-    <target name="-post-init">
-        <ant antfile="build.xml" target="get-jemmy-core" inheritall="false" inheritrefs="false" dir=".."/>
+    <target name="-pre-init" unless="no.need.to.find.java.fx">
+        <ant antfile="../../../detect_javafx-nb.xml" inheritall="true">
+            <property name="basedir" location="${basedir}/../../.."/>
+            <property name="property.file" value="${basedir}/nbproject/private/private.properties"/>
+        </ant>
+    </target>
+    <target name="-post-clean">
+        <delete dir="${basedir}/target"/>
     </target>
+    <target name="maven" depends="jar">
+        <property file="${basedir}/src/org/jemmy/image/jemmy.properties"/>
+        <copy file="pom-tmpl.xml" tofile="pom.xml" overwrite="true">
+            <filterchain>
+                <replacetokens>
+                    <token key="GlassImage.version" value="${javafx.version}.${version.minor}.${version.mini}"/>
+                </replacetokens>
+            </filterchain>
+        </copy>
+        <exec command="mvn">
+            <arg value="-e"/>
+            <arg value="install"/>
+        </exec>
+    </target>
+    <target name="-post-init">
+        <ant antfile="build.xml" target="get-jemmy-core" inheritall="false" inheritrefs="false" dir=".."/>
+    </target>
 </project>
--- a/tools/Jemmy/GlassImage/nbproject/project.properties	Tue Feb 12 17:57:19 2013 +0400
+++ b/tools/Jemmy/GlassImage/nbproject/project.properties	Thu Jun 06 18:45:02 2013 +0400
@@ -30,11 +30,12 @@
 file.reference.JemmyCore.jar=../jemmy_core/JemmyCore.jar
 file.reference.JemmyFX.jar=../JemmyFX/dist/JemmyFX.jar
 includes=**
+jar.archive.disabled=${jnlp.enabled}
 jar.compress=false
-file.reference.jfxrt.jar=${javafx.rt}/lib/jfxrt.jar
+file.reference.jfxrt.jar=${javafx.rt}/lib/ext/jfxrt.jar
+jar.index=${jnlp.enabled}
 javac.classpath=\
     ${file.reference.jfxrt.jar}:\
-    ${file.reference.JemmyFX.jar}:\
     ${file.reference.JemmyCore.jar}
 # Space-separated list of extra javac options
 javac.compilerargs=
@@ -47,7 +48,8 @@
     ${javac.classpath}:\
     ${build.classes.dir}:\
     ${libs.junit_4.classpath}:\
-    ${reference.GlassRobot.jar}
+    ${reference.GlassRobot.jar}:\
+    ${file.reference.JemmyFX.jar}
 javac.test.processorpath=\
     ${javac.test.classpath}
 javadoc.additionalparam=
@@ -61,6 +63,15 @@
 javadoc.use=true
 javadoc.version=false
 javadoc.windowtitle=
+jnlp.codebase.type=no.codebase
+jnlp.descriptor=application
+jnlp.enabled=false
+jnlp.mixed.code=default
+jnlp.offline-allowed=false
+jnlp.signed=false
+jnlp.signing=
+jnlp.signing.alias=
+jnlp.signing.keystore=
 main.class=org.jemmy.image.GlassImageCapturer
 manifest.file=manifest.mf
 meta.inf.dir=${src.dir}/META-INF
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/Jemmy/GlassImage/pom-tmpl.xml	Thu Jun 06 18:45:02 2013 +0400
@@ -0,0 +1,51 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>net.java.jemmy.fx</groupId>
+    <version>@GlassImage.version@</version>
+    <artifactId>GlassImage</artifactId>
+    <name>GlassImage</name>
+    <description>Jemmy v3 image functionality implemented by glass robot</description>
+    <dependencies>
+        <dependency>
+            <groupId>net.java.jemmy</groupId>
+            <artifactId>JemmyCore</artifactId>
+            <version>0.9.6</version>
+        </dependency>
+    </dependencies>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>build-helper-maven-plugin</artifactId>
+                <version>1.3</version>
+                <executions>
+                    <execution>
+                        <id>add-jar</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>attach-artifact</goal>
+                        </goals>
+                        <configuration>
+                            <artifacts>
+                                <artifact >
+                                    <classifier>bin</classifier>
+                                    <file>dist/GlassImage.jar</file>
+                                    <type>jar</type>
+                                </artifact>
+                            </artifacts>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <version>2.13</version>
+                <configuration>
+                    <skipTests>true</skipTests>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/Jemmy/GlassImage/src/org/jemmy/image/jemmy.properties	Thu Jun 06 18:45:02 2013 +0400
@@ -0,0 +1,3 @@
+javafx.version=8
+version.minor=1
+version.mini=7
--- a/tools/Jemmy/GlassRobot/build.xml	Tue Feb 12 17:57:19 2013 +0400
+++ b/tools/Jemmy/GlassRobot/build.xml	Thu Jun 06 18:45:02 2013 +0400
@@ -11,7 +11,30 @@
     <description>Builds, tests, and runs the project GlassRobot.</description>
     <import file="nbproject/build-impl.xml"/>
     <property file="../../../build.properties"/>
+    <target name="-pre-init" unless="no.need.to.find.java.fx">
+        <ant antfile="../../../detect_javafx-nb.xml" inheritall="true">
+            <property name="basedir" location="${basedir}/../../.."/>
+            <property name="property.file" value="${basedir}/nbproject/private/private.properties"/>
+        </ant>
+    </target>
     <target name="-post-init">
         <ant antfile="build.xml" target="get-jemmy-core" inheritall="false" inheritrefs="false" dir=".."/>
     </target>
+    <target name="-post-clean">
+        <delete dir="${basedir}/target"/>
+    </target>
+    <target name="maven" depends="jar">
+        <property file="${basedir}/src/org/jemmy/input/glass/jemmy.properties"/>
+        <copy file="pom-tmpl.xml" tofile="pom.xml" overwrite="true">
+            <filterchain>
+                <replacetokens>
+                    <token key="GlassRobot.version" value="${javafx.version}.${version.minor}.${version.mini}"/>
+                </replacetokens>
+            </filterchain>
+        </copy>
+        <exec command="mvn">
+            <arg value="-e"/>
+            <arg value="install"/>
+        </exec>
+    </target>
 </project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/Jemmy/GlassRobot/manifest.mf	Thu Jun 06 18:45:02 2013 +0400
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+X-COMMENT: Main-Class will be added automatically by build
+
--- a/tools/Jemmy/GlassRobot/nbproject/project.properties	Tue Feb 12 17:57:19 2013 +0400
+++ b/tools/Jemmy/GlassRobot/nbproject/project.properties	Thu Jun 06 18:45:02 2013 +0400
@@ -33,7 +33,7 @@
 includes=**
 jar.archive.disabled=${jnlp.enabled}
 jar.compress=false
-file.reference.jfxrt.jar=${javafx.rt}/lib/jfxrt.jar
+file.reference.jfxrt.jar=${javafx.rt}/lib/ext/jfxrt.jar
 jar.index=${jnlp.enabled}
 javac.classpath=\
     ${file.reference.jfxrt.jar}:\
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/Jemmy/GlassRobot/pom-tmpl.xml	Thu Jun 06 18:45:02 2013 +0400
@@ -0,0 +1,51 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>net.java.jemmy.fx</groupId>
+    <version>@GlassRobot.version@</version>
+    <artifactId>GlassRobot</artifactId>
+    <name>GlassRobot</name>
+    <description>Jemmy v3 input implemented by glass robot</description>
+    <dependencies>
+        <dependency>
+            <groupId>net.java.jemmy</groupId>
+            <artifactId>JemmyCore</artifactId>
+            <version>0.9.6</version>
+        </dependency>
+    </dependencies>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>build-helper-maven-plugin</artifactId>
+                <version>1.3</version>
+                <executions>
+                    <execution>
+                        <id>add-jar</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>attach-artifact</goal>
+                        </goals>
+                        <configuration>
+                            <artifacts>
+                                <artifact >
+                                    <classifier>bin</classifier>
+                                    <file>dist/GlassRobot.jar</file>
+                                    <type>jar</type>
+                                </artifact>
+                            </artifacts>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <version>2.13</version>
+                <configuration>
+                    <skipTests>true</skipTests>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>
--- a/tools/Jemmy/GlassRobot/src/org/jemmy/input/glass/DefaultGlassInputMap.java	Tue Feb 12 17:57:19 2013 +0400
+++ b/tools/Jemmy/GlassRobot/src/org/jemmy/input/glass/DefaultGlassInputMap.java	Thu Jun 06 18:45:02 2013 +0400
@@ -152,8 +152,8 @@
 
         //buttons
         buttons.put(Mouse.MouseButtons.BUTTON1, Robot.MOUSE_LEFT_BTN);
-        buttons.put(Mouse.MouseButtons.BUTTON2, Robot.MOUSE_RIGHT_BTN);
-        buttons.put(Mouse.MouseButtons.BUTTON3, Robot.MOUSE_MIDDLE_BTN);
+        buttons.put(Mouse.MouseButtons.BUTTON2, Robot.MOUSE_MIDDLE_BTN);
+        buttons.put(Mouse.MouseButtons.BUTTON3, Robot.MOUSE_RIGHT_BTN);
     }
 
     @Override
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/Jemmy/GlassRobot/src/org/jemmy/input/glass/jemmy.properties	Thu Jun 06 18:45:02 2013 +0400
@@ -0,0 +1,3 @@
+javafx.version=8
+version.minor=1
+version.mini=7
--- a/tools/Jemmy/JemmyFX/build.xml	Tue Feb 12 17:57:19 2013 +0400
+++ b/tools/Jemmy/JemmyFX/build.xml	Thu Jun 06 18:45:02 2013 +0400
@@ -47,6 +47,7 @@
     </target>
     <target name="-post-clean">
         <delete dir="${docks.dir}" failonerror="false"/>
+        <delete dir="${basedir}/target"/>
     </target>
     <target name="-pre-init" unless="no.need.to.find.java.fx">
         <ant antfile="../../../detect_javafx-nb.xml" inheritall="true">
@@ -81,6 +82,26 @@
 Taking JemmyCore sources from ${jemmy.core.source}/core/JemmyCore.
         </echo>
     </target>
+    <target name="maven" depends="jar">
+        <ant antfile="build.xml" dir="${project.GlassRobot}" target="maven"/>
+	<property file="${project.GlassRobot}/src/org/jemmy/input/glass/jemmy.properties" prefix="robot"/>
+        <ant antfile="build.xml" dir="${project.GlassImage}" target="maven"/>
+	<property file="${project.GlassImage}/src/org/jemmy/image/jemmy.properties" prefix="image"/>
+        <property file="${basedir}/src/org/jemmy/fx/jemmy.properties" prefix="fx"/>
+        <copy file="pom-tmpl.xml" tofile="pom.xml" overwrite="true">
+            <filterchain>
+                <replacetokens>
+                    <token key="GlassRobot.version" value="${robot.javafx.version}.${robot.version.minor}.${robot.version.mini}"/>
+                    <token key="GlassImage.version" value="${image.javafx.version}.${image.version.minor}.${image.version.mini}"/>
+                    <token key="JemmyFX.version" value="${fx.javafx.version}.${fx.version.minor}.${fx.version.mini}"/>
+                </replacetokens>
+            </filterchain>
+        </copy>
+        <exec command="mvn">
+            <arg value="-e"/>
+            <arg value="install"/>
+        </exec>
+    </target>
     <target name="javadoc" depends="init, compile, -post-compile, warn-no-core-sources, inform-core-sources">
         <echo message="${jemmy.core.source}"/>
         <path id="javadoc.source.path.ref">
--- a/tools/Jemmy/JemmyFX/nbproject/build-impl.xml	Tue Feb 12 17:57:19 2013 +0400
+++ b/tools/Jemmy/JemmyFX/nbproject/build-impl.xml	Thu Jun 06 18:45:02 2013 +0400
@@ -915,6 +915,13 @@
             <param name="call.target" value="jar"/>
             <param name="transfer.built-jar.properties" value="${built-jar.properties}"/>
         </antcall>
+        <antcall target="-maybe-call-dep">
+            <param name="call.built.properties" value="${built-jar.properties}"/>
+            <param location="${project.JemmyFXBrowser}" name="call.subproject"/>
+            <param location="${project.JemmyFXBrowser}/build.xml" name="call.script"/>
+            <param name="call.target" value="jar"/>
+            <param name="transfer.built-jar.properties" value="${built-jar.properties}"/>
+        </antcall>
     </target>
     <target depends="init,-check-automatic-build,-clean-after-automatic-build" name="-verify-automatic-build"/>
     <target depends="init" name="-check-automatic-build">
@@ -1418,6 +1425,13 @@
             <param name="call.target" value="clean"/>
             <param name="transfer.built-clean.properties" value="${built-clean.properties}"/>
         </antcall>
+        <antcall target="-maybe-call-dep">
+            <param name="call.built.properties" value="${built-clean.properties}"/>
+            <param location="${project.JemmyFXBrowser}" name="call.subproject"/>
+            <param location="${project.JemmyFXBrowser}/build.xml" name="call.script"/>
+            <param name="call.target" value="clean"/>
+            <param name="transfer.built-clean.properties" value="${built-clean.properties}"/>
+        </antcall>
     </target>
     <target depends="init" name="-do-clean">
         <delete dir="${build.dir}"/>
--- a/tools/Jemmy/JemmyFX/nbproject/genfiles.properties	Tue Feb 12 17:57:19 2013 +0400
+++ b/tools/Jemmy/JemmyFX/nbproject/genfiles.properties	Thu Jun 06 18:45:02 2013 +0400
@@ -3,6 +3,6 @@
 build.xml.stylesheet.CRC32=28e38971@1.38.2.45
 # This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
 # Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
-nbproject/build-impl.xml.data.CRC32=81b07f9f
-nbproject/build-impl.xml.script.CRC32=9c54d075
+nbproject/build-impl.xml.data.CRC32=b25865ab
+nbproject/build-impl.xml.script.CRC32=a4108b10
 nbproject/build-impl.xml.stylesheet.CRC32=6ddba6b6@1.53.1.46
--- a/tools/Jemmy/JemmyFX/nbproject/project.properties	Tue Feb 12 17:57:19 2013 +0400
+++ b/tools/Jemmy/JemmyFX/nbproject/project.properties	Thu Jun 06 18:45:02 2013 +0400
@@ -32,7 +32,7 @@
 file.reference.JemmyBrowser.jar=../jemmy_core/JemmyBrowser.jar
 file.reference.JemmyCore.jar=../jemmy_core/JemmyCore.jar
 file.reference.JemmySupport.jar=../jemmy_core/JemmySupport.jar
-file.reference.jfxrt.jar=${javafx.rt}/lib/jfxrt.jar
+file.reference.jfxrt.jar=${javafx.rt}/lib/ext/jfxrt.jar
 file.reference.junit.jar=../jemmy_core/junit.jar
 includes=**
 jar.archive.disabled=${jnlp.enabled}
@@ -43,7 +43,6 @@
     ${reference.GlassImage.jar}:\
     ${reference.GlassRobot.jar}:\
     ${file.reference.JemmyAWTInput.jar}:\
-    ${file.reference.JemmyBrowser.jar}:\
     ${file.reference.JemmyCore.jar}:\
     ${file.reference.JemmySupport.jar}:\
     ${file.reference.junit.jar}
@@ -57,6 +56,7 @@
 javac.test.classpath=\
     ${javac.classpath}:\
     ${build.classes.dir}:\
+    ${file.reference.JemmyBrowser.jar}:\
     ${reference.JemmyFXBrowser.jar}
 javadoc.additionalparam=
 javadoc.author=false
@@ -84,8 +84,10 @@
 platform.active=default_platform
 project.GlassImage=../GlassImage
 project.GlassRobot=../GlassRobot
+project.JemmyFXBrowser=../../../../java-client/open/tests/tools/Jemmy/JemmyFXBrowser
 reference.GlassImage.jar=${project.GlassImage}/dist/GlassImage.jar
 reference.GlassRobot.jar=${project.GlassRobot}/dist/GlassRobot.jar
+reference.JemmyFXBrowser.jar=${project.JemmyFXBrowser}/dist/JemmyFXBrowser.jar
 run.classpath=\
     ${javac.classpath}:\
     ${build.classes.dir}
--- a/tools/Jemmy/JemmyFX/nbproject/project.xml	Tue Feb 12 17:57:19 2013 +0400
+++ b/tools/Jemmy/JemmyFX/nbproject/project.xml	Thu Jun 06 18:45:02 2013 +0400
@@ -30,6 +30,14 @@
                 <clean-target>clean</clean-target>
                 <id>jar</id>
             </reference>
+            <reference>
+                <foreign-project>JemmyFXBrowser</foreign-project>
+                <artifact-type>jar</artifact-type>
+                <script>build.xml</script>
+                <target>jar</target>
+                <clean-target>clean</clean-target>
+                <id>jar</id>
+            </reference>
         </references>
     </configuration>
 </project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/Jemmy/JemmyFX/pom-tmpl.xml	Thu Jun 06 18:45:02 2013 +0400
@@ -0,0 +1,65 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>net.java.jemmy.fx</groupId>
+    <version>@JemmyFX.version@</version>
+    <artifactId>JemmyFX</artifactId>
+    <name>JemmyFX</name>
+    <description>Support for Java FX UI in Jemmy v3</description>
+    <dependencies>
+        <dependency>
+            <groupId>net.java.jemmy</groupId>
+            <artifactId>JemmyCore</artifactId>
+            <version>0.9.6</version>
+        </dependency>
+        <dependency>
+            <groupId>net.java.jemmy</groupId>
+            <artifactId>JemmyAWTInput</artifactId>
+            <version>0.9.5</version>
+        </dependency>
+        <dependency>
+            <groupId>net.java.jemmy.fx</groupId>
+            <artifactId>GlassRobot</artifactId>
+            <version>@GlassRobot.version@</version>
+        </dependency>
+        <dependency>
+            <groupId>net.java.jemmy.fx</groupId>
+            <artifactId>GlassImage</artifactId>
+            <version>@GlassImage.version@</version>
+        </dependency>
+    </dependencies>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>build-helper-maven-plugin</artifactId>
+                <version>1.3</version>
+                <executions>
+                    <execution>
+                        <id>add-jar</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>attach-artifact</goal>
+                        </goals>
+                        <configuration>
+                            <artifacts>
+                                <artifact >
+                                    <classifier>bin</classifier>
+                                    <file>dist/JemmyFX.jar</file>
+                                    <type>jar</type>
+                                </artifact>
+                            </artifacts>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <version>2.13</version>
+                <configuration>
+                    <skipTests>true</skipTests>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>
--- a/tools/Jemmy/JemmyFX/samples/org/jemmy/samples/input/InputApp.java	Tue Feb 12 17:57:19 2013 +0400
+++ b/tools/Jemmy/JemmyFX/samples/org/jemmy/samples/input/InputApp.java	Thu Jun 06 18:45:02 2013 +0400
@@ -25,6 +25,7 @@
 package org.jemmy.samples.input;
 
 import java.text.DecimalFormat;
+import java.util.Collections;
 import java.util.LinkedList;
 import java.util.List;
 import javafx.application.Application;
@@ -66,7 +67,7 @@
     public static final String DRAGGED = "DRAGGED ";
     public static final String MOVED = "MOVED ";
     public static final String SCROLL = "SCROLL ";
-    public static final List<Event> events = new LinkedList<Event>();
+    public static final List<Event> events = Collections.synchronizedList(new LinkedList<Event>());
 
     public static void main(String[] args) {
 
--- a/tools/Jemmy/JemmyFX/samples/org/jemmy/samples/input/InputSampleBase.java	Tue Feb 12 17:57:19 2013 +0400
+++ b/tools/Jemmy/JemmyFX/samples/org/jemmy/samples/input/InputSampleBase.java	Thu Jun 06 18:45:02 2013 +0400
@@ -27,6 +27,7 @@
 import java.util.HashMap;
 import javafx.event.Event;
 import javafx.event.EventType;
+import javafx.scene.control.Button;
 import javafx.scene.input.KeyCode;
 import javafx.scene.input.KeyEvent;
 import javafx.scene.input.MouseButton;
@@ -61,6 +62,7 @@
         scene = new SceneDock();
         redTarget = new NodeDock(scene.asParent(), Rectangle.class, new TargetCriteria(Color.RED));
         blueTarget = new NodeDock(scene.asParent(), Rectangle.class, new TargetCriteria(Color.BLUE));
+        new NodeDock(scene.asParent(), Button.class).mouse().click();
     }
 
     @After
@@ -89,18 +91,19 @@
     protected void checkMouseEvent(final Color color, final EventType type, final MouseButton btn, final int x, final int y, final int times) {
 
         Root.ROOT.getEnvironment().getWaiter(Wrap.WAIT_STATE_TIMEOUT).ensureValue(true, new State<Boolean>() {
-
             public Boolean reached() {
-                if (InputApp.events.size() > 0) {
-                    for (Event e : InputApp.events.toArray(new Event[0])) {
-                        if (e instanceof MouseEvent) {
-                            if (e.getEventType().equals(type)
-                                    && ((Rectangle) e.getSource()).getFill().equals(color)
-                                    && ((MouseEvent) e).getButton().equals(btn)
-                                    && ((MouseEvent) e).getX() == x
-                                    && ((MouseEvent) e).getY() == y
-                                    && ((MouseEvent) e).getClickCount() == times) {
-                                return true;
+                synchronized (InputApp.events) {
+                    if (InputApp.events.size() > 0) {
+                        for (Event e : InputApp.events.toArray(new Event[0])) {
+                            if (e instanceof MouseEvent) {
+                                if (e.getEventType().equals(type)
+                                        && ((Rectangle) e.getSource()).getFill().equals(color)
+                                        && ((MouseEvent) e).getButton().equals(btn)
+                                        && ((MouseEvent) e).getX() == x
+                                        && ((MouseEvent) e).getY() == y
+                                        && ((MouseEvent) e).getClickCount() == times) {
+                                    return true;
+                                }
                             }
                         }
                     }
@@ -113,18 +116,19 @@
     protected void checkKeyboardEvent(final EventType type, final KeyCode btn, final String character) {
 
         Root.ROOT.getEnvironment().getWaiter(Wrap.WAIT_STATE_TIMEOUT).ensureValue(true, new State<Boolean>() {
-
             public Boolean reached() {
-                for (Event e : InputApp.events.toArray(new Event[0])) {
-                    if (e instanceof KeyEvent) {
-                        if (e.getEventType().equals(type)
-                                && ((KeyEvent) e).getCode().equals(btn)
-                                && (!e.getEventType().equals(KeyEvent.KEY_TYPED) || ((KeyEvent) e).getCharacter().equals(character))) {
-                            return true;
+                synchronized (InputApp.events) {
+                    for (Event e : InputApp.events.toArray(new Event[0])) {
+                        if (e instanceof KeyEvent) {
+                            if (e.getEventType().equals(type)
+                                    && ((KeyEvent) e).getCode().equals(btn)
+                                    && (!e.getEventType().equals(KeyEvent.KEY_TYPED) || ((KeyEvent) e).getCharacter().equals(character))) {
+                                return true;
+                            }
                         }
                     }
+                    return false;
                 }
-                return false;
             }
         });
     }
--- a/tools/Jemmy/JemmyFX/samples/org/jemmy/samples/tableview/TableViewSample.java	Tue Feb 12 17:57:19 2013 +0400
+++ b/tools/Jemmy/JemmyFX/samples/org/jemmy/samples/tableview/TableViewSample.java	Thu Jun 06 18:45:02 2013 +0400
@@ -98,7 +98,7 @@
      */
     @Test
     public void scrollToCell() {
-        new TableCellItemDock(tableView.asTable(), "Wlastname").shower().show();
+        new TableCellItemDock(tableView.asTable(), "Tlastname").shower().show();
     }
     
     /**
--- a/tools/Jemmy/JemmyFX/src/org/jemmy/fx/control/WebNodeWrap.java	Tue Feb 12 17:57:19 2013 +0400
+++ b/tools/Jemmy/JemmyFX/src/org/jemmy/fx/control/WebNodeWrap.java	Thu Jun 06 18:45:02 2013 +0400
@@ -24,7 +24,7 @@
  */
 package org.jemmy.fx.control;
 
-import com.sun.webkit.JSObject;
+import netscape.javascript.JSObject;
 import javafx.scene.web.WebView;
 import org.jemmy.Rectangle;
 import org.jemmy.action.GetAction;
--- a/tools/Jemmy/JemmyFX/src/org/jemmy/fx/jemmy.properties	Tue Feb 12 17:57:19 2013 +0400
+++ b/tools/Jemmy/JemmyFX/src/org/jemmy/fx/jemmy.properties	Thu Jun 06 18:45:02 2013 +0400
@@ -1,3 +1,3 @@
-javafx.version=2.2
+javafx.version=8
 version.minor=1
-version.mini=6
+version.mini=7
--- a/tools/Jemmy/JemmyFXBrowser/build.xml	Tue Feb 12 17:57:19 2013 +0400
+++ b/tools/Jemmy/JemmyFXBrowser/build.xml	Thu Jun 06 18:45:02 2013 +0400
@@ -3,7 +3,36 @@
     <description>Builds, tests, and runs the project JemmyFXBrowser.</description>
     <import file="nbproject/build-impl.xml"/>
     <property file="../../../build.properties"/>
+    <target name="-pre-init" unless="no.need.to.find.java.fx">
+        <ant antfile="../../../detect_javafx-nb.xml" inheritall="true">
+            <property name="basedir" location="${basedir}/../../.."/>
+            <property name="property.file" value="${basedir}/nbproject/private/private.properties"/>
+        </ant>
+    </target>
     <target name="-post-init">
         <ant antfile="build.xml" target="get-jemmy-core" inheritall="false" inheritrefs="false" dir=".."/>
     </target>
+    <target name="-post-clean">
+        <delete dir="${basedir}/target"/>
+    </target>
+    <target name="maven" depends="jar">
+        <ant antfile="build.xml" dir="${project.JemmyFX}" target="maven"/>
+	<property file="${project.JemmyFX}/src/org/jemmy/fx/jemmy.properties" prefix="fx"/>
+        <ant antfile="build.xml" dir="${project.GlassImage}" target="maven"/>
+	<property file="${project.GlassImage}/src/org/jemmy/image/jemmy.properties" prefix="image"/>
+        <property file="${basedir}/src/org/jemmy/fx/jemmy.properties" prefix="browser"/>
+        <copy file="pom-tmpl.xml" tofile="pom.xml" overwrite="true">
+            <filterchain>
+                <replacetokens>
+                    <token key="JemmyFXBrowser.version" value="${browser.javafx.version}.${browser.version.minor}.${browser.version.mini}"/>
+                    <token key="JemmyFX.version" value="${fx.javafx.version}.${fx.version.minor}.${fx.version.mini}"/>
+                    <token key="GlassImage.version" value="${image.javafx.version}.${image.version.minor}.${image.version.mini}"/>
+                </replacetokens>
+            </filterchain>
+        </copy>
+        <exec command="mvn">
+            <arg value="-e"/>
+            <arg value="install"/>
+        </exec>
+    </target>
 </project>
--- a/tools/Jemmy/JemmyFXBrowser/nbproject/build-impl.xml	Tue Feb 12 17:57:19 2013 +0400
+++ b/tools/Jemmy/JemmyFXBrowser/nbproject/build-impl.xml	Thu Jun 06 18:45:02 2013 +0400
@@ -895,6 +895,13 @@
             <param name="call.target" value="jar"/>
             <param name="transfer.built-jar.properties" value="${built-jar.properties}"/>
         </antcall>
+        <antcall target="-maybe-call-dep">
+            <param name="call.built.properties" value="${built-jar.properties}"/>
+            <param location="${project.JemmyFX}" name="call.subproject"/>
+            <param location="${project.JemmyFX}/build.xml" name="call.script"/>
+            <param name="call.target" value="jar"/>
+            <param name="transfer.built-jar.properties" value="${built-jar.properties}"/>
+        </antcall>
     </target>
     <target depends="init,-check-automatic-build,-clean-after-automatic-build" name="-verify-automatic-build"/>
     <target depends="init" name="-check-automatic-build">
@@ -1382,6 +1389,13 @@
             <param name="call.target" value="clean"/>
             <param name="transfer.built-clean.properties" value="${built-clean.properties}"/>
         </antcall>
+        <antcall target="-maybe-call-dep">
+            <param name="call.built.properties" value="${built-clean.properties}"/>
+            <param location="${project.JemmyFX}" name="call.subproject"/>
+            <param location="${project.JemmyFX}/build.xml" name="call.script"/>
+            <param name="call.target" value="clean"/>
+            <param name="transfer.built-clean.properties" value="${built-clean.properties}"/>
+        </antcall>
     </target>
     <target depends="init" name="-do-clean">
         <delete dir="${build.dir}"/>
--- a/tools/Jemmy/JemmyFXBrowser/nbproject/genfiles.properties	Tue Feb 12 17:57:19 2013 +0400
+++ b/tools/Jemmy/JemmyFXBrowser/nbproject/genfiles.properties	Thu Jun 06 18:45:02 2013 +0400
@@ -3,6 +3,6 @@
 build.xml.stylesheet.CRC32=28e38971@1.38.3.45
 # This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
 # Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
-nbproject/build-impl.xml.data.CRC32=33325a97
-nbproject/build-impl.xml.script.CRC32=48a307bf
+nbproject/build-impl.xml.data.CRC32=f6a41338
+nbproject/build-impl.xml.script.CRC32=b07fda0c
 nbproject/build-impl.xml.stylesheet.CRC32=6ddba6b6@1.53.1.46
--- a/tools/Jemmy/JemmyFXBrowser/nbproject/project.properties	Tue Feb 12 17:57:19 2013 +0400
+++ b/tools/Jemmy/JemmyFXBrowser/nbproject/project.properties	Thu Jun 06 18:45:02 2013 +0400
@@ -30,19 +30,18 @@
 file.reference.JemmyAWTInput.jar=../jemmy_core/JemmyAWTInput.jar
 file.reference.JemmyBrowser.jar=../jemmy_core/JemmyBrowser.jar
 file.reference.JemmyCore.jar=../jemmy_core/JemmyCore.jar
-file.reference.JemmyFX.jar=../JemmyFX/dist/JemmyFX.jar
 includes=**
 jar.archive.disabled=${jnlp.enabled}
 jar.compress=false
 jar.index=${jnlp.enabled}
-file.reference.jfxrt.jar=${javafx.rt}/lib/jfxrt.jar
+file.reference.jfxrt.jar=${javafx.rt}/lib/ext/jfxrt.jar
 javac.classpath=\
     ${file.reference.jfxrt.jar}:\
     ${file.reference.JemmyAWTInput.jar}:\
     ${file.reference.JemmyBrowser.jar}:\
     ${file.reference.JemmyCore.jar}:\
-    ${file.reference.JemmyFX.jar}:\
-    ${reference.GlassImage.jar}
+    ${reference.GlassImage.jar}:\
+    ${reference.JemmyFX.jar}
 # Space-separated list of extra javac options
 javac.compilerargs=
 javac.deprecation=false
@@ -71,15 +70,20 @@
 jnlp.codebase.type=no.codebase
 jnlp.descriptor=application
 jnlp.enabled=false
-jnlp.mixed.code=defaut
+jnlp.mixed.code=default
 jnlp.offline-allowed=false
 jnlp.signed=false
+jnlp.signing=
+jnlp.signing.alias=
+jnlp.signing.keystore=
 main.class=org.jemmy.fx.Browser
 manifest.file=manifest.mf
 meta.inf.dir=${src.dir}/META-INF
 platform.active=default_platform
 project.GlassImage=../GlassImage
+project.JemmyFX=../JemmyFX
 reference.GlassImage.jar=${project.GlassImage}/dist/GlassImage.jar
+reference.JemmyFX.jar=${project.JemmyFX}/dist/JemmyFX.jar
 run.classpath=\
     ${javac.classpath}:\
     ${build.classes.dir}
--- a/tools/Jemmy/JemmyFXBrowser/nbproject/project.xml	Tue Feb 12 17:57:19 2013 +0400
+++ b/tools/Jemmy/JemmyFXBrowser/nbproject/project.xml	Thu Jun 06 18:45:02 2013 +0400
@@ -20,6 +20,14 @@
                 <clean-target>clean</clean-target>
                 <id>jar</id>
             </reference>
+            <reference>
+                <foreign-project>JemmyFX</foreign-project>
+                <artifact-type>jar</artifact-type>
+                <script>build.xml</script>
+                <target>jar</target>
+                <clean-target>clean</clean-target>
+                <id>jar</id>
+            </reference>
         </references>
     </configuration>
 </project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/Jemmy/JemmyFXBrowser/pom-tmpl.xml	Thu Jun 06 18:45:02 2013 +0400
@@ -0,0 +1,70 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>net.java.jemmy.fx</groupId>
+    <version>@JemmyFXBrowser.version@</version>
+    <artifactId>JemmyFXBrowser</artifactId>
+    <name>JemmyFXBrowser</name>
+    <description>Extension for JemmyBrowser to support FX UI</description>
+    <dependencies>
+        <dependency>
+            <groupId>net.java.jemmy</groupId>
+            <artifactId>JemmyCore</artifactId>
+            <version>0.9.6</version>
+        </dependency>
+        <dependency>
+            <groupId>net.java.jemmy</groupId>
+            <artifactId>JemmyBrowser</artifactId>
+            <version>0.9.5</version>
+        </dependency>
+        <dependency>
+            <groupId>net.java.jemmy</groupId>
+            <artifactId>JemmyAWTInput</artifactId>
+            <version>0.9.5</version>
+        </dependency>
+        <dependency>
+            <groupId>net.java.jemmy.fx</groupId>
+            <artifactId>JemmyFX</artifactId>
+            <version>@JemmyFX.version@</version>
+        </dependency>
+        <dependency>
+            <groupId>net.java.jemmy.fx</groupId>
+            <artifactId>GlassImage</artifactId>
+            <version>@GlassImage.version@</version>
+        </dependency>
+    </dependencies>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>build-helper-maven-plugin</artifactId>
+                <version>1.3</version>
+                <executions>
+                    <execution>
+                        <id>add-jar</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>attach-artifact</goal>
+                        </goals>
+                        <configuration>
+                            <artifacts>
+                                <artifact >
+                                    <classifier>bin</classifier>
+                                    <file>dist/JemmyFXBrowser.jar</file>
+                                    <type>jar</type>
+                                </artifact>
+                            </artifacts>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <version>2.13</version>
+                <configuration>
+                    <skipTests>true</skipTests>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/Jemmy/JemmyFXBrowser/src/org/jemmy/fx/jemmy.properties	Thu Jun 06 18:45:02 2013 +0400
@@ -0,0 +1,3 @@
+javafx.version=8
+version.minor=1
+version.mini=7
--- a/tools/SharedTestUtils/nbproject/project.properties	Tue Feb 12 17:57:19 2013 +0400
+++ b/tools/SharedTestUtils/nbproject/project.properties	Thu Jun 06 18:45:02 2013 +0400
@@ -61,7 +61,7 @@
 file.reference.JemmyCore.jar=../Jemmy/jemmy_core/JemmyCore.jar
 file.reference.JemmySupport.jar=../Jemmy/jemmy_core/JemmySupport.jar
 file.reference.junit.jar=../Jemmy/jemmy_core/junit.jar
-file.reference.jfxrt.jar=${javafx.rt}/lib/jfxrt.jar
+file.reference.jfxrt.jar=${javafx.rt}/lib/ext/jfxrt.jar
 includes=**
 jar.archive.disabled=${jnlp.enabled}
 jar.compress=false