All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.alee.extended.transition.effects.DefaultTransitionEffect Maven / Gradle / Ivy

/*
 * This file is part of WebLookAndFeel library.
 *
 * WebLookAndFeel library is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * WebLookAndFeel library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with WebLookAndFeel library.  If not, see .
 */

package com.alee.extended.transition.effects;

import com.alee.extended.transition.ImageTransition;
import com.alee.utils.SwingUtils;

import java.util.HashMap;
import java.util.Map;

/**
 * @author Mikle Garin
 */

public abstract class DefaultTransitionEffect implements TransitionEffect
{
    protected static final String DIRECTION = "DIRECTION";

    protected Map effectSettings = new HashMap ();
    protected boolean animating = false;

    /**
     * Default methods
     */

    @Override
    public long getAnimationDelay ()
    {
        return SwingUtils.frameRateDelay ( 36 );
    }

    @Override
    public boolean isAnimating ()
    {
        return animating;
    }

    public Direction getDirection ()
    {
        return get ( DIRECTION, Direction.random );
    }

    public void setDirection ( Direction direction )
    {
        put ( DIRECTION, direction );
    }

    /**
     * Effect settings storage
     */

    protected Map getEffectSettings ()
    {
        return effectSettings;
    }

    protected void setEffectSettings ( Map effectSettings )
    {
        this.effectSettings = effectSettings;
    }

    protected void put ( String property, Object value )
    {
        effectSettings.put ( property, value );
    }

    protected void remove ( String property )
    {
        effectSettings.remove ( property );
    }

    protected void clearSettings ()
    {
        effectSettings.clear ();
    }

    protected  T get ( String property, T defaultValue )
    {
        if ( effectSettings.containsKey ( property ) )
        {
            return ( T ) effectSettings.get ( property );
        }
        else
        {
            return defaultValue;
        }
    }

    /**
     * Default animation methods
     */

    @Override
    public boolean performAnimationTick ( ImageTransition transition )
    {
        if ( !animating )
        {
            animating = true;
            prepareAnimation ( transition );
            return false;
        }
        else
        {
            boolean finished = performAnimation ( transition );
            if ( finished )
            {
                animating = false;
            }
            return finished;
        }
    }

    /**
     * Initial animation tick used for preparations
     */
    public abstract void prepareAnimation ( ImageTransition imageTransition );

    /**
     * Single animation tick
     */
    public abstract boolean performAnimation ( ImageTransition imageTransition );
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy