javauis/m2g_qt/javasrc/com/nokia/microedition/m2g/M2GSVGElement.java
author hgs
Fri, 29 Oct 2010 11:49:32 +0300
changeset 87 1627c337e51e
parent 56 abc41079b313
permissions -rw-r--r--
v2.2.21_1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
56
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
     1
/*
87
1627c337e51e v2.2.21_1
hgs
parents: 56
diff changeset
     2
* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
56
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
     3
* All rights reserved.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
     8
*
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
     9
* Initial Contributors:
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    11
*
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    12
* Contributors:
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    13
*
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    14
* Description:
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    15
*
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    16
*/
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    17
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    18
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    19
package com.nokia.microedition.m2g;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    20
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    21
import org.w3c.dom.*;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    22
import org.w3c.dom.svg.*;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    23
import org.w3c.dom.events.*;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    24
import java.io.IOException;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    25
import org.eclipse.swt.widgets.*;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    26
import com.nokia.mj.impl.utils.Logger;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    27
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    28
public class M2GSVGElement extends M2GObject implements SVGElement
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    29
{
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    30
    //--------------------------------------------------
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    31
    // STATIC CONSTANTS
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    32
    //--------------------------------------------------
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    33
    // Error constants
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    34
    static final String TYPE_IS_NULL_ESTR =
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    35
        "The type is null.";
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    36
    static final String LISTENER_IS_NULL_ESTR =
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    37
        "The listener is null.";
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    38
    static final String CAPTURE_NOT_SUPPORTED_ESTR =
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    39
        "The capture phase is not supported in SVG Tiny.";
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    40
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    41
    //--------------------------------------------------
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    42
    // VARIABLES
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    43
    //--------------------------------------------------
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    44
    protected M2GDocument iDocument;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    45
    protected short iElementTypeId;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    46
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    47
    //--------------------------------------------------
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    48
    // METHODS
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    49
    //--------------------------------------------------
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    50
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    51
     * Constructor
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    52
     * @param aHandle is native element handle
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    53
     * @param aDocument is a reference to a document that owns this element.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    54
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    55
    M2GSVGElement(int aElementHandle, M2GDocument aDocument)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    56
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    57
        super(aElementHandle);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    58
        iDocument = aDocument;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    59
        doConstruct();
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    60
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    61
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    62
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    63
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    64
     * @see org.w3c.dom.events.EventTarget#addEventListener()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    65
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    66
    public void addEventListener(String type, EventListener listener, boolean useCapture)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    67
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    68
        if (type == null || type.equals(""))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    69
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    70
            throw new NullPointerException(TYPE_IS_NULL_ESTR);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    71
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    72
        if (listener == null)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    73
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    74
            throw new NullPointerException(LISTENER_IS_NULL_ESTR);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    75
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    76
        if (useCapture == true)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    77
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    78
            throw new DOMException(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    79
                DOMException.NOT_SUPPORTED_ERR,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    80
                CAPTURE_NOT_SUPPORTED_ESTR);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    81
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    82
        iDocument.register(this, type, listener);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    83
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    84
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    85
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    86
     * @see org.w3c.dom.Node#appendChild()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    87
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    88
    public Node appendChild(Node newChild)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    89
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    90
        // If refChild is null, newChild is inserted at the end of the list
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    91
        return insertBefore(newChild, null);  // will inform about DOM changes
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    92
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    93
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    94
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    95
     * Checks attribute validity
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    96
     * @param aAttributeTypeName
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    97
     * @return attribute's type id
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    98
     * @throws DOMException
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    99
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   100
    protected short check(String aAttributeTypeName) throws DOMException
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   101
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   102
        short attributeTypeId = M2GSVGConstants.AT_UNDEFINED;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   103
        if (aAttributeTypeName == null || aAttributeTypeName.equals(""))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   104
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   105
            Logger.ELOG(Logger.EJavaUI,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   106
                        "check() exception: " + /*SF*/"The trait is null."/*SF*/);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   107
            throw new DOMException(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   108
                DOMException.NOT_SUPPORTED_ERR,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   109
                /*SF*/"The trait is null."/*SF*/);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   110
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   111
        // Converts attribute's name
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   112
        attributeTypeId = M2GSVGConstants.parseAttributeTypeId(aAttributeTypeName);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   113
        // Checks that element has this attribute
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   114
        if (!M2GSVGConstants.checkElementAttribute(attributeTypeId, iElementTypeId))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   115
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   116
            Logger.ELOG(Logger.EJavaUI,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   117
                        "check() exception: " + /*SF*/"The trait is not supported on this element."/*SF*/);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   118
            throw new DOMException(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   119
                DOMException.NOT_SUPPORTED_ERR,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   120
                /*SF*/"The trait is not supported on this element."/*SF*/);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   121
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   122
        return attributeTypeId;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   123
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   124
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   125
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   126
     * @see com.nokia.microedition.m2g.M2GObject#doCheckValidity()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   127
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   128
    public boolean doCheckValidity()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   129
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   130
        try
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   131
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   132
            if (super.doCheckValidity() &&
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   133
                    (iDocument != null) &&
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   134
                    (iElementTypeId != M2GSVGConstants.EL_UNDEFINED))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   135
            {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   136
                return true;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   137
            }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   138
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   139
        catch (IOException e)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   140
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   141
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   142
        return false;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   143
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   144
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   145
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   146
     * @see com.nokia.microedition.m2g.M2GObject#doCleanup()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   147
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   148
    protected void doCleanup()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   149
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   150
        iDocument = null;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   151
        iElementTypeId = M2GSVGConstants.EL_UNDEFINED;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   152
        resetHandles();
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   153
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   154
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   155
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   156
     * @see com.nokia.microedition.m2g.M2GObject#doConstruct()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   157
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   158
    public void doConstruct()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   159
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   160
        // No need to register for finalization
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   161
        // super.doConstruct();
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   162
        iElementTypeId = _getElementTypeId(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   163
                             getNativeSVGProxyHandle(), getHandle());
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   164
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   165
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   166
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   167
     * Returns a document
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   168
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   169
    public M2GDocument getDocument()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   170
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   171
        return iDocument;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   172
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   173
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   174
    /*
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   175
     * Retuns element's type id
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   176
     * @return  element's type id
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   177
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   178
    public short getElementTypeId()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   179
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   180
        return iElementTypeId;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   181
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   182
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   183
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   184
     * @see org.w3c.dom.svg.SVGElement#getFirstElementChild()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   185
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   186
    public Element getFirstElementChild() throws DOMException
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   187
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   188
        // Get child element's handle
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   189
        int childHandle = _getFirstElementChild(
87
1627c337e51e v2.2.21_1
hgs
parents: 56
diff changeset
   190
                              getNativeSVGProxyHandle(), getHandle());
56
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   191
        if (M2GObject.checkHandle(childHandle))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   192
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   193
            return (Element)M2GSVGElement.buildElement(childHandle, iDocument);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   194
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   195
        return null;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   196
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   197
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   198
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   199
     * @see org.w3c.dom.svg.SVGElement#getFloatTrait()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   200
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   201
    public float getFloatTrait(String name) throws DOMException
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   202
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   203
        // Optimization: if(!getDocument().getConnectionPolicy().getAccessRight())
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   204
        if (!iDocument.iConnectionRight)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   205
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   206
            Logger.ELOG(Logger.EJavaUI, "getFloatTrait() - access rights failure");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   207
            throw new SecurityException(M2GSVGConstants.ACCESS_RIGHTS_ESTR);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   208
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   209
        short attributeTypeId = check(name);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   210
        if (!M2GSVGConstants.isGetFloatTraitAllowed(attributeTypeId))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   211
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   212
            throw new DOMException(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   213
                DOMException.TYPE_MISMATCH_ERR,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   214
                /*SF*/"Trait's computed value cannot be converted to a float."/*SF*/);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   215
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   216
        return _getFloatTrait(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   217
                   getNativeSVGProxyHandle(), getHandle(), attributeTypeId);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   218
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   219
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   220
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   221
     * @see org.w3c.dom.svg.SVGElement#getId()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   222
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   223
    public String getId()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   224
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   225
        return _getStringTrait(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   226
                   getNativeSVGProxyHandle(), getHandle(), M2GSVGConstants.AT_ID);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   227
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   228
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   229
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   230
     * @see org.w3c.dom.Node#getLocalName()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   231
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   232
    public String getLocalName()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   233
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   234
        // Optimization: if(!getDocument().getConnectionPolicy().getAccessRight())
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   235
        if (!iDocument.iConnectionRight)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   236
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   237
            Logger.ELOG(Logger.EJavaUI,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   238
                        "getLocalName() - access rights failure");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   239
            throw new SecurityException(M2GSVGConstants.ACCESS_RIGHTS_ESTR);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   240
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   241
        return M2GSVGConstants.parseElementTypeName(iElementTypeId);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   242
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   243
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   244
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   245
     * @see org.w3c.dom.svg.SVGElement#getMatrixTrait()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   246
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   247
    public SVGMatrix getMatrixTrait(String name)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   248
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   249
        // Optimization: if(!getDocument().getConnectionPolicy().getAccessRight())
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   250
        if (!iDocument.iConnectionRight)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   251
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   252
            Logger.ELOG(Logger.EJavaUI,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   253
                        "getMatrixTrait() - access rights failure");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   254
            throw new SecurityException(M2GSVGConstants.ACCESS_RIGHTS_ESTR);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   255
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   256
        short attributeTypeId = check(name);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   257
        if (!M2GSVGConstants.isGetMatrixTraitAllowed(attributeTypeId))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   258
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   259
            throw new DOMException(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   260
                DOMException.TYPE_MISMATCH_ERR,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   261
                /*SF*/"Trait's computed value cannot be converted to a SVGMatrix."/*SF*/);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   262
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   263
        M2GSVGMatrix matrix = new M2GSVGMatrix();
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   264
        // If an error is occurred, then no values are put in the
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   265
        // matrix array by the native method
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   266
        _getMatrixTrait(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   267
            getNativeSVGProxyHandle(),
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   268
            getHandle(),
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   269
            attributeTypeId,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   270
            matrix.getComponents());
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   271
        return matrix;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   272
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   273
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   274
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   275
     * @see org.w3c.dom.Node#getNamespaceURI()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   276
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   277
    public String getNamespaceURI()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   278
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   279
        // Optimization: if(!getDocument().getConnectionPolicy().getAccessRight())
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   280
        if (!iDocument.iConnectionRight)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   281
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   282
            Logger.ELOG(Logger.EJavaUI,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   283
                        "getNamespaceURI() - access rights failure");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   284
            throw new SecurityException(M2GSVGConstants.ACCESS_RIGHTS_ESTR);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   285
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   286
        return M2GSVGConstants.SVG_NAMESPACE_URI;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   287
        /*
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   288
          return _getStringTrait(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   289
                getNativeSVGProxyHandle(),
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   290
                getHandle(),
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   291
                id);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   292
        */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   293
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   294
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   295
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   296
     * @see org.w3c.dom.svg.SVGElement#getNextElementSibling()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   297
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   298
    public Element getNextElementSibling()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   299
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   300
        int elementHandle = _getNextElementSibling(
87
1627c337e51e v2.2.21_1
hgs
parents: 56
diff changeset
   301
                                getNativeSVGProxyHandle(), getHandle());
