OSDN Git Service

import source-tree based svn r84.
[bluegriffon/BlueGriffon.git] / base / content / bluegriffon / bindings / filepickerbutton.xml
1 <?xml version="1.0"?>
2
3 <!-- ***** BEGIN LICENSE BLOCK *****
4    - Version: MPL 1.1/GPL 2.0/LGPL 2.1
5    -
6    - The contents of this file are subject to the Mozilla Public License Version
7    - 1.1 (the "License"); you may not use this file except in compliance with
8    - the License. You may obtain a copy of the License at
9    - http://www.mozilla.org/MPL/
10    -
11    - Software distributed under the License is distributed on an "AS IS" basis,
12    - WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
13    - for the specific language governing rights and limitations under the
14    - License.
15    -
16    - The Original Code is BlueGriffon.
17    -
18    - The Initial Developer of the Original Code is
19    - Disruptive Innovations SARL.
20    - Portions created by the Initial Developer are Copyright (C) 2008
21    - the Initial Developer. All Rights Reserved.
22    -
23    - Contributor(s):
24    -   Daniel Glazman (daniel.glazman@disruptive-innovations.com), Original Author
25    -
26    - Alternatively, the contents of this file may be used under the terms of
27    - either the GNU General Public License Version 2 or later (the "GPL"), or
28    - the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
29    - in which case the provisions of the GPL or the LGPL are applicable instead
30    - of those above. If you wish to allow use of your version of this file only
31    - under the terms of either the GPL or the LGPL, and not to allow others to
32    - use your version of this file under the terms of the MPL, indicate your
33    - decision by deleting the provisions above and replace them with the notice
34    - and other provisions required by the LGPL or the GPL. If you do not delete
35    - the provisions above, a recipient may use your version of this file under
36    - the terms of any one of the MPL, the GPL or the LGPL.
37    -
38    - ***** END LICENSE BLOCK ***** -->
39
40 <!DOCTYPE bindings [
41   <!ENTITY % filepickerbuttonDTD SYSTEM "chrome://bluegriffon/locale/filepickerbutton.dtd" >
42   %filepickerbuttonDTD;
43 ]>
44
45
46 <bindings id="filepickerbuttonBindings"
47           xmlns="http://www.mozilla.org/xbl"
48           xmlns:html="http://www.w3.org/1999/xhtml"
49           xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
50           xmlns:xbl="http://www.mozilla.org/xbl">
51
52   <binding id="filepickerbutton">
53
54     <resources>
55       <stylesheet src="chrome://bluegriffon/content/bindings/filepickerbutton.css"/>
56     </resources>
57
58     <content>
59       <xul:toolbarbutton xbl:inherits="disabled,tooltiptext=title"
60                          anonid="button" />
61       <children/>
62     </content>
63
64     <implementation>
65       <property name="mButton"
66                 readonly="true"
67                 onget="return document.getAnonymousElementByAttribute(this, 'anonid', 'button')" />
68
69       <property name="value"
70                 onget="return this.getAttribute('value');"
71                 onset="this.setAttribute('value', val);"/>
72
73       <property name="disabled"
74                 onget="return this.mButton.getAttribute('disabled');"
75                 onset="this.mButton.setAttribute('disabled', val);"/>
76
77       <field name="fp">null</field>
78       <field name="nsIFP">Components.interfaces.nsIFilePicker</field>
79
80       <constructor>
81         <![CDATA[
82           try {
83             this.fp = Components.classes["@mozilla.org/filepicker;1"].
84                         createInstance(this.nsIFP);
85             this.fp.init(window, this.getAttribute("title"),
86                          parseInt(this.getAttribute("mode")));
87           }
88           catch(e) {}
89         ]]>
90       </constructor>
91
92       <method name="appendFilters">
93         <parameter name="aFilter"/>
94         <body>
95         <![CDATA[
96           try {
97             this.fp.appendFilters(aFilter);
98           }
99           catch(e) {}
100         ]]>
101         </body>
102       </method>
103
104       <method name="appendFilter">
105         <parameter name="aTitle"/>
106         <parameter name="aFilter"/>
107         <body>
108         <![CDATA[
109           try {
110             this.fp.appendFilter(aTitle, aFilter);
111           }
112           catch(e) {}
113         ]]>
114         </body>
115       </method>
116
117      </implementation>
118
119     <handlers>
120       <handler event="command" phase="capturing">
121         <![CDATA[
122           try {
123             if (this.fp.show() == this.nsIFP.returnOK &&
124                 this.fp.fileURL.spec && this.fp.fileURL.spec.length > 0)
125             {
126               var spec = this.fp.fileURL.spec;
127               if (this.hasAttribute("processor"))
128                 spec = eval(this.getAttribute("processor") + "(spec)");
129               this.setAttribute("value", spec);
130               if (this.hasAttribute("control"))
131               {
132                 var c = document.getElementById(this.getAttribute("control"));
133                 c.value = spec;
134               }
135             }
136           }
137           catch(e) {}
138         ]]>
139       </handler>
140     </handlers>
141
142   </binding>
143
144 </bindings>