public static void processEventCommandKeyDown(Event e, AXModel model) { switch (e.keyCode) { case KeyCode.L: if (model.selectedPOs != null && model.selectedPOs.Count == 1) { LibraryEditor.doSave_MenuItem(model.selectedPOs[0]); if (e.type != EventType.Repaint && e.type != EventType.Layout) { e.Use(); } } break; case KeyCode.V: // this paste waste uncaught by EventType.ExecuteCommand or EventType.ValidateCommand // beacuse alt or command were held down Undo.RegisterCompleteObjectUndo(model, "Paste"); if (e.shift) { if (e.alt) { model.duplicateSelectedPOs(); } else { model.replicateSelectedPOs(); } model.isAltered(6); if (e.type != EventType.Repaint && e.type != EventType.Layout) { e.Use(); } } break; case KeyCode.D: Undo.RegisterCompleteObjectUndo(model, "Duplicate"); //Debug.Log ("DUPLICATE.....KeyCode.D"); if (model.selectedPOs.Count > 0) { AXParametricObject selectedPO = model.selectedPOs[0]; if (e.shift) { replicatePO(selectedPO); } else if (e.alt) { duplicatePO(selectedPO); } else { //Debug.Log ("instancePO"); instancePO(selectedPO); } } // "Duplicate" is caught by the validateCommand and processed here in processEventCommand() model.isAltered(7); if (e.type != EventType.Repaint && e.type != EventType.Layout) { e.Use(); } break; case KeyCode.Backspace: string focusedControlName = GUI.GetNameOfFocusedControl(); if (string.IsNullOrEmpty(focusedControlName) || !focusedControlName.Contains("_Text_")) { Undo.RegisterCompleteObjectUndo(model, "Delete"); if (e.shift) { model.deleteSelectedPOsAndInputs(); } else { model.deleteSelectedPOs(); } model.isAltered(8); e.Use(); } break; } // Update EditorWindow ArchimatixEngine.repaintGraphEditorIfExistsAndOpen(); }