56
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   302
        if (M2GObject.checkHandle(elementHandle))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   303
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   304
            return M2GSVGElement.buildElement(elementHandle, iDocument);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   305
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   306
        return null;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   307
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   308
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   309
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   310
     * @see org.w3c.dom.svg.SVGElement#getParentNode()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   311
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   312
    public Node getParentNode()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   313
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   314
        // Optimization: if(!getDocument().getConnectionPolicy().getAccessRight())
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   315
        if (!iDocument.iConnectionRight)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   316
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   317
            Logger.ELOG(Logger.EJavaUI,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   318
                        "getParentNode() - access rights failure");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   319
            throw new SecurityException(M2GSVGConstants.ACCESS_RIGHTS_ESTR);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   320
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   321
        int parentHandle = _getParent(
87
1627c337e51e v2.2.21_1
hgs
parents: 56
diff changeset
   322
                               getNativeSVGProxyHandle(), getHandle());
56
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   323
        if (M2GObject.checkHandle(parentHandle))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   324
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   325
            return M2GSVGElement.buildElement(parentHandle, iDocument);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   326
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   327
        return null;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   328
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   329
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   330
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   331
     * @see org.w3c.dom.svg.SVGElement#getPathTrait()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   332
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   333
    public SVGPath getPathTrait(String name)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   334
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   335
        // Optimization: if(!getDocument().getConnectionPolicy().getAccessRight())
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   336
        if (!iDocument.iConnectionRight)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   337
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   338
            Logger.ELOG(Logger.EJavaUI,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   339
                        "getPathTrait() - access rights failure");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   340
            throw new SecurityException(M2GSVGConstants.ACCESS_RIGHTS_ESTR);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   341
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   342
        short attributeTypeId = check(name);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   343
        if (!M2GSVGConstants.isGetPathTraitAllowed(attributeTypeId))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   344
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   345
            throw new DOMException(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   346
                DOMException.TYPE_MISMATCH_ERR,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   347
                /*SF*/"Trait's computed value cannot be converted to a SVGPath."/*SF*/);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   348
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   349
        int pathHandle = _getPathTrait(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   350
                             getNativeSVGProxyHandle(),
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   351
                             getHandle(),
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   352
                             attributeTypeId);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   353
        if (pathHandle != 0)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   354
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   355
            // Path doesn't own the native object
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   356
            return new M2GSVGPath(pathHandle);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   357
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   358
        else
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   359
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   360
            return null;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   361
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   362
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   363
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   364
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   365
     * @see org.w3c.dom.svg.SVGElement#getRectTrait()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   366
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   367
    public SVGRect getRectTrait(String name)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   368
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   369
        // Optimization: if(!getDocument().getConnectionPolicy().getAccessRight())
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   370
        if (!iDocument.iConnectionRight)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   371
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   372
            Logger.ELOG(Logger.EJavaUI,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   373
                        "getRectTrait() - access rights failure");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   374
            throw new SecurityException(M2GSVGConstants.ACCESS_RIGHTS_ESTR);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   375
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   376
        short attributeTypeId = check(name);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   377
        if (!M2GSVGConstants.isGetRectTraitAllowed(attributeTypeId))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   378
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   379
            throw new DOMException(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   380
                DOMException.TYPE_MISMATCH_ERR,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   381
                /*SF*/"Trait's computed value cannot be converted to a SVGRect."/*SF*/);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   382
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   383
        M2GSVGRect rect = new M2GSVGRect();
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   384
        if (_getRectTrait(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   385
                    getNativeSVGProxyHandle(),
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   386
                    getHandle(),
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   387
                    attributeTypeId,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   388
                    rect.getComponents()) == -1)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   389
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   390
            Logger.LOG(Logger.EJavaUI, Logger.EInfo,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   391
                       "getRectTrait() - returns null!!");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   392
            return null;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   393
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   394
        else
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   395
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   396
            return rect;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   397
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   398
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   399
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   400
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   401
     * @see org.w3c.dom.svg.SVGElement#getRGBColorTrait()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   402
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   403
    public SVGRGBColor getRGBColorTrait(String name)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   404
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   405
        // Optimization: if(!getDocument().getConnectionPolicy().getAccessRight())
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   406
        if (!iDocument.iConnectionRight)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   407
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   408
            Logger.ELOG(Logger.EJavaUI,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   409
                        "getRGBColorTrait() - access rights failure");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   410
            throw new SecurityException(M2GSVGConstants.ACCESS_RIGHTS_ESTR);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   411
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   412
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   413
        short attributeTypeId = check(name);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   414
        if (!M2GSVGConstants.isGetRgbColorTraitAllowed(attributeTypeId))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   415
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   416
            throw new DOMException(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   417
                DOMException.TYPE_MISMATCH_ERR,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   418
                /*SF*/"Trait's computed value cannot be converted to a SVGRGBColor."/*SF*/);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   419
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   420
        M2GSVGRGBColor rgb = new M2GSVGRGBColor(0, 0, 0);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   421
        int result = _getColorTrait(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   422
                         getNativeSVGProxyHandle(),
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   423
                         getHandle(),
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   424
                         attributeTypeId,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   425
                         rgb.getComponents());
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   426
        if (result == -1)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   427
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   428
            if ((attributeTypeId == M2GSVGConstants.AT_FILL) ||
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   429
                    (attributeTypeId == M2GSVGConstants.AT_COLOR))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   430
            {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   431
                return new M2GSVGRGBColor(0, 0, 0);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   432
            }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   433
            else
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   434
            {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   435
                return null;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   436
            }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   437
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   438
        else if (result == 0)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   439
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   440
            return null;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   441
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   442
        return rgb;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   443
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   444
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   445
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   446
     * Get trait
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   447
     * @see org.w3c.dom.svg.SVGElement#getTrait()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   448
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   449
    public String getTrait(String name)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   450
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   451
        return getTraitNS(null, name);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   452
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   453
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   454
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   455
     * Get trait
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   456
     * @see org.w3c.dom.svg.SVGElement#getTraitNS()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   457
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   458
    public String getTraitNS(String namespaceURI, String name)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   459
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   460
        // Optimization: if(!getDocument().getConnectionPolicy().getAccessRight())
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   461
        if (!iDocument.iConnectionRight)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   462
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   463
            Logger.ELOG(Logger.EJavaUI,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   464
                        "getTraitNS() - access rights failure");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   465
            throw new SecurityException(M2GSVGConstants.ACCESS_RIGHTS_ESTR);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   466
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   467
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   468
        // Checks name validity
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   469
        short id = check(name);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   470
        String value = null;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   471
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   472
        // SVG traits are in the so-called element's 'per-element type partitions namespaces'
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   473
        // namespace must be always null
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   474
        // except for HREF traits which are from XLINK namespace?
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   475
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   476
        // XLINK_NAMESPACE
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   477
        if (namespaceURI != null &&
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   478
                namespaceURI.equals(M2GSVGConstants.XLINK_NAMESPACE_URI))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   479
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   480
            if (!M2GSVGConstants.isGetTraitNSAllowed(id))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   481
            {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   482
                Logger.ELOG(Logger.EJavaUI, "getTraitNS() XLINK eception: " +
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   483
                            "Trait's computed value cannot be converted to a String.");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   484
                throw new DOMException(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   485
                    DOMException.TYPE_MISMATCH_ERR,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   486
                    "Trait's computed value cannot be converted to a String.");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   487
            }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   488
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   489
            value = _getStringTrait(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   490
                        getNativeSVGProxyHandle(),
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   491
                        getHandle(),
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   492
                        id);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   493
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   494
            if (value == null)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   495
            {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   496
                value = "";
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   497
            }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   498
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   499
            return value;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   500
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   501
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   502
        // Checks namespace validity: namespace must be null
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   503
        if (namespaceURI != null)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   504
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   505
            Logger.ELOG(Logger.EJavaUI,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   506
                        "getTraitNS() - namespace IS NOT xlink but something else.");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   507
            Logger.ELOG(Logger.EJavaUI,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   508
                        "getTraitNS() exception: " + /*SF*/"The namespace is not supported."/*SF*/);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   509
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   510
            throw new DOMException(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   511
                DOMException.NOT_SUPPORTED_ERR,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   512
                "The namespace is not supported.");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   513
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   514
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   515
        // Checks that attribute is obtaineable as a string
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   516
        if (!M2GSVGConstants.isGetTraitNSStringAllowed(id))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   517
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   518
            Logger.ELOG(Logger.EJavaUI, "getTraitNS() exception: " +
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   519
                        "Trait's computed value cannot be converted to a String.");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   520
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   521
            throw new DOMException(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   522
                DOMException.TYPE_MISMATCH_ERR,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   523
                "Trait's computed value cannot be converted to a String.");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   524
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   525
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   526
        if (id == M2GSVGConstants.AT_XLINKHREF)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   527
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   528
            Logger.ELOG(Logger.EJavaUI, "getTraitNS() exception: "
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   529
                        + "The trait is not supported in this namespace.");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   530
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   531
            throw new DOMException(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   532
                DOMException.NOT_SUPPORTED_ERR,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   533
                "The trait is not supported in this namespace.");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   534
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   535
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   536
        // Checks if attribute is in string format
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   537
        if ((id == M2GSVGConstants.AT_STRING) ||
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   538
                (id == M2GSVGConstants.AT_VERSION) ||
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   539
                (id == M2GSVGConstants.AT_BASEPROFILE) ||
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   540
                (id == M2GSVGConstants.AT_TARGET) ||
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   541
                (id == M2GSVGConstants.AT_FONTFAMILY))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   542
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   543
            value = _getStringTrait(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   544
                        getNativeSVGProxyHandle(),
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   545
                        getHandle(),
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   546
                        id);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   547
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   548
        // Reads enum attribute
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   549
        else
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   550
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   551
            short valueId = _getEnumTrait(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   552
                                getNativeSVGProxyHandle(),
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   553
                                getHandle(),
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   554
                                id);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   555
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   556
            // Convert value id to string
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   557
            value = M2GSVGConstants.parseAttributeValueName(id, valueId);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   558
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   559
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   560
        if (value == null)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   561
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   562
            value = "";
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   563
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   564
        return value;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   565
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   566
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   567
    /*
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   568
     * Get element used from this element
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   569
     * @return Element.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   570
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   571
    public SVGElement getUsedFromElement()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   572
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   573
        int elementHandle = _getUsedFromElement(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   574
                                getNativeSVGProxyHandle(),
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   575
                                getHandle());
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   576
        if (M2GObject.checkHandle(elementHandle))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   577
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   578
            return M2GSVGElement.buildElement(elementHandle, iDocument);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   579
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   580
        return null;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   581
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   582
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   583
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   584
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   585
     * @see org.w3c.dom.Node#insertBefore
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   586
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   587
    public Node insertBefore(Node newChild, Node refChild)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   588
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   589
        // Optimization: if(!getDocument().getConnectionPolicy().getAccessRight())
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   590
        if (!iDocument.iConnectionRight)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   591
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   592
            Logger.ELOG(Logger.EJavaUI,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   593
                        "insertBefore() - access rights failure");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   594
            throw new SecurityException(M2GSVGConstants.ACCESS_RIGHTS_ESTR);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   595
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   596
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   597
        if (newChild == null)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   598
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   599
            Logger.ELOG(Logger.EJavaUI,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   600
                        "insertBefore() exception - new child is null");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   601
            throw new NullPointerException();
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   602
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   603
        if (newChild instanceof M2GDocument)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   604
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   605
            Logger.ELOG(Logger.EJavaUI,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   606
                        "insertBefore() exception - child is document");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   607
            throw new DOMException(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   608
                DOMException.HIERARCHY_REQUEST_ERR,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   609
                /*SF*/"Child is wrong type (Document)."/*SF*/);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   610
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   611
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   612
        if (!M2GSVGConstants.isAllowedToInsertElement(((M2GSVGElement)newChild).iElementTypeId))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   613
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   614
            Logger.ELOG(Logger.EJavaUI,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   615
                        "insertBefore() exception - cannot insert this node type");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   616
            throw new DOMException(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   617
                DOMException.NOT_SUPPORTED_ERR,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   618
                /*SF*/"Cannot insert node of that type."/*SF*/);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   619
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   620
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   621
        if (!M2GSVGConstants.checkElementAsChild(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   622
                    iElementTypeId, ((M2GSVGElement)newChild).iElementTypeId))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   623
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   624
            Logger.ELOG(Logger.EJavaUI,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   625
                        "insertBefore() exception - invalid parent-child relation");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   626
            throw new DOMException(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   627
                DOMException.HIERARCHY_REQUEST_ERR,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   628
                /*SF*/"Cannot insert node of that type."/*SF*/);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   629
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   630
        // Ensure that the new child candidate wouldn't be an ancestor of this element
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   631
        if (IsAncestor(newChild, this))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   632
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   633
            Logger.ELOG(Logger.EJavaUI,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   634
                        "insertBefore() exception - is ancestor");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   635
            throw new DOMException(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   636
                DOMException.HIERARCHY_REQUEST_ERR,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   637
                /*SF*/"Hierarchy request error in Document."/*SF*/);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   638
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   639
        // Check that the child and this element belong to the same Document
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   640
        if (((M2GSVGElement)newChild).getDocument().getHandle() != iDocument.getHandle())
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   641
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   642
            Logger.ELOG(Logger.EJavaUI,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   643
                        "insertBefore() exception - document is not the same");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   644
            throw new DOMException(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   645
                DOMException.WRONG_DOCUMENT_ERR,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   646
                /*SF*/"Child belongs to different document."/*SF*/);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   647
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   648
        if ((refChild != null) &&
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   649
                (((M2GSVGElement)refChild.getParentNode()).getHandle() != getHandle()))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   650
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   651
            Logger.ELOG(Logger.EJavaUI,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   652
                        "insertBefore() exception - ref child is not found");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   653
            throw new DOMException(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   654
                DOMException.NOT_FOUND_ERR,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   655
                /*SF*/"The child to insert before doesn't exist in this current node."/*SF*/);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   656
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   657
        // check that if <use> then xlink:href is an existing element id
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   658
        if (((M2GSVGElement)newChild).iElementTypeId == M2GSVGConstants.EL_USE)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   659
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   660
            String value = ((M2GSVGElement)newChild).getTraitNS(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   661
                               M2GSVGConstants.XLINK_NAMESPACE_URI, "href");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   662
            if (value.length() != 0)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   663
            {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   664
                if (!value.startsWith("#") ||
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   665
                        ((M2GSVGElement)newChild).iDocument.getElementById(value.substring(1)) == null)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   666
                {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   667
                    Logger.ELOG(Logger.EJavaUI,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   668
                                "insertBefore() exception - \"href\" trait value="
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   669
                                + value + " is invalid");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   670
                    throw new DOMException(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   671
                        DOMException.INVALID_STATE_ERR,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   672
                        /*SF*/"Invalid element id value."/*SF*/);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   673
                }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   674
            }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   675
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   676
        if (refChild == null)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   677
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   678
            _appendChild(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   679
                getNativeSVGProxyHandle(),
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   680
                getHandle(),
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   681
                ((M2GSVGElement)newChild).getHandle());
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   682
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   683
        else
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   684
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   685
            _insertBefore(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   686
                getNativeSVGProxyHandle(),
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   687
                getHandle(),
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   688
                ((M2GSVGElement)newChild).getHandle(),
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   689
                ((M2GSVGElement) refChild).getHandle());
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   690
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   691
        String href = _getStringTrait(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   692
                          getNativeSVGProxyHandle(),
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   693
                          ((M2GSVGElement)newChild).getHandle(),
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   694
                          M2GSVGConstants.AT_XLINKHREF);
