diff options
Diffstat (limited to 'js')
-rwxr-xr-x | js/controllers/elements/component-controller.js | 13 | ||||
-rwxr-xr-x | js/controllers/selection-controller.js | 30 | ||||
-rw-r--r-- | js/document/templates/montage-html/main.reel/main.js | 43 | ||||
-rwxr-xr-x | js/helper-classes/3D/snap-manager.js | 21 | ||||
-rwxr-xr-x | js/panels/Components/ComponentsPanelBase.reel/ComponentsPanelBase.js | 81 |
5 files changed, 143 insertions, 45 deletions
diff --git a/js/controllers/elements/component-controller.js b/js/controllers/elements/component-controller.js index 83450d0f..260ee8a0 100755 --- a/js/controllers/elements/component-controller.js +++ b/js/controllers/elements/component-controller.js | |||
@@ -11,6 +11,8 @@ exports.ComponentController = Montage.create(ElementController, { | |||
11 | 11 | ||
12 | getProperty: { | 12 | getProperty: { |
13 | value: function(el, prop) { | 13 | value: function(el, prop) { |
14 | var component = el.controller || this.application.ninja.currentDocument.getComponentFromElement(el); | ||
15 | |||
14 | switch(prop) { | 16 | switch(prop) { |
15 | case "id": | 17 | case "id": |
16 | case "class": | 18 | case "class": |
@@ -19,18 +21,20 @@ exports.ComponentController = Montage.create(ElementController, { | |||
19 | case "width": | 21 | case "width": |
20 | case "height": | 22 | case "height": |
21 | if(el.nodeName === "IMG" && (prop === "width" || prop === "height")) { | 23 | if(el.nodeName === "IMG" && (prop === "width" || prop === "height")) { |
22 | return this.application.ninja.currentDocument.getComponentFromElement(el)[prop]; | 24 | return component[prop]; |
23 | } else { | 25 | } else { |
24 | return ElementController.getProperty(el, prop, true); | 26 | return ElementController.getProperty(el, prop, true); |
25 | } | 27 | } |
26 | default: | 28 | default: |
27 | return this.application.ninja.currentDocument.getComponentFromElement(el)[prop]; | 29 | return component[prop]; |
28 | } | 30 | } |
29 | } | 31 | } |
30 | }, | 32 | }, |
31 | 33 | ||
32 | setProperty: { | 34 | setProperty: { |
33 | value: function(el, p, value) { | 35 | value: function(el, p, value) { |
36 | var component = el.controller || this.application.ninja.currentDocument.getComponentFromElement(el); | ||
37 | |||
34 | switch(p) { | 38 | switch(p) { |
35 | case "id": | 39 | case "id": |
36 | case "class": | 40 | case "class": |
@@ -39,15 +43,14 @@ exports.ComponentController = Montage.create(ElementController, { | |||
39 | case "width": | 43 | case "width": |
40 | case "height": | 44 | case "height": |
41 | if(el.nodeName === "IMG" && (p === "width" || p === "height")) { | 45 | if(el.nodeName === "IMG" && (p === "width" || p === "height")) { |
42 | this.application.ninja.currentDocument.getComponentFromElement(el)[p] = value; | 46 | component[p] = value; |
43 | } else { | 47 | } else { |
44 | ElementController.setProperty(el, p, value); | 48 | ElementController.setProperty(el, p, value); |
45 | } | 49 | } |
46 | break; | 50 | break; |
47 | default: | 51 | default: |
48 | if(p === "min" || p === "max") value = parseFloat(value); | 52 | if(p === "min" || p === "max") value = parseFloat(value); |
49 | 53 | component[p] = value; | |
50 | this.application.ninja.currentDocument.getComponentFromElement(el)[p] = value; | ||
51 | break; | 54 | break; |
52 | 55 | ||
53 | } | 56 | } |
diff --git a/js/controllers/selection-controller.js b/js/controllers/selection-controller.js index 154fb7f8..5091f99a 100755 --- a/js/controllers/selection-controller.js +++ b/js/controllers/selection-controller.js | |||
@@ -6,7 +6,8 @@ No rights, expressed or implied, whatsoever to this software are provided by Mot | |||
6 | 6 | ||
7 | 7 | ||
8 | var Montage = require("montage/core/core").Montage, | 8 | var Montage = require("montage/core/core").Montage, |
9 | Component = require("montage/ui/component").Component; | 9 | Component = require("montage/ui/component").Component, |
10 | NJUtils = require("js/lib/NJUtils").NJUtils; | ||
10 | 11 | ||
11 | exports.SelectionController = Montage.create(Component, { | 12 | exports.SelectionController = Montage.create(Component, { |
12 | 13 | ||
@@ -154,6 +155,33 @@ exports.SelectionController = Montage.create(Component, { | |||
154 | this._isDocument = true; | 155 | this._isDocument = true; |
155 | } | 156 | } |
156 | 157 | ||
158 | if(item && item.controller && !item.elementModel.isComponent) { | ||
159 | var componentInfo = Montage.getInfoForObject(item.controller); | ||
160 | var componentName = componentInfo.objectName.toLowerCase(); | ||
161 | switch(componentName) { | ||
162 | case "feedreader": | ||
163 | NJUtils.makeElementModel(item, "Feed Reader", "component", false); | ||
164 | item.elementModel.pi = "FeedReaderPi"; | ||
165 | item.elementModel.isComponent = true; | ||
166 | break; | ||
167 | case "map": | ||
168 | NJUtils.makeElementModel(item, "Map", "component", false); | ||
169 | item.elementModel.pi = "MapPi"; | ||
170 | item.elementModel.isComponent = true; | ||
171 | break; | ||
172 | case "youtubechannel": | ||
173 | NJUtils.makeElementModel(item, "Youtube Channel", "component", false); | ||
174 | item.elementModel.pi = "YoutubeChannelPi"; | ||
175 | item.elementModel.isComponent = true; | ||
176 | break; | ||
177 | case "picasacarousel": | ||
178 | NJUtils.makeElementModel(item, "Picasa Carousel", "component", false); | ||
179 | item.elementModel.pi = "PicasaCarouselPi"; | ||
180 | item.elementModel.isComponent = true; | ||
181 | break; | ||
182 | } | ||
183 | } | ||
184 | |||
157 | NJevent("selectionChange", {"elements": this.application.ninja.selectedElements, "isDocument": this._isDocument} ); | 185 | NJevent("selectionChange", {"elements": this.application.ninja.selectedElements, "isDocument": this._isDocument} ); |
158 | 186 | ||
159 | } | 187 | } |
diff --git a/js/document/templates/montage-html/main.reel/main.js b/js/document/templates/montage-html/main.reel/main.js index 567f481c..6c141108 100644 --- a/js/document/templates/montage-html/main.reel/main.js +++ b/js/document/templates/montage-html/main.reel/main.js | |||
@@ -17,7 +17,25 @@ exports.Main = Montage.create(Component, { | |||
17 | */ | 17 | */ |
18 | templateDidLoad: { | 18 | templateDidLoad: { |
19 | value: function(){ | 19 | value: function(){ |
20 | window.addComponent = this.addComponentToUserDocument; | 20 | var self = this; |
21 | window.addComponent = function(element, data, callback) { | ||
22 | var component; | ||
23 | |||
24 | component = require.async(data.path) | ||
25 | .then(function(component) { | ||
26 | var componentRequire = component[data.name]; | ||
27 | var componentInstance = componentRequire.create(); | ||
28 | |||
29 | componentInstance.element = element; | ||
30 | //componentInstance.deserializedFromTemplate(); | ||
31 | componentInstance.needsDraw = true; | ||
32 | componentInstance.ownerComponent = self; | ||
33 | |||
34 | callback(componentInstance, element); | ||
35 | }) | ||
36 | .end(); | ||
37 | |||
38 | }; | ||
21 | // window.addBinding = this.addBindingToUserDocument; | 39 | // window.addBinding = this.addBindingToUserDocument; |
22 | 40 | ||
23 | // Dispatch event when this template has loaded. | 41 | // Dispatch event when this template has loaded. |
@@ -27,28 +45,5 @@ exports.Main = Montage.create(Component, { | |||
27 | document.body.dispatchEvent( newEvent ); | 45 | document.body.dispatchEvent( newEvent ); |
28 | 46 | ||
29 | } | 47 | } |
30 | }, | ||
31 | |||
32 | // Adding components to the user document by using a async require. | ||
33 | addComponentToUserDocument:{ | ||
34 | value:function(element, data, callback){ | ||
35 | |||
36 | var component; | ||
37 | |||
38 | component = require.async(data.path) | ||
39 | .then(function(component) { | ||
40 | var componentRequire = component[data.name]; | ||
41 | var componentInstance = componentRequire.create(); | ||
42 | |||
43 | componentInstance.element = element; | ||
44 | //componentInstance.deserializedFromTemplate(); | ||
45 | componentInstance.needsDraw = true; | ||
46 | |||
47 | callback(componentInstance, element); | ||
48 | }) | ||
49 | .end(); | ||
50 | |||
51 | } | ||
52 | } | 48 | } |
53 | |||
54 | }); \ No newline at end of file | 49 | }); \ No newline at end of file |
diff --git a/js/helper-classes/3D/snap-manager.js b/js/helper-classes/3D/snap-manager.js index 1caacd00..a755e9e2 100755 --- a/js/helper-classes/3D/snap-manager.js +++ b/js/helper-classes/3D/snap-manager.js | |||
@@ -471,7 +471,8 @@ var SnapManager = exports.SnapManager = Montage.create(Component, { | |||
471 | value: function( plane ) { | 471 | value: function( plane ) { |
472 | this._elementCache = new Array; | 472 | this._elementCache = new Array; |
473 | 473 | ||
474 | var stage = this.getStage(); | 474 | // var stage = this.getStage(); |
475 | var stage = this.application.ninja.currentSelectedContainer || this.getStage(); | ||
475 | this.hLoadElementCache( stage, plane, 0 ); | 476 | this.hLoadElementCache( stage, plane, 0 ); |
476 | this._isCacheInvalid = false; | 477 | this._isCacheInvalid = false; |
477 | 478 | ||
@@ -570,6 +571,11 @@ var SnapManager = exports.SnapManager = Montage.create(Component, { | |||
570 | 571 | ||
571 | hLoadElementCache : { | 572 | hLoadElementCache : { |
572 | value: function( elt, plane, depth ) { | 573 | value: function( elt, plane, depth ) { |
574 | if(depth > 1) | ||
575 | { | ||
576 | return; | ||
577 | } | ||
578 | |||
573 | if (depth > 0) | 579 | if (depth > 0) |
574 | { | 580 | { |
575 | // check if the element is on the specified plane | 581 | // check if the element is on the specified plane |
@@ -590,8 +596,7 @@ var SnapManager = exports.SnapManager = Montage.create(Component, { | |||
590 | elt.elementModel.isIn2DSnapCache = false; | 596 | elt.elementModel.isIn2DSnapCache = false; |
591 | } |