aboutsummaryrefslogtreecommitdiff
path: root/js/helper-classes/3D
diff options
context:
space:
mode:
authorValerio Virgillito2012-04-04 11:11:58 -0700
committerValerio Virgillito2012-04-04 11:11:58 -0700
commita11ef2eed7049835c8bdfa50a2b893632c46eaa0 (patch)
treefcbb067044d339daa49622537e934bf3a309db96 /js/helper-classes/3D
parentc6de22bf42be90b403491b5f87b1818d9020310c (diff)
downloadninja-a11ef2eed7049835c8bdfa50a2b893632c46eaa0.tar.gz
Squashed commit of Preparing for the montage undo-manager: Architecture changes
Reworked the add and remove elements into 1 function which can take 1 or more elements. Removed the _element from the selection array Many other changes related to those 2 changes Undo/Redo shortcuts are now using montage undo/redo manager. Signed-off-by: Valerio Virgillito <valerio@motorola.com>
Diffstat (limited to 'js/helper-classes/3D')
-rwxr-xr-xjs/helper-classes/3D/draw-utils.js79
-rwxr-xr-xjs/helper-classes/3D/snap-manager.js16
2 files changed, 51 insertions, 44 deletions
diff --git a/js/helper-classes/3D/draw-utils.js b/js/helper-classes/3D/draw-utils.js
index d6334e6c..c7c1c08d 100755
--- a/js/helper-classes/3D/draw-utils.js
+++ b/js/helper-classes/3D/draw-utils.js
@@ -109,8 +109,7 @@ var DrawUtils = exports.DrawUtils = Montage.create(Component, {
109 this._gridOrigin = [0,0]; // 2D plane space point 109 this._gridOrigin = [0,0]; // 2D plane space point
110 110
111 this.eventManager.addEventListener("elementAdded", this, false); 111 this.eventManager.addEventListener("elementAdded", this, false);
112 this.eventManager.addEventListener("elementDeleted", this, false); 112 this.eventManager.addEventListener("elementsRemoved", this, false);
113 this.eventManager.addEventListener("deleteSelection", this, false);
114 this.eventManager.addEventListener("elementChange", this, false); 113 this.eventManager.addEventListener("elementChange", this, false);
115 this.eventManager.addEventListener("closeDocument", this, false); 114 this.eventManager.addEventListener("closeDocument", this, false);
116 } 115 }
@@ -147,38 +146,47 @@ var DrawUtils = exports.DrawUtils = Montage.create(Component, {
147 146
148 handleElementAdded: { 147 handleElementAdded: {
149 value: function(event) { 148 value: function(event) {
150 this.addElement(event.detail); 149 var elements = event.detail;
150
151 if(Array.isArray(elements)) {
152 elements.forEach(function(element) {
153 this.addElement(element);
154 }, this);
155 } else {
156 this.addElement(elements);
157 }
158
151 this.drawWorkingPlane(); 159 this.drawWorkingPlane();
152 } 160 }
153 }, 161 },
154 162
155 handleElementDeleted: { 163 handleElementsRemoved: {
156 value: function(event) { 164 value: function(event) {
157 this.removeElement(event.detail); 165 var elements = event.detail;
158 } 166
159 }, 167 if(Array.isArray(elements)) {
168 elements = Array.prototype.slice.call(elements, 0);
169 elements.forEach(function(element) {
170 this.removeElement(element);
171 }, this);
172 } else {
173 this.removeElement(elements._element || elements);
174 }
160 175
161 handleDeleteSelection: {
162 value: function(event) {
163 this.drawWorkingPlane(); 176 this.drawWorkingPlane();
164 } 177 }
165 }, 178 },
166 179
167 _shouldUpdatePlanes: { 180 _shouldUpdatePlanes: {
168 value: function(props) { 181 value: function(props) {
169 if(!props) 182 if(!props) {
170 {
171 return false; 183 return false;
172 } 184 } else if (typeof props === "string") {
173 else if (typeof props === "string")
174 {
175 return (this._updatePlaneProps.indexOf(props) !== -1); 185 return (this._updatePlaneProps.indexOf(props) !== -1);
176 } 186 }
177 187
178 for (var p in props) 188 for (var p in props) {
179 { 189 if(this._updatePlaneProps.indexOf(p) !== -1) {
180 if(this._updatePlaneProps.indexOf(p) !== -1)
181 {
182 return true; 190 return true;
183 } 191 }
184 } 192 }
@@ -199,15 +207,12 @@ var DrawUtils = exports.DrawUtils = Montage.create(Component, {
199 { 207 {
200 var len = els.length, 208 var len = els.length,
201 i = 0, 209 i = 0,
202 item, 210 item;
203 el;
204 211
205 for(i=0; i < len; i++) { 212 for(i=0; i < len; i++) {
206 item = els[i]; 213 if(els[i].elementModel.props3D.elementPlane)
207 el = item._element || item;
208 if(el.elementModel.props3D.elementPlane)
209 { 214 {
210 el.elementModel.props3D.elementPlane.init(); 215 els[i].elementModel.props3D.elementPlane.init();
211 } 216 }
212 } 217 }
213 218
@@ -222,17 +227,12 @@ var DrawUtils = exports.DrawUtils = Montage.create(Component, {
222 // Methods 227 // Methods
223 /////////////////////////////////////////////////////////////////////// 228 ///////////////////////////////////////////////////////////////////////
224 229
225 addElement: 230 addElement: {
226 { 231 value: function( elt ) {
227 value: function( elt )
228 {
229 // check if we already know about this object 232 // check if we already know about this object
230 var n = this._eltArray.length; 233 var n = this._eltArray.length;
231 for (var i=0; i<n; i++) 234 for (var i=0; i<n; i++) {
232 { 235 if (elt == this._eltArray[i]) {
233 if (elt == this._eltArray[i])
234 {
235// console.log( "element already added to stage display: " + elt.id );
236 return; 236 return;
237 } 237 }
238 } 238 }
@@ -248,17 +248,14 @@ var DrawUtils = exports.DrawUtils = Montage.create(Component, {
248 } 248 }
249 }, 249 },
250 250
251 removeElement : { 251 removeElement: {
252 value: function( elt ) { 252 value: function(element) {
253 // check if object exists 253 // check if object exists
254 var n = this._eltArray.length; 254 var _elements = this._eltArray.length;
255 for (var i=0; i<n; i++) 255 for (var i=0; i < _elements; i++) {
256 { 256 if (element === this._eltArray[i]) {
257 if (elt == this._eltArray[i])
258 {
259 // First remove the planes for this element 257 // First remove the planes for this element
260 this._planesArray.splice(i, 1); 258 this._planesArray.splice(i, 1);
261
262 // Then remove the element 259 // Then remove the element
263 this._eltArray.splice(i, 1); 260 this._eltArray.splice(i, 1);
264 261
diff --git a/js/helper-classes/3D/snap-manager.js b/js/helper-classes/3D/snap-manager.js
index 5b467b41..67dedc49 100755
--- a/js/helper-classes/3D/snap-manager.js
+++ b/js/helper-classes/3D/snap-manager.js
@@ -123,7 +123,7 @@ var SnapManager = exports.SnapManager = Montage.create(Component, {
123 /////////////////////////////////////////////////////////////////////// 123 ///////////////////////////////////////////////////////////////////////
124 initialize: { 124 initialize: {
125 value: function() { 125 value: function() {
126 this.eventManager.addEventListener("elementDeleted", this, false); 126 this.eventManager.addEventListener("elementsRemoved", this, false);
127 } 127 }
128 }, 128 },
129 129
@@ -163,9 +163,19 @@ var SnapManager = exports.SnapManager = Montage.create(Component, {
163 }, 163 },
164 164
165 165
166 handleElementDeleted: { 166 handleElementsRemoved: {
167 value: function(event) { 167 value: function(event) {
168 this.removeElementFrom2DCache(event.detail); 168 var self = this, elements = event.detail;
169
170 if(Array.isArray(elements)) {
171 elements = Array.prototype.slice.call(elements, 0);
172 elements.forEach(function(element) {
173 element = element._element || element;
174 self.removeElementFrom2DCache(element);
175 });
176 } else {
177 this.removeElementFrom2DCache(elements._element || elements);
178 }
169 } 179 }
170 }, 180 },
171 181