source: DASISH/t5.6/client/branches/webannotator-basic-current-xsd/chrome/markingcollection/content/markingcollection/treefavoritefolder.js @ 5703

Last change on this file since 5703 was 5703, checked in by stephanie.roth@snd.gu.se, 10 years ago

Initial commit of current status quo from GitHub. TODO: Adjust client code to work with updated xsd file.

  • Property svn:executable set to *
File size: 8.4 KB
Line 
1/////////////////////////////////////////////////////////////////////
2/////////////////////////////////////////////////////////////////////
3var mcTreeFavoriteFolder = {
4        get idMENU()        { return "mcToolbarFavoriteFolderButton"; },
5        get idMENU_SELECT(){ return "bitsFavoriteFolderSelectMenuitem"; },
6        get idMENU_POPUP()  { return "mcToolbarFavoriteFolderPopup"; },
7        get idMENU_ALL()    { return "bitsFavoriteFolderAllMenuitem"; },
8        get MENU()          { return document.getElementById(this.idMENU); },
9        get MENU_SELECT()   { return document.getElementById(this.idMENU_SELECT); },
10        get MENU_POPUP()    { return document.getElementById(this.idMENU_POPUP); },
11        get MENU_ALL()      { return document.getElementById(this.idMENU_ALL); },
12        get TITLE()         { return window.top.document.getElementById("sidebar-title"); },
13
14        get STRING()     { return window.top.document.getElementById("MarkingCollectionOverlayString"); },
15
16        get DataSource(){ return window.top.bitsObjectMng.DataSource; },
17        get Common()     { return window.top.bitsObjectMng.Common;     },
18        get XPath()      { return window.top.bitsObjectMng.XPath;      },
19        get Database()   { return window.top.bitsObjectMng.Database;   },
20        get gBrowser()   { return window.top.bitsObjectMng.getBrowser();},
21
22        baseURL  : "",
23        shouldRebuild : false,
24
25        init : function(){
26                this.MENU.setAttribute("datasources",window.top.bitsFavoriteFolder.xmlurl);
27        },
28
29        done : function(){},
30
31        rebuild : function(){},
32
33        onPopupShowing : function(aEvent, aPopupRoot){
34                var res = mcTreeHandler.resource;
35                try{
36                        if(!res){
37                                mcTreeFavoriteFolder.MENU_SELECT.setAttribute("disabled","true");
38                        }else{
39                                var editmode = this.DataSource.getProperty(res, "editmode");
40                                if((editmode & 0x1000)||(editmode == 4)){
41                                        mcTreeFavoriteFolder.MENU_SELECT.setAttribute("disabled","true");
42                                }else{
43                                        mcTreeFavoriteFolder.MENU_SELECT.removeAttribute("disabled");
44                                }
45                        }
46                }catch(e){
47                        mcTreeFavoriteFolder.MENU_SELECT.setAttribute("disabled","true");
48                }
49                var r_fid = nsPreferences.copyUnicharPref("wiredmarker.rootfolder");
50                var r_dbtype = nsPreferences.copyUnicharPref("wiredmarker.rootfolder_dbtype");
51                if(!r_fid || !r_dbtype){
52                        this.MENU_ALL.setAttribute("disabled","true");
53                }else{
54                        this.MENU_ALL.removeAttribute("disabled");
55                }
56                var results = this.XPath.evaluateArray('//folder[@fid and @dbtype]',window.top.bitsFavoriteFolder.xmldoc);
57                if(results.length){
58                        var osString = Components.classes["@mozilla.org/xre/app-info;1"].getService(Components.interfaces.nsIXULRuntime).OS;
59                        var parser = new DOMParser();
60                        var i;
61                        for(i=0;i<results.length;i++){
62                                try{
63                                        var attr = results[i].attributes;
64                                        var j;
65                                        if(osString != "Darwin"){
66                                                var elemMenuitem = top.document.createElement("menuitem");
67                                                for(j=0;j<attr.length;j++){
68                                                        elemMenuitem.setAttribute(attr[j].name,attr[j].value);
69                                                }
70                                                elemMenuitem.setAttribute("label",results[i].getAttribute("title"));
71                                                elemMenuitem.setAttribute("contextmenu","mcPopupFavorite");
72                                                elemMenuitem.setAttribute("class","menuitem-iconic");
73                                                elemMenuitem.setAttribute("image","chrome://markingcollection/skin/folder.png");
74                                                var folders = this.Database.getFolderFormID(results[i].getAttribute("fid"),results[i].getAttribute("dbtype"));
75                                                if(folders && folders[0].fid_property){
76                                                        var xmldoc = parser.parseFromString(folders[0].fid_property, "text/xml");
77                                                        if(xmldoc && xmldoc.documentElement.nodeName == "parsererror") xmldoc = undefined;
78                                                        if(xmldoc){
79                                                                var elems = xmldoc.getElementsByTagName("ICON");
80                                                                if(elems && elems.length>0) elemMenuitem.setAttribute("image",elems[0].textContent);
81                                                                elems = undefined;
82                                                                xmldoc = undefined;
83                                                        }
84                                                }
85                                                aPopupRoot.appendChild(elemMenuitem);
86                                        }else{
87                                                var elemMenu = top.document.createElement("menu");
88                                                for(j=0;j<attr.length;j++){
89                                                        elemMenu.setAttribute(attr[j].name,attr[j].value);
90                                                }
91                                                elemMenu.setAttribute("label",results[i].getAttribute("title"));
92                                                elemMenu.setAttribute("class","menu-iconic");
93                                                elemMenu.setAttribute("image","chrome://markingcollection/skin/folder.png");
94                                                var folders = this.Database.getFolderFormID(results[i].getAttribute("fid"),results[i].getAttribute("dbtype"));
95                                                if(folders && folders[0].fid_property){
96                                                        var xmldoc = parser.parseFromString(folders[0].fid_property, "text/xml");
97                                                        if(xmldoc && xmldoc.documentElement.nodeName == "parsererror") xmldoc = undefined;
98                                                        if(xmldoc){
99                                                                var elems = xmldoc.getElementsByTagName("ICON");
100                                                                if(elems && elems.length>0) elemMenu.setAttribute("image",elems[0].textContent);
101                                                                elems = undefined;
102                                                                xmldoc = undefined;
103                                                        }
104                                                }
105                                                var elemMenupopup = top.document.createElement("menupopup");
106                                                elemMenu.appendChild(elemMenupopup);
107                                                elemMenupopup.addEventListener("popupshowing", function(aEvent){aEvent.stopPropagation();}, false);
108                                                elemMenupopup.addEventListener("popuphiding", function(aEvent){aEvent.stopPropagation();}, false);
109                                                var elemMenuitemSel = top.document.createElement("menuitem");
110                                                elemMenuitemSel.setAttribute("label",this.STRING.getString("FAVORITEFOLDER_SELECT"));
111                                                for(j=0;j<attr.length;j++){
112                                                        elemMenuitemSel.setAttribute(attr[j].name,attr[j].value);
113                                                }
114                                                elemMenuitemSel.setAttribute("class","menuitem-iconic");
115                                                elemMenuitemSel.setAttribute("image","chrome://markingcollection/skin/folder.png");
116                                                var folders = this.Database.getFolderFormID(results[i].getAttribute("fid"),results[i].getAttribute("dbtype"));
117                                                if(folders && folders[0].fid_property){
118                                                        var xmldoc = parser.parseFromString(folders[0].fid_property, "text/xml");
119                                                        if(xmldoc && xmldoc.documentElement.nodeName == "parsererror") xmldoc = undefined;
120                                                        if(xmldoc){
121                                                                var elems = xmldoc.getElementsByTagName("ICON");
122                                                                if(elems && elems.length>0) elemMenuitemSel.setAttribute("image",elems[0].textContent);
123                                                                elems = undefined;
124                                                                xmldoc = undefined;
125                                                        }
126                                                }
127                                                elemMenupopup.appendChild(elemMenuitemSel);
128                                                var elemMenuitemDel = top.document.createElement("menuitem");
129                                                elemMenuitemDel.setAttribute("label",this.STRING.getString("FAVORITEFOLDER_DELETE"));
130                                                for(j=0;j<attr.length;j++){
131                                                        elemMenuitemDel.setAttribute(attr[j].name,attr[j].value);
132                                                }
133                                                elemMenuitemDel.setAttribute("class","menuitem-iconic");
134                                                elemMenuitemDel.setAttribute("image","chrome://markingcollection/skin/menu_remove.png");
135                                                var folders = this.Database.getFolderFormID(results[i].getAttribute("fid"),results[i].getAttribute("dbtype"));
136                                                if(folders && folders[0].fid_property){
137                                                        var xmldoc = parser.parseFromString(folders[0].fid_property, "text/xml");
138                                                        if(xmldoc && xmldoc.documentElement.nodeName == "parsererror") xmldoc = undefined;
139                                                        if(xmldoc){
140                                                                var elems = xmldoc.getElementsByTagName("ICON");
141                                                                if(elems && elems.length>0) elemMenuitemDel.setAttribute("image",elems[0].textContent);
142                                                                elems = undefined;
143                                                                xmldoc = undefined;
144                                                        }
145                                                }
146                                                elemMenuitemDel.addEventListener("command", function(aEvent){
147                                                        aEvent.stopPropagation();
148                                                        mcTreeFavoriteFolder._explicitOriginalTarget = aEvent.target;
149                                                        mcTreeFavoriteFolder.removeFavoriteFolder(aEvent);
150                                                }, false);
151                                                elemMenupopup.appendChild(elemMenuitemDel);
152                                                aPopupRoot.appendChild(elemMenu);
153                                        }
154                                }catch(e){}
155                        }
156                        parser = undefined;
157                }
158        },
159
160        onPopupHiding : function(aEvent, aPopupRoot){
161                var i;
162                for(i=this.MENU_POPUP.childNodes.length-1;i>=0;i--){
163                        var elem = this.MENU_POPUP.childNodes[i];
164                        if(elem.id) continue;
165                        this.MENU_POPUP.removeChild(elem);
166                }
167        },
168
169        onClick : function(aEvent){
170                window.top.bitsFavoriteFolder.onClick(aEvent);
171        },
172
173        onPopupFShowing : function(aEvent){
174                this._explicitOriginalTarget = aEvent.explicitOriginalTarget;
175        },
176
177        removeFavoriteFolder : function(aEvent){
178                var xmldoc = window.top.bitsFavoriteFolder.xmldoc;
179                if(!xmldoc || !this._explicitOriginalTarget) return;
180                if(!window.top.bitsFavoriteFolder._confirmRemovingFor()) return;
181                var fid = this._explicitOriginalTarget.getAttribute("fid");
182                var dbtype = this._explicitOriginalTarget.getAttribute("dbtype");
183                var results = this.XPath.evaluateArray('//folder[@fid="'+fid+'" and @dbtype="'+dbtype+'"]',xmldoc);
184                if(results.length){
185                        var i;
186                        for(i=results.length-1;i>=0;i--){
187                                results[i].parentNode.removeChild(results[i]);
188                        }
189                        window.top.bitsFavoriteFolder.xmlflash();
190                }
191                this._explicitOriginalTarget = undefined;
192        },
193};
194
Note: See TracBrowser for help on using the repository browser.