javauis/m2g_qt/javasrc/javax/microedition/m2g/SVGAnimator.java
author hgs
Fri, 29 Oct 2010 11:49:32 +0300
changeset 87 1627c337e51e
parent 80 d6dafc5d983f
permissions -rw-r--r--
v2.2.21_1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
80
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     1
/*
87
1627c337e51e v2.2.21_1
hgs
parents: 80
diff changeset
     2
* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
80
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     3
* All rights reserved.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     8
*
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     9
* Initial Contributors:
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    11
*
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    12
* Contributors:
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    13
*
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    14
* Description:
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    15
*
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    16
*/
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    17
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    18
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    19
package javax.microedition.m2g;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    20
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    21
import com.nokia.microedition.m2g.M2GSVGAnimator;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    22
import org.eclipse.swt.widgets.*;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    23
import org.eclipse.swt.widgets.Display;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    24
import com.nokia.microedition.m2g.M2GSVGeSWTAnimator;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    25
/**
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    26
 * The <code>SVGAnimator</code> class handles automatic rendering of updates and
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    27
 * animations in an <code>SVGImage</code> to a target user interface (UI) component.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    28
 *
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    29
 * The target component type depends on the Java profile this specification is
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    30
 * implemented on, as described in the <code>createAnimator</code> and
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    31
 * <code>getTargetComponent</code> methods documentation.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    32
 *
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    33
 * There are two types of rendering updates the <code>SVGAnimator</code> handles:
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    34
 *
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    35
 * <ul>
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    36
 *   <li><b>Animation Updates.</b> The <code>SVGAnimator</code> can run animations
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    37
 *       and automatically and periodically refreshes its rendering to
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    38
 *       reflect the effect of animations.</li>
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    39
 *   <li><b>SVGImage Updates.</b> The <code>SVGAnimator</code> updates its rendering
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    40
 *       following alterations of the associated <code>SVGImage</code>,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    41
 *       for example if the position of one of the graphical elements is
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    42
 *       modified by an API call.</li>
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    43
 * </ul>
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    44
 *
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    45
 * An <code>SVGAnimator</code> instance can be in one of the following states:
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    46
 * <ul>
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    47
 *   <li><b>Stopped</b>. This is the initial state. The <code>SVGAnimator</code>
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    48
 *       performs no rendering updates. <br/>
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    49
 *       Possible transitions:
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    50
 *       <ul>
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    51
 *          <li>To the <i>playing</i> state, with the <code>play</code> method.</li>
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    52
 *       </ul>
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    53
 *       </li>
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    54
 *
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    55
 *   <li><b>Playing</b>. This is the typical state for an
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    56
 *   <code>SVGAnimator</code>.  In that state, the <code>SVGAnimator</code>
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    57
 *   performs both Animation and SVGImage updates.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    58
 *
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    59
 *   While there are active animations,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    60
 *   the animator updates the rendering at a rate not faster than the one
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    61
 *   defined by the <code>setTimeIncrement</code> method. If SVGImage updates are made
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    62
 *   (e.g., with calls to the <code>SVGElement</code>
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    63
 *   <code>setTrait</code> method, see examples), the rendering is updated at the time of
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    64
 *   the next animation rendering.<br />
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    65
 *
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    66
 *   When there are no active animations, the animator will update the rendering
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    67
 *   after each <code>Runnable</code> passed to the <code>invokeLater</code> or
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    68
 *   <code>invokeAndWait</code> methods has finished executing.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    69
 *   <br/>
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    70
 *       Possible transitions:
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    71
 *       <ul>
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    72
 *          <li>To the <i>stopped</i> state, with the <code>stop</code> method.</li>
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    73
 *          <li>To the <i>paused</i> state, with the <code>pause</code> method.</li>
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    74
 *       </ul>
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    75
 *   </li>
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    76
 *
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    77
 *   <li><b>Paused</b>. When in that state, the <code>SVGAnimator</code> only
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    78
 *   performs SVGImage updates rendering. The animator no longer automatically
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    79
 *   advances the SVG document's current time, so rendering reflects the animation
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    80
 *   at the document's current time. Note that a change to the document's current
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    81
 *   time while in the <i>paused</i> state will trigger a new rendering for the
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    82
 *   new current time.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    83
 *   <br/>
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    84
 *       Possible transitions:
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    85
 *       <ul>
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    86
 *          <li>To the <i>stopped</i> state, with the <code>stop</code> method.</li>
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    87
 *          <li>To the <i>playing</i> state, with the <code>play</code> method.</li>
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    88
 *       </ul>
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    89
 *   </li>
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    90
 * </ul>
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    91
 *
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    92
 * <b>Code example:</b><br />
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    93
 * <pre>
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    94
 * // Create an SVGAnimator
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    95
 * SVGImage map = ...; // See the SVGImage documentation.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    96
 *
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    97
 * SVGAnimator svgAnimator = SVGAnimator.createAnimator(map);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    98
 *
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    99
 * // Display the associated SVGAnimator component.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   100
 * // Depends on the platform.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   101
 *
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   102
 * // =============== AWT Example ===============
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   103
 * Panel panel = ....;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   104
 * panel.add((Component) svgAnimator.getTargetComponent());
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   105
 * ...
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   106
 *
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   107
 * // =============== MIDP Example ===============
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   108
 * Canvas svgCanvas = (Canvas) svgAnimator.getTargetComponent());
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   109
 * ...
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   110
 *
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   111
 * // Start rendering animations.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   112
 * svgAnimator.play();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   113
 * ....
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   114
 * class MapRunnable implements Runnable {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   115
 *    public void run() {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   116
 *        // Perform map updates based on current
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   117
 *        // traffic information.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   118
 *        SVGElement statusRect
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   119
 *             = map.getDocument().getElementById("statusRect");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   120
 *
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   121
 *        // Reflect that traffic status.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   122
 *        statusRect.setRGBTrait(...); // See setRGBTrait documentation.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   123
 *    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   124
 * }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   125
 *
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   126
 * Runnable mapUpdates = new MapRunnable();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   127
 * ....
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   128
 *
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   129
 * while (someLoopCondition) {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   130
 *     if(hasMapUpdate) {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   131
 *         svgAnimator.invokeAndWait(mapUpdates);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   132
 *     }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   133
 * }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   134
 * </pre>
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   135
 */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   136
