diff options
-rw-r--r-- | js/controllers/objects-controller.js | 83 | ||||
-rwxr-xr-x | js/document/models/html.js | 5 | ||||
-rw-r--r-- | js/document/templates/app/main.js | 1 | ||||
-rwxr-xr-x | js/document/views/design.js | 6 |
4 files changed, 69 insertions, 26 deletions
diff --git a/js/controllers/objects-controller.js b/js/controllers/objects-controller.js index 543aa96f..5bab9eab 100644 --- a/js/controllers/objects-controller.js +++ b/js/controllers/objects-controller.js | |||
@@ -8,46 +8,79 @@ var Montage = require("montage/core/core").Montage, | |||
8 | Component = require("montage/ui/component").Component; | 8 | Component = require("montage/ui/component").Component; |
9 | 9 | ||
10 | var objectsController = exports.ObjectsController = Montage.create(Component, { | 10 | var objectsController = exports.ObjectsController = Montage.create(Component, { |
11 | objects : { | ||
12 | value: [] | ||
13 | }, | ||
14 | |||
15 | handleAppLoaded : { | ||
16 | value: function() { | ||
17 | ///// Bind app's activeDocument property to | ||
18 | ///// objects controller's _activeDocument property | ||
19 | } | ||
20 | }, | ||
21 | |||
22 | deserializedFromTemplate : { | ||
23 | value: function() { | ||
24 | this.eventManager.addEventListener( "appLoaded", this, false); | ||
25 | }, | ||
26 | enumerable : false | ||
27 | }, | ||
28 | 11 | ||
29 | _activeDocument : { | 12 | _activeDocument : { |
30 | value : null, | 13 | value : null, |
31 | enumerable : false | 14 | enumerable : false |
32 | }, | 15 | }, |
33 | |||
34 | activeDocument : { | 16 | activeDocument : { |
35 | get : function() { | 17 | get : function() { |
36 | return this._activeDocument; | 18 | return this._activeDocument; |
37 | }, | 19 | }, |
38 | set : function(document) { | 20 | set : function(doc) { |
39 | ///// If the document is null set default stylesheets to null | 21 | if(!doc) { return false; } |
40 | if(!document) { return false; } | ||
41 | 22 | ||
23 | // TODO: remove setTimeout when timing of montage initialization is done | ||
42 | setTimeout(function() { | 24 | setTimeout(function() { |
43 | this.objects = document._document.application._template._deserializer.getObjectsFromLastDeserialization(); | 25 | this.bindToModelObjects(); |
44 | }.bind(this), 1000); | 26 | }.bind(this), 1000); |
45 | 27 | ||
46 | 28 | this._activeDocument = doc; | |
47 | ///// setting document via binding | ||
48 | this._activeDocument = document; | ||
49 | }, | 29 | }, |
50 | enumerable : false | 30 | enumerable : false |
31 | }, | ||
32 | |||
33 | objects : { | ||
34 | value: [] | ||
35 | }, | ||
36 | |||
37 | _isBoundToModelObjects : { | ||
38 | value: null | ||
39 | }, | ||
40 | bindToModelObjects : { | ||
41 | value: function() { | ||
42 | //// Remove any previous bindings if previously bound | ||
43 | if(!this._isBoundToModelObjects) { | ||
44 | Object.deleteBinding(this, 'objects'); | ||
45 | this._isBoundToModelObjects = true; | ||
46 | } | ||
47 | |||
48 | Object.defineBinding(this, 'objects', { | ||
49 | boundObject: this.activeDocument.model, | ||
50 | boundObjectPropertyPath: 'objects', | ||
51 | oneway: false | ||
52 | }); | ||
53 | } | ||
54 | }, | ||
55 | |||
56 | /* -------------------------- | ||
57 | Binding Methods | ||
58 | ----------------------------- */ | ||
59 | |||
60 | addBinding : { | ||
61 | value: function(bindingDescriptor) { | ||
62 | if(!bindingDescriptor.sourceObject || !bindingDescriptor.sourceObjectPropertyPath || !bindingDescriptor) { return; } | ||
63 | |||
64 | Object.defineBinding(bindingDescriptor.sourceObject, bindingDescriptor.sourceObjectPropertyPath, bindingDescriptor); | ||
65 | } | ||
66 | }, | ||
67 | |||
68 | removeBinding : { | ||
69 | value: function(bindingDescriptor) { | ||
70 | if(!bindingDescriptor) { return; } | ||
71 | |||
72 | Object.deleteBinding(bindingDescriptor.sourceObject, bindingDescriptor.sourceObjectPropertyBindingPath); | ||
73 | } | ||
74 | }, | ||
75 | |||
76 | editBindingPropertyPath : { | ||
77 | value: function(bindingDescriptor, newPropertyPath) { | ||
78 | this.removeBinding(bindingDescriptor); | ||
79 | |||
80 | //this.addBinding() | ||
81 | |||
82 | |||
83 | } | ||
51 | } | 84 | } |
52 | 85 | ||
53 | }); \ No newline at end of file | 86 | }); \ No newline at end of file |
diff --git a/js/document/models/html.js b/js/document/models/html.js index 9cc8ce92..10112565 100755 --- a/js/document/models/html.js +++ b/js/document/models/html.js | |||
@@ -69,6 +69,7 @@ exports.HtmlDocumentModel = Montage.create(BaseDocumentModel, { | |||
69 | setComponentInstance: { | 69 | setComponentInstance: { |
70 | value: function(instance, el) { | 70 | value: function(instance, el) { |
71 | this.userComponents[el.uuid] = instance; | 71 | this.userComponents[el.uuid] = instance; |
72 | this.objects.push(instance); | ||
72 | } | 73 | } |
73 | }, | 74 | }, |
74 | //////////////////////////////////////////////////////////////////// | 75 | //////////////////////////////////////////////////////////////////// |
@@ -81,6 +82,10 @@ exports.HtmlDocumentModel = Montage.create(BaseDocumentModel, { | |||
81 | return null; | 82 | return null; |
82 | } | 83 | } |
83 | } | 84 | } |
85 | }, | ||
86 | //////////////////////////////////////////////////////////////////// | ||
87 | objects : { | ||
88 | value: null | ||
84 | } | 89 | } |
85 | //////////////////////////////////////////////////////////////////// | 90 | //////////////////////////////////////////////////////////////////// |
86 | //////////////////////////////////////////////////////////////////// | 91 | //////////////////////////////////////////////////////////////////// |
diff --git a/js/document/templates/app/main.js b/js/document/templates/app/main.js index a406abdb..91c46fda 100644 --- a/js/document/templates/app/main.js +++ b/js/document/templates/app/main.js | |||
@@ -29,6 +29,7 @@ exports.Main = Montage.create(Component, { | |||
29 | var componentRequire = component[data.name]; | 29 | var componentRequire = component[data.name]; |
30 | var componentInstance = componentRequire.create(); | 30 | var componentInstance = componentRequire.create(); |
31 | 31 | ||
32 | componentInstance._montage_metadata.label = data.name; | ||
32 | componentInstance.element = element; | 33 | componentInstance.element = element; |
33 | 34 | ||
34 | componentInstance.needsDraw = true; | 35 | componentInstance.needsDraw = true; |
diff --git a/js/document/views/design.js b/js/document/views/design.js index b3887fdf..75eb3695 100755 --- a/js/document/views/design.js +++ b/js/document/views/design.js | |||
@@ -363,11 +363,15 @@ exports.DesignDocumentView = Montage.create(BaseDocumentView, { | |||
363 | initMontage: { | 363 | initMontage: { |
364 | value: function (scripttags) { | 364 | value: function (scripttags) { |
365 | // | 365 | // |
366 | //debugger; | ||
366 | this.iframe.contentWindow.document.body.addEventListener('mjsTemplateReady', function () { | 367 | this.iframe.contentWindow.document.body.addEventListener('mjsTemplateReady', function () { |
367 | //Initializing template with user's seriliazation | 368 | //Initializing template with user's seriliazation |
368 | var template = this.iframe.contentWindow.mjsTemplate.create(); | 369 | var template = this.iframe.contentWindow.mjsTemplate.create(); |
370 | |||
369 | template.initWithDocument(this.iframe.contentWindow.document); | 371 | template.initWithDocument(this.iframe.contentWindow.document); |
370 | template.instantiateWithOwnerAndDocument(null, this.iframe.contentWindow.document, function (e){/*Nothing just a required extra parameter*/}); | 372 | template.instantiateWithOwnerAndDocument(null, this.iframe.contentWindow.document, function (e){ |
373 | this.model.objects = template.deserializer.getObjectsFromLastDeserialization(); | ||
374 | }.bind(this)); | ||
371 | }.bind(this), false); | 375 | }.bind(this), false); |
372 | } | 376 | } |
373 | }, | 377 | }, |