<?xml version="1.0"?>
    <bindings xmlns="http://www.mozilla.org/xbl" xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

    <binding id="none">
        <content><children/></content>
    </binding>

    <binding id="ellipsis">
        <content>
            <xul:label crop="end"><children/></xul:label>
        </content>
        <implementation>
            <field name="label"> document.getAnonymousNodes( this )[ 0 ] </field>
            <field name="style"> this.label.style </field>
            <property name="display">
                <getter> this.style.display </getter>
                <setter> if( this.style.display != val ) this.style.display= val </setter>
            </property>
            <property name="value">
                <getter> this.label.value </getter>
                <setter> if( this.label.value != val ) this.label.value= val </setter>
            </property>
            <method name="update">
                <body>
                    var strings= this.textContent.split( /\s+/g )
                    if( !strings[ 0 ] ) strings.shift()
                    if( !strings[ strings.length - 1 ] ) strings.pop()
                    this.value= strings.join( ' ' )
                    this.display= strings.length ? '' : 'none'
                </body>
            </method>
            <constructor> this.update() </constructor>
        </implementation>
        <handlers>
            <handler event="DOMSubtreeModified"> this.update() </handler>
        </handlers>
    </binding>

    </bindings>