GUI -- Added key handler mechanism.
diff --git a/web/gui/src/main/webapp/sampleKeys.js b/web/gui/src/main/webapp/sampleKeys.js
new file mode 100644
index 0000000..350f46e
--- /dev/null
+++ b/web/gui/src/main/webapp/sampleKeys.js
@@ -0,0 +1,90 @@
+/*
+ * Copyright 2014 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ Sample view to illustrate key bindings.
+
+ @author Simon Hunt
+ */
+
+(function (onos) {
+ 'use strict';
+
+ var keyDispatch = {
+ Z: keyUndo,
+ X: keyCut,
+ C: keyCopy,
+ V: keyPaste,
+ space: keySpace
+ };
+
+ function keyUndo(view) {
+ note(view, 'Z = UNDO');
+ }
+
+ function keyCut(view) {
+ note(view, 'X = CUT');
+ }
+
+ function keyCopy(view) {
+ note(view, 'C = COPY');
+ }
+
+ function keyPaste(view) {
+ note(view, 'V = PASTE');
+ }
+
+ function keySpace(view) {
+ note(view, 'The SpaceBar');
+ }
+
+ function note(view, msg) {
+ view.$div.append('p')
+ .text(msg)
+ .style({
+ 'font-size': '10pt',
+ color: 'darkorange',
+ padding: '0 20px',
+ margin: 0
+ });
+ }
+
+ function keyCallback(view, key, keyCode, event) {
+ note(view, 'Key = ' + key + ' KeyCode = ' + keyCode);
+ }
+
+ // Keys using a keyset to target specific keys only
+ function load(view, ctx) {
+ // this maps specific keys to specific functions (1)
+ view.setKeys(keyDispatch);
+ // whereas, this installs a general key handler function (2)
+ view.setKeys(keyCallback);
+
+ // Note that (1) takes precedence over (2)
+
+ view.$div.append('p')
+ .text('Press a key or two (try Z,X,C,V and others) ...')
+ .style('padding', '2px 8px');
+ }
+
+ // == register the view here, with links to lifecycle callbacks
+
+ onos.ui.addView('sampleKeys', {
+ reset: true, // empty the div on reset
+ load: load
+ });
+
+}(ONOS));