1 | var bitsItemView = { |
---|
2 | _init : false, |
---|
3 | _pref : {}, |
---|
4 | _app_version : 2, |
---|
5 | _canDrop : false, |
---|
6 | _refreshFlag : true, |
---|
7 | _getImageFromURL : {}, |
---|
8 | |
---|
9 | _refresh_timer : null, |
---|
10 | |
---|
11 | modAlt : false, |
---|
12 | modShift : false, |
---|
13 | modCtrl : false, |
---|
14 | modMeta : false, |
---|
15 | |
---|
16 | get POS_DEFAULT() { return this.POS_TREE_BOTTOM; }, |
---|
17 | get POS_TREE_BOTTOM() { return "tree_bottom"; }, |
---|
18 | get POS_TREE_RIGHT() { return "tree_right"; }, |
---|
19 | |
---|
20 | get BUTTON() { |
---|
21 | try{ |
---|
22 | return window.top.bitsMarkingCollection._contentWindow.document.getElementById("mcToolbarItemTreeButton"); |
---|
23 | }catch(e){ return undefined; } |
---|
24 | }, |
---|
25 | get APPCONT() { return document.getElementById("appcontent"); }, |
---|
26 | get idTREE() { return "bitsItemTree"; }, |
---|
27 | get TREE() { return document.getElementById(this.idTREE); }, |
---|
28 | get SPLITTER() { return document.getElementById("bitsBrowserLeftSplitter"); }, |
---|
29 | get TNBOX() { return document.getElementById("bitsItemTNBox"); }, |
---|
30 | get VBOX() { return document.getElementById("bitsBrowserLeftVBox"); }, |
---|
31 | |
---|
32 | get VTTB() { return document.getElementById("bitsItemViewTypeToolbarbutton"); }, |
---|
33 | get VTLM() { return document.getElementById("bitsItemViewTypeLargeMenuitem"); }, |
---|
34 | get VTMM() { return document.getElementById("bitsItemViewTypeMiddleMenuitem"); }, |
---|
35 | get VTSM() { return document.getElementById("bitsItemViewTypeSmallMenuitem"); }, |
---|
36 | get VSB() { return document.getElementById("bitsItemViewSearchButton"); }, |
---|
37 | get VSM() { return document.getElementById("bitsItemViewSearchMenu"); }, |
---|
38 | |
---|
39 | get idTREE_IFAVICON() { return "bitsItemTreeIFavicon"; }, |
---|
40 | get idTREE_IURL() { return "bitsItemTreeIUrl"; }, |
---|
41 | get idTREE_IDOCTITLE() { return "bitsItemTreeIDocTitle"; }, |
---|
42 | get idTREE_ITITLE() { return "bitsItemTreeITitle"; }, |
---|
43 | get idTREE_IDATE() { return "bitsItemTreeIDate"; }, |
---|
44 | get idTREE_INOTE() { return "bitsItemTreeINote"; }, |
---|
45 | get idTREE_IFOLDER() { return "bitsItemTreeIFolder"; }, |
---|
46 | get idTREE_IFOLDERSTYLE(){ return "bitsItemTreeIFolderStyle"; }, |
---|
47 | get TREE_IFAVICON() { return document.getElementById(this.idTREE_IFAVICON); }, |
---|
48 | get TREE_IURL() { return document.getElementById(this.idTREE_IURL); }, |
---|
49 | get TREE_IDOCTITLE() { return document.getElementById(this.idTREE_IDOCTITLE); }, |
---|
50 | get TREE_ITITLE() { return document.getElementById(this.idTREE_ITITLE); }, |
---|
51 | get TREE_IDATE() { return document.getElementById(this.idTREE_IDATE); }, |
---|
52 | get TREE_INOTE() { return document.getElementById(this.idTREE_INOTE); }, |
---|
53 | get TREE_IFOLDER() { return document.getElementById(this.idTREE_IFOLDER); }, |
---|
54 | get TREE_IFOLDERSTYLE(){ return document.getElementById(this.idTREE_IFOLDERSTYLE); }, |
---|
55 | |
---|
56 | get idPOPUP_OPEN() { return "bitsItemTreePopupOpen"; }, |
---|
57 | get idPOPUP_OPENN() { return "bitsItemTreePopupOpenNewTab"; }, |
---|
58 | get idPOPUP_REMOVE() { return "bitsItemTreePopupRemove"; }, |
---|
59 | get idPOPUP_PROPERTY(){ return "bitsItemTreePopupProperty"; }, |
---|
60 | |
---|
61 | get idPOPUP_COPY() { return "bitsItemTreePopupHyperAnchorCopyToClipboard"; }, |
---|
62 | get idPOPUP_COPYTITLE() { return "bitsItemTreePopupHyperAnchorCopyTitleToClipboard"; }, |
---|
63 | get idPOPUP_COPYNOTE() { return "bitsItemTreePopupHyperAnchorCopyNoteToClipboard"; }, |
---|
64 | get idPOPUP_COPYMETA() { return "bitsItemTreePopupHyperAnchorCopyMetaToClipboard"; }, |
---|
65 | get idPOPUP_COPYFORMAT() { return "bitsItemTreePopupHyperAnchorCopyFormatToClipboard"; }, |
---|
66 | get idPOPUP_COPYSETTING() { return "bitsItemTreePopupHyperAnchorCopyFormatSetting"; }, |
---|
67 | |
---|
68 | get POPUP() { return document.getElementById("bitsItemTreePopup"); }, |
---|
69 | get POPUP_OPEN() { return document.getElementById(this.idPOPUP_OPEN); }, |
---|
70 | get POPUP_OPENN() { return document.getElementById(this.idPOPUP_OPENN); }, |
---|
71 | get POPUP_REMOVE() { return document.getElementById(this.idPOPUP_REMOVE); }, |
---|
72 | get POPUP_PROPERTY(){ return document.getElementById(this.idPOPUP_PROPERTY); }, |
---|
73 | |
---|
74 | get SIDEBAR_BOX() { return document.getElementById("bitsSidebarBox"); }, |
---|
75 | |
---|
76 | get SIDEBAR() { return window.top.document.getElementById("sidebar"); }, |
---|
77 | get SIDEBAR_DOC() {try{return this.SIDEBAR.contentDocument;}catch(e){return undefined;}}, |
---|
78 | |
---|
79 | get idBUTTON_LISTSTYLE() { return "mcToolbarListStyleButton"; }, |
---|
80 | get idITEM_LISTSTYLE_RL() { return "mcToolbarListStyleRLItem"; }, |
---|
81 | get idITEM_LISTSTYLE_TB() { return "mcToolbarListStyleTBItem"; }, |
---|
82 | get idITEM_LISTSTYLE_NONE() { return "mcToolbarListStyleNoneItem"; }, |
---|
83 | get BUTTON_LISTSTYLE() {try{return this.SIDEBAR_DOC.getElementById(this.idBUTTON_LISTSTYLE);}catch(e){return undefined;}}, |
---|
84 | get ITEM_LISTSTYLE_RL() {try{return this.SIDEBAR_DOC.getElementById(this.idITEM_LISTSTYLE_RL);}catch(e){return undefined;}}, |
---|
85 | get ITEM_LISTSTYLE_TB() {try{return this.SIDEBAR_DOC.getElementById(this.idITEM_LISTSTYLE_TB);}catch(e){return undefined;}}, |
---|
86 | get ITEM_LISTSTYLE_NONE() {try{return this.SIDEBAR_DOC.getElementById(this.idITEM_LISTSTYLE_NONE);}catch(e){return undefined;}}, |
---|
87 | |
---|
88 | |
---|
89 | get BROADCASTER() { return window.top.document.getElementById("viewMarkingCollection"); }, |
---|
90 | |
---|
91 | get STRING() { return window.top.document.getElementById("MarkingCollectionOverlayString"); }, |
---|
92 | get DataSource() { return window.top.bitsObjectMng.DataSource; }, |
---|
93 | get Common() { return window.top.bitsObjectMng.Common; }, |
---|
94 | get XPath() { return window.top.bitsObjectMng.XPath; }, |
---|
95 | get Database() { return window.top.bitsObjectMng.Database; }, |
---|
96 | get XML() { return window.top.bitsObjectMng.XML; }, |
---|
97 | get gBrowser() { return window.top.bitsObjectMng.getBrowser();}, |
---|
98 | |
---|
99 | get isChecked() { |
---|
100 | return this._pref.disp; |
---|
101 | }, |
---|
102 | |
---|
103 | get position() { |
---|
104 | return this._pref.position; |
---|
105 | }, |
---|
106 | |
---|
107 | set position(aPos) { |
---|
108 | this._pref.position = aPos; |
---|
109 | if(this._pref.position == this.POS_TREE_RIGHT){ |
---|
110 | this.SIDEBAR_BOX.setAttribute("orient","horizontal"); |
---|
111 | this.SPLITTER.setAttribute("orient","horizontal"); |
---|
112 | this.VBOX.setAttribute("persist","width"); |
---|
113 | try{this.BUTTON_LISTSTYLE.setAttribute("image",this.ITEM_LISTSTYLE_RL.getAttribute("image"));}catch(e){} |
---|
114 | }else if(this._pref.position == this.POS_TREE_BOTTOM){ |
---|
115 | this.SIDEBAR_BOX.setAttribute("orient","vertical"); |
---|
116 | this.SPLITTER.setAttribute("orient","vertical"); |
---|
117 | this.VBOX.setAttribute("persist","height"); |
---|
118 | try{this.BUTTON_LISTSTYLE.setAttribute("image",this.ITEM_LISTSTYLE_TB.getAttribute("image"));}catch(e){} |
---|
119 | }else{ |
---|
120 | try{this.BUTTON_LISTSTYLE.setAttribute("image",this.ITEM_LISTSTYLE_NONE.getAttribute("image"));}catch(e){} |
---|
121 | } |
---|
122 | }, |
---|
123 | |
---|
124 | get confirmDelete() { |
---|
125 | return this._pref.confirmDelete; |
---|
126 | }, |
---|
127 | |
---|
128 | get object() { |
---|
129 | return (this.TREE.currentIndex>=0 ? this.getRowObject(this.TREE.currentIndex) : undefined); |
---|
130 | }, |
---|
131 | |
---|
132 | ///////////////////////////////////////////////////////////////////// |
---|
133 | init : function(aEvent){ |
---|
134 | if(!this._init){ |
---|
135 | var disp = nsPreferences.getBoolPref("wiredmarker.itemview.disp"); |
---|
136 | if(disp == undefined) nsPreferences.setBoolPref("wiredmarker.itemview.disp",true); |
---|
137 | if(this.APPCONT){ |
---|
138 | this.APPCONT.parentNode.insertBefore(this.VBOX,this.APPCONT) |
---|
139 | this.APPCONT.parentNode.insertBefore(this.SPLITTER,this.APPCONT) |
---|
140 | } |
---|
141 | this._pref = { |
---|
142 | disp : nsPreferences.getBoolPref("wiredmarker.itemview.disp", false), |
---|
143 | position : nsPreferences.copyUnicharPref("wiredmarker.itemview.position", this.POS_DEFAULT), |
---|
144 | confirmDelete : nsPreferences.getBoolPref("wiredmarker.confirmDelete", true), |
---|
145 | }; |
---|
146 | this.position = this._pref.position; |
---|
147 | if(!this._pref.disp) try{this.BUTTON_LISTSTYLE.setAttribute("image",this.ITEM_LISTSTYLE_NONE.getAttribute("image"));}catch(e){} |
---|
148 | this.gBrowser.addEventListener("mousedown", this.onBrowserMousedown, false); |
---|
149 | var info = Components.classes["@mozilla.org/xre/app-info;1"].getService(Components.interfaces.nsIXULAppInfo); |
---|
150 | this._app_version = parseFloat(info.version); |
---|
151 | this.VTTB.setAttribute("disabled","true"); |
---|
152 | if(this._app_version<3.1){ |
---|
153 | this.TREE.addEventListener("draggesture", bitsItemView.onOldDraggesture, false); |
---|
154 | this.TREE.addEventListener("dragover", bitsItemView.onOldDragover, false); |
---|
155 | this.TREE.addEventListener("dragdrop", bitsItemView.onOldDragdrop, false); |
---|
156 | this.TREE.addEventListener("dragexit", bitsItemView.onOldDragexit, false); |
---|
157 | }else{ |
---|
158 | this.TREE.addEventListener("dragstart", bitsItemView.onDragEvents, false); |
---|
159 | this.TREE.addEventListener("drag", bitsItemView.onDragEvents, false); |
---|
160 | this.TREE.addEventListener("dragend", bitsItemView.onDragEvents, false); |
---|
161 | |
---|
162 | this.TREE.addEventListener("dragenter", bitsItemView.onDropEvents, false); |
---|
163 | this.TREE.addEventListener("dragover", bitsItemView.onDropEvents, false); |
---|
164 | this.TREE.addEventListener("dragleave", bitsItemView.onDropEvents, false); |
---|
165 | this.TREE.addEventListener("drop", bitsItemView.onDropEvents, false); |
---|
166 | } |
---|
167 | this._init = true; |
---|
168 | } |
---|
169 | if(this.BUTTON) this.BUTTON.setAttribute("checked",this._pref.disp); |
---|
170 | var sidebar = window.top.document.getElementById("sidebar"); |
---|
171 | if(sidebar && this.position == this.POS_TREE_RIGHT) sidebar.setAttribute("style","min-width:14em; width:18em;"); |
---|
172 | }, |
---|
173 | |
---|
174 | ///////////////////////////////////////////////////////////////////// |
---|
175 | disp : function(aEvent){ |
---|
176 | this.treeDispChange(); |
---|
177 | this.rebuild(); |
---|
178 | this.SPLITTER.setAttribute("hidden",!this._pref.disp); |
---|
179 | this.VBOX.setAttribute("hidden",!this._pref.disp); |
---|
180 | }, |
---|
181 | |
---|
182 | ///////////////////////////////////////////////////////////////////// |
---|
183 | done : function(aEvent){ |
---|
184 | this.SPLITTER.setAttribute("hidden",true); |
---|
185 | this.VBOX.setAttribute("hidden",true); |
---|
186 | try{this.TREE.treeBoxObject.clearStyleAndImageCaches();}catch(e){}; |
---|
187 | this.gBrowser.removeEventListener("mousedown", this.onBrowserMousedown, false); |
---|
188 | if(this._app_version<3.1){ |
---|
189 | this.TREE.removeEventListener("draggesture", bitsItemView.onOldDraggesture, false); |
---|
190 | this.TREE.removeEventListener("dragover", bitsItemView.onOldDragover, false); |
---|
191 | this.TREE.removeEventListener("dragdrop", bitsItemView.onOldDragdrop, false); |
---|
192 | this.TREE.removeEventListener("dragexit", bitsItemView.onOldDragexit, false); |
---|
193 | }else{ |
---|
194 | this.TREE.removeEventListener("dragstart", bitsItemView.onDragEvents, false); |
---|
195 | this.TREE.removeEventListener("drag", bitsItemView.onDragEvents, false); |
---|
196 | this.TREE.removeEventListener("dragend", bitsItemView.onDragEvents, false); |
---|
197 | this.TREE.removeEventListener("dragenter", bitsItemView.onDropEvents, false); |
---|
198 | this.TREE.removeEventListener("dragover", bitsItemView.onDropEvents, false); |
---|
199 | this.TREE.removeEventListener("dragleave", bitsItemView.onDropEvents, false); |
---|
200 | this.TREE.removeEventListener("drop", bitsItemView.onDropEvents, false); |
---|
201 | } |
---|
202 | var sidebar = window.top.document.getElementById("sidebar"); |
---|
203 | if(sidebar && this.position == this.POS_TREE_RIGHT) sidebar.setAttribute("style","min-width:14em; width:18em; max-width:36em;"); |
---|
204 | }, |
---|
205 | |
---|
206 | ///////////////////////////////////////////////////////////////////// |
---|
207 | treeDispChange : function(){ |
---|
208 | try{var mcTreeRule = window.top.bitsMarkingCollection._contentWindow.document.getElementById("mcTreeRule");}catch(e){} |
---|
209 | if(!mcTreeRule) return; |
---|
210 | if(this._pref.disp){ |
---|
211 | mcTreeRule.setAttribute("iscontainer", true); |
---|
212 | }else{ |
---|
213 | mcTreeRule.removeAttribute("iscontainer"); |
---|
214 | } |
---|
215 | }, |
---|
216 | |
---|
217 | ///////////////////////////////////////////////////////////////////// |
---|
218 | onChangeListStyle : function(aEvent){ |
---|
219 | var reboot = false; |
---|
220 | if(aEvent.target.id == this.idITEM_LISTSTYLE_RL){ |
---|
221 | if(!this._pref.disp || this.position != this.POS_TREE_RIGHT){ |
---|
222 | nsPreferences.setBoolPref("wiredmarker.itemview.disp", true); |
---|
223 | nsPreferences.setUnicharPref("wiredmarker.itemview.position", this.POS_TREE_RIGHT); |
---|
224 | reboot = true; |
---|
225 | } |
---|
226 | }else if(aEvent.target.id == this.idITEM_LISTSTYLE_TB){ |
---|
227 | if(!this._pref.disp || this.position != this.POS_TREE_BOTTOM){ |
---|
228 | nsPreferences.setBoolPref("wiredmarker.itemview.disp", true); |
---|
229 | nsPreferences.setUnicharPref("wiredmarker.itemview.position", this.POS_TREE_BOTTOM); |
---|
230 | reboot = true; |
---|
231 | } |
---|
232 | }else if(aEvent.target.id == this.idITEM_LISTSTYLE_NONE){ |
---|
233 | if(this._pref.disp){ |
---|
234 | nsPreferences.setBoolPref("wiredmarker.itemview.disp", false); |
---|
235 | nsPreferences.setUnicharPref("wiredmarker.itemview.position", this.POS_TREE_BOTTOM); |
---|
236 | reboot = true; |
---|
237 | } |
---|
238 | } |
---|
239 | if(reboot){ |
---|
240 | if(this.Common.confirm(this.STRING.getString("CONFIRM_SETTING_CHANGE_RESTART_APP"))){ |
---|
241 | window.top.bitsMarkingCollection.reboot(); |
---|
242 | return; |
---|
243 | } |
---|
244 | } |
---|
245 | }, |
---|
246 | |
---|
247 | ///////////////////////////////////////////////////////////////////// |
---|
248 | onViewTypePopupCommand : function(aEvent){ |
---|
249 | var xmldoc = null; |
---|
250 | var iconsize = null; |
---|
251 | var viewtype = "small"; |
---|
252 | var viewtype_C = "small"; |
---|
253 | if(this._info){ |
---|
254 | var viewmode = this._info.viewmode; |
---|
255 | var fid = this._info.fid; |
---|
256 | var dbtype = this._info.dbtype; |
---|
257 | if(fid && this.dbtype){ |
---|
258 | var folders = this.Database.getFolderFormID(fid, dbtype); |
---|
259 | if(folders && folders.length>0 && folders[0].fid_property){ |
---|
260 | var parser = new DOMParser(); |
---|
261 | xmldoc = parser.parseFromString(folders[0].fid_property, "text/xml"); |
---|
262 | parser = undefined; |
---|
263 | iconsize = xmldoc.getElementsByTagName("ICON_SIZE")[0]; |
---|
264 | if(iconsize) viewtype = iconsize.textContent |
---|
265 | } |
---|
266 | } |
---|
267 | } |
---|
268 | switch(aEvent.target.id){ |
---|
269 | case "bitsItemViewTypeLargeMenuitem": |
---|
270 | viewtype_C = "large"; |
---|
271 | break; |
---|
272 | case "bitsItemViewTypeMiddleMenuitem": |
---|
273 | viewtype_C = "middle"; |
---|
274 | break; |
---|
275 | case "bitsItemViewTypeSmallMenuitem": |
---|
276 | viewtype_C = "small"; |
---|
277 | break; |
---|
278 | } |
---|
279 | if(viewtype != viewtype_C){ |
---|
280 | if(!xmldoc){ |
---|
281 | var parser = new DOMParser(); |
---|
282 | xmldoc = parser.parseFromString("<PROPERTY/>", "text/xml"); |
---|
283 | parser = undefined; |
---|
284 | } |
---|
285 | if(iconsize){ |
---|
286 | while(iconsize.hasChildNodes()){ iconsize.removeChild(iconsize.lastChild); } |
---|
287 | }else{ |
---|
288 | iconsize = xmldoc.createElement("ICON_SIZE"); |
---|
289 | xmldoc.documentElement.appendChild(iconsize); |
---|
290 | } |
---|
291 | iconsize.appendChild(xmldoc.createTextNode(viewtype_C)); |
---|
292 | var s = new XMLSerializer(); |
---|
293 | folders[0].fid_property = s.serializeToString(xmldoc); |
---|
294 | s = undefined; |
---|
295 | var dbtype = folders[0].dbtype; |
---|
296 | delete folders[0].dbtype; |
---|
297 | var changed = this.Database.updateFolder(folders[0],dbtype); |
---|
298 | this.refresh(); |
---|
299 | } |
---|
300 | }, |
---|
301 | |
---|
302 | ///////////////////////////////////////////////////////////////////// |
---|
303 | onSearchButtonCommand : function(aEvent){ |
---|
304 | var checked = this.VSB.getAttribute("checked"); |
---|
305 | if(!checked || checked == "false"){ |
---|
306 | this.VSB.setAttribute("checked","true"); |
---|
307 | this.VSM.removeAttribute("disabled"); |
---|
308 | setTimeout(function(){ |
---|
309 | bitsItemView.VSM.focus(); |
---|
310 | bitsItemView.refresh(); |
---|
311 | },0); |
---|
312 | }else{ |
---|
313 | this.VSB.removeAttribute("checked"); |
---|
314 | this.VSM.blur(); |
---|
315 | this.VSM.setAttribute("disabled","true"); |
---|
316 | setTimeout(function(){ |
---|
317 | bitsItemView.refresh(); |
---|
318 | },0); |
---|
319 | } |
---|
320 | }, |
---|
321 | |
---|
322 | ///////////////////////////////////////////////////////////////////// |
---|
323 | onButtonClick : function(aEvent){ |
---|
324 | this._pref.disp = this.isChecked; |
---|
325 | if(!this._pref.disp){ |
---|
326 | this._pref.disp = true; |
---|
327 | }else{ |
---|
328 | this._pref.disp = false; |
---|
329 | } |
---|
330 | if(this.BUTTON) this.BUTTON.setAttribute("checked",this._pref.disp); |
---|
331 | this.SPLITTER.setAttribute("hidden",!this._pref.disp); |
---|
332 | this.VBOX.setAttribute("hidden",!this._pref.disp); |
---|
333 | this.treeDispChange(); |
---|
334 | window.top.bitsMarkingCollection._contentWindow.mcTreeRdfRebuildItem.init(); |
---|
335 | window.top.bitsMarkingCollection._contentWindow.mcTreeHandler.TREE.builder.rebuild(); |
---|
336 | this.onTreeClick(); |
---|
337 | aEvent.stopPropagation(); |
---|
338 | }, |
---|
339 | |
---|
340 | ///////////////////////////////////////////////////////////////////// |
---|
341 | onTreeClick : function(aInfo){ |
---|
342 | if(!this._pref.disp) return; |
---|
343 | if(this._app_version<=2){ |
---|
344 | this.VTTB.setAttribute("disabled","true"); |
---|
345 | }else if(aInfo){ |
---|
346 | this.VTTB.removeAttribute("disabled"); |
---|
347 | } |
---|
348 | if(bitsSearchAcross.getIndex() == mcTreeHandler.TREE.currentIndex){ |
---|
349 | this.TREE_IFOLDER.hidden = false; |
---|
350 | this.TREE_IFOLDERSTYLE.hidden = false; |
---|
351 | }else{ |
---|
352 | this.TREE_IFOLDER.hidden = true; |
---|
353 | this.TREE_IFOLDERSTYLE.hidden = true; |
---|
354 | } |
---|
355 | this._info = aInfo; |
---|
356 | this.rebuild(aInfo); |
---|
357 | }, |
---|
358 | |
---|
359 | ///////////////////////////////////////////////////////////////////// |
---|
360 | onTreeDateClick : function(aInfo){ |
---|
361 | if(!this._pref.disp) return; |
---|
362 | if(this._app_version<=2){ |
---|
363 | this.VTTB.setAttribute("disabled","true"); |
---|
364 | }else if(aInfo){ |
---|
365 | this.VTTB.removeAttribute("disabled"); |
---|
366 | } |
---|
367 | this._info = aInfo; |
---|
368 | this.rebuild(aInfo); |
---|
369 | }, |
---|
370 | |
---|
371 | |
---|
372 | ///////////////////////////////////////////////////////////////////// |
---|
373 | // TREE 衚瀺å¶åŸ¡é¢é£ |
---|
374 | ///////////////////////////////////////////////////////////////////// |
---|
375 | get rowCount(){ |
---|
376 | return (this.itemObjects?this.itemObjects.length:0); |
---|
377 | }, |
---|
378 | getRowObject : function(row){ |
---|
379 | return (row>=0 && this.itemObjects && this.itemObjects.length>row ? this.itemObjects[row] : undefined); |
---|
380 | }, |
---|
381 | getCellText : function(row,column){ |
---|
382 | if(!this.itemObjects || !this.itemObjects[row]) return null; |
---|
383 | if(column.id == this.idTREE_ITITLE){ |
---|
384 | return this.itemObjects[row].oid_title; |
---|
385 | }else if(column.id == this.idTREE_IURL){ |
---|
386 | return this.itemObjects[row].doc_url; |
---|
387 | }else if(column.id == this.idTREE_IDOCTITLE){ |
---|
388 | return this.itemObjects[row].doc_title; |
---|
389 | }else if(column.id == this.idTREE_IDATE){ |
---|
390 | if(!this.itemObjects) return null; |
---|
391 | if(this.itemObjects[row].oid_date.match(/^(\d{2}\/\d{2})\/(\d{4})\s+(\d{2}:\d{2}:\d{2})$/)){ |
---|
392 | return RegExp.$2 + "/" + RegExp.$1 + " " + RegExp.$3; |
---|
393 | }else{ |
---|
394 | return this.itemObjects[row].oid_date; |
---|
395 | } |
---|
396 | }else if(column.id == this.idTREE_INOTE){ |
---|
397 | if(this.itemObjects[row].oid_note == undefined && this.itemObjects[row].oid_property && this.itemObjects[row].oid_property != ""){ |
---|
398 | var domParser = new DOMParser(); |
---|
399 | var xmldoc = domParser.parseFromString(this.itemObjects[row].oid_property, "text/xml"); |
---|
400 | if(xmldoc && xmldoc.documentElement.nodeName == "parsererror") xmldoc = undefined; |
---|
401 | if(xmldoc){ |
---|
402 | var xmlnode = xmldoc.getElementsByTagName("NOTE")[0]; |
---|
403 | if(xmlnode) this.itemObjects[row].oid_note = xmlnode.textContent; |
---|
404 | } |
---|
405 | if(this.itemObjects[row].oid_note == undefined) this.itemObjects[row].oid_note = ""; |
---|
406 | if(this.itemObjects[row].oid_note != ""){ |
---|
407 | var oid_note = this.itemObjects[row].oid_note; |
---|
408 | oid_note = oid_note.replace(/[\r\n]+/mg, " ").replace(/^\s*/g,"").replace(/\s*$/g,""); |
---|
409 | this.itemObjects[row].oid_note = oid_note; |
---|
410 | } |
---|
411 | } |
---|
412 | return this.itemObjects[row].oid_note; |
---|
413 | }else if(column.id == this.idTREE_IFOLDER){ |
---|
414 | if(this.itemObjects[row].pfid == "0" && this.itemObjects[row].dbtype == window.top.bitsMarkingCollection._uncategorized.dbtype){ |
---|
415 | return window.top.bitsMarkingCollection._uncategorized.title; |
---|
416 | }else{ |
---|
417 | return this.itemObjects[row].fid_title; |
---|
418 | } |
---|
419 | }else{ |
---|
420 | return null; |
---|
421 | } |
---|
422 | }, |
---|
423 | setTree: function(treebox){ this.treebox = treebox; }, |
---|
424 | isContainer: function(row){ return false; }, |
---|
425 | isSeparator: function(row){ return false; }, |
---|
426 | isSorted: function(){ return true; }, |
---|
427 | getLevel: function(row){ return 0; }, |
---|
428 | getImageSrc: function(row,column){ |
---|
429 | var icon; |
---|
430 | if(!this.itemObjects) return icon; |
---|
431 | if(!this.itemObjects[row]) return icon; |
---|
432 | if(column.id != this.idTREE_IFAVICON) return icon; |
---|
433 | var aObject = this.itemObjects[row]; |
---|
434 | if(aObject.oid_type.match(/^image\/(.+)$/)){ |
---|
435 | if(this._app_version>2){ |
---|
436 | var blobFile = this.Database.getObjectBLOBFile(aObject.oid,(aObject.dbtype?aObject.dbtype:this.dbtype)); |
---|
437 | if(blobFile.exists()){ |
---|
438 | if(blobFile.fileSize>0){ |
---|
439 | var url = this.Common.convertFilePathToURL(blobFile.path); |
---|
440 | if(url) icon = url; |
---|
441 | }else if(aObject.oid_txt && this._getImageFromURL[aObject.oid_txt] == undefined){ |
---|
442 | var self = this; |
---|
443 | this._getImageFromURL[aObject.oid_txt] = setTimeout(function(){ |
---|
444 | if(self.Common.getImageFromURL(aObject.oid_txt, blobFile)){ |
---|
445 | var box = self.TREE.boxObject; |
---|
446 | box.invalidateCell(row,column); |
---|
447 | } |
---|
448 | },100); |
---|
449 | } |
---|
450 | } |
---|
451 | } |
---|
452 | }else if(aObject.oid_type == "url"){ |
---|
453 | icon = this.Database.getFavicon(aObject.oid_txt,aObject.dbtype); |
---|
454 | if(!icon) icon = this.Database.getFavicon(aObject.doc_url,aObject.dbtype); |
---|
455 | }else{ |
---|
456 | var xmldoc; |
---|
457 | if(xmldoc){ |
---|
458 | var xmlnode = xmldoc.getElementsByTagName("ICON")[0]; |
---|
459 | if(xmlnode) icon = xmlnode.textContent; |
---|
460 | }else{ |
---|
461 | if(aObject.oid_property.match(/^.*<ICON>(.+?)<\/ICON>.*$/m)){ |
---|
462 | icon = RegExp.$1; |
---|
463 | } |
---|
464 | } |
---|
465 | if(icon && icon != ""){ |
---|
466 | var url = Components.classes['@mozilla.org/network/standard-url;1'].createInstance(Components.interfaces.nsIURL); |
---|
467 | url.spec = icon; |
---|
468 | if(url.scheme == "file"){ |
---|
469 | var file = bitsObjectMng.Common.convertURLToFile(icon) |
---|
470 | if(!file.exists()) icon = undefined; |
---|
471 | }else if(url.scheme == "chrome"){ |
---|
472 | var val = this.Database.existsIcon(url); |
---|
473 | if(!val) icon = undefined; |
---|
474 | } |
---|
475 | } |
---|
476 | } |
---|
477 | if(!icon) icon = this.Database.getFavicon(aObject.doc_url,aObject.dbtype); |
---|
478 | if(!icon){ |
---|
479 | if(aObject.oid_type.match(/^image\//)){ |
---|
480 | icon = "chrome://markingcollection/skin/image.png"; |
---|
481 | }else{ |
---|
482 | icon = "chrome://markingcollection/skin/defaultFavicon.png"; |
---|
483 | } |
---|
484 | } |
---|
485 | return icon; |
---|
486 | }, |
---|
487 | getRowProperties: function(row,prop){}, |
---|
488 | getCellProperties: function(row, column, prop) { |
---|
489 | if(column.id == this.idTREE_IFAVICON){ |
---|
490 | var aserv=Components.classes["@mozilla.org/atom-service;1"].getService(Components.interfaces.nsIAtomService); |
---|
491 | prop.AppendElement(aserv.getAtom("ItemView")); |
---|
492 | if(this.itemObjects && this.itemObjects[row]){ |
---|
493 | var aObject = this.itemObjects[row]; |
---|
494 | prop.AppendElement(aserv.getAtom("ItemViewImage")); |
---|
495 | } |
---|
496 | }else if(column.id == this.idTREE_IFOLDER){ |
---|
497 | var aserv=Components.classes["@mozilla.org/atom-service;1"].getService(Components.interfaces.nsIAtomService); |
---|
498 | prop.AppendElement(aserv.getAtom("ItemView")); |
---|
499 | prop.AppendElement(aserv.getAtom("ItemViewImage")); |
---|
500 | prop.AppendElement(aserv.getAtom("folder")); |
---|
501 | }else if(column.id == this.idTREE_IFOLDERSTYLE){ |
---|
502 | if(this.itemObjects && this.itemObjects[row]){ |
---|
503 | var aserv=Components.classes["@mozilla.org/atom-service;1"].getService(Components.interfaces.nsIAtomService); |
---|
504 | prop.AppendElement(aserv.getAtom('css_'+this.itemObjects[row].dbtype+'_'+this.itemObjects[row].pfid)); |
---|
505 | } |
---|
506 | } |
---|
507 | }, |
---|
508 | getColumnProperties: function(column, element, prop) {}, |
---|
509 | cycleHeader : function(col){}, |
---|
510 | isEditable : function(row,column){ |
---|
511 | return column.editable; |
---|
512 | }, |
---|
513 | setCellText : function(row,column,text){ |
---|
514 | if(column.id == this.idTREE_INOTE){ |
---|
515 | text = text.replace(/\t/g," "); |
---|
516 | text = this.Common.exceptCode(text); |
---|
517 | text = text.replace(/[\r\n]+/g, " ").replace(/^\s*/g,"").replace(/\s*$/g,""); |
---|
518 | if(this.itemObjects[row].oid_note == text) return; |
---|
519 | if(this.itemObjects[row].oid_property == undefined || this.itemObjects[row].oid_property == "") this.itemObjects[row].oid_property == "<PROPERTY/>"; |
---|
520 | var domParser = new DOMParser(); |
---|
521 | var xmldoc = domParser.parseFromString(this.itemObjects[row].oid_property, "text/xml"); |
---|
522 | if(xmldoc && xmldoc.documentElement.nodeName == "parsererror") xmldoc = undefined; |
---|
523 | if(xmldoc){ |
---|
524 | var xmlnode = xmldoc.getElementsByTagName("NOTE")[0]; |
---|
525 | if(!xmlnode){ |
---|
526 | xmlnode = xmldoc.createElement("NOTE"); |
---|
527 | xmldoc.documentElement.appendChild(xmlnode); |
---|
528 | } |
---|
529 | while(xmlnode.hasChildNodes()){ xmlnode.removeChild(xmlnode.lastChild); } |
---|
530 | if(text != ""){ |
---|
531 | xmlnode.appendChild(xmldoc.createTextNode(text)); |
---|
532 | }else{ |
---|
533 | xmlnode.parentNode.removeChild(xmlnode); |
---|
534 | } |
---|
535 | var s = new XMLSerializer(); |
---|
536 | this.itemObjects[row].oid_property = s.serializeToString(xmldoc); |
---|
537 | s = undefined; |
---|
538 | var itemObject = {}; |
---|
539 | for(var key in this.itemObjects[row]){ |
---|
540 | itemObject[key] = this.itemObjects[row][key]; |
---|
541 | } |
---|
542 | delete itemObject.oid_note; |
---|
543 | delete itemObject.fid_style; |
---|
544 | delete itemObject.fid_title; |
---|
545 | delete itemObject.folder_order; |
---|
546 | delete itemObject.dbtype; |
---|
547 | if(this.Database.updateObject(itemObject,this.dbtype)) this.itemObjects[row].oid_note = text; |
---|
548 | xmldoc = undefined; |
---|
549 | } |
---|
550 | domParser = undefined; |
---|
551 | } |
---|
552 | }, |
---|
553 | setCellValue : function(row,column,text){}, |
---|
554 | getParentIndex: function(idx) { return -1; }, |
---|
555 | canDrop : function(index, orient){ |
---|
556 | return this._canDrop; |
---|
557 | }, |
---|
558 | onDrop : function(row, orient){}, |
---|
559 | drop : function(row, orient){ |
---|
560 | if(!this._info) return; |
---|
561 | if(!this._canDrop) return; |
---|
562 | try{ |
---|
563 | var XferDataSet = nsTransferable.get(mcTreeDNDHandler.dragDropObserver.getSupportedFlavours(),nsDragAndDrop.getDragData,true); |
---|
564 | var XferData = XferDataSet.first.first; |
---|
565 | var doraggedData = XferData.data; |
---|
566 | var XferDataType = XferData.flavour.contentType; |
---|
567 | }catch(ex){} |
---|
568 | if(XferDataType == "application/x-moz-file" && XferData){ |
---|
569 | if(XferData.data instanceof Components.interfaces.nsIFile){ |
---|
570 | var urlString = this.Common.convertFilePathToURL(XferData.data.path); |
---|
571 | this.capture(urlString, row, orient); |
---|
572 | } |
---|
573 | }else if(XferDataType == "wired-marker/object" && XferData){ |
---|
574 | }else if(XferData && XferData.data){ |
---|
575 | if( |
---|
576 | bitsItemView.originalTarget && |
---|
577 | bitsItemView.originalTarget.nodeName == "IMG" && |
---|
578 | bitsItemView.originalTarget.hasAttribute('oid') && |
---|
579 | bitsItemView.originalTarget.hasAttribute('dbtype') && |
---|
580 | bitsItemView.originalTarget.hasAttribute('pfid')){ |
---|
581 | var oid = bitsItemView.originalTarget.getAttribute('oid'); |
---|
582 | var dbtype = bitsItemView.originalTarget.getAttribute('dbtype'); |
---|
583 | var pfid = bitsItemView.originalTarget.getAttribute('pfid'); |
---|
584 | var dstRes = mcTreeHandler.resource; |
---|
585 | if(dstRes){ |
---|
586 | var dst_fid = mcTreeDNDHandler.DataSource.getProperty(dstRes,"id"); |
---|
587 | var dst_dbtype = mcTreeDNDHandler.DataSource.getProperty(dstRes,"dbtype"); |
---|
588 | if(dst_fid == pfid && dst_dbtype == dbtype) return; |
---|
589 | var srcObjects = bitsItemView.Database.getObject({oid:oid}, dbtype); |
---|
590 | var mergeRtn = window.top.bitsTreeListService.mergeObject({fid:dst_fid,dbtype:dst_dbtype},srcObjects[0]); |
---|
591 | if(mergeRtn) return; |
---|
592 | var rtnObj = null; |
---|
593 | if(dbtype == window.top.bitsMarkingCollection._uncategorized.dbtype || mcTreeDNDHandler.modShift){ |
---|
594 | rtnObj = window.top.bitsTreeListService.moveObject({fid:dst_fid,dbtype:dst_dbtype},srcObjects[0],true); |
---|
595 | }else{ |
---|
596 | rtnObj = window.top.bitsTreeListService.copyObject({fid:dst_fid,dbtype:dst_dbtype},srcObjects[0]); |
---|
597 | } |
---|
598 | setTimeout(function(){ |
---|
599 | var viewmode = mcTreeViewModeService.viewmode; |
---|
600 | mcItemView._bitsItemView.onTreeClick({viewmode:viewmode,fid:dst_fid,dbtype:dst_dbtype,res:dstRes}); |
---|
601 | window.top.bitsTreeListService.reload(bitsItemView.originalTarget.ownerDocument); |
---|
602 | bitsItemView.originalTarget = null; |
---|
603 | },0); |
---|
604 | } |
---|
605 | }else{ |
---|
606 | this.capture(XferData.data, row, orient); |
---|
607 | } |
---|
608 | } |
---|
609 | }, |
---|
610 | |
---|
611 | ///////////////////////////////////////////////////////////////////// |
---|
612 | // Drag & Drop Old Callback functions |
---|
613 | ///////////////////////////////////////////////////////////////////// |
---|
614 | onOldDraggesture: function(aEvent){ |
---|
615 | bitsItemView.getModifiers(aEvent); |
---|
616 | nsDragAndDrop.startDrag(aEvent,bitsItemView.dragDropObserver); |
---|
617 | aEvent.stopPropagation(); |
---|
618 | }, |
---|
619 | onOldDragover: function(aEvent){ |
---|
620 | nsDragAndDrop.dragOver(aEvent,bitsItemView.dragDropObserver); |
---|
621 | aEvent.stopPropagation(); |
---|
622 | }, |
---|
623 | onOldDragdrop: function(aEvent){ |
---|
624 | nsDragAndDrop.drop(aEvent,bitsItemView.dragDropObserver); |
---|
625 | aEvent.stopPropagation(); |
---|
626 | }, |
---|
627 | onOldDragexit: function(aEvent){ |
---|
628 | nsDragAndDrop.dragExit(aEvent,bitsItemView.dragDropObserver); |
---|
629 | aEvent.stopPropagation(); |
---|
630 | }, |
---|
631 | |
---|
632 | ///////////////////////////////////////////////////////////////////// |
---|
633 | // Drag & Drop New Callback functions |
---|
634 | ///////////////////////////////////////////////////////////////////// |
---|
635 | onDragEvents: function(aEvent){ |
---|
636 | switch(aEvent.type){ |
---|
637 | case "dragstart": |
---|
638 | bitsItemView.onDragStart(aEvent); |
---|
639 | break; |
---|
640 | case "drag": |
---|
641 | break; |
---|
642 | case "dragend": |
---|
643 | break; |
---|
644 | } |
---|
645 | }, |
---|
646 | |
---|
647 | onDragStart : function(aEvent){ |
---|
648 | try{ |
---|
649 | if(aEvent.originalTarget.localName != "treechildren") return; |
---|
650 | bitsItemView.getModifiers(aEvent); |
---|
651 | var idxList = bitsItemView.getSelection(); |
---|
652 | if(idxList.length>0){ |
---|
653 | var transferData = aEvent.dataTransfer; |
---|
654 | var rc = []; |
---|
655 | var i; |
---|
656 | for(i=0;i<idxList.length;i++){ |
---|
657 | var oid = bitsItemView.itemObjects[idxList[i]].oid; |
---|
658 | var dbtype = bitsItemView.itemObjects[idxList[i]].dbtype; |
---|
659 | rc.push(oid+"\t"+dbtype); |
---|
660 | } |
---|
661 | if(rc.length>0){ |
---|
662 | var data = rc.join("\n"); |
---|
663 | transferData.setData("wired-marker/object", data); |
---|
664 | } |
---|
665 | } |
---|
666 | }catch(ex){ |
---|
667 | bitsItemView._dump("bitsItemView.onDragStart():"+ex); |
---|
668 | } |
---|
669 | }, |
---|
670 | |
---|
671 | onDropEvents: function(aEvent){ |
---|
672 | switch(aEvent.type){ |
---|
673 | case "dragenter": |
---|
674 | case "dragover": |
---|
675 | aEvent.preventDefault(); |
---|
676 | break; |
---|
677 | case "drop": |
---|
678 | aEvent.preventDefault(); |
---|
679 | var data = null; |
---|
680 | var supportedTypes = ["text/x-moz-url", "text/url-list", "text/plain", "application/x-moz-file"]; |
---|
681 | var types = aEvent.dataTransfer.types; |
---|
682 | types = supportedTypes.filter(function(value){ return types.contains(value);}); |
---|
683 | if(types.length){ |
---|
684 | data = aEvent.dataTransfer.getData(types[0]); |
---|
685 | if(!data) data = aEvent.dataTransfer.mozGetDataAt(types[0],0); |
---|
686 | } |
---|
687 | if(data){ |
---|
688 | if(types[0] == "application/x-moz-file" && data instanceof Components.interfaces.nsIFile){ |
---|
689 | var urlString = bitsItemView.Common.convertFilePathToURL(data.path); |
---|
690 | bitsItemView.capture(urlString); |
---|
691 | }else{ |
---|
692 | if( |
---|
693 | bitsItemView.originalTarget && |
---|
694 | bitsItemView.originalTarget.nodeName == "IMG" && |
---|
695 | bitsItemView.originalTarget.hasAttribute('oid') && |
---|
696 | bitsItemView.originalTarget.hasAttribute('dbtype') && |
---|
697 | bitsItemView.originalTarget.hasAttribute('pfid')){ |
---|
698 | var oid = bitsItemView.originalTarget.getAttribute('oid'); |
---|
699 | var dbtype = bitsItemView.originalTarget.getAttribute('dbtype'); |
---|
700 | var pfid = bitsItemView.originalTarget.getAttribute('pfid'); |
---|
701 | var dstRes = mcTreeHandler.resource; |
---|
702 | if(dstRes){ |
---|
703 | var dst_fid = mcTreeDNDHandler.DataSource.getProperty(dstRes,"id"); |
---|
704 | var dst_dbtype = mcTreeDNDHandler.DataSource.getProperty(dstRes,"dbtype"); |
---|
705 | if(dst_fid == pfid && dst_dbtype == dbtype) return; |
---|
706 | var srcObjects = bitsItemView.Database.getObject({oid:oid}, dbtype); |
---|
707 | var mergeRtn = window.top.bitsTreeListService.mergeObject({fid:dst_fid,dbtype:dst_dbtype},srcObjects[0]); |
---|
708 | if(mergeRtn) return; |
---|
709 | var rtnObj = null; |
---|
710 | if(dbtype == window.top.bitsMarkingCollection._uncategorized.dbtype || mcTreeDNDHandler.modShift){ |
---|
711 | rtnObj = window.top.bitsTreeListService.moveObject({fid:dst_fid,dbtype:dst_dbtype},srcObjects[0],true); |
---|
712 | }else{ |
---|
713 | rtnObj = window.top.bitsTreeListService.copyObject({fid:dst_fid,dbtype:dst_dbtype},srcObjects[0]); |
---|
714 | } |
---|
715 | setTimeout(function(){ |
---|
716 | var viewmode = mcTreeViewModeService.viewmode; |
---|
717 | mcItemView._bitsItemView.onTreeClick({viewmode:viewmode,fid:dst_fid,dbtype:dst_dbtype,res:dstRes}); |
---|
718 | window.top.bitsTreeListService.reload(bitsItemView.originalTarget.ownerDocument); |
---|
719 | bitsItemView.originalTarget = null; |
---|
720 | },0); |
---|
721 | } |
---|
722 | }else{ |
---|
723 | bitsItemView.capture(data); |
---|
724 | } |
---|
725 | } |
---|
726 | } |
---|
727 | break; |
---|
728 | } |
---|
729 | }, |
---|
730 | |
---|
731 | ///////////////////////////////////////////////////////////////////// |
---|
732 | onBrowserMousedown : function(aEvent){ |
---|
733 | try{ bitsItemView.rangeParent = aEvent.rangeParent; }catch(ex){} |
---|
734 | try{ bitsItemView.originalTarget = aEvent.originalTarget; }catch(ex){} |
---|
735 | }, |
---|
736 | |
---|
737 | ///////////////////////////////////////////////////////////////////// |
---|
738 | capture : function(aXferString, aRow, aOrient){ |
---|
739 | var aXferStringArr = aXferString.split("\n"); |
---|
740 | var url = aXferStringArr[0]; |
---|
741 | var url_title = aXferStringArr[1]; |
---|
742 | if(!url_title || url == url_title) url_title = ""; |
---|
743 | if(!this._info) return; |
---|
744 | var fid; |
---|
745 | var dbtype; |
---|
746 | var fid_style; |
---|
747 | if(!this._info.res){ |
---|
748 | return; |
---|
749 | }else{ |
---|
750 | fid = this.DataSource.getProperty(this._info.res, "id"); |
---|
751 | dbtype = this.DataSource.getProperty(this._info.res, "dbtype"); |
---|
752 | fid_style = this.DataSource.getProperty(this._info.res, "style"); |
---|
753 | } |
---|
754 | var win = this.Common.getFocusedWindow(); |
---|
755 | var sel = win.getSelection(); |
---|
756 | var isSelected = false; |
---|
757 | try{ |
---|
758 | isSelected = ( sel.anchorNode === sel.focusNode && sel.anchorOffset == sel.focusOffset ) ? false : true; |
---|
759 | if(isSelected && aXferStringArr.length != 1) isSelected = false; |
---|
760 | if(isSelected && win.document.contentType == "application/pdf") isSelected = false; |
---|
761 | }catch(e){} |
---|
762 | var newResArr; |
---|
763 | if(isSelected){ |
---|
764 | newResArr = window.top.bitsMarkingCollection.addSelectedText({fid:fid,fid_style:fid_style,dbtype:dbtype},aOrient,aRow); |
---|
765 | }else{ |
---|
766 | if(url.indexOf("http://") == 0 || |
---|
767 | url.indexOf("https://") == 0 || |
---|
768 | url.indexOf("ftp://") == 0 || |
---|
769 | url.indexOf("file://") == 0){ |
---|
770 | if(this.originalTarget){ |
---|
771 | //æ¢ã«Targetãèšå®ãããŠããå Žåãã«ã¬ã³ãã®ããã¥ã¡ã³ãã®ãã®ãããã§ã㯠|
---|
772 | if(this.originalTarget.ownerDocument != this.gBrowser.contentDocument){ |
---|
773 | var win = this.gBrowser.contentWindow; |
---|
774 | if(win.frames != null){ |
---|
775 | var i; |
---|
776 | for(i=0;i<win.frames.length;i++){ |
---|
777 | if(this.originalTarget.ownerDocument == win.frames[i].document) break; |
---|
778 | } |
---|
779 | if(i>=win.frames.length) this.originalTarget=null; |
---|
780 | }else{ |
---|
781 | this.originalTarget=null; |
---|
782 | } |
---|
783 | } |
---|
784 | } |
---|
785 | var tmpOriginalTarget = this.originalTarget; |
---|
786 | while(tmpOriginalTarget && (tmpOriginalTarget.nodeName != "A" && tmpOriginalTarget.nodeName != "IMG")){ |
---|
787 | tmpOriginalTarget = tmpOriginalTarget.parentNode; |
---|
788 | } |
---|
789 | if(tmpOriginalTarget) this.originalTarget = tmpOriginalTarget; |
---|
790 | newResArr = window.top.bitsMarkingCollection.addURLText({fid:fid,fid_style:fid_style,dbtype:dbtype},aOrient, aRow, aXferString, this.originalTarget); |
---|
791 | }else{ |
---|
792 | isSelected = false; |
---|
793 | try{ |
---|
794 | isSelected = ( sel.anchorNode === sel.focusNode && sel.anchorOffset == sel.focusOffset ) ? false : true; |
---|
795 | if(isSelected && win.document.contentType == "application/pdf") isSelected = false; |
---|
796 | }catch(ex){} |
---|
797 | if(isSelected){ |
---|
798 | newResArr = window.top.bitsMarkingCollection.addSelectedText({fid:fid,fid_style:fid_style,dbtype:dbtype},aOrient,aRow); |
---|
799 | }else{ |
---|
800 | setTimeout(function(){ |
---|
801 | var rtn = window.top.bitsMarkingCollection.addPDFText({fid:fid,fid_style:fid_style,dbtype:dbtype},aOrient, aRow, aXferString); |
---|
802 | if(!rtn) window.top.bitsMarkingCollection.Common.alert(mcMainService.STRING.getString("ERROR_INVALID_URL") + "\n" + aXferStringArr); |
---|
803 | },0); |
---|
804 | } |
---|
805 | } |
---|
806 | } |
---|
807 | return {isSelected : isSelected, resArr : newResArr}; |
---|
808 | }, |
---|
809 | |
---|
810 | ///////////////////////////////////////////////////////////////////// |
---|
811 | refresh : function(){ |
---|
812 | if(this._refresh_timer) clearTimeout(this._refresh_timer); |
---|
813 | this._refresh_timer = setTimeout(function(){ bitsItemView._refresh(); },100); |
---|
814 | }, |
---|
815 | _refresh : function(){ |
---|
816 | if(!this._refreshFlag) return; |
---|
817 | var idx = this.TREE.currentIndex; |
---|
818 | var rows = this.getSelection(); |
---|
819 | this.rebuild(this._info); |
---|
820 | try{this.TREE.currentIndex=idx;}catch(e){} |
---|
821 | if(!this.itemObjects) return; |
---|
822 | try{ |
---|
823 | var i; |
---|
824 | for(i=0;i<rows.length;i++){ |
---|
825 | if(!this.TREE.view.selection.isSelected(rows[i])) this.TREE.view.selection.select(rows[i]); |
---|
826 | } |
---|
827 | if(this.itemObjects[idx]){ |
---|
828 | var objs = this.Database.getObject({oid:this.itemObjects[idx].oid}, this.itemObjects[idx].dbtype); |
---|
829 | if(objs && objs.length>0) mcPropertyView.dispProperty(objs[0]); |
---|
830 | } |
---|
831 | }catch(e){} |
---|
832 | window.top.bitsAutocacheService.refresh(); |
---|
833 | }, |
---|
834 | |
---|
835 | rebuild : function(aInfo){ |
---|
836 | try{this.TREE.currentIndex = -1;}catch(e){} |
---|
837 | try{this.TREE.view.selection.clearSelection();}catch(e){} |
---|
838 | if(this.itemObjects){ |
---|
839 | this.itemObjects.length = 0; |
---|
840 | this.itemObjects = undefined; |
---|
841 | } |
---|
842 | this.TREE.removeAttribute("flex"); |
---|
843 | var folderFilterHash = {}; |
---|
844 | var tmpFolderFilter = nsPreferences.copyUnicharPref("wiredmarker.filter.folder",""); |
---|
845 | var tmpFolderFilterArr = tmpFolderFilter.split("\t"); |
---|
846 | var i; |
---|
847 | for(i=0;i<tmpFolderFilterArr.length;i++){ |
---|
848 | if(!tmpFolderFilterArr[i].match(/^(\d+):(\d+):(.+)$/)) continue; |
---|
849 | var filter_fid = RegExp.$1; |
---|
850 | var filter_casesensitive = RegExp.$2; |
---|
851 | var filter_keyword = RegExp.$3; |
---|
852 | folderFilterHash[filter_fid] = new RegExp(filter_keyword,(filter_casesensitive==1)?"mg":"img"); |
---|
853 | } |
---|
854 | tmpFolderFilterArr = undefined; |
---|
855 | tmpFolderFilter = undefined; |
---|
856 | if(aInfo){ |
---|
857 | var viewmode = aInfo.viewmode; |
---|
858 | var fid = (aInfo.fid?parseInt(aInfo.fid):undefined); |
---|
859 | this.dbtype = aInfo.dbtype; |
---|
860 | var viewtype = "small"; |
---|
861 | if(fid != undefined && !isNaN(fid)){ |
---|
862 | var info = Components.classes["@mozilla.org/xre/app-info;1"].getService(Components.interfaces.nsIXULAppInfo); |
---|
863 | if(parseInt(info.version)>2){ |
---|
864 | var folders = this.Database.getFolderFormID(fid, this.dbtype); |
---|
865 | if(folders && folders.length>0 && folders[0].fid_property){ |
---|
866 | var parser = new DOMParser(); |
---|
867 | var xmldoc = parser.parseFromString(folders[0].fid_property, "text/xml"); |
---|
868 | parser = undefined; |
---|
869 | var iconsize = xmldoc.getElementsByTagName("ICON_SIZE")[0]; |
---|
870 | if(iconsize) viewtype = iconsize.textContent |
---|
871 | } |
---|
872 | } |
---|
873 | } |
---|
874 | this.TREE.treeBoxObject.clearStyleAndImageCaches(); |
---|
875 | if(viewtype == "large"){ |
---|
876 | this.TREE_IFAVICON.setAttribute("style","min-width:77px;max-width:77px;"); |
---|
877 | this.TREE.setAttribute("class","plain bitsItemTree-largeicon"); |
---|
878 | this.VTTB.setAttribute("label","Large "); |
---|
879 | this.VTMM.removeAttribute("checked"); |
---|
880 | this.VTSM.removeAttribute("checked"); |
---|
881 | this.VTLM.setAttribute("checked","true"); |
---|
882 | }else if(viewtype == "middle"){ |
---|
883 | this.TREE_IFAVICON.setAttribute("style","min-width:43px;max-width:43px;"); |
---|
884 | this.TREE.setAttribute("class","plain bitsItemTree-middleicon"); |
---|
885 | this.VTTB.setAttribute("label","Middle "); |
---|
886 | this.VTLM.removeAttribute("checked"); |
---|
887 | this.VTSM.removeAttribute("checked"); |
---|
888 | this.VTMM.setAttribute("checked","true"); |
---|
889 | }else{ |
---|
890 | this.TREE_IFAVICON.setAttribute("style","min-width:25px;max-width:25px;"); |
---|
891 | this.TREE.setAttribute("class","plain"); |
---|
892 | this.VTTB.setAttribute("label","Small "); |
---|
893 | this.VTLM.removeAttribute("checked"); |
---|
894 | this.VTMM.removeAttribute("checked"); |
---|
895 | this.VTSM.setAttribute("checked","true"); |
---|
896 | } |
---|
897 | if(fid != undefined && !isNaN(fid)){ |
---|
898 | if(viewmode == "all"){ |
---|
899 | this.itemObjects = this.Database.getObject({pfid:fid}, this.dbtype); |
---|
900 | }else{ |
---|
901 | var doc_url = window.top.bitsAutocacheService.convertCacheURLToOriginalURL(this.Common.getURLStringFromDocument(this.gBrowser.contentDocument)); |
---|
902 | this.itemObjects = this.Database.getObject({pfid:fid,doc_url:doc_url}, this.dbtype); |
---|
903 | } |
---|
904 | }else if(isNaN(fid) && aInfo.fid == bitsSearchAcross.id){ |
---|
905 | fid = aInfo.fid; |
---|
906 | var findRegExp = new RegExp(bitsSearchAcross.value,"img"); |
---|
907 | if(viewmode == "all"){ |
---|
908 | this.itemObjects = this.Database.findObject(findRegExp); |
---|
909 | }else{ |
---|
910 | var doc_url = window.top.bitsAutocacheService.convertCacheURLToOriginalURL(this.Common.getURLStringFromDocument(this.gBrowser.contentDocument)); |
---|
911 | this.itemObjects = this.Database.findObject(findRegExp,undefined,{doc_url:doc_url}); |
---|
912 | } |
---|
913 | }else if(aInfo.where){ |
---|
914 | var param = {}; |
---|
915 | for(var i=0;i<aInfo.where.length;i++){ |
---|
916 | param[aInfo.where[i].key] = aInfo.where[i].val; |
---|
917 | } |
---|
918 | if(viewmode != "all") param.doc_url = window.top.bitsAutocacheService.convertCacheURLToOriginalURL(this.Common.getURLStringFromDocument(this.gBrowser.contentDocument)); |
---|
919 | this.itemObjects = this.Database.getObject(param, this.dbtype); |
---|
920 | } |
---|
921 | this.TREE.setAttribute("flex","1"); |
---|
922 | if(this.itemObjects && folderFilterHash[fid]){ |
---|
923 | this.itemObjects = this.itemObjects.filter( |
---|
924 | function(element, index, array) { |
---|
925 | return folderFilterHash[fid].test(element.oid_title); |
---|
926 | } |
---|
927 | ); |
---|
928 | } |
---|
929 | if(this.itemObjects && this.VSB.checked && this.VSM.value != ""){ |
---|
930 | if(this.TREE_INOTE.hidden){ |
---|
931 | this.itemObjects = this.itemObjects.filter( |
---|
932 | function(element, index, array) { |
---|
933 | return (new RegExp(bitsItemView.VSM.value,"img")).test(element.oid_title); |
---|
934 | } |
---|
935 | ); |
---|
936 | }else{ |
---|
937 | var domParser = new DOMParser(); |
---|
938 | this.itemObjects = this.itemObjects.filter( |
---|
939 | function(element, index, array) { |
---|
940 | if(element.oid_note == undefined && element.oid_property && element.oid_property != ""){ |
---|
941 | var xmldoc = domParser.parseFromString(element.oid_property, "text/xml"); |
---|
942 | if(xmldoc && xmldoc.documentElement.nodeName == "parsererror") xmldoc = undefined; |
---|
943 | if(xmldoc){ |
---|
944 | var xmlnode = xmldoc.getElementsByTagName("NOTE")[0]; |
---|
945 | if(xmlnode) element.oid_note = xmlnode.textContent; |
---|
946 | } |
---|
947 | if(element.oid_note == undefined) element.oid_note = ""; |
---|
948 | if(element.oid_note != ""){ |
---|
949 | var oid_note = element.oid_note; |
---|
950 | oid_note = oid_note.replace(/[\r\n]+/mg, " ").replace(/^\s*/g,"").replace(/\s*$/g,""); |
---|
951 | element.oid_note = oid_note; |
---|
952 | } |
---|
953 | } |
---|
954 | var value = bitsItemView.VSM.value; |
---|
955 | return (new RegExp(value,"img")).test(element.oid_title) || (new RegExp(value,"img")).test(element.oid_note); |
---|
956 | } |
---|
957 | ); |
---|
958 | domParser = undefined; |
---|
959 | } |
---|
960 | } |
---|
961 | if(this.itemObjects){ |
---|
962 | var self = this; |
---|
963 | this.itemObjects.sort( |
---|
964 | function(a,b){ |
---|
965 | var direction = ""; |
---|
966 | if(bitsTreeDate.isChecked){ |
---|
967 | var a_date = Date.parse(a.oid_date); |
---|
968 | var b_date = Date.parse(b.oid_date); |
---|
969 | if(a_date < b_date) return -1; |
---|
970 | if(a_date > b_date) return 1; |
---|
971 | var a_order = (a.folder_order?parseInt(a.folder_order):0); |
---|
972 | var b_order = (b.folder_order?parseInt(b.folder_order):0); |
---|
973 | if(a_order < b_order) return -1; |
---|
974 | if(a_order > b_order) return 1; |
---|
975 | return 0; |
---|
976 | }else if( |
---|
977 | self.TREE_IFAVICON.hasAttribute("sortDirection") || |
---|
978 | self.TREE_IURL.hasAttribute("sortDirection") |
---|
979 | ){ |
---|
980 | if(self.TREE_IFAVICON.hasAttribute("sortDirection")){ |
---|
981 | direction = self.TREE_IFAVICON.getAttribute("sortDirection"); |
---|
982 | }else if(self.TREE_IURL.hasAttribute("sortDirection")){ |
---|
983 | direction = self.TREE_IURL.getAttribute("sortDirection"); |
---|
984 | } |
---|
985 | if(direction == "ascending"){ |
---|
986 | if(a.doc_url < b.doc_url) return -1; |
---|
987 | if(a.doc_url > b.doc_url) return 1; |
---|
988 | }else if(direction == "descending"){ |
---|
989 | if(a.doc_url < b.doc_url) return 1; |
---|
990 | if(a.doc_url > b.doc_url) return -1; |
---|
991 | } |
---|
992 | }else if(self.TREE_IDOCTITLE.hasAttribute("sortDirection")){ |
---|
993 | direction = self.TREE_IDOCTITLE.getAttribute("sortDirection"); |
---|
994 | if(direction == "ascending"){ |
---|
995 | if(a.doc_title < b.doc_title) return -1; |
---|
996 | if(a.doc_title > b.doc_title) return 1; |
---|
997 | }else if(direction == "descending"){ |
---|
998 | if(a.doc_title < b.doc_title) return 1; |
---|
999 | if(a.doc_title > b.doc_title) return -1; |
---|
1000 | } |
---|
1001 | }else if(self.TREE_ITITLE.hasAttribute("sortDirection")){ |
---|
1002 | direction = self.TREE_ITITLE.getAttribute("sortDirection"); |
---|
1003 | if(direction == "ascending"){ |
---|
1004 | if(a.oid_title < b.oid_title) return -1; |
---|
1005 | if(a.oid_title > b.oid_title) return 1; |
---|
1006 | }else if(direction == "descending"){ |
---|
1007 | if(a.oid_title < b.oid_title) return 1; |
---|
1008 | if(a.oid_title > b.oid_title) return -1; |
---|
1009 | } |
---|
1010 | }else if(self.TREE_IDATE.hasAttribute("sortDirection")){ |
---|
1011 | direction = self.TREE_IDATE.getAttribute("sortDirection"); |
---|
1012 | var a_date = Date.parse(a.oid_date); |
---|
1013 | var b_date = Date.parse(b.oid_date); |
---|
1014 | if(direction == "ascending"){ |
---|
1015 | if(a_date < b_date) return -1; |
---|
1016 | if(a_date > b_date) return 1; |
---|
1017 | }else if(direction == "descending"){ |
---|
1018 | if(a_date < b_date) return 1; |
---|
1019 | if(a_date > b_date) return -1; |
---|
1020 | } |
---|
1021 | } |
---|
1022 | return 0; |
---|
1023 | } |
---|
1024 | ); |
---|
1025 | } |
---|
1026 | }else if(this._info){ |
---|
1027 | var viewmode = this._info.viewmode; |
---|
1028 | var fid = (this._info.fid?parseInt(this._info.fid):undefined); |
---|
1029 | if(fid && this._info.dbtype){ |
---|
1030 | this.TREE.setAttribute("flex","1"); |
---|
1031 | } |
---|
1032 | } |
---|
1033 | if(this.TREE.hasAttribute("flex")){ |
---|
1034 | var self = this; |
---|
1035 | self.TREE.view = self; |
---|
1036 | self.TREE.removeAttribute("hidden"); |
---|
1037 | if(this._app_version>2) self.VTTB.removeAttribute("disabled"); |
---|
1038 | self.VSB.removeAttribute("disabled"); |
---|
1039 | if(self.VSB.hasAttribute("checked")) self.VSM.removeAttribute("disabled"); |
---|
1040 | }else{ |
---|
1041 | this.VTTB.setAttribute("disabled",true); |
---|
1042 | this.VSB.setAttribute("disabled",true); |
---|
1043 | this.VSM.setAttribute("disabled",true); |
---|
1044 | this.TREE.setAttribute("hidden",true); |
---|
1045 | } |
---|
1046 | }, |
---|
1047 | |
---|
1048 | ///////////////////////////////////////////////////////////////////// |
---|
1049 | // TREE ã€ãã³ãé¢é£ |
---|
1050 | ///////////////////////////////////////////////////////////////////// |
---|
1051 | onMousedown : function(aEvent){ |
---|
1052 | mcTreeImageTooltip.onMousedown(aEvent); |
---|
1053 | if(aEvent.button == 2){ //å³ã¯ãªã㯠|
---|
1054 | var row = {}; |
---|
1055 | var col = {}; |
---|
1056 | var obj = {}; |
---|
1057 | this.TREE.treeBoxObject.getCellAt(aEvent.clientX, aEvent.clientY, row, col, obj); |
---|
1058 | if(row.value>=0){ |
---|
1059 | this.POPUP.removeAttribute("hidden"); |
---|
1060 | }else{ |
---|
1061 | this.POPUP.setAttribute("hidden","true"); |
---|
1062 | } |
---|
1063 | return; |
---|
1064 | } |
---|
1065 | }, |
---|
1066 | |
---|
1067 | onMousemove : function(aEvent){ |
---|
1068 | var param = { |
---|
1069 | tree : bitsItemView.TREE |
---|
1070 | }; |
---|
1071 | try { |
---|
1072 | var row = {}; |
---|
1073 | var col = {}; |
---|
1074 | var childElt = {}; |
---|
1075 | param.tree.treeBoxObject.getCellAt(aEvent.clientX, aEvent.clientY, row, col, childElt); |
---|
1076 | if(row.value == undefined || col.value == undefined){ |
---|
1077 | }else{ |
---|
1078 | param.row = row; |
---|
1079 | param.col = col; |
---|
1080 | param.childElt = childElt; |
---|
1081 | if(mcTreeImageTooltip.tooltipRow != row.value){ |
---|
1082 | if(row.value>=0) param.obj = bitsItemView.itemObjects[row.value]; |
---|
1083 | } |
---|
1084 | } |
---|
1085 | }catch(e){} |
---|
1086 | mcTreeImageTooltip.onMousemove(aEvent,param); |
---|
1087 | }, |
---|
1088 | |
---|
1089 | onMouseout : function(aEvent){ |
---|
1090 | mcTreeImageTooltip.onMouseout(aEvent); |
---|
1091 | }, |
---|
1092 | |
---|
1093 | onClick : function(aEvent){ |
---|
1094 | if(aEvent.button != 0) return; |
---|
1095 | if(aEvent.altKey || aEvent.shiftKey || aEvent.ctrlKey) return; |
---|
1096 | if(aEvent.target.id){ |
---|
1097 | if(aEvent.target.id == this.idTREE) return; |
---|
1098 | if(aEvent.target.id != this.idTREE_IFAVICON) this.TREE_IFAVICON.removeAttribute("sortDirection"); |
---|
1099 | if(aEvent.target.id != this.idTREE_IURL) this.TREE_IURL.removeAttribute("sortDirection"); |
---|
1100 | if(aEvent.target.id != this.idTREE_IDOCTITLE) this.TREE_IDOCTITLE.removeAttribute("sortDirection"); |
---|
1101 | if(aEvent.target.id != this.idTREE_ITITLE) this.TREE_ITITLE.removeAttribute("sortDirection"); |
---|
1102 | if(aEvent.target.id != this.idTREE_IDATE) this.TREE_IDATE.removeAttribute("sortDirection"); |
---|
1103 | if(aEvent.target.id != this.idTREE_INOTE) this.TREE_INOTE.removeAttribute("sortDirection"); |
---|
1104 | if(!aEvent.target.hasAttribute("sortDirection")){ |
---|
1105 | aEvent.target.setAttribute("sortDirection","ascending"); |
---|
1106 | }else if(aEvent.target.getAttribute("sortDirection") == "ascending"){ |
---|
1107 | aEvent.target.setAttribute("sortDirection","descending"); |
---|
1108 | }else{ |
---|
1109 | aEvent.target.removeAttribute("sortDirection"); |
---|
1110 | } |
---|
1111 | this.refresh(); |
---|
1112 | return; |
---|
1113 | } |
---|
1114 | var row = {}; |
---|
1115 | var col = {}; |
---|
1116 | var obj = {}; |
---|
1117 | this.TREE.treeBoxObject.getCellAt(aEvent.clientX, aEvent.clientY, row, col, obj); |
---|
1118 | // try{ if(col.value.id == this.idTREE_INOTE) return; }catch(e){} |
---|
1119 | if(row.value<0){ |
---|
1120 | this.TREE.view.selection.clearSelection(); |
---|
1121 | return; |
---|
1122 | } |
---|
1123 | if(this.itemObjects && this.itemObjects[row.value]){ |
---|
1124 | var objs = this.Database.getObject({oid:this.itemObjects[row.value].oid}, this.itemObjects[row.value].dbtype); |
---|
1125 | if(objs && objs.length>0) mcPropertyView.dispProperty(objs[0]); |
---|
1126 | } |
---|
1127 | //ããŸããªã |
---|
1128 | this.TREE.blur(); |
---|
1129 | this.TREE.focus(); |
---|
1130 | return; |
---|
1131 | this.open(); |
---|
1132 | }, |
---|
1133 | |
---|
1134 | onDblClick : function(aEvent){ |
---|
1135 | if(aEvent.button != 0) return; |
---|
1136 | if(aEvent.altKey || aEvent.shiftKey || aEvent.ctrlKey) return; |
---|
1137 | if(aEvent.target.id == this.idTREE_ITITLE){ |
---|
1138 | return; |
---|
1139 | }else if(aEvent.target.id == this.idTREE_IDATE){ |
---|
1140 | return; |
---|
1141 | } |
---|
1142 | var row = {}; |
---|
1143 | var col = {}; |
---|
1144 | var obj = {}; |
---|
1145 | this.TREE.treeBoxObject.getCellAt(aEvent.clientX, aEvent.clientY, row, col, obj); |
---|
1146 | try{ if(col.value.id == this.idTREE_INOTE) return; }catch(e){} |
---|
1147 | if(row.value<0){ |
---|
1148 | this.TREE.view.selection.clearSelection(); |
---|
1149 | return; |
---|
1150 | } |
---|
1151 | this.open(); |
---|
1152 | }, |
---|
1153 | |
---|
1154 | onKeyPress : function(aEvent){ |
---|
1155 | switch(aEvent.keyCode){ |
---|
1156 | case aEvent.DOM_VK_RETURN : |
---|
1157 | aEvent.preventDefault(); |
---|
1158 | this.open(aEvent.ctrlKey); |
---|
1159 | break; |
---|
1160 | case aEvent.DOM_VK_DELETE : |
---|
1161 | if(!(aEvent.ctrlKey || aEvent.shiftKey)){ |
---|
1162 | aEvent.preventDefault(); |
---|
1163 | this.remove(aEvent); |
---|
1164 | } |
---|
1165 | break; |
---|
1166 | case aEvent.DOM_VK_F2 : |
---|
1167 | aEvent.preventDefault(); |
---|
1168 | this.property(); |
---|
1169 | break; |
---|
1170 | default: |
---|
1171 | break; |
---|
1172 | } |
---|
1173 | }, |
---|
1174 | |
---|
1175 | onKeyDown : function(aEvent){ |
---|
1176 | switch(aEvent.keyCode){ |
---|
1177 | case aEvent.DOM_VK_A : |
---|
1178 | if(aEvent.ctrlKey){ |
---|
1179 | aEvent.preventDefault(); |
---|
1180 | this.TREE.view.selection.selectAll(); |
---|
1181 | } |
---|
1182 | break; |
---|
1183 | default: |
---|
1184 | break; |
---|
1185 | } |
---|
1186 | }, |
---|
1187 | |
---|
1188 | ///////////////////////////////////////////////////////////////////// |
---|
1189 | // TREE é¢é£ |
---|
1190 | ///////////////////////////////////////////////////////////////////// |
---|
1191 | copy : function(aMode){ |
---|
1192 | if(this.TREE.currentIndex<0) return; |
---|
1193 | var row = this.TREE.currentIndex; |
---|
1194 | if(!this.itemObjects[row]) return; |
---|
1195 | var aObject = this.itemObjects[row]; |
---|
1196 | if(!aMode) aMode = 'copy'; |
---|
1197 | window.top.bitsMetaCapture.copyToClipBoard(aObject.oid,aObject.dbtype,aMode); |
---|
1198 | }, |
---|
1199 | |
---|
1200 | open : function(tabbed){ |
---|
1201 | if(this.TREE.currentIndex<0) return; |
---|
1202 | var row = this.TREE.currentIndex; |
---|
1203 | if(!this.itemObjects[row]) return; |
---|
1204 | var aObject = this.itemObjects[row]; |
---|
1205 | this.Common.loadFromObject(aObject,tabbed); |
---|
1206 | }, |
---|
1207 | |
---|
1208 | confirmRemovingFor : function(){ |
---|
1209 | try{ |
---|
1210 | if(this.confirmDelete){ |
---|
1211 | return this.Common.confirm( this.STRING.getString("CONFIRM_DELETE") ); |
---|
1212 | } |
---|
1213 | return true; |
---|
1214 | }catch(e){ |
---|
1215 | return false; |
---|
1216 | } |
---|
1217 | }, |
---|
1218 | |
---|
1219 | setSelection : function(aOID,aDBTYPE){ |
---|
1220 | try{this.TREE.view.selection.clearSelection();}catch(e){} |
---|
1221 | if(!this.itemObjects) return; |
---|
1222 | try{ |
---|
1223 | var row; |
---|
1224 | for(row=0;row<this.itemObjects.length;row++){ |
---|
1225 | if(this.itemObjects[row].oid != aOID || this.itemObjects[row].dbtype != aDBTYPE) continue; |
---|
1226 | this.TREE.currentIndex = row; |
---|
1227 | if(this.TREE.view && !this.TREE.view.selection.isSelected(this.TREE.currentIndex)) this.TREE.view.selection.select(this.TREE.currentIndex); |
---|
1228 | this.TREE.treeBoxObject.ensureRowIsVisible(this.TREE.currentIndex); |
---|
1229 | this.TREE.focus(); |
---|
1230 | mcPropertyView.dispProperty(this.itemObjects[row]); |
---|
1231 | break; |
---|
1232 | } |
---|
1233 | }catch(e){ |
---|
1234 | this._dump("bitsItemView.setSelection():"+e); |
---|
1235 | } |
---|
1236 | }, |
---|
1237 | |
---|
1238 | getSelection : function(){ |
---|
1239 | if(!this.TREE || !this.TREE.view) return undefined; |
---|
1240 | var ret = []; |
---|
1241 | var rc; |
---|
1242 | var i; |
---|
1243 | for(rc=0;rc<this.TREE.view.selection.getRangeCount();rc++){ |
---|
1244 | var start = {}, end = {}; |
---|
1245 | this.TREE.view.selection.getRangeAt(rc, start, end); |
---|
1246 | for(i=start.value;i<= end.value;i++){ |
---|
1247 | if(!this.TREE.view.selection.isSelected(i)) continue; |
---|
1248 | ret.push(i); |
---|
1249 | } |
---|
1250 | } |
---|
1251 | return ret; |
---|
1252 | }, |
---|
1253 | |
---|
1254 | validateMultipleSelection : function(aIdxList){ |
---|
1255 | if(aIdxList.length != this.TREE.view.selection.count){ |
---|
1256 | this.Common.alert(this.STRING.getString("ERROR_MULTIPLE_SELECTION")); |
---|
1257 | return false; |
---|
1258 | } |
---|
1259 | return true; |
---|
1260 | }, |
---|
1261 | |
---|
1262 | mergeObject : function(aFolder){ |
---|
1263 | if(this.TREE.view.selection.count == 0) return false; |
---|
1264 | var idxList = this.getSelection(); |
---|
1265 | if(this.validateMultipleSelection(idxList) == false) return false; |
---|
1266 | window.top.bitsScrapPartyMergeService._isCancel = false; |
---|
1267 | window.top.bitsScrapPartyMergeService._isSameprocessing = false; |
---|
1268 | window.top.bitsScrapPartyMergeService._isMergeMode = 0; |
---|
1269 | window.top.bitsScrapPartyMergeService._isConfirm = false; |
---|
1270 | var mergeRtn = 0; |
---|
1271 | var i; |
---|
1272 | var mergeFlag = false; |
---|
1273 | for(i=0;i<idxList.length;i++){ |
---|
1274 | var row = idxList[i]; |
---|
1275 | if(!this.itemObjects[row]) continue; |
---|
1276 | var aObject = this.itemObjects[row]; |
---|
1277 | var dstObjects = this.Database.getObject({pfid:aFolder.fid,oid_title:aObject.oid_title}, aFolder.dbtype); |
---|
1278 | if(!dstObjects || dstObjects.length == 0) continue; |
---|
1279 | mergeFlag = true; |
---|
1280 | break; |
---|
1281 | } |
---|
1282 | if(!mergeFlag) return mergeRtn; |
---|
1283 | for(i=0;i<idxList.length;i++){ |
---|
1284 | var row = idxList[i]; |
---|
1285 | if(!this.itemObjects[row]) continue; |
---|
1286 | var aObject = this.itemObjects[row]; |
---|
1287 | mergeRtn |= window.top.bitsScrapPartyMergeService._merge(aObject,aFolder); |
---|
1288 | if(window.top.bitsScrapPartyMergeService.cancel) return -1; |
---|
1289 | } |
---|
1290 | return mergeRtn; |
---|
1291 | }, |
---|
1292 | |
---|
1293 | copyObject : function(aFolder){ |
---|
1294 | if(this.TREE.view.selection.count == 0) return false; |
---|
1295 | var idxList = this.getSelection(); |
---|
1296 | if(this.validateMultipleSelection(idxList) == false) return false; |
---|
1297 | var pfid = aFolder.fid; |
---|
1298 | var pdbtype = aFolder.dbtype; |
---|
1299 | var pfid_order = this.Database.getMaxOrderFormPID(aFolder.fid,aFolder.dbtype); |
---|
1300 | var exists = false; |
---|
1301 | var i; |
---|
1302 | for(i=0;i<idxList.length;i++){ |
---|
1303 | var row = idxList[i]; |
---|
1304 | if(!this.itemObjects[row]) continue; |
---|
1305 | var aObject = this.itemObjects[row]; |
---|
1306 | var rtn = this.Database.existsObject({oid:aObject.oid,pfid:aFolder.fid},aFolder.dbtype); |
---|
1307 | if(rtn){ |
---|
1308 | exists = rtn; |
---|
1309 | continue; |
---|
1310 | } |
---|
1311 | if(aObject.dbtype == aFolder.dbtype){ |
---|
1312 | rtn = this.Database.addLink({oid:aObject.oid,pfid:aFolder.fid,pfid_order:++pfid_order},aFolder.dbtype); |
---|
1313 | }else{ |
---|
1314 | var objs = this.Database.getObjectWithProperty({oid:aObject.oid,pfid:aObject.pfid},aObject.dbtype); |
---|
1315 | var blobs =this.Database.getObjectBLOB(aObject.oid,aObject.dbtype); |
---|
1316 | if(objs && objs.length>0) aObject = objs[0]; |
---|
1317 | var addObj = this.Database.newObject(aObject.oid,aFolder.dbtype); |
---|
1318 | var key; |
---|
1319 | for(key in aObject){ |
---|
1320 | if(key == "oid") continue; |
---|
1321 | addObj[key] = aObject[key]; |
---|
1322 | } |
---|
1323 | addObj.pfid = aFolder.fid; |
---|
1324 | delete addObj.dbtype; |
---|
1325 | delete addObj.fid_style; |
---|
1326 | rtn = this.Database.addObject(addObj,aFolder.dbtype); |
---|
1327 | if(rtn){ |
---|
1328 | if(blobs && blobs.length>0){ |
---|
1329 | this.Database.updateObjectBLOB(addObj.oid,blobs[0],aFolder.dbtype); |
---|
1330 | } |
---|
1331 | } |
---|
1332 | } |
---|
1333 | } |
---|
1334 | if(exists){ |
---|
1335 | this.Common.alert(mcMainService.STRING.getString("ALERT_COPYOBJECT_EXISTS")); |
---|
1336 | } |
---|
1337 | return true; |
---|
1338 | }, |
---|
1339 | |
---|
1340 | moveObject : function(aFolder,aModShift){ |
---|
1341 | try{ |
---|
1342 | if(aModShift == undefined) aModShift = false; |
---|
1343 | if(this.TREE.view.selection.count == 0) return false; |
---|
1344 | var idxList = this.getSelection(); |
---|
1345 | if(this.validateMultipleSelection(idxList) == false) return false; |
---|
1346 | var update = false; |
---|
1347 | var i; |
---|
1348 | for(i=0;i<idxList.length;i++){ |
---|
1349 | var row = idxList[i]; |
---|
1350 | if(!this.itemObjects[row]) continue; |
---|
1351 | var aObject = this.itemObjects[row]; |
---|
1352 | if(update == false && aObject.dbtype == aFolder.dbtype && this.Database.existsObject({oid:aObject.oid,pfid:aFolder.fid},aFolder.dbtype)){ |
---|
1353 | if(this.Common.confirm(this.STRING.getString("CONFIRM_COPYOBJECT_OVERWRITE"))){ |
---|
1354 | update = true; |
---|
1355 | }else{ |
---|
1356 | return false; |
---|
1357 | } |
---|
1358 | } |
---|
1359 | if(update && aObject.dbtype == aFolder.dbtype && this.Database.existsObject({oid:aObject.oid,pfid:aFolder.fid},aFolder.dbtype)){ |
---|
1360 | rtn = this.Database.removeLink({oid:aObject.oid,pfid:aFolder.fid},aFolder.dbtype); |
---|
1361 | } |
---|
1362 | } |
---|
1363 | var rtn; |
---|
1364 | for(i=0;i<idxList.length;i++){ |
---|
1365 | var row = idxList[i]; |
---|
1366 | if(!this.itemObjects[row]) continue; |
---|
1367 | rtn = this._moveObject(aFolder,this.itemObjects[row],aModShift); |
---|
1368 | } |
---|
1369 | this.refresh(); |
---|
1370 | return true; |
---|
1371 | }catch(e){ |
---|
1372 | this._dump("bitsItemView.moveObject():"+e); |
---|
1373 | return false; |
---|
1374 | } |
---|
1375 | }, |
---|
1376 | |
---|
1377 | _moveObject : function(aFolder,aObject,aModShift){ |
---|
1378 | var rtn; |
---|
1379 | var pfid_order = this.Database.getMaxOrderFormPID(aFolder.fid,aFolder.dbtype); |
---|
1380 | var old_source = bitsMarker.id_key+aObject.dbtype+aObject.oid; |
---|
1381 | var new_source = bitsMarker.id_key; |
---|
1382 | if(aObject.dbtype == aFolder.dbtype){ |
---|
1383 | rtn = this.Database.updateObject({oid:aObject.oid,pfid:aFolder.fid,pfid_old:aObject.pfid,pfid_order:++pfid_order},aFolder.dbtype); |
---|
1384 | new_source += aFolder.dbtype+aObject.oid; |
---|
1385 | }else{ |
---|
1386 | var objs = this.Database.getObjectWithProperty({oid:aObject.oid,pfid:aObject.pfid},aObject.dbtype); |
---|
1387 | var blobs =this.Database.getObjectBLOB(aObject.oid,aObject.dbtype); |
---|
1388 | if(objs && objs.length>0) aObject = objs[0]; |
---|
1389 | var addObj = this.Database.newObject(aObject.oid,aFolder.dbtype); |
---|
1390 | var key; |
---|
1391 | for(key in aObject){ |
---|
1392 | if(key == "oid") continue; |
---|
1393 | addObj[key] = aObject[key]; |
---|
1394 | } |
---|
1395 | addObj.pfid = aFolder.fid; |
---|
1396 | addObj.pfid_order = ++pfid_order; |
---|
1397 | delete addObj.dbtype; |
---|
1398 | delete addObj.fid_style; |
---|
1399 | rtn = this.Database.addObject(addObj,aFolder.dbtype); |
---|
1400 | if(rtn && blobs && blobs.length>0) this.Database.updateObjectBLOB(addObj.oid,blobs[0],aFolder.dbtype); |
---|
1401 | if(rtn && aModShift) rtn = this.Database.removeObject(aObject,aObject.dbtype); |
---|
1402 | new_source += aFolder.dbtype+addObj.oid; |
---|
1403 | } |
---|
1404 | var i; |
---|
1405 | for(i=0;i<this.gBrowser.browsers.length;i++){ |
---|
1406 | var contentDocument = this.gBrowser.browsers[i].contentDocument; |
---|
1407 | var contentWindow = this.gBrowser.browsers[i].contentWindow; |
---|
1408 | var DOC = []; |
---|
1409 | if(contentWindow.frames){ |
---|
1410 | var wincnt; |
---|
1411 | for(wincnt=0;wincnt<contentWindow.frames.length;wincnt++){ |
---|
1412 | DOC.push(contentWindow.frames[wincnt].document); |
---|
1413 | } |
---|
1414 | } |
---|
1415 | DOC.push(contentDocument); |
---|
1416 | var j; |
---|
1417 | for(j=0;j<DOC.length;j++){ |
---|
1418 | var doc = DOC[j]; |
---|
1419 | var xPathResult = this.XPath.evaluate('//*[@id="'+old_source+'"]', doc); |
---|
1420 | var k; |
---|
1421 | for(k=xPathResult.snapshotLength-1;k>=0;k--){ |
---|
1422 | var node = xPathResult.snapshotItem(k); |
---|
1423 | node.setAttribute("pfid", aFolder.fid); |
---|
1424 | node.setAttribute("style",aFolder.fid_style); |
---|
1425 | node.setAttribute("dbtype",aFolder.dbtype); |
---|
1426 | node.setAttribute("id",new_source); |
---|
1427 | } |
---|
1428 | } |
---|
1429 | DOC = undefined; |
---|
1430 | } |
---|
1431 | return rtn; |
---|
1432 | }, |
---|
1433 | |
---|
1434 | remove : function(aEvent){ |
---|
1435 | if(this.TREE.view.selection.count == 0) return false; |
---|
1436 | if(!this.confirmRemovingFor()) return false; |
---|
1437 | if(aEvent) window.top.bitsScrapPartyAddonService.eventListener(aEvent, 0); |
---|
1438 | var idxList = this.getSelection(); |
---|
1439 | if(this.validateMultipleSelection(idxList) == false) return false; |
---|
1440 | var i; |
---|
1441 | for(i=0;i<idxList.length;i++){ |
---|
1442 | var row = idxList[i]; |
---|
1443 | if(!this.itemObjects[row]) continue; |
---|
1444 | var aObject = this.itemObjects[row]; |
---|
1445 | var match_exp = new RegExp("^"+bitsMarker.id_key+".+$","m"); |
---|
1446 | var source; |
---|
1447 | if(!aObject.oid_type.match(/^image\/(.+)$/)) source = bitsMarker.id_key+aObject.dbtype+aObject.oid; |
---|
1448 | if(source) bitsMarker.unmarkerWindow(source); |
---|
1449 | var id = aObject.oid; |
---|
1450 | var dbtype = aObject.dbtype; |
---|
1451 | var pfid = aObject.pfid; |
---|
1452 | this.Database.removeObject({oid:id,pfid:pfid},dbtype,false); |
---|
1453 | } |
---|
1454 | this.refresh(); |
---|
1455 | mcPropertyView.dispProperty(); |
---|
1456 | if(aEvent) window.top.bitsScrapPartyAddonService.eventListener(aEvent, 1); |
---|
1457 | return true; |
---|
1458 | }, |
---|
1459 | |
---|
1460 | pageshow : function(aDoc){ |
---|
1461 | |
---|
1462 | }, |
---|
1463 | |
---|
1464 | property : function(){ |
---|
1465 | if(this.TREE.currentIndex<0) return; |
---|
1466 | var row = this.TREE.currentIndex; |
---|
1467 | if(!this.itemObjects[row]) return; |
---|
1468 | var aObject = this.itemObjects[row]; |
---|
1469 | var id = aObject.oid; |
---|
1470 | var style = aObject.fid_style; |
---|
1471 | var dbtype = aObject.dbtype; |
---|
1472 | var result = { |
---|
1473 | id : aObject.oid, |
---|
1474 | title : aObject.oid_title, |
---|
1475 | property : aObject.oid_property, |
---|
1476 | style : aObject.fid_style, |
---|
1477 | dbtype : aObject.dbtype, |
---|
1478 | }; |
---|
1479 | window.openDialog("chrome://markingcollection/content/property.xul", "", "chrome,centerscreen,modal", id, result); |
---|
1480 | if(result.accept) this.refresh(); |
---|
1481 | return result.accept; |
---|
1482 | }, |
---|
1483 | |
---|
1484 | //////////////////////////////////////////////////////////////////// |
---|
1485 | // TREE ãã©ãã°ã€ãã³ãé¢é£ |
---|
1486 | ///////////////////////////////////////////////////////////////////// |
---|
1487 | getModifiers : function(aEvent){ |
---|
1488 | this.modAlt = aEvent.altKey; |
---|
1489 | this.modShift = aEvent.shiftKey; |
---|
1490 | this.modCtrl = aEvent.ctrlKey; |
---|
1491 | this.modMeta = aEvent.metaKey; |
---|
1492 | }, |
---|
1493 | |
---|
1494 | dragDropObserver : { |
---|
1495 | onDragStart : function(event, transferData, action){ |
---|
1496 | try{ |
---|
1497 | if(event.originalTarget.localName != "treechildren") return; |
---|
1498 | var idxList = bitsItemView.getSelection(); |
---|
1499 | if(idxList.length>0){ |
---|
1500 | transferData.data = new TransferData(); |
---|
1501 | var rc = []; |
---|
1502 | var i; |
---|
1503 | for(i=0;i<idxList.length;i++){ |
---|
1504 | var oid = bitsItemView.itemObjects[idxList[i]].oid; |
---|
1505 | var dbtype = bitsItemView.itemObjects[idxList[i]].dbtype; |
---|
1506 | rc.push(oid+"\t"+dbtype); |
---|
1507 | } |
---|
1508 | if(rc.length>0){ |
---|
1509 | var data = rc.join("\n"); |
---|
1510 | transferData.data.addDataForFlavour("wired-marker/object", data); |
---|
1511 | } |
---|
1512 | } |
---|
1513 | }catch(ex){ |
---|
1514 | bitsItemView._dump("dragDropObserver.onDragStart():"+ex); |
---|
1515 | } |
---|
1516 | }, |
---|
1517 | getSupportedFlavours : function(){ |
---|
1518 | bitsItemView._canDrop = false; |
---|
1519 | var flavours = new FlavourSet(); |
---|
1520 | flavours.appendFlavour("text/x-moz-url"); |
---|
1521 | flavours.appendFlavour("text/html"); |
---|
1522 | flavours.appendFlavour("text/xml"); |
---|
1523 | flavours.appendFlavour("application/x-moz-url"); |
---|
1524 | flavours.appendFlavour("application/x-moz-file","nsIFile"); |
---|
1525 | flavours.appendFlavour("text/unicode"); |
---|
1526 | return flavours; |
---|
1527 | }, |
---|
1528 | onDragOver : function(event, flavour, session){}, |
---|
1529 | onDragExit : function(event, session){}, |
---|
1530 | onDrop : function(event, transferData, session){ |
---|
1531 | bitsItemView._canDrop = true; |
---|
1532 | }, |
---|
1533 | }, |
---|
1534 | |
---|
1535 | ///////////////////////////////////////////////////////////////////// |
---|
1536 | // Popup ã€ãã³ãé¢é£ |
---|
1537 | ///////////////////////////////////////////////////////////////////// |
---|
1538 | onPopupShowing : function(aEvent){}, |
---|
1539 | |
---|
1540 | onPopupHiding : function(aEvent){}, |
---|
1541 | |
---|
1542 | onPopupCommand : function(aEvent){ |
---|
1543 | switch(aEvent.target.id){ |
---|
1544 | case this.idPOPUP_OPEN: |
---|
1545 | this.open(); |
---|
1546 | break; |
---|
1547 | case this.idPOPUP_OPENN: |
---|
1548 | this.open(true); |
---|
1549 | break; |
---|
1550 | case this.idPOPUP_REMOVE: |
---|
1551 | this.remove(aEvent); |
---|
1552 | break; |
---|
1553 | case this.idPOPUP_PROPERTY: |
---|
1554 | this.property(); |
---|
1555 | break; |
---|
1556 | case this.idPOPUP_COPY: |
---|
1557 | this.copy(); |
---|
1558 | break; |
---|
1559 | case this.idPOPUP_COPYTITLE: |
---|
1560 | this.copy('title'); |
---|
1561 | break; |
---|
1562 | case this.idPOPUP_COPYNOTE: |
---|
1563 | this.copy('note'); |
---|
1564 | break; |
---|
1565 | case this.idPOPUP_COPYMETA: |
---|
1566 | this.copy('pagetitle'); |
---|
1567 | break; |
---|
1568 | case this.idPOPUP_COPYFORMAT: |
---|
1569 | this.copy('format'); |
---|
1570 | break; |
---|
1571 | case this.idPOPUP_COPYSETTING: |
---|
1572 | this.copy('setting'); |
---|
1573 | break; |
---|
1574 | } |
---|
1575 | }, |
---|
1576 | |
---|
1577 | ///////////////////////////////////////////////////////////////////// |
---|
1578 | onSearchKeyPress : function(aEvent){ |
---|
1579 | switch ( aEvent.keyCode ){ |
---|
1580 | case aEvent.DOM_VK_RETURN : |
---|
1581 | this.refresh(); |
---|
1582 | break; |
---|
1583 | default: |
---|
1584 | break; |
---|
1585 | } |
---|
1586 | }, |
---|
1587 | |
---|
1588 | ///////////////////////////////////////////////////////////////////// |
---|
1589 | _dump : function(aString){ |
---|
1590 | window.top.bitsMarkingCollection._dump(aString); |
---|
1591 | }, |
---|
1592 | }; |
---|