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
|
var RedirectList = {
id : "redirector@einaregilsson.com",
name : "Redirector",
lstRedirects: null,
btnDelete : null,
btnEdit : null,
addItemsToListBox : function(items) {
var list = $('lstRedirects');
var item, row, value;
for each (item in items) {
row = this.createRow(item);
list.appendChild(row);
}
},
createCell : function(row, value) {
var cell = document.createElement('listcell');
cell.setAttribute('label', value);
cell.setAttribute('value', value);
row.appendChild(cell);
},
createRow : function(item) {
var row = document.createElement('listitem');
this.createCell(row, item.pattern);
this.createCell(row, item.exampleUrl);
this.createCell(row, item.redirectUrl);
this.createCell(row, item.onlyIfLinkExists);
this.createCell(row, item.patternType);
row.item = item;
return row;
},
onLoad : function() {
try {
RedirLib.initialize(this);
Redirector.init();
this.lstRedirects = $('lstRedirects');
this.btnDelete = $('btnDelete');
this.btnEdit = $('btnEdit');
this.addItemsToListBox(Redirector.list);
} catch(e) {
alert(e);
}
},
close : function() {
window.close();
},
addRedirect : function() {
var item = { pattern : '', exampleUrl : '', redirectUrl : '', onlyIfLinkExists : false, patternType : 'W'};
window.openDialog("chrome://redirector/content/redirect.xul",
"redirect",
"chrome,dialog,modal,centerscreen", item);
if (item.saved) {
var row = this.createRow(item);
$('lstRedirects').appendChild(row);
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) {
var map = [item.pattern, item.exampleUrl, item.redirectUrl, item.onlyIfLinkExists, item.patternType];
for (var i in map) {
listItem.childNodes[i].setAttribute('value', map[i]);
listItem.childNodes[i].setAttribute('label', map[i]);
}
Redirector.save();
}
},
deleteRedirect : function() {
var index = this.lstRedirects.selectedIndex;
if (index == -1) {
return;
}
try {
this.lstRedirects.removeItemAt(index);
Redirector.deleteAt(index);
} catch(e) {alert(e);}
},
selectionChange : function() {
var index = this.lstRedirects.selectedIndex;
this.btnEdit.disabled = (index == -1);
this.btnDelete.disabled = (index == -1);
}
};
window.addEventListener('unload', function() {
Redirector.unload();
}, false);
|