87
1627c337e51e v2.2.21_1
hgs
parents: 56
diff changeset
   695
        // call resource handler call if element is elementindom, image,
56
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   696
        // and if it has an href attribute
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   697
        if ((href != null) &&
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   698
                (((M2GSVGElement)newChild).iElementTypeId == M2GSVGConstants.EL_IMAGE) &&
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   699
                iDocument.isElementInDOM(((M2GSVGElement)newChild).getHandle()))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   700
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   701
            // Call resource handler here
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   702
            iDocument.invokeResourceHandler(href);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   703
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   704
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   705
        // inform observer about changes in DOM only if element is in DOM
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   706
        iDocument.notifyDOMChangeObserver(iNativeHandle);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   707
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   708
        return newChild;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   709
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   710
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   711
    /*
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   712
     * Check if used
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   713
     * @return True if used.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   714
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   715
    public boolean isUsed()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   716
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   717
        return (_isUsed(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   718
                    getNativeSVGProxyHandle(),
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   719
                    getHandle()) > 0 ? true : false);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   720
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   721
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   722
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   723
     * @see org.w3c.dom.events.EventTarget#removeEventListener()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   724
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   725
    public void removeEventListener(String type, EventListener listener, boolean useCapture)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   726
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   727
        if (type == null || type.equals("") || listener == null)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   728
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   729
            throw new NullPointerException();
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   730
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   731
        if (useCapture == true)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   732
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   733
            throw new DOMException(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   734
                DOMException.NOT_SUPPORTED_ERR,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   735
                CAPTURE_NOT_SUPPORTED_ESTR);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   736
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   737
        iDocument.unregister(this, type, listener);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   738
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   739
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   740
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   741
     * @see org.w3c.dom.svg.SVGElement#setId()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   742
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   743
    public void setId(String id) throws DOMException
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   744
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   745
        // Optimization: if(!getDocument().getConnectionPolicy().getAccessRight())
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   746
        if (!iDocument.iConnectionRight)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   747
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   748
            Logger.ELOG(Logger.EJavaUI,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   749
                        "setId() - access rights failure");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   750
            throw new SecurityException(M2GSVGConstants.ACCESS_RIGHTS_ESTR);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   751
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   752
        if (id == null)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   753
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   754
            throw new NullPointerException(/*SF*/"The id is null."/*SF*/);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   755
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   756
        if (getId() != null)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   757
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   758
            throw new DOMException(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   759
                DOMException.NO_MODIFICATION_ALLOWED_ERR,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   760
                /*SF*/"Existing element id cannot be changed."/*SF*/);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   761
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   762
        if (iDocument.containsElement(id))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   763
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   764
            throw new DOMException(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   765
                DOMException.INVALID_ACCESS_ERR,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   766
                /*SF*/"Element id already exists in the document."/*SF*/);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   767
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   768
        else
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   769
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   770
            _setStringTrait(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   771
                getNativeSVGProxyHandle(),
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   772
                getHandle(), M2GSVGConstants.AT_ID, id);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   773
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   774
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   775
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   776
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   777
     * @see org.w3c.dom.svg.SVGElement#setFloatTrait()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   778
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   779
    public void setFloatTrait(String name, float value)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   780
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   781
        // Optimization: if(!getDocument().getConnectionPolicy().getAccessRight())
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   782
        if (!iDocument.iConnectionRight)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   783
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   784
            Logger.ELOG(Logger.EJavaUI,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   785
                        "setFloatTrait() - access rights failure");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   786
            throw new SecurityException(M2GSVGConstants.ACCESS_RIGHTS_ESTR);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   787
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   788
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   789
        short id = check(name);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   790
        if (!M2GSVGConstants.isSetFloatTraitAllowed(id))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   791
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   792
            Logger.ELOG(Logger.EJavaUI,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   793
                        "setFloatTrait() exception - set float (id=" + id + ") not allowed");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   794
            throw new DOMException(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   795
                DOMException.TYPE_MISMATCH_ERR,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   796
                /*SF*/"Trait's value cannot be specified as a float."/*SF*/);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   797
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   798
        if ((Float.isNaN(value)) ||
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   799
                // value must be >= 1
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   800
                (value < 1 && (id == M2GSVGConstants.AT_STROKEMITERLIMIT)) ||
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   801
                // value must be >= 0
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   802
                (value < 0 && (id == M2GSVGConstants.AT_FONTSIZE ||
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   803
                               id == M2GSVGConstants.AT_STROKEWIDTH ||
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   804
                               id == M2GSVGConstants.AT_HEIGHT ||
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   805
                               id == M2GSVGConstants.AT_WIDTH ||
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   806
                               id == M2GSVGConstants.AT_RX ||
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   807
                               id == M2GSVGConstants.AT_RY ||
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   808
                               id == M2GSVGConstants.AT_R)))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   809
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   810
            Logger.ELOG(Logger.EJavaUI,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   811
                        "setFloatTrait() exception - invalid value=" + value);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   812
            throw new DOMException(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   813
                DOMException.INVALID_ACCESS_ERR,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   814
                /*SF*/"The input value is an invalid value for the given trait."/*SF*/);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   815
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   816
        _setFloatTrait(getNativeSVGProxyHandle(),
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   817
                       getHandle(), id, value);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   818
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   819
        // inform observer about changes in DOM only if element is in DOM
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   820
        iDocument.notifyDOMChangeObserver(iNativeHandle);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   821
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   822
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   823
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   824
     * @see org.w3c.dom.svg.SVGElement#setMatrixTrait()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   825
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   826
    public void setMatrixTrait(String name, SVGMatrix matrix)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   827
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   828
        // Optimization: if(!getDocument().getConnectionPolicy().getAccessRight())
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   829
        if (!iDocument.iConnectionRight)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   830
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   831
            Logger.ELOG(Logger.EJavaUI,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   832
                        "setMatrixTrait() - access rights failure");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   833
            throw new SecurityException(M2GSVGConstants.ACCESS_RIGHTS_ESTR);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   834
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   835
        short id = check(name);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   836
        if (!M2GSVGConstants.isSetMatrixTraitAllowed(id))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   837
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   838
            throw new DOMException(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   839
                DOMException.TYPE_MISMATCH_ERR,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   840
                /*SF*/"Trait's value cannot be specified as a SVGMatrix."/*SF*/);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   841
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   842
        if ((matrix == null) ||
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   843
                !(matrix instanceof M2GSVGMatrix))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   844
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   845
            throw new DOMException(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   846
                DOMException.INVALID_ACCESS_ERR,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   847
                /*SF*/"The input value is an invalid value for the given trait."/*SF*/);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   848
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   849
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   850
        _setMatrixTrait(getNativeSVGProxyHandle(),
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   851
                        getHandle(), id,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   852
                        ((M2GSVGMatrix)matrix).getComponents());
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   853
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   854
        // inform observer about changes in DOM only if element is in DOM
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   855
        iDocument.notifyDOMChangeObserver(iNativeHandle);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   856
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   857
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   858
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   859
     * @see org.w3c.dom.svg.SVGElement#setPathTrait()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   860
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   861
    public void setPathTrait(String name, SVGPath path)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   862
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   863
        // Optimization: if(!getDocument().getConnectionPolicy().getAccessRight())
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   864
        if (!iDocument.iConnectionRight)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   865
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   866
            Logger.ELOG(Logger.EJavaUI,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   867
                        "setPathTrait() - access rights failure");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   868
            throw new SecurityException(M2GSVGConstants.ACCESS_RIGHTS_ESTR);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   869
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   870
        short id = check(name);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   871
        if (!M2GSVGConstants.isSetPathTraitAllowed(id))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   872
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   873
            throw new DOMException(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   874
                DOMException.TYPE_MISMATCH_ERR,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   875
                /*SF*/"Trait's value cannot be specified as a SVGPath."/*SF*/);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   876
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   877
        if ((path == null) ||
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   878
                !(path instanceof M2GSVGPath) ||
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   879
                !((M2GSVGPath)path).doCheckValidity())
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   880
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   881
            Logger.ELOG(Logger.EJavaUI,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   882
                        "setPathTrait() - exception M2GSVGPath not valid");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   883
            throw new DOMException(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   884
                DOMException.INVALID_ACCESS_ERR,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   885
                /*SF*/"The input value is an invalid value for the given trait."/*SF*/);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   886
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   887
87
1627c337e51e v2.2.21_1
hgs
parents: 56
diff changeset
   888
        _setPathTrait(getNativeSVGProxyHandle(),
56
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   889
                      getHandle(), id, ((M2GSVGPath)path).getHandle());
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   890
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   891
        // inform observer about changes in DOM only if element is in DOM
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   892
        iDocument.notifyDOMChangeObserver(iNativeHandle);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   893
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   894
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   895
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   896
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   897
     * @see org.w3c.dom.svg.SVGElement#setPathTrait()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   898
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   899
    public void setRectTrait(String name, SVGRect rect)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   900
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   901
        // Optimization: if(!getDocument().getConnectionPolicy().getAccessRight())
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   902
        if (!iDocument.iConnectionRight)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   903
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   904
            Logger.ELOG(Logger.EJavaUI,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   905
                        "setRectTrait() - access rights failure");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   906
            throw new SecurityException(M2GSVGConstants.ACCESS_RIGHTS_ESTR);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   907
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   908
        short id = check(name);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   909
        if (!M2GSVGConstants.isSetRectTraitAllowed(id))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   910
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   911
            throw new DOMException(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   912
                DOMException.TYPE_MISMATCH_ERR,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   913
                /*SF*/"Trait's value cannot be specified as a SVGRect."/*SF*/);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   914
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   915
        if ((rect == null) ||
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   916
                (rect.getWidth() < 0 || rect.getHeight() < 0))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   917
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   918
            throw new DOMException(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   919
                DOMException.INVALID_ACCESS_ERR,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   920
                /*SF*/"The input value is an invalid value for the given trait."/*SF*/);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   921
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   922
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   923
        _setRectTrait(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   924
            getNativeSVGProxyHandle(), getHandle(), id,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   925
            rect.getX(), rect.getY(), rect.getWidth(), rect.getHeight());
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   926
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   927
        // inform observer about changes in DOM only if element is in DOM
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   928
        iDocument.notifyDOMChangeObserver(iNativeHandle);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   929
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   930
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   931
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   932
     * @see org.w3c.dom.svg.SVGElement#setRGBColorTrait()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   933
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   934
    public void setRGBColorTrait(String name, SVGRGBColor color)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   935
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   936
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   937
        // Optimization: if(!getDocument().getConnectionPolicy().getAccessRight())
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   938
        if (!iDocument.iConnectionRight)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   939
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   940
            Logger.ELOG(Logger.EJavaUI,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   941
                        "setRGBColorTrait() - access rights failure");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   942
            throw new SecurityException(M2GSVGConstants.ACCESS_RIGHTS_ESTR);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   943
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   944
        short id = check(name);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   945
        if (!M2GSVGConstants.isSetRgbColorTraitAllowed(id))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   946
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   947
            Logger.ELOG(Logger.EJavaUI,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   948
                        "setRGBColorTrait() - exception: " + DOMException.TYPE_MISMATCH_ERR);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   949
            throw new DOMException(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   950
                DOMException.TYPE_MISMATCH_ERR,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   951
                /*SF*/"Trait's value cannot be specified as a SVGRGBColor."/*SF*/);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   952
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   953
        if (color == null)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   954
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   955
            Logger.ELOG(Logger.EJavaUI,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   956
                        "setRGBColorTrait() - exception: " + DOMException.INVALID_ACCESS_ERR);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   957
            throw new DOMException(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   958
                DOMException.INVALID_ACCESS_ERR,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   959
                /*SF*/"The trait is null."/*SF*/);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   960
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   961
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   962
        _setColorTrait(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   963
            getNativeSVGProxyHandle(), getHandle(), id,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   964
            color.getRed(), color.getGreen(), color.getBlue());
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   965
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   966
        // inform observer about changes in DOM only if element is in DOM
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   967
        iDocument.notifyDOMChangeObserver(iNativeHandle);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   968
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   969
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   970
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   971
     * @see org.w3c.dom.svg.SVGElement#setTrait()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   972
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   973
    public void setTrait(String name, String value)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   974
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   975
        setTraitNS(null, name, value);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   976
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   977
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   978
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   979
     * @see org.w3c.dom.svg.SVGElement#setTraitNS()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   980
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   981
    public void setTraitNS(String namespaceURI, String name, String value)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   982
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   983
        // Optimization: if(!getDocument().getConnectionPolicy().getAccessRight())
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   984
        if (!iDocument.iConnectionRight)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   985
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   986
            Logger.ELOG(Logger.EJavaUI,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   987
                        "setTraitNS() - access rights failure");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   988
            throw new SecurityException(M2GSVGConstants.ACCESS_RIGHTS_ESTR);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   989
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   990
        if (value == null)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   991
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   992
            throw new DOMException(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   993
                DOMException.INVALID_ACCESS_ERR,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   994
                /*SF*/"Value cannot be set to null."/*SF*/);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   995
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   996
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   997
        short id = check(name);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   998
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   999
        // SVG traits are in the so-called element's 'per-element type partitions namespaces'
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1000
        // namespace must be always null
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1001
        // except for HREF traits which are from XLINK namespace?
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1002
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1003
        if (namespaceURI != null &&
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1004
                namespaceURI.equals(M2GSVGConstants.XLINK_NAMESPACE_URI))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1005
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1006
            if (!M2GSVGConstants.isGetTraitNSAllowed(id))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1007
            {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1008
                throw new DOMException(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1009
                    DOMException.TYPE_MISMATCH_ERR,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1010
                    "Trait's value cannot be specified as a String.");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1011
            }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1012
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1013
            // check that if <use> then xlink:href is an existing element id
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1014
            if ((iElementTypeId == M2GSVGConstants.EL_USE) &&
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1015
                    (iDocument.isElementInDOM(getHandle())))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1016
            {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1017
                if ((value.length() <= 1) ||
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1018
                        !value.startsWith("#") ||
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1019
                        (iDocument.getElementById(value.substring(1)) == null))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1020
                {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1021
                    Logger.ELOG(Logger.EJavaUI,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1022
                                "setTraitNS() - DOMException");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1023
                    throw new DOMException(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1024
                        DOMException.INVALID_ACCESS_ERR,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1025
                        /*SF*/"The <use> element is hooked into the document tree and the the value of xlink:href is set invalid."/*SF*/);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1026
                }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1027
            }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1028
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1029
            _setStringTrait(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1030
                getNativeSVGProxyHandle(), getHandle(), id, value);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1031
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1032
            // inform observer about changes in DOM only if element is in DOM
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1033
            iDocument.notifyDOMChangeObserver(iNativeHandle);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1034
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1035
            // Check if element is in DOM and in that case invokes
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1036
            // resource handler
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1037
            if ((iElementTypeId == M2GSVGConstants.EL_IMAGE) &&
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1038
                    (id == M2GSVGConstants.AT_XLINKHREF) &&
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1039
                    (iDocument.isElementInDOM(getHandle())))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1040
            {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1041
                if (!iDocument.containsExternalResourceURI(value))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1042
                {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1043
                    iDocument.invokeResourceHandler(value);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1044
                }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1045
            }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1046
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1047
            return;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1048
        } // namespaceURI != null &&  namespaceURI.equals(M2GSVGConstants.XLINK_NAMESPACE_URI)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1049
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1050
        // all traits except HREF must have no namespace
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1051
        if (namespaceURI != null)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1052
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1053
            throw new DOMException(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1054
                DOMException.NOT_SUPPORTED_ERR,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1055
                "The namespace is not supported.");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1056
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1057
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1058
        if ((id == M2GSVGConstants.AT_VERSION) ||
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1059
                (id == M2GSVGConstants.AT_BASEPROFILE))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1060
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1061
            throw new DOMException(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1062
                DOMException.NO_MODIFICATION_ALLOWED_ERR,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1063
                /*SF*/"Attempt to change readonly trait."/*SF*/);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1064
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1065
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1066
        if (id == M2GSVGConstants.AT_XLINKHREF)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1067
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1068
            throw new DOMException(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1069
                DOMException.NOT_SUPPORTED_ERR,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1070
                /*SF*/"The trait is not supported in this namespace."/*SF*/);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1071
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1072
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1073
        if (!M2GSVGConstants.isSetTraitNSStringAllowed(id))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1074
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1075
            throw new DOMException(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1076
                DOMException.TYPE_MISMATCH_ERR,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1077
                /*SF*/"Trait's value cannot be specified as a String."/*SF*/);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1078
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1079
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1080
        short valueId = M2GSVGConstants.parseAttributeValueNameId(id, value);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1081
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1082
        if (valueId == M2GSVGConstants.SVG_ERROR)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1083
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1084
            throw new DOMException(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1085
                DOMException.INVALID_ACCESS_ERR,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1086
                /*SF*/"The value is invalid."/*SF*/);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1087
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1088
        else if (valueId == M2GSVGConstants.TEXT_NOT_SHORT)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1089
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1090
            _setStringTrait(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1091
                getNativeSVGProxyHandle(), getHandle(), id, value);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1092
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1093
        else
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1094
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1095
            _setEnumTrait(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1096
                getNativeSVGProxyHandle(), getHandle(), id, valueId);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1097
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1098
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1099
        // inform observer about changes in DOM only if element is in DOM
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1100
        iDocument.notifyDOMChangeObserver(iNativeHandle);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1101
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1102
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1103
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1104
     * @see org.w3c.dom.Node#removeChild
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1105
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1106
    public Node removeChild(Node oldChild) throws DOMException
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1107
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1108
        // Optimization: if(!getDocument().getConnectionPolicy().getAccessRight())
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1109
        if (!iDocument.iConnectionRight)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1110
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1111
            Logger.ELOG(Logger.EJavaUI,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1112
                        "removeChild() - access rights failure");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1113
            throw new SecurityException(M2GSVGConstants.ACCESS_RIGHTS_ESTR);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1114
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1115
        if (oldChild == null)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1116
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1117
            throw new NullPointerException();
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1118
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1119
        if (oldChild instanceof M2GDocument)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1120
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1121
            throw new DOMException(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1122
                DOMException.NOT_SUPPORTED_ERR,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1123
                /*SF*/"Cannot remove this type of node."/*SF*/);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1124
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1125
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1126
        M2GSVGElement removableChild = (M2GSVGElement)oldChild;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1127
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1128
        if (!M2GSVGConstants.isAllowedToRemoveElement(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1129
                    removableChild.iElementTypeId))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1130
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1131
            throw new DOMException(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1132
                DOMException.NOT_SUPPORTED_ERR,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1133
                /*SF*/"Cannot remove this type of node."/*SF*/);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1134
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1135
        M2GSVGElement parent = (M2GSVGElement)removableChild.getParentNode();
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1136
        if ((parent == null) ||
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1137
                (parent.getHandle() != getHandle()))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1138
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1139
            throw new DOMException(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1140
                DOMException.NOT_FOUND_ERR,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1141
                /*SF*/"Not a child of this node."/*SF*/);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1142
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1143
        // Check if removable
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1144
        int result = _checkRemoveable(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1145
                         getNativeSVGProxyHandle(),
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1146
                         removableChild.getHandle());
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1147
        if (result <= 0)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1148
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1149
            throw new DOMException(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1150
                DOMException.INVALID_ACCESS_ERR,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1151
                /*SF*/"The element being removed or one of its decendants have non-null id."/*SF*/);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1152
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1153
        // The removedChildHandle handle should be same as the removableChild handle
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1154
        int removedChildHandle  = removedChildHandle = _removeChild(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1155
                                      getNativeSVGProxyHandle(),
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1156
                                      getHandle(), removableChild.getHandle());
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1157
        // Remove the element from the live elements
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1158
        removableChild.getDocument().unregisterLiveElement(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1159
            new Integer(removableChild.getHandle()));
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1160
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1161
        iDocument.notifyDOMChangeObserver(getHandle());
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1162
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1163
        return removableChild;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1164
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1165
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1166
    //--------------------------------------------------
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1167
    // STATIC METHODS
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1168
    //--------------------------------------------------
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1169
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1170
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1171
     * Creates SVGElement instance according to the element type.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1172
     * Possible element types are: SVGElement, SVGLocatableElement,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1173
     * SVGSVGElement, SVGAnimationElement
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1174
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1175
    public static SVGElement buildElement(int aElementHandle, M2GDocument aDocument)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1176
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1177
        // Check native handle
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1178
        if (!M2GObject.checkHandle(aElementHandle) || (aDocument == null))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1179
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1180
            return null;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1181
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1182
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1183
        // Check if the element already exists
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1184
        SVGElement svgElement = aDocument.findLiveElement(new Integer(aElementHandle));
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1185
        if (svgElement != null)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1186
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1187
            return svgElement;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1188
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1189
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1190
        String typeName = M2GSVGElement.getElementTypeName(aElementHandle, aDocument);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1191
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1192
        if (M2GSVGConstants.isRootElement(typeName))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1193
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1194
            svgElement = M2GSVGSVGElement.buildRootElement(aDocument);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1195
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1196
        else if (M2GSVGConstants.isLocatableElement(typeName))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1197
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1198
            svgElement = new M2GSVGLocatableElement(aElementHandle, aDocument);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1199
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1200
        else if (M2GSVGConstants.isAnimatableElement(typeName))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1201
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1202
            svgElement = new M2GSVGAnimationElement(aElementHandle, aDocument);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1203
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1204
        else
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1205
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1206
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1207
            String id = M2GSVGElement._getStringTrait(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1208
                            M2GManager.getInstance().getSVGProxyHandle(),
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1209
                            aElementHandle,
87
1627c337e51e v2.2.21_1
hgs
parents: 56
diff changeset
  1210
                            M2GSVGConstants.AT_ID);
