| /** |
| * Copyright (c) 2006-2015, JGraph Ltd |
| * Copyright (c) 2006-2015, Gaudenz Alder |
| */ |
| /** |
| * |
| * Class: mxAnimation |
| * |
| * Implements a basic animation in JavaScript. |
| * |
| * Constructor: mxAnimation |
| * |
| * Constructs an animation. |
| * |
| * Parameters: |
| * |
| * graph - Reference to the enclosing <mxGraph>. |
| */ |
| function mxAnimation(delay) |
| { |
| this.delay = (delay != null) ? delay : 20; |
| }; |
| |
| /** |
| * Extends mxEventSource. |
| */ |
| mxAnimation.prototype = new mxEventSource(); |
| mxAnimation.prototype.constructor = mxAnimation; |
| |
| /** |
| * Variable: delay |
| * |
| * Specifies the delay between the animation steps. Defaul is 30ms. |
| */ |
| mxAnimation.prototype.delay = null; |
| |
| /** |
| * Variable: thread |
| * |
| * Reference to the thread while the animation is running. |
| */ |
| mxAnimation.prototype.thread = null; |
| |
| /** |
| * Function: isRunning |
| * |
| * Returns true if the animation is running. |
| */ |
| mxAnimation.prototype.isRunning = function() |
| { |
| return this.thread != null; |
| }; |
| |
| /** |
| * Function: startAnimation |
| * |
| * Starts the animation by repeatedly invoking updateAnimation. |
| */ |
| mxAnimation.prototype.startAnimation = function() |
| { |
| if (this.thread == null) |
| { |
| this.thread = window.setInterval(mxUtils.bind(this, this.updateAnimation), this.delay); |
| } |
| }; |
| |
| /** |
| * Function: updateAnimation |
| * |
| * Hook for subclassers to implement the animation. Invoke stopAnimation |
| * when finished, startAnimation to resume. This is called whenever the |
| * timer fires and fires an mxEvent.EXECUTE event with no properties. |
| */ |
| mxAnimation.prototype.updateAnimation = function() |
| { |
| this.fireEvent(new mxEventObject(mxEvent.EXECUTE)); |
| }; |
| |
| /** |
| * Function: stopAnimation |
| * |
| * Stops the animation by deleting the timer and fires an <mxEvent.DONE>. |
| */ |
| mxAnimation.prototype.stopAnimation = function() |
| { |
| if (this.thread != null) |
| { |
| window.clearInterval(this.thread); |
| this.thread = null; |
| this.fireEvent(new mxEventObject(mxEvent.DONE)); |
| } |
| }; |