diff options
-rwxr-xr-x | js/controllers/elements/body-controller.js | 4 | ||||
-rwxr-xr-x | js/controllers/elements/element-controller.js | 8 | ||||
-rwxr-xr-x | js/controllers/elements/shapes-controller.js | 2 | ||||
-rwxr-xr-x | js/document/document-html.js | 10 | ||||
-rwxr-xr-x | js/document/models/html.js | 23 | ||||
-rwxr-xr-x | js/document/templates/banner/index.html | 24 | ||||
-rwxr-xr-x | js/document/templates/html/index.html | 27 | ||||
-rwxr-xr-x | js/document/views/design.js | 30 | ||||
-rwxr-xr-x | js/helper-classes/3D/snap-manager.js | 14 | ||||
-rwxr-xr-x | js/lib/NJUtils.js | 120 | ||||
-rwxr-xr-x | js/mediators/drag-drop-mediator.js | 2 | ||||
-rwxr-xr-x | js/mediators/element-mediator.js | 42 | ||||
-rwxr-xr-x | js/models/element-model.js | 96 | ||||
-rwxr-xr-x | js/panels/components-panel.reel/components-panel.js | 22 | ||||
-rw-r--r-- | js/tools/BrushTool.js | 1 | ||||
-rwxr-xr-x | js/tools/EyedropperTool.js | 1 | ||||
-rwxr-xr-x | js/tools/LineTool.js | 1 | ||||
-rwxr-xr-x | js/tools/PenTool.js | 1 | ||||
-rwxr-xr-x | js/tools/ShapeTool.js | 1 | ||||
-rwxr-xr-x | js/tools/TagTool.js | 3 |
20 files changed, 184 insertions, 248 deletions
diff --git a/js/controllers/elements/body-controller.js b/js/controllers/elements/body-controller.js index 7a3a66f5..9c427c62 100755 --- a/js/controllers/elements/body-controller.js +++ b/js/controllers/elements/body-controller.js | |||
@@ -71,7 +71,7 @@ exports.BodyController = Montage.create(ElementController, { | |||
71 | 71 | ||
72 | getPerspectiveDist: { | 72 | getPerspectiveDist: { |
73 | value: function(el) { | 73 | value: function(el) { |
74 | if(el.elementModel && el.elementModel.props3D && el.elementModel.props3D.perspectiveDist) { | 74 | if(el.elementModel.props3D && el.elementModel.props3D.perspectiveDist) { |
75 | return el.elementModel.props3D.perspectiveDist; | 75 | return el.elementModel.props3D.perspectiveDist; |
76 | } else { | 76 | } else { |
77 | var dist = this.application.ninja.stylesController.getPerspectiveDistFromElement(el, true); | 77 | var dist = this.application.ninja.stylesController.getPerspectiveDistFromElement(el, true); |
@@ -83,7 +83,7 @@ exports.BodyController = Montage.create(ElementController, { | |||
83 | 83 | ||
84 | getMatrix: { | 84 | getMatrix: { |
85 | value: function(el) { | 85 | value: function(el) { |
86 | if(el.elementModel && el.elementModel.props3D && el.elementModel.props3D.matrix3d) | 86 | if(el.elementModel.props3D && el.elementModel.props3D.matrix3d) |
87 | { | 87 | { |
88 | return el.elementModel.props3D.matrix3d.slice(0); | 88 | return el.elementModel.props3D.matrix3d.slice(0); |
89 | } | 89 | } |
diff --git a/js/controllers/elements/element-controller.js b/js/controllers/elements/element-controller.js index 01e132d7..0223a6b5 100755 --- a/js/controllers/elements/element-controller.js +++ b/js/controllers/elements/element-controller.js | |||
@@ -36,7 +36,7 @@ exports.ElementController = Montage.create(Component, { | |||
36 | // Remove the element from the DOM and clear the GLWord. | 36 | // Remove the element from the DOM and clear the GLWord. |
37 | removeElement: { | 37 | removeElement: { |
38 | value: function(el) { | 38 | value: function(el) { |
39 | if(el.elementModel && el.elementModel.shapeModel && el.elementModel.shapeModel.GLWorld) { | 39 | if(el.elementModel.shapeModel && el.elementModel.shapeModel.GLWorld) { |
40 | el.elementModel.shapeModel.GLWorld.clearTree(); | 40 | el.elementModel.shapeModel.GLWorld.clearTree(); |
41 | } | 41 | } |
42 | el.parentNode.removeChild(el); | 42 | el.parentNode.removeChild(el); |
@@ -229,7 +229,7 @@ exports.ElementController = Montage.create(Component, { | |||
229 | // Routines to get/set 3D properties | 229 | // Routines to get/set 3D properties |
230 | get3DProperty: { | 230 | get3DProperty: { |
231 | value: function(el, prop) { | 231 | value: function(el, prop) { |
232 | if(el.elementModel && el.elementModel.props3D) { | 232 | if(el.elementModel.props3D) { |
233 | return el.elementModel.props3D[prop]; | 233 | return el.elementModel.props3D[prop]; |
234 | } | 234 | } |
235 | } | 235 | } |
@@ -237,7 +237,7 @@ exports.ElementController = Montage.create(Component, { | |||
237 | 237 | ||
238 | getMatrix: { | 238 | getMatrix: { |
239 | value: function(el) { | 239 | value: function(el) { |
240 | if(el.elementModel && el.elementModel.props3D && el.elementModel.props3D.matrix3d) { | 240 | if(el.elementModel.props3D && el.elementModel.props3D.matrix3d) { |
241 | return el.elementModel.props3D.matrix3d.slice(0); | 241 | return el.elementModel.props3D.matrix3d.slice(0); |
242 | } else { | 242 | } else { |
243 | var mat; | 243 | var mat; |
@@ -257,7 +257,7 @@ exports.ElementController = Montage.create(Component, { | |||
257 | 257 | ||
258 | getPerspectiveDist: { | 258 | getPerspectiveDist: { |
259 | value: function(el) { | 259 | value: function(el) { |
260 | if(el.elementModel && el.elementModel.props3D && el.elementModel.props3D.perspectiveDist) { | 260 | if(el.elementModel.props3D && el.elementModel.props3D.perspectiveDist) { |
261 | return el.elementModel.props3D.perspectiveDist; | 261 | return el.elementModel.props3D.perspectiveDist; |
262 | } else { | 262 | } else { |
263 | var dist = this.application.ninja.stylesController.getPerspectiveDistFromElement(el, false); | 263 | var dist = this.application.ninja.stylesController.getPerspectiveDistFromElement(el, false); |
diff --git a/js/controllers/elements/shapes-controller.js b/js/controllers/elements/shapes-controller.js index 626dedb6..ae345489 100755 --- a/js/controllers/elements/shapes-controller.js +++ b/js/controllers/elements/shapes-controller.js | |||
@@ -133,7 +133,7 @@ exports.ShapesController = Montage.create(CanvasController, { | |||
133 | canvas.setAttribute("data-RDGE-id", njModule.NJUtils.generateRandom()); | 133 | canvas.setAttribute("data-RDGE-id", njModule.NJUtils.generateRandom()); |
134 | canvas.width = el.width; | 134 | canvas.width = el.width; |
135 | canvas.height = el.height; | 135 | canvas.height = el.height; |
136 | canvas.elementModel = el.elementModel; | 136 | canvas._model = el.elementModel; |
137 | this.toggleWebGlMode(canvas, value); | 137 | this.toggleWebGlMode(canvas, value); |
138 | this.application.ninja.elementMediator.replaceElement(canvas, el); | 138 | this.application.ninja.elementMediator.replaceElement(canvas, el); |
139 | break; | 139 | break; |
diff --git a/js/document/document-html.js b/js/document/document-html.js index 33a41a8e..4a8d5d41 100755 --- a/js/document/document-html.js +++ b/js/document/document-html.js | |||
@@ -88,7 +88,7 @@ exports.HtmlDocument = Montage.create(Component, { | |||
88 | //Adding observer to know when template is ready | 88 | //Adding observer to know when template is ready |
89 | this._observer = new WebKitMutationObserver(this.handleTemplateReady.bind(this)); | 89 | this._observer = new WebKitMutationObserver(this.handleTemplateReady.bind(this)); |
90 | this._observer.observe(this.model.views.design.document.head, {childList: true}); | 90 | this._observer.observe(this.model.views.design.document.head, {childList: true}); |
91 | }.bind(this), template); | 91 | }.bind(this), template, {viewCallback: this.handleViewReady, context: this}); |
92 | } else { | 92 | } else { |
93 | //TODO: Identify default view (probably code) | 93 | //TODO: Identify default view (probably code) |
94 | } | 94 | } |
@@ -101,10 +101,14 @@ exports.HtmlDocument = Montage.create(Component, { | |||
101 | //Removing observer, only needed on initial load | 101 | //Removing observer, only needed on initial load |
102 | this._observer.disconnect(); | 102 | this._observer.disconnect(); |
103 | this._observer = null; | 103 | this._observer = null; |
104 | //Making callback after view is loaded | ||
105 | this.loaded.callback.call(this.loaded.context, this); | ||
106 | } | 104 | } |
107 | }, | 105 | }, |
106 | handleViewReady: { | ||
107 | value: function() { | ||
108 | //Making callback after view is loaded | ||
109 | this.loaded.callback.call(this.loaded.context, this); | ||
110 | } | ||
111 | }, | ||
108 | //////////////////////////////////////////////////////////////////// | 112 | //////////////////////////////////////////////////////////////////// |
109 | // | 113 | // |
110 | closeDocument: { | 114 | closeDocument: { |
diff --git a/js/document/models/html.js b/js/document/models/html.js index 9aa0d27e..a367f95f 100755 --- a/js/document/models/html.js +++ b/js/document/models/html.js | |||
@@ -64,31 +64,8 @@ exports.HtmlDocumentModel = Montage.create(BaseDocumentModel, { | |||
64 | }, | 64 | }, |
65 | //////////////////////////////////////////////////////////////////// | 65 | //////////////////////////////////////////////////////////////////// |
66 | // | 66 | // |
67 | userComponents: { | ||
68 | value: {} | ||
69 | }, | ||
70 | //////////////////////////////////////////////////////////////////// | ||
71 | // | ||
72 | documentRoot: { | 67 | documentRoot: { |
73 | value: null | 68 | value: null |
74 | }, | ||
75 | //////////////////////////////////////////////////////////////////// | ||
76 | //Add a reference to a component instance to the userComponents hash using the element UUID | ||
77 | setComponentInstance: { | ||
78 | value: function(instance, el) { | ||
79 | this.userComponents[el.uuid] = instance; | ||
80 | } | ||
81 | }, | ||
82 | //////////////////////////////////////////////////////////////////// | ||
83 | //Returns the component instance obj from the element | ||
84 | getComponentFromElement: { | ||
85 | value: function(el) { | ||
86 | if(el) { | ||
87 | if(el.uuid) return this.userComponents[el.uuid]; | ||
88 | } else { | ||
89 | return null; | ||
90 | } | ||
91 | } | ||
92 | } | 69 | } |
93 | //////////////////////////////////////////////////////////////////// | 70 | //////////////////////////////////////////////////////////////////// |
94 | //////////////////////////////////////////////////////////////////// | 71 | //////////////////////////////////////////////////////////////////// |
diff --git a/js/document/templates/banner/index.html b/js/document/templates/banner/index.html index f1ee3d98..08a998e5 100755 --- a/js/document/templates/banner/index.html +++ b/js/document/templates/banner/index.html | |||
@@ -74,9 +74,27 @@ | |||
74 | </style> | 74 | </style> |
75 | 75 | ||
76 | <script type="text/javascript" data-ninja-template="true"> | 76 | <script type="text/javascript" data-ninja-template="true"> |
77 | function getElement(x,y) { | 77 | |
78 | return document.elementFromPoint(x,y); | 78 | function getElement(x,y) { |
79 | } | 79 | return document.elementFromPoint(x,y); |
80 | } | ||
81 | |||
82 | var njmodelGet = function njmodelGet() { | ||
83 | return (this.hasOwnProperty("_model") ? this._model: document.modelGenerator.call(this)); | ||
84 | }; | ||
85 | |||
86 | Object.defineProperty(Object.prototype, "_model", { | ||
87 | enumerable: false, | ||
88 | value: null, | ||
89 | writable: true | ||
90 | }); | ||
91 | |||
92 | Object.defineProperty(Object.prototype, "elementModel", { | ||
93 | configurable: true, | ||
94 | get: njmodelGet, | ||
95 | set: function() { | ||
96 | } | ||
97 | }); | ||
80 | </script> | 98 | </script> |
81 | 99 | ||
82 | <!-- TODO: Determine if loading Montage is always needed or if it could be done author-time or on file open --> | 100 | <!-- TODO: Determine if loading Montage is always needed or if it could be done author-time or on file open --> |
diff --git a/js/document/templates/html/index.html b/js/document/templates/html/index.html index 70187900..c74a7251 100755 --- a/js/document/templates/html/index.html +++ b/js/document/templates/html/index.html | |||
@@ -57,13 +57,32 @@ | |||