home *** CD-ROM | disk | FTP | other *** search
/ Chip 2002 January / 01_02.iso / software / netscape62win / browser.xpi / bin / chrome / toolkit.jar / content / global / bindings / textbox.xml < prev    next >
Encoding:
Extensible Markup Language  |  2001-08-21  |  9.9 KB  |  209 lines

  1. <?xml version="1.0"?>
  2.  
  3. <!DOCTYPE window [
  4.   <!ENTITY % textcontextDTD SYSTEM "chrome://global/locale/textcontext.dtd" >
  5.   %textcontextDTD;
  6. ]>
  7.  
  8. <bindings id="textboxBindings"
  9.    xmlns="http://www.mozilla.org/xbl"
  10.    xmlns:html="http://www.w3.org/1999/xhtml"
  11.    xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
  12.  
  13.   <binding id="textbox" extends="xul:box">
  14.     <resources>
  15.       <stylesheet src="chrome://global/skin/textbox.css"/>
  16.     </resources>
  17.     
  18.     <content context="_child">
  19.       <xul:hbox class="textbox-internal-box" flex="1">
  20.         <html:input class="textbox-input" flex="1" inherits="onfocus,onblur,value,type,maxlength,disabled,size,readonly"/>
  21.       </xul:hbox>
  22.         <xul:menupopup onpopupshowing="this.parentNode.focus(); this.parentNode.doPopupItemEnabling(this);">
  23.           <xul:menuitem label="&undoCmd.label;" accesskey="&undoCmd.accesskey;" cmd="cmd_undo" oncommand="
  24.             var controller = document.commandDispatcher.getControllerForCommand('cmd_undo');              
  25.             controller.doCommand('cmd_undo');"/>
  26.           <xul:menuseparator/>
  27.           <xul:menuitem label="&cutCmd.label;" accesskey="&cutCmd.accesskey;" cmd="cmd_cut" oncommand="
  28.             var controller = document.commandDispatcher.getControllerForCommand('cmd_cut');
  29.             controller.doCommand('cmd_cut');"/>
  30.           <xul:menuitem label="©Cmd.label;" accesskey="©Cmd.accesskey;" cmd="cmd_copy" oncommand="
  31.             var controller = document.commandDispatcher.getControllerForCommand('cmd_copy');
  32.             controller.doCommand('cmd_copy');"/>
  33.           <xul:menuitem label="&pasteCmd.label;" accesskey="&pasteCmd.accesskey;" cmd="cmd_paste" oncommand="
  34.             var controller = document.commandDispatcher.getControllerForCommand('cmd_paste');
  35.             controller.doCommand('cmd_paste');"/>
  36.           <xul:menuitem label="&deleteCmd.label;" accesskey="&deleteCmd.accesskey;" cmd="cmd_delete" oncommand="
  37.             var controller = document.commandDispatcher.getControllerForCommand('cmd_delete');
  38.             controller.doCommand('cmd_delete');"/>
  39.            <xul:menuseparator/>
  40.           <xul:menuitem label="&selectAllCmd.label;" accesskey="&selectAllCmd.accesskey;" cmd="cmd_selectAll" oncommand="
  41.             var controller = document.commandDispatcher.getControllerForCommand('cmd_selectAll');
  42.             controller.doCommand('cmd_selectAll');"/>
  43.         </xul:menupopup>
  44.     </content>
  45.     
  46.     <implementation>
  47.       <property name="inputField" readonly="true">
  48.        <![CDATA[
  49.         var v = document.getAnonymousNodes(this);
  50.         var input = null;
  51.         for (var i = 0; i < v.length; i++) {
  52.           try {
  53.             var l = v[i].getElementsByTagNameNS("http://www.w3.org/1999/xhtml", "input");
  54.             if (l.length > 0) {
  55.               input = l[0];
  56.               break;
  57.             }
  58.           } catch (e) {} 
  59.         }
  60.         input;
  61.       ]]>
  62.       </property>
  63.       <property name="value"      onset="this.inputField.value = val; return val;"
  64.                                   onget="return this.inputField.value;"/>
  65.       <property name="type"       onset="this.inputField.type = val; return val;"
  66.                                   onget="return this.inputField.type;"/>
  67.       <property name="maxlength"  onset="this.inputField.maxlength = val; return val;"
  68.                                   onget="return this.inputField.maxlength;"/>
  69.       <property name="disabled"   onset="this.inputField.disabled = val;
  70.                                          if (val) this.setAttribute('disabled', 'true');
  71.                                          else this.removeAttribute('disabled'); return val;"
  72.                                   onget="return this.inputField.disabled;"/>
  73.       <property name="size"       onset="this.inputField.size = val; return val;"
  74.                                   onget="return this.inputField.size;"/>
  75.       <property name="readonly"   onset="this.inputField.readonly = val;
  76.                                          if (val) this.setAttribute('disabled', 'true');
  77.                                          else this.removeAttribute('disabled'); return val;"
  78.                                   onget="return this.inputField.readonly;"/>
  79.                                   
  80.  
  81.       <method name="select">
  82.         <body>
  83.           this.inputField.select();
  84.         </body>
  85.       </method>
  86.  
  87.       <method name="doPopupItemEnabling">
  88.         <parameter name="popupNode"/> 
  89.         <body>
  90.           <![CDATA[
  91.             var children = popupNode.childNodes;
  92.             for (var i = 0; i < children.length; i++) {              
  93.               var command = children[i].getAttribute("cmd");
  94.               if (command) {
  95.                 var controller = document.commandDispatcher.getControllerForCommand(command);
  96.                 var enabled = controller.isCommandEnabled(command);
  97.                 if (enabled)
  98.                   children[i].removeAttribute('disabled');
  99.                 else
  100.                   children[i].setAttribute('disabled','true');               
  101.               }
  102.             }
  103.           ]]>
  104.         </body>
  105.       </method>
  106.                              
  107.       
  108.       <property name="controllers"    readonly="true" onget="return this.inputField.controllers"/>
  109.       <property name="textLength"     readonly="true" onget="return this.inputField.textLength;"/>
  110.       <property name="selectionStart" onset="this.inputField.selectionStart = val; return val;"
  111.                                       onget="return this.inputField.selectionStart;"/>
  112.       <property name="selectionEnd"   onset="this.inputField.selectionEnd = val; return val;"
  113.                                       onget="return this.inputField.selectionEnd;"/>
  114.      
  115.       <property name="suppressFocusBlur">
  116.         false
  117.       </property>
  118.  
  119.       <method name="setSelectionRange">
  120.         <parameter name="aSelectionStart"/>
  121.         <parameter name="aSelectionEnd"/>
  122.         <body>
  123.           this.inputField.setSelectionRange( aSelectionStart, aSelectionEnd );
  124.         </body>
  125.       </method>
  126.  
  127.       <constructor action="var str = this.boxObject.getProperty('value'); 
  128.                                                 if (str) {
  129.                                                   this.inputField.value=str;
  130.                                                   this.boxObject.removeProperty('value');
  131.                                                 }"/>
  132.       <destructor action="if (this.inputField.value) this.boxObject.setProperty('value', this.inputField.value);"/>
  133.    
  134.     </implementation>
  135.     
  136.     <handlers>
  137.       <handler event="focus" phase="capturing">
  138.       <![CDATA[
  139.         if (this.getAttribute('focused') != 'true') {
  140.           this.setAttribute('focused','true');
  141.           this.suppressFocusBlur = true;
  142.           if (document.commandDispatcher.focusedElement != this.inputField) 
  143.             this.inputField.focus();
  144.           this.suppressFocusBlur = false;
  145.         }
  146.       ]]>
  147.       </handler>
  148.       
  149.       <handler event="blur" phase="capturing">
  150.       <![CDATA[
  151.         if (!this.suppressFocusBlur && this.getAttribute('focused') == 'true') {
  152.           this.removeAttribute('focused');
  153.         }
  154.       ]]>
  155.       </handler>
  156.     </handlers>    
  157.   </binding>
  158.  
  159.   <binding id="textarea" extends="chrome://global/content/bindings/textbox.xml#textbox">
  160.     <content context="_child">
  161.       <xul:hbox class="textarea-internal-box" flex="1">
  162.         <html:textarea class="textbox-textarea" flex="1" inherits="onfocus,onblur,value,disabled,rows,cols,readonly"/>
  163.       </xul:hbox>
  164.       <xul:popupset>
  165.         <xul:popup onpopupshowing="this.parentNode.parentNode.doPopupItemEnabling(this); this.focus();">
  166.           <xul:menuitem label="&undoCmd.label;" accesskey="&undoCmd.accesskey;" cmd="cmd_undo" oncommand="
  167.             var controller = document.commandDispatcher.getControllerForCommand('cmd_undo');              
  168.             controller.doCommand('cmd_undo');"/>
  169.           <xul:menuseparator/>
  170.           <xul:menuitem label="&cutCmd.label;" accesskey="&cutCmd.accesskey;" cmd="cmd_cut" oncommand="
  171.             var controller = document.commandDispatcher.getControllerForCommand('cmd_cut');
  172.             controller.doCommand('cmd_cut');"/>
  173.           <xul:menuitem label="©Cmd.label;" accesskey="©Cmd.accesskey;" cmd="cmd_copy" oncommand="
  174.             var controller = document.commandDispatcher.getControllerForCommand('cmd_copy');
  175.             controller.doCommand('cmd_copy');"/>
  176.           <xul:menuitem label="&pasteCmd.label;" accesskey="&pasteCmd.accesskey;" cmd="cmd_paste" oncommand="
  177.             var controller = document.commandDispatcher.getControllerForCommand('cmd_paste');
  178.             controller.doCommand('cmd_paste');"/>
  179.           <xul:menuitem label="&deleteCmd.label;" accesskey="&deleteCmd.accesskey;" cmd="cmd_delete" oncommand="
  180.             var controller = document.commandDispatcher.getControllerForCommand('cmd_delete');
  181.             controller.doCommand('cmd_delete');"/>
  182.            <xul:menuseparator/>
  183.           <xul:menuitem label="&selectAllCmd.label;" accesskey="&selectAllCmd.accesskey;" cmd="cmd_selectAll" oncommand="
  184.             var controller = document.commandDispatcher.getControllerForCommand('cmd_selectAll');
  185.             controller.doCommand('cmd_selectAll');"/>
  186.         </xul:popup>
  187.       </xul:popupset>
  188.     </content>
  189.     <implementation>
  190.       <property name="inputField" readonly="true">
  191.        <![CDATA[
  192.         var v = document.getAnonymousNodes(this);
  193.         var input = null;
  194.         for (var i = 0; i < v.length; i++) {
  195.           try {
  196.             var l = v[i].getElementsByTagNameNS("http://www.w3.org/1999/xhtml", "textarea");
  197.             if (l.length > 0) {
  198.               input = l[0];
  199.               break;
  200.             }
  201.           } catch (e) {} 
  202.         }
  203.         input;
  204.       ]]>
  205.       </property>
  206.     </implementation>
  207.   </binding>
  208.  
  209. </bindings>