blob: a79a01469c0382a61991d5b7612ed426206b374e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
/* import-globals-from ../editorUtilities.js */
/* import-globals-from EdDialogCommon.js */
var gSpellChecker;
var gWordToAdd;
function Startup() {
if (!GetCurrentEditor()) {
window.close();
return;
}
// Get the SpellChecker shell
if ("gSpellChecker" in window.opener && window.opener.gSpellChecker) {
gSpellChecker = window.opener.gSpellChecker;
}
if (!gSpellChecker) {
dump("SpellChecker not found!!!\n");
window.close();
return;
}
// The word to add word is passed as the 2nd extra parameter in window.openDialog()
gWordToAdd = window.arguments[1];
gDialog.WordInput = document.getElementById("WordInput");
gDialog.DictionaryList = document.getElementById("DictionaryList");
gDialog.WordInput.value = gWordToAdd;
FillDictionaryList();
// Select the supplied word if it is already in the list
SelectWordToAddInList();
SetTextboxFocus(gDialog.WordInput);
}
function ValidateWordToAdd() {
gWordToAdd = TrimString(gDialog.WordInput.value);
if (gWordToAdd.length > 0) {
return true;
}
return false;
}
function SelectWordToAddInList() {
for (var i = 0; i < gDialog.DictionaryList.getRowCount(); i++) {
var wordInList = gDialog.DictionaryList.getItemAtIndex(i);
if (wordInList && gWordToAdd == wordInList.label) {
gDialog.DictionaryList.selectedIndex = i;
break;
}
}
}
function AddWord() {
if (ValidateWordToAdd()) {
try {
gSpellChecker.AddWordToDictionary(gWordToAdd);
} catch (e) {
dump(
"Exception occurred in gSpellChecker.AddWordToDictionary\nWord to add probably already existed\n"
);
}
// Rebuild the dialog list
FillDictionaryList();
SelectWordToAddInList();
gDialog.WordInput.value = "";
}
}
function RemoveWord() {
var selIndex = gDialog.DictionaryList.selectedIndex;
if (selIndex >= 0) {
var word = gDialog.DictionaryList.selectedItem.label;
// Remove word from list
gDialog.DictionaryList.selectedItem.remove();
// Remove from dictionary
try {
// Not working: BUG 43348
gSpellChecker.RemoveWordFromDictionary(word);
} catch (e) {
dump("Failed to remove word from dictionary\n");
}
ResetSelectedItem(selIndex);
}
}
function FillDictionaryList() {
var selIndex = gDialog.DictionaryList.selectedIndex;
// Clear the current contents of the list
ClearListbox(gDialog.DictionaryList);
// Get the list from the spell checker
gSpellChecker.GetPersonalDictionary();
var haveList = false;
// Get words until an empty string is returned
do {
var word = gSpellChecker.GetPersonalDictionaryWord();
if (word != "") {
gDialog.DictionaryList.appendItem(word, "");
haveList = true;
}
} while (word != "");
// XXX: BUG 74467: If list is empty, it doesn't layout to full height correctly
// (ignores "rows" attribute) (bug is latered, so we are fixing here for now)
if (!haveList) {
gDialog.DictionaryList.appendItem("", "");
}
ResetSelectedItem(selIndex);
}
function ResetSelectedItem(index) {
var lastIndex = gDialog.DictionaryList.getRowCount() - 1;
if (index > lastIndex) {
index = lastIndex;
}
// If we didn't have a selected item,
// set it to the first item
if (index == -1 && lastIndex >= 0) {
index = 0;
}
gDialog.DictionaryList.selectedIndex = index;
}
|