aboutsummaryrefslogtreecommitdiff
path: root/js/mediators
diff options
context:
space:
mode:
Diffstat (limited to 'js/mediators')
-rwxr-xr-xjs/mediators/element-mediator.js91
1 files changed, 46 insertions, 45 deletions
diff --git a/js/mediators/element-mediator.js b/js/mediators/element-mediator.js
index cecb4392..40e94cca 100755
--- a/js/mediators/element-mediator.js
+++ b/js/mediators/element-mediator.js
@@ -29,13 +29,13 @@ exports.ElementMediator = Montage.create(Component, {
29 if(Array.isArray(elements)) { 29 if(Array.isArray(elements)) {
30 elements.forEach(function(element) { 30 elements.forEach(function(element) {
31 ElementController.addElement(element, rules); 31 ElementController.addElement(element, rules);
32 element.elementModel.props3D.init(element, false); 32 element.elementModel.props3D.init(element, false);
33 }); 33 });
34 } else { 34 } else {
35 ElementController.addElement(elements, rules); 35 ElementController.addElement(elements, rules);
36 elements.elementModel.props3D.init(elements, false); 36 elements.elementModel.props3D.init(elements, false);
37 37
38 } 38 }
39 39
40 if(this.addDelegate && typeof (this.addDelegate['onAddElements']) === "function") { 40 if(this.addDelegate && typeof (this.addDelegate['onAddElements']) === "function") {
41 this.addDelegate['onAddElements'].call(this.addDelegate, elements); 41 this.addDelegate['onAddElements'].call(this.addDelegate, elements);
@@ -352,75 +352,76 @@ exports.ElementMediator = Montage.create(Component, {
352 }, 352 },
353 353
354 getStroke: { 354 getStroke: {
355 value: function(el) { 355 value: function(el, strokeProperties) {
356 return el.elementModel.controller["getStroke"](el); 356 return el.elementModel.controller["getStroke"](el, strokeProperties);
357 } 357 }
358 }, 358 },
359 359
360
361 /** 360 /**
362 Set a property change command for an element or array of elements 361 Set stroke/border properties on an element or array of elements
363 @param els: Array of elements. Can contain 1 or more elements 362 @param els: Array of elements. Can contain 1 or more elements
364 @param value: Value to be set. This is the stroke info 363 @param value: Value to be set. This is the stroke info
365 @param eventType: Change/Changing. Will be passed to the dispatched event 364 @param eventType: Change/Changing. Will be passed to the dispatched event
366 @param source: String for the source object making the call 365 @param source: String for the source object making the call
367 @param currentValue *OPTIONAL*: current value array. If not found the current value is calculated 366 @param currentValue *OPTIONAL*: current value array. If not found the current value is calculated
368 @param stageRedraw: *OPTIONAL*: True. If set to false the stage will not redraw the selection/outline
369 */ 367 */
370 setStroke: { 368 setStroke: {
371 value: function(els, value, eventType, source, currentValue) { 369 value: function(els, value, eventType, source, currentValue) {
372 370
373 if(eventType === "Changing") { 371 if(eventType !== "Changing") {
374 this._setStroke(els, value, isFill, eventType, source);
375 } else {
376 // Calculate currentValue if not found for each element 372 // Calculate currentValue if not found for each element
377 if(!currentValue) { 373 if(!currentValue) {
378 var that = this; 374 var that = this,
375 val = value;
379 currentValue = els.map(function(item) { 376 currentValue = els.map(function(item) {
380 return that.getStroke(item); 377 return that.getStroke(item, val);
381 }); 378 });
382 } 379 }
380 document.application.undoManager.add("Set stroke", this.setStroke, this, els, currentValue, eventType, source, value);
381 }
383 382
384 var command = Montage.create(Command, { 383 for(var i=0, item; item = els[i]; i++) {
385 _els: { value: els }, 384 item.elementModel.controller["setStroke"](item, (value[i] || value), eventType, source);
386 _value: { value: value },
387 _previous: { value: currentValue },
388 _eventType: { value: eventType},
389 _source: { value: "undo-redo"},
390 description: { value: "Set Color"},
391 receiver: { value: this},
392
393 execute: {
394 value: function(senderObject) {
395 if(senderObject) this._source = senderObject;
396 this.receiver._setStroke(this._els, this._value, this._eventType, this._source);
397 this._source = "undo-redo";
398 return "";
399 }
400 },
401
402 unexecute: {
403 value: function() {
404 this.receiver._setStroke(this._els, this._previous, this._eventType, this._source);
405 return "";
406 }
407 }
408 });
409
410 NJevent("sendToUndo", command);
411 command.execute(source);
412 } 385 }
413 386
387 NJevent("element" + eventType, {type : "setStroke", source: source, data: {"els": els, "prop": "stroke", "value": value}, redraw: null});
388 }
389 },
390
391 getFill: {
392 value: function(el, fillProperties) {
393 return el.elementModel.controller["getFill"](el, fillProperties);
414 } 394 }
415 }, 395 },
416 396
417 _setStroke: { 397 /**
418 value: function(els, value, eventType, source) { 398 Set fill/background properties for an element or array of elements
399 @param els: Array of elements. Can contain 1 or more elements
400 @param value: Value to be set. This is the fill info
401 @param eventType: Change/Changing. Will be passed to the dispatched event
402 @param source: String for the source object making the call
403 @param currentValue *OPTIONAL*: current value array. If not found the current value is calculated
404 */
405 setFill: {
406 value: function(els, value, eventType, source, currentValue) {
407
408 if(eventType !== "Changing") {
409 // Calculate currentValue if not found for each element
410 if(!currentValue) {
411 var that = this,
412 val = value;
413 currentValue = els.map(function(item) {
414 return that.getFill(item, val);
415 });
416 }
417 document.application.undoManager.add("Set fill", this.setFill, this, els, currentValue, eventType, source, value);
418 }
419
419 for(var i=0, item; item = els[i]; i++) { 420 for(var i=0, item; item = els[i]; i++) {
420 item.elementModel.controller["setStroke"](item, value); 421 item.elementModel.controller["setFill"](item, (value[i] || value));
421 } 422 }
422 423
423 NJevent("element" + eventType, {type : "setStroke", source: source, data: {"els": els, "prop": "stroke", "value": value}, redraw: null}); 424 NJevent("element" + eventType, {type : "setFill", source: source, data: {"els": els, "prop": "fill", "value": value}, redraw: null});
424 } 425 }
425 }, 426 },
426 427