aboutsummaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
Diffstat (limited to 'js')
-rwxr-xr-xjs/controllers/elements/component-controller.js13
-rwxr-xr-xjs/controllers/selection-controller.js30
-rw-r--r--js/document/templates/montage-html/main.reel/main.js43
-rwxr-xr-xjs/helper-classes/3D/snap-manager.js21
-rwxr-xr-xjs/panels/Components/ComponentsPanelBase.reel/ComponentsPanelBase.js81
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
8var Montage = require("montage/core/core").Montage, 8var 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
11exports.SelectionController = Montage.create(Component, { 12exports.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 }