source: DASISH/t5.6/client/branches/webannotator-basic/chrome/markingcollection/content/markingcollection/metaCaptureDialogOutputTree.js @ 5428

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

Added new branch for work on schema change related client fixes.

File size: 13.3 KB
Line 
1var bitsMetaCaptureDialogOutputTree = {
2
3        _xmldoc  : null,
4        xmlflash : null,
5
6/////////////////////////////////////////////////////////////////////
7// プロパティ
8/////////////////////////////////////////////////////////////////////
9        get DataSource(){ return window.opener.top.bitsObjectMng.DataSource; },
10        get Common()     { return window.opener.top.bitsObjectMng.Common;     },
11        get XPath()      { return window.opener.top.bitsObjectMng.XPath;      },
12        get Database()   { return window.opener.top.bitsObjectMng.Database;   },
13        get XML()        { return window.opener.top.bitsObjectMng.XML;        },
14        get gBrowser()   { return window.opener.top.bitsObjectMng.getBrowser();},
15
16        get STRING()     { return document.getElementById("bitsMetaCaptureString"); },
17
18        get DIALOG()     { return document.getElementById("bitsMetaCaptureDialog"); },
19
20        get TREE()       { return document.getElementById("bitsMetaCopyOutputTree"); },
21        get ADD()        { return document.getElementById("bitsMetaCopyOutputTreeAdd"); },
22        get DEL()        { return document.getElementById("bitsMetaCopyOutputTreeDel"); },
23        get CHK_EDIT()   { return document.getElementById("bitsMetaCopyOutputEditCheckbox"); },
24        get GRD_EDIT()   { return document.getElementById("bitsMetaCopyOutputEditGrid"); },
25        get VBOX_EDIT()  { return document.getElementById("bitsMetaCopyOutputEditVBox"); },
26
27        get TAG()        { return document.getElementById("bitsMetaCopyTagRxgexpTreeAddTagMenulist"); },
28        get REGEXP()     { return document.getElementById("bitsMetaCopyTagRxgexpTreeAddRxgexpTextbox"); },
29        get FORMAT()     { return document.getElementById("bitsMetaCopyTagRxgexpTreeAddFormatTextbox"); },
30
31        get CHK_HA()     { return document.getElementById("bitsMetaCopyItemHyperAnchor"); },
32        get CHK_TITLE()  { return document.getElementById("bitsMetaCopyItemTitle"); },
33        get CHK_NOTE()   { return document.getElementById("bitsMetaCopyItemNote"); },
34        get CHK_META()   { return document.getElementById("bitsMetaCopyItemMeta"); },
35        get CHK_HASH()   { return document.getElementById("bitsMetaCopyHyperanchorInURLHash"); },
36
37        get CHK_ANCHOR(){ return document.getElementById("bitsMetaCopyOutputItemAnchor"); },
38
39
40        get GRP_HA()     { return document.getElementById("bitsMetaCopyItemHyperAnchorTagGroup"); },
41        get GRP_TITLE()  { return document.getElementById("bitsMetaCopyItemTitleTagGroup"); },
42        get GRP_NOTE()   { return document.getElementById("bitsMetaCopyItemNoteTagGroup"); },
43        get GRP_META()   { return document.getElementById("bitsMetaCopyItemMetaTagGroup"); },
44        get GRP_HASH()   { return document.getElementById("bitsMetaCopyHyperanchorGroupBox"); },
45
46        get TXT_HA()     { return document.getElementById("bitsMetaCopyItemHyperAnchorText"); },
47        get TXT_TITLE()  { return document.getElementById("bitsMetaCopyItemTitleText"); },
48        get TXT_NOTE()   { return document.getElementById("bitsMetaCopyItemNoteText"); },
49        get TXT_META()   { return document.getElementById("bitsMetaCopyItemMetaText"); },
50
51        get SMP_HA()     { return document.getElementById("bitsMetaCopySampleHyperAnchor"); },
52        get SMP_TITLE()  { return document.getElementById("bitsMetaCopySampleTitle"); },
53        get SMP_NOTE()   { return document.getElementById("bitsMetaCopySampleNote"); },
54        get SMP_META()   { return document.getElementById("bitsMetaCopySampleMeta"); },
55
56        get FMT_OUTPUT(){ return document.getElementById("bitsMetaCopyOutputFormatTextbox"); },
57        get REG_OUTPUT(){ return document.getElementById("bitsMetaCopyOutputRegExpTextbox"); },
58        get REG_I()      { return document.getElementById("bitsMetaCopyOutputRegExpI"); },
59        get REG_G()      { return document.getElementById("bitsMetaCopyOutputRegExpG"); },
60        get REG_M()      { return document.getElementById("bitsMetaCopyOutputRegExpM"); },
61        get REP_OUTPUT(){ return document.getElementById("bitsMetaCopyOutputReplaceTextbox"); },
62        get SMP_OUTPUT(){ return document.getElementById("bitsMetaOutputSample"); },
63
64        get xmldoc()     { return this._xmldoc; },
65        set xmldoc(aVal){ this._xmldoc = aVal; this.rebuild(); },
66
67/////////////////////////////////////////////////////////////////////
68// メ゜ッド
69/////////////////////////////////////////////////////////////////////
70        init : function(aEvent){
71                var outputitems = null;
72                var results = this.XPath.evaluateArray('/METACAPTURE[1]/OUTPUT_ITEMS[1]',this.xmldoc);
73                if(!results || results.length == 0){
74                        outputitems = this.xmldoc.createElement("OUTPUT_ITEMS");
75                        this.xmldoc.documentElement.appendChild(outputitems);
76                }else{
77                        outputitems = results[0];
78                        this.CHK_ANCHOR.checked = (results[0].getAttribute("checked")=="true"?true:false);
79                }
80
81                results = this.XPath.evaluateArray('/METACAPTURE[1]/OUTPUT_ITEMS[1]/OUTPUT_ITEM',this.xmldoc);
82                if(!results || results.length == 0){
83                        var outputitem = this.xmldoc.createElement("OUTPUT_ITEM");
84                        outputitem.setAttribute("format","");
85                        outputitems.appendChild(outputitem);
86                }else{
87                        this.FMT_OUTPUT.value = results[0].getAttribute("format");
88                        this.REG_OUTPUT.value = results[0].getAttribute("regexp");
89                        this.REP_OUTPUT.value = results[0].getAttribute("replace");
90                        this.CHK_HASH.checked = (results[0].getAttribute("location_hash")=="true"?true:false);
91                        this.REG_I.checked = (results[0].getAttribute("regexp_i")=="true"?true:false);
92                        this.REG_G.checked = (results[0].getAttribute("regexp_g")=="true"?true:false);
93                        this.REG_M.checked = (results[0].getAttribute("regexp_m")=="true"?true:false);
94                }
95
96                this.rebuild();
97        },
98
99/////////////////////////////////////////////////////////////////////
100        done : function(aEvent){},
101
102/////////////////////////////////////////////////////////////////////
103        regexpInput : function(aEvent){
104                bitsMetaCaptureDialog.itemChecked();
105        },
106
107/////////////////////////////////////////////////////////////////////
108        outputInput : function(aEvent){
109                if(this.FMT_OUTPUT.value.length){
110                        this.ADD.removeAttribute("disabled");
111                }else{
112                        this.ADD.setAttribute("disabled","true");
113                }
114                bitsMetaCaptureDialog.itemChecked();
115        },
116
117/////////////////////////////////////////////////////////////////////
118// TREE 衚瀺制埡関連
119/////////////////////////////////////////////////////////////////////
120        get rowItems(){
121                return this.XPath.evaluateArray('/METACAPTURE[1]/OUTPUT_ITEMS[1]/OUTPUT_ITEM',this.xmldoc);
122        },
123        get rowCount(){
124                var results = this.rowItems;
125                return results.length;
126        },
127        getCellText : function(row,column){
128                var results = this.rowItems;
129                if(!results[row]) return null;
130                if(column.id == "bitsMetaCopyOutputTreeFormatCol"){
131                        return results[row].getAttribute("format");
132                }else if(column.id == "bitsMetaCopyOutputTreeRxgexpCol"){
133                        return results[row].getAttribute("regexp");
134                }else if(column.id == "bitsMetaCopyOutputTreeRxgexpFlagCol"){
135                        var text = "";
136                        text += (results[row].getAttribute("location_hash")=="true"?"#":"");
137                        text += (results[row].getAttribute("regexp_i")=="true"?"i":"");
138                        text += (results[row].getAttribute("regexp_g")=="true"?"g":"");
139                        text += (results[row].getAttribute("regexp_m")=="true"?"m":"");
140                        return text;
141                }else if(column.id == "bitsMetaCopyOutputTreeReplaceCol"){
142                        return results[row].getAttribute("replace");
143                }else{
144                        return null;
145                }
146        },
147        getCellValue : function(row,column){
148                var results = this.rowItems;
149                if(!results[row]) return false;
150                if(column.id == "bitsMetaCopyTagRxgexpTreeUseCol"){
151                        return (results[row].getAttribute("use") == "true" ? true : false);
152                }
153                return true;
154        },
155        setTree: function(treebox){ this.treebox = treebox; },
156        isEditable: function(row,column){
157                if(column.id == "bitsMetaCopyTagRxgexpTreeUseCol"){
158                        return true;
159                }else{
160                        return false;
161                }
162        },
163        isContainer: function(row){ return false; },
164        isSeparator: function(row){ return false; },
165        isSorted: function(){ return true; },
166        getLevel: function(row){ return 0; },
167        getImageSrc: function(row,column){ return null; },
168        getRowProperties: function(row,prop){},
169        getCellProperties: function(row, column, prop){},
170        getColumnProperties: function(column, element, prop){},
171        cycleHeader : function(col){},
172        setCellText : function(row,column,text){},
173        setCellValue : function(row,column,value){
174                var results = this.rowItems;
175                if(!results[row]) return;
176                if(column.id == "bitsMetaCopyTagRxgexpTreeUseCol"){
177                        results[row].setAttribute("use",value);
178                        this.itemChecked();
179                }
180        },
181  getParentIndex: function(idx){ return -1; },
182        canDrop : function(index, orient){
183                return false;
184        },
185        onDrop : function(row, orient){
186                bitsMetaCaptureDialog._dump("onDrop()");
187        },
188        drop : function(row, orient){
189                bitsMetaCaptureDialog._dump("drop()");
190        },
191
192
193/////////////////////////////////////////////////////////////////////
194        rebuild : function(){
195                this.TREE.view = bitsMetaCaptureDialogOutputTree;
196                if(this.rowCount > 0 && this.TREE.view.selection.count == 0){
197                        this.TREE.view.selection.select(0);
198                        var results = this.rowItems;
199                        for(var i=0;i<results.length;i++){
200                                if(results[i].getAttribute("selected") != "true") continue;
201                                this.TREE.view.selection.select(i);
202                                this.TREE.treeBoxObject.ensureRowIsVisible(i);
203                                break;
204                        }
205                        this.onClick();
206                }
207        },
208
209/////////////////////////////////////////////////////////////////////
210// TREE むベント関連
211/////////////////////////////////////////////////////////////////////
212        onClick : function(aEvent){
213                if(this.TREE.view.selection.count == 0) return false;
214                var idxList = this.getSelection();
215                if(this.validateMultipleSelection(idxList) == false) return false;
216                this.DEL.removeAttribute("disabled");
217                var row = idxList[0];
218                var results = this.rowItems;
219                var format = results[row].getAttribute("format");
220                format = format.replace(/\\n/g,"\n");
221                this.FMT_OUTPUT.value = format;
222                this.REG_OUTPUT.value = results[row].getAttribute("regexp");
223                this.REP_OUTPUT.value = results[row].getAttribute("replace");
224                this.CHK_HASH.checked = (results[row].getAttribute("location_hash")=="true"?true:false);
225                this.REG_I.checked = (results[row].getAttribute("regexp_i")=="true"?true:false);
226                this.REG_G.checked = (results[row].getAttribute("regexp_g")=="true"?true:false);
227                this.REG_M.checked = (results[row].getAttribute("regexp_m")=="true"?true:false);
228                var selnodes = this.XPath.evaluateArray('/METACAPTURE[1]/OUTPUT_ITEMS[1]/OUTPUT_ITEM[@selected="true"]',this.xmldoc);
229                for(var i=0;i<selnodes.length;i++){
230                        selnodes[i].removeAttribute("selected");
231                }
232                results[row].setAttribute("selected","true")
233                this.outputInput();
234        },
235
236        onEdit : function(aEvent){
237                if(this.CHK_EDIT.checked){
238                        this.GRD_EDIT.removeAttribute("hidden");
239                        this.VBOX_EDIT.removeAttribute("hidden");
240                }else{
241                        this.GRD_EDIT.setAttribute("hidden","true");
242                        this.VBOX_EDIT.setAttribute("hidden","true");
243                }
244        },
245
246        onAdd : function(aEvent){
247                var selnodes = this.XPath.evaluateArray('/METACAPTURE[1]/OUTPUT_ITEMS[1]/OUTPUT_ITEM[@selected="true"]',this.xmldoc);
248                for(var i=0;i<selnodes.length;i++){
249                        selnodes[i].removeAttribute("selected");
250                }
251                var elemOutputItems = null;
252                var results = this.XPath.evaluateArray('/METACAPTURE[1]/OUTPUT_ITEMS[1]',this.xmldoc);
253                if(!results || results.length == 0){
254                        elemOutputItems = this.xmldoc.createElement("OUTPUT_ITEMS");
255                        this.xmldoc.documentElement.appendChild(elemOutputItems);
256                }else{
257                        elemOutputItems = results[0];
258                }
259                var format = this.FMT_OUTPUT.value;
260                format = format.replace(/\x0D\x0A|\x0D|\x0A/g,"\\n");
261                var node = this.xmldoc.createElement("OUTPUT_ITEM");
262                node.setAttribute("format",format);
263                node.setAttribute("regexp",this.REG_OUTPUT.value);
264                node.setAttribute("replace",this.REP_OUTPUT.value);
265                node.setAttribute("location_hash",this.CHK_HASH.checked);
266                node.setAttribute("regexp_i",this.REG_I.checked);
267                node.setAttribute("regexp_g",this.REG_G.checked);
268                node.setAttribute("regexp_m",this.REG_M.checked);
269                node.setAttribute("selected","true");
270                elemOutputItems.appendChild(node);
271                if(this.xmlflash) this.xmlflash();
272                this.TREE.view.selection.clearSelection();
273                this.rebuild();
274        },
275
276        onDel : function(aEvent){
277                if(this.TREE.view.selection.count == 0) return false;
278                var idxList = this.getSelection();
279                if(this.validateMultipleSelection(idxList) == false) return false;
280                if(!this.confirmRemovingFor()) return false;
281                var results = this.rowItems;
282                var i;
283                for(i=idxList.length-1;i>=0;i--){
284                        var row = idxList[i];
285                        if(!results[row]) continue;
286                        results[row].parentNode.removeChild(results[row]);
287                }
288                if(this.xmlflash) this.xmlflash();
289                if(this.rowCount == 0) this.TREE.view.selection.clearSelection();
290                this.rebuild();
291                var idxList = this.getSelection();
292                if(this.rowCount == 0 || idxList.length == 0 || this.validateMultipleSelection(idxList) == false){
293                        this.DEL.setAttribute("disabled","true");
294                }else{
295                        this.DEL.removeAttribute("disabled");
296                }
297                this._changed = true;
298                this.TREE.focus();
299        },
300
301        confirmRemovingFor : function(){
302                try{
303                        return this.Common.confirm( this.STRING.getString("CONFIRM_DELETE") );
304                        return true;
305                }catch(e){
306                        return false;
307                }
308        },
309
310/////////////////////////////////////////////////////////////////////
311        getSelection : function(){
312                var ret = [];
313                var rc;
314                var i;
315                for(rc=0;rc<this.TREE.view.selection.getRangeCount();rc++){
316                        var start = {}, end = {};
317                        this.TREE.view.selection.getRangeAt(rc, start, end);
318                        for(i=start.value;i<= end.value;i++){
319                                if(!this.TREE.view.selection.isSelected(i)) continue;
320                                ret.push(i);
321                        }
322                }
323                return ret;
324        },
325
326        validateMultipleSelection : function(aIdxList){
327                if(aIdxList.length != this.TREE.view.selection.count){
328                        alert(this.STRING.getString("ERROR_MULTIPLE_SELECTION"));
329                        return false;
330                }
331                return true;
332        },
333
334/////////////////////////////////////////////////////////////////////
335        _dump : function(aString){
336                window.opener.top.bitsMarkingCollection._dump(aString);
337        },
338};
Note: See TracBrowser for help on using the repository browser.