Package org.jrebirth.af.transition.slicer

Source Code of org.jrebirth.af.transition.slicer.SlidingDoorService

/**
* Get more info at : www.jrebirth.org .
* Copyright JRebirth.org © 2011-2013
* Contact : sebastien.bordes@jrebirth.org
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jrebirth.af.transition.slicer;

import java.util.List;
import java.util.Random;

import javafx.animation.Interpolator;
import javafx.animation.ParallelTransition;
import javafx.animation.ParallelTransitionBuilder;
import javafx.animation.PauseTransition;
import javafx.animation.PauseTransitionBuilder;
import javafx.animation.SequentialTransitionBuilder;
import javafx.animation.Transition;
import javafx.animation.TranslateTransitionBuilder;
import javafx.beans.property.IntegerProperty;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Node;
import javafx.util.Duration;

import org.jrebirth.af.core.service.DefaultService;
import org.jrebirth.af.core.wave.WaveTypeBase;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
* The class <strong>ImageSlicerService</strong>.
*
* @author Sébastien Bordes
*/
public class SlidingDoorService extends DefaultService {

    /** Wave type use to load events. */
    public static final WaveTypeBase DO_SLICE_NODE = WaveTypeBase.build("SLICE_NODE", TransitionWaves.NODE);

    /** Wave type to return events loaded. */
    public static final WaveTypeBase RE_NODE_SLICED = WaveTypeBase.build("NODE_SLICED", TransitionWaves.NODE);

    /** The class logger. */
    private static final Logger LOGGER = LoggerFactory.getLogger(SlidingDoorService.class);

    /** The delay between each node transition property. */
    private final IntegerProperty nodeDelayProperty = new SimpleIntegerProperty(4);

    /** The delay between each node transition property. */
    private final ObjectProperty<SlidingType> slidingTypeProperty = new SimpleObjectProperty<>(SlidingType.FromBottomLeft);

    /** . */
    private final ObjectProperty<Duration> translateDurationProperty = new SimpleObjectProperty<>(Duration.millis(500));

    /**
     * The <code>RANDOM</code> field is used to build a random integer.
     */
    private static final Random RANDOM = new Random();

    /**
     * The Enum SLIDING_TYPE.
     */
    private enum SlidingType {

        FromBottomLeft,
        FromBottomRight,
        FromTopLeft,
        FromTopRight,

        FromLeftBottom,
        FromRightBottom,
        FromLeftTop,
        FromRightTop,

        FromHorizontalMiddle,
        FromVerticalMiddle
    }

    /** The nodes. */
    private final ObservableList<Node> nodes = FXCollections.observableArrayList();

    /** The full transition. */
    private Transition fullTransition;

    /**
     * Sets the node delay.
     *
     * @param column the new node delay
     */
    public void setNodeDelay(final Integer column) {
        this.nodeDelayProperty.set(column);
    }

    /**
     * Gets the node delay.
     *
     * @return the node delay
     */
    public Integer getNodeDelay() {
        return this.nodeDelayProperty.get();
    }

    /**
     * Node delay property.
     *
     * @return the integer property
     */
    public IntegerProperty nodeDelayProperty() {
        return this.nodeDelayProperty;
    }

    public void setSlidingType(final SlidingType slidingType) {
        this.slidingTypeProperty.set(slidingType);
    }

    public SlidingType getSlidingType() {
        return this.slidingTypeProperty.get();
    }

    public ObjectProperty<SlidingType> slidingTypeProperty() {
        return this.slidingTypeProperty;
    }

    public void setTranslateDuration(final Duration translateDuration) {
        this.translateDurationProperty.set(translateDuration);
    }

    public Duration getTranslateDuration() {
        return this.translateDurationProperty.get();
    }

    public ObjectProperty<Duration> translateDurationProperty() {
        return this.translateDurationProperty;
    }

    /**
     * Gets the full transition.
     *
     * @return Returns the fullTransition.
     */
    public Transition getFullTransition() {
        return this.fullTransition;
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public void initService() {
        // Nothing to do yet
    }

    /**
     * TODO To complete.
     *
     * @param nodesToAdd the new nodes
     */
    public void setNodes(final List<? extends Node> nodesToAdd) {
        this.nodes.addAll(nodesToAdd);
    }

    /**
     * Do it.
     */
    public void doIt() {

        // timeline.

        // final List<Animation> fades = new ArrayList<>();
        //
        // int i = 1;
        // for (Node node : nodes) {
        // i *= -1;
        // fades.add(TranslateTransitionBuilder.create().node(node)
        // .fromY(1000 * i)
        // .toY(node.getLayoutY())
        // .byY(1000 * i)
        // .duration(Duration.millis(500))
        // .build()
        // );
        // Bounds b = node.getBoundsInLocal();
        // node.setClip(new Rectangle(b.getMinX(), b.getMinY(), b.getWidth(), b.getHeight()));
        //
        // }
        //
        // fullTransition = ParallelTransitionBuilder.create()
        // .children(fades).build();

        // for (int i = 0; i < 20; i++) {
        // p.getChildren().add(RectangleBuilder.create().x(i * 40).y(0).width(40).height(600).fill(Color.AZURE).build());
        // }

        final ParallelTransition parallel = ParallelTransitionBuilder.create()
                .build();

        // // int i = 0;
        // // Collections.shuffle(nodes);
        // for (final Node node : this.nodes) {
        // node.setCache(true);
        // node.setCacheHint(CacheHint.SPEED);
        //
        // ((ParallelTransition) this.fullTransition).getChildren().add(
        // TranslateTransitionBuilder.create().delay(getRandomDuration()).node(node).toY(1000).duration(Duration.millis(500)).interpolator(Interpolator.EASE_IN).build());
        // // i++;
        // }

        int i = 0;
        for (final Node node : this.nodes) {

            parallel.getChildren().add(
                    TranslateTransitionBuilder.create()
                            .delay(Duration.millis(i * getNodeDelay()))
                            .node(node)
                            // .fromY(0)
                            // .toY(1000)
                            .byY(1000)
                            .duration(getTranslateDuration())
                            .interpolator(Interpolator.EASE_IN)
                            .build()
                    );
            // parallel.getChildren().add(
            // TranslateTransitionBuilder.create()
            // .delay(getRandomDuration())
            // .node(node)
            // .toY(1000)
            // .duration(Duration.millis(500))
            // .interpolator(Interpolator.EASE_IN)
            // .build()
            // );
            i++;
        }
        final PauseTransition pt = PauseTransitionBuilder.create()
                .duration(Duration.seconds(1))
                .build();

        this.fullTransition = SequentialTransitionBuilder.create()
                .children(
                        parallel
                )
                .autoReverse(true)
                .cycleCount(10)
                .build();

    }

    /**
     * Gets the random duration.
     *
     * @return the random duration
     */
    private Duration getRandomDuration() {
        return Duration.millis(RANDOM.nextLong() % 3000 + 1000);
    }

}
TOP

Related Classes of org.jrebirth.af.transition.slicer.SlidingDoorService

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.