]> git.donarmstrong.com Git - roundcube.git/blob - program/js/tiny_mce/plugins/searchreplace/js/searchreplace.js
Imported Upstream version 0.2~alpha
[roundcube.git] / program / js / tiny_mce / plugins / searchreplace / js / searchreplace.js
1 tinyMCEPopup.requireLangPack();\r
2 \r
3 var SearchReplaceDialog = {\r
4         init : function(ed) {\r
5                 var f = document.forms[0], m = tinyMCEPopup.getWindowArg("mode");\r
6 \r
7                 this.switchMode(m);\r
8 \r
9                 f[m + '_panel_searchstring'].value = tinyMCEPopup.getWindowArg("search_string");\r
10 \r
11                 // Focus input field\r
12                 f[m + '_panel_searchstring'].focus();\r
13         },\r
14 \r
15         switchMode : function(m) {\r
16                 var f, lm = this.lastMode;\r
17 \r
18                 if (lm != m) {\r
19                         f = document.forms[0];\r
20 \r
21                         if (lm) {\r
22                                 f[m + '_panel_searchstring'].value = f[lm + '_panel_searchstring'].value;\r
23                                 f[m + '_panel_backwardsu'].checked = f[lm + '_panel_backwardsu'].checked;\r
24                                 f[m + '_panel_backwardsd'].checked = f[lm + '_panel_backwardsd'].checked;\r
25                                 f[m + '_panel_casesensitivebox'].checked = f[lm + '_panel_casesensitivebox'].checked;\r
26                         }\r
27 \r
28                         mcTabs.displayTab(m + '_tab',  m + '_panel');\r
29                         document.getElementById("replaceBtn").style.display = (m == "replace") ? "inline" : "none";\r
30                         document.getElementById("replaceAllBtn").style.display = (m == "replace") ? "inline" : "none";\r
31                         this.lastMode = m;\r
32                 }\r
33         },\r
34 \r
35         searchNext : function(a) {\r
36                 var ed = tinyMCEPopup.editor, se = ed.selection, r = se.getRng(), f, m = this.lastMode, s, b, fl = 0, w = ed.getWin(), wm = ed.windowManager, fo = 0;\r
37 \r
38                 // Get input\r
39                 f = document.forms[0];\r
40                 s = f[m + '_panel_searchstring'].value;\r
41                 b = f[m + '_panel_backwardsu'].checked;\r
42                 ca = f[m + '_panel_casesensitivebox'].checked;\r
43                 rs = f['replace_panel_replacestring'].value;\r
44 \r
45                 function fix() {\r
46                         // Correct Firefox graphics glitches\r
47                         r = se.getRng().cloneRange();\r
48                         ed.getDoc().execCommand('SelectAll', false, null);\r
49                         se.setRng(r);\r
50                 };\r
51 \r
52                 function replace() {\r
53                         if (tinymce.isIE)\r
54                                 ed.selection.getRng().duplicate().pasteHTML(rs); // Needs to be duplicated due to selection bug in IE\r
55                         else\r
56                                 ed.getDoc().execCommand('InsertHTML', false, rs);\r
57                 };\r
58 \r
59                 // IE flags\r
60                 if (ca)\r
61                         fl = fl | 4;\r
62 \r
63                 switch (a) {\r
64                         case 'all':\r
65                                 if (tinymce.isIE) {\r
66                                         while (r.findText(s, b ? -1 : 1, fl)) {\r
67                                                 r.scrollIntoView();\r
68                                                 r.select();\r
69                                                 replace();\r
70                                                 fo = 1;\r
71                                         }\r
72 \r
73                                         tinyMCEPopup.storeSelection();\r
74                                 } else {\r
75                                         while (w.find(s, ca, b, false, false, false, false)) {\r
76                                                 replace();\r
77                                                 fo = 1;\r
78                                         }\r
79                                 }\r
80 \r
81                                 if (fo)\r
82                                         wm.alert(ed.getLang('searchreplace_dlg.allreplaced'));\r
83                                 else\r
84                                         wm.alert(ed.getLang('searchreplace_dlg.notfound'));\r
85 \r
86                                 return;\r
87 \r
88                         case 'current':\r
89                                 replace();\r
90                                 break;\r
91                 }\r
92 \r
93                 se.collapse(b);\r
94                 r = se.getRng();\r
95 \r
96                 // Whats the point\r
97                 if (!s)\r
98                         return;\r
99 \r
100                 if (tinymce.isIE) {\r
101                         if (r.findText(s, b ? -1 : 1, fl)) {\r
102                                 r.scrollIntoView();\r
103                                 r.select();\r
104                         } else\r
105                                 wm.alert(ed.getLang('searchreplace_dlg.notfound'));\r
106 \r
107                         tinyMCEPopup.storeSelection();\r
108                 } else {\r
109                         if (!w.find(s, ca, b, false, false, false, false))\r
110                                 wm.alert(ed.getLang('searchreplace_dlg.notfound'));\r
111                         else\r
112                                 fix();\r
113                 }\r
114         }\r
115 };\r
116 \r
117 tinyMCEPopup.onInit.add(SearchReplaceDialog.init, SearchReplaceDialog);\r