56
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1211
            if ((id != null) && id.equals("text_use_svg_default_font"))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1212
            {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1213
                return buildElement(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1214
                           M2GSVGElement._getNextElementSibling(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1215
                               aDocument.getNativeSVGProxyHandle(), aElementHandle),
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1216
                           aDocument);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1217
            }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1218
            else
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1219
            {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1220
                svgElement = new M2GSVGElement(aElementHandle, aDocument);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1221
            }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1222
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1223
        aDocument.registerLiveElement(svgElement, new Integer(aElementHandle));
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1224
        return svgElement;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1225
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1226
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1227
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1228
     * Helper function for appendChild and insertBefore
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1229
     * returns true if "ancestor" is the same node as "child" or
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1230
     * if "ancestor" is parent/ancestor of "child" else returns false
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1231
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1232
    private static final boolean IsAncestor(Node aAncestor, Node aChild) throws DOMException
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1233
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1234
        boolean result = false;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1235
        if (aAncestor != null && aChild != null)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1236
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1237
            if (aChild instanceof M2GDocument)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1238
            {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1239
                throw new DOMException(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1240
                    DOMException.HIERARCHY_REQUEST_ERR,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1241
                    /*SF*/"Cannot append Document elements."/*SF*/);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1242
            }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1243
            if ((aChild instanceof M2GSVGElement) && (aAncestor instanceof M2GSVGElement))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1244
            {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1245
                // Should check all types or just parent type???
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1246
                if (((M2GSVGElement)aAncestor).getHandle() == ((M2GSVGElement)aChild).getHandle())
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1247
                {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1248
                    result = true;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1249
                }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1250
                else
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1251
                {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1252
                    result = IsAncestor(aAncestor, aChild.getParentNode());
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1253
                }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1254
            }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1255
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1256
        return result;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1257
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1258
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1259
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1260
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1261
     * Helper function for removeChild.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1262
     * @returns false if the node "child" and all its children have non-null ids
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1263
     * else returns true
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1264
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1265
    private static final boolean IsReadOnly(Node aChild)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1266
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1267
        if (aChild != null)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1268
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1269
            // Should check all types or just parent type???
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1270
            if ((aChild instanceof M2GSVGElement) ||
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1271
                    (aChild instanceof SVGLocatableElement) ||
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1272
                    (aChild instanceof SVGSVGElement))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1273
            {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1274
                if (M2GSVGConstants.isElementReadOnly(((M2GSVGElement)aChild).getLocalName()))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1275
                {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1276
                    return true;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1277
                }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1278
                return IsReadOnly(aChild.getParentNode());
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1279
            }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1280
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1281
        return false;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1282
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1283
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1284
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1285
     * Get element's type name
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1286
     * @param aElementHandle
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1287
     * @param aDocument
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1288
     * @return element's type name
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1289
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1290
    public static String getElementTypeName(int aElementHandle, M2GDocument aDocument)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1291
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1292
        short elemenTypeId = M2GSVGConstants.EL_UNDEFINED;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1293
        if (aDocument != null)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1294
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1295
            elemenTypeId = M2GSVGElement._getElementTypeId(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1296
                               aDocument.getNativeSVGProxyHandle(),
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1297
                               aElementHandle);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1298
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1299
        else
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1300
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1301
            elemenTypeId = M2GSVGElement._getElementTypeId(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1302
                               M2GManager.getInstance().getSVGProxyHandle(),
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1303
                               aElementHandle);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1304
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1305
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1306
        return M2GSVGConstants.parseElementTypeName(elemenTypeId);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1307
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1308
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1309
    //--------------------------------------------------
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1310
    // NATIVE METHODS
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1311
    //--------------------------------------------------
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1312
    private static native void _appendChild(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1313
        int aSvgProxyHandle, int aElementHandle, int aNewChild);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1314
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1315
    private static native int _checkRemoveable(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1316
        int aSvgProxyHandle, int aElementHandle);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1317
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1318
    static native int _getBBox(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1319
        int aSvgProxyHandle, int aElementHandle,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1320
        short aAttributeTypeId, float[] aComponents);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1321
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1322
    private static native int _getColorTrait(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1323
        int aSvgProxyHandle, int aElementHandle,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1324
        short aAttributeTypeId, int[] aColorComponents);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1325
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1326
    private static native short _getElementTypeId(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1327
        int aSvgProxyHandle, int aElementHandle);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1328
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1329
    static native short _getEnumTrait(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1330
        int aSvgProxyHandle, int aElementHandle, short aAttributeTypeId);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1331
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1332
    private static native int _getFirstElementChild(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1333
        int aSvgProxyHandle, int aElementHandle);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1334
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1335
    private static native float _getFloatTrait(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1336
        int aSvgProxyHandle, int aElementHandle, short aAttributeTypeId);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1337
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1338
    static native int _getMatrixTrait(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1339
        int aSvgProxyHandle, int aElementHandle,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1340
        short aAttributeTypeId, float[] aComponents);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1341
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1342
    private static native int _getNextElementSibling(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1343
        int aSvgProxyHandle, int aElementHandle);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1344
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1345
    private static native int _getParent(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1346
        int aSvgProxyHandle, int aElementHandle);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1347
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1348
    private static native int _getPathTrait(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1349
        int aSvgProxyHandle, int aElementHandle, short aAttributeTypeId);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1350
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1351
    static native int _getRectTrait(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1352
        int aSvgProxyHandle, int aElementHandle,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1353
        short aAttributeTypeId, float[] aComponents);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1354
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1355
    native static int _getRootElement(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1356
        int aSvgProxyHandle, int aDocumentHandle);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1357
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1358
    static native void _getScreenBBox(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1359
        int aSvgProxyHandle, int aElementHandle, float[] aComponents);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1360
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1361
    protected static native String _getStringTrait(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1362
        int aSvgProxyHandle, int aElementHandle, short aAttributeTypeId);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1363
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1364
    private static native int _getUsedFromElement(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1365
        int aSvgProxyHandle, int aElementHandle);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1366
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1367
    private static native void _insertBefore(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1368
        int aSvgProxyHandle, int aElementHandle,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1369
        int aChildElementHandle, int aReferenceElementHandle);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1370
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1371
    private static native int _isUsed(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1372
        int aSvgProxyHandle, int aElementHandle);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1373
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1374
    private static native int _removeChild(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1375
        int aSvgProxyHandle, int aElementHandle, int aChildElementHandle);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1376
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1377
    private static native void _setColorTrait(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1378
        int aSvgProxyHandle, int aElementHandle, short aAttributeTypeId,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1379
        int aRed, int aGreen, int aBlue);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1380
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1381
    private static native void _setEnumTrait(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1382
        int aSvgProxyHandle, int aElementHandle, short aAttributeTypeId,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1383
        short aValue);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1384
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1385
    private static native void _setFloatTrait(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1386
        int aSvgProxyHandle, int aElementHandle, short aAttributeTypeId, float aValue);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1387
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1388
    static native void _setMatrixTrait(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1389
        int aSvgProxyHandle, int aElementHandle,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1390
        short aAttributeTypeId, float[] aComponents);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1391
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1392
    private static native void _setPathTrait(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1393
        int aSvgProxyHandle, int aElementHandle, short aAttributeTypeId, int aPathHandle);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1394
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1395
    private static native void _setRectTrait(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1396
        int aSvgProxyHandle, int aElementHandle, short aAttributeTypeId,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1397
        float aX, float aY, float aWidth, float aHeight);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1398
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1399
    private static native void _setStringTrait(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1400
        int aSvgProxyHandle, int aElementHandle, short aAttributeTypeId, String aValue);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1401
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
  1402
}