aboutsummaryrefslogtreecommitdiff
path: root/chrome/content/redirectList.js
blob: 5da5ed8f1c4674624a4dd00d0c1db059637a28f2 (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
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 {
            RedirLib.initialize(this);
            Redirector.init();
        
            this.lstRedirects = $('lstRedirects');
            this.lstRedirects.selType = 'single'; //For fx3
            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();
    },

    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) {
            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) {
            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);
            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 = this.lstRedirects.selectedIndex;

        this.btnEdit.disabled = (index == -1);
        this.btnDelete.disabled = (index == -1);
    }

};

window.addEventListener('unload', function() {
    Redirector.unload();
}, false);