gecko/mobile/chrome/content/notification.xml

136 lines
4.5 KiB
XML

<?xml version="1.0"?>
<!DOCTYPE bindings [
<!ENTITY % notificationDTD SYSTEM
"chrome://browser/locale/notification.dtd">
%notificationDTD;
]>
<bindings
xmlns="http://www.mozilla.org/xbl"
xmlns:xbl="http://www.mozilla.org/xbl"
xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<binding id="notification" extends="chrome://global/content/bindings/notification.xml#notification">
<resources>
<stylesheet src="chrome://browser/skin/notification.css"/>
</resources>
<content>
<xul:hbox class="notification-inner outset" flex="1" xbl:inherits="type">
<xul:vbox flex="1">
<xul:hbox anonid="details" align="center" flex="1">
<xul:description anonid="messageText" class="messageText" flex="1" xbl:inherits="xbl:text=label"/>
<xul:spacer flex="1"/>
</xul:hbox>
<xul:hbox pack="center" class="buttons"
oncommand="document.getBindingParent(this)._doButtonCommand(event);">
<children/>
</xul:hbox>
</xul:vbox>
<xul:toolbarbutton ondblclick="event.stopPropagation();"
class="messageCloseButton tabbable"
xbl:inherits="hidden=hideclose"
oncommand="document.getBindingParent(this).close();"/>
</xul:hbox>
</content>
<implementation implements="nsIDOMEventListener">
<constructor>
<![CDATA[
this._chromeTab = Browser.selectedTab.chromeTab;
document.addEventListener("TabSelect", this, true);
document.addEventListener("TabClose", this, true);
]]>
</constructor>
// We need to override the close method here, otherwise the destructor
// is not called on removeChild (see bug 230086)
<method name="close">
<body>
<![CDATA[
var control = this.control;
if (control) {
document.removeEventListener("TabClose", this, true);
document.removeEventListener("TabSelect", this, true);
control.removeNotification(this);
} else {
this.hidden = true;
}
// Fire an event when closing a notification
let event = document.createEvent("Events");
event.initEvent("AlertClose", true, true);
this.dispatchEvent(event);
]]>
</body>
</method>
<method name="handleEvent">
<parameter name="aEvent"/>
<body>
<![CDATA[
switch(aEvent.type) {
case "TabSelect":
if (this._chromeTab == aEvent.target)
this.hidden = false;
else
this.hidden = true;
break;
case "TabClose":
if (this._chromeTab == aEvent.target)
this.close();
break;
}
]]>
</body>
</method>
</implementation>
</binding>
<binding id="geo-notification" extends="chrome://browser/content/notification.xml#notification">
<resources>
<stylesheet src="chrome://browser/skin/notification.css"/>
</resources>
<content>
<xul:vbox class="notification-inner outset" flex="1" xbl:inherits="type">
<xul:hbox anonid="details">
<xul:description anonid="messageText" class="messageText" flex="1" xbl:inherits="xbl:text=label"/>
<xul:spacer flex="1"/>
<xul:label anonid="learnMore"
class="text-link"
value="&geolocation.learnMore;"
onclick="BrowserUI.newTab(this.href); return false;"/>
</xul:hbox>
<xul:hbox pack="center"
oncommand="document.getBindingParent(this)._doButtonCommand(event);">
<children/>
</xul:hbox>
</xul:vbox>
</content>
<implementation>
<constructor>
<![CDATA[
var formatter = Cc["@mozilla.org/toolkit/URLFormatterService;1"].getService(Ci.nsIURLFormatter);
var href = formatter.formatURLPref("browser.geolocation.warning.infoURL");
document.getAnonymousElementByAttribute(this, "anonid", "learnMore").href = href;
]]>
</constructor>
<field name="_checkbox">
document.getAnonymousElementByAttribute(this, "anonid", "rememberChoice")
</field>
<property name="rememberChoice"
onget="return this._checkbox.checked;"
readonly="true"/>
</implementation>
</binding>
</bindings>