<!ELEMENT defaultsProperty EMPTY>
<?xml version="1.0" encoding="iso-8859-1"?>

<!--
 Copyright 2003-2005 Sun Microsystems, Inc.  All Rights Reserved.
 DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.

 This code is free software; you can redistribute it and/or modify it
 under the terms of the GNU General Public License version 2 only, as
 published by the Free Software Foundation.  Sun designates this
 particular file as subject to the "Classpath" exception as provided
 by Sun in the LICENSE file that accompanied this code.

 This code is distributed in the hope that it will be useful, but WITHOUT
 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 version 2 for more details (a copy is included in the LICENSE file that
 accompanied this code).

 You should have received a copy of the GNU General Public License version
 2 along with this work; if not, write to the Free Software Foundation,
 Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.

 Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
 CA 95054 USA or visit www.sun.com if you need additional information or
 have any questions.
-->


<!ELEMENT synth ((%beansPersistance;) | style | bind | font | color |
          imagePainter | imageIcon | inputMap | defaultsProperty)*>
<!ATTLIST synth
          version              CDATA          #IMPLIED
>

<!ELEMENT style (property | defaultsProperty | state | font |
          graphicsUtils | insets | painter | imagePainter | opaque |
          inputMap | %beansPersistance; | imageIcon)*>
<!ATTLIST style
          id                   ID             #IMPLIED
          clone                IDREF          #IMPLIED
>

<!ELEMENT state (font | color | painter | imagePainter |
          (%beansPersistance;) | property | imageIcon)*>
<!ATTLIST state
          id                   ID             #IMPLIED
          clone                IDREF          #IMPLIED
          value                CDATA          #IMPLIED
          idref                IDREF          #IMPLIED
>

<!ELEMENT font EMPTY>
<!ATTLIST font
          id                   ID             #IMPLIED
          idref                IDREF          #IMPLIED
          name                 CDATA          #IMPLIED
          style                CDATA          #IMPLIED
          size                 CDATA          #IMPLIED
>

<!ELEMENT color EMPTY>
<!ATTLIST color
          id                   ID             #IMPLIED
          idref                IDREF          #IMPLIED
          type                 CDATA          #IMPLIED
          value                CDATA          #IMPLIED
>

<!ELEMENT property EMPTY>
<!ATTLIST property
          key         CDATA                                           #REQUIRED
          type        (idref|boolean|dimension|insets|integer|string) "idref"
          value       CDATA                                           #REQUIRED
>

<!ELEMENT defaultsProperty EMPTY>
<!ATTLIST defaultsProperty
          key         CDATA                                           #REQUIRED
          type        (idref|boolean|dimension|insets|integer|string)   "idref"
          value       CDATA                                           #REQUIRED
>

<!ELEMENT graphicsUtils EMPTY>
<!ATTLIST graphicsUtils
          idref                IDREF          #REQUIRED
>

<!ELEMENT insets EMPTY>
<!ATTLIST insets
          id                   ID             #IMPLIED
          idref                IDREF          #IMPLIED
          top                  CDATA          #IMPLIED
          bottom               CDATA          #IMPLIED
          left                 CDATA          #IMPLIED
          right                CDATA          #IMPLIED
>

<!ELEMENT bind EMPTY>
<!ATTLIST bind
          style                IDREF          #REQUIRED
          type                 (NAME|REGION)  "REGION"
          key                  CDATA          #REQUIRED
>

<!ELEMENT painter EMPTY>
<!ATTLIST painter
          idref                IDREF          #IMPLIED
          method               CDATA          #IMPLIED
          direction            (north|south|east|west|top|left|bottom|right|horizontal|vertical|horizontal_split|vertical_split)          #IMPLIED
>

<!ELEMENT imagePainter EMPTY>
<!ATTLIST imagePainter
          id                   ID             #IMPLIED
          method               CDATA          #IMPLIED
          direction            (north|south|east|west|top|left|bottom|right|horizontal|vertical|horizontal_split|vertical_split)          #IMPLIED
          path                 CDATA          #IMPLIED
          sourceInsets         CDATA          #IMPLIED
          destinationInsets    CDATA          #IMPLIED
          paintCenter          (true|false)   "true"
          stretch              (true|false)   "true"
          center               (true|false)   "false"
>

<!ELEMENT imageIcon EMPTY>
<!ATTLIST imageIcon
          id                   ID             #REQUIRED
          path                 CDATA          #REQUIRED
>

<!ELEMENT opaque EMPTY>
<!ATTLIST opaque
          value                (true|false)   "true"
>

<!ELEMENT inputMap (bindKey)*>
<!ATTLIST inputMap
          id                   ID             #REQUIRED
>

<!ELEMENT bindKey EMPTY>
<!ATTLIST bindKey
          key                  CDATA          #REQUIRED
          action               CDATA          #REQUIRED
>
