source: DASISH/t5.6/client/chrome/markingcollection/content/markingcollection/treefolderfilter.js @ 2709

Last change on this file since 2709 was 2709, checked in by sroth, 11 years ago

Wired-Marker initial source code with minor adjustments.

  • Property svn:executable set to *
File size: 5.6 KB
Line 
1var mcTreeFolderFilterService = {
2        item     : null,
3
4        get KEYWORD() { return document.getElementById("mcTreeFolderFilterKeyword"); },
5        get AVAILABLENESS() { return document.getElementById("mcTreeFolderFilterAvailableness"); },
6        get INVALIDATION() { return document.getElementById("mcTreeFolderFilterInvalidation"); },
7        get CASESENSITIVE() { return document.getElementById("mcTreeFolderFilterCasesensitive"); },
8
9        get DataSource() { try{return window.opener.top.bitsObjectMng.DataSource;}catch(ex){return window.top.bitsObjectMng.DataSource;} },
10        get Common()     { try{return window.opener.top.bitsObjectMng.Common;}catch(ex){return null;}     },
11        get XPath()      { try{return window.opener.top.bitsObjectMng.XPath;}catch(ex){return null;}      },
12        get Database()   { try{return window.opener.top.bitsObjectMng.Database;}catch(ex){return null;}   },
13        get gBrowser()   { try{return window.opener.top.bitsObjectMng.getBrowser();}catch(ex){return null;}},
14
15        init : function(){
16                try {
17                        this.item = window.arguments[0];
18                }catch(ex){
19                }
20                if(!this.item) return;
21                try {
22                        document.title += " [" + this.item.title + "]";
23                        var i;
24                        var folder = nsPreferences.copyUnicharPref("wiredmarker.filter.folder","");
25                        var folderArr = folder.split("\t");
26                        var folderHash = [];
27                        var folderCasesensitive = [];
28                        for(i=0;i<folderArr.length;i++){
29                                if(!folderArr[i].match(/^(\d+):(\d+):(.+)$/)) continue;
30                                folderHash[RegExp.$1] = RegExp.$3
31                                folderCasesensitive[RegExp.$1] = RegExp.$2
32                        }
33                        var keyword = nsPreferences.copyUnicharPref("wiredmarker.filter.keyword","");
34                        var keywordArr = keyword.split("\t");
35                        if(keywordArr.length>0){
36                                for(i=0;i<keywordArr.length&&i<10;i++){
37                                        this.KEYWORD.appendItem(keywordArr[i],keywordArr[i]);
38                                        if(folderHash[this.item.id] && folderHash[this.item.id] == keywordArr[i]) this.KEYWORD.selectedIndex = i;
39                                }
40                        }
41                        if(folderHash[this.item.id]){
42                                this.INVALIDATION.removeAttribute("selected");
43                                this.AVAILABLENESS.setAttribute("selected",true);
44                                this.KEYWORD.removeAttribute("disabled");
45                                this.CASESENSITIVE.removeAttribute("disabled");
46                                this.CASESENSITIVE.setAttribute("checked",folderCasesensitive[this.item.id]!=0);
47                        }else{
48                                this.AVAILABLENESS.removeAttribute("selected");
49                                this.INVALIDATION.setAttribute("selected",true);
50                                this.KEYWORD.setAttribute("disabled",true);
51                                this.CASESENSITIVE.setAttribute("disabled",true);
52                        }
53                }catch(ex){
54                        this._dump(ex);
55                }
56                return;
57        },
58
59        done : function(){},
60
61        accept : function(){
62                var disabled = this.KEYWORD.getAttribute("disabled");
63                var newVals = {
64                        keyword   : !disabled?this.KEYWORD.value:"",
65                };
66                var props;
67                for(props in newVals){
68                        window.arguments[0][props] = newVals[props];
69                        window.arguments[0].accept = true;
70                        if(props != "keyword") continue;
71                        var i;
72                        var keyword = nsPreferences.copyUnicharPref("wiredmarker.filter.keyword","");
73                        var keywordArr = keyword.split("\t");
74                        var newArr = [];
75                        newArr.unshift(newVals[props]);
76                        for(i=0;i<keywordArr.length;i++){
77                                if(keywordArr[i] == newVals[props] || keywordArr[i] == "") continue;
78                                newArr.push(keywordArr[i]);
79                        }
80                        nsPreferences.setUnicharPref("wiredmarker.filter.keyword", newArr.join("\t"));
81                        var folder = nsPreferences.copyUnicharPref("wiredmarker.filter.folder","");
82                        var folderArr = folder.split("\t");
83                        var folderHash = [];
84                        var folderCasesensitive = [];
85                        for(i=0;i<folderArr.length;i++){
86                                if(!folderArr[i].match(/^(\d+):(\d+):(.+)$/)) continue;
87                                folderHash[RegExp.$1] = RegExp.$3;
88                                folderCasesensitive[RegExp.$1] = RegExp.$2;
89                        }
90                        if(newVals[props] != ""){
91                                folderHash[this.item.id] = newVals[props];
92                                folderCasesensitive[this.item.id] = this.CASESENSITIVE.checked?1:0;
93                        }else{
94                                delete folderHash[this.item.id];
95                        }
96                        newArr = [];
97                        var key;
98                        for(key in folderHash){
99                                if(typeof folderHash[key] == "function") continue;
100                                newArr.push(key+":"+folderCasesensitive[key]+":"+folderHash[key]);
101                        }
102                        nsPreferences.setUnicharPref("wiredmarker.filter.folder", newArr.join("\t"));
103                }
104        },
105
106        cancel : function(){
107                if(window.arguments[0]) window.arguments[0].accept = false;
108        },
109
110        radio : function(aEvent){
111                mcTreeFolderFilterService._dump(aEvent.target.id);
112                if(this.AVAILABLENESS == aEvent.target){
113                        this.KEYWORD.removeAttribute("disabled");
114                        this.CASESENSITIVE.removeAttribute("disabled");
115                }else{
116                        this.KEYWORD.setAttribute("disabled",true);
117                        this.CASESENSITIVE.setAttribute("disabled",true);
118                }
119        },
120
121        checkbox : function(aEvent){},
122
123        onCommand : function(aEvent){
124                var rtn = false;
125                var curIdx = mcTreeHandler.TREE.currentIndex;
126                if(curIdx<0) return;
127                if(!mcTreeHandler.TREE.view.isContainer(curIdx)) return;
128                var aRes = mcTreeHandler.TREE.builderView.getResourceAtIndex(curIdx);
129                var fid = window.top.bitsObjectMng.DataSource.getProperty(aRes,"id");
130                var result = {};
131                result.title = window.top.bitsObjectMng.DataSource.getProperty(aRes,"title");
132                result.id = fid;
133                result.keyword = "";
134                result.accept = true;
135                window.openDialog("chrome://markingcollection/content/treefolderfilter.xul", "", "chrome,centerscreen,modal", result);
136                if(!result.accept) return;
137                this._dump("result.keyword=["+result.keyword+"]")
138                mcTreeViewModeService.rebuild();
139        },
140
141        isUseFilter : function(aRes){
142                var fid = this.DataSource.getProperty(aRes,"id");
143                var i;
144                var folder = nsPreferences.copyUnicharPref("wiredmarker.filter.folder","");
145                var folderArr = folder.split("\t");
146                var folderHash = [];
147                for(i=0;i<folderArr.length;i++){
148                        if(!folderArr[i].match(/^(\d+):(.+)$/)) continue;
149                        folderHash[RegExp.$1] = RegExp.$2
150                }
151                return (folderHash[fid] != undefined);
152        },
153
154        _dump : function(aString){
155                try{ window.opener.top.bitsMarkingCollection._dump(aString); } catch(e){}
156        },
157};
Note: See TracBrowser for help on using the repository browser.