 				dispatchAction((target as ActionButton).action, this.dispatch);
 			}
 		}
+
+		private function keyboardHandler(event:KeyboardEvent):void {
+			switch (event.keyCode){
+				case 78: // N
+					if(event.ctrlKey){
+						//new project
+						this.dispatch(new ActionEvent(ActionEvent.NEW_PROJECT));
+					}
+					break;
+				case 83: // S
+					if(event.ctrlKey){
+						//save project
+						this.dispatch(new ActionEvent(ActionEvent.SAVE_PROJECT));
+					}
+					break;
+				case 81: // Q
+					if(event.ctrlKey){
+						//close program
+					}
+					break;
+				case 69: // E
+					if(event.ctrlKey){
+						//close project
+						this.dispatch(new ActionEvent(ActionEvent.CLOSE_PROJECT));
+					}
+					break;
+				case 86: // V
+					break;
+				case 72: // H
+					break;
+				case 119: // F8
+					break;
+				case 120: // F9
+					break;
+			}
+		}
 		//} endregion EVENTS HANDLERS ==================================================
 
 		//==============================================================================

 * Time: 21:35
 */
package com.merlinds.miracle_tool.views {
	import com.merlinds.miracle_tool.utils.dispatchAction;
	import com.merlinds.miracle_tool.views.components.controls.ActionButton;

	import flash.events.MouseEvent;

	import org.robotlegs.mvcs.Mediator;

	public class AppMenuMediator extends Mediator {

		//==============================================================================
		//{region							PUBLIC METHODS
		public function AppMenuMediator() {

		}

		override public function onRegister():void {
			this.contextView.stage.addEventListener(KeyboardEvent.KEY_UP, this.keyboardHandler);
			this.addViewListener(MouseEvent.CLICK, this.mouseClickHandler);
		}

		override public function onRemove():void {
			this.removeViewListener(MouseEvent.CLICK, this.mouseClickHandler);
			this.contextView.stage.removeEventListener(KeyboardEvent.KEY_UP, this.keyboardHandler);
		}
		//} endregion PUBLIC METHODS ===================================================

