Browse Source

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 7 năm trước cách đây
mục cha
commit
084a5cd2e2
3 tập tin đã thay đổi với 63 bổ sung65 xóa
  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.BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder;
 
-			const IS_MAC = navigator.platform.toUpperCase().indexOf( 'MAC' ) >= 0;
-
 			Number.prototype.format = function (){
 				return this.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,");
 			};
@@ -293,67 +291,6 @@
 
 			}, 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 ) {
 
 				editor.signals.windowResize.dispatch();

+ 2 - 2
editor/js/Config.js

@@ -22,8 +22,8 @@ var Config = function ( name ) {
 		'settings/history': false,
 
 		'controls/translate': 'w',
-		'controls/rotate': 'r',
-		'controls/scale': 'w'
+		'controls/rotate': 'e',
+		'controls/scale': 'r'
 	};
 
 	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 signals = editor.signals;
 
+	const IS_MAC = navigator.platform.toUpperCase().indexOf( 'MAC' ) >= 0;
+
 	var container = new UI.Panel();
 	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;
 
 };