changeset 5904:355b380baf28

Backout fix for RT-32637 (which is being deferred out of FX 8) hg backout a4b45faa34a2
author kcr
date Wed, 04 Dec 2013 11:11:23 -0800
parents a91fae01ca00
children 6686825cd99d
files apps/samples/Ensemble8/src/samples/java/ensemble/samples/animation/timeline/timeline/TimelineApp.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/animation/timeline/timelineevents/TimelineEventsApp.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/charts/area/audio/AudioAreaChartApp.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/charts/area/curvefitted/CurveFittedAreaChart.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/charts/bar/audio/AudioBarChartApp.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/charts/custom/candlestick/CandleStickChart.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/charts/custom/candlestick/CandleStickChartApp.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/charts/line/stock/StockLineChartApp.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/charts/pie/drilldown/DrilldownPieChartApp.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/charts/scatter/animated/LiveScatterChartApp.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/concurrency/service/ServiceApp.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/colorpicker/ColorPickerApp.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/datepicker/DatePickerApp.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/listview/listviewcellfactory/ListViewCellFactoryApp.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/listview/simplelistview/SimpleListViewApp.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/menu/MenuApp.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/pagination/PaginationApp.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/progressindicator/ProgressIndicatorApp.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/scrollbar/ScrollBarApp.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/tab/tabpane/TabPaneApp.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/table/tablecellfactory/Person.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/table/tablecellfactory/TableCellFactoryApp.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/text/searchbox/SearchBox.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/text/textvalidator/TextInputValidatorPane.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/text/textvalidator/TextValidatorApp.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/text/textvalidator/ValidationEvent.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/text/textvalidator/ValidatorPane.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/togglebutton/ToggleButtonApp.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/treetableview/TreeTableViewApp.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/treeview/TreeViewApp.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/fxml/fxmldemo/Authenticator.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/fxml/fxmldemo/FXMLLoginDemoApp.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/fxml/fxmldemo/User.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/bouncingballs/Ball.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/bouncingballs/BallsPane.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/bouncingballs/BouncingBallsApp.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/brickbreaker/Brick.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/brickbreaker/Config.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/brickbreaker/Level.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/brickbreaker/LevelData.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/brickbreaker/Splash.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/calc/Calculator.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/calc/Key.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/digitalclock/Clock.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/displayshelf/DisplayShelf.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/images/imageoperator/ImageOperationApp.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/paints/lineargradient/LinearGradientApp.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/paints/radialgradient/RadialGradientApp.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/puzzle/Piece.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/puzzle/PuzzlePiecesApp.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/shapes/polygon/PolygonApp.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/shapes/polyline/PolylineApp.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/stopwatch/StopWatchButton.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/stopwatch/Watch.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/language/beans/changelistener/ChangeListenerApp.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/language/collections/observablelist/ObservableListApp.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/layout/anchorpane/AnchorPaneApp.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/layout/borderpane/BorderPaneApp.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/media/advancedmedia/MediaControl.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/media/alphamediaplayer/AlphaMediaPlayerApp.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/media/alphamediaplayer/PlanetaryPlayerPane.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/media/audioclip/AudioClipApp.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/media/overlaymediaplayer/PlayerPane.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/media/streamingmediaplayer/PlayerPane.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/scenegraph/events/gestureevent/GestureEventApp.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/scenegraph/events/keyevent/KeyEventApp.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/scenegraph/events/keystrokemotion/LettersPane.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/scenegraph/events/mouseevent/MouseEventApp.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/scenegraph/events/multitouch/MultiTouchImageView.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/scenegraph/node/customnode/CustomNodeApp.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/scenegraph/stage/advancedstage/AdvancedStageApp.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/scenegraph/stage/stage/StageApp.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/swing/swinginterop/SampleTableModel.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/swing/swinginterop/SwingInterop.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/swing/swinginterop/SwingInteropApp.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/swing/swinginterop/SwingInteropTask.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/web/htmleditor/HTMLEditorApp.java apps/samples/Ensemble8/src/samples/java/ensemble/samples/web/webview/WebViewApp.java
diffstat 78 files changed, 1821 insertions(+), 1102 deletions(-) [+]
line wrap: on
line diff
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/animation/timeline/timeline/TimelineApp.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/animation/timeline/timeline/TimelineApp.java	Wed Dec 04 11:11:23 2013 -0800
@@ -106,24 +106,56 @@
         //method for creating navigation panel
         //start/stop/pause/play from start buttons
         Button buttonStart = new Button("Start");
-        buttonStart.setOnAction(t -> timeline.play());
+        buttonStart.setOnAction(new EventHandler<ActionEvent>() {
+            @Override
+            public void handle(ActionEvent t) {
+                //start timeline
+                timeline.play();
+            }
+        });
         Button buttonStop = new Button("Stop");
-        buttonStop.setOnAction(t -> timeline.stop());
+        buttonStop.setOnAction(new EventHandler<ActionEvent>() {
+            @Override
+            public void handle(ActionEvent t) {
+                //stop timeline
+                timeline.stop();
+            }
+        });
         Button buttonPlayFromStart = new Button("Restart");
-        buttonPlayFromStart.setOnAction(t -> timeline.playFromStart());
+        buttonPlayFromStart.setOnAction(new EventHandler<ActionEvent>() {
+            @Override
+            public void handle(ActionEvent t) {
+                //play from start
+                timeline.playFromStart();
+            }
+        });
         Button buttonPause = new Button("Pause");
-        buttonPause.setOnAction(t -> timeline.pause());
+        buttonPause.setOnAction(new EventHandler<ActionEvent>() {
+            @Override
+            public void handle(ActionEvent t) {
+                //pause from start
+                timeline.pause();
+            }
+        });
         //text showing current time
         final Text currentRateText = new Text("Current time: 0 ms");
         currentRateText.setBoundsType(TextBoundsType.VISUAL);
-        timeline.currentTimeProperty().addListener(ov -> {
-            int time = (int) timeline.getCurrentTime().toMillis();
-            currentRateText.setText("Current time: " + time + " ms");
+        timeline.currentTimeProperty().addListener(new InvalidationListener() {
+            @Override
+            public void invalidated(Observable ov) {
+                int time = (int) timeline.getCurrentTime().toMillis();
+                currentRateText.setText("Current time: " + time + " ms");
+            }
         });
         //Autoreverse checkbox
         final CheckBox checkBoxAutoReverse = new CheckBox("Auto Reverse");
         checkBoxAutoReverse.setSelected(true);
-        checkBoxAutoReverse.selectedProperty().addListener(ov -> timeline.setAutoReverse(checkBoxAutoReverse.isSelected()));
+        checkBoxAutoReverse.selectedProperty().addListener(new InvalidationListener() {
+            @Override
+            public void invalidated(Observable ov) {
+                timeline.setAutoReverse(checkBoxAutoReverse.isSelected());
+            }
+        });
         //add all navigation to layout
         HBox hBox1 = new HBox(10);
         hBox1.setPadding(new Insets(0, 0, 0, 5));
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/animation/timeline/timelineevents/TimelineEventsApp.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/animation/timeline/timelineevents/TimelineEventsApp.java	Wed Dec 04 11:11:23 2013 -0800
@@ -101,10 +101,13 @@
         //create a keyFrame, the keyValue is reached at time 2s
         Duration duration = Duration.seconds(2);
         //one can add a specific action when the keyframe is reached
-        EventHandler<ActionEvent> onFinished = t -> {
-             stack.setTranslateX(Math.random() * 200);
-             //reset counter
-             i = 0;
+        EventHandler<ActionEvent> onFinished = new EventHandler<ActionEvent>() {
+            @Override
+            public void handle(ActionEvent t) {
+                 stack.setTranslateX(java.lang.Math.random() * 200);
+                 //reset counter
+                 i = 0;
+            }
         };
         KeyFrame keyFrame = new KeyFrame(duration, onFinished , keyValueX, keyValueY);
         //add the keyframe to the timeline
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/charts/area/audio/AudioAreaChartApp.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/charts/area/audio/AudioAreaChartApp.java	Wed Dec 04 11:11:23 2013 -0800
@@ -69,9 +69,13 @@
             System.getProperty("demo.play.audio", "true"));
 
     public AudioAreaChartApp() {
-        audioSpectrumListener = (timestamp, duration, magnitudes, phases) -> {
-            for (int i = 0; i < series1Data.length; i++) {
-                series1Data[i].setYValue(magnitudes[i] + 60);
+        audioSpectrumListener = new AudioSpectrumListener() {
+            @Override
+            public void spectrumDataUpdate(double timestamp, double duration,
+                    float[] magnitudes, float[] phases) {
+                for (int i = 0; i < series1Data.length; i++) {
+                    series1Data[i].setYValue(magnitudes[i] + 60);
+                }
             }
         };
     }
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/charts/area/curvefitted/CurveFittedAreaChart.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/charts/area/curvefitted/CurveFittedAreaChart.java	Wed Dec 04 11:11:23 2013 -0800
@@ -130,7 +130,7 @@
             secondControlPoints[0] = new Point2D(
                     2 * firstControlPoints[0].getX() - dataPoints[0].getX(),
                     2 * firstControlPoints[0].getY() - dataPoints[0].getY());
-            return new Pair<>(firstControlPoints, secondControlPoints);
+            return new Pair<Point2D[], Point2D[]>(firstControlPoints, secondControlPoints);
         }
 
         // Calculate first Bezier control points
@@ -170,7 +170,7 @@
                         (dataPoints[n].getY() + y[n - 1]) / 2);
             }
         }
-        return new Pair<>(firstControlPoints, secondControlPoints);
+        return new Pair<Point2D[], Point2D[]>(firstControlPoints, secondControlPoints);
     }
 
     /**
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/charts/bar/audio/AudioBarChartApp.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/charts/bar/audio/AudioBarChartApp.java	Wed Dec 04 11:11:23 2013 -0800
@@ -71,9 +71,13 @@
             System.getProperty("demo.play.audio", "true"));
 
     public AudioBarChartApp() {
-        audioSpectrumListener = (timestamp, duration, magnitudes, phases) -> {
-            for (int i = 0; i < series1Data.length; i++) {
-                series1Data[i].setYValue(magnitudes[i] + 60);
+        audioSpectrumListener = new AudioSpectrumListener() {
+            @Override
+            public void spectrumDataUpdate(double timestamp, double duration,
+                    float[] magnitudes, float[] phases) {
+                for (int i = 0; i < series1Data.length; i++) {
+                    series1Data[i].setYValue(magnitudes[i] + 60);
+                }
             }
         };
     }
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/charts/custom/candlestick/CandleStickChart.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/charts/custom/candlestick/CandleStickChart.java	Wed Dec 04 11:11:23 2013 -0800
@@ -164,8 +164,12 @@
             // fade out old candle
             FadeTransition ft = new FadeTransition(Duration.millis(500), candle);
             ft.setToValue(0);
-            ft.setOnFinished(actionEvent -> {
-                getPlotChildren().remove(candle);
+            ft.setOnFinished(new EventHandler<ActionEvent>() {
+
+                @Override
+                public void handle(ActionEvent actionEvent) {
+                    getPlotChildren().remove(candle);
+                }
             });
             ft.play();
         } else {
@@ -204,8 +208,12 @@
                 // fade out old candle
                 FadeTransition ft = new FadeTransition(Duration.millis(500), candle);
                 ft.setToValue(0);
-                ft.setOnFinished(actionEvent -> {
-                    getPlotChildren().remove(candle);
+                ft.setOnFinished(new EventHandler<ActionEvent>() {
+
+                    @Override
+                    public void handle(ActionEvent actionEvent) {
+                        getPlotChildren().remove(candle);
+                    }
                 });
                 ft.play();
             } else {
@@ -248,10 +256,10 @@
         List<Number> xData = null;
         List<Number> yData = null;
         if (xa.isAutoRanging()) {
-            xData = new ArrayList<>();
+            xData = new ArrayList<Number>();
         }
         if (ya.isAutoRanging()) {
-            yData = new ArrayList<>();
+            yData = new ArrayList<Number>();
         }
         if (xData != null || yData != null) {
             for (XYChart.Series<Number, Number> series : getData()) {
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/charts/custom/candlestick/CandleStickChartApp.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/charts/custom/candlestick/CandleStickChartApp.java	Wed Dec 04 11:11:23 2013 -0800
@@ -158,10 +158,11 @@
         xAxis.setLabel("Day");
         yAxis.setLabel("Price");
         // add starting data
-        XYChart.Series<Number,Number> series = new XYChart.Series<>();
-        for (double[] day : data) {
+        XYChart.Series<Number,Number> series = new XYChart.Series<Number,Number>();
+        for (int i=0; i< data.length; i++) {
+            double[] day = data[i];
             series.getData().add(
-                    new XYChart.Data<Number, Number>(day[0], day[1], new CandleStickExtraValues(day[2], day[3], day[4], day[5]))
+                new XYChart.Data<Number,Number>(day[0],day[1],new CandleStickExtraValues(day[2],day[3],day[4],day[5]))
             );
         }
         ObservableList<XYChart.Series<Number,Number>> data = chart.getData();
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/charts/line/stock/StockLineChartApp.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/charts/line/stock/StockLineChartApp.java	Wed Dec 04 11:11:23 2013 -0800
@@ -73,13 +73,16 @@
         // create timeline to add new data every 60th of second
         animation = new Timeline();
         animation.getKeyFrames()
-                .add(new KeyFrame(Duration.millis(1000 / 60), actionEvent -> {
-                    // 6 minutes data per frame
-                    for (int count = 0; count < 6; count++) {
-                        nextTime();
-                        plotTime();
-                    }
-                }));
+                .add(new KeyFrame(Duration.millis(1000 / 60), new EventHandler<ActionEvent>() {
+            @Override
+            public void handle(ActionEvent actionEvent) {
+                // 6 minutes data per frame
+                for (int count = 0; count < 6; count++) {
+                    nextTime();
+                    plotTime();
+                }
+            }
+        }));
         animation.setCycleCount(Animation.INDEFINITE);
     }
 
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/charts/pie/drilldown/DrilldownPieChartApp.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/charts/pie/drilldown/DrilldownPieChartApp.java	Wed Dec 04 11:11:23 2013 -0800
@@ -79,12 +79,17 @@
     }
 
     private void setDrilldownData(final PieChart pie, PieChart.Data data, final String labelPrefix) {
-        data.getNode().setOnMouseClicked(t -> pie.setData(FXCollections.observableArrayList(
-                new Data(labelPrefix + "-1", 7),
-                new Data(labelPrefix + "-2", 2),
-                new Data(labelPrefix + "-3", 5),
-                new Data(labelPrefix + "-4", 3),
-                new Data(labelPrefix + "-5", 2))));
+        data.getNode().setOnMouseClicked(new EventHandler<MouseEvent>() {
+            
+            @Override public void handle(MouseEvent t) {
+                pie.setData(FXCollections.observableArrayList(
+                        new PieChart.Data(labelPrefix + "-1", 7),
+                        new PieChart.Data(labelPrefix + "-2", 2),
+                        new PieChart.Data(labelPrefix + "-3", 5),
+                        new PieChart.Data(labelPrefix + "-4", 3),
+                        new PieChart.Data(labelPrefix + "-5", 2)));
+            }
+        });
     }
     
     @Override public void start(Stage primaryStage) throws Exception {
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/charts/scatter/animated/LiveScatterChartApp.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/charts/scatter/animated/LiveScatterChartApp.java	Wed Dec 04 11:11:23 2013 -0800
@@ -68,26 +68,30 @@
         // create animation
         Timeline timeline1 = new Timeline();
         timeline1.getKeyFrames().add(
-            new KeyFrame(Duration.millis(20), actionEvent -> {
-                series.getData().add(new XYChart.Data<Number, Number>(
-                        nextX,
-                        Math.sin(Math.toRadians(nextX)) * 100
-                ));
-                nextX += 10;
+            new KeyFrame(Duration.millis(20), new EventHandler<ActionEvent>() {
+                @Override public void handle(ActionEvent actionEvent) {
+                    series.getData().add(new XYChart.Data<Number, Number>(
+                            nextX,
+                            Math.sin(Math.toRadians(nextX)) * 100
+                    ));
+                    nextX += 10;
+                }
             })
         );
         timeline1.setCycleCount(200);
         Timeline timeline2 = new Timeline();
         timeline2.getKeyFrames().add(
-                new KeyFrame(Duration.millis(50), actionEvent -> {
-                    series.getData().add(new XYChart.Data<Number, Number>(
-                            nextX,
-                            Math.sin(Math.toRadians(nextX)) * 100
-                    ));
-                    if (series.getData().size() > 54) {
-                        series.getData().remove(0);
+                new KeyFrame(Duration.millis(50), new EventHandler<ActionEvent>() {
+                    @Override public void handle(ActionEvent actionEvent) {
+                        series.getData().add(new XYChart.Data<Number, Number>(
+                                nextX,
+                                Math.sin(Math.toRadians(nextX)) * 100
+                        ));
+                        if (series.getData().size() > 54) {
+                            series.getData().remove(0);
+                        }
+                        nextX += 10;
                     }
-                    nextX += 10;
                 })
         );
         timeline2.setCycleCount(Animation.INDEFINITE);
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/concurrency/service/ServiceApp.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/concurrency/service/ServiceApp.java	Wed Dec 04 11:11:23 2013 -0800
@@ -70,7 +70,12 @@
         vbox.setPadding(new Insets(12));
         TableView tableView = new TableView();
         Button button = new Button("Refresh");
-        button.setOnAction(t -> service.restart());
+        button.setOnAction(new EventHandler<ActionEvent>() {
+            @Override
+            public void handle(ActionEvent t) {
+                service.restart();
+            }
+        });
         vbox.setPrefHeight(160);
         vbox.getChildren().addAll(tableView, button);
 
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/colorpicker/ColorPickerApp.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/colorpicker/ColorPickerApp.java	Wed Dec 04 11:11:23 2013 -0800
@@ -64,10 +64,12 @@
         coloredText.setTextFill(c);
         coloredButton.setStyle(createRGBString(c));
 
-        colorPicker.setOnAction(t -> {
-            Color newColor = colorPicker.getValue();
-            coloredText.setTextFill(newColor);
-            coloredButton.setStyle(createRGBString(newColor));
+        colorPicker.setOnAction(new EventHandler() {            
+            @Override public void handle(Event t) {
+                Color newColor = colorPicker.getValue();
+                coloredText.setTextFill(newColor);
+                coloredButton.setStyle(createRGBString(newColor));
+            }
         });
 
         VBox outerVBox = new VBox(coloredText, coloredButton, colorPicker);
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/datepicker/DatePickerApp.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/datepicker/DatePickerApp.java	Wed Dec 04 11:11:23 2013 -0800
@@ -31,12 +31,16 @@
  */
 package ensemble.samples.controls.datepicker;
 
-
 import java.time.LocalDate;
+import java.util.Iterator;
 import java.util.Locale;
 import javafx.application.Application;
+import javafx.beans.value.ChangeListener;
+import javafx.beans.value.ObservableValue;
 import javafx.collections.FXCollections;
 import javafx.collections.ObservableList;
+import javafx.event.ActionEvent;
+import javafx.event.EventHandler;
 import javafx.geometry.Pos;
 import javafx.scene.Parent;
 import javafx.scene.Scene;
@@ -47,6 +51,7 @@
 import javafx.scene.control.MenuBar;
 import javafx.scene.control.MenuItem;
 import javafx.scene.control.RadioMenuItem;
+import javafx.scene.control.Toggle;
 import javafx.scene.control.ToggleGroup;
 import javafx.scene.control.Tooltip;
 import javafx.scene.layout.HBox;