public abstract class SVGAnimator
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   137
{
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   138
    /**
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   139
     * This method creates a new <code>SVGAnimator</code> for the specified SVGImage.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   140
     *
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   141
     * @param svgImage the <code>SVGImage</code> this animator should render.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   142
     * @return a new <code>SVGAnimator</code> instance.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   143
     * @throws NullPointerException if <code>svgImage</code> is null.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   144
     */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   145
87
1627c337e51e v2.2.21_1
hgs
parents: 80
diff changeset
   146
    public static SVGAnimator createAnimator(SVGImage svgImage)
80
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   147
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   148
        SVGAnimator tempAnimator = null;
87
1627c337e51e v2.2.21_1
hgs
parents: 80
diff changeset
   149
1627c337e51e v2.2.21_1
hgs
parents: 80
diff changeset
   150
        tempAnimator=M2GSVGAnimator.buildAnimator(svgImage);
80
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   151
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   152
        return tempAnimator;
87
1627c337e51e v2.2.21_1
hgs
parents: 80
diff changeset
   153
    }
1627c337e51e v2.2.21_1
hgs
parents: 80
diff changeset
   154
80
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   155
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   156
    /**
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   157
     * This method creates a new <code>SVGAnimator</code> for the specified SVGImage.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   158
     *
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   159
     * The following components types must be supported:
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   160
     *
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   161
     * <ul>
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   162
     * <li> "javax.microedition.lcdui.Canvas" on profiles supporting LCDUI</li>
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   163
     * <li> "java.awt.Component" on profiles supporting AWT</li>
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   164
     * </ul>
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   165
     *
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   166
     * On platforms that support the Swing UI component framework, the
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   167
     * "javax.swing.JComponent" string may be used to request a Swing component.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   168
     *
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   169
     * @param svgImage the <code>SVGImage</code> this animator should render.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   170
     * @param componentBaseClass the desired base class for the component associated
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   171
     *        with the animator. This is used when the platform this specification
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   172
     *        is implemented on supports multiple UI component frameworks. If
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   173
     *        componentBaseClass is null, this is equivalent to invoking the
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   174
     *        <code>createAnimator</code> method with the svgImage parameter only.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   175
     * @return a new <code>SVGAnimator</code> instance.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   176
     * @throws NullPointerException if <code>svgImage</code> is null.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   177
     * @throws IllegalArgumentException if the requested
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   178
     *         <code>componentBaseClass</code> is not supported by the
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   179
     *         implementation.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   180
     */
