diff options
Diffstat (limited to 'js/mediators')
-rwxr-xr-x | js/mediators/element-mediator.js | 88 | ||||
-rw-r--r-- | js/mediators/io-mediator.js | 712 |
2 files changed, 85 insertions, 715 deletions
diff --git a/js/mediators/element-mediator.js b/js/mediators/element-mediator.js index 1d188dbf..d166467c 100755 --- a/js/mediators/element-mediator.js +++ b/js/mediators/element-mediator.js | |||
@@ -373,78 +373,76 @@ exports.ElementMediator = Montage.create(Component, { | |||
373 | }, | 373 | }, |
374 | 374 | ||
375 | getStroke: { | 375 | getStroke: { |
376 | value: function(el) { | 376 | value: function(el, strokeProperties) { |
377 | if(!el.elementModel) { | 377 | return el.elementModel.controller["getStroke"](el, strokeProperties); |
378 | NJUtils.makeElementModel(el, "Div", "block"); | ||
379 | } | ||
380 | return el.elementModel.controller["getStroke"](el); | ||
381 | } | 378 | } |
382 | }, | 379 | }, |
383 | 380 | ||
384 | |||
385 | /** | 381 | /** |
386 | Set a property change command for an element or array of elements | 382 | Set stroke/border properties on an element or array of elements |
387 | @param els: Array of elements. Can contain 1 or more elements | 383 | @param els: Array of elements. Can contain 1 or more elements |
388 | @param value: Value to be set. This is the stroke info | 384 | @param value: Value to be set. This is the stroke info |
389 | @param eventType: Change/Changing. Will be passed to the dispatched event | 385 | @param eventType: Change/Changing. Will be passed to the dispatched event |
390 | @param source: String for the source object making the call | 386 | @param source: String for the source object making the call |
391 | @param currentValue *OPTIONAL*: current value array. If not found the current value is calculated | 387 | @param currentValue *OPTIONAL*: current value array. If not found the current value is calculated |
392 | @param stageRedraw: *OPTIONAL*: True. If set to false the stage will not redraw the selection/outline | ||
393 | */ | 388 | */ |
394 | setStroke: { | 389 | setStroke: { |
395 | value: function(els, value, eventType, source, currentValue) { | 390 | value: function(els, value, eventType, source, currentValue) { |
396 | 391 | ||
397 | if(eventType === "Changing") { | 392 | if(eventType !== "Changing") { |
398 | this._setStroke(els, value, isFill, eventType, source); | ||
399 | } else { | ||
400 | // Calculate currentValue if not found for each element | 393 | // Calculate currentValue if not found for each element |
401 | if(!currentValue) { | 394 | if(!currentValue) { |
402 | var that = this; | 395 | var that = this, |
396 | val = value; | ||
403 | currentValue = els.map(function(item) { | 397 | currentValue = els.map(function(item) { |
404 | return that.getStroke(item); | 398 | return that.getStroke(item, val); |
405 | }); | 399 | }); |
406 | } | 400 | } |
401 | document.application.undoManager.add("Set stroke", this.setStroke, this, els, currentValue, eventType, source, value); | ||
402 | } | ||
407 | 403 | ||
408 | var command = Montage.create(Command, { | 404 | for(var i=0, item; item = els[i]; i++) { |
409 | _els: { value: els }, | 405 | item.elementModel.controller["setStroke"](item, (value[i] || value), eventType, source); |
410 | _value: { value: value }, | ||
411 | _previous: { value: currentValue }, | ||
412 | _eventType: { value: eventType}, | ||
413 | _source: { value: "undo-redo"}, | ||
414 | description: { value: "Set Color"}, | ||
415 | receiver: { value: this}, | ||
416 | |||
417 | execute: { | ||
418 | value: function(senderObject) { | ||
419 | if(senderObject) this._source = senderObject; | ||
420 | this.receiver._setStroke(this._els, this._value, this._eventType, this._source); | ||
421 | this._source = "undo-redo"; | ||
422 | return ""; | ||
423 | } | ||
424 | }, | ||
425 | |||
426 | unexecute: { | ||
427 | value: function() { | ||
428 | this.receiver._setStroke(this._els, this._previous, this._eventType, this._source); | ||
429 | return ""; | ||
430 | } | ||
431 | } | ||
432 | }); | ||
433 | |||
434 | NJevent("sendToUndo", command); | ||
435 | command.execute(source); | ||
436 | } | 406 | } |
437 | 407 | ||
408 | NJevent("element" + eventType, {type : "setStroke", source: source, data: {"els": els, "prop": "stroke", "value": value}, redraw: null}); | ||
438 | } | 409 | } |
439 | }, | 410 | }, |
440 | 411 | ||
441 | _setStroke: { | 412 | getFill: { |
442 | value: function(els, value, eventType, source) { | 413 | value: function(el, fillProperties) { |
414 | return el.elementModel.controller["getFill"](el, fillProperties); | ||
415 | } | ||
416 | }, | ||
417 | |||
418 | /** | ||
419 | Set fill/background properties for an element or array of elements | ||
420 | @param els: Array of elements. Can contain 1 or more elements | ||
421 | @param value: Value to be set. This is the fill info | ||
422 | @param eventType: Change/Changing. Will be passed to the dispatched event | ||
423 | @param source: String for the source object making the call | ||
424 | @param currentValue *OPTIONAL*: current value array. If not found the current value is calculated | ||
425 | */ | ||
426 | setFill: { | ||
427 | value: function(els, value, eventType, source, currentValue) { | ||
428 | |||
429 | if(eventType !== "Changing") { | ||
430 | // Calculate currentValue if not found for each element | ||
431 | if(!currentValue) { | ||
432 | var that = this, | ||
433 | val = value; | ||
434 | currentValue = els.map(function(item) { | ||
435 | return that.getFill(item, val); | ||
436 | }); | ||
437 | } | ||
438 | document.application.undoManager.add("Set fill", this.setFill, this, els, currentValue, eventType, source, value); | ||
439 | } | ||
440 | |||
443 | for(var i=0, item; item = els[i]; i++) { | 441 | for(var i=0, item; item = els[i]; i++) { |
444 | item.elementModel.controller["setStroke"](item, value); | 442 | item.elementModel.controller["setFill"](item, (value[i] || value)); |
445 | } | 443 | } |
446 | 444 | ||
447 | NJevent("element" + eventType, {type : "setStroke", source: source, data: {"els": els, "prop": "stroke", "value": value}, redraw: null}); | 445 | NJevent("element" + eventType, {type : "setFill", source: source, data: {"els": els, "prop": "fill", "value": value}, redraw: null}); |
448 | } | 446 | } |
449 | }, | 447 | }, |
450 | 448 | ||
diff --git a/js/mediators/io-mediator.js b/js/mediators/io-mediator.js index 4dbf32d5..c9e10896 100644 --- a/js/mediators/io-mediator.js +++ b/js/mediators/io-mediator.js | |||
@@ -10,49 +10,58 @@ var Montage = require("montage/core/core").Montage, | |||
10 | Component = require("montage/ui/component").Component, | 10 | Component = require("montage/ui/component").Component, |
11 | FileIo = require("js/io/system/fileio").FileIo, | 11 | FileIo = require("js/io/system/fileio").FileIo, |
12 | ProjectIo = require("js/io/system/projectio").ProjectIo, | 12 | ProjectIo = require("js/io/system/projectio").ProjectIo, |
13 | TemplateCreator = require("node_modules/tools/template/template-creator").TemplateCreator; | 13 | TemplateMediator = require("js/document/mediators/template").TemplateDocumentMediator; |
14 | //////////////////////////////////////////////////////////////////////// | 14 | //////////////////////////////////////////////////////////////////////// |
15 | // | 15 | // |
16 | exports.IoMediator = Montage.create(Component, { | 16 | exports.IoMediator = Montage.create(Component, { |
17 | //////////////////////////////////////////////////////////////////// | 17 | //////////////////////////////////////////////////////////////////// |
18 | // | 18 | // |
19 | hasTemplate: { | 19 | hasTemplate: { |
20 | enumerable: false, | ||
21 | value: false | 20 | value: false |
22 | }, | 21 | }, |
23 | //////////////////////////////////////////////////////////////////// | 22 | //////////////////////////////////////////////////////////////////// |
24 | // | 23 | // |
25 | deserializedFromTemplate: { | 24 | deserializedFromTemplate: { |
26 | enumerable: false, | ||
27 | value: function () { | 25 | value: function () { |
28 | // | 26 | // |
29 | } | 27 | } |
30 | }, | 28 | }, |
31 | //////////////////////////////////////////////////////////////////// | 29 | //////////////////////////////////////////////////////////////////// |
32 | // | 30 | // |
31 | tmplt: { | ||
32 | value: TemplateMediator | ||
33 | }, | ||
34 | //////////////////////////////////////////////////////////////////// | ||
35 | // | ||
33 | fio: { | 36 | fio: { |
34 | enumerable: false, | ||
35 | value: FileIo | 37 | value: FileIo |
36 | }, | 38 | }, |
37 | //////////////////////////////////////////////////////////////////// | 39 | //////////////////////////////////////////////////////////////////// |
38 | // | 40 | // |
39 | pio: { | 41 | pio: { |
40 | enumerable: false, | ||
41 | value: ProjectIo | 42 | value: ProjectIo |
42 | }, | 43 | }, |
43 | //////////////////////////////////////////////////////////////////// | 44 | //////////////////////////////////////////////////////////////////// |
44 | // | 45 | // |
45 | getAppTemplatesUrlRegEx: { | 46 | parseToTemplate: { |
46 | enumerable: false, | 47 | value: function(content, template) { |
47 | value: function () { | 48 | // |
48 | var regex = new RegExp(chrome.extension.getURL('js/document/templates/montage-html').replace(/\//gi, '\\\/'), 'gi'); | 49 | if (template.name.toLowerCase() === 'banner' || template.name.toLowerCase() === 'animation') { |
49 | return regex; | 50 | //Getting dimensions of banner |
50 | } | 51 | var dimensions = template.id.split('x'); |
52 | dimensions = {width: String(dimensions[0])+'px', height: String(dimensions[1])+'px'}; | ||
53 | // | ||
54 | content = content.replace(/Dimensions@@@/gi, "Dimensions@@@"+template.id); | ||
55 | content = content.replace(/ninja-banner {}/gi, "ninja-banner {overflow: visible; width: "+dimensions.width+"; height: "+dimensions.height+"}"); | ||
56 | content = content.replace(/ninja-content-wrapper {}/gi, "ninja-content-wrapper {overflow: hidden; width: "+dimensions.width+"; height: "+dimensions.height+"}"); | ||
57 | } | ||
58 | // | ||
59 | return content; | ||
60 | } | ||
51 | }, | 61 | }, |
52 | //////////////////////////////////////////////////////////////////// | 62 | //////////////////////////////////////////////////////////////////// |
53 | // | 63 | // |
54 | fileNew: { | 64 | fileNew: { |
55 | enumerable: false, | ||
56 | value: function (file, url, callback, template) { | 65 | value: function (file, url, callback, template) { |
57 | //Loading template from template URL | 66 | //Loading template from template URL |
58 | var xhr = new XMLHttpRequest(), result; | 67 | var xhr = new XMLHttpRequest(), result; |
@@ -60,7 +69,7 @@ exports.IoMediator = Montage.create(Component, { | |||
60 | xhr.send(); | 69 | xhr.send(); |
61 | if (xhr.readyState === 4) { |