Added Key Commands to topo2

Change-Id: I83f596dfa7d906a2760cbcdc2fcd2d2aedb88832
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2KeyCommands.js b/web/gui/src/main/webapp/app/view/topo2/topo2KeyCommands.js
new file mode 100644
index 0000000..f3b444d
--- /dev/null
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2KeyCommands.js
@@ -0,0 +1,67 @@
+/*
+* Copyright 2016-present 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.
+*/
+
+(function () {
+
+    // Injected Services
+    var ks, t2ps;
+    var topo2ForceService;
+
+    // Commmands
+    var actionMap = {
+        L: [cycleDeviceLabels, 'Cycle device labels']
+    };
+
+    function init(t2fs) {
+        topo2ForceService = t2fs;
+        bindCommands();
+    }
+
+    function bindCommands() {
+
+        ks.keyBindings(actionMap);
+
+        ks.gestureNotes([
+            ['click', 'Select the item and show details'],
+            ['shift-click', 'Toggle selection state'],
+            ['drag', 'Reposition (and pin) device / host'],
+            ['cmd-scroll', 'Zoom in / out'],
+            ['cmd-drag', 'Pan']
+        ]);
+    }
+
+    function cycleDeviceLabels() {
+        var deviceLabelIndex = t2ps.get('dlbls') + 1;
+        t2ps.set('dlbls', deviceLabelIndex % 3);
+        topo2ForceService.updateNodes();
+    }
+
+    angular.module('ovTopo2')
+    .factory('Topo2KeyCommandService',
+    ['KeyService', 'Topo2PrefsService',
+
+        function (_ks_, _t2ps_) {
+
+            t2ps = _t2ps_;
+            ks = _ks_;
+
+            return {
+                init: init,
+                bindCommands: bindCommands
+            };
+        }
+    ]);
+})();