87
1627c337e51e v2.2.21_1
hgs
parents: 80
diff changeset
   181
1627c337e51e v2.2.21_1
hgs
parents: 80
diff changeset
   182
    public static SVGAnimator createAnimator(SVGImage svgImage,java.lang.String componentBaseClass)
80
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   183
    {
87
1627c337e51e v2.2.21_1
hgs
parents: 80
diff changeset
   184
        SVGAnimator tempAnimator = null;
80
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   185
87
1627c337e51e v2.2.21_1
hgs
parents: 80
diff changeset
   186
        if (componentBaseClass == null)
1627c337e51e v2.2.21_1
hgs
parents: 80
diff changeset
   187
        {
1627c337e51e v2.2.21_1
hgs
parents: 80
diff changeset
   188
            tempAnimator = createAnimator(svgImage);
1627c337e51e v2.2.21_1
hgs
parents: 80
diff changeset
   189
            return tempAnimator;
1627c337e51e v2.2.21_1
hgs
parents: 80
diff changeset
   190
        }
1627c337e51e v2.2.21_1
hgs
parents: 80
diff changeset
   191
1627c337e51e v2.2.21_1
hgs
parents: 80
diff changeset
   192
        else if (componentBaseClass == "org.eclipse.swt.widgets.Control")
1627c337e51e v2.2.21_1
hgs
parents: 80
diff changeset
   193
        {
80
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   194
            tempAnimator=M2GSVGeSWTAnimator.buildAnimator(svgImage);
87
1627c337e51e v2.2.21_1
hgs
parents: 80
diff changeset
   195
        }
1627c337e51e v2.2.21_1
hgs
parents: 80
diff changeset
   196
1627c337e51e v2.2.21_1
hgs
parents: 80
diff changeset
   197
        else if (componentBaseClass == "javax.microedition.lcdui.Canvas")
1627c337e51e v2.2.21_1
hgs
parents: 80
diff changeset
   198
        {
1627c337e51e v2.2.21_1
hgs
parents: 80
diff changeset
   199
            tempAnimator=M2GSVGAnimator.buildAnimator(svgImage);
1627c337e51e v2.2.21_1
hgs
parents: 80
diff changeset
   200
            return tempAnimator;
1627c337e51e v2.2.21_1
hgs
parents: 80
diff changeset
   201
        }
1627c337e51e v2.2.21_1
hgs
parents: 80
diff changeset
   202
1627c337e51e v2.2.21_1
hgs
parents: 80
diff changeset
   203
        else
1627c337e51e v2.2.21_1
hgs
parents: 80
diff changeset
   204
        {
1627c337e51e v2.2.21_1
hgs
parents: 80
diff changeset
   205
            throw new IllegalArgumentException();
1627c337e51e v2.2.21_1
hgs
parents: 80
diff changeset
   206
        }
80
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   207
        return tempAnimator;
87
1627c337e51e v2.2.21_1
hgs
parents: 80
diff changeset
   208
    }
