source: content/bindings/v_identity.xml @ d4e540

ng_0.9
Last change on this file since d4e540 was d4e540, checked in by rene <rene@…>, 22 months ago

interface changes

  • Property mode set to 100644
File size: 22.6 KB
Line 
1<?xml version="1.0"?>
2<!-- ***** BEGIN LICENSE BLOCK *****
3   - This program is free software; you can redistribute it and/or modify
4   - it under the terms of the GNU General Public License as published by
5   - the Free Software Foundation; either version 2 of the License, or
6   - (at your option) any later version.
7
8   - This program is distributed in the hope that it will be useful,
9   - but WITHOUT ANY WARRANTY; without even the implied warranty of
10   - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11   - GNU General Public License for more details.
12
13   - You should have received a copy of the GNU General Public License
14   - along with this program; if not, write to the Free Software
15   - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
16
17   - The Original Code is the Virtual Identity Extension.
18
19   - The Initial Developer of the Original Code is Rene Ejury.
20   - Portions created by the Initial Developer are Copyright (C) 2007
21   - the Initial Developer. All Rights Reserved.
22
23   - Contributor(s):
24   - ***** END LICENSE BLOCK ***** -->
25
26<!DOCTYPE overlay [
27<!ENTITY % vIdentDTD SYSTEM "chrome://v_identity/locale/v_identity.dtd">
28%vIdentDTD;
29]>
30
31
32<bindings id="mailComposeBindings"
33          xmlns="http://www.mozilla.org/xbl"
34          xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
35          xmlns:xbl="http://www.mozilla.org/xbl">
36   
37    <binding id="vI_tooltipPopupset">
38    <implementation>
39    <method name="addTooltip">
40    <parameter name="elem" />
41    <parameter name="permanent" />
42            <body><![CDATA[
43            if (elem) {
44                var randID = elem.tooltipElem.getAttribute("tooltip");
45                this.removeTooltip(randID);
46                if (!randID) {
47                    randID = "virtualIdentityExtension_tooltip_" + parseInt((new Date()).getTime());
48                    elem.tooltipElem.setAttribute("tooltip", randID);
49                }
50                var toolTip = document.createElement("tooltip");
51                toolTip.setAttribute("class", "identityDataTooltip");
52                toolTip.setAttribute("id", randID);
53                toolTip.elem = elem;
54                toolTip.permanent = permanent;
55                this.appendChild(toolTip);
56                }
57        ]]></body>
58    </method>
59    <method name="removeTooltip">
60    <parameter name="randID" />
61        <body><![CDATA[
62        if (randID) {
63            var randIDelem = document.getElementById(randID);
64            if (randIDelem) this.removeChild(randIDelem);
65        }
66        ]]></body>
67    </method>
68    </implementation>
69    </binding>
70   
71    <binding id="vI_identityDataTooltip" extends="chrome://global/content/bindings/popup.xml#tooltip">
72    <content onpopuphidden="popuphidden();" onpopupshowing="this.popupshowing();this.resize()" onpopupshown="this.resize()" >
73            <xul:browser style="overflow:hidden" anonid="tooltipBrowser" type="chrome" class="vI_htmlTextBox" cssSource="vI_TooltipBrowser.css" flex="1" disablehistory="true" onoverflow="document.getBindingParent(this).resize()"/>
74            <children />
75    </content>
76    <implementation>
77    <method name="popupshowing">
78            <body><![CDATA[
79            //virtualIdentityExtension.MyLog.debug("v_identity.xml vI_tooltipPopupset popupshowing.")
80        if (!this._identityInfo) {
81            this._identityInfo =
82                "<table><tr>" +
83                    "<td class='image'><img src='chrome://v_identity/skin/vi-info.png' /></td>" +
84                    "<td class='identityTable'>" +
85                        "<div class='name'>" + this.elem.identityData.combinedNameHtml + "</div>" +
86                                                "<table><tbody>" + this.elem.identityData.getMatrix() + "</tbody></table>" +
87                    "</td>" +
88                "</tr></table>"
89            //virtualIdentityExtension.MyLog.debug("v_identity.xml added tooltip with id='" +  this.elem.identityData.id.key + "'")
90            this._tooltipBrowser.outputString = this._identityInfo;
91        }
92        //virtualIdentityExtension.MyLog.debug("v_identity.xml vI_tooltipPopupset popupshowing done.")
93        ]]></body>
94    </method>
95    <method name ="popuphidden">
96            <body><![CDATA[
97        if (!this.permanent) this._identityInfo = null;
98        ]]></body>
99    </method>   
100    <method name="resize">
101        <body><![CDATA[
102        if (!this._identityInfo) return;
103        var width = document.getElementById("msgIdentity").boxObject.width * 0.7;
104        var height = this._tooltipBrowser.contentDocument.lastChild.scrollHeight + 5;
105        this.sizeTo(width, height);
106        width = document.getElementById("msgIdentity").boxObject.width * 0.75;
107        this.sizeTo(width, height);
108        ]]></body>
109    </method>
110    <field name="permanent" />
111    <field name="elem" />
112<!--    <field name="identityData">this.elem.identityData</field> -->
113    <field name="_identityInfo">false</field>
114<!--    <field name="_initialized">false</field> -->
115    <field name="_tooltipBrowser">document.getAnonymousElementByAttribute(this, "anonid", "tooltipBrowser")</field>
116    </implementation>
117    </binding> 
118   
119    <binding id="fromPopupItem_clone" extends="chrome://global/content/bindings/menu.xml#menuitem">
120    <content excludes="template,observes,menupopup">
121        <xul:image class="menupopup_clone-icon" xbl:inherits="src"/>
122        <xul:label class="menupopup_clone-text" xbl:inherits="value=label,accesskey,crop" crop="right" flex="1"/>
123        <xul:label value="&vident.accPane.prettyName.prefix;" class="menupopup_clone-vid virtIdLabel" vid="false" xbl:inherits="vid" crop="right"/>
124            <xul:label class="menupopup_clone-description" xbl:inherits="value=description" crop="right"/>
125        <xul:label class="menupopup_clone-smtp" xbl:inherits="value=smtp,style=smtpStyle" crop="right"/>
126    </content>
127    <implementation>
128    <constructor>
129        <![CDATA[
130        this._identityDataStorage = this.identityData;
131       
132        this.label = this._identityDataStorage.combinedName;
133        this.value = this._identityDataStorage.id.key;
134        // virtualIdentityExtension.MyLog.debug("v_identity.xml fromPopupItem_clone constructor id='" + this.value + "'")
135
136        this.description = this._identityDataStorage.sideDescription?this._identityDataStorage.sideDescription:"";
137        this.smtp = this._identityDataStorage.id.smtpServerName;
138
139        // virtualIdentityExtension.MyLog.debug("v_identity.xml fromPopupItem_clone constructor smtp='" + this.smtp + "'")
140        this.smtpStyle = "width:" + document.getElementById("virtualIdentityExtension_SmtpServerList").clientWidth + "px;";
141       
142        document.getElementById("virtualIdentityExtension_tooltipPopupset").addTooltip(this, true);
143        ]]>
144    </constructor>
145    <method name="clean">
146            <body><![CDATA[
147        document.getElementById("virtualIdentityExtension_tooltipPopupset")
148            .removeTooltip(this.tooltipElem.getAttribute("tooltip"));
149        ]]></body>
150    </method>
151    <destructor>
152        <![CDATA[
153        this.clean();
154        ]]>
155    </destructor>
156    <property name="_identityData" onget="return this._identityDataStorage;" />
157    <field name="tooltipElem">this</field>
158    <property name="vid" onget="return this.getAttribute('vid');" onset="this.setAttribute('vid', val); return val;" />
159    <property name="label" onget="return this.getAttribute('label');" onset="this.setAttribute('label', val); return val;" />
160    <property name="value" onget="return this.getAttribute('value');" onset="this.setAttribute('value', val); return val;" />
161    <property name="description" onget="return this.getAttribute('description');" onset="this.setAttribute('description', val); return val;" />
162    <property name="smtp" onget="return this.getAttribute('smtp');" onset="this.setAttribute('smtp', val); return val;" />
163    <property name="smtpStyle" onget="return this.getAttribute('smtpStyle');" onset="this.setAttribute('smtpStyle', val); return val;" />
164    </implementation>
165    </binding>
166   
167    <binding id="fromMenuList_new" extends="chrome://global/content/bindings/menulist.xml#menulist-editable">
168    <resources>
169            <stylesheet src="chrome://global/skin/menu.css"/>
170        <stylesheet src="chrome://global/skin/autocomplete.css"/>
171    </resources>
172    <content sizetopopup="pref">
173              <xul:moz-input-box id="identityHbox" anonid="inputBox" class="menulist-editable-box moz-input-box" xbl:inherits="context,disabled,readonly,focused" flex="1">
174                <xul:vbox flex="1">
175                  <!-- use type=search to activate trigger for inputevent -->
176                <xul:textbox class="plain menulist-editable-input" anonid="input" type="search" allowevents="true"
177                            oncommand="event.stopPropagation(); document.getBindingParent(this).inputEvent();"
178                            onblur="event.stopPropagation(); var elem = this; while (elem.localName != 'textbox') elem = elem.parentNode; document.getBindingParent(elem).blurEvent();"
179                            xbl:inherits="nomatch=vid,value=label,value,disabled,tabindex,readonly,placeholder"
180                            crop="right" highlightnonmatches="true"/>
181                </xul:vbox>
182                <xul:vbox><xul:spacer flex="1" />
183                        <xul:label value="&vident.accPane.prettyName.prefix; - " class="menu_clone-vid virtIdLabel" xbl:inherits="vid" crop="right"/>
184                <xul:spacer flex="1" /></xul:vbox>
185                <xul:observes element="virtualIdentityExtension_statusMenu_storage_save" attribute="checked" />
186                <xul:hbox id="baseIDHbox" class="baseIDHbox" >
187                        <xul:vbox><xul:spacer flex="1" />
188                                <xul:hbox>
189                                  <!--<xul:label id="msgIdentity_base_id_label" class="menu_clone-description" xbl:inherits="hidden=base_id_key_hidden" crop="right" hidden="true"/>-->
190                                        <xul:label id="virtualIdentityExtension_msgIdentityClone_label" class="menu_clone-description"
191                                                   xbl:inherits="value=description, vid" crop="right"/>
192                                        <xul:label id="virtualIdentityExtension_msgIdentityClone_idLabel" class="menu_clone-idDescription"
193                                                   xbl:inherits="value=idDescription, vid" crop="right"/>
194<!--                                        <xul:label class="menupopup_clone-smtp virtualIdentityExtension_debug_interface"
195                                                   xbl:inherits="value=smtp,style=smtpStyle" crop="right"/>
196                                        <xul:label class="menupopup_clone-accountkey virtualIdentityExtension_debug_interface"
197                                                   xbl:inherits="value=accountkey" crop="right"/>
198                                        <xul:label class="menupopup_clone-identitykey virtualIdentityExtension_debug_interface"
199                                        xbl:inherits="value=identitykey" crop="right"/>-->
200                                </xul:hbox>
201                        <xul:spacer flex="1" /></xul:vbox>
202                        <xul:observes element="virtualIdentityExtension_statusMenu_storage_saveBaseID" attribute="checked" />
203                        <xul:observes element="virtualIdentityExtension_statusMenu_storage_saveBaseID" attribute="disabled" />
204                </xul:hbox>
205              </xul:moz-input-box>
206              <xul:dropmarker class="menulist-dropmarker" type="menu" xbl:inherits="open,disabled,parentfocused=focused"/>
207              <xul:popupset id="virtualIdentityExtension_tooltipPopupset" />
208              <children includes="menupopup"/>
209    </content>
210        <implementation>
211         
212    <constructor>
213        <![CDATA[       
214        var inputTextbox = document.getAnonymousElementByAttribute(this, "class", "plain menulist-editable-input");
215       
216        // check if 'search' textboxes are not implemented change to 'timed'
217        if (!inputTextbox.timeout) inputTextbox.setAttribute("type", "timed");
218        inputTextbox.setAttribute("timeout", "300")
219       
220        // too early to access virtualIdentityExtension_tooltipPopupset, this might break the interface
221        // it will be done in v_identity.js init
222        // document.getElementById("virtualIdentityExtension_tooltipPopupset").addTooltip(this, false);
223        ]]>
224    </constructor>
225    <destructor>
226        <![CDATA[
227        var tooltipPopupset = document.getElementById("virtualIdentityExtension_tooltipPopupset")
228        if (tooltipPopupset) tooltipPopupset.removeTooltip(this.tooltipElem.getAttribute("tooltip"));
229        ]]>
230          </destructor>
231
232    <method name="addIdentityToCloneMenu">
233        <parameter name="localIdentityData" />
234        <body><![CDATA[
235        var existingItem = this._isExistingCloneMenuItem(localIdentityData);
236//                var existingItem = localIdentityData.isExistingIdentity();
237        if (!existingItem) {
238            var MenuItem = document.createElement("menuitem");
239            this._popupElem.appendChild(MenuItem);
240            MenuItem.identityData = localIdentityData;
241                        return MenuItem;
242        }
243        else return existingItem;
244        ]]></body>
245    </method>
246    <method name="addIdentitiesToCloneMenu">
247        <parameter name="identityCollection" />
248        <body><![CDATA[
249        for (var index = 0; index < identityCollection.number; index++)
250            identityCollection.menuItems[index] =
251                this.addIdentityToCloneMenu(identityCollection.identityDataCollection[index])
252        ]]></body>
253    </method>
254    <method name="_getMenuItemForIdentity">
255        <parameter name="identitykey" />
256        <body><![CDATA[
257                virtualIdentityExtension.MyLog.debug("v_identity.xml _getMenuItemForIdentity " + identitykey)
258        var MenuItems = this._popupElem.childNodes;
259        for (var index = 0; index < MenuItems.length; index++) {
260                  if (MenuItems[index].getAttribute("identitykey") == identitykey)
261                          return MenuItems[index]
262        }
263        return null;
264        ]]></body>
265    </method>
266    <property name="selectedMenuItem" >
267        <getter><![CDATA[
268            return this.selectedItem;
269        ]]></getter>
270        <setter><![CDATA[
271                        virtualIdentityExtension.MyLog.debug("v_identity.xml selectedMenuItem setter. " + val)
272                        if (val) {
273                          // remove previous selected MenuItem, else a change to the same Item won't takeOver all settings
274                          this.setSelectionInternal(null);
275                       
276                          if (typeof(val) == "object") this.selectedItem = val
277                          else if (val == "default")
278                                  this.selectedItem = this._getMenuItemForIdentity(this._AccountManager.defaultAccount.defaultIdentity.key)
279                          else this.selectedItem = this._getMenuItemForIdentity(val)
280
281                          this._identityDataStorage.takeOverAvailableData(this.selectedItem.identityData);
282
283                          LoadIdentity();
284                          }
285        ]]></setter>   
286    </property>
287    <method name="_isExistingCloneMenuItem">
288        <parameter name="localIdentityData" />
289        <body><![CDATA[
290                //virtualIdentityExtension.MyLog.debug("v_identity.xml _isExistingCloneMenuItem " + localIdentityData.id)
291        var MenuItems = this._popupElem.childNodes
292        for (var j = 0; j < MenuItems.length; j++) {
293                    if (MenuItems[j].command == "cmd_customizeFromAddress" ||
294                      MenuItems[j].tagName == "menuseparator")
295                      continue;
296                 
297                    if (MenuItems[j].identityData.equals(localIdentityData)) {
298                      virtualIdentityExtension.MyLog.debug("v_identity.xml _isExistingCloneMenuItem found: " + MenuItems[j].value);
299                      return MenuItems[j];
300                    }
301        }
302                virtualIdentityExtension.MyLog.debug("v_identity.xml _isExistingCloneMenuItem didn't found: " + localIdentityData.email);
303        return null;
304        ]]></body>
305    </method>
306    <field name="_msgIdentityPopupElem">document.getElementById("msgIdentityPopup")</field>
307    <property name="_AccountManager" >
308        <getter><![CDATA[
309            return Components.classes["@mozilla.org/messenger/account-manager;1"]
310              .getService(Components.interfaces.nsIMsgAccountManager);
311        ]]></getter>
312    </property>
313    <method name="blurEvent">
314            <body><![CDATA[
315        virtualIdentityExtension.MyLog.debug("v_identity.xml blurEvent")
316        this.inputEvent(); // timeout might prevent inputEvent to fire before blurEvent
317       
318        this.label = this.identityData.combinedName; // add "<" and ">" to email if required
319        this.setAttribute("label", this.label);
320        ]]></body>
321    </method>
322    <method name="inputEvent">
323            <body><![CDATA[     
324        virtualIdentityExtension.MyLog.debug("v_identity.xml inputEvent")
325       
326        this.identityData.combinedName = this.label;
327       
328        var existingIdentity = this.checkForVirtualIdentity();
329                if (existingIdentity && this.selectedMenuItem.identitykey != existingIdentity)
330                    this.selectedMenuItem = existingIdentity;           
331        ]]></body>
332    </method>
333    <method name="checkForVirtualIdentity">
334        <body><![CDATA[
335        virtualIdentityExtension.MyLog.debug("v_identity.xml checkForVirtualIdentity: " + this.identityData.id.key + " '" + this.identityData.id.value + "'")
336        var existingIdentity = this.identityData.isExistingIdentity(false);
337       
338        this.vid = (!existingIdentity);
339       
340        return existingIdentity;
341        ]]></body>
342    </method>
343    <property name="identityData">
344        <getter><![CDATA[
345                  //virtualIdentityExtension.MyLog.debug("v_identity.xml identityData getter")
346                  if (this._identityDataStorage) {
347                    this._identityDataStorage.extras.getValuesFromEnvironment(); // update with current data
348                  }
349                  else {
350                    virtualIdentityExtension.MyLog.debug("v_identity.xml identityData getter - _identityDataStorage not set")
351                  }
352                  return this._identityDataStorage;
353        ]]></getter>
354        <setter><![CDATA[
355        virtualIdentityExtension.MyLog.debug("v_identity.xml identityData setter")
356        if (val) {
357            this._identityDataStorage = val;
358        }
359        virtualIdentityExtension.MyLog.debug("v_identity.xml identityData setter done.")
360        ]]></setter>
361    </property>
362    <field name="_popupElem">document.getElementById("msgIdentityPopup")</field>
363    <field name="tooltipElem">document.getAnonymousElementByAttribute(this, "anonid", "inputBox")</field>
364    <field name="textBoxElem">document.getAnonymousElementByAttribute(this, "anonid", "input");</field>
365    <property name="email" onset="this.identityData.email = val; this.label = this.identityData.combinedName; this.inputEvent()" />
366    <property name="vid" onget="return (this.getAttribute('vid') == 'true');" onset="this.setAttribute('vid',val); return val;" />
367        <property name="value" onget="return this.textBoxElem.value;" onset="this.textBoxElem.value = val; return val;" />
368    <property name="extras" onget="return this.identityData.extras;" />
369    <property name="description" onget="return this.getAttribute('description');" onset="this.setAttribute('description', val); return val;" />
370    </implementation>
371    </binding>
372
373       
374        <binding id="fromPopupItem_new" extends="chrome://global/content/bindings/menu.xml#menuitem">
375    <content class="vI_menupopupItem" excludes="template,observes,menupopup">
376        <xul:image class="menupopup_clone-icon" xbl:inherits="src"/>
377        <xul:label class="menupopup_clone-text" xbl:inherits="value=label,accesskey,crop" crop="right" flex="1"/>
378        <xul:label value="&vident.accPane.prettyName.prefix; - " class="menupopup_clone-vid virtIdLabel" vid="false" xbl:inherits="vid" crop="right"/>
379            <xul:label class="menupopup_clone-description" xbl:inherits="value=description" crop="right"/>
380                <xul:label class="menupopup_clone-idDescription" xbl:inherits="value=idDescription" crop="right"/>
381<!--                <xul:label class="menupopup_clone-smtp virtualIdentityExtension_debug_interface" xbl:inherits="value=smtp,style=smtpStyle" crop="right"/>
382                <xul:label class="menupopup_clone-accountkey virtualIdentityExtension_debug_interface" xbl:inherits="value=accountkey" crop="right"/>
383                <xul:label class="menupopup_clone-identitykey virtualIdentityExtension_debug_interface" xbl:inherits="value=identitykey" crop="right"/>-->
384    </content>
385    <implementation>
386    <constructor>
387        <![CDATA[
388                document.getElementById("virtualIdentityExtension_tooltipPopupset").addTooltip(this, true);
389                this.vid = "false"; // by default the item is no virtual identity
390        ]]>
391    </constructor>
392        <destructor>
393        <![CDATA[
394        document.getElementById("virtualIdentityExtension_tooltipPopupset")
395            .removeTooltip(this.tooltipElem.getAttribute("tooltip"));
396        ]]>
397        </destructor>
398        <method name="createIdentityData">
399        <body><![CDATA[
400            var identity = this._AccountManager.getIdentity(this.getAttribute("identitykey"));
401            if (identity) {
402              this.identityData = new virtualIdentityExtension.identityData(window, identity.email,
403                                    identity.fullName, identity.key,
404                                    null, null, true);
405              this._identityData.extras.readIdentityValues(identity);
406              }
407            ]]></body>
408        </method>
409        <method name="_setAttributeIfNotEmpty">
410            <parameter name="attribute" />
411            <parameter name="value" />
412            <body><![CDATA[
413                if (!this.getAttribute(attribute))
414                  this.setAttribute(attribute, value);
415            ]]></body>
416        </method>
417        <property name="identityData">
418          <setter><![CDATA[
419            // if menuitem get's initialized with identityData,
420            // attributes (label, value, description, identitykey, accountkey) have to be set accordingly
421           
422           
423            //virtualIdentityExtension.MyLog.debug("v_identity.xml fromPopupItem_new set identityData");
424            this._identityData = val;
425             
426           
427            this._setAttributeIfNotEmpty("identitykey", this._identityData.id.key);
428            this._setAttributeIfNotEmpty("accountkey", this._identityData.id.accountkey);
429
430            this._setAttributeIfNotEmpty("label", this._identityData.combinedName);
431            this._setAttributeIfNotEmpty("value", this._identityData.combinedName);
432            this._setAttributeIfNotEmpty("smtp", this._identityData.id.smtpServerName);
433            this._setAttributeIfNotEmpty("description", this._identityData.id.accountIncomingServerPrettyName);
434            this._setAttributeIfNotEmpty("idDescription", this._identityData.id.value);
435           
436           
437            this.setAttribute("vid", this._identityData.isExistingIdentity()?"false":"true");
438
439            //virtualIdentityExtension.MyLog.debug("v_identity.xml fromPopupItem_new set identityData done.");
440              ]]></setter>
441            <getter><![CDATA[
442              if (!this._identityData)
443                this.createIdentityData();
444
445              return this._identityData;
446            ]]></getter>
447        </property>
448       
449        <property name="_AccountManager" >
450          <getter><![CDATA[
451            return Components.classes["@mozilla.org/messenger/account-manager;1"]
452              .getService(Components.interfaces.nsIMsgAccountManager);
453          ]]></getter>
454        </property>
455
456    <field name="tooltipElem">this</field>
457    <property name="vid" onget="return this.getAttribute('vid');" onset="this.setAttribute('vid', val); return val;" />
458    </implementation>
459    </binding>
460</bindings>
Note: See TracBrowser for help on using the repository browser.