]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/xul/staff_client/chrome/content/util/clipboard.js
Improve Firefox/XULRunner Support
[Evergreen.git] / Open-ILS / xul / staff_client / chrome / content / util / clipboard.js
1 dump('entering util/clipboard.js\n');
2
3 if (typeof util == 'undefined') var util = {};
4 util.clipboard = {};
5
6 util.clipboard.EXPORT_OK    = [ 
7     'cut', 'copy', 'paste'
8 ];
9 util.clipboard.EXPORT_TAGS    = { ':all' : util.clipboard.EXPORT_OK };
10
11 util.clipboard.cut = function() {
12     try {
13         var n = document.popupNode;
14         if (n.getAttribute('readonly')=='true') return;
15         var v = n.value;
16         var start = n.selectionStart;
17         var end = n.selectionEnd;
18         var clip = v.substring( start, end );
19         n.value = v.substring(0, start) + v.substring(end, v.length);
20         const gClipboardHelper = Components.classes["@mozilla.org/widget/clipboardhelper;1"]
21             .getService(Components.interfaces.nsIClipboardHelper);
22         gClipboardHelper.copyString(clip);
23         n.setSelectionRange(start,start);
24         dump('Copied ' + clip + '\n');
25     } catch(E) {
26         alert(E);
27     }
28 }
29
30 util.clipboard.copy = function() {
31     try {
32         var n = document.popupNode;
33         var v = n.value;
34         var start = n.selectionStart;
35         var end = n.selectionEnd;
36         var clip = v.substring( start, end );
37         const gClipboardHelper = Components.classes["@mozilla.org/widget/clipboardhelper;1"]
38             .getService(Components.interfaces.nsIClipboardHelper);
39         gClipboardHelper.copyString(clip);
40         dump('Copied ' + clip + '\n');
41     } catch(E) {
42         alert(E);
43     }
44 }
45
46 util.clipboard.paste = function() {
47     try {
48         var n = document.popupNode;
49         if (n.getAttribute('readonly')=='true') return;
50         var v = n.value;
51         var start = n.selectionStart;
52         var end = n.selectionEnd;
53         var cb = Components.classes["@mozilla.org/widget/clipboard;1"].getService(Components.interfaces.nsIClipboard); 
54         if (!cb) return false; 
55         var trans = Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable); 
56         if (!trans) return false; 
57         trans.addDataFlavor("text/unicode"); 
58         cb.getData(trans, cb.kGlobalClipboard);
59         var str = {}; var strLength = {};
60         trans.getTransferData("text/unicode",str,strLength);
61         if (str) str = str.value.QueryInterface(Components.interfaces.nsISupportsString);
62         var clip; if (str) clip = str.data.substring(0, strLength.value / 2);
63         n.value = v.substring(0, start) + clip + v.substring(end, v.length);
64         n.setSelectionRange(start + clip.length,start + clip.length);
65         dump('Pasted ' + clip + '\n');
66     } catch(E) {
67         alert(E);
68     }
69 }
70
71 dump('exiting util/clipboard.js\n');