Project

General

Profile

3080_clipboard_10.txt

Sergey Ivanovskiy, 06/03/2016 02:15 PM

Download (8.22 KB)

 
1
=== modified file 'src/com/goldencode/p2j/ui/client/driver/web/res/p2j.js'
2
--- src/com/goldencode/p2j/ui/client/driver/web/res/p2j.js	2016-06-03 10:10:16 +0000
3
+++ src/com/goldencode/p2j/ui/client/driver/web/res/p2j.js	2016-06-03 18:03:10 +0000
4
@@ -31,7 +31,8 @@
5
 **                  functions).  Can be used only when the P2J client runs embedded in a 
6
 **                  customer-specific application.
7
 ** 011 SBI 20160519 Added the Safari detection.
8
-**     SBI 20160603 Added createDialog function to open the modal dialog, added prompts and hints.
9
+**     SBI 20160603 Added createDialog function to open the modal dialog, added prompts and hints,
10
+**                  added createKeyEvent.
11
 */
12
 
13
 "use strict";
14
@@ -480,6 +481,92 @@
15
    me.consumeEvent = consumeEvent;
16
    
17
    /**
18
+    * Create a key event.
19
+    * 
20
+    * @param    {String} type
21
+    *           The event type.
22
+    * @param    {Boolean} bubbles
23
+    *           The bubbled event.
24
+    * @param    {Boolean} cancelable
25
+    *           The cancelable event.
26
+    * @param    {Window} view
27
+    *           The window.
28
+    * @param    {Boolean} ctrlKey
29
+    *           True iff  the Ctrl (left or right) key is on. 
30
+    * @param    {Boolean} altKey
31
+    *           True iff  the Alt (left or right) key is on. 
32
+    * @param    {Boolean} shiftKey
33
+    *           True iff  the Alt (left or right) key is on. 
34
+    * @param    {Boolean} metaKey
35
+    *           True iff  the Meta (left or right) key is on.
36
+    * @param    {Number} keyCode
37
+    *           The key code.
38
+    * @param    {Number} charCode
39
+    *           The char code.
40
+    * 
41
+    * @returns  {Event}
42
+    *           The target keyboard event.
43
+    */
44
+   function createKeyEvent(type, bubbles, cancelable, view, ctrlKey,
45
+         altKey, shiftKey, metaKey, keyCode, charCode)
46
+   {
47
+      var event;
48
+      if (document.createEvent !== undefined)
49
+      {
50
+         try 
51
+         {
52
+            event = document.createEvent("KeysEvent");
53
+            
54
+            event.initKeyEvent(type, bubbles, cancelable, view, ctrlKey,
55
+                  altKey, shiftKey, metaKey, keyCode, charCode);
56
+         }
57
+         catch (ex1)
58
+         {
59
+            try
60
+            {
61
+                event = document.createEvent("Events");
62
+            }
63
+            catch (ex2)
64
+            {
65
+                event = document.createEvent("UIEvents");
66
+            }
67
+            finally
68
+            {
69
+                event.initEvent(type, bubbles, cancelable);
70
+   
71
+                //initialize
72
+                event.view = view;
73
+                event.altKey = altKey;
74
+                event.ctrlKey = ctrlKey;
75
+                event.shiftKey = shiftKey;
76
+                event.metaKey = metaKey;
77
+                event.keyCode = keyCode;
78
+                event.charCode = charCode;
79
+            }
80
+         }
81
+      }
82
+      else if (document.createEventObject !== undefined)
83
+      {
84
+         event = document.createEventObject();
85
+         
86
+         event.bubbles = bubbles;
87
+         event.cancelable = cancelable;
88
+         event.view = view;
89
+         event.ctrlKey = ctrlKey;
90
+         event.altKey = altKey;
91
+         event.shiftKey = shiftKey;
92
+         event.metaKey = metaKey;
93
+         
94
+         event.keyCode = (charCode > 0) ? charCode : keyCode;
95
+         event.type = type;
96
+      }
97
+      
98
+      return event;
99
+   };
100
+   
101
+   me.createKeyEvent = createKeyEvent;
102
+   
103
+   /**
104
     * Creates and displays the modal dialog.
105
     * 
106
     * @param    {String} id
107

    
108
=== modified file 'src/com/goldencode/p2j/ui/client/driver/web/res/p2j.keyboard.js'
109
--- src/com/goldencode/p2j/ui/client/driver/web/res/p2j.keyboard.js	2016-06-03 10:10:16 +0000
110
+++ src/com/goldencode/p2j/ui/client/driver/web/res/p2j.keyboard.js	2016-06-03 18:02:28 +0000
111
@@ -31,7 +31,8 @@
112
 ** 012 SBI 20160119 Changed to support Chrome and IE.
113
 **     SBI 20160125 Fixed CTRL + CTRL + key, the permitted default actions are copy, paste and cut. 
114
 ** 013 SBI 20160523 Fixed copy/cut/paste work flow.
115
-**     SBI 20160603 Changed to process Safari COMMAND as it would be a CTRL key pressed.
116
+**     SBI 20160603 Changed to process Safari COMMAND as it would be a CTRL key pressed, fixed
117
+**                  automatic repeats for Safari.
118
 */
