javauis/m2g_qt/javasrc/com/nokia/microedition/m2g/M2GSVGImage.java
author hgs
Fri, 15 Oct 2010 12:29:39 +0300
changeset 80 d6dafc5d983f
child 87 1627c337e51e
permissions -rw-r--r--
v2.2.19_1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
80
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     1
/*
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     2
* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies).
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
package com.nokia.microedition.m2g;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    19
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    20
import java.io.ByteArrayInputStream;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    21
import java.io.IOException;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    22
import java.io.InputStream;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    23
import javax.microedition.m2g.ExternalResourceHandler;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    24
import javax.microedition.m2g.SVGImage;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    25
import org.w3c.dom.Document;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    26
import org.w3c.dom.svg.SVGElement;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    27
import org.w3c.dom.DOMException;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    28
import com.nokia.microedition.m2g.connection.*;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    29
import com.nokia.mj.impl.utils.Logger;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    30
import com.nokia.mj.impl.utils.StreamUtils;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    31
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    32
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    33
/*
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    34
 * Image implementation
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    35
 */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    36
public class M2GSVGImage
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    37
        extends SVGImage
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    38
{
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    39
    //--------------------------------------------------
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    40
    // STATIC CONSTANTS
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    41
    //--------------------------------------------------
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    42
    /* Optimization: static finals changed to local variables
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    43
    private static final String NULL_TYPE_ESTR =
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    44
      "The type is null.";
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    45
    private static final String ILLEGAL_VALUS_ESTR =
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    46
      "The x or y values are negative.";
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    47
    private static final String EVENT_TYPE_NOT_SUPPORTED_ESTR =
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    48
      "The event type is not supported.";
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    49
    private static final String INVALID_ELEMENT_ESTR =
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    50
      "Invalid element.";
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    51
    public static final String URI_IS_NULL_ESTR =
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    52
      "The URI is null.";
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    53
    */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    54
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    55
    //--------------------------------------------------
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    56
    //  VARIABLES
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    57
    //--------------------------------------------------
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    58
    M2GDocument iDocument = null;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    59
    private SVGElement iFocusedNode = null;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    60
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    61
    //--------------------------------------------------
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    62
    //  METHODS
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    63
    //--------------------------------------------------
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    64
    /**
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    65
     * Constructor
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    66
     */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    67
    M2GSVGImage()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    68
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    69
        super();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    70
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    71
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    72
    /**
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    73
     * @see javax.microedition.m2g.SVGImage#activate()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    74
     */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    75
    public void activate()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    76
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    77
        SVGElement node = iFocusedNode;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    78
        while (node != null)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    79
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    80
            ((M2GDocument)getDocument()).handleEvent(new M2GEvent(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    81
                        M2GSVGConstants.EVENT_ACTIVATE,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    82
                        node,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    83
                        M2GEvent.EVENT_TARGET));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    84
            node = (SVGElement)node.getParentNode();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    85
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    86
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    87
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    88
    /**
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    89
     * @see javax.microedition.m2g.SVGImage#dispatchMouseEvent()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    90
     */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    91
    public void dispatchMouseEvent(String type, int x, int y)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    92
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    93
        if (type == null || type.equals(""))
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    94
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    95
            Logger.ELOG(Logger.EJavaUI, "dispatchMouseEvent() NullPointerException");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    96
            throw new NullPointerException(/*SF*/"The type is null."/*SF*/);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    97
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    98
        if (x < 0 || y < 0)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    99
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   100
            Logger.ELOG(Logger.EJavaUI,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   101
                        "dispatchMouseEvent() IllegalArgumentException");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   102
            throw new IllegalArgumentException(/*SF*/"The x or y values are negative."/*SF*/);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   103
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   104
        if (!type.equals(M2GSVGConstants.EVENT_CLICK))
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   105
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   106
            Logger.ELOG(Logger.EJavaUI,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   107
                        "dispatchMouseEvent() DOMException - only click event is supported");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   108
            throw new DOMException(DOMException.NOT_SUPPORTED_ERR, /*SF*/"The event type is not supported."/*SF*/);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   109
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   110
        int elementHandle = _dispatchMouseEvent(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   111
                                iDocument.getNativeSVGProxyHandle(),
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   112
                                iDocument.getHandle(), x, y);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   113
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   114
        SVGElement targetElement = M2GSVGElement.buildElement(elementHandle, iDocument);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   115
        SVGElement usedFromElement = null;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   116
        if ((targetElement != null) && ((M2GSVGElement)targetElement).isUsed())
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   117
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   118
            usedFromElement = ((M2GSVGElement)((M2GSVGElement)targetElement).getUsedFromElement());
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   119
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   120
        if (targetElement instanceof M2GSVGElement)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   121
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   122
            iFocusedNode = targetElement;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   123
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   124
        while (targetElement != null)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   125
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   126
            // click event
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   127
            iDocument.handleEvent(new M2GEvent(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   128
                                      M2GSVGConstants.EVENT_CLICK, targetElement, M2GEvent.EVENT_TARGET));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   129
            // DOMActivate event
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   130
            iDocument.handleEvent(new M2GEvent(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   131
                                      M2GSVGConstants.EVENT_ACTIVATE, targetElement, M2GEvent.EVENT_TARGET));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   132
            // Gets parent node
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   133
            targetElement = (SVGElement)targetElement.getParentNode();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   134
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   135
        // The "target element" is only a clone. The "used from element" is the actual element.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   136
        if (usedFromElement != null)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   137
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   138
            iDocument.handleEvent(new M2GEvent(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   139
                                      M2GSVGConstants.EVENT_CLICK, usedFromElement, M2GEvent.WRAPPED_EVENT_TARGET));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   140
            iDocument.handleEvent(new M2GEvent(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   141
                                      M2GSVGConstants.EVENT_ACTIVATE, usedFromElement, M2GEvent.WRAPPED_EVENT_TARGET));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   142
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   143
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   144
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   145
    /**
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   146
     * @see javax.microedition.m2g.SVGImage#focusOn()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   147
     */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   148
    public void focusOn(SVGElement element)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   149
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   150
        SVGElement tempNode = element;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   151
        // If focusOn is called on the same element, do not focus out.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   152
        boolean callFocusOut =
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   153
            (((iFocusedNode != null) && (iFocusedNode == element ? false : true)) || ((iFocusedNode != null) && (element == null)));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   154
        //Checking to see if the element is hooked into the tree.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   155
        if (element != null)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   156
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   157
            tempNode = element;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   158
            while (tempNode != null)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   159
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   160
                if ((tempNode.getLocalName()).equals(M2GSVGConstants.ROOT_SVG_ELEMENT_NAME))
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   161
                {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   162
                    // Breaks if tempNode is root svg
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   163
                    break;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   164
                }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   165
                tempNode = (SVGElement)tempNode.getParentNode();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   166
            }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   167
            // This indicates that the element does not contain a root element,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   168
            // therefore does not belong to the document.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   169
            if (tempNode == null)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   170
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   171
                Logger.ELOG(Logger.EJavaUI, "focusOn() - DOMException invalid element");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   172
                throw new DOMException(DOMException.WRONG_DOCUMENT_ERR, /*SF*/"Invalid element."/*SF*/);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   173
            }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   174
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   175
        // Focus out from the current focused node and its parents
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   176
        if (callFocusOut)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   177
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   178
            if (iFocusedNode instanceof M2GSVGElement)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   179
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   180
                _focusOut(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   181
                    ((M2GSVGElement)iFocusedNode).getNativeSVGProxyHandle(),
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   182
                    ((M2GSVGElement)iFocusedNode).getDocument().getHandle(),
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   183
                    ((M2GSVGElement)iFocusedNode).getHandle());
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   184
            }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   185
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   186
            // Focus out the current focused node and its parents
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   187
            tempNode = iFocusedNode;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   188
            while (tempNode != null)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   189
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   190
                iDocument.handleEvent(new M2GEvent(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   191
                                          M2GSVGConstants.EVENT_FOCUS_OUT, tempNode, M2GEvent.EVENT_TARGET));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   192
                tempNode = (SVGElement)tempNode.getParentNode();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   193
            }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   194
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   195
        //focus in for element and its parents
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   196
        if ((element != null) && (element instanceof M2GSVGElement))
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   197
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   198
            _focusOn(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   199
                ((M2GSVGElement)element).getNativeSVGProxyHandle(),
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   200
                ((M2GSVGElement)element).getDocument().getHandle(),
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   201
                ((M2GSVGElement)element).getHandle() );
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   202
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   203
        tempNode = element;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   204
        while (tempNode != null)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   205
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   206
            iDocument.handleEvent(new M2GEvent(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   207
                                      M2GSVGConstants.EVENT_FOCUS_IN, tempNode, M2GEvent.EVENT_TARGET));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   208
            tempNode = (SVGElement)tempNode.getParentNode();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   209
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   210
        // Sets the new focus
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   211
        iFocusedNode = element;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   212
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   213
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   214
    /**
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   215
     * @see javax.microedition.m2g.SVGImage#getDocument()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   216
     */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   217
    public Document getDocument()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   218
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   219
        return iDocument;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   220
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   221
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   222
    /**
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   223
     * @see javax.microedition.m2g.ScalableImage#getViewportHeight()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   224
     */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   225
    public synchronized int getViewportHeight()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   226
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   227
        return iDocument.getViewportHeight();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   228
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   229
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   230
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   231
    /*
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   232
     * @see javax.microedition.m2g.ScalableImage#getViewportWidth()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   233
     */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   234
    public synchronized int getViewportWidth()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   235
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   236
        return iDocument.getViewportWidth();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   237
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   238
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   239
    /**
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   240
     * @see javax.microedition.m2g.SVGImage#incrementTime()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   241
     */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   242
    public void incrementTime(float seconds)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   243
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   244
        ((M2GSVGSVGElement)iDocument.getDocumentElement()).incrementTime(seconds);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   245
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   246
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   247
    /**
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   248
     * @see javax.microedition.m2g.ScalableImage#requestCompleted()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   249
     */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   250
    public void requestCompleted(String uri, InputStream resourceData) throws IOException
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   251
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   252
        if (uri == null)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   253
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   254
            Logger.ELOG(Logger.EJavaUI,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   255
                        "requestCompleted() throw NullPointerException");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   256
            throw new NullPointerException(/*SF*/"The URI is null."/*SF*/);
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
        if (resourceData != null)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   260
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   261
            byte receiveData[] = StreamUtils.readBytesFromStream(resourceData, -1);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   262
            iDocument.requestCompleted(uri, receiveData);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   263
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   264
        else
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   265
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   266
            // Indicates that the requested resource could not be
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   267
            // fetched by the ResourceHandler or application,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   268
            // and in this event the SVG engine will not make further attempts
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   269
            // to load this resource.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   270
            // Pass the null to the native side so it can delete the image
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   271
            iDocument.requestCompleted(uri, null);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   272
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   273
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   274
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   275
    /**
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   276
     * Set document
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   277
     * @param aDocument -
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   278
     */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   279
    public void setDocument(M2GDocument aDocument)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   280
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   281
        iDocument = aDocument;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   282
    }
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
     * @see javax.microedition.m2g.ScalableImage#setViewportHeight()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   286
     */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   287
    public synchronized void setViewportHeight(int height)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   288
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   289
        iDocument.setViewportHeight(height);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   290
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   291
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   292
    /**
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   293
     * @see javax.microedition.m2g.ScalableImage#setViewportWidth()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   294
     */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   295
    public synchronized void setViewportWidth(int width)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   296
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   297
        iDocument.setViewportWidth(width);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   298
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   299
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   300
    //--------------------------------------------------
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   301
    //  STATIC METHODS
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   302
    //--------------------------------------------------
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   303
    /*
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   304
     * @see javax.microedition.m2g.SVGImage#createEmptyImage()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   305
     */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   306
    public static M2GSVGImage buildEmptyImage(ExternalResourceHandler handler)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   307
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   308
        try
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   309
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   310
            return M2GSVGImage.buildImage(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   311
                       new ByteArrayInputStream(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   312
                           M2GSVGConstants.getInstance().iEmptySvgDocument.getBytes()),
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   313
                       handler, null, null);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   314
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   315
        catch (IOException e)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   316
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   317
            Logger.ELOG(Logger.EJavaUI, "M2GSVGImage: buildEmptyImage - IOEception: " + e.toString());
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   318
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   319
        return null;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   320
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   321
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   322
    /**
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   323
     * Build svg image
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   324
     * @see javax.microedition.m2g.ScalableImage#createImage()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   325
     * @param stream Plain text stream that contains svg data
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   326
     * @param handler External resource handler. If null then default
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   327
     * external resource handler is used.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   328
     * @param baseUrl A base url from where a document is downloaded.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   329
     * @param suffixUrl The suffix url according to the DRM opening mode of the SVG file
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   330
     * Null if it's not known.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   331
     */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   332
    public static M2GSVGImage buildImage(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   333
        InputStream stream,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   334
        ExternalResourceHandler handler,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   335
        String baseUrl,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   336
        String suffixUrl) throws IOException
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   337
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   338
        if (stream == null)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   339
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   340
            throw new NullPointerException();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   341
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   342
				
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   343
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   344
        String strData = new String(StreamUtils.readBytesFromStream(stream, -1));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   345
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   346
        // Default handler is used if the specified handler is null
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   347
        if (handler == null)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   348
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   349
            handler = M2GConnectionFactory.getExternalResourceHandler(null);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   350
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   351
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   352
        // Creates and setups svg image
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   353
        M2GSVGImage image = new M2GSVGImage();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   354
        
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   355
        M2GDocument document = M2GDocument.buildDocument(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   356
                                   image,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   357
                                   baseUrl,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   358
                                   suffixUrl,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   359
                                   strData,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   360
                                   handler);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   361
        // Checks document validity
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   362
				
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   363
        image.setDocument(document);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   364
        
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   365
        if (handler != null)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   366
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   367
            // Gets size of external resources
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   368
            int itemCount = _getExternalListSize(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   369
                                document.getNativeSVGProxyHandle(),
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   370
                                document.getHandle());
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   371
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   372
            // Loops through external items
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   373
            for (int index = 0; index < itemCount; index++)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   374
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   375
                String url = _getExternalListItem(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   376
                                 document.getNativeSVGProxyHandle(),
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   377
                                 document.getHandle(),
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   378
                                 index);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   379
                // Calls an external implementation of the resource handler
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   380
                if ((url != null) && !(url.equals("")))
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   381
                {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   382
                    document.invokeResourceHandler(url);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   383
                }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   384
            }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   385
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   386
        
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   387
        // initialise the viewport
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   388
        _initViewport(document.getNativeSVGProxyHandle(),
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   389
                      document.getHandle());
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   390
        
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   391
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   392
        return image;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   393
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   394
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   395
    /**
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   396
     * @see javax.microedition.m2g.ScalableImage#createImage()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   397
     */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   398
    public static M2GSVGImage buildImage(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   399
        String url, ExternalResourceHandler handler) throws IOException
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   400
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   401
        // Checks passed parameters
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   402
        if (url == null)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   403
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   404
            Logger.ELOG(Logger.EJavaUI,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   405
                        "M2GSVGImage: 2 buildImage() - url is null");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   406
            throw new NullPointerException();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   407
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   408
        if (url.length() == 0)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   409
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   410
            Logger.ELOG(Logger.EJavaUI,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   411
                        "M2GSVGImage: 2 buildImage() - url is empty");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   412
            throw new IllegalArgumentException();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   413
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   414
        // Default handler is used if the specified handler is null
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   415
        if (handler == null)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   416
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   417
            handler = M2GConnectionFactory.getExternalResourceHandler(url);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   418
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   419
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   420
        // Open the url and get input stream
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   421
        M2GSVGImage image = null;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   422
        M2GConnectionProxy connectionProxy = null;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   423
        try
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   424
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   425
            connectionProxy = M2GConnectionFactory.create(url);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   426
            image = M2GSVGImage.buildImage(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   427
                        connectionProxy.getInputStream(),
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   428
                        handler,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   429
                        connectionProxy.getBaseUrl(),
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   430
                        connectionProxy.getSuffixUrl());
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   431
            // Set connection policy
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   432
            if (image != null)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   433
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   434
                Document doc = image.getDocument();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   435
                if (doc != null)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   436
                {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   437
                    ((M2GDocument)doc).setConnectionPolicy(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   438
                        connectionProxy.getConnectionPolicy());
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   439
                }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   440
            }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   441
            return image;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   442
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   443
        finally
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   444
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   445
            if (connectionProxy != null)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   446
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   447
                connectionProxy.close();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   448
                connectionProxy = null;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   449
            }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   450
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   451
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   452
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   453
    //--------------------------------------------------
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   454
    // NATIVE METHODS
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   455
    //--------------------------------------------------
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   456
    private native static int _dispatchMouseEvent(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   457
        int aSvgProxyHandle,int aDocumentHandle, 
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   458
        int aX, int aY);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   459
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   460
    private native static void _focusOn(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   461
        int aSvgProxyHandle,int aDocumentHandle, 
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   462
        int aSvgElementHandle);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   463
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   464
    private native static void _focusOut(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   465
        int aSvgProxyHandle,int aDocumentHandle, 
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   466
        int aSvgElementHandle);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   467
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   468
    native static int _getExternalListSize(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   469
         int aSvgProxyHandle, int aDocumentHandle);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   470
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   471
    native static String _getExternalListItem(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   472
        int aSvgProxyHandle, int aDocumentHandle,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   473
        int aIndex);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   474
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   475
    private native static void _initViewport(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   476
        int aSvgProxyHandle, int aDocumentHandle);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   477
}