home *** CD-ROM | disk | FTP | other *** search
/ PC World 2005 March / PCWorld_2005-03_cd.bin / komunikace / kmeleon / kmeleon09.exe / toolkit.jar / content / global / bindings / toolbar.xml < prev    next >
Extensible Markup Language  |  2003-12-20  |  11KB  |  292 lines

  1. <?xml version="1.0"?>
  2.  
  3. <bindings id="toolbarBindings"
  4.           xmlns="http://www.mozilla.org/xbl"
  5.           xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
  6.           xmlns:xbl="http://www.mozilla.org/xbl">
  7.  
  8.   <binding id="toolbar-base">
  9.     <resources>
  10.       <stylesheet src="chrome://global/skin/toolbar.css"/>
  11.     </resources>
  12.     <implementation implements="nsIAccessibleProvider">
  13.       <property name="accessible">
  14.         <getter>
  15.           <![CDATA[
  16.             var accService = Components.classes["@mozilla.org/accessibilityService;1"].getService(Components.interfaces.nsIAccessibilityService);
  17.             if (this.localName == "toolbarseparator")
  18.               return accService.createXULToolbarSeparatorAccessible(this);
  19.             else
  20.               return accService.createXULToolbarAccessible(this);
  21.           ]]>
  22.         </getter>
  23.       </property>
  24.     </implementation>
  25.   </binding>
  26.  
  27.   <binding id="toolbox" extends="chrome://global/content/bindings/toolbar.xml#toolbar-base">
  28.     <content orient="vertical">
  29.       <xul:vbox flex="1" class="toolbar-internal-box">
  30.         <children/>
  31.       </xul:vbox>
  32.       <xul:hbox tbattr="collapsed-tray-holder" class="collapsed-tray-holder" moz-collapsed="true">
  33.         <xul:hbox tbattr="collapsed-tray" class="collapsed-tray"/>
  34.         <xul:spacer flex="1" class="collapsed-tray-spacer"/>
  35.       </xul:hbox>
  36.     </content>
  37.     
  38.     <implementation>
  39.       <method name="collapseToolbar">
  40.         <parameter name="toolbar"/>
  41.         <body>
  42.         <![CDATA[
  43.           try {
  44.             this.createCollapsedGrippy(toolbar);
  45.             toolbar.setAttribute("moz-collapsed", "true");
  46.             document.persist(toolbar.id, "moz-collapsed");
  47.           }
  48.           catch(e) {
  49.           }
  50.         ]]>
  51.         </body>
  52.       </method>
  53.       
  54.       <method name="expandToolbar">
  55.         <parameter name="aGrippyID"/>
  56.         <body>
  57.         <![CDATA[
  58.           var idString = aGrippyID.substring("moz_tb_collapsed_".length, aGrippyID.length);
  59.           var toolbar = document.getElementById(idString);
  60.           toolbar.setAttribute("moz-collapsed", "false");
  61.           var collapsedTray = document.getAnonymousElementByAttribute(this, "tbattr", "collapsed-tray");
  62.           var collapsedToolbar = document.getElementById("moz_tb_collapsed_" + toolbar.id);
  63.           collapsedTray.removeChild(collapsedToolbar);
  64.           if (!collapsedTray.hasChildNodes()) 
  65.             document.getAnonymousElementByAttribute(this, "tbattr", "collapsed-tray-holder").setAttribute("moz-collapsed", "true");
  66.           document.persist(toolbar.id, "moz-collapsed");
  67.         ]]>
  68.         </body>
  69.       </method>
  70.       
  71.       <method name="createCollapsedGrippy">
  72.         <parameter name="aToolbar"/>
  73.         <body>
  74.         <![CDATA[
  75.           const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
  76.           try {
  77.             var grippy = document.getAnonymousElementByAttribute(aToolbar, "tbattr", "toolbar-grippy");
  78.             var boxObject = grippy.boxObject.QueryInterface(Components.interfaces.nsIBoxObject);
  79.             var collapsedGrippy = document.createElementNS(XUL_NS, "toolbargrippy");
  80.             if (collapsedGrippy) {
  81.               var width = boxObject.height > 20 ? boxObject.height : 23;
  82.               var height = boxObject.width > 10 ? boxObject.width : 12;
  83.               var styleString = "width: " + width + "px; height: " + height + "px;";
  84.               collapsedGrippy.setAttribute("style", styleString);
  85.               collapsedGrippy.setAttribute("tooltiptext", aToolbar.getAttribute("grippytooltiptext"));
  86.               collapsedGrippy.setAttribute("id", "moz_tb_collapsed_" + aToolbar.id);
  87.               collapsedGrippy.setAttribute("moz_grippy_collapsed", "true"); 
  88.               collapsedGrippy.setAttribute("tbgrippy-collapsed", "true");
  89.               var collapsedTrayHolder = document.getAnonymousElementByAttribute(this, "tbattr", "collapsed-tray-holder");
  90.               if (collapsedTrayHolder.getAttribute("moz-collapsed") == "true")
  91.                 collapsedTrayHolder.removeAttribute("moz-collapsed");
  92.               document.getAnonymousElementByAttribute(this, "tbattr", "collapsed-tray").appendChild(collapsedGrippy);
  93.               collapsedGrippy = document.getElementById("moz_tb_collapsed_" + aToolbar.id);
  94.             }
  95.           }
  96.           catch (e) {
  97.             throw e;
  98.           }
  99.         ]]>        
  100.         </body>
  101.       </method>
  102.  
  103.       <property name="deferAttached">
  104.         <getter>
  105.           return (this.hasAttribute("deferattached") ? "true" : "false");
  106.         </getter>
  107.         <setter>
  108.           if (val)
  109.             this.setAttribute("deferattached", "true");
  110.           else
  111.             this.removeAttribute("deferattached");
  112.           return val;
  113.         </setter>
  114.       </property>
  115.       
  116.     </implementation>
  117.   </binding>
  118.  
  119.   <binding id="toolbar" extends="chrome://global/content/bindings/toolbar.xml#toolbar-base">
  120.     <content>
  121.       <xul:toolbargrippy xbl:inherits="last-toolbar,hidden=grippyhidden"
  122.                          tbattr="toolbar-grippy"
  123.                          class="toolbar-grippy"/>
  124.       <xul:hbox class="toolbar-prefix" 
  125.                 xbl:inherits="onclick=prefixonclick,tooltiptext=prefixtooltip,hidden=prefixhidden,prefixopen"/>
  126.       <xul:hbox flex="1" class="toolbar-holder" align="center"
  127.                 xbl:inherits="collapsed,last-toolbar,orient=tborient,align=tbalign,pack=tbpack">
  128.         <children/>
  129.       </xul:hbox>
  130.     </content>
  131.     
  132.     <implementation>
  133.       <constructor>
  134.         <![CDATA[
  135.           if (this.getAttribute("moz-collapsed") == "true" &&
  136.               this.parentNode.localName == "toolbox")
  137.             this.parentNode.createCollapsedGrippy(this);
  138.         ]]>
  139.       </constructor>
  140.     </implementation>
  141.   </binding>
  142.  
  143.   <binding id="toolbar-primary" extends="chrome://global/content/bindings/toolbar.xml#toolbar">
  144.     <implementation implements="nsIObserver">
  145.       <field name="domain" readonly="true">
  146.         "browser.chrome.toolbar_style"
  147.       </field>
  148.  
  149.       <field name="prefs" readonly="true">
  150.         Components.classes["@mozilla.org/preferences-service;1"]
  151.                   .getService(Components.interfaces.nsIPrefService).getBranch(null)
  152.                   .QueryInterface(Components.interfaces.nsIPrefBranchInternal)
  153.       </field>
  154.  
  155.       <method name="observe">
  156.         <parameter name="subject"/>
  157.         <parameter name="topic"/>
  158.         <parameter name="name"/>
  159.         <body>
  160.           <![CDATA[
  161.             if (topic == "nsPref:changed" && name == this.domain) {
  162.               const styles = ["pictures", "text", null];
  163.               const style = styles[this.prefs.getIntPref(name)];
  164.               this.setAttribute("buttonstyle", style);
  165.               this.update("toolbarbutton", style);
  166.               this.update("button", style);
  167.             }
  168.           ]]>
  169.         </body>
  170.       </method>
  171.  
  172.       <method name="update">
  173.         <parameter name="tag"/>
  174.         <parameter name="style"/>
  175.         <body>
  176.           <![CDATA[
  177.             var elements = this.getElementsByTagName(tag);
  178.             for (var i = 0; i < elements.length; i++)
  179.               elements[i].setAttribute("buttonstyle", style);
  180.           ]]>
  181.         </body>
  182.       </method>
  183.  
  184.       <constructor>
  185.         this.prefs.addObserver(this.domain, this, false);
  186.         if (this.prefs.getIntPref(this.domain) != 2)
  187.           this.observe(this.prefs, "nsPref:changed", this.domain);
  188.       </constructor>
  189.  
  190.       <destructor>
  191.         this.prefs.removeObserver(this.domain, this);
  192.       </destructor>
  193.     </implementation>
  194.   </binding>
  195.  
  196.   <binding id="menubar" extends="xul:menubar">
  197.     <resources>
  198.       <stylesheet src="chrome://global/skin/toolbar.css"/>
  199.     </resources>
  200.  
  201.     <content>
  202.       <xul:toolbargrippy xbl:inherits="last-toolbar,hidden=grippyhidden"
  203.                          tbattr="toolbar-grippy" class="toolbar-grippy"/>
  204.       <xul:hbox flex="1" class="toolbar-holder" xbl:inherits="collapsed,last-toolbar" align="center">
  205.         <children/>
  206.       </xul:hbox>
  207.     </content>
  208.     
  209.     <implementation implements="nsIAccessibleProvider">
  210.       <property name="accessible">
  211.         <getter>
  212.           <![CDATA[
  213.             var accService = Components.classes["@mozilla.org/accessibilityService;1"].getService(Components.interfaces.nsIAccessibilityService);
  214.             return accService.createXULMenubarAccessible(this);
  215.           ]]>
  216.         </getter>
  217.        </property>
  218.  
  219.       <constructor>
  220.         <![CDATA[
  221.           if (this.getAttribute("moz-collapsed") == "true" &&
  222.               this.parentNode.localName == "toolbox")
  223.             this.parentNode.createCollapsedGrippy(this);
  224.         ]]>
  225.       </constructor>
  226.     </implementation>
  227.   </binding>
  228.  
  229.   <binding id="toolbargrippy" display="xul:button"
  230.            extends="chrome://global/content/bindings/toolbar.xml#toolbar-base">
  231.     <content>
  232.       <xul:image class="toolbargrippy-arrow"/>
  233.       <xul:spacer class="toolbargrippy-texture" flex="1"/>
  234.     </content>
  235.  
  236.     <implementation>
  237.       <property name="collapsed">
  238.         <getter>
  239.           return this.hasAttribute("moz_grippy_collapsed");
  240.         </getter>
  241.         <setter>
  242.           if (val)
  243.             this.setAttribute("moz_grippy_collapsed", "true");
  244.           else
  245.             this.removeAttribute("moz_grippy_collapsed");
  246.           return val;
  247.         </setter>
  248.       </property>
  249.       
  250.       <method name="returnNode">
  251.         <parameter name="aNodeA"/>
  252.         <parameter name="aNodeB"/>
  253.         <body>
  254.         <![CDATA[
  255.           var node = this.parentNode;
  256.           while (node && node.localName != "window" && 
  257.                  (node.localName != aNodeA && (node.localName != aNodeB)))  {
  258.             node = node.parentNode;
  259.           }
  260.           return node;
  261.         ]]>
  262.         </body>
  263.       </method>
  264.       
  265.       <method name="grippyTriggered">
  266.         <body>
  267.         <![CDATA[
  268.           var toolbox = this.returnNode("toolbox");
  269.           var toolbar = this.returnNode("toolbar", "menubar");
  270.           if (this.collapsed) 
  271.             toolbox.expandToolbar(this.id);
  272.           else
  273.             toolbox.collapseToolbar(toolbar);
  274.         ]]>
  275.         </body>
  276.       </method>
  277.     </implementation>  
  278.     
  279.     <handlers>
  280.       <handler event="command">
  281.       <![CDATA[
  282.         this.grippyTriggered();
  283.       ]]>
  284.       </handler>
  285.     </handlers>
  286.   </binding>  
  287.  
  288.   <binding id="toolbarseparator" extends="chrome://global/content/bindings/toolbar.xml#toolbar-base"/>
  289.  
  290. </bindings>          
  291.  
  292.