/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- * * The contents of this file are subject to the Netscape Public * License Version 1.1 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.mozilla.org/NPL/ * * Software distributed under the License is distributed on an "AS * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or * implied. See the License for the specific language governing * rights and limitations under the License. * * The Original Code is Mozilla Communicator client code, released March * 31, 1998. * * The Initial Developer of the Original Code is Netscape Communications * Corporation. Portions created by Netscape are * Copyright (C) 1998 Netscape Communications Corporation. All * Rights Reserved. * * Contributor(s): */ /* universal global variables */ var walleteditor = null; // walleteditor interface var walletList = []; // input stream var bundle = null; // string bundle var JS_STRINGS_FILE = "chrome://wallet/locale/WalletEditor.properties"; /* wallet-specific global variables */ var schemas = []; var schemasLength; var entries = []; var entriesLength; var strings = []; var stringsLength; var BREAK; /*** =================== ?? =================== ***/ function ViewEntriesFromXul(){ ViewEntries(); } function ViewSynonymsFromXul(){ ViewSynonyms(); } /*** =================== STARTING AND STOPPING =================== ***/ /* initializes the wallet editor dialog */ function Startup() { walleteditor = Components.classes["component://netscape/walleteditor/walleteditor-world"].createInstance(); walleteditor = walleteditor.QueryInterface(Components.interfaces.nsIWalletEditor); bundle = srGetStrBundle(JS_STRINGS_FILE); /* initialize string bundle */ if (!FetchInput()) { return; /* user failed to unlock the database */ } ViewSchema(); /* create the display of schemas */ doSetOKCancel(onOK, null); /* register the onOK method */ window.sizeToContent(); } /* routine that executes when OK button is pressed */ function onOK(){ var i, j, k; var output = "OK" + BREAK; for (i=0; i entryToDelete) { schemas[i]--; } } schemasLength--; for (i=CurrentSchema(); i<=schemasLength; i++) { schemas[i] = schemas[i+1]; } } /* low-level delete-entry routine */ function DeleteEntry0() { var i; entryToDelete = schemas[CurrentSchema()]+CurrentEntry(); while (entries[entryToDelete]+2 < entries[entryToDelete+1]-1) { DeleteSynonym0(); } if ((schemas[CurrentSchema()+1] - schemas[CurrentSchema()]) == 1) { if(strings[entries[entryToDelete]+1] != "") { deleteString(entries[entryToDelete]+1); } return; } while(strings[entries[entryToDelete]] != "") { deleteString(entries[entryToDelete]); } deleteString(entries[entryToDelete]); entriesLength--; for (i=entryToDelete; i<=entriesLength; i++) { entries[i] = entries[i+1]; } for (i=0; i<=schemasLength; i++) { if (schemas[i] > entryToDelete) { schemas[i]--; } } } /* low-level delete-synonym routine */ function DeleteSynonym0() { stringToDelete = entries[schemas[CurrentSchema()]+CurrentEntry()]+2+CurrentSynonym(); deleteString(stringToDelete); } /* low-level add-schema routine */ function AddSchema0() { var i; var text = prompt(bundle.GetStringFromName("EnterNewSchema"), "" ); if (text == "") { return; } schemaIndex = 0; while ((schemaIndexschemaIndex; i--) { schemas[i] = schemas[i-1]+1; } entryIndex = schemas[schemaIndex]; entriesLength++; for (i=entriesLength; i>entryIndex; i--) { entries[i] = entries[i-1]; } stringIndex = entries[entryIndex]; if (stringIndex == stringsLength) { stringIndex--; } addString(stringIndex, text); addString(stringIndex+1, ""); schemas[schemaIndex] = entryIndex; entries[entryIndex] = stringIndex; } /* low-level add-entry routine */ function AddEntry0() { var i; var text = prompt(bundle.GetStringFromName("EnterNewEntry"), "" ); if (text == "") { return; } stringIndex = entries[schemas[CurrentSchema()]+CurrentEntry()]; if(strings[entries[schemas[CurrentSchema()]+CurrentEntry()]+1]=="") { addString(entries[schemas[CurrentSchema()]+CurrentEntry()]+1, text); return; } addString(stringIndex, strings[entries[schemas[CurrentSchema()]]]); addString(stringIndex+1, text); addString(stringIndex+2, ""); entriesLength++; for (i=entriesLength; i>schemas[CurrentSchema()]+CurrentEntry(); i--) { entries[i] = entries[i-1]; } entries[schemas[CurrentSchema()]+CurrentEntry()] = stringIndex; for (i=CurrentSchema()+1; i<=schemasLength; i++) { schemas[i]++; } } /* low-level add-synonym routine */ function AddSynonym0() { var text = prompt(bundle.GetStringFromName("EnterNewSynonym"), "" ); if (text == "") { return; } addString(entries[schemas[CurrentSchema()]+CurrentEntry()]+2, text); } function deleteString(stringToDelete) { var i; stringsLength--; for (i=stringToDelete; i stringToDelete) { entries[i]--; } } } function addString(stringToAdd, text) { var i; stringsLength++; for (i=stringsLength; i>stringToAdd; i--) { strings[i] = strings[i-1]; } strings[stringToAdd] = text; for (i=0; i<=entriesLength; i++) { if (entries[i] >= stringToAdd) { entries[i]++; } } } /* high-level add-schema routine */ function AddSchema() { var button = document.getElementById("addSchema"); if( button.getAttribute("disabled") == "true" ) { return; } AddSchema0(); ViewSchema(); //?? otherwise schema list doesn't get redrawn } /* high-level add-entry routine */ function AddEntry() { var button = document.getElementById("addEntry"); if( button.getAttribute("disabled") == "true" ) { return; } AddEntry0(); ViewEntries(); //?? otherwise entry list doesn't get redrawn } /* high-level add-synonym routine */ function AddSynonym() { var button = document.getElementById("addSynonym"); if( button.getAttribute("disabled") == "true" ) { return; } AddSynonym0(); ViewSynonyms(); //?? otherwise synonym list doesn't get redrawn ViewSynonyms(); //?? otherwise entry list doesn't get redrawn (??even needed twice) } /* high-level delete-schema routine */ function DeleteSchema() { var button = document.getElementById("removeSchema"); if( button.getAttribute("disabled") == "true" ) { return; } DeleteSchema0(); ClearList("entrieslist"); ClearList("synonymslist"); DeleteItemSelected("schematree", "tree_", "schemalist"); ViewSchema(); //?? otherwise schema list doesn't get redrawn } /* high-level delete-entry routine */ function DeleteEntry() { var button = document.getElementById("removeEntry"); if( button.getAttribute("disabled") == "true" ) { return; } DeleteEntry0(); ClearList("synonymslist"); DeleteItemSelected("entrytree", "tree_", "entrieslist"); ViewEntries(); //?? otherwise entry list doesn't get redrawn } /* high-level delete-synonym routine */ function DeleteSynonym() { var button = document.getElementById("removeSynonym"); if( button.getAttribute("disabled") == "true" ) { return; } DeleteSynonym0(); DeleteItemSelected("synonymtree", "tree_", "synonymslist"); ViewSynonyms(); //?? otherwise entry list doesn't get redrawn } /*** =================== DEBUGGING CODE =================== ***/ /* debugging routine to dump formatted strings */ function DumpStrings() { var i, j, k; for (i=0; i>\n"); for (j=schemas[i]; j>\n"); for (k=entries[j]+2; k>\n"); } } } dump("\n"); } /* debugging routine to dump raw strings */ function DumpRawStrings() { var i; dump("Schemas follow\n"); for (i=0; i 0) { var i = selitems[0]; document.getElementById(kids).removeChild (document.getElementById(i.getAttribute("id"))); } } /* clear out a tree */ function ClearList(kids) { while (document.getElementById(kids).firstChild) { document.getElementById(kids).removeChild(document.getElementById(kids).firstChild); } }