forked from mirrors/gecko-dev
Bug 1495357 - convert wizard-buttons binding to a Custom Element, r=bgrins
Differential Revision: https://phabricator.services.mozilla.com/D23392 --HG-- extra : moz-landing-system : lando
This commit is contained in:
parent
60d90c1df7
commit
7d23a96f82
6 changed files with 165 additions and 172 deletions
|
|
@ -341,6 +341,7 @@ services/common/kinto-http-client.js
|
||||||
services/common/kinto-offline-client.js
|
services/common/kinto-offline-client.js
|
||||||
|
|
||||||
# toolkit/ exclusions
|
# toolkit/ exclusions
|
||||||
|
toolkit/content/widgets/wizard.xml
|
||||||
|
|
||||||
# Intentionally invalid JS
|
# Intentionally invalid JS
|
||||||
toolkit/components/workerloader/tests/moduleF-syntax-error.js
|
toolkit/components/workerloader/tests/moduleF-syntax-error.js
|
||||||
|
|
@ -355,7 +356,6 @@ toolkit/components/reader/JSDOMParser.js
|
||||||
|
|
||||||
# Uses preprocessing
|
# Uses preprocessing
|
||||||
toolkit/components/reader/Readerable.jsm
|
toolkit/components/reader/Readerable.jsm
|
||||||
toolkit/content/widgets/wizard.xml
|
|
||||||
toolkit/modules/AppConstants.jsm
|
toolkit/modules/AppConstants.jsm
|
||||||
toolkit/mozapps/update/tests/data/xpcshellConstantsPP.js
|
toolkit/mozapps/update/tests/data/xpcshellConstantsPP.js
|
||||||
tools/tryselect/selectors/chooser/templates/chooser.html
|
tools/tryselect/selectors/chooser/templates/chooser.html
|
||||||
|
|
|
||||||
|
|
@ -54,27 +54,27 @@ class Wizard(UIBaseLib):
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def cancel_button(self):
|
def cancel_button(self):
|
||||||
return self._buttons.find_element(By.ANON_ATTRIBUTE, {'dlgtype': 'cancel'})
|
return self._buttons.find_element(By.CSS_SELECTOR, '[dlgtype="cancel"]')
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def extra1_button(self):
|
def extra1_button(self):
|
||||||
return self._buttons.find_element(By.ANON_ATTRIBUTE, {'dlgtype': 'extra1'})
|
return self._buttons.find_element(By.CSS_SELECTOR, '[dlgtype="extra1"]')
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def extra2_button(self):
|
def extra2_button(self):
|
||||||
return self._buttons.find_element(By.ANON_ATTRIBUTE, {'dlgtype': 'extra2'})
|
return self._buttons.find_element(By.CSS_SELECTOR, '[dlgtype="extra2"]')
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def previous_button(self):
|
def previous_button(self):
|
||||||
return self._buttons.find_element(By.ANON_ATTRIBUTE, {'dlgtype': 'back'})
|
return self._buttons.find_element(By.CSS_SELECTOR, '[dlgtype="back"]')
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def finish_button(self):
|
def finish_button(self):
|
||||||
return self._buttons.find_element(By.ANON_ATTRIBUTE, {'dlgtype': 'finish'})
|
return self._buttons.find_element(By.CSS_SELECTOR, '[dlgtype="finish"]')
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def next_button(self):
|
def next_button(self):
|
||||||
return self._buttons.find_element(By.ANON_ATTRIBUTE, {'dlgtype': 'next'})
|
return self._buttons.find_element(By.CSS_SELECTOR, '[dlgtype="next"]')
|
||||||
|
|
||||||
# Properties for visual panels of the wizard #
|
# Properties for visual panels of the wizard #
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -82,7 +82,7 @@ toolkit.jar:
|
||||||
content/global/bindings/timekeeper.js (widgets/timekeeper.js)
|
content/global/bindings/timekeeper.js (widgets/timekeeper.js)
|
||||||
content/global/bindings/timepicker.js (widgets/timepicker.js)
|
content/global/bindings/timepicker.js (widgets/timepicker.js)
|
||||||
content/global/bindings/toolbarbutton.xml (widgets/toolbarbutton.xml)
|
content/global/bindings/toolbarbutton.xml (widgets/toolbarbutton.xml)
|
||||||
* content/global/bindings/wizard.xml (widgets/wizard.xml)
|
content/global/bindings/wizard.xml (widgets/wizard.xml)
|
||||||
content/global/elements/autocomplete-popup.js (widgets/autocomplete-popup.js)
|
content/global/elements/autocomplete-popup.js (widgets/autocomplete-popup.js)
|
||||||
content/global/elements/autocomplete-richlistitem.js (widgets/autocomplete-richlistitem.js)
|
content/global/elements/autocomplete-richlistitem.js (widgets/autocomplete-richlistitem.js)
|
||||||
content/global/elements/browser-custom-element.js (widgets/browser-custom-element.js)
|
content/global/elements/browser-custom-element.js (widgets/browser-custom-element.js)
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,10 @@
|
||||||
// This is loaded into chrome windows with the subscript loader. Wrap in
|
// This is loaded into chrome windows with the subscript loader. Wrap in
|
||||||
// a block to prevent accidentally leaking globals onto `window`.
|
// a block to prevent accidentally leaking globals onto `window`.
|
||||||
{
|
{
|
||||||
|
const {AppConstants} = ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
|
||||||
|
|
||||||
|
const kDTDs = [ "chrome://global/locale/wizard.dtd" ];
|
||||||
|
|
||||||
class MozWizardPage extends MozXULElement {
|
class MozWizardPage extends MozXULElement {
|
||||||
constructor() {
|
constructor() {
|
||||||
super();
|
super();
|
||||||
|
|
@ -29,4 +33,144 @@ class MozWizardPage extends MozXULElement {
|
||||||
}
|
}
|
||||||
|
|
||||||
customElements.define("wizardpage", MozWizardPage);
|
customElements.define("wizardpage", MozWizardPage);
|
||||||
|
|
||||||
|
class MozWizardButtons extends MozXULElement {
|
||||||
|
connectedCallback() {
|
||||||
|
this.textContent = "";
|
||||||
|
this.appendChild(MozXULElement.parseXULToFragment(this._markup, kDTDs));
|
||||||
|
|
||||||
|
this._wizardButtonDeck = this.querySelector(".wizard-next-deck");
|
||||||
|
|
||||||
|
this.initializeAttributeInheritance();
|
||||||
|
|
||||||
|
const listeners = [
|
||||||
|
["back", () => document.documentElement.rewind()],
|
||||||
|
["next", () => document.documentElement.advance()],
|
||||||
|
["finish", () => document.documentElement.advance()],
|
||||||
|
["cancel", () => document.documentElement.cancel()],
|
||||||
|
["extra1", () => document.documentElement.extra1()],
|
||||||
|
["extra2", () => document.documentElement.extra2()],
|
||||||
|
];
|
||||||
|
for (let [name, listener] of listeners) {
|
||||||
|
let btn = this.getButton(name);
|
||||||
|
if (btn) {
|
||||||
|
btn.addEventListener("command", listener);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static get inheritedAttributes() {
|
||||||
|
return AppConstants.platform == "macosx" ? {
|
||||||
|
"[dlgtype='finish']": "hidefinishbutton",
|
||||||
|
"[dlgtype='next']": "lastpage",
|
||||||
|
} : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
get _markup() {
|
||||||
|
if (AppConstants.platform == "macosx") {
|
||||||
|
return `
|
||||||
|
<vbox flex="1">
|
||||||
|
<hbox class="wizard-buttons-btm">
|
||||||
|
<button class="wizard-button" dlgtype="extra1" hidden="true"/>
|
||||||
|
<button class="wizard-button" dlgtype="extra2" hidden="true"/>
|
||||||
|
<button label="&button-cancel-mac.label;"
|
||||||
|
class="wizard-button" dlgtype="cancel"/>
|
||||||
|
<spacer flex="1"/>
|
||||||
|
<button label="&button-back-mac.label;"
|
||||||
|
accesskey="&button-back-mac.accesskey;"
|
||||||
|
class="wizard-button wizard-nav-button" dlgtype="back"/>
|
||||||
|
<button label="&button-next-mac.label;"
|
||||||
|
accesskey="&button-next-mac.accesskey;"
|
||||||
|
class="wizard-button wizard-nav-button" dlgtype="next"
|
||||||
|
default="true" />
|
||||||
|
<button label="&button-finish-mac.label;" class="wizard-button"
|
||||||
|
dlgtype="finish" default="true" />
|
||||||
|
</hbox>
|
||||||
|
</vbox>`;
|
||||||
|
}
|
||||||
|
|
||||||
|
let buttons = AppConstants.platform == "linux" ? `
|
||||||
|
<button label="&button-cancel-unix.label;"
|
||||||
|
class="wizard-button"
|
||||||
|
dlgtype="cancel"/>
|
||||||
|
<spacer style="width: 24px;"/>
|
||||||
|
<button label="&button-back-unix.label;"
|
||||||
|
accesskey="&button-back-unix.accesskey;"
|
||||||
|
class="wizard-button" dlgtype="back"/>
|
||||||
|
<deck class="wizard-next-deck">
|
||||||
|
<hbox>
|
||||||
|
<button label="&button-finish-unix.label;"
|
||||||
|
class="wizard-button"
|
||||||
|
dlgtype="finish" default="true" flex="1"/>
|
||||||
|
</hbox>
|
||||||
|
<hbox>
|
||||||
|
<button label="&button-next-unix.label;"
|
||||||
|
accesskey="&button-next-unix.accesskey;"
|
||||||
|
class="wizard-button" dlgtype="next"
|
||||||
|
default="true" flex="1"/>
|
||||||
|
</hbox>
|
||||||
|
</deck>` : `
|
||||||
|
<button label="&button-back-win.label;"
|
||||||
|
accesskey="&button-back-win.accesskey;"
|
||||||
|
class="wizard-button" dlgtype="back"/>
|
||||||
|
<deck class="wizard-next-deck">
|
||||||
|
<hbox>
|
||||||
|
<button label="&button-finish-win.label;"
|
||||||
|
class="wizard-button"
|
||||||
|
dlgtype="finish" default="true" flex="1"/>
|
||||||
|
</hbox>
|
||||||
|
<hbox>
|
||||||
|
<button label="&button-next-win.label;"
|
||||||
|
accesskey="&button-next-win.accesskey;"
|
||||||
|
class="wizard-button" dlgtype="next"
|
||||||
|
default="true" flex="1"/>
|
||||||
|
</hbox>
|
||||||
|
</deck>
|
||||||
|
<button label="&button-cancel-win.label;"
|
||||||
|
class="wizard-button"
|
||||||
|
dlgtype="cancel"/>`;
|
||||||
|
|
||||||
|
return `
|
||||||
|
<vbox class="wizard-buttons-box-1" flex="1">
|
||||||
|
<separator class="wizard-buttons-separator groove"/>
|
||||||
|
<hbox class="wizard-buttons-box-2">
|
||||||
|
<button class="wizard-button" dlgtype="extra1" hidden="true"/>
|
||||||
|
<button class="wizard-button" dlgtype="extra2" hidden="true"/>
|
||||||
|
<spacer flex="1" anonid="spacer"/>
|
||||||
|
${buttons}
|
||||||
|
</hbox>
|
||||||
|
</vbox>`;
|
||||||
|
}
|
||||||
|
|
||||||
|
onPageChange() {
|
||||||
|
if (AppConstants.platform == "macosx") {
|
||||||
|
this.setAttribute("hidefinishbutton",
|
||||||
|
!(this.getAttribute("lastpage") == "true"));
|
||||||
|
} else if (this.getAttribute("lastpage") == "true") {
|
||||||
|
this._wizardButtonDeck.setAttribute("selectedIndex", 0);
|
||||||
|
} else {
|
||||||
|
this._wizardButtonDeck.setAttribute("selectedIndex", 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
getButton(type) {
|
||||||
|
return this.querySelector(`[dlgtype="${type}"]`);
|
||||||
|
}
|
||||||
|
|
||||||
|
get defaultButton() {
|
||||||
|
const kXULNS =
|
||||||
|
"http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
|
||||||
|
let buttons = this._wizardButtonDeck.selectedPanel.
|
||||||
|
getElementsByTagNameNS(kXULNS, "button");
|
||||||
|
for (let i = 0; i < buttons.length; i++) {
|
||||||
|
if (buttons[i].getAttribute("default") == "true" &&
|
||||||
|
!buttons[i].hidden && !buttons[i].disabled) {
|
||||||
|
return buttons[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
customElements.define("wizard-buttons", MozWizardButtons);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,11 +4,6 @@
|
||||||
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
|
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE bindings [
|
|
||||||
<!ENTITY % wizardDTD SYSTEM "chrome://global/locale/wizard.dtd">
|
|
||||||
%wizardDTD;
|
|
||||||
]>
|
|
||||||
|
|
||||||
<bindings id="wizardBindings"
|
<bindings id="wizardBindings"
|
||||||
xmlns="http://www.mozilla.org/xbl"
|
xmlns="http://www.mozilla.org/xbl"
|
||||||
xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
|
xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
|
||||||
|
|
@ -23,7 +18,7 @@
|
||||||
</xul:deck>
|
</xul:deck>
|
||||||
<children/>
|
<children/>
|
||||||
|
|
||||||
<xul:hbox class="wizard-buttons" anonid="Buttons" xbl:inherits="pagestep,firstpage,lastpage"/>
|
<xul:wizard-buttons class="wizard-buttons" anonid="Buttons" xbl:inherits="pagestep,firstpage,lastpage"/>
|
||||||
</content>
|
</content>
|
||||||
|
|
||||||
<implementation>
|
<implementation>
|
||||||
|
|
@ -31,9 +26,9 @@
|
||||||
onset="return document.title = val;"/>
|
onset="return document.title = val;"/>
|
||||||
|
|
||||||
<property name="canAdvance" onget="return this._canAdvance;"
|
<property name="canAdvance" onget="return this._canAdvance;"
|
||||||
onset="this._nextButton.disabled = !val; return this._canAdvance = val;"/>
|
onset="this.getButton('next').disabled = !val; return this._canAdvance = val;"/>
|
||||||
<property name="canRewind" onget="return this._canRewind;"
|
<property name="canRewind" onget="return this._canRewind;"
|
||||||
onset="this._backButton.disabled = !val; return this._canRewind = val;"/>
|
onset="this.getButton('back').disabled = !val; return this._canRewind = val;"/>
|
||||||
|
|
||||||
<property name="pageStep" readonly="true" onget="return this._pageStack.length"/>
|
<property name="pageStep" readonly="true" onget="return this._pageStack.length"/>
|
||||||
|
|
||||||
|
|
@ -67,13 +62,13 @@
|
||||||
this.canRewind = false;
|
this.canRewind = false;
|
||||||
this.setAttribute("firstpage", "true");
|
this.setAttribute("firstpage", "true");
|
||||||
if (/Linux/.test(navigator.platform)) {
|
if (/Linux/.test(navigator.platform)) {
|
||||||
this._backButton.setAttribute('hidden', 'true');
|
this.getButton("back").setAttribute("hidden", "true");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
this.canRewind = true;
|
this.canRewind = true;
|
||||||
this.setAttribute("firstpage", "false");
|
this.setAttribute("firstpage", "false");
|
||||||
if (/Linux/.test(navigator.platform)) {
|
if (/Linux/.test(navigator.platform)) {
|
||||||
this._backButton.setAttribute('hidden', 'false');
|
this.getButton("back").setAttribute("hidden", "false");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -128,8 +123,7 @@
|
||||||
<parameter name="aDlgType"/>
|
<parameter name="aDlgType"/>
|
||||||
<body>
|
<body>
|
||||||
<![CDATA[
|
<![CDATA[
|
||||||
var btns = this.getElementsByAttribute("dlgtype", aDlgType);
|
return this._wizardButtons.getButton(aDlgType);
|
||||||
return btns.item(0) ? btns[0] : document.getAnonymousElementByAttribute(this._wizardButtons, "dlgtype", aDlgType);
|
|
||||||
]]>
|
]]>
|
||||||
</body>
|
</body>
|
||||||
</method>
|
</method>
|
||||||
|
|
@ -139,22 +133,6 @@
|
||||||
<field name="_wizardHeader"/>
|
<field name="_wizardHeader"/>
|
||||||
<field name="_wizardButtons"/>
|
<field name="_wizardButtons"/>
|
||||||
<field name="_deck"/>
|
<field name="_deck"/>
|
||||||
<field name="_backButton"/>
|
|
||||||
<field name="_nextButton"/>
|
|
||||||
<field name="_cancelButton"/>
|
|
||||||
|
|
||||||
<!-- functions to be added as oncommand listeners to the wizard buttons -->
|
|
||||||
<field name="_backFunc">(function() { document.documentElement.rewind(); })</field>
|
|
||||||
<field name="_nextFunc">(function() { document.documentElement.advance(); })</field>
|
|
||||||
<field name="_finishFunc">(function() { document.documentElement.advance(); })</field>
|
|
||||||
<field name="_cancelFunc">(function() { document.documentElement.cancel(); })</field>
|
|
||||||
<field name="_extra1Func">(function() { document.documentElement.extra1(); })</field>
|
|
||||||
<field name="_extra2Func">(function() { document.documentElement.extra2(); })</field>
|
|
||||||
|
|
||||||
<field name="_closeHandler">(function(event) {
|
|
||||||
if (document.documentElement.cancel())
|
|
||||||
event.preventDefault();
|
|
||||||
})</field>
|
|
||||||
|
|
||||||
<constructor><![CDATA[
|
<constructor><![CDATA[
|
||||||
this._canAdvance = true;
|
this._canAdvance = true;
|
||||||
|
|
@ -201,18 +179,17 @@
|
||||||
);
|
);
|
||||||
|
|
||||||
this._wizardButtons = document.getAnonymousElementByAttribute(this, "anonid", "Buttons");
|
this._wizardButtons = document.getAnonymousElementByAttribute(this, "anonid", "Buttons");
|
||||||
this._deck = document.getAnonymousElementByAttribute(this, "anonid", "Deck");
|
customElements.upgrade(this._wizardButtons);
|
||||||
|
|
||||||
this._initWizardButton("back");
|
this._deck = document.getAnonymousElementByAttribute(this, "anonid", "Deck");
|
||||||
this._initWizardButton("next");
|
|
||||||
this._initWizardButton("finish");
|
|
||||||
this._initWizardButton("cancel");
|
|
||||||
this._initWizardButton("extra1");
|
|
||||||
this._initWizardButton("extra2");
|
|
||||||
|
|
||||||
this._initPages();
|
this._initPages();
|
||||||
|
|
||||||
window.addEventListener("close", this._closeHandler);
|
window.addEventListener("close", (event) => {
|
||||||
|
if (document.documentElement.cancel()) {
|
||||||
|
event.preventDefault();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// start off on the first page
|
// start off on the first page
|
||||||
this.pageCount = this.wizardPages.length;
|
this.pageCount = this.wizardPages.length;
|
||||||
|
|
@ -386,18 +363,6 @@
|
||||||
]]></body>
|
]]></body>
|
||||||
</method>
|
</method>
|
||||||
|
|
||||||
<method name="_initWizardButton">
|
|
||||||
<parameter name="aName"/>
|
|
||||||
<body><![CDATA[
|
|
||||||
var btn = document.getAnonymousElementByAttribute(this._wizardButtons, "dlgtype", aName);
|
|
||||||
if (btn) {
|
|
||||||
btn.addEventListener("command", this["_"+aName+"Func"]);
|
|
||||||
this["_"+aName+"Button"] = btn;
|
|
||||||
}
|
|
||||||
return btn;
|
|
||||||
]]></body>
|
|
||||||
</method>
|
|
||||||
|
|
||||||
<method name="_adjustWizardHeader">
|
<method name="_adjustWizardHeader">
|
||||||
<body><![CDATA[
|
<body><![CDATA[
|
||||||
var label = this.currentPage.getAttribute("label");
|
var label = this.currentPage.getAttribute("label");
|
||||||
|
|
@ -460,116 +425,4 @@
|
||||||
</handler>
|
</handler>
|
||||||
</handlers>
|
</handlers>
|
||||||
</binding>
|
</binding>
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
<binding id="wizard-buttons">
|
|
||||||
<content>
|
|
||||||
<xul:vbox flex="1">
|
|
||||||
<xul:hbox class="wizard-buttons-btm">
|
|
||||||
<xul:button class="wizard-button" dlgtype="extra1" hidden="true"/>
|
|
||||||
<xul:button class="wizard-button" dlgtype="extra2" hidden="true"/>
|
|
||||||
<xul:button label="&button-cancel-mac.label;" class="wizard-button" dlgtype="cancel"/>
|
|
||||||
<xul:spacer flex="1"/>
|
|
||||||
<xul:button label="&button-back-mac.label;" accesskey="&button-back-mac.accesskey;"
|
|
||||||
class="wizard-button wizard-nav-button" dlgtype="back"/>
|
|
||||||
<xul:button label="&button-next-mac.label;" accesskey="&button-next-mac.accesskey;"
|
|
||||||
class="wizard-button wizard-nav-button" dlgtype="next"
|
|
||||||
default="true" xbl:inherits="hidden=lastpage" />
|
|
||||||
<xul:button label="&button-finish-mac.label;" class="wizard-button"
|
|
||||||
dlgtype="finish" default="true" xbl:inherits="hidden=hidefinishbutton" />
|
|
||||||
</xul:hbox>
|
|
||||||
</xul:vbox>
|
|
||||||
</content>
|
|
||||||
|
|
||||||
<implementation>
|
|
||||||
<method name="onPageChange">
|
|
||||||
<body><![CDATA[
|
|
||||||
this.setAttribute("hidefinishbutton", !(this.getAttribute("lastpage") == "true"));
|
|
||||||
]]></body>
|
|
||||||
</method>
|
|
||||||
</implementation>
|
|
||||||
|
|
||||||
</binding>
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
<binding id="wizard-buttons">
|
|
||||||
<content>
|
|
||||||
<xul:vbox class="wizard-buttons-box-1" flex="1">
|
|
||||||
<xul:separator class="wizard-buttons-separator groove"/>
|
|
||||||
<xul:hbox class="wizard-buttons-box-2">
|
|
||||||
<xul:button class="wizard-button" dlgtype="extra1" hidden="true"/>
|
|
||||||
<xul:button class="wizard-button" dlgtype="extra2" hidden="true"/>
|
|
||||||
<xul:spacer flex="1" anonid="spacer"/>
|
|
||||||
#ifdef XP_UNIX
|
|
||||||
<xul:button label="&button-cancel-unix.label;" class="wizard-button"
|
|
||||||
dlgtype="cancel"/>
|
|
||||||
<xul:spacer style="width: 24px"/>
|
|
||||||
<xul:button label="&button-back-unix.label;" accesskey="&button-back-unix.accesskey;"
|
|
||||||
class="wizard-button" dlgtype="back"/>
|
|
||||||
<xul:deck class="wizard-next-deck" anonid="WizardButtonDeck">
|
|
||||||
<xul:hbox>
|
|
||||||
<xul:button label="&button-finish-unix.label;" class="wizard-button"
|
|
||||||
dlgtype="finish" default="true" flex="1"/>
|
|
||||||
</xul:hbox>
|
|
||||||
<xul:hbox>
|
|
||||||
<xul:button label="&button-next-unix.label;" accesskey="&button-next-unix.accesskey;"
|
|
||||||
class="wizard-button" dlgtype="next"
|
|
||||||
default="true" flex="1"/>
|
|
||||||
</xul:hbox>
|
|
||||||
</xul:deck>
|
|
||||||
#else
|
|
||||||
<xul:button label="&button-back-win.label;" accesskey="&button-back-win.accesskey;"
|
|
||||||
class="wizard-button" dlgtype="back"/>
|
|
||||||
<xul:deck class="wizard-next-deck" anonid="WizardButtonDeck">
|
|
||||||
<xul:hbox>
|
|
||||||
<xul:button label="&button-finish-win.label;" class="wizard-button"
|
|
||||||
dlgtype="finish" default="true" flex="1"/>
|
|
||||||
</xul:hbox>
|
|
||||||
<xul:hbox>
|
|
||||||
<xul:button label="&button-next-win.label;" accesskey="&button-next-win.accesskey;"
|
|
||||||
class="wizard-button" dlgtype="next"
|
|
||||||
default="true" flex="1"/>
|
|
||||||
</xul:hbox>
|
|
||||||
</xul:deck>
|
|
||||||
<xul:button label="&button-cancel-win.label;" class="wizard-button"
|
|
||||||
dlgtype="cancel"/>
|
|
||||||
#endif
|
|
||||||
</xul:hbox>
|
|
||||||
</xul:vbox>
|
|
||||||
</content>
|
|
||||||
|
|
||||||
<implementation>
|
|
||||||
<field name="_wizardButtonDeck" readonly="true">
|
|
||||||
document.getAnonymousElementByAttribute(this, "anonid", "WizardButtonDeck");
|
|
||||||
</field>
|
|
||||||
|
|
||||||
<method name="onPageChange">
|
|
||||||
<body><![CDATA[
|
|
||||||
if (this.getAttribute("lastpage") == "true") {
|
|
||||||
this._wizardButtonDeck.setAttribute("selectedIndex", 0);
|
|
||||||
} else {
|
|
||||||
this._wizardButtonDeck.setAttribute("selectedIndex", 1);
|
|
||||||
}
|
|
||||||
]]></body>
|
|
||||||
</method>
|
|
||||||
|
|
||||||
<property name="defaultButton" readonly="true">
|
|
||||||
<getter><![CDATA[
|
|
||||||
const kXULNS =
|
|
||||||
"http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
|
|
||||||
var buttons = this._wizardButtonDeck.selectedPanel
|
|
||||||
.getElementsByTagNameNS(kXULNS, "button");
|
|
||||||
for (var i = 0; i < buttons.length; i++) {
|
|
||||||
if (buttons[i].getAttribute("default") == "true" &&
|
|
||||||
!buttons[i].hidden && !buttons[i].disabled)
|
|
||||||
return buttons[i];
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
]]></getter>
|
|
||||||
</property>
|
|
||||||
</implementation>
|
|
||||||
</binding>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
</bindings>
|
</bindings>
|
||||||
|
|
|
||||||
|
|
@ -672,10 +672,6 @@ wizardpage {
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.wizard-buttons {
|
|
||||||
-moz-binding: url("chrome://global/content/bindings/wizard.xml#wizard-buttons");
|
|
||||||
}
|
|
||||||
|
|
||||||
/********** Rich Listbox ********/
|
/********** Rich Listbox ********/
|
||||||
|
|
||||||
richlistbox {
|
richlistbox {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue