diff options
-rw-r--r-- | js/mediators/element-mediator.js | 19 | ||||
-rw-r--r-- | js/panels/Timeline/TimelinePanel.reel/TimelinePanel.js | 70 |
2 files changed, 89 insertions, 0 deletions
diff --git a/js/mediators/element-mediator.js b/js/mediators/element-mediator.js index 9aefbca6..95aec2a3 100644 --- a/js/mediators/element-mediator.js +++ b/js/mediators/element-mediator.js | |||
@@ -105,6 +105,25 @@ exports.ElementMediator = Montage.create(NJComponent, { | |||
105 | } | 105 | } |
106 | }, | 106 | }, |
107 | 107 | ||
108 | deleteElements: { | ||
109 | value: function(items) { | ||
110 | // Add the Undo/Redo | ||
111 | var len, el; | ||
112 | |||
113 | len = items.length; | ||
114 | |||
115 | if(len) { | ||
116 | |||
117 | for(var i = len - 1; i >= 0; i--) { | ||
118 | el = items[i]._element || items[i]; | ||
119 | this._removeElement(el); | ||
120 | } | ||
121 | |||
122 | NJevent( "deleteSelection", items ); | ||
123 | } | ||
124 | } | ||
125 | }, | ||
126 | |||
108 | _removeElement: { | 127 | _removeElement: { |
109 | value: function(el, rules) { | 128 | value: function(el, rules) { |
110 | ElementController.removeElement(el, rules); | 129 | ElementController.removeElement(el, rules); |
diff --git a/js/panels/Timeline/TimelinePanel.reel/TimelinePanel.js b/js/panels/Timeline/TimelinePanel.reel/TimelinePanel.js index b3f4318a..4586c4eb 100644 --- a/js/panels/Timeline/TimelinePanel.reel/TimelinePanel.js +++ b/js/panels/Timeline/TimelinePanel.reel/TimelinePanel.js | |||
@@ -3,6 +3,7 @@ var Component = require("montage/ui/component").Component; | |||
3 | var Layer = require("js/panels/Timeline/Layer.reel").Layer; | 3 | var Layer = require("js/panels/Timeline/Layer.reel").Layer; |
4 | var TimelineTrack = require("js/panels/Timeline/TimelineTrack.reel").TimelineTrack; | 4 | var TimelineTrack = require("js/panels/Timeline/TimelineTrack.reel").TimelineTrack; |
5 | var nj = require("js/lib/NJUtils").NJUtils; | 5 | var nj = require("js/lib/NJUtils").NJUtils; |
6 | var ElementMediator = require("js/mediators/element-mediator").ElementMediator; | ||
6 | 7 | ||
7 | var TimelinePanel = exports.TimelinePanel = Montage.create(Component, { | 8 | var TimelinePanel = exports.TimelinePanel = Montage.create(Component, { |
8 | 9 | ||
@@ -121,6 +122,11 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, { | |||
121 | value:true, | 122 | value:true, |
122 | writable:true | 123 | writable:true |
123 | }, | 124 | }, |
125 | |||
126 | _captureSelection:{ | ||
127 | value:false, | ||
128 | writable:true | ||
129 | }, | ||
124 | /* === END: Models === */ | 130 | /* === END: Models === */ |
125 | 131 | ||
126 | /* === BEGIN: Draw cycle === */ | 132 | /* === BEGIN: Draw cycle === */ |
@@ -134,9 +140,11 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, { | |||
134 | this.eventManager.addEventListener("elementAdded", this, false); | 140 | this.eventManager.addEventListener("elementAdded", this, false); |
135 | this.eventManager.addEventListener("elementDeleted", this, false); | 141 | this.eventManager.addEventListener("elementDeleted", this, false); |
136 | this.eventManager.addEventListener("deleteSelection", this, false); | 142 | this.eventManager.addEventListener("deleteSelection", this, false); |
143 | this.eventManager.addEventListener("selectionChange", this, true); | ||
137 | this.hashInstance = this.createLayerHashTable(); | 144 | this.hashInstance = this.createLayerHashTable(); |
138 | this.hashTrackInstance = this.createTrackHashTable(); | 145 | this.hashTrackInstance = this.createTrackHashTable(); |
139 | this.hashLayerNumber = this.createLayerNumberHash(); | 146 | this.hashLayerNumber = this.createLayerNumberHash(); |
147 | this.hashElementMapToLayer = this.createElementMapToLayer(); | ||
140 | this.initTimelineView(); | 148 | this.initTimelineView(); |
141 | } | 149 | } |
142 | }, | 150 | }, |
@@ -182,6 +190,23 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, { | |||
182 | } | 190 | } |
183 | }, | 191 | }, |
184 | 192 | ||
193 | captureSelectionChange:{ | ||
194 | value:function(){ | ||
195 | var key , switchSelectedLayer,layerIndex; | ||
196 | if(this.application.ninja.selectedElements[0]){ | ||
197 | key = this.application.ninja.selectedElements[0].uuid; | ||
198 | switchSelectedLayer = this.hashElementMapToLayer.getItem(key); | ||
199 | if(switchSelectedLayer!==undefined){ | ||
200 | layerIndex = this.getLayerIndexByID(switchSelectedLayer.layerID) | ||
201 | this._captureSelection=false; | ||
202 | this.selectLayer(layerIndex); | ||
203 | this._captureSelection=true; | ||
204 | |||
205 | } | ||
206 | } | ||
207 | } | ||
208 | }, | ||
209 | |||
185 | updateTimeText:{ | 210 | updateTimeText:{ |
186 | value:function (millisec) { | 211 | value:function (millisec) { |
187 | var timeText; | 212 | var timeText; |
@@ -398,11 +423,16 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, { | |||
398 | this.hashLayerNumber.setItem(this._hashKey, thingToPush); | 423 | this.hashLayerNumber.setItem(this._hashKey, thingToPush); |
399 | this.hashInstance.setItem(this._hashKey, thingToPush, thingToPush.layerPosition); | 424 | this.hashInstance.setItem(this._hashKey, thingToPush, thingToPush.layerPosition); |
400 | this.hashTrackInstance.setItem(this._hashKey, newTrack, newTrack.trackPosition); | 425 | this.hashTrackInstance.setItem(this._hashKey, newTrack, newTrack.trackPosition); |
426 | |||
401 | } | 427 | } |
402 | this._LayerUndoObject = thingToPush; | 428 | this._LayerUndoObject = thingToPush; |
403 | this._LayerUndoIndex = thingToPush.layerID; | 429 | this._LayerUndoIndex = thingToPush.layerID; |
404 | this._LayerUndoStatus = true; | 430 | this._LayerUndoStatus = true; |
405 | this._TrackUndoObject = newTrack; | 431 | this._TrackUndoObject = newTrack; |
432 | if(_firstLayerDraw){ | ||
433 | this.application.ninja.selectionController.executeSelectElement(); | ||
434 | } | ||
435 | |||
406 | } | 436 | } |
407 | } | 437 | } |
408 | }, | 438 | }, |
@@ -427,6 +457,7 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, { | |||
427 | while (this.arrLayers.length) { | 457 | while (this.arrLayers.length) { |
428 | if (dLayer[hashVariable]._layerID === this.arrLayers[k]._layerID) { | 458 | if (dLayer[hashVariable]._layerID === this.arrLayers[k]._layerID) { |
429 | dLayer[hashVariable].deleted = true; | 459 | dLayer[hashVariable].deleted = true; |
460 | ElementMediator.deleteElements(dLayer[myIndex].element); | ||
430 | this.arrLayers.splice(k, 1); | 461 | this.arrLayers.splice(k, 1); |
431 | this.arrTracks.splice(k, 1); | 462 | this.arrTracks.splice(k, 1); |
432 | break; | 463 | break; |
@@ -442,6 +473,7 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, { | |||
442 | while (dLayer[hashVariable]) { | 473 | while (dLayer[hashVariable]) { |
443 | if (dLayer[hashVariable]._layerID === event.detail._el._layerID) { | 474 | if (dLayer[hashVariable]._layerID === event.detail._el._layerID) { |
444 | dLayer[hashVariable].deleted = true; | 475 | dLayer[hashVariable].deleted = true; |
476 | ElementMediator.deleteElements(dLayer[myIndex].element); | ||
445 | parentNode = dLayer[hashVariable].parentElement; | 477 | parentNode = dLayer[hashVariable].parentElement; |
446 | break; | 478 | break; |
447 | } | 479 | } |
@@ -459,6 +491,7 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, { | |||
459 | while (this.arrLayers.length) { | 491 | while (this.arrLayers.length) { |
460 | if (dLayer[hashVariable]._layerID === this.arrLayers[k]._layerID) { | 492 | if (dLayer[hashVariable]._layerID === this.arrLayers[k]._layerID) { |
461 | dLayer[hashVariable].deleted = true; | 493 | dLayer[hashVariable].deleted = true; |
494 | ElementMediator.deleteElements(dLayer[myIndex].element); | ||
462 | this.arrLayers.splice(k, 1); | 495 | this.arrLayers.splice(k, 1); |
463 | this.arrTracks.splice(k, 1); | 496 | this.arrTracks.splice(k, 1); |
464 | break; | 497 | break; |
@@ -479,6 +512,7 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, { | |||
479 | dLayer = this.hashInstance.getItem(this._hashKey); | 512 | dLayer = this.hashInstance.getItem(this._hashKey); |
480 | dTrack = this.hashTrackInstance.getItem(this._hashKey); | 513 | dTrack = this.hashTrackInstance.getItem(this._hashKey); |
481 | dLayer[myIndex].deleted = true; | 514 | dLayer[myIndex].deleted = true; |
515 | ElementMediator.deleteElements(dLayer[myIndex].element); | ||
482 | 516 | ||
483 | this.arrLayers.splice(myIndex, 1); | 517 | this.arrLayers.splice(myIndex, 1); |
484 | this.arrTracks.splice(myIndex, 1); | 518 | this.arrTracks.splice(myIndex, 1); |
@@ -488,6 +522,7 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, { | |||
488 | dLayer = this.hashInstance.getItem(this._hashKey); | 522 | dLayer = this.hashInstance.getItem(this._hashKey); |
489 | dTrack = this.hashTrackInstance.getItem(this._hashKey); | 523 | dTrack = this.hashTrackInstance.getItem(this._hashKey); |
490 | dLayer[this.arrLayers.length - 1].deleted = true; | 524 | dLayer[this.arrLayers.length - 1].deleted = true; |
525 | ElementMediator.deleteElements(dLayer[this.arrLayers.length - 1].element); | ||
491 | this._LayerUndoPosition = this.arrLayers.length - 1; | 526 | this._LayerUndoPosition = this.arrLayers.length - 1; |
492 | this._LayerUndoObject = this.arrLayers.pop(); | 527 | this._LayerUndoObject = this.arrLayers.pop(); |
493 | this._LayerUndoIndex = this._LayerUndoObject.layerID; | 528 | this._LayerUndoIndex = this._LayerUndoObject.layerID; |
@@ -500,7 +535,10 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, { | |||
500 | 535 | ||
501 | handleElementAdded:{ | 536 | handleElementAdded:{ |
502 | value:function (event) { | 537 | value:function (event) { |
538 | |||
539 | this.hashElementMapToLayer.setItem(event.detail.uuid , event.detail,this.currentLayerSelected) | ||
503 | this.currentLayerSelected.element.push(event.detail); | 540 | this.currentLayerSelected.element.push(event.detail); |
541 | |||
504 | } | 542 | } |
505 | }, | 543 | }, |
506 | 544 | ||
@@ -667,6 +705,35 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, { | |||
667 | return hashLayerNumberObject; | 705 | return hashLayerNumberObject; |
668 | } | 706 | } |
669 | }, | 707 | }, |
708 | |||
709 | createElementMapToLayer:{ | ||
710 | value:function(){ | ||
711 | var hashMappingObject | ||
712 | hashMappingObject = Object.create(Object.prototype, { | ||
713 | mappingArray:{ | ||
714 | value:{}, | ||
715 | writable:true | ||
716 | }, | ||
717 | setItem: { | ||
718 | value: function(key,value,layer) { | ||
719 | if(this.mappingArray[key]===undefined){ | ||
720 | this.mappingArray[key]={}; | ||
721 | } | ||
722 | this.mappingArray[key]["element"] = value; | ||
723 |