Package prefuse.action

Source Code of prefuse.action.Action

package prefuse.action;

import java.util.logging.Logger;

import prefuse.Visualization;
import prefuse.activity.Activity;

/**
* <p>Actions are building blocks that perform any number of operations on a
* Visualization, typically processing VisualItems to set various visual
* attributes. This class is a base implementation for Action instances.
* Developers can subclass this class and implement the <code>run</code> method
* to create their own custom Actions.</p>
*
* <p>After instantiating an Action, you should register it with a particular
* Visualization before running it. Use the
* {@link prefuse.Visualization#putAction(String, Action)} to do this. This
* will ensure that the Action is configured to use that Visualization. If
* an Action is part of an {@link ActionList} or {@link ActionSwitch}, it is
* sufficient to only register that CompositeAction with the Visualization
* -- all contained Action instances will be configured appropriately. You
* can then run the Actions using the {@link prefuse.Visualization#run(String)}
* method and other similar methods of the {@link prefuse.Visualization} class.
* </p>
*
* <p>As a subclass of Activity, Actions can be of two kinds.
* <i>Run-once</i> action lists have
* a duration value of zero, and simply run once when scheduled. Actions
* with a duration greater than zero can be executed multiple times, waiting
* a specified step time between each execution until the activity has run for
* its full duration. A duration of Activity.INFINITE will result in a
* continually re-running Action.</p>
*
* @author <a href="http://jheer.org">jeffrey heer</a>
*/
public abstract class Action extends Activity {
   
    private final static Logger s_logger
        = Logger.getLogger(Action.class.getName());
   
    /** A reference to the visualization processed by this Action. */
    protected Visualization m_vis;
   
    /**
     * Creates an action instance with zero duration. This Action will only
     * run once if invoked.
     */
    public Action() {
        this(null);
    }
   
    /**
     * Create a new Action with a specified duration.
     * @param duration the Action duration in milliseconds
     */
    public Action(long duration) {
        super(duration, Activity.DEFAULT_STEP_TIME);
    }
   
    /**
     * Create a new Action with a specified duration and step time.
     * @param duration the Action duration in milliseconds
     * @param stepTime the time to wait between invocation of the Action
     */
    public Action(long duration, long stepTime) {
        super(duration, stepTime);
    }
   
    /**
     * Create a new Action with a specified Visualization and zero duration.
     * @param vis the Visualization this Action should process. If this
     * Action is registered with another Visualization, this value will
     * be overwritten.
     */
    public Action(Visualization vis) {
        this(vis, 0);
    }
   
    /**
     * Create a new Action with a specified Visualization and duration.
     * @param vis the Visualization this Action should process. If this
     * Action is registered with another Visualization, this value will
     * be overwritten.
     * @param duration the Action duration in milliseconds
     */
    public Action(Visualization vis, long duration) {
        super(duration, Activity.DEFAULT_STEP_TIME);
        m_vis = vis;
    }
   
    /**
     * Create a new Action with a specified Visualization, duration and
     * step time.
     * @param vis the Visualization this Action should process. If this
     * Action is registered with another Visualization, this value will
     * be overwritten.
     * @param duration the Action duration in milliseconds
     * @param stepTime the time to wait between invocation of the Action
     */
    public Action(Visualization vis, long duration, long stepTime) {
        super(duration, stepTime);
        m_vis = vis;
    }
   
    // ------------------------------------------------------------------------
   
    /**
     * Runs this Action, triggering whatever processing this Action performs.
     * Subclass this method to create custom Actions.
     * @param frac the fraction of this Action's duration that has elapsed.
     */
    public abstract void run(double frac);

    /**
     * Runs this Action (as an Activity). Called by the Activity super-class.
     * @see prefuse.activity.Activity#run(long)
     */
    protected void run(long elapsedTime) {
        Visualization vis = getVisualization();
        if ( vis != null ) {
            synchronized (vis) {
                run(getPace(elapsedTime));
            }
        } else {
            s_logger.info("Running unsynchronized Action");
            run(getPace(elapsedTime));
        }
    }
   
    /**
     * Return the Visualization processed by this Action.
     * @return the {@link prefuse.Visualization} instance.
     */
    public Visualization getVisualization() {
        return m_vis;
    }
   
    /**
     * Set the Visualization processed by this Action.
     * @return the {@link prefuse.Visualization} to process.
     */
    public void setVisualization(Visualization vis) {
        m_vis = vis;
    }

} // end of class Action
TOP

Related Classes of prefuse.action.Action

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.