@Override
    public void changed(ObservableValue<? extends Number> ov, Number oldValue, Number newValue) {
        final double delta = newValue.doubleValue() - oldValue.doubleValue();
        final DoubleProperty doubleProperty = (DoubleProperty) ov;
        final Node node = (Node) doubleProperty.getBean();

        TranslateTransition t;
        if (doubleProperty.getName().equals("layoutX")) {
            t = nodeXTransitions.get(node);
            if (t == null) {
                t = new TranslateTransition(Duration.millis(150), node);
                t.setToX(0);
                nodeXTransitions.put(node, t);
            }
            t.setFromX(node.getTranslateX() - delta);
            node.setTranslateX(node.getTranslateX() - delta);
        } else { //layout Y
            t = nodeYTransitions.get(node);
            if (t == null) {
                t = new TranslateTransition(Duration.millis(150), node);
                t.setToY(0);
                nodeYTransitions.put(node, t);
            }
            t.setFromY(node.getTranslateY() - delta);
            node.setTranslateY(node.getTranslateY() - delta);
        }

        t.playFromStart();
    }
Animates all the children of a Region.
<code>
  VBox myVbox = new VBox();
  LayoutAnimator animator = new LayoutAnimator();
  animator.observe(myVbox.getChildren());
</code>

@param nodes  the nodes to observe
tool-parent/tool-core/src/main/java/com/speedment/tool/core/util/LayoutAnimator.java