233
by mattgiuca
Added a shaky implementation of EditArea as the text editor. |
1 |
var clavier_cds=new Object(146); |
2 |
clavier_cds[8]="Retour arriere"; |
|
3 |
clavier_cds[9]="Tabulation"; |
|
4 |
clavier_cds[12]="Milieu (pave numerique)"; |
|
5 |
clavier_cds[13]="Entrer"; |
|
6 |
clavier_cds[16]="Shift"; |
|
7 |
clavier_cds[17]="Ctrl"; |
|
8 |
clavier_cds[18]="Alt"; |
|
9 |
clavier_cds[19]="Pause"; |
|
10 |
clavier_cds[20]="Verr Maj"; |
|
11 |
clavier_cds[27]="Esc"; |
|
12 |
clavier_cds[32]="Espace"; |
|
13 |
clavier_cds[33]="Page up"; |
|
14 |
clavier_cds[34]="Page down"; |
|
15 |
clavier_cds[35]="End"; |
|
16 |
clavier_cds[36]="Begin"; |
|
17 |
clavier_cds[37]="Fleche gauche"; |
|
18 |
clavier_cds[38]="Fleche haut"; |
|
19 |
clavier_cds[39]="Fleche droite"; |
|
20 |
clavier_cds[40]="Fleche bas"; |
|
21 |
clavier_cds[44]="Impr ecran"; |
|
22 |
clavier_cds[45]="Inser"; |
|
23 |
clavier_cds[46]="Suppr"; |
|
24 |
clavier_cds[91]="Menu Demarrer Windows / touche pomme Mac"; |
|
25 |
clavier_cds[92]="Menu Demarrer Windows"; |
|
26 |
clavier_cds[93]="Menu contextuel Windows"; |
|
27 |
clavier_cds[112]="F1"; |
|
28 |
clavier_cds[113]="F2"; |
|
29 |
clavier_cds[114]="F3"; |
|
30 |
clavier_cds[115]="F4"; |
|
31 |
clavier_cds[116]="F5"; |
|
32 |
clavier_cds[117]="F6"; |
|
33 |
clavier_cds[118]="F7"; |
|
34 |
clavier_cds[119]="F8"; |
|
35 |
clavier_cds[120]="F9"; |
|
36 |
clavier_cds[121]="F10"; |
|
37 |
clavier_cds[122]="F11"; |
|
38 |
clavier_cds[123]="F12"; |
|
39 |
clavier_cds[144]="Verr Num"; |
|
40 |
clavier_cds[145]="Arret defil"; |
|
41 |
||
42 |
||
43 |
||
44 |
function keyDown(e){ |
|
45 |
if(!e){ // if IE |
|
46 |
e=event; |
|
47 |
}
|
|
48 |
||
49 |
// send the event to the plugins
|
|
50 |
for(var i in editArea.plugins){ |
|
51 |
if(typeof(editArea.plugins[i].onkeydown)=="function"){ |
|
52 |
if(editArea.plugins[i].onkeydown(e)===false){ // stop propaging |
|
53 |
if(editArea.nav['isIE']) |
|
54 |
e.keyCode=0; |
|
55 |
return false; |
|
56 |
}
|
|
57 |
}
|
|
58 |
}
|
|
59 |
||
60 |
var target_id=(e.target || e.srcElement).id; |
|
61 |
var use=false; |
|
62 |
if (clavier_cds[e.keyCode]) |
|
63 |
letter=clavier_cds[e.keyCode]; |
|
64 |
else
|
|
65 |
letter=String.fromCharCode(e.keyCode); |
|
66 |
||
67 |
var low_letter= letter.toLowerCase(); |
|
68 |
||
69 |
if(letter=="Tabulation" && target_id=="textarea" && !CtrlPressed(e) && !AltPressed(e)){ |
|
70 |
if(ShiftPressed(e)) |
|
71 |
editArea.execCommand("invert_tab_selection"); |
|
72 |
else
|
|
73 |
editArea.execCommand("tab_selection"); |
|
74 |
||
75 |
use=true; |
|
76 |
if(editArea.nav['isOpera']) // opera can't cancel tabulation events... |
|
77 |
setTimeout("editArea.execCommand('focus');", 1); |
|
78 |
}else if(letter=="Entrer" && target_id=="textarea"){ |
|
79 |
if(editArea.press_enter()) |
|
80 |
use=true; |
|
81 |
}else if(letter=="Entrer" && target_id=="area_search"){ |
|
82 |
editArea.execCommand("area_search"); |
|
83 |
use=true; |
|
84 |
}else if(letter=="Page up" && !editArea.nav['isOpera']){ |
|
85 |
editArea.execCommand("scroll_page", {"dir": "up", "shift": ShiftPressed(e)}); |
|
86 |
use=true; |
|
87 |
}else if(letter=="Page down" && !editArea.nav['isOpera']){ |
|
88 |
editArea.execCommand("scroll_page", {"dir": "down", "shift": ShiftPressed(e)}); |
|
89 |
use=true; |
|
90 |
}else if(letter=="Esc"){ |
|
91 |
editArea.execCommand("close_all_inline_popup", e); |
|
92 |
use=true; |
|
93 |
}else if(CtrlPressed(e) && !AltPressed(e) && !ShiftPressed(e)){ |
|
94 |
switch(low_letter){ |
|
95 |
case "f": |
|
96 |
editArea.execCommand("area_search"); |
|
97 |
use=true; |
|
98 |
break; |
|
99 |
case "r": |
|
100 |
editArea.execCommand("area_replace"); |
|
101 |
use=true; |
|
102 |
break; |
|
103 |
case "q": |
|
104 |
editArea.execCommand("close_all_inline_popup", e); |
|
105 |
use=true; |
|
106 |
break; |
|
107 |
case "h": |
|
108 |
editArea.execCommand("change_highlight"); |
|
109 |
use=true; |
|
110 |
break; |
|
111 |
case "g": |
|
112 |
setTimeout("editArea.execCommand('go_to_line');", 5); // the prompt stop the return false otherwise |
|
113 |
use=true; |
|
114 |
break; |
|
115 |
case "e": |
|
116 |
editArea.execCommand("show_help"); |
|
117 |
use=true; |
|
118 |
break; |
|
119 |
case "z": |
|
120 |
use=true; |
|
121 |
editArea.execCommand("undo"); |
|
122 |
break; |
|
123 |
case "y": |
|
124 |
use=true; |
|
125 |
editArea.execCommand("redo"); |
|
126 |
break; |
|
127 |
default: |
|
128 |
break; |
|
129 |
}
|
|
130 |
}
|
|
131 |
||
132 |
// check to disable the redo possibility if the textarea content change
|
|
133 |
if(editArea.next.length > 0){ |
|
134 |
setTimeout("editArea.check_redo();", 10); |
|
135 |
}
|
|
136 |
||
137 |
setTimeout("editArea.check_file_changes();", 10); |
|
138 |
||
139 |
||
140 |
if(use){ |
|
141 |
// in case of a control that sould'nt be used by IE but that is used => THROW a javascript error that will stop key action
|
|
142 |
if(editArea.nav['isIE']) |
|
143 |
e.keyCode=0; |
|
144 |
return false; |
|
145 |
}
|
|
146 |
//alert("Test: "+ letter + " ("+e.keyCode+") ALT: "+ AltPressed(e) + " CTRL "+ CtrlPressed(e) + " SHIFT "+ ShiftPressed(e));
|
|
147 |
||
148 |
return true; |
|
149 |
||
150 |
};
|
|
151 |
||
152 |
||
153 |
// return true if Alt key is pressed
|
|
154 |
function AltPressed(e) { |
|
155 |
if (window.event) { |
|
156 |
return (window.event.altKey); |
|
157 |
} else { |
|
158 |
if(e.modifiers) |
|
159 |
return (e.altKey || (e.modifiers % 2)); |
|
160 |
else
|
|
161 |
return e.altKey; |
|
162 |
}
|
|
163 |
};
|
|
164 |
||
165 |
// return true if Ctrl key is pressed
|
|
166 |
function CtrlPressed(e) { |
|
167 |
if (window.event) { |
|
168 |
return (window.event.ctrlKey); |
|
169 |
} else { |
|
170 |
return (e.ctrlKey || (e.modifiers==2) || (e.modifiers==3) || (e.modifiers>5)); |
|
171 |
}
|
|
172 |
};
|
|
173 |
||
174 |
// return true if Shift key is pressed
|
|
175 |
function ShiftPressed(e) { |
|
176 |
if (window.event) { |
|
177 |
return (window.event.shiftKey); |
|
178 |
} else { |
|
179 |
return (e.shiftKey || (e.modifiers>3)); |
|
180 |
}
|
|
181 |
};
|
|
182 |
||
183 |