From fda5461bfe00d4909534474f38aa4b8ce99eb5a3 Mon Sep 17 00:00:00 2001 From: "morse%netscape.com" Date: Fri, 23 Mar 2001 02:58:11 +0000 Subject: [PATCH] bug 67379, bug 67389, bug 72855 Wallet Preview enhancements r=pnunn, sr=alecf git-svn-id: svn://10.0.0.236/trunk@90174 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/extensions/wallet/jar.mn | 2 +- mozilla/extensions/wallet/src/wallet.cpp | 21 ++--- .../wallet/walletpreview/WalletPreview.dtd | 4 + .../wallet/walletpreview/WalletPreview.js | 88 +++++++++++-------- .../walletpreview/WalletPreview.properties | 6 -- .../wallet/walletpreview/WalletPreview.xul | 31 +++---- .../resources/locale/en-US/WalletPreview.dtd | 4 + 7 files changed, 80 insertions(+), 76 deletions(-) create mode 100644 mozilla/extensions/wallet/walletpreview/WalletPreview.dtd delete mode 100644 mozilla/extensions/wallet/walletpreview/WalletPreview.properties create mode 100644 mozilla/extensions/wallet/walletpreview/resources/locale/en-US/WalletPreview.dtd diff --git a/mozilla/extensions/wallet/jar.mn b/mozilla/extensions/wallet/jar.mn index b5caac0bf24..4955730e279 100644 --- a/mozilla/extensions/wallet/jar.mn +++ b/mozilla/extensions/wallet/jar.mn @@ -45,7 +45,7 @@ en-US.jar: locale/en-US/communicator/wallet/WalletEditor.dtd (editor/WalletEditor.dtd) locale/en-US/communicator/wallet/SignonViewer.properties (signonviewer/SignonViewer.properties) locale/en-US/communicator/wallet/SignonViewer.dtd (signonviewer/SignonViewer.dtd) - locale/en-US/communicator/wallet/WalletPreview.properties (walletpreview/WalletPreview.properties) + locale/en-US/communicator/wallet/WalletPreview.dtd (walletpreview/WalletPreview.dtd) locale/en-US/communicator/wallet/cookie.properties (src/cookie.properties) locale/en-US/communicator/wallet/wallet.properties (src/wallet.properties) locale/en-US/communicator/wallet/privacy.dtd (editor/privacy.dtd) diff --git a/mozilla/extensions/wallet/src/wallet.cpp b/mozilla/extensions/wallet/src/wallet.cpp index 7b12bad83b7..c03a744530f 100644 --- a/mozilla/extensions/wallet/src/wallet.cpp +++ b/mozilla/extensions/wallet/src/wallet.cpp @@ -3318,16 +3318,17 @@ WLLT_PrefillReturn(const nsString& results) } /* Change the value */ - if ((next == mapElementPtr->value) || ((mapElementPtr->count>0) && next.IsEmpty())) { - if (((next == mapElementPtr->value) || next.IsEmpty()) && mapElementPtr->inputElement) { - mapElementPtr->inputElement->SetValue(next); - } else { - nsresult result; - result = wallet_GetSelectIndex(mapElementPtr->selectElement, next, mapElementPtr->selectIndex); - if (NS_SUCCEEDED(result)) { - mapElementPtr->selectElement->SetSelectedIndex(mapElementPtr->selectIndex); - } else { - mapElementPtr->selectElement->SetSelectedIndex(0); + + if (!next.IsEmpty()) { + if (mapElementPtr->inputElement) { + mapElementPtr->inputElement->SetValue(next); + } else { + nsresult result; + result = wallet_GetSelectIndex(mapElementPtr->selectElement, next, mapElementPtr->selectIndex); + if (NS_SUCCEEDED(result)) { + mapElementPtr->selectElement->SetSelectedIndex(mapElementPtr->selectIndex); + } else { + mapElementPtr->selectElement->SetSelectedIndex(0); } } } diff --git a/mozilla/extensions/wallet/walletpreview/WalletPreview.dtd b/mozilla/extensions/wallet/walletpreview/WalletPreview.dtd new file mode 100644 index 00000000000..07f666fc046 --- /dev/null +++ b/mozilla/extensions/wallet/walletpreview/WalletPreview.dtd @@ -0,0 +1,4 @@ + + + + diff --git a/mozilla/extensions/wallet/walletpreview/WalletPreview.js b/mozilla/extensions/wallet/walletpreview/WalletPreview.js index 46dd2a84e5b..01d368cce94 100644 --- a/mozilla/extensions/wallet/walletpreview/WalletPreview.js +++ b/mozilla/extensions/wallet/walletpreview/WalletPreview.js @@ -21,13 +21,6 @@ * Contributor(s): */ -/* for localization */ -var JS_STRINGS_FILE = "chrome://communicator/locale/wallet/WalletPreview.properties"; -var bundle = srGetStrBundle(JS_STRINGS_FILE); -var heading = bundle.GetStringFromName("heading"); -var bypass = bundle.GetStringFromName("bypass"); -var doNotPrefill = bundle.GetStringFromName("doNotPrefill"); - /* for xpconnect */ var walletpreview = Components.classes @@ -45,17 +38,6 @@ function Startup() { var BREAK = list[0]; prefillList = list.split(BREAK); - /* create the heading */ - - var title = document.getElementById("walletpreview"); - title.setAttribute("title", bundle.GetStringFromName("title")); - var heading = document.getElementById("heading"); - heading.setAttribute("value", bundle.GetStringFromName("heading")); - var fieldHeading = document.getElementById("fieldHeading"); - fieldHeading.setAttribute("value", bundle.GetStringFromName("fieldHeading")); - var valueHeading = document.getElementById("valueHeading"); - valueHeading.setAttribute("value", bundle.GetStringFromName("valueHeading")); - var menuPopup; var count; @@ -74,44 +56,68 @@ function Startup() { menuItem.setAttribute("selected", "true"); } menuItem.setAttribute("data", prefillList[i+1]); - menuItem.setAttribute("value", prefillList[i+2]); + menuItem.setAttribute("label", prefillList[i+2]); menuPopup.appendChild(menuItem); if(count == 0) { - var lastMenuItem = document.createElement("menuitem"); - lastMenuItem.setAttribute("data", prefillList[i+1]); - lastMenuItem.setAttribute("value", "<"+doNotPrefill+">"); - menuPopup.appendChild(lastMenuItem); - var menuList = document.createElement("menulist"); - menuList.setAttribute("id", "x"+(++fieldCount)); + menuList.setAttribute("id", "xx"+(++fieldCount)); menuList.setAttribute("allowevents", "true"); + menuList.setAttribute("onchange", "UpdateMenuListValue(this)"); +// menuList.setAttribute("editable", "true"); // done later to avoid crash menuList.appendChild(menuPopup); - var textBox = document.createElement("textbox"); - textBox.setAttribute("value", prefillList[i+1]); - textBox.setAttribute("readonly", "true"); + var text = document.createElement("text"); + text.setAttribute("value", prefillList[i+1]); + + var localCheckBox = document.createElement("checkbox"); + localCheckBox.setAttribute("id", "x"+fieldCount); + // Note: menulist name is deliberately chosen to be x + checkbox name in + // order to make it easy to get to menulist from associated checkbox + localCheckBox.setAttribute("oncommand", "UpdateMenuListEnable(this)"); + localCheckBox.setAttribute("checked", "true"); var row = document.createElement("row"); - row.appendChild(textBox); + row.appendChild(localCheckBox); + row.appendChild(text); row.appendChild(menuList); var rows = document.getElementById("rows"); rows.appendChild(row); + // xul bug: if this is done earlier, it will result in a crash (???) + menuList.setAttribute("editable", "true"); + } } - /* create checkbox label */ - - var checkBox = document.getElementById("checkbox"); - checkBox.setAttribute("value", bypass); - /* initialization OK and Cancel buttons */ doSetOKCancel(Save, Cancel); } +function UpdateMenuListValue(menuList) { + /* transfer value from menu list to the selected menu item */ + var menuItem = menuList.selectedItem; + if (menuItem) { + menuItem.setAttribute('value', menuList.value); + } +} + +function UpdateMenuListEnable(checkBox) { + var id = checkBox.getAttribute("id"); + var menuList = document.getElementById("x" + id); + var menuItem = menuList.selectedItem; + if (checkBox.checked) { + menuList.removeAttribute("disabled"); + menuList.setAttribute("editable", "true"); + } else { + menuList.setAttribute("disabled", "true"); + menuList.removeAttribute("editable"); + } + menuList.selectedItem = menuItem; +} + function EncodeVerticalBars(s) { s = s.replace(/\^/g, "^1"); s = s.replace(/\|/g, "^2"); @@ -124,10 +130,16 @@ function Save() { var fillins = ""; for (var i=1; i<=fieldCount; i++) { - var menuList = document.getElementById("x" + i); - fillins += - menuList.selectedItem.getAttribute("data") + "#*%$" + - menuList.selectedItem.getAttribute("value") + "#*%$"; + var menuList = document.getElementById("xx" + i); + var menuItem = menuList.selectedItem; + if (menuItem) { + fillins += menuItem.getAttribute("data") + "#*%$"; + var localCheckBox = document.getElementById("x" + i); + if (localCheckBox.checked) { + fillins += menuItem.getAttribute("label"); + } + fillins += "#*%$"; + } } var checkBox = document.getElementById("checkbox"); diff --git a/mozilla/extensions/wallet/walletpreview/WalletPreview.properties b/mozilla/extensions/wallet/walletpreview/WalletPreview.properties deleted file mode 100644 index dd8d8dc3baa..00000000000 --- a/mozilla/extensions/wallet/walletpreview/WalletPreview.properties +++ /dev/null @@ -1,6 +0,0 @@ -title = Prefill Form Data -heading = The following items can be pre-filled for you -fieldHeading = Field -valueHeading = Value -bypass = Bypass this screen when prefilling this form in the future -doNotPrefill = do not prefill \ No newline at end of file diff --git a/mozilla/extensions/wallet/walletpreview/WalletPreview.xul b/mozilla/extensions/wallet/walletpreview/WalletPreview.xul index fcafae7f46e..5dc2b0e6cdd 100644 --- a/mozilla/extensions/wallet/walletpreview/WalletPreview.xul +++ b/mozilla/extensions/wallet/walletpreview/WalletPreview.xul @@ -23,10 +23,9 @@ - + -