diff options
Diffstat (limited to 'js/mediators')
-rwxr-xr-x | js/mediators/element-mediator.js | 15 | ||||
-rwxr-xr-x | js/mediators/keyboard-mediator.js | 226 |
2 files changed, 128 insertions, 113 deletions
diff --git a/js/mediators/element-mediator.js b/js/mediators/element-mediator.js index 95aec2a3..51923f08 100755 --- a/js/mediators/element-mediator.js +++ b/js/mediators/element-mediator.js | |||
@@ -28,13 +28,7 @@ exports.ElementMediator = Montage.create(NJComponent, { | |||
28 | // TODO use the specific controller to be able to subclass the functionality | 28 | // TODO use the specific controller to be able to subclass the functionality |
29 | handleElementAdding: { | 29 | handleElementAdding: { |
30 | value: function(event) { | 30 | value: function(event) { |
31 | /* | ||
32 | var cmd = ElementControllerCommands.addElementCommand(event.detail.el, event.detail.data); | ||
33 | NJevent("sendToUndo", cmd); | ||
34 | cmd.execute(); | ||
35 | */ | ||
36 | this.addElement(event.detail.el, event.detail.data); | 31 | this.addElement(event.detail.el, event.detail.data); |
37 | |||
38 | } | 32 | } |
39 | }, | 33 | }, |
40 | 34 | ||
@@ -97,11 +91,13 @@ exports.ElementMediator = Montage.create(NJComponent, { | |||
97 | value: function(el, rules, noEvent) { | 91 | value: function(el, rules, noEvent) { |
98 | ElementController.addElement(el, rules); | 92 | ElementController.addElement(el, rules); |
99 | var p3d = this.get3DProperties(el); | 93 | var p3d = this.get3DProperties(el); |
100 | if(p3d) | 94 | if(p3d) { |
101 | { | ||
102 | el.elementModel.controller["set3DProperties"](el, [p3d], 0, true); | 95 | el.elementModel.controller["set3DProperties"](el, [p3d], 0, true); |
103 | } | 96 | } |
104 | if(!noEvent) NJevent("elementAdded", el); | 97 | if(!noEvent) { |
98 | this.application.ninja.documentController.activeDocument.needsSave = true; | ||
99 | NJevent("elementAdded", el); | ||
100 | } | ||
105 | } | 101 | } |
106 | }, | 102 | }, |
107 | 103 | ||
@@ -127,6 +123,7 @@ exports.ElementMediator = Montage.create(NJComponent, { | |||
127 | _removeElement: { | 123 | _removeElement: { |
128 | value: function(el, rules) { | 124 | value: function(el, rules) { |
129 | ElementController.removeElement(el, rules); | 125 | ElementController.removeElement(el, rules); |
126 | this.application.ninja.documentController.activeDocument.needsSave = true; | ||
130 | NJevent("elementDeleted", el); | 127 | NJevent("elementDeleted", el); |
131 | } | 128 | } |
132 | }, | 129 | }, |
diff --git a/js/mediators/keyboard-mediator.js b/js/mediators/keyboard-mediator.js index e8a11ad8..0282060f 100755 --- a/js/mediators/keyboard-mediator.js +++ b/js/mediators/keyboard-mediator.js | |||
@@ -85,22 +85,115 @@ exports.KeyboardMediator = Montage.create(Component, { | |||
85 | 85 | ||
86 | handleKeydown: { | 86 | handleKeydown: { |
87 | value: function(evt) { | 87 | value: function(evt) { |
88 | if(document.activeElement.nodeName !== "BODY") { | ||
89 | // Don't do anything if an input or other control is focused | ||
90 | return; | ||
91 | } | ||
92 | 88 | ||
93 | // Disable defaults for the Arrow Keys | 89 | //keyboard controls for html design view |
94 | if((evt.keyCode == Keyboard.LEFT) || (evt.keyCode == Keyboard.RIGHT) || (evt.keyCode == Keyboard.UP) || (evt.keyCode == Keyboard.DOWN)) { | 90 | if((!!this.application.ninja.documentController.activeDocument) && (this.application.ninja.documentController.activeDocument.currentView === "design")){ |
95 | evt.preventDefault(); | 91 | |
96 | } | 92 | // Don't do anything if an input or other control is focused |
93 | if(document.activeElement.nodeName !== "BODY") { | ||
94 | return; | ||
95 | } | ||
96 | |||
97 | // Disable defaults for the Arrow Keys | ||
98 | if((evt.keyCode == Keyboard.LEFT) || (evt.keyCode == Keyboard.RIGHT) || (evt.keyCode == Keyboard.UP) || (evt.keyCode == Keyboard.DOWN)) { | ||
99 | evt.preventDefault(); | ||
100 | } | ||
101 | |||
102 | // Check DELETE OR BACKSPACE | ||
103 | if((evt.keyCode == Keyboard.BACKSPACE) || (evt.keyCode == Keyboard.DELETE)) { | ||
104 | evt.stopImmediatePropagation(); | ||
105 | evt.preventDefault(); | ||
106 | NJevent("deleting"); | ||
107 | return; | ||
108 | } | ||
109 | |||
110 | |||
111 | // Shortcut for Selection Tool is V | ||
112 | if(evt.keyCode === Keyboard.V) { | ||
113 | evt.preventDefault(); | ||
114 | this.application.ninja.handleSelectTool({"detail": this.application.ninja.toolsData.defaultToolsData[0]}); | ||
115 | return; | ||
116 | } | ||
117 | |||
118 | // Shortcut for Tag Tool is D | ||
119 | if(evt.keyCode === Keyboard.D){ | ||
120 | evt.preventDefault(); | ||
121 | this.application.ninja.handleSelectTool({"detail": this.application.ninja.toolsData.defaultToolsData[4]}); | ||
122 | return; | ||
123 | } | ||
124 | |||
125 | // Shortcut for Rotate Tool is W | ||
126 | if(evt.keyCode === Keyboard.W){ | ||
127 | evt.preventDefault(); | ||
128 | this.application.ninja.handleSelectTool({"detail": this.application.ninja.toolsData.defaultToolsData[2]}); | ||
129 | return; | ||
130 | } | ||
131 | |||
132 | // Shortcut for Translate Tool is G | ||
133 | if(evt.keyCode === Keyboard.G){ | ||
134 | evt.preventDefault(); | ||
135 | this.application.ninja.handleSelectTool({"detail": this.application.ninja.toolsData.defaultToolsData[3]}); | ||
136 | return; | ||
137 | } | ||
138 | |||
139 | // Shortcut for Rectangle Tool is R | ||
140 | // unless the user is pressing the command key. | ||
141 | // If the user is pressing the command key, they want to refresh the browser. | ||
142 | if((evt.keyCode === Keyboard.R) && !evt.metaKey) { | ||
143 | evt.preventDefault(); | ||
144 | this.application.ninja.handleSelectTool({"detail": this.application.ninja.toolsData.defaultToolsData[7]}); | ||
145 | this.application.ninja.handleSelectSubTool({"detail": this.application.ninja.toolsData.defaultToolsData[7].subtools[1]}); | ||
146 | return; | ||
147 | } | ||
148 | |||
149 | // Shortcut for Oval Tool is O | ||
150 | if(evt.keyCode === Keyboard.O) { | ||
151 | evt.preventDefault(); | ||
152 | this.application.ninja.handleSelectTool({"detail": this.application.ninja.toolsData.defaultToolsData[7]}); | ||
153 | this.application.ninja.handleSelectSubTool({"detail": this.application.ninja.toolsData.defaultToolsData[7].subtools[0]}); | ||
154 | return; | ||
155 | } | ||
156 | |||
157 | // Shortcut for Line Tool is L | ||
158 | if(evt.keyCode === Keyboard.L ) { | ||
159 | evt.preventDefault(); | ||
160 | this.application.ninja.handleSelectTool({"detail": this.application.ninja.toolsData.defaultToolsData[7]}); | ||
161 | this.application.ninja.handleSelectSubTool({"detail": this.application.ninja.toolsData.defaultToolsData[7].subtools[2]}); | ||
162 | return; | ||
163 | } | ||
164 | |||
165 | if(evt.keyCode === Keyboard.H ) { | ||
166 | evt.preventDefault(); | ||
167 | this.application.ninja.handleSelectTool({"detail": this.application.ninja.toolsData.defaultToolsData[15]}); | ||
168 | return; | ||
169 | } | ||
170 | |||
171 | if(evt.keyCode === Keyboard.Z ) { | ||
172 | evt.preventDefault(); | ||
173 | this.application.ninja.handleSelectTool({"detail": this.application.ninja.toolsData.defaultToolsData[16]}); | ||
174 | return; | ||
175 | } | ||
176 | |||
177 | // Check if cmd+a/ctrl+a for Select All | ||
178 | if((evt.keyCode == Keyboard.A) && (evt.ctrlKey || evt.metaKey)) { | ||
179 | NJevent("selectAll"); | ||
180 | return; | ||
181 | } | ||
182 | |||
183 | if(evt.keyCode === Keyboard.ESCAPE){//ESC key | ||
184 | //console.log("ESC key pressed"); | ||
185 | if(this.application.ninja.toolsData) this.application.ninja.toolsData.selectedToolInstance.HandleEscape(evt); | ||
186 | //menuViewManagerModule.MenuViewManager.closeMenu("mainMenuBar"); | ||
187 | } | ||
188 | |||
189 | |||
190 | if((evt.keyCode == Keyboard.ENTER) && (evt.ctrlKey || evt.metaKey)) { | ||
191 | this.application.ninja.executeChromePreview(); | ||
192 | return; | ||
193 | } | ||
194 | |||
195 | if(this.application.ninja.toolsData) this.application.ninja.toolsData.selectedToolInstance.HandleKeyPress(evt); | ||
97 | 196 | ||
98 | // Check DELETE OR BACKSPACE | ||
99 | if((evt.keyCode == Keyboard.BACKSPACE) || (evt.keyCode == Keyboard.DELETE)) { | ||
100 | evt.stopImmediatePropagation(); | ||
101 | evt.preventDefault(); | ||
102 | NJevent("deleting"); | ||
103 | return; | ||
104 | } | 197 | } |
105 | 198 | ||
106 | // Check if cmd+z/ctrl+z for Undo (Windows/Mac) | 199 | // Check if cmd+z/ctrl+z for Undo (Windows/Mac) |
@@ -110,6 +203,13 @@ exports.KeyboardMediator = Montage.create(Component, { | |||
110 | return; | 203 | return; |
111 | } | 204 | } |
112 | 205 | ||
206 | // Check if cmd+s/ctrl+s for Save (Windows/Mac) | ||
207 | if ((evt.keyCode == Keyboard.S) && (evt.ctrlKey || evt.metaKey) && !evt.shiftKey) { | ||
208 | NJevent("executeSave"); | ||
209 | evt.preventDefault(); | ||
210 | return; | ||
211 | } | ||
212 | |||
113 | // Check if cmd+shift+z for Redo (Mac) | 213 | // Check if cmd+shift+z for Redo (Mac) |
114 | if ((evt.keyCode == Keyboard.Z) && evt.metaKey && evt.shiftKey) { | 214 | if ((evt.keyCode == Keyboard.Z) && evt.metaKey && evt.shiftKey) { |
115 | NJevent("executeRedo"); | 215 | NJevent("executeRedo"); |
@@ -124,103 +224,21 @@ exports.KeyboardMediator = Montage.create(Component, { | |||
124 | return; | 224 | return; |
125 | } | 225 | } |
126 | 226 | ||
127 | // Shortcut for Selection Tool is V | ||
128 | if(evt.keyCode === Keyboard.V) { | ||
129 | evt.preventDefault(); | ||
130 | this.application.ninja.handleSelectTool({"detail": this.application.ninja.toolsData.defaultToolsData[0]}); | ||
131 | return; | ||
132 | } | ||
133 | |||
134 | // Shortcut for Tag Tool is D | ||
135 | if(evt.keyCode === Keyboard.D){ | ||
136 | evt.preventDefault(); | ||
137 | this.application.ninja.handleSelectTool({"detail": this.application.ninja.toolsData.defaultToolsData[4]}); | ||
138 | return; | ||
139 | } | ||
140 | |||
141 | // Shortcut for Rotate Tool is W | ||
142 | if(evt.keyCode === Keyboard.W){ | ||
143 | evt.preventDefault(); | ||
144 | this.application.ninja.handleSelectTool({"detail": this.application.ninja.toolsData.defaultToolsData[2]}); | ||
145 | return; | ||
146 | } | ||
147 |