Переглянути джерело

Migrated input handling code out of index.html

All input handling is now in Sidebar.Controls. In addition,
changed from using event.keyCode to event.key. This may cause
browser compatibility issues, but is more maintainable and
easier to read.
Tyler Lindberg 8 роки тому
батько
коміт
084a5cd2e2
3 змінених файлів з 63 додано та 65 видалено
  1. 0 63
      editor/index.html
  2. 2 2
      editor/js/Config.js
  3. 61 0
      editor/js/Sidebar.Controls.js

+ 0 - 63
editor/index.html

@@ -164,8 +164,6 @@
 			window.URL = window.URL || window.webkitURL;
 			window.URL = window.URL || window.webkitURL;
 			window.BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder;
 			window.BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder;
 
 
-			const IS_MAC = navigator.platform.toUpperCase().indexOf( 'MAC' ) >= 0;
-
 			Number.prototype.format = function (){
 			Number.prototype.format = function (){
 				return this.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,");
 				return this.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,");
 			};
 			};
@@ -293,67 +291,6 @@
 
 
 			}, false );
 			}, false );
 
 
-			document.addEventListener( 'keydown', function ( event ) {
-
-				switch ( event.keyCode ) {
-
-					case 8: // backspace
-
-						event.preventDefault(); // prevent browser back
-
-					case 46: // delete
-
-						var object = editor.selected;
-
-						if ( confirm( 'Delete ' + object.name + '?' ) === false ) return;
-
-						var parent = object.parent;
-						if ( parent !== null ) editor.execute( new RemoveObjectCommand( object ) );
-
-						break;
-
-					case 90: // Register Ctrl-Z for Undo, Ctrl-Shift-Z for Redo
-
-						if ( IS_MAC ? event.metaKey : event.ctrlKey ) {
-
-							event.preventDefault(); // Prevent Safari from opening/closing tabs
-
-							if ( event.shiftKey ) {
-
-								editor.redo();
-
-							} else {
-
-								editor.undo();
-
-							}
-
-						}
-
-						break;
-
-					case 87: // Register W for translation transform mode
-
-						editor.signals.transformModeChanged.dispatch( 'translate' );
-
-						break;
-
-					case 69: // Register E for rotation transform mode
-
-						editor.signals.transformModeChanged.dispatch( 'rotate' );
-
-						break;
-
-					case 82: // Register R for scaling transform mode
-
-						editor.signals.transformModeChanged.dispatch( 'scale' );
-
-						break;
-
-				}
-
-			}, false );
-
 			function onWindowResize( event ) {
 			function onWindowResize( event ) {
 
 
 				editor.signals.windowResize.dispatch();
 				editor.signals.windowResize.dispatch();

+ 2 - 2
editor/js/Config.js

@@ -22,8 +22,8 @@ var Config = function ( name ) {
 		'settings/history': false,
 		'settings/history': false,
 
 
 		'controls/translate': 'w',
 		'controls/translate': 'w',
-		'controls/rotate': 'r',
-		'controls/scale': 'w'
+		'controls/rotate': 'e',
+		'controls/scale': 'r'
 	};
 	};
 
 
 	if ( window.localStorage[ name ] === undefined ) {
 	if ( window.localStorage[ name ] === undefined ) {

+ 61 - 0
editor/js/Sidebar.Controls.js

@@ -7,6 +7,8 @@ Sidebar.Controls = function ( editor ) {
 	var config = editor.config;
 	var config = editor.config;
 	var signals = editor.signals;
 	var signals = editor.signals;
 
 
+	const IS_MAC = navigator.platform.toUpperCase().indexOf( 'MAC' ) >= 0;
+
 	var container = new UI.Panel();
 	var container = new UI.Panel();
 	container.add( new UI.Text( 'CONTROLS' ) );
 	container.add( new UI.Text( 'CONTROLS' ) );
 
 
@@ -49,6 +51,65 @@ Sidebar.Controls = function ( editor ) {
 
 
 	}
 	}
 
 
+	document.addEventListener( 'keydown', function ( event ) {
+
+		switch ( event.key ) {
+
+			case 'Backspace':
+
+				event.preventDefault(); // prevent browser back
+
+			case 'Delete':
+
+				var object = editor.selected;
+
+				if ( confirm( 'Delete ' + object.name + '?' ) === false ) return;
+
+				var parent = object.parent;
+				if ( parent !== null ) editor.execute( new RemoveObjectCommand( object ) );
+
+				break;
+
+			case 'z': // Register Ctrl/Command-Z for Undo
+
+				if ( IS_MAC ? event.metaKey : event.ctrlKey ) {
+
+					editor.undo();
+
+				}
+
+				break;
+
+			case 'Z': // Register Ctrl/Command-Shift-Z for Redo
+
+				if ( IS_MAC ? event.metaKey : event.ctrlKey ) {
+
+					editor.redo();
+
+				}
+
+			case editor.config.getKey( 'controls/translate' ): // Translation transform mode
+
+				editor.signals.transformModeChanged.dispatch( 'translate' );
+
+				break;
+
+			case editor.config.getKey( 'controls/rotate' ): // Rotation transform mode
+
+				editor.signals.transformModeChanged.dispatch( 'rotate' );
+
+				break;
+
+			case editor.config.getKey( 'controls/scale' ): // Scaling transform mode
+
+				editor.signals.transformModeChanged.dispatch( 'scale' );
+
+				break;
+
+		}
+
+	}, false );
+
 	return container;
 	return container;
 
 
 };
 };