aboutsummaryrefslogtreecommitdiff
path: root/chrome/content/redirectList.js
blob: 159bc8a7e2b77a035d05b76eb8fe3ec2e1b84810 (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
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);
    }

};