diff src/DML/MainVisBundle/Resources/assets/marionette/App.50-keyboard-shortcuts.js @ 0:493bcb69166c

added public content
author Daniel Wolff
date Tue, 09 Feb 2016 20:54:02 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/DML/MainVisBundle/Resources/assets/marionette/App.50-keyboard-shortcuts.js	Tue Feb 09 20:54:02 2016 +0100
@@ -0,0 +1,135 @@
+"use strict";
+
+App.addInitializer(function(options){
+    var _this = this;
+
+    /* =========================================================================
+     * Global key shortcuts
+     */
+    var $document = $(document);
+
+    var aPopupIsOpen = function() {
+        return App.helpIsShowing();
+    };
+    var askToClosePopups = function() {
+    };
+
+    $document.bind("keydown", "esc", function(event) {
+        if (App.helpIsShowing()) {
+            App.hideHelp();
+        }
+    });
+    $document.bind("keydown", "h", function(event) {
+        if (App.helpIsShowing()) {
+            App.hideHelp();
+        } else {
+            App.showHelp();
+        }
+    });
+    $document.bind("keydown", "f", function(event) {
+        if (aPopupIsOpen()) {
+            return false;
+        }
+        var state = App.context.get("state");
+        state.set("musicRecordingsGridIsShown", !state.get("musicRecordingsGridIsShown"));
+    });
+
+    $document.bind("keydown", App.keyboardMappings.ctrl + "+z", function(event) {
+        if (aPopupIsOpen()) {
+            askToClosePopups();
+            return false;
+        }
+        App.undo();
+    });
+
+    $document.bind("keydown", App.keyboardMappings.ctrlShift + "+z", function(event) {
+        if (aPopupIsOpen()) {
+            askToClosePopups();
+            return false;
+        }
+        App.redo();
+    });
+
+    var moveConfig = function(dimension, offset) {
+        var state = App.context.get("state");
+        var configGrid = state.get(state.get("musicRecordingsGridIsShown") ? "musicRecordingGrid" : "musicCollectionGrid");
+        var configs = null;
+        if (dimension == "entity") {
+            configs = configGrid.get("entityConfigs");
+            var selectedConfig = configGrid.getSelectedEntityConfig();
+            if (selectedConfig) {
+                var configToInsertBefore;
+                if (offset == 1) {
+                    configToInsertBefore = configGrid.getNextEntityNeighbour(selectedConfig);
+                    if (configToInsertBefore) {
+                        configToInsertBefore = configGrid.getNextEntityNeighbour(configToInsertBefore);
+                    }
+                } else {
+                    configToInsertBefore = configGrid.getPrevEntityNeighbour(selectedConfig);
+                    if (!configToInsertBefore) {
+                        return;
+                    }
+                }
+                configGrid.relocateEntityConfig(selectedConfig, configToInsertBefore ? configToInsertBefore : null);
+            }
+        } else {
+            configs = configGrid.get("viewConfigs");
+            var selectedConfig = configGrid.getSelectedViewConfig();
+            if (selectedConfig) {
+                var configToInsertBefore;
+                if (offset == 1) {
+                    configToInsertBefore = configGrid.getNextViewNeighbour(selectedConfig);
+                    if (configToInsertBefore) {
+                        configToInsertBefore = configGrid.getNextViewNeighbour(configToInsertBefore);
+                    }
+                } else {
+                    configToInsertBefore = configGrid.getPrevViewNeighbour(selectedConfig);
+                    if (!configToInsertBefore) {
+                        return;
+                    }
+                }
+                configGrid.relocateViewConfig(selectedConfig, configToInsertBefore ? configToInsertBefore : null);
+            }
+        }
+    };
+
+    $document.bind("keydown", "alt+left", function(event) {
+        if (aPopupIsOpen()) {
+            askToClosePopups();
+            return false;
+        }
+        moveConfig("entity", -1);
+        event.preventDefault();
+        return false;
+    });
+
+    $document.bind("keydown", "alt+right", function(event) {
+        if (aPopupIsOpen()) {
+            askToClosePopups();
+            return false;
+        }
+        moveConfig("entity", 1);
+        event.preventDefault();
+        return false;
+    });
+
+    $document.bind("keydown", "alt+up", function(event) {
+        if (aPopupIsOpen()) {
+            askToClosePopups();
+            return false;
+        }
+        moveConfig("view", -1);
+        event.preventDefault();
+        return false;
+    });
+    $document.bind("keydown", "alt+down", function(event) {
+        if (aPopupIsOpen()) {
+            askToClosePopups();
+            return false;
+        }
+        moveConfig("view", 1);
+        event.preventDefault();
+        return false;
+    });
+
+});