Fix #5654 - roojspacker - get it working as a doc tool...
[roojs1] / docs.old / symbols / src / Roo_KeyMap.js.html
diff --git a/docs.old/symbols/src/Roo_KeyMap.js.html b/docs.old/symbols/src/Roo_KeyMap.js.html
new file mode 100644 (file)
index 0000000..41f887f
--- /dev/null
@@ -0,0 +1,222 @@
+<html><head><title>../roojs1/Roo/KeyMap.js</title><link rel="stylesheet" type="text/css" href="../../../css/highlight-js.css"/></head><body class="highlightpage"><code class="jsdoc-pretty"><span class="jsdoc-comment">/*
+ * Based on:
+ * Ext JS Library 1.1.1
+ * Copyright(c) 2006-2007, Ext JS, LLC.
+ *
+ * Originally Released Under LGPL - original licence link has changed is not relivant.
+ *
+ * Fork - LGPL
+ * &lt;script type=&quot;text/javascript&quot;&gt;
+ */
+
+/**
+ * @class Roo.KeyMap
+ * Handles mapping keys to actions for an element. One key map can be used for multiple actions.
+ * The constructor accepts the same config object as defined by {@link #addBinding}.
+ * If you bind a callback function to a KeyMap, anytime the KeyMap handles an expected key
+ * combination it will call the function with this signature (if the match is a multi-key
+ * combination the callback will still be called only once): (String key, Roo.EventObject e)
+ * A KeyMap can also handle a string representation of keys.&lt;br /&gt;
+ * Usage:
+ &lt;pre&gt;&lt;code&gt;
+// map one key by key code
+var map = new Roo.KeyMap(&quot;my-element&quot;, {
+    key: 13, // or Roo.EventObject.ENTER
+    fn: myHandler,
+    scope: myObject
+});
+
+// map multiple keys to one action by string
+var map = new Roo.KeyMap(&quot;my-element&quot;, {
+    key: &quot;a\r\n\t&quot;,
+    fn: myHandler,
+    scope: myObject
+});
+
+// map multiple keys to multiple actions by strings and array of codes
+var map = new Roo.KeyMap(&quot;my-element&quot;, [
+    {
+        key: [10,13],
+        fn: function(){ alert(&quot;Return was pressed&quot;); }
+    }, {
+        key: &quot;abc&quot;,
+        fn: function(){ alert('a, b or c was pressed'); }
+    }, {
+        key: &quot;\t&quot;,
+        ctrl:true,
+        shift:true,
+        fn: function(){ alert('Control + shift + tab was pressed.'); }
+    }
+]);
+&lt;/code&gt;&lt;/pre&gt;
+ * &lt;b&gt;Note: A KeyMap starts enabled&lt;/b&gt;
+ * @constructor
+ * @param {String/HTMLElement/Roo.Element} el The element to bind to
+ * @param {Object} config The config (see {@link #addBinding})
+ * @param {String} eventName (optional) The event to bind to (defaults to &quot;keydown&quot;)
+ */
+</span><span class="jsdoc-var">Roo.KeyMap </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">config</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">eventName</span><span class="jsdoc-syntax">){
+    </span><span class="jsdoc-var">this.el  </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">);
+    </span><span class="jsdoc-var">this.eventName </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">eventName </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-string">&quot;keydown&quot;</span><span class="jsdoc-syntax">;
+    </span><span class="jsdoc-var">this.bindings </span><span class="jsdoc-syntax">= [];
+    </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">config</span><span class="jsdoc-syntax">){
+        </span><span class="jsdoc-var">this.addBinding</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">config</span><span class="jsdoc-syntax">);
+    }
+    </span><span class="jsdoc-var">this.enable</span><span class="jsdoc-syntax">();
+};
+
+</span><span class="jsdoc-var">Roo.KeyMap.prototype </span><span class="jsdoc-syntax">= {
+    </span><span class="jsdoc-comment">/**
+     * True to stop the event from bubbling and prevent the default browser action if the
+     * key was handled by the KeyMap (defaults to false)
+     * @type Boolean
+     */
+    </span><span class="jsdoc-var">stopEvent </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
+
+    </span><span class="jsdoc-comment">/**
+     * Add a new binding to this KeyMap. The following config object properties are supported:
+     * &lt;pre&gt;
+Property    Type             Description
+----------  ---------------  ----------------------------------------------------------------------
+key         String/Array     A single keycode or an array of keycodes to handle
+shift       Boolean          True to handle key only when shift is pressed (defaults to false)
+ctrl        Boolean          True to handle key only when ctrl is pressed (defaults to false)
+alt         Boolean          True to handle key only when alt is pressed (defaults to false)
+fn          Function         The function to call when KeyMap finds the expected key combination
+scope       Object           The scope of the callback function
+&lt;/pre&gt;
+     *
+     * Usage:
+     * &lt;pre&gt;&lt;code&gt;
+// Create a KeyMap
+var map = new Roo.KeyMap(document, {
+    key: Roo.EventObject.ENTER,
+    fn: handleKey,
+    scope: this
+});
+
+//Add a new binding to the existing KeyMap later
+map.addBinding({
+    key: 'abc',
+    shift: true,
+    fn: handleKey,
+    scope: this
+});
+&lt;/code&gt;&lt;/pre&gt;
+     * @param {Object/Array} config A single KeyMap config or an array of configs
+     */
+       </span><span class="jsdoc-var">addBinding </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">config</span><span class="jsdoc-syntax">){
+        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">config </span><span class="jsdoc-keyword">instanceof </span><span class="jsdoc-var">Array</span><span class="jsdoc-syntax">){
+            </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0, </span><span class="jsdoc-var">len </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">config.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">len</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++){
+                </span><span class="jsdoc-var">this.addBinding</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">config</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]);
+            }
+            </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
+        }
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">keyCode </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">config.key</span><span class="jsdoc-syntax">,
+            </span><span class="jsdoc-var">shift </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">config.shift</span><span class="jsdoc-syntax">, 
+            </span><span class="jsdoc-var">ctrl </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">config.ctrl</span><span class="jsdoc-syntax">, 
+            </span><span class="jsdoc-var">alt </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">config.alt</span><span class="jsdoc-syntax">,
+            </span><span class="jsdoc-var">fn </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">config.fn</span><span class="jsdoc-syntax">,
+            </span><span class="jsdoc-var">scope </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">config.scope</span><span class="jsdoc-syntax">;
+        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">keyCode </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">&quot;string&quot;</span><span class="jsdoc-syntax">){
+            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ks </span><span class="jsdoc-syntax">= [];
+            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">keyString </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">keyCode.toUpperCase</span><span class="jsdoc-syntax">();
+            </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">j </span><span class="jsdoc-syntax">= 0, </span><span class="jsdoc-var">len </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">keyString.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">j </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">len</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">j</span><span class="jsdoc-syntax">++){
+                </span><span class="jsdoc-var">ks.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">keyString.charCodeAt</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">j</span><span class="jsdoc-syntax">));
+            }
+            </span><span class="jsdoc-var">keyCode </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">ks</span><span class="jsdoc-syntax">;
+        }
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">keyArray </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">keyCode </span><span class="jsdoc-keyword">instanceof </span><span class="jsdoc-var">Array</span><span class="jsdoc-syntax">;
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">handler </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">){
+            </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">((!</span><span class="jsdoc-var">shift </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">e.shiftKey</span><span class="jsdoc-syntax">) &amp;&amp; (!</span><span class="jsdoc-var">ctrl </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">e.ctrlKey</span><span class="jsdoc-syntax">) &amp;&amp;  (!</span><span class="jsdoc-var">alt </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">e.altKey</span><span class="jsdoc-syntax">)){
+                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">k </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">e.getKey</span><span class="jsdoc-syntax">();
+                </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">keyArray</span><span class="jsdoc-syntax">){
+                    </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0, </span><span class="jsdoc-var">len </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">keyCode.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">len</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++){
+                        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">keyCode</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">] == </span><span class="jsdoc-var">k</span><span class="jsdoc-syntax">){
+                          </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.stopEvent</span><span class="jsdoc-syntax">){
+                              </span><span class="jsdoc-var">e.stopEvent</span><span class="jsdoc-syntax">();
+                          }
+                          </span><span class="jsdoc-var">fn.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">scope </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">window</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">k</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">);
+                          </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
+                        }
+                    }
+                }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
+                    </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">k </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">keyCode</span><span class="jsdoc-syntax">){
+                        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.stopEvent</span><span class="jsdoc-syntax">){
+                           </span><span class="jsdoc-var">e.stopEvent</span><span class="jsdoc-syntax">();
+                        }
+                        </span><span class="jsdoc-var">fn.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">scope </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">window</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">k</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">);
+                    }
+                }
+            }
+        };
+        </span><span class="jsdoc-var">this.bindings.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">handler</span><span class="jsdoc-syntax">);  
+       },
+
+    </span><span class="jsdoc-comment">/**
+     * Shorthand for adding a single key listener
+     * @param {Number/Array/Object} key Either the numeric key code, array of key codes or an object with the
+     * following options:
+     * {key: (number or array), shift: (true/false), ctrl: (true/false), alt: (true/false)}
+     * @param {Function} fn The function to call
+     * @param {Object} scope (optional) The scope of the function
+     */
+    </span><span class="jsdoc-var">on </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">key</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">fn</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">scope</span><span class="jsdoc-syntax">){
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">keyCode</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">shift</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">ctrl</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">alt</span><span class="jsdoc-syntax">;
+        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">key </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">&quot;object&quot; </span><span class="jsdoc-syntax">&amp;&amp; !(</span><span class="jsdoc-var">key </span><span class="jsdoc-keyword">instanceof </span><span class="jsdoc-var">Array</span><span class="jsdoc-syntax">)){
+            </span><span class="jsdoc-var">keyCode </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">key.key</span><span class="jsdoc-syntax">;
+            </span><span class="jsdoc-var">shift </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">key.shift</span><span class="jsdoc-syntax">;
+            </span><span class="jsdoc-var">ctrl </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">key.ctrl</span><span class="jsdoc-syntax">;
+            </span><span class="jsdoc-var">alt </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">key.alt</span><span class="jsdoc-syntax">;
+        }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
+            </span><span class="jsdoc-var">keyCode </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">key</span><span class="jsdoc-syntax">;
+        }
+        </span><span class="jsdoc-var">this.addBinding</span><span class="jsdoc-syntax">({
+            </span><span class="jsdoc-var">key</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">keyCode</span><span class="jsdoc-syntax">,
+            </span><span class="jsdoc-var">shift</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">shift</span><span class="jsdoc-syntax">,
+            </span><span class="jsdoc-var">ctrl</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">ctrl</span><span class="jsdoc-syntax">,
+            </span><span class="jsdoc-var">alt</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">alt</span><span class="jsdoc-syntax">,
+            </span><span class="jsdoc-var">fn</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">fn</span><span class="jsdoc-syntax">,
+            </span><span class="jsdoc-var">scope</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">scope
+        </span><span class="jsdoc-syntax">})
+    },
+
+    </span><span class="jsdoc-comment">// private
+    </span><span class="jsdoc-var">handleKeyDown </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">){
+           </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.enabled</span><span class="jsdoc-syntax">){ </span><span class="jsdoc-comment">//just in case
+           </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">b </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.bindings</span><span class="jsdoc-syntax">;
+           </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0, </span><span class="jsdoc-var">len </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">b.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">len</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++){
+               </span><span class="jsdoc-var">b</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">);
+           }
+           }
+       },
+       
+       </span><span class="jsdoc-comment">/**
+        * Returns true if this KeyMap is enabled
+        * @return {Boolean} 
+        */
+       </span><span class="jsdoc-var">isEnabled </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
+           </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.enabled</span><span class="jsdoc-syntax">;  
+       },
+       
+       </span><span class="jsdoc-comment">/**
+        * Enables this KeyMap
+        */
+       </span><span class="jsdoc-var">enable</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
+               </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.enabled</span><span class="jsdoc-syntax">){
+                   </span><span class="jsdoc-var">this.el.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.eventName</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.handleKeyDown</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
+                   </span><span class="jsdoc-var">this.enabled </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
+               }
+       },
+
+       </span><span class="jsdoc-comment">/**
+        * Disable this KeyMap
+        */
+       </span><span class="jsdoc-var">disable</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
+               </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.enabled</span><span class="jsdoc-syntax">){
+                   </span><span class="jsdoc-var">this.el.removeListener</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.eventName</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.handleKeyDown</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
+                   </span><span class="jsdoc-var">this.enabled </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
+               }
+       }
+};</span></code></body></html>
\ No newline at end of file