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
139
140
141
142
143
144
|
var Redirector = Components.classes["@einaregilsson.com/redirector;1"].getService(Components.interfaces.nsISupports).wrappedJSObject;
function $(id) {
return document.getElementById(id);
}
var RedirectList = {
id : "redirector@einaregilsson.com",
name : "Redirector",
lstRedirects: null,
btnDelete : null,
btnEdit : null,
addItemsToListBox : function(items) {
var list = $('lstRedirects');
var item, row, value, newItem;
for each (item in items) {
newItem = this.template.cloneNode(true);
newItem.getElementsByAttribute('name', 'dscrIncludePattern')[0].setAttribute('value', item.pattern);
newItem.getElementsByAttribute('name', 'dscrExcludePattern')[0].setAttribute('value', item.excludePattern);
newItem.getElementsByAttribute('name', 'dscrRedirectTo')[0].setAttribute('value', item.redirectUrl);
newItem.item = item;
list.appendChild(newItem);
newItem.setAttribute("selected", false);
}
},
onLoad : function() {
try {
this.lstRedirects = $('lstRedirects');
this.lstRedirects.selType = 'single';
this.template = document.getElementsByTagName('richlistitem')[0];
this.lstRedirects.removeChild(this.template);
this.btnDelete = $('btnDelete');
this.btnEdit = $('btnEdit');
this.addItemsToListBox(Redirector.list);
} catch(e) {
alert(e);
}
},
close : function() {
window.close();
},
moveUp : function(){
if (this.lstRedirects.selectedIndex <= 0) {
return;
}
this.switchItems(this.lstRedirects.selectedIndex-1);
},
moveDown : function() {
if (this.lstRedirects.selectedIndex == Redirector.list.length-1) {
return;
}
this.switchItems(this.lstRedirects.selectedIndex);
},
switchItems : function(firstIndex) {
var first = Redirector.list[firstIndex];
var second = Redirector.list[firstIndex+1];
Redirector.list[firstIndex] = second;
Redirector.list[firstIndex+1] = first;
this.setListItemValues(this.lstRedirects.children[firstIndex+1], first);
this.setListItemValues(this.lstRedirects.children[firstIndex], second);
this.lstRedirects.selectedIndex -= 1;
Redirector.save();
},
setListItemValues : function(listItem, item){
listItem.getElementsByAttribute('name', 'dscrIncludePattern')[0].setAttribute('value', item.pattern);
listItem.getElementsByAttribute('name', 'dscrExcludePattern')[0].setAttribute('value', item.excludePattern);
listItem.getElementsByAttribute('name', 'dscrRedirectTo')[0].setAttribute('value', item.redirectUrl);
},
addRedirect : function() {
var item = { pattern : '', exampleUrl : '', redirectUrl : '', patternType : 'W'};
window.openDialog("chrome://redirector/content/redirect.xul",
"redirect",
"chrome,dialog,modal,centerscreen", item);
if (item.saved) {
this.addItemsToListBox([item]);
Redirector.addRedirect(item);
}
},
editRedirect : function() {
var listItem = this.lstRedirects.selectedItem;
if (!listItem) {
return;
}
var item = listItem.item;
window.openDialog("chrome://redirector/content/redirect.xul",
"redirect",
"chrome,dialog,modal,centerscreen", item);
if (item.saved) {
this.setListItemValues(listItem, item);
Redirector.save();
}
},
deleteRedirect : function() {
var index = this.lstRedirects.selectedIndex;
if (index == -1) {
return;
}
try {
this.lstRedirects.removeChild(this.lstRedirects.children[index]);
Redirector.deleteAt(index);
} catch(e) {
alert(e);
}
},
selectionChange : function() {
var index = $('lstRedirects').selectedIndex;
$('btnEdit').disabled = (index == -1);
$('btnDelete').disabled = (index == -1);
}
};
window.addEventListener('unload', function() {
Redirector.unload();
}, false);
|