119
 
120
 "use strict";
121
@@ -650,22 +651,36 @@
122
                }
123
                return permitted;
124
             }
125
-            else if (last.keyCode === evt.keyCode)
126
+            else if (last.keyCode === evt.keyCode || evt.keyCode === keys.IME_PROCESSKEY)
127
             {  
128
                console.debug(last.ctrlCount);
129
+               var repeatCode = last.keyCode;
130
                // auto-repeats that have no typed keys.
131
                last = {
132
-                     keyCode   : evt.keyCode,
133
-                     shiftKey  : evt.shiftKey,
134
-                     altKey    : evt.altKey,
135
-                     ctrlKey   : evt.ctrlKey,
136
-                     metaKey   : evt.metaKey,
137
-                     charCode  : evt.charCode,
138
-                     ctrlCount : last.ctrlCount
139
-                  };
140
-               
141
-               queue.push(last);
142
-               onkeyup(evt);
143
+                         keyCode   : repeatCode,
144
+                         shiftKey  : evt.shiftKey,
145
+                         altKey    : evt.altKey,
146
+                         ctrlKey   : evt.ctrlKey,
147
+                         metaKey   : evt.metaKey,
148
+                         charCode  : evt.charCode,
149
+                         ctrlCount : last.ctrlCount
150
+                      };
151
+               
152
+               if (repeatCode !== keys.IME_PROCESSKEY)
153
+               {
154
+                  queue.push(last);
155
+                  if (evt.keyCode === keys.IME_PROCESSKEY)
156
+                  {
157
+                     var keyUpEvt = p2j.createKeyEvent("keyup", false, true, null, evt.ctrlKey,
158
+                           evt.altKey, evt.shiftKey, evt.metaKey, repeatCode, 0);
159
+                     onkeyup(keyUpEvt);
160
+                  }
161
+                  else
162
+                  {
163
+                     onkeyup(evt);
164
+                  }
165
+               }
166
+               
167
                var permitted = permittedKeyStrokes(last);
168
                if (!permitted)
169
                {
170
@@ -687,6 +702,7 @@
171
             }
172
          }
173
          queue.push(last);
174
+
175
          var permitted = permittedKeyStrokes(last);
176
          if (!permitted)
177
          {
178
@@ -807,6 +823,7 @@
179
          {
180
             return false;
181
          }
182
+         
183
          var lastKey = queue.pop();
184
          
185
          if (lastKey === undefined)
186
@@ -1015,6 +1032,7 @@
187
          {
188
             return false;
189
          }
190
+         
191
          var lastKey = findKeyEventByKeyCode(evt.keyCode);
192
          
193
          if (lastKey === undefined)
194
@@ -1041,10 +1059,10 @@
195
          {
196
             var evt = queue[pos];
197
             // modifier key down events are merged
198
-            if ((evt.keyCode === keyCode)               ||
199
-                (evt.altKey   && keyCode == keys.ALT)   ||
200
-                (evt.shiftKey && keyCode == keys.SHIFT) ||
201
-                (evt.ctrlKey  && keyCode == keys.CTRL)  ||
202
+            if ((evt.keyCode === keyCode)                ||
203
+                (evt.altKey   && keyCode === keys.ALT)   ||
204
+                (evt.shiftKey && keyCode === keys.SHIFT) ||
205
+                (evt.ctrlKey  && keyCode === keys.CTRL)  ||
206
                 (evt.metaKey  && keyCode === keys.LEFT_WINDOW) ||
207
                 (evt.metaKey  && keyCode === keys.RIGHT_WINDOW))
208
             {
209

    
210
=== modified file 'src/com/goldencode/p2j/ui/client/driver/web/res/p2j.keymap.js'
211
--- src/com/goldencode/p2j/ui/client/driver/web/res/p2j.keymap.js	2016-06-03 10:10:16 +0000
212
+++ src/com/goldencode/p2j/ui/client/driver/web/res/p2j.keymap.js	2016-06-03 18:05:21 +0000
213
@@ -20,7 +20,8 @@
214
 ** 008 SBI 20151011 Added SHIFT + DEL key label to return 639 as its key code.
215
 ** 009 SBI 20160120 Chrome and IE support.
216
 **     SBI 20160212 Fixes for copy/paste and cut default actions.
217
-** 010 SBI 20160603 Changed to process Safari COMMAND as it would be a CTRL key pressed.
218
+** 010 SBI 20160603 Changed to process Safari COMMAND as it would be a CTRL key pressed, added
219
+**                  a virtual key, IME_PROCESSKEY, identified by the 229 code.
220
 */
221
 
222
 "use strict";
223
@@ -107,7 +108,8 @@
224
    RIGHT_DPAD : 178,
225
    C : 67,
226
    V : 86,
227
-   X : 88
228
+   X : 88,
229
+   IME_PROCESSKEY : 229
230
 };
231
 
232
 var basicKeys = [];
233