~azzar1/unity/add-show-desktop-key

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