aboutsummaryrefslogtreecommitdiff
path: root/js/mediators
diff options
context:
space:
mode:
Diffstat (limited to 'js/mediators')
-rwxr-xr-xjs/mediators/drag-drop-mediator.js2
-rwxr-xr-xjs/mediators/element-mediator.js123
-rw-r--r--js/mediators/io-mediator.js10
-rwxr-xr-xjs/mediators/keyboard-mediator.js7
4 files changed, 58 insertions, 84 deletions
diff --git a/js/mediators/drag-drop-mediator.js b/js/mediators/drag-drop-mediator.js
index 59086ef6..14bdb0eb 100755
--- a/js/mediators/drag-drop-mediator.js
+++ b/js/mediators/drag-drop-mediator.js
@@ -115,12 +115,10 @@ exports.DragDropMediator = Montage.create(Component, {
115 // 115 //
116 if (e.currentTarget.fileType.indexOf('svg') !== -1) { 116 if (e.currentTarget.fileType.indexOf('svg') !== -1) {
117 element = NJUtils.make('embed', null, this.application.ninja.currentDocument);//TODO: Verify this is proper 117 element = NJUtils.make('embed', null, this.application.ninja.currentDocument);//TODO: Verify this is proper
118 NJUtils.createModelWithSelection(element, "SVG");
119 element.type = 'image/svg+xml'; 118 element.type = 'image/svg+xml';
120 element.src = url+'/'+fileName; 119 element.src = url+'/'+fileName;
121 } else { 120 } else {
122 element = NJUtils.make('image', null, this.application.ninja.currentDocument); 121 element = NJUtils.make('image', null, this.application.ninja.currentDocument);
123 NJUtils.createModel(element);
124 element.src = url+'/'+fileName; 122 element.src = url+'/'+fileName;
125 } 123 }
126 //Adding element once it is loaded 124 //Adding element once it is loaded
diff --git a/js/mediators/element-mediator.js b/js/mediators/element-mediator.js
index 88baf3d9..93a8dbce 100755
--- a/js/mediators/element-mediator.js
+++ b/js/mediators/element-mediator.js
@@ -35,16 +35,13 @@ exports.ElementMediator = Montage.create(Component, {
35 if(Array.isArray(elements)) { 35 if(Array.isArray(elements)) {
36 elements.forEach(function(element) { 36 elements.forEach(function(element) {
37 ElementController.addElement(element, rules); 37 ElementController.addElement(element, rules);
38 if(element.elementModel && element.elementModel.props3D) {
39 element.elementModel.props3D.init(element, false); 38 element.elementModel.props3D.init(element, false);
40 }
41 }); 39 });
42 } else { 40 } else {
43 ElementController.addElement(elements, rules); 41 ElementController.addElement(elements, rules);
44 if(elements.elementModel && elements.elementModel.props3D) {
45 elements.elementModel.props3D.init(elements, false); 42 elements.elementModel.props3D.init(elements, false);
43
46 } 44 }
47 }
48 45
49 if(this.addDelegate && typeof (this.addDelegate['onAddElements']) === "function") { 46 if(this.addDelegate && typeof (this.addDelegate['onAddElements']) === "function") {
50 this.addDelegate['onAddElements'].call(this.addDelegate, elements); 47 this.addDelegate['onAddElements'].call(this.addDelegate, elements);
@@ -108,11 +105,6 @@ exports.ElementMediator = Montage.create(Component, {
108 105
109 getProperty: { 106 getProperty: {
110 value: function(el, prop, valueMutator) { 107 value: function(el, prop, valueMutator) {
111 if(!el.elementModel) {
112 console.log("Element has no Model -> One should have been created");
113 this._NJUtils.makeElementModel(el, "Div", "block");
114 }
115
116 if(valueMutator && typeof valueMutator === "function") { 108 if(valueMutator && typeof valueMutator === "function") {
117 return valueMutator(el.elementModel.controller["getProperty"](el, prop)); 109 return valueMutator(el.elementModel.controller["getProperty"](el, prop));
118 } else { 110 } else {
@@ -123,22 +115,12 @@ exports.ElementMediator = Montage.create(Component, {
123 115
124 getShapeProperty: { 116 getShapeProperty: {
125 value: function(el, prop) { 117 value: function(el, prop) {
126 if(!el.elementModel) {
127 console.log("Element has no Model -> One should have been created");
128 this._NJUtils.makeElementModel(el, "Canvas", "block", true);
129 }
130
131 return el.elementModel.controller["getShapeProperty"](el, prop); 118 return el.elementModel.controller["getShapeProperty"](el, prop);
132 } 119 }
133 }, 120 },
134 121
135 setShapeProperty: { 122 setShapeProperty: {
136 value: function(el, prop, value) { 123 value: function(el, prop, value) {
137 if(!el.elementModel) {
138 console.log("Element has no Model -> One should have been created");
139 this._NJUtils.makeElementModel(el, "Canvas", "block", true);
140 }
141
142 return el.elementModel.controller["setShapeProperty"](el, prop, value); 124 return el.elementModel.controller["setShapeProperty"](el, prop, value);
143 } 125 }
144 }, 126 },
@@ -303,9 +285,6 @@ exports.ElementMediator = Montage.create(Component, {
303 // Routines to get/set color 285 // Routines to get/set color
304 getColor: { 286 getColor: {
305 value: function(el, isFill, borderSide) { 287 value: function(el, isFill, borderSide) {
306 if(!el.elementModel) {
307 this._NJUtils.makeModelFromElement(el);
308 }
309 return el.elementModel.controller["getColor"](el, isFill, borderSide); 288 return el.elementModel.controller["getColor"](el, isFill, borderSide);
310 } 289 }
311 }, 290 },
@@ -379,78 +358,76 @@ exports.ElementMediator = Montage.create(Component, {
379 }, 358 },
380 359
381 getStroke: { 360 getStroke: {
382 value: function(el) { 361 value: function(el, strokeProperties) {
383 if(!el.elementModel) { 362 return el.elementModel.controller["getStroke"](el, strokeProperties);
384 this._NJUtils.makeElementModel(el, "Div", "block");
385 }
386 return el.elementModel.controller["getStroke"](el);
387 } 363 }
388 }, 364 },
389 365
390
391 /** 366 /**
392 Set a property change command for an element or array of elements 367 Set stroke/border properties on an element or array of elements
393 @param els: Array of elements. Can contain 1 or more elements 368 @param els: Array of elements. Can contain 1 or more elements
394 @param value: Value to be set. This is the stroke info 369 @param value: Value to be set. This is the stroke info
395 @param eventType: Change/Changing. Will be passed to the dispatched event 370 @param eventType: Change/Changing. Will be passed to the dispatched event
396 @param source: String for the source object making the call 371 @param source: String for the source object making the call
397 @param currentValue *OPTIONAL*: current value array. If not found the current value is calculated 372 @param currentValue *OPTIONAL*: current value array. If not found the current value is calculated
398 @param stageRedraw: *OPTIONAL*: True. If set to false the stage will not redraw the selection/outline
399 */ 373 */
400 setStroke: { 374 setStroke: {
401 value: function(els, value, eventType, source, currentValue) { 375 value: function(els, value, eventType, source, currentValue) {
402 376
403 if(eventType === "Changing") { 377 if(eventType !== "Changing") {
404 this._setStroke(els, value, isFill, eventType, source);
405 } else {
406 // Calculate currentValue if not found for each element 378 // Calculate currentValue if not found for each element
407 if(!currentValue) { 379 if(!currentValue) {
408 var that = this; 380 var that = this,
381 val = value;
409 currentValue = els.map(function(item) { 382 currentValue = els.map(function(item) {
410 return that.getStroke(item); 383 return that.getStroke(item, val);
411 }); 384 });
412 } 385 }
386 document.application.undoManager.add("Set stroke", this.setStroke, this, els, currentValue, eventType, source, value);
387 }
413 388
414 var command = Montage.create(Command, { 389 for(var i=0, item; item = els[i]; i++) {
415 _els: { value: els }, 390 item.elementModel.controller["setStroke"](item, (value[i] || value), eventType, source);
416 _value: { value: value },
417 _previous: { value: currentValue },
418 _eventType: { value: eventType},
419 _source: { value: "undo-redo"},
420 description: { value: "Set Color"},
421 receiver: { value: this},
422
423 execute: {
424 value: function(senderObject) {
425 if(senderObject) this._source = senderObject;
426 this.receiver._setStroke(this._els, this._value, this._eventType, this._source);
427 this._source = "undo-redo";
428 return "";
429 }
430 },
431
432 unexecute: {
433 value: function() {
434 this.receiver._setStroke(this._els, this._previous, this._eventType, this._source);
435 return "";
436 }
437 }
438 });
439
440 NJevent("sendToUndo", command);
441 command.execute(source);
442 } 391 }
443 392
393 NJevent("element" + eventType, {type : "setStroke", source: source, data: {"els": els, "prop": "stroke", "value": value}, redraw: null});
444 } 394 }
445 }, 395 },
446 396
447 _setStroke: { 397 getFill: {
448 value: function(els, value, eventType, source) { 398 value: function(el, fillProperties) {
399 return el.elementModel.controller["getFill"](el, fillProperties);
400 }
401 },
402
403 /**
404 Set fill/background properties for an element or array of elements
405 @param els: Array of elements. Can contain 1 or more elements
406 @param value: Value to be set. This is the fill info
407 @param eventType: Change/Changing. Will be passed to the dispatched event
408 @param source: String for the source object making the call
409 @param currentValue *OPTIONAL*: current value array. If not found the current value is calculated
410 */
411 setFill: {
412 value: function(els, value, eventType, source, currentValue) {
413
414 if(eventType !== "Changing") {
415 // Calculate currentValue if not found for each element
416 if(!currentValue) {
417 var that = this,
418 val = value;
419 currentValue = els.map(function(item) {
420 return that.getFill(item, val);
421 });
422 }
423 document.application.undoManager.add("Set fill", this.set