80
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   209
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   210
    /**
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   211
     * The type of target component associated with the animator depends on the
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   212
     * Java profile this specification is implemented on:
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   213
     *
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   214
     * <ul>
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   215
     * <li> javax.microedition.lcdui.Canvas on profiles supporting LCDUI</li>
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   216
     * <li> java.awt.Component on profiles supporting AWT</li>
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   217
     * </ul>
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   218
     * @return target the target component associated with the animator.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   219
     * @see #createAnimator
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   220
     */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   221
    public abstract Object getTargetComponent();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   222
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   223
    /**
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   224
     * Returns the current time increment used for animation rendering. The
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   225
     * SVGAnimator increments the SVG document's current time by this amount
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   226
     * between each rendering.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   227
     *
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   228
     * @return the current time increment used for animation rendering. The default
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   229
     *         value is 0.1 (100 milliseconds)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   230
     * @see #setTimeIncrement
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   231
     */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   232
    public abstract float getTimeIncrement();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   233
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   234
    /**
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   235
     * Invoke the input Runnable in the Document update thread and return after
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   236
     * the Runnable has completed.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   237
     *
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   238
     * @param runnable the new Runnable to invoke.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   239
     * @throws java.lang.InterruptedException if the current thread is waiting,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   240
     * sleeping, or otherwise paused for a long time and another thread
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   241
     * interrupts it.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   242
     * @throws NullPointerException if <code>runnable</code> is null.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   243
     * @throws IllegalStateException if the animator is in the <i>stopped</i> state.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   244
     */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   245
    public abstract void invokeAndWait(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   246
        Runnable runnable) throws InterruptedException;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   247
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   248
    /**
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   249
     * Schedule the input Runnable for execution in the update thread at a later time.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   250
     *
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   251
     * @param runnable the new Runnable to execute in the Document's update
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   252
     * thread when time permits.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   253
     * @throws NullPointerException if <code>runnable</code> is null.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   254
     * @throws IllegalStateException if the animator is in the <i>stopped</i> state.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   255
     */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   256
    public abstract void invokeLater(java.lang.Runnable runnable);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   257
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   258
    /**
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   259
     * Transitions this <code>SVGAnimator</code> to the <i>paused</i> state.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   260
     * The <code>SVGAnimator</code> stops advancing the document's current time
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   261
     * automatically (see the SVGDocument's setCurrentTime method). As a result,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   262
     * animations are paused until another call to the <code>play</code> method
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   263
     * is made, at which points animations resume from the document's current
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   264
     * time. SVGImage updates (through API calls) trigger a rendering update
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   265
     * while the <code>SVGAnimator</code> is in the <i>paused</i> state.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   266
     *
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   267
     * @throws IllegalStateException if the animator is not in the <i>playing</i>
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   268
     *         state.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   269
     */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   270
    public abstract void pause();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   271
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   272
    /**
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   273
     * Transitions this <code>SVGAnimator</code> to the <i>playing</i>
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   274
     * state. While in the <i>playing</i> state, both Animation and SVGImage
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   275
     * updates trigger rendering updates. Note that a change to the document's
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   276
     * current time while in the playing state will cause the animator to seek
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   277
     * to the new time, and continue to play animations forward.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   278
     *
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   279
     * @throws IllegalStateException if the animator is not currently in
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   280
     *         the <i>stopped</i> or <i>paused</i> state.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   281
     */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   282
    public abstract void play();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   283
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   284
    /**
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   285
     * Sets the time increment to use for animation rendering.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   286
     *
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   287
     * @param timeIncrement the minimal time that should ellapse between frame
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   288
     * rendering. In seconds. Should be greater than zero.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   289
     * @throws IllegalArgumentException if timeIncrement is less than or equal to
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   290
     *         zero.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   291
     * @see #getTimeIncrement
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   292
     */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   293
    public abstract void setTimeIncrement(float timeIncrement);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   294
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   295
    /**
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   296
     * Sets the <code>SVGEventListener</code> associated with this
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   297
     * <code>SVGAnimator</code>.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   298
     *
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   299
     * @param svgEventListener the new SVGEventListener which will receive
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   300
     *        events forwarded by this <code>SVGAnimator</code>. May be null,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   301
     *        in which case events are not forwarded by the <code>SVGAnimator</code>.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   302
     */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   303
    public abstract void setSVGEventListener(SVGEventListener svgEventListener);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   304
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   305
    /**
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   306
     * Transitions this <code>SVGAnimator</code> to the <i>stopped</i> state.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   307
     * This causes the <code>SVGAnimator</code> to stop advancing the document's
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   308
     * current time automatically, and no rendering updates are performed while
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   309
     * in <i>stopped</i> state. A call to the <i>play</i> method will cause
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   310
     * the animations to resume from the document's current time.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   311
     *
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   312
     * @throws IllegalStateException if the animator is not in the <i>playing</i>
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   313
     *         or <i>paused</i> state.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   314
     */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   315
    public abstract void stop();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   316
}