<!--
The contents of this file are subject to the terms of the Common Development
and Distribution License (the License). You may not use this file except in
compliance with the License.

You can obtain a copy of the License at https://netbeans.org/cddl.html
or https://netbeans.org/cddl.txt.

When distributing Covered Code, include this CDDL Header Notice in each file
and include the License file at https://netbeans.org/cddl.txt.
If applicable, add the following below the CDDL Header, with the fields
enclosed by brackets [] replaced by your own identifying information:
"Portions Copyrighted [year] [name of copyright owner]"

The Original Software is NetBeans. The Initial Developer of the Original
Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
Microsystems, Inc. All Rights Reserved.
-->

<!--- Editor Palette Item -->

<!--
<editor_palette_item version="1.1">
-->
<!ELEMENT editor_palette_item ((class|body),icon16,icon32,(description|inline-description))>
<!ATTLIST editor_palette_item
    version CDATA #REQUIRED
>

<!--
Name of class implementing org.openide.text.ActiveEditorDrop interface; e.g.
<class name="org.netbeans.modules.html.palette.items.TABLE" />
-->
<!ELEMENT class EMPTY>
<!ATTLIST class
    name CDATA #REQUIRED
>

<!--
Item body if no custom implementation is provided, e.g.
<body>
    <![CDATA[
        <table border="1">
            <thead>
                <tr>
                    <th></th>
                    <th></th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td></td>
                    <td></td>
                </tr>
                <tr>
                    <td></td>
                    <td></td>
                </tr>
            </tbody>
        </table>
    ]]>
</body>
-->
<!ELEMENT body (#PCDATA)>

<!--
Resource path of the small icon 16x16 (no initial slash), e.g.
<icon16 urlvalue="org/netbeans/modules/html/palette/items/resources/TABLE16.gif" />
-->
<!ELEMENT icon16 EMPTY>
<!ATTLIST icon16 
    urlvalue CDATA #REQUIRED
>

<!--
Resource path of the big icon 32x32 (no initial slash), e.g.
<icon32 urlvalue="org/netbeans/modules/html/palette/items/resources/TABLE32.gif" />
-->
<!ELEMENT icon32 EMPTY>
<!ATTLIST icon32 
    urlvalue CDATA #REQUIRED
>

<!--
Bundle name with display name key and tooltip key, e.g.
<description localizing-bundle="org.netbeans.modules.html.palette.items.resources.Bundle"
           display-name-key="NAME_html-TABLE"
           tooltip-key="HINT_html-TABLE" />
-->
<!ELEMENT description EMPTY>
<!ATTLIST description 
    localizing-bundle CDATA #REQUIRED
    display-name-key CDATA #REQUIRED
    tooltip-key CDATA #REQUIRED
>

<!--
Display name key and tooltip key, e.g.
<inline-description>
           <display-name>Table</display-name>
           <tooltip> <![CDATA[ <table border="1"> <tr> <td></td> <td></td> </tr> <tr> <td></td> <td></td> </tr> </table> ]]> </tooltip>
</inline-description>
-->
<!ELEMENT inline-description (display-name, tooltip)>

<!ELEMENT display-name (#PCDATA)>

<!ELEMENT tooltip (#PCDATA)>