@@ -75,24 +80,26 @@
     private Locale originalLocale;
     private HBox hbox;
     static {
-        locales.addAll("en-US",
-                "ar-SA",
-                "en-GB",
-                "cs-CZ",
-                "el-GR",
-                "he-IL",
-                "hi-IN",
-                "ja-JP",
-                "ja-JP-u-ca-japanese",
-                "ru-RU",
-                "sv-SE",
-                "th-TH",
-                "th-TH-u-ca-buddhist",
-                "th-TH-u-ca-buddhist-nu-thai",
-                "zh-CN",
-                "en-US-u-ca-islamic-umalqura",
-                "ar-SA-u-ca-islamic-umalqura",
-                "en-u-ca-japanese-nu-thai");
+        locales.addAll(new String[]{
+            "en-US",
+            "ar-SA",
+            "en-GB",
+            "cs-CZ",
+            "el-GR",
+            "he-IL",
+            "hi-IN",
+            "ja-JP",
+            "ja-JP-u-ca-japanese",
+            "ru-RU",
+            "sv-SE",
+            "th-TH",
+            "th-TH-u-ca-buddhist",
+            "th-TH-u-ca-buddhist-nu-thai",
+            "zh-CN",
+            "en-US-u-ca-islamic-umalqura",
+            "ar-SA-u-ca-islamic-umalqura",
+            "en-u-ca-japanese-nu-thai"
+        });
     }
 
     public Parent createContent() {
@@ -140,15 +147,18 @@
         //Create the menubar to experiment with the DatePicker
         datePickerMenuBar = createMenuBar(dayCellFactory);
         // Listen for DatePicker actions
-        datePicker.setOnAction(t -> {
-            LocalDate isoDate = datePicker.getValue();
-            if ((isoDate != null) && (!isoDate.equals(LocalDate.now()))) {
-                for (Menu menu : datePickerMenuBar.getMenus()) {
-                    if (menu.getText().equals("Options for Locale")) {
-                        for (MenuItem menuItem : menu.getItems()) {
-                            if (menuItem.getText().equals("Set date to today")) {
-                                if ((menuItem instanceof CheckMenuItem) && ((CheckMenuItem) menuItem).isSelected()) {
-                                    ((CheckMenuItem) menuItem).setSelected(false);
+        datePicker.setOnAction(new EventHandler<ActionEvent>() {
+            @Override
+            public void handle(ActionEvent t) {
+                LocalDate isoDate = datePicker.getValue();
+                if ((isoDate != null) && (!isoDate.equals(LocalDate.now()))) {
+                    for (Menu menu : datePickerMenuBar.getMenus()) {
+                        if (menu.getText().equals("Options for Locale")) {
+                            for (MenuItem menuItem : menu.getItems()) {
+                                if (menuItem.getText().equals("Set date to today")) {
+                                    if ((menuItem instanceof CheckMenuItem) && ((CheckMenuItem) menuItem).isSelected()) {
+                                        ((CheckMenuItem) menuItem).setSelected(false);
+                                    }
                                 }
                             }
                         }
@@ -167,8 +177,9 @@
         final ToggleGroup localeToggleGroup = new ToggleGroup();
         // Locales
         Menu localeMenu = new Menu("Locales");
-        for (String locale1 : locales) {
-            RadioMenuItem localeMenuItem = new RadioMenuItem(locale1);
+        Iterator<String> localeIterator = locales.iterator();
+        while (localeIterator.hasNext()) {
+            RadioMenuItem localeMenuItem = new RadioMenuItem(localeIterator.next());
             localeMenuItem.setToggleGroup(localeToggleGroup);
             localeMenu.getItems().add(localeMenuItem);
         }
@@ -177,36 +188,50 @@
         //Style DatePicker with cell factory
         final CheckMenuItem cellFactoryMenuItem = new CheckMenuItem("Use cell factory to color past days and add tooltip to tomorrow");
         optionsMenu.getItems().add(cellFactoryMenuItem);
-        cellFactoryMenuItem.setOnAction(t -> {
-            if (cellFactoryMenuItem.isSelected()) {
-                datePicker.setDayCellFactory(dayCellFac);
-            } else {
-                datePicker.setDayCellFactory(null);
+        cellFactoryMenuItem.setOnAction(new EventHandler<ActionEvent>() {
+            @Override
+            public void handle(ActionEvent t) {
+                if (cellFactoryMenuItem.isSelected()) {
+                    datePicker.setDayCellFactory(dayCellFac);
+                } else {
+                    datePicker.setDayCellFactory(null);
+                }
             }
         });
                        
         //Set date to today
         final CheckMenuItem todayMenuItem = new CheckMenuItem("Set date to today");
         optionsMenu.getItems().add(todayMenuItem);
-        todayMenuItem.setOnAction(t -> {
-            if (todayMenuItem.isSelected()) {
-                datePicker.setValue(today);
+        todayMenuItem.setOnAction(new EventHandler<ActionEvent>() {
+            @Override
+            public void handle(ActionEvent t) {
+                if (todayMenuItem.isSelected()) {
+                    datePicker.setValue(today);
+                }
             }
         });
 
         //Set date to today
         final CheckMenuItem showWeekNumMenuItem = new CheckMenuItem("Show week numbers");
         optionsMenu.getItems().add(showWeekNumMenuItem);
-        showWeekNumMenuItem.setOnAction(t -> datePicker.setShowWeekNumbers(showWeekNumMenuItem.isSelected()));
+        showWeekNumMenuItem.setOnAction(new EventHandler<ActionEvent>() {
+            @Override
+            public void handle(ActionEvent t) {
+                datePicker.setShowWeekNumbers(showWeekNumMenuItem.isSelected());
+            }
+        });        
         
-        localeToggleGroup.selectedToggleProperty().addListener((ov, oldToggle, newToggle) -> {
-            if (localeToggleGroup.getSelectedToggle() != null) {
-                String selectedLocale = ((RadioMenuItem) localeToggleGroup.getSelectedToggle()).getText();
-                Locale locale = Locale.forLanguageTag(selectedLocale.replace('_', '-'));
-                Locale.setDefault(locale);
-                createDatePicker();
+        localeToggleGroup.selectedToggleProperty().addListener(new ChangeListener<Toggle>() {
+            @Override
+            public void changed(ObservableValue<? extends Toggle> ov, Toggle oldToggle, Toggle newToggle) {
+                if (localeToggleGroup.getSelectedToggle() != null) {
+                    String selectedLocale = ((RadioMenuItem) localeToggleGroup.getSelectedToggle()).getText();
+                    Locale locale = Locale.forLanguageTag(selectedLocale.replace('_', '-'));
+                    Locale.setDefault(locale);
+                    createDatePicker();
+                }
             }
-        });
+        });       
 
         menuBar.getMenus().addAll(localeMenu, optionsMenu);
         return menuBar;
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/listview/listviewcellfactory/ListViewCellFactoryApp.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/listview/listviewcellfactory/ListViewCellFactoryApp.java	Wed Dec 04 11:11:23 2013 -0800
@@ -65,7 +65,11 @@
 
         ));
         
-        listView.setCellFactory(list -> new MoneyFormatCell());
+        listView.setCellFactory(new Callback<ListView<java.lang.Number>, ListCell<java.lang.Number>>() {
+            @Override public ListCell<Number> call(ListView<java.lang.Number> list) {
+                return new MoneyFormatCell();
+            }
+        });        
         
         listView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
         return listView;
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/listview/simplelistview/SimpleListViewApp.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/listview/simplelistview/SimpleListViewApp.java	Wed Dec 04 11:11:23 2013 -0800
@@ -57,9 +57,9 @@
 public class SimpleListViewApp extends Application {
 
     public Parent createContent() {
-        final ListView<String> listView = new ListView<>();
+        final ListView<String> listView = new ListView<String>();
         listView.setItems(FXCollections.observableArrayList(
-                "Row 1", "Row 2", "Row 3", "Row 4", "Row 5", "Row 6",
+                "Row 1", "Row 2", "Long Row 3", "Row 4", "Row 5", "Row 6",
                 "Row 7", "Row 8", "Row 9", "Row 10", "Row 11", "Row 12", "Row 13",
                 "Row 14", "Row 15", "Row 16", "Row 17", "Row 18", "Row 19", "Row 20"));
         listView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/menu/MenuApp.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/menu/MenuApp.java	Wed Dec 04 11:11:23 2013 -0800
@@ -79,9 +79,12 @@
         final MenuItem menu112 = new MenuItem("foo");
         final CheckMenuItem menu113 = new CheckMenuItem("Show \"foo\" item");
         menu113.setSelected(true);
-        menu113.selectedProperty().addListener(valueModel -> {
-            menu112.setVisible(menu113.isSelected());
-            System.err.println("MenuItem \"foo\" is now " + (menu112.isVisible() ? "" : "not") + " visible.");
+        menu113.selectedProperty().addListener(new InvalidationListener() {
+            @Override
+            public void invalidated(Observable valueModel) {
+                menu112.setVisible(menu113.isSelected());
+                System.err.println("MenuItem \"foo\" is now " + (menu112.isVisible() ? "" : "not") + " visible.");
+            }
         });
         // Options->Submenu 1 submenu 
         Menu menu11 = new Menu("Submenu 1",
@@ -97,9 +100,12 @@
         final String change[] = {"Change Text", "Change Back"};
         final MenuItem menu13 = new MenuItem(change[0]);
         menu13.setAccelerator(KeyCombination.keyCombination("Shortcut+C"));
-        menu13.setOnAction(t -> {
-            menu13.setText((menu13.getText().equals(change[0])) ? change[1] : change[0]);
-            outputLabel.setText(((MenuItem) t.getTarget()).getText() + " - action called");
+        menu13.setOnAction(new EventHandler<ActionEvent>() {
+            @Override
+            public void handle(ActionEvent t) {
+                menu13.setText((menu13.getText().equals(change[0])) ? change[1] : change[0]);
+                outputLabel.setText(((MenuItem) t.getTarget()).getText() + " - action called");
+            }
         });
 
         // Options menu       
@@ -123,7 +129,12 @@
             hbox.getChildren().add(sysMenuLabel);
             vbox.getChildren().add(hbox);
             sysMenuLabel.setVisible((menuBar.getHeight() == 0));
-            menuBar.heightProperty().addListener((ov, t, t1) -> sysMenuLabel.setVisible((menuBar.getHeight() == 0)));
+            menuBar.heightProperty().addListener(new ChangeListener<Number>() {
+                @Override
+                public void changed(ObservableValue<? extends Number> ov, Number t, Number t1) {
+                    sysMenuLabel.setVisible((menuBar.getHeight() == 0));
+                }
+            });
         }
 
         vbox.getChildren().addAll(menuBar);
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/pagination/PaginationApp.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/pagination/PaginationApp.java	Wed Dec 04 11:11:23 2013 -0800
@@ -73,14 +73,22 @@
         images[6] = new Image(PaginationApp.class.getResource("/ensemble/samples/shared-resources/Animal7.jpg").toExternalForm(), false);
 
         pagination = new Pagination(7);
-        pagination.setPageFactory(this::createAnimalPage);
+        pagination.setPageFactory(new Callback<Integer, Node>() {
+            @Override
+            public Node call(Integer pageIndex) {
+                return createAnimalPage(pageIndex);
+            }
+        });
         //Style can be numeric page indicators or bullet indicators
         Button styleButton = new Button("Toggle pagination style");
-        styleButton.setOnAction(me -> {
-            if (!pagination.getStyleClass().contains(Pagination.STYLE_CLASS_BULLET)) {
-                pagination.getStyleClass().add(Pagination.STYLE_CLASS_BULLET);
-            } else {
-                pagination.getStyleClass().remove(Pagination.STYLE_CLASS_BULLET);
+        styleButton.setOnAction(new EventHandler<ActionEvent>() {
+            @Override
+            public void handle(ActionEvent me) {
+                if (!pagination.getStyleClass().contains(Pagination.STYLE_CLASS_BULLET)) {
+                    pagination.getStyleClass().add(Pagination.STYLE_CLASS_BULLET);
+                } else {
+                    pagination.getStyleClass().remove(Pagination.STYLE_CLASS_BULLET);
+                }
             }
         });
 
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/progressindicator/ProgressIndicatorApp.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/progressindicator/ProgressIndicatorApp.java	Wed Dec 04 11:11:23 2013 -0800
@@ -78,13 +78,16 @@
         // styled ProgressIndicator
         final ProgressIndicator p5 = new ProgressIndicator();
         p5.setPrefSize(100, 100);
-        p5.progressProperty().addListener((ov, oldVal, newVal) -> {
-            if (p5.getProgress() < 0.25) {
-                p5.setStyle("-fx-progress-color: red;");
-            } else if (p5.getProgress() < 0.5) {
-                p5.setStyle("-fx-progress-color: orange;");
-            } else {
-                p5.setStyle("-fx-progress-color: green;");
+        p5.progressProperty().addListener(new ChangeListener<Number>() {
+            @Override
+            public void changed(ObservableValue ov, Number oldVal, Number newVal) {
+                if (p5.getProgress() < 0.25) {
+                    p5.setStyle("-fx-progress-color: red;");
+                } else if (p5.getProgress() < 0.5) {
+                    p5.setStyle("-fx-progress-color: orange;");
+                } else {
+                    p5.setStyle("-fx-progress-color: green;");
+                }
             }
         });
         // animate the styled ProgressIndicator
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/scrollbar/ScrollBarApp.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/scrollbar/ScrollBarApp.java	Wed Dec 04 11:11:23 2013 -0800
@@ -78,14 +78,24 @@
         //create horizontal scrollbar
         xscrollBar = horizontalScrollBar(-1,-1,xBarWidth,xBarHeight,xBarWidth,xBarHeight);
         xscrollBar.setUnitIncrement(20.0);
-        xscrollBar.valueProperty().addListener((observable, oldValue, newValue) 
-                -> setScrollValueX(xscrollBar.getValue(), circle));
+        xscrollBar.valueProperty().addListener(new ChangeListener<Number>() {
+            @Override
+            public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
+                //changes the x position of the circle
+                setScrollValueX(xscrollBar.getValue(), circle);
+            }
+        });
 
         //create vertical scrollbar
         yscrollBar = verticalScrollBar(-1,-1,yBarWidth,yBarHeight,yBarWidth,yBarHeight);
         yscrollBar.setUnitIncrement(20.0);
-        yscrollBar.valueProperty().addListener((observable, oldValue, newValue) 
-                -> setScrollValueY(yscrollBar.getValue(), circle));
+        yscrollBar.valueProperty().addListener(new ChangeListener<Number>() {
+            @Override
+            public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
+                //changes the y position of the circle
+                setScrollValueY(yscrollBar.getValue(), circle);
+            }
+        });
 
         //shift position of vertical scrollbar to right side of scene
         yscrollBar.setTranslateX(yBarHeight);
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/tab/tabpane/TabPaneApp.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/tab/tabpane/TabPaneApp.java	Wed Dec 04 11:11:23 2013 -0800
@@ -113,7 +113,11 @@
             final RadioButton radioButton = new RadioButton(policy.name());
             radioButton.setMnemonicParsing(false);
             radioButton.setToggleGroup(closingPolicy);
-            radioButton.setOnAction(event -> tabPane.setTabClosingPolicy(TabPane.TabClosingPolicy.valueOf(radioButton.getText())));
+            radioButton.setOnAction(new EventHandler<ActionEvent>() {                
+                @Override public void handle(ActionEvent event) {
+                    tabPane.setTabClosingPolicy(TabPane.TabClosingPolicy.valueOf(radioButton.getText()));
+                }
+            });
             if (policy.name().equals(TabPane.TabClosingPolicy.SELECTED_TAB.name())) {
                 radioButton.setSelected(true);
             }
@@ -130,18 +134,20 @@
 
         final CheckBox cb = new CheckBox("Show labels on original tabs");
         cb.setSelected(true);
-        cb.setOnAction(event -> {
-            if (cb.isSelected()) {
-                tab1.setText("Tab 1");
-                tab2.setText("Longer Tab");
-                tab3.setText("Tab 3");
-                internalTab.setText("Internal Tabs");
+        cb.setOnAction(new EventHandler<ActionEvent>() {           
+            @Override public void handle(ActionEvent event) {
+                if (cb.isSelected()) {
+                    tab1.setText("Tab 1");
+                    tab2.setText("Longer Tab");
+                    tab3.setText("Tab 3");
+                    internalTab.setText("Internal Tabs");
 
-            } else {
-                tab1.setText("");
-                tab2.setText("");
-                tab3.setText("");
-                internalTab.setText("");
+                } else {
+                    tab1.setText("");
+                    tab2.setText("");
+                    tab3.setText("");
+                    internalTab.setText("");
+                }
             }
         });
         vboxTab3.getChildren().add(cb);
@@ -189,11 +195,19 @@
         innerVbox.setTranslateX(10);
         innerVbox.setTranslateY(10);
         Button innerTabPosButton = new Button("Toggle Tab Position");
-        innerTabPosButton.setOnAction(e -> toggleTabPosition(internalTabPane));
+        innerTabPosButton.setOnAction(new EventHandler<ActionEvent>() {           
+            @Override public void handle(ActionEvent e) {
+                toggleTabPosition(internalTabPane);
+            }
+        });
         innerVbox.getChildren().add(innerTabPosButton);
         {
             Button innerTabModeButton = new Button("Toggle Tab Mode");
-            innerTabModeButton.setOnAction(e -> toggleTabMode(internalTabPane));
+            innerTabModeButton.setOnAction(new EventHandler<ActionEvent>() {               
+                @Override public void handle(ActionEvent e) {
+                    toggleTabMode(internalTabPane);
+                }
+            });
             innerVbox.getChildren().add(innerTabModeButton);
         }
         innerTab.setContent(innerVbox);
@@ -212,26 +226,38 @@
     private void setUpControlButtons(VBox vbox) {
         // Toggle style class floating
         final Button tabModeButton = new Button("Toggle Tab Mode");
-        tabModeButton.setOnAction(e -> toggleTabMode(tabPane));
+        tabModeButton.setOnAction(new EventHandler<ActionEvent>() {            
+            @Override public void handle(ActionEvent e) {
+                toggleTabMode(tabPane);
+            }
+        });
         vbox.getChildren().add(tabModeButton);
         // Tab position
         final Button tabPositionButton = new Button("Toggle Tab Position");
-        tabPositionButton.setOnAction(e -> toggleTabPosition(tabPane));
+        tabPositionButton.setOnAction(new EventHandler<ActionEvent>() {           
+            @Override public void handle(ActionEvent e) {
+                toggleTabPosition(tabPane);
+            }
+        });
         // Add tab and switch to it
         final Button newTabButton = new Button("Switch to New Tab");
-        newTabButton.setOnAction(e -> {
-            Tab t = new Tab("Testing");
-            t.setContent(new Button("Howdy"));
-            tabPane.getTabs().add(t);
-            tabPane.getSelectionModel().select(t);
+        newTabButton.setOnAction(new EventHandler<ActionEvent>() {
+            @Override public void handle(ActionEvent e) {
+                Tab t = new Tab("Testing");
+                t.setContent(new Button("Howdy"));
+                tabPane.getTabs().add(t);
+                tabPane.getSelectionModel().select(t);
+            }
         });
         vbox.getChildren().add(newTabButton);
         // Add tab
         final Button addTabButton = new Button("Add Tab");
-        addTabButton.setOnAction(e -> {
-            Tab t = new Tab("New Tab");
-            t.setContent(new Region());
-            tabPane.getTabs().add(t);
+        addTabButton.setOnAction(new EventHandler<ActionEvent>() {
+            @Override public void handle(ActionEvent e) {
+                Tab t = new Tab("New Tab");
+                t.setContent(new Region());
+                tabPane.getTabs().add(t);
+            }
         });
         vbox.getChildren().add(addTabButton);
     }
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/table/tablecellfactory/Person.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/table/tablecellfactory/Person.java	Wed Dec 04 11:11:23 2013 -0800
@@ -52,7 +52,11 @@
             this.email = new SimpleStringProperty(email);
             this.invited = new SimpleBooleanProperty(invited);
 
-            this.invited.addListener((ov, t, t1) -> System.out.println(firstNameProperty().get() + " invited: " + t1));
+            this.invited.addListener(new ChangeListener<Boolean>() {
+                public void changed(ObservableValue<? extends Boolean> ov, Boolean t, Boolean t1) {
+                    System.out.println(firstNameProperty().get() + " invited: " + t1);
+                }
+            });
         }
 
         public BooleanProperty invitedProperty() { return invited; }
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/table/tablecellfactory/TableCellFactoryApp.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/table/tablecellfactory/TableCellFactoryApp.java	Wed Dec 04 11:11:23 2013 -0800
@@ -34,9 +34,12 @@
 import javafx.application.Application;
 import javafx.collections.FXCollections;
 import javafx.collections.ObservableList;
+import javafx.event.EventHandler;
 import javafx.scene.Parent;
 import javafx.scene.Scene;
+import javafx.scene.control.TableCell;
 import javafx.scene.control.TableColumn;
+import javafx.scene.control.TableColumn.CellEditEvent;
 import javafx.scene.control.TableView;
 import javafx.scene.control.cell.CheckBoxTableCell;
 import javafx.scene.control.cell.PropertyValueFactory;
@@ -125,18 +128,31 @@
         launch(args);
     }
 
-    private void updateObservableListProperties(
-            TableColumn<Person, String> emailCol, 
-            TableColumn<Person, String> firstNameCol,
-            TableColumn<Person, String> lastNameCol) {
+    private void updateObservableListProperties(TableColumn emailCol, TableColumn firstNameCol,
+            TableColumn lastNameCol) {
         //Modifying the email property in the ObservableList
-        emailCol.setOnEditCommit(t -> ((Person) t.getTableView().getItems().get(
-                t.getTablePosition().getRow())).setEmail(t.getNewValue()));
+        emailCol.setOnEditCommit(new EventHandler<CellEditEvent<Person, String>>() {
+            @Override
+            public void handle(CellEditEvent<Person, String> t) {
+                ((Person) t.getTableView().getItems().get(
+                        t.getTablePosition().getRow())).setEmail(t.getNewValue());
+            }
+        });
         //Modifying the firstName property in the ObservableList
-        firstNameCol.setOnEditCommit(t -> ((Person) t.getTableView().getItems().get(
-                t.getTablePosition().getRow())).setFirstName(t.getNewValue()));
+        firstNameCol.setOnEditCommit(new EventHandler<CellEditEvent<Person, String>>() {
+            @Override
+            public void handle(CellEditEvent<Person, String> t) {
+                ((Person) t.getTableView().getItems().get(
+                        t.getTablePosition().getRow())).setFirstName(t.getNewValue());
+            }
+        });
         //Modifying the lastName property in the ObservableList
-        lastNameCol.setOnEditCommit(t -> ((Person) t.getTableView().getItems().get(
-                t.getTablePosition().getRow())).setLastName(t.getNewValue()));
+        lastNameCol.setOnEditCommit(new EventHandler<CellEditEvent<Person, String>>() {
+            @Override
+            public void handle(CellEditEvent<Person, String> t) {
+                ((Person) t.getTableView().getItems().get(
+                        t.getTablePosition().getRow())).setLastName(t.getNewValue());
+            }
+        });
     }
 }
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/text/searchbox/SearchBox.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/text/searchbox/SearchBox.java	Wed Dec 04 11:11:23 2013 -0800
@@ -56,11 +56,19 @@
         clearButton = new Button();
         clearButton.setVisible(false);
         getChildren().addAll(textBox, clearButton);
-        clearButton.setOnAction(actionEvent -> {
-            textBox.setText("");
-            textBox.requestFocus();
+        clearButton.setOnAction(new EventHandler<ActionEvent>() {
+            @Override
+            public void handle(ActionEvent actionEvent) {
+                textBox.setText("");
+                textBox.requestFocus();
+            }
         });
-        textBox.textProperty().addListener((observable, oldValue, newValue) -> clearButton.setVisible(textBox.getText().length() != 0));
+        textBox.textProperty().addListener(new ChangeListener<String>() {
+            @Override
+            public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
+                clearButton.setVisible(textBox.getText().length() != 0);
+            }
+        });
     }
 
     @Override
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/text/textvalidator/TextInputValidatorPane.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/text/textvalidator/TextInputValidatorPane.java	Wed Dec 04 11:11:23 2013 -0800
@@ -39,22 +39,26 @@
  
 public class TextInputValidatorPane<C extends TextInputControl> extends ValidatorPane<C> {
 
-    private InvalidationListener textListener = o -> {
-        final Validator v = getValidator();
-        final ValidationResult result = v != null ?
-            v.validate(getContent()) :
-            new ValidationResult("", ValidationResult.Type.SUCCESS);
+    private InvalidationListener textListener = new InvalidationListener() {           
+        @Override public void invalidated(Observable o) {
+            final Validator v = getValidator();
+            final ValidationResult result = v != null ?
+                v.validate(getContent()) :
+                new ValidationResult("", ValidationResult.Type.SUCCESS);
 
-        handleValidationResult(result);
+            handleValidationResult(result);
+        }
     };
 
     public TextInputValidatorPane() {
-        contentProperty().addListener((ov, oldValue, newValue) -> {
-            if (oldValue != null) {
-                oldValue.textProperty().removeListener(textListener);
-            }
-            if (newValue != null) {
-                newValue.textProperty().addListener(textListener);
+        contentProperty().addListener(new ChangeListener<C>() {                
+            @Override public void changed(ObservableValue<? extends C> ov, C oldValue, C newValue) {
+                if (oldValue != null) {
+                    oldValue.textProperty().removeListener(textListener);
+                }
+                if (newValue != null) {
+                    newValue.textProperty().addListener(textListener);
+                }
             }
         });
     }
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/text/textvalidator/TextValidatorApp.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/text/textvalidator/TextValidatorApp.java	Wed Dec 04 11:11:23 2013 -0800
@@ -58,22 +58,25 @@
         dateField.setPromptText("Enter a Large Number");
         dateField.setMaxHeight(TextField.USE_PREF_SIZE);
 
-        TextInputValidatorPane<TextField> pane = new TextInputValidatorPane<>();
+        TextInputValidatorPane<TextField> pane = new TextInputValidatorPane<TextField>();
         pane.setContent(dateField);
-        pane.setValidator(control -> {
-            try {
-                String text = control.getText();
-                if (text == null || text.trim().equals("")) {
-                    return null;
+        pane.setValidator(new Validator<TextField>() {
+            @Override
+            public ValidationResult validate(TextField control) {
+                try {
+                    String text = control.getText();
+                    if (text == null || text.trim().equals("")) {
+                        return null;
+                    }
+                    double d = Double.parseDouble(text);
+                    if (d < 1000) {
+                        return new ValidationResult("Should be > 1000", ValidationResult.Type.WARNING);
+                    }
+                    return null; // succeeded
+                } catch (Exception e) {
+                    // failed
+                    return new ValidationResult("Bad number", ValidationResult.Type.ERROR);
                 }
-                double d = Double.parseDouble(text);
-                if (d < 1000) {
-                    return new ValidationResult("Should be > 1000", ValidationResult.Type.WARNING);
-                }
-                return null; // succeeded
-            } catch (Exception e) {
-                // failed
-                return new ValidationResult("Bad number", ValidationResult.Type.ERROR);
             }
         });
 
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/text/textvalidator/ValidationEvent.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/text/textvalidator/ValidationEvent.java	Wed Dec 04 11:11:23 2013 -0800
@@ -36,7 +36,7 @@
  
 public class ValidationEvent extends Event{
     public static final EventType<ValidationEvent> ANY_EVENT =
-            new EventType<>(Event.ANY, "VALIDATION");
+            new EventType<ValidationEvent>(Event.ANY, "VALIDATION");
 
     private final ValidationResult result;
 
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/text/textvalidator/ValidatorPane.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/text/textvalidator/ValidatorPane.java	Wed Dec 04 11:11:23 2013 -0800
@@ -46,7 +46,7 @@
     /**
      * The content for the validator pane is the control it should work with.
      */
-    private ObjectProperty<C> content = new SimpleObjectProperty<>(this, "content", null);
+    private ObjectProperty<C> content = new SimpleObjectProperty<C>(this, "content", null);
 
     public final C getContent() {
         return content.get();
@@ -62,7 +62,7 @@
     /**
      * The validator
      */
-    private ObjectProperty<Validator<C>> validator = new SimpleObjectProperty<>(this, "validator");
+    private ObjectProperty<Validator<C>> validator = new SimpleObjectProperty<Validator<C>>(this, "validator");
 
     public final Validator<C> getValidator() {
         return validator.get();
@@ -78,7 +78,7 @@
     /**
      * The validation result
      */
-    private ReadOnlyObjectWrapper<ValidationResult> validationResult = new ReadOnlyObjectWrapper<>(this, "validationResult");
+    private ReadOnlyObjectWrapper<ValidationResult> validationResult = new ReadOnlyObjectWrapper<ValidationResult>(this, "validationResult");
 
     public final ValidationResult getValidationResult() {
         return validationResult.get();
@@ -91,7 +91,7 @@
      * The event handler
      */
     private ObjectProperty<EventHandler<ValidationEvent>> onValidation =
-            new SimpleObjectProperty<>(this, "onValidation");
+            new SimpleObjectProperty<EventHandler<ValidationEvent>>(this, "onValidation");
 
     public final EventHandler<ValidationEvent> getOnValidation() {
         return onValidation.get();
@@ -106,12 +106,15 @@
     }
 
     public ValidatorPane() {
-        content.addListener((ov, oldValue, newValue) -> {
-            if (oldValue != null) {
-                getChildren().remove(oldValue);
-            }
-            if (newValue != null) {
-                getChildren().add(0, newValue);
+        content.addListener(new ChangeListener<Control>() {
+            @Override
+            public void changed(ObservableValue<? extends Control> ov, Control oldValue, Control newValue) {
+                if (oldValue != null) {
+                    getChildren().remove(oldValue);
+                }
+                if (newValue != null) {
+                    getChildren().add(0, newValue);
+                }
             }
         });
     }
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/togglebutton/ToggleButtonApp.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/togglebutton/ToggleButtonApp.java	Wed Dec 04 11:11:23 2013 -0800
@@ -74,11 +74,14 @@
         tb1.setToggleGroup(group);
         tb2.setToggleGroup(group);
         tb3.setToggleGroup(group);
-        group.selectedToggleProperty().addListener((observable, oldValue, selectedToggle) -> {
-            if (selectedToggle != null) {
-                label.setText(((ToggleButton) selectedToggle).getText());
-            } else {
-                label.setText("...");
+        group.selectedToggleProperty().addListener(new ChangeListener<Toggle>() {
+            @Override
+            public void changed(ObservableValue<? extends Toggle> observable, Toggle oldValue, Toggle selectedToggle) {
+                if (selectedToggle != null) {
+                    label.setText(((ToggleButton) selectedToggle).getText());
+                } else {
+                    label.setText("...");
+                }
             }
         });
         // select the first button to start with
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/treetableview/TreeTableViewApp.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/treetableview/TreeTableViewApp.java	Wed Dec 04 11:11:23 2013 -0800
@@ -79,21 +79,27 @@
         nameColumn.setEditable(false);
         nameColumn.setMinWidth(130);
         nameColumn.setCellValueFactory(
-                p -> {
-                    Inventory inv = p.getValue().getValue();
-                    return new ReadOnlyObjectWrapper(inv.nameProperty().getValue());
-                });
+                new Callback<TreeTableColumn.CellDataFeatures<Inventory, String>, ObservableValue<String>>() {
+            @Override
+            public ObservableValue<String> call(TreeTableColumn.CellDataFeatures<Inventory, String> p) {
+                Inventory inv = p.getValue().getValue();
+                return new ReadOnlyObjectWrapper(inv.nameProperty().getValue());
+            }
+        });
 
         // Data column
         final TreeTableColumn<Inventory, String> dataColumn = new TreeTableColumn<>("Data");
         dataColumn.setEditable(true);
         dataColumn.setMinWidth(150);
-        dataColumn.setCellValueFactory(p -> {
-            final Inventory value = p.getValue().getValue();
-            if (value.equals(rootItem.getValue())) {
-                return new ReadOnlyStringWrapper(" ");
-            } else {
-                return new ReadOnlyStringWrapper(value.ob1Property().getValue().dataProperty().getValue());
+        dataColumn.setCellValueFactory(new Callback<TreeTableColumn.CellDataFeatures<Inventory, String>, ObservableValue<String>>() {
+            @Override
+            public ObservableValue<String> call(TreeTableColumn.CellDataFeatures<Inventory, String> p) {
+                final Inventory value = p.getValue().getValue();
+                if (value.equals(rootItem.getValue())) {
+                    return new ReadOnlyStringWrapper(" ");
+                } else {
+                    return new ReadOnlyStringWrapper(value.ob1Property().getValue().dataProperty().getValue());
+                }
             }
         });
 
@@ -101,16 +107,29 @@
         final TreeTableColumn<Inventory, String> noteColumn = new TreeTableColumn<>("Notes (editable)");
         noteColumn.setEditable(true);
         noteColumn.setMinWidth(150);
-        noteColumn.setCellValueFactory(p -> {
-            final Inventory value = p.getValue().getValue();
-            if (value.equals(rootItem.getValue())) {
-                return new ReadOnlyStringWrapper(" ");
-            } else {
-                return new ReadOnlyStringWrapper(value.p2Property().getValue());
+        noteColumn.setCellValueFactory(new Callback<TreeTableColumn.CellDataFeatures<Inventory, String>, ObservableValue<String>>() {
+            @Override
+            public ObservableValue<String> call(TreeTableColumn.CellDataFeatures<Inventory, String> p) {
+                final Inventory value = p.getValue().getValue();
+                if (value.equals(rootItem.getValue())) {
+                    return new ReadOnlyStringWrapper(" ");
+                } else {
+                    return new ReadOnlyStringWrapper(value.p2Property().getValue());
+                }
             }
         });
-        noteColumn.setOnEditCommit(t -> System.out.println("Note column entry was edited. Old value = " + t.getOldValue() + " New value = " + t.getNewValue()));
-        noteColumn.setCellFactory(p -> new TextFieldTreeTableCell(new DefaultStringConverter()));
+        noteColumn.setOnEditCommit(new EventHandler<TreeTableColumn.CellEditEvent<Inventory, String>>() {
+            @Override
+            public void handle(TreeTableColumn.CellEditEvent<Inventory, String> t) {
+                System.out.println("Note column entry was edited. Old value = " + t.getOldValue() + " New value = " + t.getNewValue());
+            }
+        });
+        noteColumn.setCellFactory(new Callback<TreeTableColumn<Inventory, String>, TreeTableCell<Inventory, String>>() {
+            @Override
+            public TreeTableCell<Inventory, String> call(TreeTableColumn<Inventory, String> p) {
+                return new TextFieldTreeTableCell(new DefaultStringConverter());
+            }
+        });
 
         final TreeTableView treeTableView = new TreeTableView(rootItem);
         treeTableView.setEditable(true);
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/treeview/TreeViewApp.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/controls/treeview/TreeViewApp.java	Wed Dec 04 11:11:23 2013 -0800
@@ -51,18 +51,18 @@
 public class TreeViewApp extends Application {
 
     public Parent createContent() {
-        final TreeItem<String> treeRoot = new TreeItem<>("Root node");
+        final TreeItem<String> treeRoot = new TreeItem<String>("Root node");
         treeRoot.getChildren().addAll(Arrays.asList(
-                new TreeItem<>("Child Node 1"),
-                new TreeItem<>("Child Node 2"),
-                new TreeItem<>("Child Node 3")));
+                new TreeItem<String>("Child Node 1"),
+                new TreeItem<String>("Child Node 2"),
+                new TreeItem<String>("Child Node 3")));
 
         treeRoot.getChildren().get(2).getChildren().addAll(Arrays.asList(
-                new TreeItem<>("Child Node 4"),
-                new TreeItem<>("Child Node 5"),
-                new TreeItem<>("Child Node 6"),
-                new TreeItem<>("Child Node 7"),
-                new TreeItem<>("Child Node 8")));
+                new TreeItem<String>("Child Node 4"),
+                new TreeItem<String>("Child Node 5"),
+                new TreeItem<String>("Child Node 6"),
+                new TreeItem<String>("Child Node 7"),
+                new TreeItem<String>("Child Node 8")));
 
         final TreeView treeView = new TreeView();
         treeView.setShowRoot(true);
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/fxml/fxmldemo/Authenticator.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/fxml/fxmldemo/Authenticator.java	Wed Dec 04 11:11:23 2013 -0800
@@ -35,7 +35,7 @@
 import java.util.Map;
 
 public class Authenticator {
-    private static final Map<String, String> USERS = new HashMap<>();
+    private static final Map<String, String> USERS = new HashMap<String, String>();
     static {
         USERS.put("demo", "demo");
     }
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/fxml/fxmldemo/FXMLLoginDemoApp.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/fxml/fxmldemo/FXMLLoginDemoApp.java	Wed Dec 04 11:11:23 2013 -0800
@@ -124,14 +124,17 @@
 
     private Initializable replaceSceneContent(String fxml) throws Exception {
         FXMLLoader loader = new FXMLLoader();
+        InputStream in = FXMLLoginDemoApp.class.getResourceAsStream(fxml);
         loader.setBuilderFactory(new JavaFXBuilderFactory());
         loader.setLocation(FXMLLoginDemoApp.class.getResource(fxml));
         AnchorPane page;
-        try (InputStream in = FXMLLoginDemoApp.class.getResourceAsStream(fxml)) {
+        try {
             page = (AnchorPane) loader.load(in);
+        } finally {
+            in.close();
         }
         root.getChildren().removeAll();
         root.getChildren().addAll(page);
-        return loader.getController();
+        return (Initializable) loader.getController();
     }    
 }
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/fxml/fxmldemo/User.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/fxml/fxmldemo/User.java	Wed Dec 04 11:11:23 2013 -0800
@@ -37,7 +37,7 @@
 
 public class User {
 
-    private static final Map<String, User> USERS = new HashMap<>();
+    private static final Map<String, User> USERS = new HashMap<String, User>();
 
     public static User of(String id) {
         User user = USERS.get(id);
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/bouncingballs/Ball.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/bouncingballs/Ball.java	Wed Dec 04 11:11:23 2013 -0800
@@ -59,11 +59,13 @@
         setCache(true);
         setFill(BALL_GRADIENT);
         createTimeline();
-        setOnMousePressed(me -> {
-            if (timeline.getStatus() != Status.RUNNING) {
-                timeline.play();
-            } else {
-                timeline.pause();
+        setOnMousePressed(new EventHandler<MouseEvent>() {
+            public void handle(MouseEvent me) {
+                if (timeline.getStatus() != Status.RUNNING) {
+                    timeline.play();
+                } else {
+                    timeline.pause();
+                }
             }
         });
 
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/bouncingballs/BallsPane.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/bouncingballs/BallsPane.java	Wed Dec 04 11:11:23 2013 -0800
@@ -48,7 +48,7 @@
     }
 
     private void init(){
-        balls = new ArrayList<>();
+        balls = new ArrayList<Ball>();
         for (int i = 0; i < NR_OF_BALLS; i++) {
             balls.add(new Ball(i));
         }
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/bouncingballs/BouncingBallsApp.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/bouncingballs/BouncingBallsApp.java	Wed Dec 04 11:11:23 2013 -0800
@@ -93,7 +93,11 @@
         final BallsPane pane = ballsscreen.getPane();
 
         Button resetButton = new Button("Reset");
-        resetButton.setOnAction(event -> pane.resetBalls());
+        resetButton.setOnAction(new EventHandler<ActionEvent>() {
+            public void handle(ActionEvent event) {
+                pane.resetBalls();
+            }
+        });
         VBox vb = new VBox(10);
         vb.getChildren().addAll(resetButton, ballsscreen);
         vb.setPadding(new Insets(15, 24, 15, 24));
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/brickbreaker/Brick.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/brickbreaker/Brick.java	Wed Dec 04 11:11:23 2013 -0800
@@ -86,34 +86,33 @@
     
 
     public static int getBrickType(String s) {
-        switch (s) {
-            case "L":
-                return TYPE_BLUE;
-            case "2":
-                return TYPE_BROKEN1;
-            case "B":
-                return TYPE_BROWN;
-            case "C":
-                return TYPE_CYAN;
-            case "G":
-                return TYPE_GREEN;
-            case "0":
-                return TYPE_GREY;
-            case "M":
-                return TYPE_MAGENTA;
-            case "O":
-                return TYPE_ORANGE;
-            case "R":
-                return TYPE_RED;
-            case "V":
-                return TYPE_VIOLET;
-            case "W":
-                return TYPE_WHITE;
-            case "Y":
-                return TYPE_YELLOW;
-            default:
-                System.out.println("Unknown brick type '{s}'");
-                return TYPE_WHITE;
+        if (s.equals("L")) {
+            return TYPE_BLUE;
+        } else if (s.equals("2")) {
+            return TYPE_BROKEN1;
+        } else if (s.equals("B")) {
+            return TYPE_BROWN;
+        } else if (s.equals("C")) {
+            return TYPE_CYAN;
+        } else if (s.equals("G")) {
+            return TYPE_GREEN;
+        } else if (s.equals("0")) {
+            return TYPE_GREY;
+        } else if (s.equals("M")) {
+            return TYPE_MAGENTA;
+        } else if (s.equals("O")) {
+            return TYPE_ORANGE;
+        } else if (s.equals("R")) {
+            return TYPE_RED;
+        } else if (s.equals("V")) {
+            return TYPE_VIOLET;
+        } else if (s.equals("W")) {
+            return TYPE_WHITE;
+        } else if (s.equals("Y")) {
+            return TYPE_YELLOW;
+        } else {
+            System.out.println("Unknown brick type '{s}'");
+            return TYPE_WHITE;
         }
     }
 
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/brickbreaker/Config.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/brickbreaker/Config.java	Wed Dec 04 11:11:23 2013 -0800
@@ -67,13 +67,13 @@
     public static final int FIELD_HEIGHT = FIELD_WIDTH;
     public static final int FIELD_Y = SCREEN_HEIGHT - FIELD_HEIGHT;
 
-    private static ObservableList<Image> bricksImages = javafx.collections.FXCollections.observableArrayList();
+    private static ObservableList<Image> bricksImages = javafx.collections.FXCollections.<Image>observableArrayList();
 
     public static ObservableList<Image> getBricksImages() {
         return bricksImages;
     }
 
-    private static ObservableList<Image> bonusesImages = javafx.collections.FXCollections.observableArrayList();
+    private static ObservableList<Image> bonusesImages = javafx.collections.FXCollections.<Image>observableArrayList();
 
     public static ObservableList<Image> getBonusesImages() {
         return bonusesImages;
@@ -102,7 +102,7 @@
     public static final int IMAGE_READY = 20;
     public static final int IMAGE_GAMEOVER = 21;
 
-    private static ObservableList<Image> images = javafx.collections.FXCollections.observableArrayList();
+    private static ObservableList<Image> images = javafx.collections.FXCollections.<Image>observableArrayList();
 
     public static ObservableList<Image> getImages() {
         return images;
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/brickbreaker/Level.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/brickbreaker/Level.java	Wed Dec 04 11:11:23 2013 -0800
@@ -105,26 +105,30 @@
 
     private void initStartingTimeline() {
         startingTimeline = new Timeline();
-        KeyFrame kf1 = new KeyFrame(Duration.millis(500), event -> {
-            message.setVisible(true);
-            state = STARTING_LEVEL;
-            bat.setVisible(false);
-            ball.setVisible(false);
+        KeyFrame kf1 = new KeyFrame(Duration.millis(500), new EventHandler<ActionEvent>() {
+            public void handle(ActionEvent event) {
+                message.setVisible(true);
+                state = STARTING_LEVEL;
+                bat.setVisible(false);
+                ball.setVisible(false);
+            }
         }, new KeyValue(message.opacityProperty(), 0));
         KeyFrame kf2 = new KeyFrame(Duration.millis(1500), new KeyValue(message.opacityProperty(), 1));
         KeyFrame kf3 = new KeyFrame(Duration.millis(3000), new KeyValue(message.opacityProperty(), 1));
-        KeyFrame kf4 = new KeyFrame(Duration.millis(4000), event -> {
-            message.setVisible(false);
+        KeyFrame kf4 = new KeyFrame(Duration.millis(4000), new EventHandler<ActionEvent>() {
+            public void handle(ActionEvent event) {
+                message.setVisible(false);
 
-            bat.setTranslateX((Config.FIELD_WIDTH - bat.getWidth()) / 2.0);
-            ball.setTranslateX((Config.FIELD_WIDTH - ball.getDiameter()) / 2.0);
-            ball.setTranslateY(Config.BAT_Y - ball.getDiameter());
-            ballDirX = (Utils.random(2) * 2 - 1) * Config.BALL_MIN_COORD_SPEED;
-            ballDirY = -Config.BALL_MIN_SPEED;
+                bat.setTranslateX((Config.FIELD_WIDTH - bat.getWidth()) / 2.0);
+                ball.setTranslateX((Config.FIELD_WIDTH - ball.getDiameter()) / 2.0);
+                ball.setTranslateY(Config.BAT_Y - ball.getDiameter());
+                ballDirX = (Utils.random(2) * 2 - 1) * Config.BALL_MIN_COORD_SPEED;
+                ballDirY = -Config.BALL_MIN_SPEED;
 
-            bat.setVisible(true);
-            ball.setVisible(true);
-            state = BALL_CATCHED;
+                bat.setVisible(true);
+                ball.setVisible(true);
+                state = BALL_CATCHED;
+            }
         }, new KeyValue(message.opacityProperty(), 0));
 
         startingTimeline.getKeyFrames().addAll(kf1, kf2, kf3, kf4);
@@ -570,10 +574,10 @@
         state = STARTING_LEVEL;
         batDirection = 0;
         levelNumber = level;
-        lives = new ArrayList<>();
-        bricks = new ArrayList<>();
-        fadeBricks = new ArrayList<>();
-        bonuses = new ArrayList<>();
+        lives = new ArrayList<Bonus>();
+        bricks = new ArrayList<Brick>();
+        fadeBricks = new ArrayList<Brick>();
+        bonuses = new ArrayList<Bonus>();
         ball = new Ball();
         ball.setVisible(false);
         bat = new Bat();
@@ -594,47 +598,62 @@
         background.setImage(Config.getImages().get(Config.IMAGE_BACKGROUND));
         background.setFitWidth(Config.SCREEN_WIDTH);
         background.setFitHeight(Config.SCREEN_HEIGHT);
-        background.setOnMouseMoved(me -> moveBat(me.getX() - bat.getWidth() / 2));
-        background.setOnMouseDragged(me -> moveBat(me.getX() - bat.getWidth() / 2));
-        background.setOnMousePressed(me -> {
-            if (state == PLAYING) {
+        background.setOnMouseMoved(new EventHandler<MouseEvent>() {
+            public void handle(MouseEvent me) {
+                moveBat(me.getX() - bat.getWidth() / 2);
+            }
+        });
+        background.setOnMouseDragged(new EventHandler<MouseEvent>() {
+            public void handle(MouseEvent me) {
                 // Support touch-only devices like some mobile phones
                 moveBat(me.getX() - bat.getWidth() / 2);
             }
-            if (state == BALL_CATCHED) {
-                state = PLAYING;
-            }
-            if (state == GAME_OVER) {
-                mainFrame.changeState(MainFrame.SPLASH);
+        });
+        background.setOnMousePressed(new EventHandler<MouseEvent>() {
+            public void handle(MouseEvent me) {
+                if (state == PLAYING) {
+                    // Support touch-only devices like some mobile phones
+                    moveBat(me.getX() - bat.getWidth() / 2);
+                }
+                if (state == BALL_CATCHED) {
+                    state = PLAYING;
+                }
+                if (state == GAME_OVER) {
+                    mainFrame.changeState(MainFrame.SPLASH);
+                }
             }
         });
-        background.setOnKeyPressed(ke -> {
-            if ((ke.getCode() == KeyCode.POWER) || (ke.getCode() == KeyCode.X)) {
-                Platform.exit();
-            }
-            if (state == BALL_CATCHED && (ke.getCode() == KeyCode.SPACE ||
-                    ke.getCode() == KeyCode.ENTER || ke.getCode() == KeyCode.PLAY)) {
-                state = PLAYING;
-            }
-            if (state == GAME_OVER) {
-                mainFrame.changeState(MainFrame.SPLASH);
-            }
-            if (state == PLAYING && ke.getCode() == KeyCode.Q) {
-                // Lost life
-                lostLife();
-                return;
-            }
-            if ((ke.getCode() == KeyCode.LEFT || ke.getCode() == KeyCode.TRACK_PREV)) {
-                batDirection = - Config.BAT_SPEED;
-            }
-            if ((ke.getCode() == KeyCode.RIGHT || ke.getCode() == KeyCode.TRACK_NEXT)) {
-                batDirection = Config.BAT_SPEED;
+        background.setOnKeyPressed(new EventHandler<KeyEvent>() {
+            public void handle(KeyEvent ke) {
+                if ((ke.getCode() == KeyCode.POWER) || (ke.getCode() == KeyCode.X)) {
+                    Platform.exit();
+                }
+                if (state == BALL_CATCHED && (ke.getCode() == KeyCode.SPACE ||
+                        ke.getCode() == KeyCode.ENTER || ke.getCode() == KeyCode.PLAY)) {
+                    state = PLAYING;
+                }
+                if (state == GAME_OVER) {
+                    mainFrame.changeState(MainFrame.SPLASH);
+                }
+                if (state == PLAYING && ke.getCode() == KeyCode.Q) {
+                    // Lost life
+                    lostLife();
+                    return;
+                }
+                if ((ke.getCode() == KeyCode.LEFT || ke.getCode() == KeyCode.TRACK_PREV)) {
+                    batDirection = - Config.BAT_SPEED;
+                }
+                if ((ke.getCode() == KeyCode.RIGHT || ke.getCode() == KeyCode.TRACK_NEXT)) {
+                    batDirection = Config.BAT_SPEED;
+                }
             }
         });
-        background.setOnKeyReleased(ke -> {
-            if (ke.getCode() == KeyCode.LEFT || ke.getCode() == KeyCode.RIGHT ||
-                ke.getCode() == KeyCode.TRACK_PREV || ke.getCode() == KeyCode.TRACK_NEXT) {
-                batDirection = 0;
+        background.setOnKeyReleased(new EventHandler<KeyEvent>() {
+            public void handle(KeyEvent ke) {
+                if (ke.getCode() == KeyCode.LEFT || ke.getCode() == KeyCode.RIGHT ||
+                    ke.getCode() == KeyCode.TRACK_PREV || ke.getCode() == KeyCode.TRACK_NEXT) {
+                    batDirection = 0;
+                }
             }
         });
         group.getChildren().add(background);
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/brickbreaker/LevelData.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/brickbreaker/LevelData.java	Wed Dec 04 11:11:23 2013 -0800
@@ -213,7 +213,7 @@
 
     private static void initLevelsOffsets() {
         if (levelsOffsets == null) {
-            levelsOffsets = javafx.collections.FXCollections.observableArrayList();
+            levelsOffsets = javafx.collections.FXCollections.<Integer>observableArrayList();
             levelsOffsets.add(-1);
             for (int i = 0; i < LEVELS_DATA.length; i++) {
                 if (LEVELS_DATA[i].equals(NEXT_LEVEL)) {
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/brickbreaker/Splash.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/brickbreaker/Splash.java	Wed Dec 04 11:11:23 2013 -0800
@@ -68,44 +68,46 @@
     private void initTimeline() {
         timeline = new Timeline();
         timeline.setCycleCount(Timeline.INDEFINITE);
-        KeyFrame kf = new KeyFrame(Duration.millis(40), event -> {
-            if (state == STATE_SHOW_TITLE) {
-                stateArg++;
-                int center = Config.SCREEN_WIDTH / 2;
-                int offset = (int)(Math.cos(stateArg / 4.0) * (40 - stateArg) / 40 * center);
-                brick.setTranslateX(center - brick.getImage().getWidth() / 2 + offset);
-                breaker.setTranslateX(center - breaker.getImage().getWidth() / 2 - offset);
-                if (stateArg == 40) {
-                    stateArg = 0;
-                    state = STATE_SHOW_STRIKE;
+        KeyFrame kf = new KeyFrame(Duration.millis(40), new EventHandler<ActionEvent>() {
+            public void handle(ActionEvent event) {
+                if (state == STATE_SHOW_TITLE) {
+                    stateArg++;
+                    int center = Config.SCREEN_WIDTH / 2;
+                    int offset = (int)(Math.cos(stateArg / 4.0) * (40 - stateArg) / 40 * center);
+                    brick.setTranslateX(center - brick.getImage().getWidth() / 2 + offset);
+                    breaker.setTranslateX(center - breaker.getImage().getWidth() / 2 - offset);
+                    if (stateArg == 40) {
+                        stateArg = 0;
+                        state = STATE_SHOW_STRIKE;
+                    }
+                    return;
                 }
-                return;
+                if (state == STATE_SHOW_STRIKE) {
+                    if (stateArg == 0) {
+                        strike.setTranslateX(breaker.getTranslateX() + brick.getImage().getWidth());
+                        strike.setScaleX(0);
+                        strike.setScaleY(0);
+                        strike.setVisible(true);
+                    }
+                    stateArg++;
+                    double coef = stateArg / 30f;
+                    brick.setTranslateX(breaker.getTranslateX() +
+                        (breaker.getImage().getWidth() - brick.getImage().getWidth()) / 2f * (1 - coef));
+                    strike.setScaleX(coef);
+                    strike.setScaleY(coef);
+                    strike.setRotate((30 - stateArg) * 2);
+                    if (stateArg == 30) {
+                        stateArg = 0;
+                        state = STATE_SUN;
+                    }
+                    return;
+                }
+                // Here state == STATE_SUN
+                if (pressanykey.getOpacity() < 1) {
+                    pressanykey.setOpacity(pressanykey.getOpacity() + 0.05f);
+                }
+                stateArg--;
             }
-            if (state == STATE_SHOW_STRIKE) {
-                if (stateArg == 0) {
-                    strike.setTranslateX(breaker.getTranslateX() + brick.getImage().getWidth());
-                    strike.setScaleX(0);
-                    strike.setScaleY(0);
-                    strike.setVisible(true);
-                }
-                stateArg++;
-                double coef = stateArg / 30f;
-                brick.setTranslateX(breaker.getTranslateX() +
-                    (breaker.getImage().getWidth() - brick.getImage().getWidth()) / 2f * (1 - coef));
-                strike.setScaleX(coef);
-                strike.setScaleY(coef);
-                strike.setRotate((30 - stateArg) * 2);
-                if (stateArg == 30) {
-                    stateArg = 0;
-                    state = STATE_SUN;
-                }
-                return;
-            }
-            // Here state == STATE_SUN
-            if (pressanykey.getOpacity() < 1) {
-                pressanykey.setOpacity(pressanykey.getOpacity() + 0.05f);
-            }
-            stateArg--;
         });
         timeline.getKeyFrames().add(kf);
     }
@@ -128,8 +130,16 @@
         background.setImage(Config.getImages().get(Config.IMAGE_BACKGROUND));
         background.setFitWidth(Config.SCREEN_WIDTH);
         background.setFitHeight(Config.SCREEN_HEIGHT);
-        background.setOnMousePressed(me -> mainFrame.startGame());
-        background.setOnKeyPressed(ke -> mainFrame.startGame());
+        background.setOnMousePressed(new EventHandler<MouseEvent>() {
+            @Override public void handle(MouseEvent me) {
+                mainFrame.startGame();
+            }
+        });
+        background.setOnKeyPressed(new EventHandler<KeyEvent>() {
+            @Override public void handle(KeyEvent ke) {
+                mainFrame.startGame();
+            }
+        });
         brick = new ImageView();
         brick.setImage(Config.getImages().get(Config.IMAGE_SPLASH_BRICK));
         brick.setTranslateX(-1000);
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/calc/Calculator.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/calc/Calculator.java	Wed Dec 04 11:11:23 2013 -0800
@@ -95,7 +95,13 @@
     }
 
     private void addKeyListener() {
-        setOnKeyPressed(this::processKeyEvent);
+        setOnKeyPressed(new EventHandler<KeyEvent>() {
+
+            @Override
+            public void handle(KeyEvent ke) {
+                processKeyEvent(ke);
+            }
+        });
         setFocusTraversable(true);
         requestFocus();
     }
@@ -158,7 +164,12 @@
                 final Key key = new Key(Util.KEY_CODES[i][j]);
                 key.setTranslateX(background.getX() + (Key.WIDTH + 1) * j + BORDER);
                 key.setTranslateY(background.getY() + (Key.HEIGHT + 1) * i + BORDER + TR_Y);
-                key.setOnMousePressed(me -> onKey(key));
+                key.setOnMousePressed(new EventHandler<MouseEvent>() {
+
+                    @Override public void handle(MouseEvent me) {
+                        onKey(key);
+                    }
+                });
                 keys[i * Util.KEY_CODES[0].length + j] = key;
                 
             }
@@ -313,7 +324,7 @@
     }
 
     private void onNewOperation() {
-        operationText.setText(operation);
+        operationText.setText(operation.toString());
     }
 
     private void onNewNumber() {
@@ -352,55 +363,38 @@
 
     private void processKeyEvent(KeyEvent e) {
         String text = e.getText();
-        switch (text) {
-            case "0":
-                onDigit(Code.DIGIT_0);
-                break;
-            case "1":
-                onDigit(Code.DIGIT_1);
-                break;
-            case "2":
-                onDigit(Code.DIGIT_2);
-                break;
-            case "3":
-                onDigit(Code.DIGIT_3);
-                break;
-            case "4":
-                onDigit(Code.DIGIT_4);
-                break;
-            case "5":
-                onDigit(Code.DIGIT_5);
-                break;
-            case "6":
-                onDigit(Code.DIGIT_6);
-                break;
-            case "7":
-                onDigit(Code.DIGIT_7);
-                break;
-            case "8":
-                onDigit(Code.DIGIT_8);
-                break;
-            case "9":
-                onDigit(Code.DIGIT_9);
-                break;
-            case "+":
-                onOperations(Code.ADD);
-                break;
-            case "-":
-                onOperations(Code.SUBTRACT);
-                break;
-            case "*":
-                onOperations(Code.MULTIPLY);
-                break;
-            case "/":
-                onOperations(Code.DIVIDE);
-                break;
-            case ".":
-                onDecimal();
-                break;
-            case "=":
-                onEquals();
-                break;
+        if(text.equals("0")){
+            onDigit(Code.DIGIT_0);
+        } else if(text.equals("1")){
+            onDigit(Code.DIGIT_1);
+        } else if(text.equals("2")){
+            onDigit(Code.DIGIT_2);
+        } else if(text.equals("3")){
+            onDigit(Code.DIGIT_3);
+        } else if(text.equals("4")){
+            onDigit(Code.DIGIT_4);
+        } else if(text.equals("5")){
+            onDigit(Code.DIGIT_5);
+        } else if(text.equals("6")){
+            onDigit(Code.DIGIT_6);
+        } else if(text.equals("7")){
+            onDigit(Code.DIGIT_7);
+        } else if(text.equals("8")){
+            onDigit(Code.DIGIT_8);
+        } else if(text.equals("9")){
+            onDigit(Code.DIGIT_9);
+        } else if(text.equals("+")){
+            onOperations(Code.ADD);
+        } else if(text.equals("-")){
+            onOperations(Code.SUBTRACT);
+        } else if(text.equals("*")){
+            onOperations(Code.MULTIPLY);
+        } else if(text.equals("/")){
+            onOperations(Code.DIVIDE);
+        } else if(text.equals(".")){
+            onDecimal();
+        } else if(text.equals("=")){
+            onEquals();
         }
         
         switch (e.getCode()) {
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/calc/Key.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/calc/Key.java	Wed Dec 04 11:11:23 2013 -0800
@@ -96,9 +96,17 @@
     }
 
     private void initListeners() {
-        setOnMouseEntered(me -> background.setFill(CELL_SEL_FILL));
+        setOnMouseEntered(new EventHandler<MouseEvent>() {
+            @Override public void handle(MouseEvent me) {
+                background.setFill(CELL_SEL_FILL);
+            }
+        });
 
-        setOnMouseExited(me -> background.setFill(CELL_FILL));
+        setOnMouseExited(new EventHandler<MouseEvent>() {
+            @Override public void handle(MouseEvent me) {
+                background.setFill(CELL_FILL);
+            }
+        });
     }
 
     private void createBackground() {
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/digitalclock/Clock.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/digitalclock/Clock.java	Wed Dec 04 11:11:23 2013 -0800
@@ -96,16 +96,23 @@
         // wait till start of next second then start a timeline to call refreshClocks() every second
         delayTimeline = new Timeline();
         delayTimeline.getKeyFrames().add(
-                new KeyFrame(new Duration(1000 - (System.currentTimeMillis() % 1000)), t -> {
-                    if (secondTimeline != null) {
-                        secondTimeline.stop();
+                new KeyFrame(new Duration(1000 - (System.currentTimeMillis() % 1000)), new EventHandler<ActionEvent>() {            
+            @Override public void handle(ActionEvent event) {
+                if (secondTimeline != null) {
+                    secondTimeline.stop();
+                }
+                secondTimeline = new Timeline();
+                secondTimeline.setCycleCount(Timeline.INDEFINITE);
+                secondTimeline.getKeyFrames().add(
+                        new KeyFrame(Duration.seconds(1), new EventHandler<ActionEvent>() {
+                    
+                    @Override public void handle(ActionEvent event) {
+                        refreshClocks();
                     }
-                    secondTimeline = new Timeline();
-                    secondTimeline.setCycleCount(Timeline.INDEFINITE);
-                    secondTimeline.getKeyFrames().add(
-                            new KeyFrame(Duration.seconds(1), event -> refreshClocks()));
-                    secondTimeline.play();
                 }));
+                secondTimeline.play();
+            }
+        }));
         delayTimeline.play();
     }
 
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/displayshelf/DisplayShelf.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/displayshelf/DisplayShelf.java	Wed Dec 04 11:11:23 2013 -0800
@@ -86,11 +86,14 @@
             final PerspectiveImage item =
                     items[i] = new PerspectiveImage(images[i]);
             final double index = i;
-            item.setOnMouseClicked(me -> {
-                localChange = true;
-                scrollBar.setValue(index);
-                localChange = false;
-                shiftToCenter(item);
+            item.setOnMouseClicked(new EventHandler<MouseEvent>() {
+                @Override
+                public void handle(MouseEvent me) {
+                    localChange = true;
+                    scrollBar.setValue(index);
+                    localChange = false;
+                    shiftToCenter(item);
+                }
             });
         }
         // setup scroll bar
@@ -98,9 +101,12 @@
         scrollBar.setVisibleAmount(1);
         scrollBar.setUnitIncrement(1);
         scrollBar.setBlockIncrement(1);
-        scrollBar.valueProperty().addListener(ov -> {
-            if (!localChange) {
-                shiftToCenter(items[(int) Math.round(scrollBar.getValue())]);
+        scrollBar.valueProperty().addListener(new InvalidationListener() {
+            @Override
+            public void invalidated(Observable ov) {
+                if (!localChange) {
+                    shiftToCenter(items[(int) Math.round(scrollBar.getValue())]);
+                }
             }
         });
         // create content
@@ -108,17 +114,20 @@
         getChildren().addAll(centered, scrollBar);
         // listen for keyboard events
         setFocusTraversable(true);
-        setOnKeyPressed(ke -> {
-            if (ke.getCode() == KeyCode.LEFT) {
-                shift(1);
-                localChange = true;
-                scrollBar.setValue(centerIndex);
-                localChange = false;
-            } else if (ke.getCode() == KeyCode.RIGHT) {
-                shift(-1);
-                localChange = true;
-                scrollBar.setValue(centerIndex);
-                localChange = false;
+        setOnKeyPressed(new EventHandler<KeyEvent>() {
+            @Override
+            public void handle(KeyEvent ke) {
+                if (ke.getCode() == KeyCode.LEFT) {
+                    shift(1);
+                    localChange = true;
+                    scrollBar.setValue(centerIndex);
+                    localChange = false;
+                } else if (ke.getCode() == KeyCode.RIGHT) {
+                    shift(-1);
+                    localChange = true;
+                    scrollBar.setValue(centerIndex);
+                    localChange = false;
+                }
             }
         });
         // update
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/images/imageoperator/ImageOperationApp.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/images/imageoperator/ImageOperationApp.java	Wed Dec 04 11:11:23 2013 -0800
@@ -66,9 +66,9 @@
         PixelWriter pw = img.getPixelWriter();
         double w = img.getWidth();
         double h = img.getHeight();
-        double xRatio;
-        double yRatio;
-        double hue;
+        double xRatio = 0.0;
+        double yRatio = 0.0;
+        double hue = 0.0;
 
         for (int y = 0; y < h; y++) {
             for (int x = 0; x < w; x++) {
@@ -83,9 +83,24 @@
     public Parent createContent() {
          StackPane root = new StackPane();
         final WritableImage img = new WritableImage(200, 200);
-        gridSize.addListener(observable -> renderImage(img, gridSize.doubleValue(), hueFactor.doubleValue(), hueOffset.doubleValue()));
-        hueFactor.addListener(observable -> renderImage(img, gridSize.doubleValue(), hueFactor.doubleValue(), hueOffset.doubleValue()));
-        hueOffset.addListener(observable -> renderImage(img, gridSize.doubleValue(), hueFactor.doubleValue(), hueOffset.doubleValue()));
+        gridSize.addListener(new InvalidationListener() {
+            @Override
+            public void invalidated(Observable observable) {
+                renderImage(img, gridSize.doubleValue(), hueFactor.doubleValue(), hueOffset.doubleValue());
+            }
+        });
+        hueFactor.addListener(new InvalidationListener() {
+            @Override
+            public void invalidated(Observable observable) {
+                renderImage(img, gridSize.doubleValue(), hueFactor.doubleValue(), hueOffset.doubleValue());
+            }
+        });
+        hueOffset.addListener(new InvalidationListener() {
+            @Override
+            public void invalidated(Observable observable) {
+                renderImage(img, gridSize.doubleValue(), hueFactor.doubleValue(), hueOffset.doubleValue());
+            }
+        });
         renderImage(img, 3.0, 12.0, 240.0);
 
         ImageView view = new ImageView(img);
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/paints/lineargradient/LinearGradientApp.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/paints/lineargradient/LinearGradientApp.java	Wed Dec 04 11:11:23 2013 -0800
@@ -64,10 +64,10 @@
         Rectangle rect1 = new Rectangle(0,0,80,80);
 
         //create simple linear gradient
-        LinearGradient gradient1 = new LinearGradient(0, 0, 1, 0, true, 
-                CycleMethod.NO_CYCLE, 
-                new Stop(0, Color.DODGERBLUE),
-                new Stop(1, Color.BLACK));
+        LinearGradient gradient1 = new LinearGradient(0, 0, 1, 0, true, CycleMethod.NO_CYCLE, new Stop[] {
+            new Stop(0, Color.DODGERBLUE),
+            new Stop(1, Color.BLACK)
+        });
 
         //set rectangle fill
         rect1.setFill(gradient1);
@@ -76,11 +76,11 @@
         Rectangle rect2 = new Rectangle(0,0,80,80);
 
         //create complex linear gradient
-        LinearGradient gradient2 = new LinearGradient(0, 0, 0, 0.5,  true, 
-                CycleMethod.REFLECT, 
-                new Stop(0, Color.DODGERBLUE),
-                new Stop(0.1, Color.BLACK),
-                new Stop(1, Color.DODGERBLUE));
+        LinearGradient gradient2 = new LinearGradient(0, 0, 0, 0.5,  true, CycleMethod.REFLECT, new Stop[] {
+            new Stop(0, Color.DODGERBLUE),
+            new Stop(0.1, Color.BLACK),
+            new Stop(1, Color.DODGERBLUE)
+        });
 
         //set rectangle fill
         rect2.setFill(gradient2);
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/paints/radialgradient/RadialGradientApp.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/paints/radialgradient/RadialGradientApp.java	Wed Dec 04 11:11:23 2013 -0800
@@ -62,20 +62,20 @@
 
     public Parent createContent() {
         //create simple radial gradient
-        RadialGradient gradient1 = new RadialGradient(0, 0, 0.5, 0.5, 1, true, 
-                CycleMethod.NO_CYCLE, 
-                new Stop(0, Color.DODGERBLUE),
-                new Stop(1, Color.BLACK));
+        RadialGradient gradient1 = new RadialGradient(0, 0, 0.5, 0.5, 1, true, CycleMethod.NO_CYCLE, new Stop[]{
+                    new Stop(0, Color.DODGERBLUE),
+                    new Stop(1, Color.BLACK)
+                });
         Circle circle1 = new Circle(45, 45, 40, gradient1);
 
         //create complex radial gradient
-        RadialGradient gradient2 = new RadialGradient(20, 1, 0.5, 0.5, 0.6, true, 
-                CycleMethod.NO_CYCLE, 
-                new Stop(0, Color.TRANSPARENT),
-                new Stop(0.5, Color.DARKGRAY),
-                new Stop(0.64, Color.WHITESMOKE),
-                new Stop(0.65, Color.YELLOW),
-                new Stop(1, Color.GOLD));
+        RadialGradient gradient2 = new RadialGradient(20, 1, 0.5, 0.5, 0.6, true, CycleMethod.NO_CYCLE, new Stop[]{
+                    new Stop(0, Color.TRANSPARENT),
+                    new Stop(0.5, Color.DARKGRAY),
+                    new Stop(0.64, Color.WHITESMOKE),
+                    new Stop(0.65, Color.YELLOW),
+                    new Stop(1, Color.GOLD)
+                });
         Circle circle2 = new Circle(145, 45, 40, gradient2);
         
         HBox hb = new HBox(10);
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/puzzle/Piece.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/puzzle/Piece.java	Wed Dec 04 11:11:23 2013 -0800
@@ -88,35 +88,41 @@
             // start in inactive state
             setInactive();
             // add listeners to support dragging
-            setOnMousePressed(me -> {
-                toFront();
-                startDragX = getTranslateX();
-                startDragY = getTranslateY();
-                dragAnchor = new Point2D(me.getSceneX(), me.getSceneY());
-            });
-            setOnMouseReleased(me -> {
-                if (getTranslateX() < (10) && getTranslateX() > (- 10) &&
-                    getTranslateY() < (10) && getTranslateY() > (- 10)) {
-                    setTranslateX(0);
-                    setTranslateY(0);
-                    setInactive();
+            setOnMousePressed(new EventHandler<MouseEvent>() {
+                public void handle(MouseEvent me) {
+                    toFront();
+                    startDragX = getTranslateX();
+                    startDragY = getTranslateY();
+                    dragAnchor = new Point2D(me.getSceneX(), me.getSceneY());
                 }
             });
-            setOnMouseDragged(me -> {
-                double newTranslateX = startDragX
-                                        + me.getSceneX() - dragAnchor.getX();
-                double newTranslateY = startDragY
-                                        + me.getSceneY() - dragAnchor.getY();
-                double minTranslateX = - 45f - correctX;
-                double maxTranslateX = (deskWidth - Piece.SIZE + 50f ) - correctX;
-                double minTranslateY = - 30f - correctY;
-                double maxTranslateY = (deskHeight - Piece.SIZE + 70f ) - correctY;
-                if ((newTranslateX> minTranslateX ) &&
-                        (newTranslateX< maxTranslateX) &&
-                        (newTranslateY> minTranslateY) &&
-                        (newTranslateY< maxTranslateY)) {
-                    setTranslateX(newTranslateX);
-                    setTranslateY(newTranslateY);
+            setOnMouseReleased(new EventHandler<MouseEvent>() {
+                public void handle(MouseEvent me) {
+                    if (getTranslateX() < (10) && getTranslateX() > (- 10) &&
+                        getTranslateY() < (10) && getTranslateY() > (- 10)) {
+                        setTranslateX(0);
+                        setTranslateY(0);
+                        setInactive();
+                    }
+                }
+            });
+            setOnMouseDragged(new EventHandler<MouseEvent>() {
+                public void handle(MouseEvent me) {
+                    double newTranslateX = startDragX
+                                            + me.getSceneX() - dragAnchor.getX();
+                    double newTranslateY = startDragY
+                                            + me.getSceneY() - dragAnchor.getY();
+                    double minTranslateX = - 45f - correctX;
+                    double maxTranslateX = (deskWidth - Piece.SIZE + 50f ) - correctX;
+                    double minTranslateY = - 30f - correctY;
+                    double maxTranslateY = (deskHeight - Piece.SIZE + 70f ) - correctY;
+                    if ((newTranslateX> minTranslateX ) &&
+                            (newTranslateX< maxTranslateX) &&
+                            (newTranslateY> minTranslateY) &&
+                            (newTranslateY< maxTranslateY)) {
+                        setTranslateX(newTranslateX);
+                        setTranslateY(newTranslateY);
+                    }
                 }
             });
         }
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/puzzle/PuzzlePiecesApp.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/puzzle/PuzzlePiecesApp.java	Wed Dec 04 11:11:23 2013 -0800
@@ -80,7 +80,7 @@
         // create desk
         final Desk desk = new Desk(numOfColumns, numOfRows);
         // create puzzle pieces
-        final List<Piece> pieces = new ArrayList<>();
+        final List<Piece> pieces = new ArrayList<Piece>();
         for (int col = 0; col < numOfColumns; col++) {
             for (int row = 0; row < numOfRows; row++) {
                 int x = col * Piece.SIZE;
@@ -95,41 +95,45 @@
         // create button box
         Button shuffleButton = new Button("Shuffle");
         shuffleButton.setStyle("-fx-font-size: 2em;");
-        shuffleButton.setOnAction(actionEvent -> {
-            if (timeline != null) {
-                timeline.stop();
+        shuffleButton.setOnAction(new EventHandler<ActionEvent>() {           
+            @Override public void handle(ActionEvent actionEvent) {
+                if (timeline != null) {
+                    timeline.stop();
+                }
+                timeline = new Timeline();
+                for (final Piece piece : pieces) {
+                    piece.setActive();
+                    double shuffleX = Math.random()
+                            * (desk.getWidth() - Piece.SIZE + 48f)
+                            - 24f - piece.getCorrectX();
+                    double shuffleY = Math.random()
+                            * (desk.getHeight() - Piece.SIZE + 30f)
+                            - 15f - piece.getCorrectY();
+                    timeline.getKeyFrames().add(
+                            new KeyFrame(Duration.seconds(1),
+                            new KeyValue(piece.translateXProperty(), shuffleX),
+                            new KeyValue(piece.translateYProperty(), shuffleY)));
+                }
+                timeline.playFromStart();
             }
-            timeline = new Timeline();
-            for (final Piece piece : pieces) {
-                piece.setActive();
-                double shuffleX = Math.random()
-                        * (desk.getWidth() - Piece.SIZE + 48f)
-                        - 24f - piece.getCorrectX();
-                double shuffleY = Math.random()
-                        * (desk.getHeight() - Piece.SIZE + 30f)
-                        - 15f - piece.getCorrectY();
-                timeline.getKeyFrames().add(
-                        new KeyFrame(Duration.seconds(1),
-                        new KeyValue(piece.translateXProperty(), shuffleX),
-                        new KeyValue(piece.translateYProperty(), shuffleY)));
-            }
-            timeline.playFromStart();
         });
         Button solveButton = new Button("Solve");
         solveButton.setStyle("-fx-font-size: 2em;");
-        solveButton.setOnAction(actionEvent -> {
-            if (timeline != null) {
-                timeline.stop();
+        solveButton.setOnAction(new EventHandler<ActionEvent>() {            
+            @Override public void handle(ActionEvent actionEvent) {
+                if (timeline != null) {
+                    timeline.stop();
+                }
+                timeline = new Timeline();
+                for (final Piece piece : pieces) {
+                    piece.setInactive();
+                    timeline.getKeyFrames().add(
+                            new KeyFrame(Duration.seconds(1),
+                            new KeyValue(piece.translateXProperty(), 0),
+                            new KeyValue(piece.translateYProperty(), 0)));
+                }
+                timeline.playFromStart();
             }
-            timeline = new Timeline();
-            for (final Piece piece : pieces) {
-                piece.setInactive();
-                timeline.getKeyFrames().add(
-                        new KeyFrame(Duration.seconds(1),
-                        new KeyValue(piece.translateXProperty(), 0),
-                        new KeyValue(piece.translateYProperty(), 0)));
-            }
-            timeline.playFromStart();
         });
         HBox buttonBox = new HBox(8);
         buttonBox.getChildren().addAll(shuffleButton, solveButton);
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/shapes/polygon/PolygonApp.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/shapes/polygon/PolygonApp.java	Wed Dec 04 11:11:23 2013 -0800
@@ -55,18 +55,20 @@
 public class PolygonApp extends Application {
 
     // Will be a simple red-filled triangle         
-    private Polygon polygon1 = new Polygon(
-            45, 10,
-            10, 80,
-            80, 80);
+    private Polygon polygon1 = new Polygon(new double[]{
+            45 , 10 ,
+            10 , 80 ,
+            80 , 80 ,
+        });
     // Will be a blue stroked polygon
-    private Polygon polygon2 = new Polygon(
+    private Polygon polygon2 = new Polygon(new double[]{
             135, 15,
             160, 30,
             160, 60,
             135, 75,
             110, 60,
-            110, 30);
+            110, 30
+        });
 
     public Parent createContent() {
         Pane root = new Pane();
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/shapes/polyline/PolylineApp.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/shapes/polyline/PolylineApp.java	Wed Dec 04 11:11:23 2013 -0800
@@ -56,16 +56,16 @@
 public class PolylineApp extends Application {
     // Unclosed triangle
 
-    Polyline polyline1 = new Polyline(
-            45, 10,
-            10, 80,
-            80, 80);
+    Polyline polyline1 = new Polyline(new double[]{
+                45, 10,
+                10, 80,
+                80, 80,});
     // Closed triangle
-    Polyline polyline2 = new Polyline(
-            135, 10,
-            100, 80,
-            170, 80,
-            135, 10);
+    Polyline polyline2 = new Polyline(new double[]{
+                135, 10,
+                100, 80,
+                170, 80,
+                135, 10,});
 
     public Parent createContent() {
         Pane root = new Pane();
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/stopwatch/StopWatchButton.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/stopwatch/StopWatchButton.java	Wed Dec 04 11:11:23 2013 -0800
@@ -63,27 +63,24 @@
 
         rectangleSmall.setLayoutX(-7);
         rectangleSmall.setLayoutY(5);
-        rectangleSmall.setFill(new LinearGradient(0, 0, 1, 0, true, 
-                CycleMethod.NO_CYCLE, 
-                new Stop(0, colorWeak),
-                new Stop(0.5, colorStrong),
-                new Stop(1, colorWeak)));
+        rectangleSmall.setFill(new LinearGradient(0, 0, 1, 0, true, CycleMethod.NO_CYCLE, new Stop[]{
+                    new Stop(0, colorWeak),
+                    new Stop(0.5, colorStrong),
+                    new Stop(1, colorWeak)}));
 
         rectangleBig.setLayoutX(-14);
         rectangleBig.setLayoutY(0);
-        rectangleBig.setFill(new LinearGradient(0, 0, 1, 0, true, 
-                CycleMethod.NO_CYCLE, 
-                new Stop(0, colorStrong),
-                new Stop(0.5, colorWeak),
-                new Stop(1, colorStrong)));
+        rectangleBig.setFill(new LinearGradient(0, 0, 1, 0, true, CycleMethod.NO_CYCLE, new Stop[]{
+                    new Stop(0, colorStrong),
+                    new Stop(0.5, colorWeak),
+                    new Stop(1, colorStrong)}));
 
-        rectangleWatch.setFill(new LinearGradient(0, 0, 1, 0, true, 
-                CycleMethod.NO_CYCLE, 
-                new Stop(0, Color.web("#4e605f")),
-                new Stop(0.2, Color.web("#c3d6d5")),
-                new Stop(0.5, Color.web("#f9ffff")),
-                new Stop(0.8, Color.web("#c3d6d5")),
-                new Stop(1, Color.web("#4e605f"))));
+        rectangleWatch.setFill(new LinearGradient(0, 0, 1, 0, true, CycleMethod.NO_CYCLE, new Stop[]{
+                    new Stop(0, Color.web("#4e605f")),
+                    new Stop(0.2, Color.web("#c3d6d5")),
+                    new Stop(0.5, Color.web("#f9ffff")),
+                    new Stop(0.8, Color.web("#c3d6d5")),
+                    new Stop(1, Color.web("#4e605f"))}));
         rectangleWatch.setLayoutX(-12);
         rectangleWatch.setLayoutY(12);
     }
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/stopwatch/Watch.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/graphics/stopwatch/Watch.java	Wed Dec 04 11:11:23 2013 -0800
@@ -90,7 +90,11 @@
 
     private void configureTimeline() {
         time.setCycleCount(Timeline.INDEFINITE);
-        KeyFrame keyFrame = new KeyFrame(Duration.millis(47), event -> calculate());
+        KeyFrame keyFrame = new KeyFrame(Duration.millis(47), new EventHandler<ActionEvent>() {
+            public void handle(ActionEvent event) {
+                calculate();
+            }
+        });
         time.getKeyFrames().add(keyFrame);
     }
 
@@ -160,31 +164,47 @@
     }
 
     private void configureListeners() {
-        startButton.setOnMousePressed(me -> {
-            startButton.moveDown();
-            me.consume();
+        startButton.setOnMousePressed(new EventHandler<MouseEvent>() {          
+            @Override public void handle(MouseEvent me) {
+                startButton.moveDown();
+                me.consume();
+            }
         });
 
-        stopButton.setOnMousePressed(me -> {
-            stopButton.moveDown();
-            me.consume();
+        stopButton.setOnMousePressed(new EventHandler<MouseEvent>() {          
+            @Override public void handle(MouseEvent me) {
+                stopButton.moveDown();
+                me.consume();
+            }
         });
 
-        startButton.setOnMouseReleased(me -> {
-            startButton.moveUp();
-            startStop();
-            me.consume();
+        startButton.setOnMouseReleased(new EventHandler<MouseEvent>() {           
+            @Override public void handle(MouseEvent me) {
+                startButton.moveUp();
+                startStop();
+                me.consume();
+            }
         });
 
-        stopButton.setOnMouseReleased(me -> {
-            stopButton.moveUp();
-            stopReset();
-            me.consume();
+        stopButton.setOnMouseReleased(new EventHandler<MouseEvent>() {           
+            @Override public void handle(MouseEvent me) {
+                stopButton.moveUp();
+                stopReset();
+                me.consume();
+            }
         });
 
-        startButton.setOnMouseDragged(MouseEvent::consume);
+        startButton.setOnMouseDragged(new EventHandler<MouseEvent>() {           
+            @Override public void handle(MouseEvent me) {
+                me.consume();
+            }
+        });
 
-        stopButton.setOnMouseDragged(MouseEvent::consume);
+        stopButton.setOnMouseDragged(new EventHandler<MouseEvent>() {          
+            @Override public void handle(MouseEvent me) {
+                me.consume();
+            }
+        });
     }
 
     //MODEL
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/language/beans/changelistener/ChangeListenerApp.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/language/beans/changelistener/ChangeListenerApp.java	Wed Dec 04 11:11:23 2013 -0800
@@ -86,28 +86,37 @@
         text.setTextOrigin(VPos.TOP);
         text.setTextAlignment(TextAlignment.CENTER);
         // create listener
-        final InvalidationListener hoverListener = ov -> {
-            if (rect.isHover()) {
-                text.setText("hovered");
-            } else {
-                text.setText("not hovered");
+        final InvalidationListener hoverListener = new InvalidationListener() {
+            @Override
+            public void invalidated(Observable ov) {
+                if (rect.isHover()) {
+                    text.setText("hovered");
+                } else {
+                    text.setText("not hovered");
+                }
             }
         };
         //create button for adding listener
         Button buttonAdd = new Button("Add listener");
         buttonAdd.setPrefSize(140, 18);
-        buttonAdd.setOnAction(t -> {
-            //add the listener on property hover
-            rect.hoverProperty().addListener(hoverListener);
-            text.setText("listener added");
+        buttonAdd.setOnAction(new EventHandler<ActionEvent>() {
+            @Override
+            public void handle(ActionEvent t) {
+                //add the listener on property hover
+                rect.hoverProperty().addListener(hoverListener);
+                text.setText("listener added");
+            }
         });
         //create a button for removing the listener
         Button buttonRemove = new Button("Remove listener");
         buttonRemove.setPrefSize(140, 18);
-        buttonRemove.setOnAction(t -> {
-            //remove the listener
-            rect.hoverProperty().removeListener(hoverListener);
-            text.setText("listener removed");
+        buttonRemove.setOnAction(new EventHandler<ActionEvent>() {
+            @Override
+            public void handle(ActionEvent t) {
+                //remove the listener
+                rect.hoverProperty().removeListener(hoverListener);
+                text.setText("listener removed");
+            }
         });
         // show all nodes
         vbox.getChildren().addAll(text, buttonAdd, buttonRemove);
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/language/collections/observablelist/ObservableListApp.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/language/collections/observablelist/ObservableListApp.java	Wed Dec 04 11:11:23 2013 -0800
@@ -73,7 +73,7 @@
         }
 
         //create observable list from this list of integers by static method of FXCollections class
-        final ObservableList<Integer> list = FXCollections.observableList(listData);
+        final ObservableList<Integer> list = FXCollections.<Integer>observableList(listData);
 
         //create text for showing observable list content
         final Text textList = new Text(0, 0, list.toString());
@@ -90,35 +90,47 @@
         //create button for adding random integer to random position in observable list
         Button buttonAddNumber = new Button("Replace random integer");
         buttonAddNumber.setPrefSize(190, 45);
-        buttonAddNumber.setOnAction(t -> {
-            int randomIndex = (int) (Math.round(Math.random() * (list.size() - 1)));
-            int randomNumber = (int) (Math.round(Math.random() * 10));
-            list.set(randomIndex, randomNumber);
-            //actualise content of the text to see the result
-            textList.setText(list.toString());
+        buttonAddNumber.setOnAction(new EventHandler<ActionEvent>() {
+            @Override
+            public void handle(ActionEvent t) {
+                int randomIndex = (int) (Math.round(Math.random() * (list.size() - 1)));
+                int randomNumber = (int) (Math.round(Math.random() * 10));
+                list.set(randomIndex, randomNumber);
+                //actualise content of the text to see the result
+                textList.setText(list.toString());
+            }
         });
 
         //create button for adding listener
         Button buttonAdd = new Button("Add list listener");
         buttonAdd.setPrefSize(190, 45);
-        final ListChangeListener<Integer> listener = c -> {
-            while (c.next()) {
-                textMessage.setText("replacement on index " + c.getFrom());
+        final ListChangeListener<Integer> listener = new ListChangeListener<Integer>() {
+            @Override
+            public void onChanged(ListChangeListener.Change<? extends Integer> c) {
+                while (c.next()) {
+                    textMessage.setText("replacement on index " + c.getFrom());
+                }
             }
         };
 
-        buttonAdd.setOnAction(t -> {
-            list.addListener(listener);
-            textMessage.setText("listener added");
+        buttonAdd.setOnAction(new EventHandler<ActionEvent>() {
+            @Override
+            public void handle(ActionEvent t) {
+                list.addListener(listener);
+                textMessage.setText("listener added");
+            }
         });
 
         //create a button for removing the listener
         Button buttonRemove = new Button("Remove list listener");
         buttonRemove.setPrefSize(190, 45);
-        buttonRemove.setOnAction(t -> {
-            //remove the listener
-            list.removeListener(listener);
-            textMessage.setText("listener removed");
+        buttonRemove.setOnAction(new EventHandler<ActionEvent>() {
+            @Override
+            public void handle(ActionEvent t) {
+                //remove the listener
+                list.removeListener(listener);
+                textMessage.setText("listener removed");
+            }
         });
 
         VBox vBoxTop = new VBox(10);
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/layout/anchorpane/AnchorPaneApp.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/layout/anchorpane/AnchorPaneApp.java	Wed Dec 04 11:11:23 2013 -0800
@@ -65,12 +65,12 @@
 
         anchorPane.getChildren().addAll(label1, imageView, button1);
 
-        AnchorPane.setTopAnchor(label1, (double) 2);
-        AnchorPane.setLeftAnchor(label1, (double) 20);
-        AnchorPane.setTopAnchor(button1, (double) 40);
-        AnchorPane.setLeftAnchor(button1, (double) 20);
-        AnchorPane.setTopAnchor(imageView, (double) 75);
-        AnchorPane.setLeftAnchor(imageView, (double) 20);
+        AnchorPane.setTopAnchor(label1, Double.valueOf(2));
+        AnchorPane.setLeftAnchor(label1, Double.valueOf(20));
+        AnchorPane.setTopAnchor(button1, Double.valueOf(40));
+        AnchorPane.setLeftAnchor(button1, Double.valueOf(20));
+        AnchorPane.setTopAnchor(imageView, Double.valueOf(75));
+        AnchorPane.setLeftAnchor(imageView, Double.valueOf(20));
         return anchorPane;
     }
 
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/layout/borderpane/BorderPaneApp.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/layout/borderpane/BorderPaneApp.java	Wed Dec 04 11:11:23 2013 -0800
@@ -91,10 +91,10 @@
 
         //Using AnchorPane only to position items in the center
         AnchorPane centerAP = new AnchorPane();
-        AnchorPane.setTopAnchor(centerLabel, (double) 5);
-        AnchorPane.setLeftAnchor(centerLabel, (double) 20);
-        AnchorPane.setTopAnchor(imageView, (double) 40);
-        AnchorPane.setLeftAnchor(imageView, (double) 30);
+        AnchorPane.setTopAnchor(centerLabel, Double.valueOf(5));
+        AnchorPane.setLeftAnchor(centerLabel, Double.valueOf(20));
+        AnchorPane.setTopAnchor(imageView, Double.valueOf(40));
+        AnchorPane.setLeftAnchor(imageView, Double.valueOf(30));
         centerAP.getChildren().addAll(centerLabel, imageView);
         borderPane.setCenter(centerAP);
 
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/media/advancedmedia/MediaControl.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/media/advancedmedia/MediaControl.java	Wed Dec 04 11:11:23 2013 -0800
@@ -137,57 +137,81 @@
         playButton.setMinWidth(Control.USE_PREF_SIZE);
 
         playButton.setGraphic(imageViewPlay);
-        playButton.setOnAction(e -> {
-            updateValues();
-            MediaPlayer.Status status = mp.getStatus();
-            if (status == MediaPlayer.Status.UNKNOWN
-                    || status == MediaPlayer.Status.HALTED) {
-                // don't do anything in these states
-                return;
-            }
+        playButton.setOnAction(new EventHandler<ActionEvent>() {
+            @Override
+            public void handle(ActionEvent e) {
+                updateValues();
+                MediaPlayer.Status status = mp.getStatus();
+                if (status == MediaPlayer.Status.UNKNOWN
+                        || status == MediaPlayer.Status.HALTED) {
+                    // don't do anything in these states
+                    return;
+                }
 
-            if (status == MediaPlayer.Status.PAUSED
-                    || status == MediaPlayer.Status.READY
-                    || status == MediaPlayer.Status.STOPPED) {
-                // rewind the movie if we're sitting at the end
-                if (atEndOfMedia) {
-                    mp.seek(mp.getStartTime());
-                    atEndOfMedia = false;
-                    playButton.setGraphic(imageViewPlay);
-                    //playButton.setText(">");
-                    updateValues();
+                if (status == MediaPlayer.Status.PAUSED
+                        || status == MediaPlayer.Status.READY
+                        || status == MediaPlayer.Status.STOPPED) {
+                    // rewind the movie if we're sitting at the end
+                    if (atEndOfMedia) {
+                        mp.seek(mp.getStartTime());
+                        atEndOfMedia = false;
+                        playButton.setGraphic(imageViewPlay);
+                        //playButton.setText(">");
+                        updateValues();
+                    }
+                    mp.play();
+                    playButton.setGraphic(imageViewPause);
+                    //playButton.setText("||");
+                } else {
+                    mp.pause();
                 }
-                mp.play();
-                playButton.setGraphic(imageViewPause);
-                //playButton.setText("||");
-            } else {
-                mp.pause();
             }
         });
-        mp.currentTimeProperty().addListener((observable, oldValue, newValue) -> updateValues());
-        mp.setOnPlaying(() -> {
+        mp.currentTimeProperty().addListener(new ChangeListener<Duration>() {
+            @Override
+            public void changed(ObservableValue<? extends Duration> observable, Duration oldValue, Duration newValue) {
+                updateValues();
+            }
+        });
+        mp.setOnPlaying(new Runnable() {
+            @Override
+            public void run() {
 
-            if (stopRequested) {
-                mp.pause();
-                stopRequested = false;
-            } else {
-                playButton.setGraphic(imageViewPause);
+                if (stopRequested) {
+                    mp.pause();
+                    stopRequested = false;
+                } else {
+                    playButton.setGraphic(imageViewPause);
+                    //playButton.setText("||");
+                }
+            }
+        });
+        mp.setOnPaused(new Runnable() {
+            @Override
+            public void run() {
+
+                playButton.setGraphic(imageViewPlay);
                 //playButton.setText("||");
             }
         });
-        mp.setOnPaused(() -> playButton.setGraphic(imageViewPlay));
-        mp.setOnReady(() -> {
-            duration = mp.getMedia().getDuration();
-            updateValues();
+        mp.setOnReady(new Runnable() {
+            @Override
+            public void run() {
+                duration = mp.getMedia().getDuration();
+                updateValues();
+            }
         });
 
         mp.setCycleCount(repeat ? MediaPlayer.INDEFINITE : 1);
-        mp.setOnEndOfMedia(() -> {
-            if (!repeat) {
-                playButton.setGraphic(imageViewPlay);
-                //playButton.setText(">");
-                stopRequested = true;
-                atEndOfMedia = true;
+        mp.setOnEndOfMedia(new Runnable() {
+            @Override
+            public void run() {
+                if (!repeat) {
+                    playButton.setGraphic(imageViewPlay);
+                    //playButton.setText(">");
+                    stopRequested = true;
+                    atEndOfMedia = true;
+                }
             }
         });
         mediaBar.getChildren().add(playButton);
@@ -204,14 +228,17 @@
         timeSlider.setMaxWidth(Double.MAX_VALUE);
         
         HBox.setHgrow(timeSlider, Priority.ALWAYS);
-        timeSlider.valueProperty().addListener(ov -> {
-            if (timeSlider.isValueChanging()) {
-                // multiply duration by percentage calculated by slider position
-                if (duration != null) {
-                    mp.seek(duration.multiply(timeSlider.getValue() / 100.0));
+        timeSlider.valueProperty().addListener(new InvalidationListener() {
+            @Override
+            public void invalidated(Observable ov) {
+                if (timeSlider.isValueChanging()) {
+                    // multiply duration by percentage calculated by slider position
+                    if (duration != null) {
+                        mp.seek(duration.multiply(timeSlider.getValue() / 100.0));
+                    }
+                    updateValues();
+
                 }
-                updateValues();
-
             }
         });
         mediaBar.getChildren().add(timeSlider);
@@ -232,7 +259,12 @@
             public void handle(ActionEvent event) {
                 if (!fullScreen) {
                     newStage = new Stage();
-                    newStage.fullScreenProperty().addListener((ov, t, t1) -> onFullScreen());
+                    newStage.fullScreenProperty().addListener(new ChangeListener<Boolean>() {
+                        @Override
+                        public void changed(ObservableValue<? extends Boolean> ov, Boolean t, Boolean t1) {
+                            onFullScreen();
+                        }
+                    });
                     final BorderPane borderPane = new BorderPane() {
                         @Override
                         protected void layoutChildren() {
@@ -285,11 +317,17 @@
         volumeSlider.setPrefWidth(70);
         volumeSlider.setMinWidth(30);
         volumeSlider.setMaxWidth(Region.USE_PREF_SIZE);
-        volumeSlider.valueProperty().addListener(ov -> {
+        volumeSlider.valueProperty().addListener(new InvalidationListener() {
+            @Override
+            public void invalidated(Observable ov) {
+            }
         });
-        volumeSlider.valueProperty().addListener((observable, oldValue, newValue) -> {
-            if (volumeSlider.isValueChanging()) {
-                mp.setVolume(volumeSlider.getValue() / 100.0);
+        volumeSlider.valueProperty().addListener(new ChangeListener<Number>() {
+            @Override
+            public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
+                if (volumeSlider.isValueChanging()) {
+                    mp.setVolume(volumeSlider.getValue() / 100.0);
+                }
             }
         });
         mediaBar.getChildren().add(volumeSlider);
@@ -308,22 +346,30 @@
             
             smallBP.setBottom(null);
             setBottom(mediaBar);
-            Platform.runLater(newStage::close);
+            Platform.runLater(new Runnable() {
+                @Override
+                public void run() {
+                    newStage.close();
+                }
+            });
 
         }
     }
 
     protected void updateValues() {
         if (playTime != null && timeSlider != null && volumeSlider != null && duration != null) {
-            Platform.runLater(() -> {
-                Duration currentTime = mp.getCurrentTime();
-                playTime.setText(formatTime(currentTime, duration));
-                timeSlider.setDisable(duration.isUnknown());
-                if (!timeSlider.isDisabled() && duration.greaterThan(Duration.ZERO) && !timeSlider.isValueChanging()) {
-                    timeSlider.setValue(currentTime.toMillis() / duration.toMillis() * 100.0);
-                }
-                if (!volumeSlider.isValueChanging()) {
-                    volumeSlider.setValue((int) Math.round(mp.getVolume() * 100));
+            Platform.runLater(new Runnable() {
+                @Override
+                public void run() {
+                    Duration currentTime = mp.getCurrentTime();
+                    playTime.setText(formatTime(currentTime, duration));
+                    timeSlider.setDisable(duration.isUnknown());
+                    if (!timeSlider.isDisabled() && duration.greaterThan(Duration.ZERO) && !timeSlider.isValueChanging()) {
+                        timeSlider.setValue(currentTime.divide(duration).toMillis() * 100.0);
+                    }
+                    if (!volumeSlider.isValueChanging()) {
+                        volumeSlider.setValue((int) Math.round(mp.getVolume() * 100));
+                    }
                 }
             });
         }
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/media/alphamediaplayer/AlphaMediaPlayerApp.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/media/alphamediaplayer/AlphaMediaPlayerApp.java	Wed Dec 04 11:11:23 2013 -0800
@@ -76,13 +76,34 @@
         fierPlayer = new MediaPlayer(new Media(FIER_URL));
         fierPlayer.setAutoPlay(true);
 
-        arthPos.addListener(observable -> planetaryPlayerPane.setTranslate1(arthPos.doubleValue()));
+        arthPos.addListener(new InvalidationListener() {
+            @Override
+            public void invalidated(Observable observable) {
+                planetaryPlayerPane.setTranslate1(arthPos.doubleValue());
+            }
+        });
 
-        fierPos.addListener(observable -> planetaryPlayerPane.setTranslate2(fierPos.doubleValue()));
+        fierPos.addListener(new InvalidationListener() {
+            @Override
+            public void invalidated(Observable observable) {
+                planetaryPlayerPane.setTranslate2(fierPos.doubleValue());
 
-        arthRate.addListener(observable -> arthPlayer.setRate(arthRate.doubleValue()));
+            }
+        });
 
-        fierRate.addListener(observable -> fierPlayer.setRate(fierRate.doubleValue()));
+        arthRate.addListener(new InvalidationListener() {
+            @Override
+            public void invalidated(Observable observable) {
+                arthPlayer.setRate(arthRate.doubleValue());
+            }
+        });
+
+        fierRate.addListener(new InvalidationListener() {
+            @Override
+            public void invalidated(Observable observable) {
+                fierPlayer.setRate(fierRate.doubleValue());
+            }
+        });
 
         planetaryPlayerPane = new PlanetaryPlayerPane(arthPlayer, fierPlayer);
 
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/media/alphamediaplayer/PlanetaryPlayerPane.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/media/alphamediaplayer/PlanetaryPlayerPane.java	Wed Dec 04 11:11:23 2013 -0800
@@ -80,54 +80,76 @@
         mvPane.getChildren().add(mediaViewerGroup);
         setCenter(mvPane);
 
-        mp1.setOnPlaying(() -> {
-            if (stopRequested) {
-                mp1.pause();
-                stopRequested = false;
+        mp1.setOnPlaying(new Runnable() {
+            @Override public void run() {
+                if (stopRequested) {
+                    mp1.pause();
+                    stopRequested = false;
+                }
             }
         });
-        mp1.setOnEndOfMedia(() -> {
-            if (!repeat) {
-                stopRequested = true;
-                atEndOfMedia = true;
+        mp1.setOnEndOfMedia(new Runnable() {
+            @Override public void run() {
+                if (!repeat) {
+                    stopRequested = true;
+                    atEndOfMedia = true;
+                }
             }
         });
         mp1.setCycleCount(repeat ? MediaPlayer.INDEFINITE : 1);
 
-        mp2.setOnPlaying(() -> {
-            if (stopRequested) {
-                mp2.pause();
-                stopRequested = false;
+        mp2.setOnPlaying(new Runnable() {
+            @Override public void run() {
+                if (stopRequested) {
+                    mp2.pause();
+                    stopRequested = false;
+                }
             }
         });
-        mp2.setOnEndOfMedia(() -> {
-            if (!repeat) {
-                stopRequested = true;
-                atEndOfMedia = true;
+        mp2.setOnEndOfMedia(new Runnable() {
+            @Override public void run() {
+                if (!repeat) {
+                    stopRequested = true;
+                    atEndOfMedia = true;
+                }
             }
         });
         mp2.setCycleCount(repeat ? MediaPlayer.INDEFINITE : 1);
 
-        final EventHandler<ActionEvent> backAction = e -> {
-            mp1.seek(Duration.ZERO);
-            mp2.seek(Duration.ZERO);
+        final EventHandler<ActionEvent> backAction = new EventHandler<ActionEvent>() {
+            @Override public void handle(ActionEvent e) {
+                mp1.seek(Duration.ZERO);
+                mp2.seek(Duration.ZERO);
+            }
         };
-        final EventHandler<ActionEvent> stopAction = e -> {
-            mp1.stop();
-            mp2.stop();
+        final EventHandler<ActionEvent> stopAction = new EventHandler<ActionEvent>() {
+            @Override
+            public void handle(ActionEvent e) {
+                mp1.stop();
+                mp2.stop();
+            }
         };
-        final EventHandler<ActionEvent> playAction = e -> {
-            mp1.play();
-            mp2.play();
+        final EventHandler<ActionEvent> playAction = new EventHandler<ActionEvent>() {
+            @Override
+            public void handle(ActionEvent e) {
+                mp1.play();
+                mp2.play();
+            }
         };
-        final EventHandler<ActionEvent> pauseAction = e -> {
-            mp1.pause();
-            mp2.pause();
+        final EventHandler<ActionEvent> pauseAction = new EventHandler<ActionEvent>() {
+            @Override
+            public void handle(ActionEvent e) {
+                mp1.pause();
+                mp2.pause();
+            }
         };
-        final EventHandler<ActionEvent> forwardAction = e -> {
-            Duration currentTime = mp1.getCurrentTime();
-            mp1.seek(Duration.seconds(currentTime.toSeconds() + 0.1));
-            mp2.seek(Duration.seconds(currentTime.toSeconds() + 0.1));
+        final EventHandler<ActionEvent> forwardAction = new EventHandler<ActionEvent>() {
+            @Override
+            public void handle(ActionEvent e) {
+                Duration currentTime = mp1.getCurrentTime();
+                mp1.seek(Duration.seconds(currentTime.toSeconds() + 0.1));
+                mp2.seek(Duration.seconds(currentTime.toSeconds() + 0.1));
+            }
         };
         
         mediaBottomBar = new HBox();
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/media/audioclip/AudioClipApp.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/media/audioclip/AudioClipApp.java	Wed Dec 04 11:11:23 2013 -0800
@@ -106,7 +106,12 @@
         Lighting lighting = new Lighting(new Light.Point(-20, -20, 100, Color.WHITE));
         lighting.setSurfaceScale(1);
         rectangle.setEffect(lighting);
-        rectangle.setOnMousePressed(me -> barNote.play());
+        rectangle.setOnMousePressed(new EventHandler<MouseEvent>() {
+            @Override
+            public void handle(MouseEvent me) {
+                barNote.play();
+            }
+        });
         return rectangle;
     }
 
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/media/overlaymediaplayer/PlayerPane.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/media/overlaymediaplayer/PlayerPane.java	Wed Dec 04 11:11:23 2013 -0800
@@ -118,51 +118,70 @@
             topBar.setStyle("-fx-background-color: rgb(0,0,0.0,0.0);");
             bottomBar.setStyle("-fx-background-color: rgb(0,0,0.0,0.0);");
 
-            setOnMouseEntered(t -> {
-                if (transition != null) {
-                    transition.stop();
+            setOnMouseEntered(new EventHandler<MouseEvent>() {
+                @Override
+                public void handle(MouseEvent t) {
+                    if (transition != null) {
+                        transition.stop();
+                    }
+                    FadeTransition fadeTransition1 = new FadeTransition(Duration.millis(200), topBar);
+                    fadeTransition1.setToValue(1.0);
+                    fadeTransition1.setInterpolator(Interpolator.EASE_OUT);
+
+                    FadeTransition fadeTransition2 = new FadeTransition(Duration.millis(200), bottomBar);
+                    fadeTransition2.setToValue(1.0);
+                    fadeTransition2.setInterpolator(Interpolator.EASE_OUT);
+
+                    transition = new ParallelTransition(fadeTransition1, fadeTransition2);
+                    transition.play();
                 }
-                FadeTransition fadeTransition1 = new FadeTransition(Duration.millis(200), topBar);
-                fadeTransition1.setToValue(1.0);
-                fadeTransition1.setInterpolator(Interpolator.EASE_OUT);
-
-                FadeTransition fadeTransition2 = new FadeTransition(Duration.millis(200), bottomBar);
-                fadeTransition2.setToValue(1.0);
-                fadeTransition2.setInterpolator(Interpolator.EASE_OUT);
-
-                transition = new ParallelTransition(fadeTransition1, fadeTransition2);
-                transition.play();
             });
-            setOnMouseExited(t -> {
-                if (transition != null) {
-                    transition.stop();
+            setOnMouseExited(new EventHandler<MouseEvent>() {
+                @Override public void handle(MouseEvent t) {
+                    if (transition != null) {
+                        transition.stop();
+                    }                                                 
+                    FadeTransition fadeTransitionTop = new FadeTransition(Duration.millis(800), topBar);
+                    fadeTransitionTop.setToValue(0.0);
+                    fadeTransitionTop.setInterpolator(Interpolator.EASE_OUT);
+ 
+                    FadeTransition fadeTransitionBottom = new FadeTransition(Duration.millis(800), bottomBar);
+                    fadeTransitionBottom.setToValue(0.0);
+                    fadeTransitionBottom.setInterpolator(Interpolator.EASE_OUT);
+                    transition = new ParallelTransition(fadeTransitionTop, fadeTransitionBottom);
+                    transition.play();
                 }
-                FadeTransition fadeTransitionTop = new FadeTransition(Duration.millis(800), topBar);
-                fadeTransitionTop.setToValue(0.0);
-                fadeTransitionTop.setInterpolator(Interpolator.EASE_OUT);
-
-                FadeTransition fadeTransitionBottom = new FadeTransition(Duration.millis(800), bottomBar);
-                fadeTransitionBottom.setToValue(0.0);
-                fadeTransitionBottom.setInterpolator(Interpolator.EASE_OUT);
-                transition = new ParallelTransition(fadeTransitionTop, fadeTransitionBottom);
-                transition.play();
             });
 
-            mp.currentTimeProperty().addListener((observable, oldValue, newValue) -> updateValues());
-            mp.setOnPlaying(() -> {
-                if (stopRequested) {
-                    mp.pause();
-                    stopRequested = false;
+            mp.currentTimeProperty().addListener(new ChangeListener<Duration>() {
+                @Override
+                public void changed(ObservableValue<? extends Duration> observable, Duration oldValue, Duration newValue) {
+                    updateValues();
                 }
             });
-            mp.setOnReady(() -> {
-                duration = mp.getMedia().getDuration();
-                updateValues();
+            mp.setOnPlaying(new Runnable() {
+                @Override
+                public void run() {
+                    if (stopRequested) {
+                        mp.pause();
+                        stopRequested = false;
+                    } 
+                }
             });
-            mp.setOnEndOfMedia(() -> {
-                if (!repeat) {
-                    stopRequested = true;
-                    atEndOfMedia = true;
+            mp.setOnReady(new Runnable() {
+                @Override
+                public void run() {
+                    duration = mp.getMedia().getDuration();
+                    updateValues();
+                }
+            });
+            mp.setOnEndOfMedia(new Runnable() {
+                @Override
+                public void run() {
+                    if (!repeat) {
+                        stopRequested = true;
+                        atEndOfMedia = true;
+                    }
                 }
             });
             mp.setCycleCount(repeat ? MediaPlayer.INDEFINITE : 1);
@@ -179,14 +198,17 @@
             timeSlider.setId("media-slider");
             timeSlider.setMinWidth(200);
             timeSlider.setMaxWidth(Double.MAX_VALUE);
-            timeSlider.valueProperty().addListener(ov -> {
-                if (timeSlider.isValueChanging()) {
-                    // multiply duration by percentage calculated by slider position
-                    if (duration != null) {
-                        mp.seek(duration.multiply(timeSlider.getValue() / 100.0));
+            timeSlider.valueProperty().addListener(new InvalidationListener() {
+                @Override
+                public void invalidated(Observable ov) {
+                    if (timeSlider.isValueChanging()) {
+                        // multiply duration by percentage calculated by slider position
+                        if (duration != null) {
+                            mp.seek(duration.multiply(timeSlider.getValue() / 100.0));
+                        }
+                        updateValues();
+
                     }
-                    updateValues();
-
                 }
             });
             mediaTopBar.getChildren().add(timeSlider);
@@ -211,22 +233,51 @@
             volumeSlider.setPrefWidth(120);
             volumeSlider.setMinWidth(30);
             volumeSlider.setMaxWidth(Region.USE_PREF_SIZE);
-            volumeSlider.valueProperty().addListener(ov -> {
+            volumeSlider.valueProperty().addListener(new InvalidationListener() {
+                @Override
+                public void invalidated(Observable ov) {
+                }
             });
-            volumeSlider.valueProperty().addListener((observable, oldValue, newValue) -> {
-                if (volumeSlider.isValueChanging()) {
-                    mp.setVolume(volumeSlider.getValue() / 100.0);
+            volumeSlider.valueProperty().addListener(new ChangeListener<Number>() {
+                @Override
+                public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
+                    if (volumeSlider.isValueChanging()) {
+                        mp.setVolume(volumeSlider.getValue() / 100.0);
+                    }
                 }
             });
             mediaTopBar.getChildren().add(volumeSlider);
                         
-            final EventHandler<ActionEvent> backAction = e -> mp.seek(Duration.ZERO);
-            final EventHandler<ActionEvent> stopAction = e -> mp.stop();
-            final EventHandler<ActionEvent> playAction = e -> mp.play();
-            final EventHandler<ActionEvent> pauseAction = e -> mp.pause();
-            final EventHandler<ActionEvent> forwardAction = e -> {
-                Duration currentTime = mp.getCurrentTime();
-                mp.seek(Duration.seconds(currentTime.toSeconds() + 5.0));
+            final EventHandler<ActionEvent> backAction = new EventHandler<ActionEvent>() {
+                @Override
+                public void handle(ActionEvent e) {
+                    mp.seek(Duration.ZERO);
+                }
+            };
+            final EventHandler<ActionEvent> stopAction = new EventHandler<ActionEvent>() {
+                @Override
+                public void handle(ActionEvent e) {
+                    mp.stop();
+                }
+            };
+            final EventHandler<ActionEvent> playAction = new EventHandler<ActionEvent>() {
+                @Override
+                public void handle(ActionEvent e) {
+                    mp.play();
+                }
+            };
+            final EventHandler<ActionEvent> pauseAction = new EventHandler<ActionEvent>() {
+                @Override
+                public void handle(ActionEvent e) {
+                    mp.pause();
+                }
+            };
+            final EventHandler<ActionEvent> forwardAction = new EventHandler<ActionEvent>() {
+                @Override
+                public void handle(ActionEvent e) {
+                    Duration currentTime = mp.getCurrentTime();
+                    mp.seek(Duration.seconds(currentTime.toSeconds() + 5.0));
+                }
             };
 
             mediaBottomBar = new HBox();
@@ -267,15 +318,18 @@
 
         protected void updateValues() {
             if (playTime != null && timeSlider != null && volumeSlider != null && duration != null) {
-                Platform.runLater(() -> {
-                    Duration currentTime = mp.getCurrentTime();
-                    playTime.setText(formatTime(currentTime, duration));
-                    timeSlider.setDisable(duration.isUnknown());
-                    if (!timeSlider.isDisabled() && duration.greaterThan(Duration.ZERO) && !timeSlider.isValueChanging()) {
-                        timeSlider.setValue(currentTime.toMillis() / duration.toMillis() * 100.0);
-                    }
-                    if (!volumeSlider.isValueChanging()) {
-                        volumeSlider.setValue((int) Math.round(mp.getVolume() * 100));
+                Platform.runLater(new Runnable() {
+                    @Override
+                    public void run() {
+                        Duration currentTime = mp.getCurrentTime();
+                        playTime.setText(formatTime(currentTime, duration));
+                        timeSlider.setDisable(duration.isUnknown());
+                        if (!timeSlider.isDisabled() && duration.greaterThan(Duration.ZERO) && !timeSlider.isValueChanging()) {
+                            timeSlider.setValue(currentTime.divide(duration).toMillis() * 100.0);
+                        }
+                        if (!volumeSlider.isValueChanging()) {
+                            volumeSlider.setValue((int) Math.round(mp.getVolume() * 100));
+                        }
                     }
                 });
             }
@@ -297,6 +351,7 @@
                     intDuration -= durationHours * 60 * 60;
                 }
                 int durationMinutes = intDuration / 60;
+                int durationSeconds = intDuration - durationHours * 60 * 60 - durationMinutes * 60;
 
                 if (durationHours > 0) {
                     return String.format("%d:%02d:%02d",
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/media/streamingmediaplayer/PlayerPane.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/media/streamingmediaplayer/PlayerPane.java	Wed Dec 04 11:11:23 2013 -0800
@@ -131,21 +131,35 @@
         BorderPane.setAlignment(mediaTopBar, Pos.CENTER);
 
 
-        mp.currentTimeProperty().addListener((observable, oldValue, newValue) -> updateValues());
-        mp.setOnPlaying(() -> {
-            if (stopRequested) {
-                mp.pause();
-                stopRequested = false;
+        mp.currentTimeProperty().addListener(new ChangeListener<Duration>() {
+            @Override
+            public void changed(ObservableValue<? extends Duration> observable, Duration oldValue, Duration newValue) {
+                updateValues();
             }
         });
-        mp.setOnReady(() -> {
-            duration = mp.getMedia().getDuration();
-            updateValues();
+        mp.setOnPlaying(new Runnable() {
+            @Override
+            public void run() {
+                if (stopRequested) {
+                    mp.pause();
+                    stopRequested = false;
+                }
+            }
         });
-        mp.setOnEndOfMedia(() -> {
-            if (!repeat) {
-                stopRequested = true;
-                atEndOfMedia = true;
+        mp.setOnReady(new Runnable() {
+            @Override
+            public void run() {
+                duration = mp.getMedia().getDuration();
+                updateValues();
+            }
+        });
+        mp.setOnEndOfMedia(new Runnable() {
+            @Override
+            public void run() {
+                if (!repeat) {
+                    stopRequested = true;
+                    atEndOfMedia = true;
+                }
             }
         });
         mp.setCycleCount(repeat ? MediaPlayer.INDEFINITE : 1);
@@ -161,14 +175,17 @@
         timeSlider.setId("media-slider");
         timeSlider.setMinWidth(240);
         timeSlider.setMaxWidth(Double.MAX_VALUE);
-        timeSlider.valueProperty().addListener(ov -> {
-            if (timeSlider.isValueChanging()) {
-                // multiply duration by percentage calculated by slider position
-                if (duration != null) {
-                    mp.seek(duration.multiply(timeSlider.getValue() / 100.0));
+        timeSlider.valueProperty().addListener(new InvalidationListener() {
+            @Override
+            public void invalidated(Observable ov) {
+                if (timeSlider.isValueChanging()) {
+                    // multiply duration by percentage calculated by slider position
+                    if (duration != null) {
+                        mp.seek(duration.multiply(timeSlider.getValue() / 100.0));
+                    }
+                    updateValues();
+
                 }
-                updateValues();
-
             }
         });
         HBox.setHgrow(timeSlider, Priority.ALWAYS);
@@ -193,24 +210,53 @@
         volumeSlider.setPrefWidth(120);
         volumeSlider.setMinWidth(30);
         volumeSlider.setMaxWidth(Region.USE_PREF_SIZE);
-        volumeSlider.valueProperty().addListener(ov -> {
+        volumeSlider.valueProperty().addListener(new InvalidationListener() {
+            @Override
+            public void invalidated(Observable ov) {
+            }
         });
-        volumeSlider.valueProperty().addListener((observable, oldValue, newValue) -> {
-            if (volumeSlider.isValueChanging()) {
-                mp.setVolume(volumeSlider.getValue() / 100.0);
+        volumeSlider.valueProperty().addListener(new ChangeListener<Number>() {
+            @Override
+            public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
+                if (volumeSlider.isValueChanging()) {
+                    mp.setVolume(volumeSlider.getValue() / 100.0);
+                }
             }
         });
         mediaTopBar.getChildren().add(volumeSlider);
 
         setTop(mediaTopBar);
 
-        final EventHandler<ActionEvent> backAction = e -> mp.seek(Duration.ZERO);
-        final EventHandler<ActionEvent> stopAction = e -> mp.stop();
-        final EventHandler<ActionEvent> playAction = e -> mp.play();
-        final EventHandler<ActionEvent> pauseAction = e -> mp.pause();
-        final EventHandler<ActionEvent> forwardAction = e -> {
-            Duration currentTime = mp.getCurrentTime();
-            mp.seek(Duration.seconds(currentTime.toSeconds() + 5.0));
+        final EventHandler<ActionEvent> backAction = new EventHandler<ActionEvent>() {
+            @Override
+            public void handle(ActionEvent e) {
+                mp.seek(Duration.ZERO);
+            }
+        };
+        final EventHandler<ActionEvent> stopAction = new EventHandler<ActionEvent>() {
+            @Override
+            public void handle(ActionEvent e) {
+                mp.stop();
+            }
+        };
+        final EventHandler<ActionEvent> playAction = new EventHandler<ActionEvent>() {
+            @Override
+            public void handle(ActionEvent e) {
+                mp.play();
+            }
+        };
+        final EventHandler<ActionEvent> pauseAction = new EventHandler<ActionEvent>() {
+            @Override
+            public void handle(ActionEvent e) {
+                mp.pause();
+            }
+        };
+        final EventHandler<ActionEvent> forwardAction = new EventHandler<ActionEvent>() {
+            @Override
+            public void handle(ActionEvent e) {
+                Duration currentTime = mp.getCurrentTime();
+                mp.seek(Duration.seconds(currentTime.toSeconds() + 5.0));
+            }
         };
 
         Button backButton = new Button("Back");
@@ -244,15 +290,18 @@
 
     protected void updateValues() {
         if (playTime != null && timeSlider != null && volumeSlider != null && duration != null) {
-            Platform.runLater(() -> {
-                Duration currentTime = mp.getCurrentTime();
-                playTime.setText(formatTime(currentTime, duration));
-                timeSlider.setDisable(duration.isUnknown());
-                if (!timeSlider.isDisabled() && duration.greaterThan(Duration.ZERO) && !timeSlider.isValueChanging()) {
-                    timeSlider.setValue(currentTime.toMillis() / duration.toMillis() * 100.0);
-                }
-                if (!volumeSlider.isValueChanging()) {
-                    volumeSlider.setValue((int) Math.round(mp.getVolume() * 100));
+            Platform.runLater(new Runnable() {
+                @Override
+                public void run() {
+                    Duration currentTime = mp.getCurrentTime();
+                    playTime.setText(formatTime(currentTime, duration));
+                    timeSlider.setDisable(duration.isUnknown());
+                    if (!timeSlider.isDisabled() && duration.greaterThan(Duration.ZERO) && !timeSlider.isValueChanging()) {
+                        timeSlider.setValue(currentTime.divide(duration).toMillis() * 100.0);
+                    }
+                    if (!volumeSlider.isValueChanging()) {
+                        volumeSlider.setValue((int) Math.round(mp.getVolume() * 100));
+                    }
                 }
             });
         }
@@ -274,6 +323,7 @@
                 intDuration -= durationHours * 60 * 60;
             }
             int durationMinutes = intDuration / 60;
+            int durationSeconds = intDuration - durationHours * 60 * 60 - durationMinutes * 60;
 
             if (durationHours > 0) {
                 return String.format("%d:%02d:%02d",
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/scenegraph/events/gestureevent/GestureEventApp.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/scenegraph/events/gestureevent/GestureEventApp.java	Wed Dec 04 11:11:23 2013 -0800
@@ -100,8 +100,10 @@
 
         Rectangle border = new Rectangle(400, BORDER_HEIGHT);
         border.setStroke(Color.GRAY);
-        border.setFill(new LinearGradient(0, 0, 0, 1, true, CycleMethod.NO_CYCLE, new Stop(1, Color.rgb(156, 216, 255)),
-                new Stop(0, Color.rgb(156, 216, 255, 0.5))));
+        border.setFill(new LinearGradient(0, 0, 0, 1, true, CycleMethod.NO_CYCLE, new Stop[]{
+                    new Stop(1, Color.rgb(156, 216, 255)),
+                    new Stop(0, Color.rgb(156, 216, 255, 0.5))
+                }));
 
         final Rectangle smallRec = createRectangle();
         smallRec.setTranslateX(SMALL_REC_X);
@@ -116,8 +118,10 @@
 
     private Rectangle createRectangle() {
         final Rectangle smallRec = new Rectangle(100, 100, 100, 100);
-        LinearGradient gradient1 = new LinearGradient(0, 0, 0, 1, true, CycleMethod.NO_CYCLE, new Stop(0, Color.ANTIQUEWHITE),
-                new Stop(1, Color.CORAL));
+        LinearGradient gradient1 = new LinearGradient(0, 0, 0, 1, true, CycleMethod.NO_CYCLE, new Stop[]{
+                    new Stop(0, Color.ANTIQUEWHITE),
+                    new Stop(1, Color.CORAL)
+                });
         smallRec.setFill(gradient1);
         smallRec.setStroke(Color.BLACK);
         smallRec.setCursor(Cursor.HAND);
@@ -135,67 +139,97 @@
     }
 
     private void setEventListeners(final Node listeningNode, final Rectangle rec, final String msgPrefix) {
-        listeningNode.setOnSwipeDown(se -> {
-            //log scroll to console, method listed below
-            showOnConsole(msgPrefix + "SwipeDown event x: " + se.getX() + ", y: " + se.getY());
-            se.consume();
+        listeningNode.setOnSwipeDown(new EventHandler<SwipeEvent>() {
+            @Override
+            public void handle(SwipeEvent se) {
+                //log scroll to console, method listed below              
+                showOnConsole(msgPrefix + "SwipeDown event x: " + se.getX() + ", y: " + se.getY());
+                se.consume();
+            }
         });
 
-        listeningNode.setOnScroll(event -> {
-            double translateX = event.getDeltaX(); //horizontal scroll amount
-            double translateY = event.getDeltaY();
+        listeningNode.setOnScroll(new EventHandler<ScrollEvent>() {
+            @Override
+            public void handle(ScrollEvent event) {
+                double translateX = event.getDeltaX(); //horizontal scroll amount
+                double translateY = event.getDeltaY();
 
-            if ((rec.getTranslateX() + translateX > 0) && (rec.getTranslateX() + translateX < 300)) {
-                rec.setTranslateX(listeningNode.getTranslateX() + translateX);
+                if ((rec.getTranslateX() + translateX > 0) && (rec.getTranslateX() + translateX < 300)) {
+                    rec.setTranslateX(listeningNode.getTranslateX() + translateX);
+                }
+                if ((rec.getTranslateY() + translateY > SMALL_REC_Y - 20) && (rec.getTranslateY() + translateY < 180 + SMALL_REC_Y)) {
+                    rec.setTranslateY(rec.getTranslateY() + translateY);
+                }
+                showOnConsole(msgPrefix + "Scroll event, deltaX: " + event.getDeltaX() + " deltaY: " + event.getDeltaY());
+                event.consume();
             }
-            if ((rec.getTranslateY() + translateY > SMALL_REC_Y - 20) && (rec.getTranslateY() + translateY < 180 + SMALL_REC_Y)) {
-                rec.setTranslateY(rec.getTranslateY() + translateY);
-            }
-            showOnConsole(msgPrefix + "Scroll event, deltaX: " + event.getDeltaX() + " deltaY: " + event.getDeltaY());
-            event.consume();
         });
 
-        listeningNode.setOnZoom(event -> {
-            rec.setScaleX(rec.getScaleX() * event.getZoomFactor());
-            rec.setScaleY(rec.getScaleY() * event.getZoomFactor());
-            showOnConsole(msgPrefix + "Zoom event, zoom factor: " + event.getZoomFactor());
-            event.consume();
+        listeningNode.setOnZoom(new EventHandler<ZoomEvent>() {
+            @Override
+            public void handle(ZoomEvent event) {
+                rec.setScaleX(rec.getScaleX() * event.getZoomFactor());
+                rec.setScaleY(rec.getScaleY() * event.getZoomFactor());
+                showOnConsole(msgPrefix + "Zoom event, zoom factor: " + event.getZoomFactor());
+                event.consume();
+            }
         });
 
-        listeningNode.setOnRotate(event -> {
-            rec.setRotate(listeningNode.getRotate() + event.getAngle());
-            showOnConsole(msgPrefix + "Rotate event, angle: " + event.getAngle());
-            event.consume();
+        listeningNode.setOnRotate(new EventHandler<RotateEvent>() {
+            @Override
+            public void handle(RotateEvent event) {
+                rec.setRotate(listeningNode.getRotate() + event.getAngle());
+                showOnConsole(msgPrefix + "Rotate event, angle: " + event.getAngle());
+                event.consume();
+            }
         });
 
-        listeningNode.setOnScrollStarted(event -> {
-            showOnConsole(msgPrefix + "Scroll started");
-            event.consume();
+        listeningNode.setOnScrollStarted(new EventHandler<ScrollEvent>() {
+            @Override
+            public void handle(ScrollEvent event) {
+                showOnConsole(msgPrefix + "Scroll started");
+                event.consume();
+            }
         });
 
-        listeningNode.setOnScrollFinished(event -> {
-            showOnConsole(msgPrefix + "Scroll finished");
-            event.consume();
+        listeningNode.setOnScrollFinished(new EventHandler<ScrollEvent>() {
+            @Override
+            public void handle(ScrollEvent event) {
+                showOnConsole(msgPrefix + "Scroll finished");
+                event.consume();
+            }
         });
 
-        listeningNode.setOnZoomStarted(event -> {
-            showOnConsole(msgPrefix + "Zoom started");
-            event.consume();
+        listeningNode.setOnZoomStarted(new EventHandler<ZoomEvent>() {
+            @Override
+            public void handle(ZoomEvent event) {
+                showOnConsole(msgPrefix + "Zoom started");
+                event.consume();
+            }
         });
 
-        listeningNode.setOnZoomFinished(event -> {
-            showOnConsole(msgPrefix + "Zoom finished");
-            event.consume();
+        listeningNode.setOnZoomFinished(new EventHandler<ZoomEvent>() {
+            @Override
+            public void handle(ZoomEvent event) {
+                showOnConsole(msgPrefix + "Zoom finished");
+                event.consume();
+            }
         });
 
-        listeningNode.setOnRotationStarted(event -> {
-            showOnConsole(msgPrefix + "Rotation started");
-            event.consume();
+        listeningNode.setOnRotationStarted(new EventHandler<RotateEvent>() {
+            @Override
+            public void handle(RotateEvent event) {
+                showOnConsole(msgPrefix + "Rotation started");
+                event.consume();
+            }
         });
 
-        listeningNode.setOnRotationFinished(event -> {
-            showOnConsole(msgPrefix + "Rotation finished");
-            event.consume();
+        listeningNode.setOnRotationFinished(new EventHandler<RotateEvent>() {
+            @Override
+            public void handle(RotateEvent event) {
+                showOnConsole(msgPrefix + "Rotation finished");
+                event.consume();
+            }
         });
     }
 
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/scenegraph/events/keyevent/KeyEventApp.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/scenegraph/events/keyevent/KeyEventApp.java	Wed Dec 04 11:11:23 2013 -0800
@@ -59,12 +59,15 @@
 
     public Parent createContent() {
         //create a console for logging key events
-        final ListView<String> console = new ListView<>(FXCollections.<String>observableArrayList());
+        final ListView<String> console = new ListView<String>(FXCollections.<String>observableArrayList());
         // listen on the console items and remove old ones when we get over 20 items
-        console.getItems().addListener((ListChangeListener.Change<? extends String> change) -> {
-            while (change.next()) {
-                if (change.getList().size() > 20.0) {
-                    change.getList().remove(0);
+        console.getItems().addListener(new ListChangeListener<String>() {
+            @Override
+            public void onChanged(ListChangeListener.Change<? extends String> change) {
+                while (change.next()) {
+                    if (change.getList().size() > 20.0) {
+                        change.getList().remove(0);
+                    }
                 }
             }
         });
@@ -76,27 +79,36 @@
         textBox.setPromptText("Write here");
         textBox.setStyle("-fx-font-size: 34;");
         //add a key listeners
-        textBox.setOnKeyPressed(ke -> {
-            console.getItems().add("Key Pressed: " + ke.getText());
+        textBox.setOnKeyPressed(new EventHandler<KeyEvent>() {
+            @Override
+            public void handle(KeyEvent ke) {
+                console.getItems().add("Key Pressed: " + ke.getText());
+            }
         });
-        textBox.setOnKeyReleased(ke -> {
-            console.getItems().add("Key Released: " + ke.getText());
+        textBox.setOnKeyReleased(new EventHandler<KeyEvent>() {
+            @Override
+            public void handle(KeyEvent ke) {
+                console.getItems().add("Key Released: " + ke.getText());
+            }
         });
-        textBox.setOnKeyTyped(ke -> {
-            String text = "Key Typed: " + ke.getCharacter();
-            if (ke.isAltDown()) {
-                text += " , alt down";
+        textBox.setOnKeyTyped(new EventHandler<KeyEvent>() {
+            @Override
+            public void handle(KeyEvent ke) {
+                String text = "Key Typed: " + ke.getCharacter();
+                if (ke.isAltDown()) {
+                    text += " , alt down";
+                }
+                if (ke.isControlDown()) {
+                    text += " , ctrl down";
+                }
+                if (ke.isMetaDown()) {
+                    text += " , meta down";
+                }
+                if (ke.isShiftDown()) {
+                    text += " , shift down";
+                }
+                console.getItems().add(text);
             }
-            if (ke.isControlDown()) {
-                text += " , ctrl down";
-            }
-            if (ke.isMetaDown()) {
-                text += " , meta down";
-            }
-            if (ke.isShiftDown()) {
-                text += " , shift down";
-            }
-            console.getItems().add(text);
         });
 
         VBox vb = new VBox(10);
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/scenegraph/events/keystrokemotion/LettersPane.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/scenegraph/events/keystrokemotion/LettersPane.java	Wed Dec 04 11:11:23 2013 -0800
@@ -59,13 +59,19 @@
         setId("LettersPane");
         setPrefSize(240, 240);
         setFocusTraversable(true);
-        setOnMousePressed(me -> {
-            requestFocus();
-            me.consume();
+        setOnMousePressed(new EventHandler<MouseEvent>() {
+            @Override
+            public void handle(MouseEvent me) {
+                requestFocus();
+                me.consume();
+            }
         });
-        setOnKeyPressed(ke -> {
-            createLetter(ke.getText());
-            ke.consume();
+        setOnKeyPressed(new EventHandler<KeyEvent>() {
+            @Override
+            public void handle(KeyEvent ke) {
+                createLetter(ke.getText());
+                ke.consume();
+            }
         });
         // create press keys text
         pressText = new Text("Press Keys");
@@ -98,10 +104,13 @@
         // over 3 seconds move letter to random position and fade it out
         final Timeline timeline = new Timeline();
         timeline.getKeyFrames().add(
-                new KeyFrame(Duration.seconds(3), event -> {
-                    // we are done remove us from scene
-                    getChildren().remove(letter);
-                },
+                new KeyFrame(Duration.seconds(3), new EventHandler<ActionEvent>() {
+            @Override
+            public void handle(ActionEvent event) {
+                // we are done remove us from scene
+                getChildren().remove(letter);
+            }
+        },
                 new KeyValue(letter.translateXProperty(), getRandom(0.0f, getWidth() - letter.getBoundsInLocal().getWidth()), INTERPOLATOR),
                 new KeyValue(letter.translateYProperty(), getRandom(0.0f, getHeight() - letter.getBoundsInLocal().getHeight()), INTERPOLATOR),
                 new KeyValue(letter.opacityProperty(), 0f)));
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/scenegraph/events/mouseevent/MouseEventApp.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/scenegraph/events/mouseevent/MouseEventApp.java	Wed Dec 04 11:11:23 2013 -0800
@@ -86,8 +86,10 @@
         console.setPrefSize(CONSOLE_WIDTH, CONSOLE_HEIGHT);
     }
     //create a rectangle in which our circles can move
-    final Rectangle rectangle = new Rectangle(RECT_WIDTH, RECT_HEIGHT, new LinearGradient(0, 0, 0, 1, true, CycleMethod.NO_CYCLE, new Stop(1, Color.rgb(156, 216, 255)),
-            new Stop(0, Color.rgb(156, 216, 255, 0.5))));
+    final Rectangle rectangle = new Rectangle(RECT_WIDTH, RECT_HEIGHT, new LinearGradient(0, 0, 0, 1, true, CycleMethod.NO_CYCLE, new Stop[]{
+                new Stop(1, Color.rgb(156, 216, 255)),
+                new Stop(0, Color.rgb(156, 216, 255, 0.5))
+            }));
     //variables for storing initial position before drag of circle
     private double initX;
     private double initY;
@@ -104,81 +106,112 @@
         circleBig.setTranslateX(BIG_CIRCLE_STARTX);
         circleBig.setTranslateY(BIG_CIRCLE_STARTY);
         // we can set mouse event to any node, also on the rectangle
-        rectangle.setOnMouseMoved(me -> showOnConsole("Mouse moved, x: " + me.getX() + ", y: " + me.getY()));
+        rectangle.setOnMouseMoved(new EventHandler<MouseEvent>() {
+            public void handle(MouseEvent me) {
+                //log mouse move to console, method listed below
+                showOnConsole("Mouse moved, x: " + me.getX() + ", y: " + me.getY());
+            }
+        });
 
-        rectangle.setOnScroll(event -> {
-            double translateX = event.getDeltaX();
-            double translateY = event.getDeltaY();
-            // reduce the deltas for the circles to stay in the screen
-            for (Circle c : new Circle[]{circleSmall, circleBig}) {
-                if (c.getTranslateX() + translateX + c.getRadius() > RECT_WIDTH) {
-                    translateX = RECT_WIDTH - c.getTranslateX() - c.getRadius();
+        rectangle.setOnScroll(new EventHandler<ScrollEvent>() {
+            @Override
+            public void handle(ScrollEvent event) {
+                double translateX = event.getDeltaX();
+                double translateY = event.getDeltaY();
+                // reduce the deltas for the circles to stay in the screen
+                for (Circle c : new Circle[]{circleSmall, circleBig}) {
+                    if (c.getTranslateX() + translateX + c.getRadius() > RECT_WIDTH) {
+                        translateX = RECT_WIDTH - c.getTranslateX() - c.getRadius();
+                    }
+                    if (c.getTranslateX() + translateX - c.getRadius() < 0) {
+                        translateX = -c.getTranslateX() + c.getRadius();
+                    }
+                    if (c.getTranslateY() + translateY + c.getRadius() > RECT_HEIGHT) {
+                        translateY = RECT_HEIGHT - c.getTranslateY() - c.getRadius();
+                    }
+                    if (c.getTranslateY() + translateY - c.getRadius() < 0) {
+                        translateY = -c.getTranslateY() + c.getRadius();
+                    }
                 }
-                if (c.getTranslateX() + translateX - c.getRadius() < 0) {
-                    translateX = -c.getTranslateX() + c.getRadius();
+                // move the circles
+                for (Circle c : new Circle[]{circleSmall, circleBig}) {
+                    c.setTranslateX(c.getTranslateX() + translateX);
+                    c.setTranslateY(c.getTranslateY() + translateY);
                 }
-                if (c.getTranslateY() + translateY + c.getRadius() > RECT_HEIGHT) {
-                    translateY = RECT_HEIGHT - c.getTranslateY() - c.getRadius();
-                }
-                if (c.getTranslateY() + translateY - c.getRadius() < 0) {
-                    translateY = -c.getTranslateY() + c.getRadius();
-                }
+                // log event
+                showOnConsole("Scrolled, deltaX: " + event.getDeltaX()
+                        + ", deltaY: " + event.getDeltaY());
             }
-            // move the circles
-            for (Circle c : new Circle[]{circleSmall, circleBig}) {
-                c.setTranslateX(c.getTranslateX() + translateX);
-                c.setTranslateY(c.getTranslateY() + translateY);
-            }
-            // log event
-            showOnConsole("Scrolled, deltaX: " + event.getDeltaX()
-                    + ", deltaY: " + event.getDeltaY());
         });
         return new Group(rectangle, circleBig, circleSmall, console);
     }
 
     private Circle createCircle(final String name, final Color color, int radius) {
         //create a circle with desired name,  color and radius
-        final Circle circle = new Circle(radius, new RadialGradient(0, 0, 0.2, 0.3, 1, true, CycleMethod.NO_CYCLE, new Stop(0, Color.rgb(250, 250, 255)),
-                new Stop(1, color)));
+        final Circle circle = new Circle(radius, new RadialGradient(0, 0, 0.2, 0.3, 1, true, CycleMethod.NO_CYCLE, new Stop[]{
+                    new Stop(0, Color.rgb(250, 250, 255)),
+                    new Stop(1, color)
+                }));
         //add a shadow effect
         circle.setEffect(new InnerShadow(7, color.darker().darker()));
         //change a cursor when it is over circle
         circle.setCursor(Cursor.HAND);
         //add a mouse listeners
-        circle.setOnMouseClicked(me -> {
-            showOnConsole("Clicked on" + name + ", " + me.getClickCount() + "times");
-            //the event will be passed only to the circle which is on front
-            me.consume();
+        circle.setOnMouseClicked(new EventHandler<MouseEvent>() {
+            @Override
+            public void handle(MouseEvent me) {
+                showOnConsole("Clicked on" + name + ", " + me.getClickCount() + "times");
+                //the event will be passed only to the circle which is on front
+                me.consume();
+            }
         });
-        circle.setOnMouseDragged(me -> {
-            double dragX = me.getSceneX() - dragAnchor.getX();
-            double dragY = me.getSceneY() - dragAnchor.getY();
-            //calculate new position of the circle
-            double newXPosition = initX + dragX;
-            double newYPosition = initY + dragY;
-            //if new position do not exceeds borders of the rectangle, translate to this position
-            if ((newXPosition >= circle.getRadius()) && (newXPosition <= RECT_WIDTH - circle.getRadius())) {
-                circle.setTranslateX(newXPosition);
+        circle.setOnMouseDragged(new EventHandler<MouseEvent>() {
+            @Override
+            public void handle(MouseEvent me) {
+                double dragX = me.getSceneX() - dragAnchor.getX();
+                double dragY = me.getSceneY() - dragAnchor.getY();
+                //calculate new position of the circle
+                double newXPosition = initX + dragX;
+                double newYPosition = initY + dragY;
+                //if new position do not exceeds borders of the rectangle, translate to this position
+                if ((newXPosition >= circle.getRadius()) && (newXPosition <= RECT_WIDTH - circle.getRadius())) {
+                    circle.setTranslateX(newXPosition);
+                }
+                if ((newYPosition >= circle.getRadius()) && (newYPosition <= RECT_HEIGHT - circle.getRadius())) {
+                    circle.setTranslateY(newYPosition);
+                }
+                showOnConsole(name + " was dragged (x:" + dragX + ", y:" + dragY + ")");
             }
-            if ((newYPosition >= circle.getRadius()) && (newYPosition <= RECT_HEIGHT - circle.getRadius())) {
-                circle.setTranslateY(newYPosition);
+        });
+        circle.setOnMouseEntered(new EventHandler<MouseEvent>() {
+            @Override
+            public void handle(MouseEvent me) {
+                //change the z-coordinate of the circle
+                circle.toFront();
+                showOnConsole("Mouse entered " + name);
             }
-            showOnConsole(name + " was dragged (x:" + dragX + ", y:" + dragY + ")");
         });
-        circle.setOnMouseEntered(me -> {
-            //change the z-coordinate of the circle
-            circle.toFront();
-            showOnConsole("Mouse entered " + name);
+        circle.setOnMouseExited(new EventHandler<MouseEvent>() {
+            @Override
+            public void handle(MouseEvent me) {
+                showOnConsole("Mouse exited " + name);
+            }
         });
-        circle.setOnMouseExited(me -> showOnConsole("Mouse exited " + name));
-        circle.setOnMousePressed(me -> {
-            //when mouse is pressed, store initial position
-            initX = circle.getTranslateX();
-            initY = circle.getTranslateY();
-            dragAnchor = new Point2D(me.getSceneX(), me.getSceneY());
-            showOnConsole("Mouse pressed above " + name);
+        circle.setOnMousePressed(new EventHandler<MouseEvent>() {
+            @Override
+            public void handle(MouseEvent me) {
+                //when mouse is pressed, store initial position
+                initX = circle.getTranslateX();
+                initY = circle.getTranslateY();
+                dragAnchor = new Point2D(me.getSceneX(), me.getSceneY());
+                showOnConsole("Mouse pressed above " + name);
+            }
         });
-        circle.setOnMouseReleased(me -> showOnConsole("Mouse released above " + name));
+        circle.setOnMouseReleased(new EventHandler<MouseEvent>() {
+            public void handle(MouseEvent me) {
+                showOnConsole("Mouse released above " + name);
+            }
+        });
 
         return circle;
     }
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/scenegraph/events/multitouch/MultiTouchImageView.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/scenegraph/events/multitouch/MultiTouchImageView.java	Wed Dec 04 11:11:23 2013 -0800
@@ -54,12 +54,15 @@
         imageView.setSmooth(true);
         getChildren().add(imageView);
 
-        setOnMousePressed(event -> {
+        setOnMousePressed(new EventHandler<MouseEvent>() {
+            @Override
+            public void handle(MouseEvent event) {
 
-            lastX = event.getX();
-            lastY = event.getY();
-            toFront();
-            //  postView.toFront();
+                lastX = event.getX();
+                lastY = event.getY();
+                toFront();
+                //  postView.toFront();
+            }
         });
         setOnMouseDragged(new EventHandler<MouseEvent>() {
             @Override
@@ -81,17 +84,31 @@
                 }
             }
         });
-        addEventHandler(ZoomEvent.ZOOM_STARTED, event -> {
-            startScale = getScaleX();
+        addEventHandler(ZoomEvent.ZOOM_STARTED, new EventHandler<ZoomEvent>() {
+            @Override
+            public void handle(ZoomEvent event) {
+                startScale = getScaleX();
+            }
         });
-        addEventHandler(ZoomEvent.ZOOM, event -> {
-            setScaleX(event.getTotalZoomFactor());
-            setScaleY(event.getTotalZoomFactor());
+        addEventHandler(ZoomEvent.ZOOM, new EventHandler<ZoomEvent>() {
+            @Override
+            public void handle(ZoomEvent event) {
+                setScaleX(event.getTotalZoomFactor());
+                setScaleY(event.getTotalZoomFactor());
+            }
         });
-        addEventHandler(RotateEvent.ROTATION_STARTED, event -> {
-            startRotate = getRotate();
+        addEventHandler(RotateEvent.ROTATION_STARTED, new EventHandler<RotateEvent>() {
+            @Override
+            public void handle(RotateEvent event) {
+                startRotate = getRotate();
+            }
         });
-        addEventHandler(RotateEvent.ROTATE, event -> setRotate(event.getTotalAngle()));
+        addEventHandler(RotateEvent.ROTATE, new EventHandler<RotateEvent>() {
+            @Override
+            public void handle(RotateEvent event) {
+                setRotate(event.getTotalAngle());
+            }
+        });
 
     }
 }
\ No newline at end of file
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/scenegraph/node/customnode/CustomNodeApp.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/scenegraph/node/customnode/CustomNodeApp.java	Wed Dec 04 11:11:23 2013 -0800
@@ -73,13 +73,15 @@
     }
 
     public static Polygon createUMLArrow() {
-        Polygon polygon = new Polygon(7.5, 0,
-                15, 15,
-                7.51, 15,
-                7.51, 40,
-                7.49, 40,
-                7.49, 15,
-                0, 15);
+        Polygon polygon = new Polygon(new double[]{
+                    7.5, 0,
+                    15, 15,
+                    7.51, 15,
+                    7.51, 40,
+                    7.49, 40,
+                    7.49, 15,
+                    0, 15
+                });
         polygon.setFill(Color.WHITE);
         polygon.setStroke(Color.BLACK);
         return polygon;
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/scenegraph/stage/advancedstage/AdvancedStageApp.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/scenegraph/stage/advancedstage/AdvancedStageApp.java	Wed Dec 04 11:11:23 2013 -0800
@@ -82,67 +82,92 @@
         Button button = new Button("Create a Stage");
         button.setStyle("-fx-font-size: 24;");
         button.setDefaultButton(true);
-        button.setOnAction(t -> {
-            // INITIALISATION OF THE STAGE/SCENE
+        button.setOnAction(new EventHandler<ActionEvent>() {
+            @Override
+            public void handle(ActionEvent t) {
+                // INITIALISATION OF THE STAGE/SCENE
 
-            //create stage which has set stage style transparent
-            final Stage stage = new Stage(StageStyle.TRANSPARENT);
-            //create root node of scene, i.e. group
-            Group rootGroup = new Group();
-            //create scene with set width, height and color
-            Scene scene = new Scene(rootGroup, 200, 200, Color.TRANSPARENT);
-            //set scene to stage
-            stage.setScene(scene);
-            //center stage on screen
-            stage.centerOnScreen();
-            //show the stage
-            stage.show();
+                //create stage which has set stage style transparent
+                final Stage stage = new Stage(StageStyle.TRANSPARENT);
+                //create root node of scene, i.e. group
+                Group rootGroup = new Group();
+                //create scene with set width, height and color
+                Scene scene = new Scene(rootGroup, 200, 200, Color.TRANSPARENT);
+                //set scene to stage
+                stage.setScene(scene);
+                //center stage on screen
+                stage.centerOnScreen();
+                //show the stage
+                stage.show();
 
-            // CREATION OF THE DRAGGER (CIRCLE)
+                // CREATION OF THE DRAGGER (CIRCLE)
 
-            //create dragger with desired size
-            Circle dragger = new Circle(100, 100, 100);
-            //fill the dragger with some nice radial background
-            dragger.setFill(new RadialGradient(-0.3, 135, 0.5, 0.5, 1, true, CycleMethod.NO_CYCLE, new Stop(0, Color.DARKGRAY),
-                    new Stop(1, Color.BLACK)));
+                //create dragger with desired size
+                Circle dragger = new Circle(100, 100, 100);
+                //fill the dragger with some nice radial background
+                dragger.setFill(new RadialGradient(-0.3, 135, 0.5, 0.5, 1, true, CycleMethod.NO_CYCLE, new Stop[]{
+                            new Stop(0, Color.DARKGRAY),
+                            new Stop(1, Color.BLACK)
+                        }));
 
-            //when mouse button is pressed, save the initial position of screen
-            rootGroup.setOnMousePressed(me -> {
-                initX = me.getScreenX() - stage.getX();
-                initY = me.getScreenY() - stage.getY();
-            });
+                //when mouse button is pressed, save the initial position of screen
+                rootGroup.setOnMousePressed(new EventHandler<MouseEvent>() {
+                    @Override
+                    public void handle(MouseEvent me) {
+                        initX = me.getScreenX() - stage.getX();
+                        initY = me.getScreenY() - stage.getY();
+                    }
+                });
 
-            //when screen is dragged, translate it accordingly
-            rootGroup.setOnMouseDragged(me -> {
-                stage.setX(me.getScreenX() - initX);
-                stage.setY(me.getScreenY() - initY);
-            });
+                //when screen is dragged, translate it accordingly
+                rootGroup.setOnMouseDragged(new EventHandler<MouseEvent>() {
+                    @Override
+                    public void handle(MouseEvent me) {
+                        stage.setX(me.getScreenX() - initX);
+                        stage.setY(me.getScreenY() - initY);
+                    }
+                });
 
-            // CREATE MIN AND CLOSE BUTTONS
-            //create button for closing application
-            Button close = new Button("Close me");
-            close.setOnAction(event -> stage.close());
+                // CREATE MIN AND CLOSE BUTTONS
+                //create button for closing application
+                Button close = new Button("Close me");
+                close.setOnAction(new EventHandler<ActionEvent>() {
+                    @Override
+                    public void handle(ActionEvent event) {
+                        //in case we would like to close whole demo
+                        //javafx.application.Platform.exit();
 
-            //create button for minimalising application
-            Button min = new Button("Minimize me");
-            min.setOnAction(event -> stage.setIconified(true));
+                        //however we want to close only this instance of stage
+                        stage.close();
+                    }
+                });
 
-            // CREATE SIMPLE TEXT NODE
-            Text text = new Text("JavaFX"); //20, 110,
-            text.setFill(Color.WHITESMOKE);
-            text.setEffect(new Lighting());
-            text.setBoundsType(TextBoundsType.VISUAL);
-            text.setFont(Font.font(Font.getDefault().getFamily(), 50));
+                //create button for minimalising application
+                Button min = new Button("Minimize me");
+                min.setOnAction(new EventHandler<ActionEvent>() {
+                    @Override
+                    public void handle(ActionEvent event) {
+                        stage.setIconified(true);
+                    }
+                });
 
-            // USE A LAYOUT VBOX FOR EASIER POSITIONING OF THE VISUAL NODES ON SCENE
-            VBox vBox = new VBox();
-            vBox.setSpacing(10);
-            vBox.setPadding(new Insets(60, 0, 0, 20));
-            vBox.setAlignment(Pos.TOP_CENTER);
-            vBox.getChildren().addAll(text, min, close);
+                // CREATE SIMPLE TEXT NODE
+                Text text = new Text("JavaFX"); //20, 110,
+                text.setFill(Color.WHITESMOKE);
+                text.setEffect(new Lighting());
+                text.setBoundsType(TextBoundsType.VISUAL);
+                text.setFont(Font.font(Font.getDefault().getFamily(), 50));
 
-            //add all nodes to main root group
-            rootGroup.getChildren().addAll(dragger, vBox);
+                // USE A LAYOUT VBOX FOR EASIER POSITIONING OF THE VISUAL NODES ON SCENE
+                VBox vBox = new VBox();
+                vBox.setSpacing(10);
+                vBox.setPadding(new Insets(60, 0, 0, 20));
+                vBox.setAlignment(Pos.TOP_CENTER);
+                vBox.getChildren().addAll(text, min, close);
+
+                //add all nodes to main root group
+                rootGroup.getChildren().addAll(dragger, vBox);
+            }
         });
         root.getChildren().add(button);
         return root;
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/scenegraph/stage/stage/StageApp.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/scenegraph/stage/stage/StageApp.java	Wed Dec 04 11:11:23 2013 -0800
@@ -61,25 +61,28 @@
         Button button = new Button("Create a Stage");
         button.setStyle("-fx-font-size: 24;");
         button.setDefaultButton(true);
-        button.setOnAction(t -> {
-            final Stage stage = new Stage();
-            //create root node of scene, i.e. group
-            Group rootGroup = new Group();
-            //create scene with set width, height and color
-            Scene scene = new Scene(rootGroup, 200, 200, Color.WHITESMOKE);
-            //set scene to stage
-            stage.setScene(scene);
-            //center stage on screen
-            stage.centerOnScreen();
-            //show the stage
-            stage.show();
-            //add some node to scene
-            Text text = new Text(20, 110, "JavaFX");
-            text.setFill(Color.DODGERBLUE);
-            text.setEffect(new Lighting());
-            text.setFont(Font.font(Font.getDefault().getFamily(), 50));
-            //add text to the main root group
-            rootGroup.getChildren().add(text);
+        button.setOnAction(new EventHandler<ActionEvent>() {
+            @Override
+            public void handle(ActionEvent t) {
+                final Stage stage = new Stage();
+                //create root node of scene, i.e. group
+                Group rootGroup = new Group();
+                //create scene with set width, height and color
+                Scene scene = new Scene(rootGroup, 200, 200, Color.WHITESMOKE);
+                //set scene to stage
+                stage.setScene(scene);
+                //center stage on screen
+                stage.centerOnScreen();
+                //show the stage
+                stage.show();
+                //add some node to scene
+                Text text = new Text(20, 110, "JavaFX");
+                text.setFill(Color.DODGERBLUE);
+                text.setEffect(new Lighting());
+                text.setFont(Font.font(Font.getDefault().getFamily(), 50));
+                //add text to the main root group
+                rootGroup.getChildren().add(text);
+            }
         });
         return button;
     }
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/swing/swinginterop/SampleTableModel.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/swing/swinginterop/SampleTableModel.java	Wed Dec 04 11:11:23 2013 -0800
@@ -47,9 +47,9 @@
     private static ObservableList<BarChart.Series> bcData;
     private final String[] names = {"2007", "2008", "2009"};
     private Object[][] data = {
-        {(double) 567, (double) 956, (double) 1154},
-        {(double) 1292, (double) 1665, (double) 1927},
-        {(double) 1292, (double) 2559, (double) 2774}
+        {new Double(567), new Double(956), new Double(1154)},
+        {new Double(1292), new Double(1665), new Double(1927)},
+        {new Double(1292), new Double(2559), new Double(2774)}
     };
 
     public double getTickUnit() {
@@ -93,7 +93,7 @@
     @Override
     public void setValueAt(Object value, int row, int column) {
         if (value instanceof Double) {
-            data[row][column] = value;
+            data[row][column] = (Double) value;
         }
 
         fireTableCellUpdated(row, column);
@@ -101,9 +101,9 @@
 
     public ObservableList<BarChart.Series> getBarChartData() {
         if (bcData == null) {
-            bcData = FXCollections.observableArrayList();
+            bcData = FXCollections.<BarChart.Series>observableArrayList();
             for (int row = 0; row < getRowCount(); row++) {
-                ObservableList<BarChart.Data> series = FXCollections.observableArrayList();
+                ObservableList<BarChart.Data> series = FXCollections.<BarChart.Data>observableArrayList();
                 for (int column = 0; column < getColumnCount(); column++) {
                     series.add(new BarChart.Data(getColumnName(column), getValueAt(row, column)));
                 }
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/swing/swinginterop/SwingInterop.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/swing/swinginterop/SwingInterop.java	Wed Dec 04 11:11:23 2013 -0800
@@ -39,6 +39,7 @@
 import java.text.DecimalFormat;
 import javafx.application.Platform;
 import javafx.beans.value.ChangeListener;
+import javafx.beans.value.ObservableValue;
 import javafx.collections.FXCollections;
 import javafx.embed.swing.JFXPanel;
 import javafx.event.ActionEvent;
@@ -63,6 +64,7 @@
 import javafx.scene.web.WebView;
 import javax.swing.*;
 import javax.swing.event.TableModelEvent;
+import javax.swing.event.TableModelListener;
 import javax.swing.table.DefaultTableCellRenderer;
 
 /**
@@ -127,29 +129,36 @@
         add(tabbedPane, BorderLayout.CENTER);
         
         // create JavaFX scene
-        Platform.runLater(this::createScene);
+        Platform.runLater(new Runnable() {
+            public void run() {
+                createScene();
+            }
+        });
     }
 
     public static void main(String[] args) {
-        System.setProperty("java.net.useSystemProxies", "true");
-        SwingUtilities.invokeLater(() -> {
-            try {
-                UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
-            } catch (Exception e) {}
+        SwingUtilities.invokeLater(new Runnable() {
 
-            JFrame frame = new JFrame("JavaFX in Swing");
-            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+            @Override
+            public void run() {
+                try {
+                    UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
+                } catch (Exception e) {}
+                
+                JFrame frame = new JFrame("JavaFX in Swing");
+                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
-            JApplet applet = new SwingInterop();
-            applet.init();
+                JApplet applet = new SwingInterop();
+                applet.init();
 
-            frame.setContentPane(applet.getContentPane());
+                frame.setContentPane(applet.getContentPane());
 
-            frame.pack();
-            frame.setLocationRelativeTo(null);
-            frame.setVisible(true);
+                frame.pack();
+                frame.setLocationRelativeTo(null);
+                frame.setVisible(true);
 
-            applet.start();
+                applet.start();
+            }
         });
     }
 
@@ -172,16 +181,23 @@
         yAxis.setLabel("Units Sold");
 
         final BarChart bChart = new BarChart(xAxis, yAxis, tableModel.getBarChartData());
-        tableModel.addTableModelListener(e -> {
-            if (e.getType() == TableModelEvent.UPDATE) {
-                final int row = e.getFirstRow();
-                final int column = e.getColumn();
-                final Object value = ((SampleTableModel) e.getSource()).getValueAt(row, column);
-                Platform.runLater(() -> {
-                    XYChart.Series<String, Number> s = (XYChart.Series<String, Number>) bChart.getData().get(row);
-                    BarChart.Data data = s.getData().get(column);
-                    data.setYValue(value);
-                });
+        tableModel.addTableModelListener(new TableModelListener() {
+
+            @Override
+            public void tableChanged(TableModelEvent e) {
+                if (e.getType() == TableModelEvent.UPDATE) {
+                    final int row = e.getFirstRow();
+                    final int column = e.getColumn();
+                    final Object value = ((SampleTableModel) e.getSource()).getValueAt(row, column);
+                    Platform.runLater(new Runnable() {
+                        @Override
+                        public void run() {
+                            XYChart.Series<String, Number> s = (XYChart.Series<String, Number>) bChart.getData().get(row);
+                            BarChart.Data data = s.getData().get(column);
+                            data.setYValue(value);
+                        }
+                    });
+                }
             }
         });
         return bChart;
@@ -197,9 +213,11 @@
         final Label warningLabel = new Label("Do you need to specify web proxy information?");
         eng.load("http://www.oracle.com/us/index.html");
 
-        ChangeListener handler = (observable, oldValue, newValue) -> {
-            if (warningLabel.isVisible()) {
-                warningLabel.setVisible(false);
+        ChangeListener handler = new ChangeListener<Number>() {
+            @Override public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
+                if (warningLabel.isVisible()) {
+                    warningLabel.setVisible(false);
+                }
             }
         };
         eng.getLoadWorker().progressProperty().addListener(handler);
@@ -209,11 +227,19 @@
         Button goButton = new Button("Go");
         goButton.setMinWidth(Button.USE_PREF_SIZE);
         goButton.setDefaultButton(true);
-        EventHandler<ActionEvent> goAction = event -> eng.load(locationField.getText().startsWith("http://") ? locationField.getText()
-                : "http://" + locationField.getText());
+        EventHandler<ActionEvent> goAction = new EventHandler<ActionEvent>() {
+            @Override public void handle(ActionEvent event) {
+                eng.load(locationField.getText().startsWith("http://") ? locationField.getText()
+                        : "http://" + locationField.getText());
+            }
+        };
         goButton.setOnAction(goAction);
         locationField.setOnAction(goAction);
-        eng.locationProperty().addListener((observable, oldValue, newValue) -> locationField.setText(newValue));
+        eng.locationProperty().addListener(new ChangeListener<String>() {
+            @Override public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
+                locationField.setText(newValue);
+            }
+        });
         GridPane grid = new GridPane();
         grid.setPadding(new Insets(5));
         grid.setVgap(5);
@@ -234,7 +260,7 @@
 
         @Override
         public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
-            value = formatter.format(value);
+            value = formatter.format((Number) value);
             return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
         }
     }
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/swing/swinginterop/SwingInteropApp.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/swing/swinginterop/SwingInteropApp.java	Wed Dec 04 11:11:23 2013 -0800
@@ -64,7 +64,12 @@
 
     public Parent createContent() {
         button.setPrefSize(180, 45);
-        button.setOnAction(t -> service.restart());
+        button.setOnAction(new EventHandler<ActionEvent>() {
+            @Override
+            public void handle(ActionEvent t) {
+                service.restart();
+            }
+        });
         button.disableProperty().bind(service.bp);
         return button;
     }
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/swing/swinginterop/SwingInteropTask.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/swing/swinginterop/SwingInteropTask.java	Wed Dec 04 11:11:23 2013 -0800
@@ -61,7 +61,7 @@
         proc = pb.start();
         //Assuming there is little output to stdout, stderr
         pListener.setProcess(proc);
-        proc.waitFor();
+        int exitVal = proc.waitFor();
         pListener.setProcess(null);
 
         return proc;
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/web/htmleditor/HTMLEditorApp.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/web/htmleditor/HTMLEditorApp.java	Wed Dec 04 11:11:23 2013 -0800
@@ -91,7 +91,13 @@
 
         Button showHTMLButton = new Button("Show the HTML below");
         vRoot.setAlignment(Pos.CENTER);
-        showHTMLButton.setOnAction(arg0 -> htmlLabel.setText(htmlEditor.getHtmlText()));
+        showHTMLButton.setOnAction(new EventHandler<ActionEvent>() {
+
+            @Override
+            public void handle(ActionEvent arg0) {
+                htmlLabel.setText(htmlEditor.getHtmlText());
+            }
+        });
 
         vRoot.getChildren().addAll(showHTMLButton, scrollPane);
       
--- a/apps/samples/Ensemble8/src/samples/java/ensemble/samples/web/webview/WebViewApp.java	Wed Dec 04 06:23:31 2013 -0800
+++ b/apps/samples/Ensemble8/src/samples/java/ensemble/samples/web/webview/WebViewApp.java	Wed Dec 04 11:11:23 2013 -0800
@@ -68,10 +68,20 @@
         webEngine.load(DEFAULT_URL);
 
         final TextField locationField = new TextField(DEFAULT_URL);
-        webEngine.locationProperty().addListener((observable, oldValue, newValue) -> locationField.setText(newValue));
-        EventHandler<ActionEvent> goAction = event -> webEngine.load(locationField.getText().startsWith("http://")
-                ? locationField.getText()
-                : "http://" + locationField.getText());
+        webEngine.locationProperty().addListener(new ChangeListener<String>() {
+            @Override
+            public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
+                locationField.setText(newValue);
+            }
+        });
+        EventHandler<ActionEvent> goAction = new EventHandler<ActionEvent>() {
+            @Override
+            public void handle(ActionEvent event) {
+                webEngine.load(locationField.getText().startsWith("http://")
+                        ? locationField.getText()
+                        : "http://" + locationField.getText());
+            }
+        };
         locationField.setOnAction(goAction);
 
         Button goButton = new Button("Go");