From 54e1a78e85211d2358200db65f2be9ac60590eca Mon Sep 17 00:00:00 2001 From: "doronr%us.ibm.com" Date: Fri, 17 Jun 2005 18:11:02 +0000 Subject: [PATCH] Bug 285584 - Make download & extension manager use accessible XBL widget. r=mconnor,a=bsmedberg git-svn-id: svn://10.0.0.236/trunk@174779 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/toolkit/content/jar.mn | 1 + .../toolkit/content/widgets/richlistbox.xml | 216 ++++++++++++++++++ mozilla/toolkit/content/xul.css | 8 + .../mozapps/downloads/content/download.xml | 35 +-- .../mozapps/downloads/content/downloads.css | 5 +- .../mozapps/downloads/content/downloads.js | 10 +- .../mozapps/downloads/content/downloads.xul | 24 +- .../mozapps/extensions/content/extensions.css | 5 - .../mozapps/extensions/content/extensions.js | 47 ++-- .../mozapps/extensions/content/extensions.xml | 29 ++- .../mozapps/extensions/content/extensions.xul | 31 ++- .../pinstripe/mozapps/downloads/downloads.css | 4 - .../winstripe/mozapps/downloads/downloads.css | 4 - .../mozapps/extensions/extensions.css | 6 + 14 files changed, 327 insertions(+), 98 deletions(-) create mode 100644 mozilla/toolkit/content/widgets/richlistbox.xml diff --git a/mozilla/toolkit/content/jar.mn b/mozilla/toolkit/content/jar.mn index 3a9333a6aed..1227c9717d9 100644 --- a/mozilla/toolkit/content/jar.mn +++ b/mozilla/toolkit/content/jar.mn @@ -51,6 +51,7 @@ toolkit.jar: *+ content/global/bindings/preferences.xml (widgets/preferences.xml) *+ content/global/bindings/progressmeter.xml (widgets/progressmeter.xml) *+ content/global/bindings/radio.xml (widgets/radio.xml) +*+ content/global/bindings/richlistbox.xml (widgets/richlistbox.xml) *+ content/global/bindings/scrollbar.xml (widgets/scrollbar.xml) *+ content/global/bindings/scrollbox.xml (widgets/scrollbox.xml) *+ content/global/bindings/splitter.xml (widgets/splitter.xml) diff --git a/mozilla/toolkit/content/widgets/richlistbox.xml b/mozilla/toolkit/content/widgets/richlistbox.xml new file mode 100644 index 00000000000..88fe26ec1bf --- /dev/null +++ b/mozilla/toolkit/content/widgets/richlistbox.xml @@ -0,0 +1,216 @@ + + + + + + + + + + + + + + + null + + + + + + + + + + + null + + + return this._selectedItem; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mozilla/toolkit/content/xul.css b/mozilla/toolkit/content/xul.css index 51d63b70637..f41b6b4b1c8 100644 --- a/mozilla/toolkit/content/xul.css +++ b/mozilla/toolkit/content/xul.css @@ -1010,3 +1010,11 @@ expander { -moz-binding: url("chrome://global/content/bindings/expander.xml#expander"); -moz-box-orient: vertical; } + + +/********** Rich Listbox ********/ + +richlistbox { + -moz-binding: url('chrome://global/content/bindings/richlistbox.xml#richlistbox'); + -moz-user-focus: normal; +} diff --git a/mozilla/toolkit/mozapps/downloads/content/download.xml b/mozilla/toolkit/mozapps/downloads/content/download.xml index 653fc2cafb8..145e97cb3ca 100644 --- a/mozilla/toolkit/mozapps/downloads/content/download.xml +++ b/mozilla/toolkit/mozapps/downloads/content/download.xml @@ -51,7 +51,7 @@ xmlns:xbl="http://www.mozilla.org/xbl" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> - + @@ -126,6 +126,15 @@ + + + + + + @@ -306,14 +315,12 @@ + onclick="this.parentNode.parentNode.parentNode.parentNode.parentNode.fireEvent('cancel');"/> + onclick="this.parentNode.parentNode.parentNode.parentNode.fireEvent('resume');"/> @@ -344,11 +351,9 @@ + onclick="this.parentNode.parentNode.parentNode.fireEvent('open');"/> + onclick="this.parentNode.parentNode.parentNode.fireEvent('remove');"/> @@ -368,11 +373,9 @@ + onclick="this.parentNode.parentNode.parentNode.fireEvent('retry');"/> + onclick="this.parentNode.parentNode.parentNode.fireEvent('remove');"/> @@ -392,11 +395,9 @@ + onclick="this.parentNode.parentNode.parentNode.fireEvent('retry');"/> + onclick="this.parentNode.parentNode.parentNode.fireEvent('remove');"/> diff --git a/mozilla/toolkit/mozapps/downloads/content/downloads.css b/mozilla/toolkit/mozapps/downloads/content/downloads.css index 9f223863a43..5152870d005 100644 --- a/mozilla/toolkit/mozapps/downloads/content/downloads.css +++ b/mozilla/toolkit/mozapps/downloads/content/downloads.css @@ -39,7 +39,8 @@ download[state="7"] { -moz-binding: url('chrome://mozapps/content/downloads/download.xml#install-done'); } -#downloadView { - -moz-binding: url('chrome://mozapps/content/downloads/download.xml#download-view'); +/* Only focus links in the selected item*/ +download[selected="true"] .link { + -moz-user-focus: normal; } diff --git a/mozilla/toolkit/mozapps/downloads/content/downloads.js b/mozilla/toolkit/mozapps/downloads/content/downloads.js index 772250c11c5..b13cdf32aaa 100644 --- a/mozilla/toolkit/mozapps/downloads/content/downloads.js +++ b/mozilla/toolkit/mozapps/downloads/content/downloads.js @@ -280,7 +280,7 @@ function onDownloadRemove(aEvent) { if (aEvent.target.removable) { gDownloadManager.removeDownload(aEvent.target.id); - + gDownloadViewController.onCommandUpdate(); } } @@ -637,8 +637,8 @@ function buildContextMenu(aEvent) while (popup.hasChildNodes()) popup.removeChild(popup.firstChild); - if (gDownloadsView.selected) { - var idx = parseInt(gDownloadsView.selected.getAttribute("state")); + if (gDownloadsView.selectedItem) { + var idx = parseInt(gDownloadsView.selectedItem.getAttribute("state")); if (idx < 0) idx = 0; @@ -731,8 +731,8 @@ function onDownloadShowOptions() function onDownloadShowInfo() { - if (gDownloadsView.selected) - fireEventForElement(gDownloadsView.selected, "properties"); + if (gDownloadsView.selectedItem) + fireEventForElement(gDownloadsView.selectedItem, "properties"); } function initAutoDownloadDisplay() diff --git a/mozilla/toolkit/mozapps/downloads/content/downloads.xul b/mozilla/toolkit/mozapps/downloads/content/downloads.xul index 0ae3cbc8570..2adc06eca09 100644 --- a/mozilla/toolkit/mozapps/downloads/content/downloads.xul +++ b/mozilla/toolkit/mozapps/downloads/content/downloads.xul @@ -96,41 +96,41 @@ - @@ -164,13 +164,13 @@ object="?icon"/> - - + diff --git a/mozilla/toolkit/mozapps/extensions/content/extensions.css b/mozilla/toolkit/mozapps/extensions/content/extensions.css index db938cf64ad..68eab8ecc15 100644 --- a/mozilla/toolkit/mozapps/extensions/content/extensions.css +++ b/mozilla/toolkit/mozapps/extensions/content/extensions.css @@ -1,8 +1,3 @@ -view { - -moz-binding: url("chrome://mozapps/skin/shared/richview.xml#richview"); - width: 20em; -} - extension { -moz-binding: url("chrome://mozapps/content/extensions/extensions.xml#extension"); -moz-box-orient: vertical; diff --git a/mozilla/toolkit/mozapps/extensions/content/extensions.js b/mozilla/toolkit/mozapps/extensions/content/extensions.js index 135d4b1ccad..949df93d100 100644 --- a/mozilla/toolkit/mozapps/extensions/content/extensions.js +++ b/mozilla/toolkit/mozapps/extensions/content/extensions.js @@ -130,8 +130,8 @@ function setRestartMessage(aItem) // Event Handlers function onExtensionSelect(aEvent) { - if (aEvent.target.selected) - aEvent.target.setAttribute("last-selected", aEvent.target.selected.id); + if (aEvent.target.selectedItem) + aEvent.target.setAttribute("last-selected", aEvent.target.selectedItem.id); else aEvent.target.removeAttribute("last-selected"); } @@ -194,7 +194,7 @@ function Startup() if (!lastSelected) gExtensionsView.selectionForward(); else - gExtensionsView.selected = lastSelected; + gExtensionsView.selectedItem = lastSelected; var extensionsStrings = document.getElementById("extensionsStrings"); document.title = extensionsStrings.getString(gWindowState + "Title"); @@ -500,11 +500,11 @@ function onThemeSelect(aEvent) return; var previewImageDeck = document.getElementById("previewImageDeck"); - if (!gExtensionsView.selected) { + if (!gExtensionsView.selectedItem) { previewImageDeck.setAttribute("selectedIndex", "0"); return; } - var url = gExtensionsView.selected.getAttribute("previewImage"); + var url = gExtensionsView.selectedItem.getAttribute("previewImage"); if (url) { previewImageDeck.setAttribute("selectedIndex", "2"); var previewImage = document.getElementById("previewImage"); @@ -545,7 +545,7 @@ function buildContextMenu(aEvent) var extensionsStrings = document.getElementById("extensionsStrings"); var menuitem_about = document.getElementById("menuitem_about_clone"); - var selectedItem = gExtensionsView.selected; + var selectedItem = gExtensionsView.selectedItem; var name = selectedItem ? selectedItem.getAttribute("name") : ""; menuitem_about.setAttribute("label", extensionsStrings.getFormattedString("aboutExtension", [name])); @@ -565,8 +565,8 @@ function buildContextMenu(aEvent) } else { var enableMenu = document.getElementById("menuitem_enable_clone"); - if (gExtensionsView.selected.getAttribute("compatible") == "false" || - gExtensionsView.selected.disabled) + if (gExtensionsView.selectedItem.getAttribute("compatible") == "false" || + gExtensionsView.selectedItem.disabled) // don't let the user activate incompatible themes, but show a (disabled) Enable // menuitem to give visual feedback; it's disabled because cmd_enable returns false enableMenu.hidden = false; @@ -719,10 +719,10 @@ var gExtensionsViewController = { var commandNode = document.getElementById(aCommand); return commandNode && (commandNode.parentNode == document.getElementById("extensionsCommands")); }, - + isCommandEnabled: function (aCommand) { - var selectedItem = gExtensionsView.selected; + var selectedItem = gExtensionsView.selectedItem; if (selectedItem) { if (selectedItem.getAttribute("downloadURL") != "") return false; @@ -807,7 +807,7 @@ var gExtensionsViewController = { doCommand: function (aCommand) { if (this.isCommandEnabled(aCommand)) - this.commands[aCommand](gExtensionsView.selected); + this.commands[aCommand](gExtensionsView.selectedItem); }, onCommandUpdate: function () @@ -895,7 +895,7 @@ var gExtensionsViewController = { var movingID = aSelectedItem.id; var moveTopID = gExtensionsView.children[0].id; gExtensionManager.moveToIndexOf(movingID, moveTopID); - gExtensionsView.selected = document.getElementById(movingID); + gExtensionsView.selectedItem = document.getElementById(movingID); }, cmd_moveup: function (aSelectedItem) @@ -903,7 +903,7 @@ var gExtensionsViewController = { var movingID = aSelectedItem.id; var moveAboveID = aSelectedItem.previousSibling.id; gExtensionManager.moveToIndexOf(movingID, moveAboveID); - gExtensionsView.selected = document.getElementById(movingID); + gExtensionsView.selectedItem = document.getElementById(movingID); }, cmd_movedn: function (aSelectedItem) @@ -911,7 +911,7 @@ var gExtensionsViewController = { var movingID = aSelectedItem.id; var moveBelowID = aSelectedItem.nextSibling.id; gExtensionManager.moveToIndexOf(movingID, moveBelowID); - gExtensionsView.selected = document.getElementById(movingID); + gExtensionsView.selectedItem = document.getElementById(movingID); }, cmd_update: function (aSelectedItem) @@ -961,12 +961,10 @@ var gExtensionsViewController = { return; var selectedID = aSelectedItem.id; - var selectedElement = document.getElementById(selectedID); - var nextElement = selectedElement.nextSibling; - if (!nextElement) - nextElement = selectedElement.previousSibling; - nextElement = nextElement.id; - + // if no next item, go to the previous one + if (!gExtensionsView.goDown()) + gExtensionsView.goUp(); + if (gWindowState == "themes") { // If the theme being uninstalled is the current theme, we need to reselect // the default. @@ -977,10 +975,9 @@ var gExtensionsViewController = { this.cmd_useTheme(document.getElementById(PREFIX_ITEM_URI + "{972ce4c6-7e08-4474-a285-3208198ce6fd}")); } gExtensionManager.uninstallItem(getIDFromResourceURI(selectedID)); - - gExtensionsView.selected = document.getElementById(nextElement); + }, - + cmd_showFolder: function (aSelectedItem) { var id = getIDFromResourceURI(aSelectedItem.id); @@ -993,13 +990,13 @@ var gExtensionsViewController = { cmd_disable: function (aSelectedItem) { gExtensionManager.disableItem(getIDFromResourceURI(aSelectedItem.id)); - gExtensionsView.selected = document.getElementById(aSelectedItem.id); + gExtensionsView.selectedItem = document.getElementById(aSelectedItem.id); }, cmd_enable: function (aSelectedItem) { gExtensionManager.enableItem(getIDFromResourceURI(aSelectedItem.id)); - gExtensionsView.selected = document.getElementById(aSelectedItem.id); + gExtensionsView.selectedItem = document.getElementById(aSelectedItem.id); #ifdef MOZ_PHOENIX } } diff --git a/mozilla/toolkit/mozapps/extensions/content/extensions.xml b/mozilla/toolkit/mozapps/extensions/content/extensions.xml index 597ab9f7211..c9f65ba85a7 100644 --- a/mozilla/toolkit/mozapps/extensions/content/extensions.xml +++ b/mozilla/toolkit/mozapps/extensions/content/extensions.xml @@ -23,6 +23,7 @@ # # Contributor(s): # Ben Goodger +# Doron Rosenberg # # Alternatively, the contents of this file may be used under the terms of # either the GNU General Public License Version 2 or later (the "GPL"), or @@ -50,11 +51,26 @@ xmlns="http://www.mozilla.org/xbl" xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" xmlns:xbl="http://www.mozilla.org/xbl"> - - + + + + + + + + + + + + + @@ -69,13 +85,10 @@ - + - - - - - + + diff --git a/mozilla/toolkit/mozapps/extensions/content/extensions.xul b/mozilla/toolkit/mozapps/extensions/content/extensions.xul index 1b52617edde..f4ffbeca0de 100644 --- a/mozilla/toolkit/mozapps/extensions/content/extensions.xul +++ b/mozilla/toolkit/mozapps/extensions/content/extensions.xul @@ -57,18 +57,18 @@ persist="width height screenX screenY sizeMode" onload="Startup();" onunload="Shutdown();" onclose="return closeWindow(false);"> - +