diff --git a/js/panels/Timeline/TimelinePanel.reel/TimelinePanel.js b/js/panels/Timeline/TimelinePanel.reel/TimelinePanel.js
index 67ff3c02..6d23453d 100644
--- a/js/panels/Timeline/TimelinePanel.reel/TimelinePanel.js
+++ b/js/panels/Timeline/TimelinePanel.reel/TimelinePanel.js
@@ -28,7 +28,7 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, {
},
set:function (newVal) {
this._arrLayers = newVal;
- this.updateLayers();
+ this._cacheArrays();
}
},
@@ -44,16 +44,20 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, {
this._layerRepetition = newVal;
}
},
- updateLayers : {
+ _cacheArrays : {
value: function() {
- this.application.ninja.currentDocument.tlArrLayers = this.arrLayers;
- // this.application.ninja.currentDocument.tlArrTracks = this.arrTracks;
- console.log('inside of updateLayers ');
- console.log(this.application.ninja.currentDocument.tlArrTracks);
-
+ // Cache this.arrLayers and this.arrTracks.
+ console.log('cacheArrays ' + this._boolCacheArrays)
+ if (this._boolCacheArrays) {
+ console.log('caching arrays for ', this.application.ninja.currentDocument.name);
+ this.application.ninja.currentDocument.tlArrLayers = this.arrLayers;
+ this.application.ninja.currentDocument.tlArrTracks = this.arrTracks;
+ }
}
},
- boolUpdateLayers : {
+
+ // Set to false to skip array caching array sets in current document
+ _boolCacheArrays : {
value: true
},
@@ -112,7 +116,7 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, {
},
set:function (newVal) {
this._arrTracks = newVal;
- this.updateLayers();
+ this._cacheArrays();
}
},
@@ -192,43 +196,6 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, {
}
},
- handleOnOpenDocument:{
- value:function(){
- this.boolUpdateLayers = false;
- this.clearTimelinePanel();
- this.boolUpdateLayers = true;
- this.eventManager.addEventListener("deleteLayerClick", this, false);
- this.eventManager.addEventListener("newLayer", this, false);
- this.eventManager.addEventListener("deleteLayer", this, false);
- this.eventManager.addEventListener("layerBinding", this, false);
- this.eventManager.addEventListener("elementAdded", this, false);
- this.eventManager.addEventListener("elementDeleted", this, false);
- this.eventManager.addEventListener("deleteSelection", this, false);
- this.eventManager.addEventListener("selectionChange", this, true);
- this.hashInstance = this.createLayerHashTable();
- this.hashTrackInstance = this.createTrackHashTable();
- this.hashLayerNumber = this.createLayerNumberHash();
- this.hashElementMapToLayer = this.createElementMapToLayer();
- this.initTimelineView();
-
-
- }
- },
-
- handleCloseDocument: {
- value: function(event) {
- this.clearTimelinePanel();
- this.arrTracks = [];
- this.arrLayers = [];
- }
- },
-
- handleSwitchDocument : {
- value: function(event) {
- // Handle document change.
- this.handleOnOpenDocument();
- }
- },
willDraw:{
value:function () {
@@ -241,6 +208,33 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, {
/* === END: Draw cycle === */
/* === BEGIN: Controllers === */
+
+ // Bind all document-specific events (pass in true to unbind)
+ _bindDocumentEvents : {
+ value: function(boolUnbind) {
+ var arrEvents = ["deleteLayerClick",
+ "newLayer",
+ "deleteLayer",
+ "layerBinding",
+ "elementAdded",
+ "elementDeleted",
+ "deleteSelection",
+ "selectionChange"],
+ i,
+ arrEventsLength = arrEvents.length;
+
+ if (boolUnbind) {
+ for (i = 0; i < arrEventsLength; i++) {
+ this.eventManager.removeEventListener(arrEvents[i], this, false);
+ }
+ } else {
+ for (i = 0; i < arrEventsLength; i++) {
+ this.eventManager.addEventListener(arrEvents[i], this, false);
+ }
+ }
+ }
+ },
+
initTimeline : {
value: function() {
// Set up basic Timeline functions: event listeners, etc. Things that only need to be run once.
@@ -258,7 +252,8 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, {
}
},
- initTimelineView:{
+
+ initTimelineForDocument:{
value:function () {
var myIndex;
this.drawTimeMarkers();
@@ -269,10 +264,14 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, {
// Check to see if we have saved timeline information in the currentDocument.
if (typeof(this.application.ninja.currentDocument.isTimelineInitialized) === "undefined") {
// No, we have no information stored. Create it.
- console.log('newfile!')
+ console.log('newfile ' + this.application.ninja.currentDocument.name)
this.application.ninja.currentDocument.isTimelineInitialized = true;
this.application.ninja.currentDocument.tlArrLayers = [];
this.application.ninja.currentDocument.tlArrTracks = [];
+
+
+ // Loop through the DOM of the document to find layers and animations.
+ // Fire off events as they are found.
_firstLayerDraw = false;
if(!this.application.ninja.documentController.creatingNewFile){
if(this.application.ninja.currentDocument.documentRoot.children[0]){
@@ -282,7 +281,7 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, {
this._openDoc=true;
NJevent('newLayer',{key:this._hashKey,ele:this.application.ninja.currentDocument.documentRoot.children[myIndex]})
myIndex++;
- }
+ k }
}
else{
NJevent('newLayer', this._hashKey);
@@ -294,14 +293,20 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, {
}
_firstLayerDraw = true;
+
+ // After recreating the tracks and layers, store the result in the currentDocument.
this.application.ninja.currentDocument.tlArrTracks = this.arrTracks;
+ this.application.ninja.currentDocument.tlArrLayers = this.arrLayers;
+
} else {
// we do have information stored. Use it.
- console.log('oldfile!')
- console.log("tlArrLayers: " , this.application.ninja.currentDocument.tlArrLayers);
- console.log("tlArrTracks: " , this.application.ninja.currentDocument.tlArrTracks);
+ console.log('oldfile ' + this.application.ninja.currentDocument.name)
+ this._boolCacheArrays = false;
+ this.arrLayers = [];
+ this.arrTracks = [];
this.arrLayers = this.application.ninja.currentDocument.tlArrLayers;
this.arrTracks = this.application.ninja.currentDocument.tlArrTracks;
+ this._boolCacheArrays = true;
}
// Redraw all the things
@@ -316,14 +321,7 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, {
clearTimelinePanel : {
value: function() {
// Remove events
- this.eventManager.removeEventListener("deleteLayerClick", this, false);
- this.eventManager.removeEventListener("newLayer", this, false);
- this.eventManager.removeEventListener("deleteLayer", this, false);
- this.eventManager.removeEventListener("layerBinding", this, false);
- this.eventManager.removeEventListener("elementAdded", this, false);
- this.eventManager.removeEventListener("elementDeleted", this, false);
- this.eventManager.removeEventListener("deleteSelection", this, false);
- this.eventManager.removeEventListener("selectionChange", this, true);
+ this._bindDocumentEvents(true);
// Remove every event listener for every tween in TimelineTrack
this.deselectTweens();
@@ -339,9 +337,8 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, {
this.hashTrackInstance = null;
this.hashLayerNumber = null;
this.hashElementMapToLayer = null;
- if (!this.boolUpdateLayers) {
-
- }
+ this.arrTracks = [];
+ this.arrLayers = [];
this.currentLayerNumber = 0;
this.currentLayerSelected = false;
@@ -356,6 +353,38 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, {
}
},
+
+ handleOnOpenDocument:{
+ value:function(){
+
+ this._boolCacheArrays = false;
+ this.clearTimelinePanel();
+ this._boolCacheArrays = true;
+ this._bindDocumentEvents();
+
+ this.hashInstance = this.createLayerHashTable();
+ this.hashTrackInstance = this.createTrackHashTable();
+ this.hashLayerNumber = this.createLayerNumberHash();
+ this.hashElementMapToLayer = this.createElementMapToLayer();
+ this.initTimelineForDocument();
+
+
+ }
+ },
+
+ handleCloseDocument: {
+ value: function(event) {
+ this.clearTimelinePanel();
+ }
+ },
+
+ handleSwitchDocument : {
+ value: function(event) {
+ // Handle document change.
+ this.handleOnOpenDocument();
+ }
+ },
+
updateTrackContainerWidth:{
value: function(){
this.container_tracks.style.width = (this.end_hottext.value * 80) + "px";
@@ -440,6 +469,7 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, {
handleDeleteLayerClick:{
value:function (event) {
+ console.log('handleDeleteLayerClick called')
if (this.arrLayers.length === 1) {
// do not delete last layer
return;
--
cgit v1.2.3
From a725643eba157b3c37d9acd13c6fdd48379bb0df Mon Sep 17 00:00:00 2001
From: Jon Reid
Date: Thu, 1 Mar 2012 10:38:47 -0800
Subject: Timeline: Merge. Set collapser heights.
---
.../Timeline/TimelinePanel.reel/TimelinePanel.js | 47 ++++++++++++++++++----
1 file changed, 39 insertions(+), 8 deletions(-)
(limited to 'js/panels/Timeline/TimelinePanel.reel')
diff --git a/js/panels/Timeline/TimelinePanel.reel/TimelinePanel.js b/js/panels/Timeline/TimelinePanel.reel/TimelinePanel.js
index ec9555fe..59306705 100644
--- a/js/panels/Timeline/TimelinePanel.reel/TimelinePanel.js
+++ b/js/panels/Timeline/TimelinePanel.reel/TimelinePanel.js
@@ -47,9 +47,9 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, {
_cacheArrays : {
value: function() {
// Cache this.arrLayers and this.arrTracks.
- console.log('cacheArrays ' + this._boolCacheArrays)
+ this.log('cacheArrays ' + this._boolCacheArrays)
if (this._boolCacheArrays) {
- console.log('caching arrays for ', this.application.ninja.currentDocument.name);
+ this.log('caching arrays for ', this.application.ninja.currentDocument.name);
this.application.ninja.currentDocument.tlArrLayers = this.arrLayers;
this.application.ninja.currentDocument.tlArrTracks = this.arrTracks;
}
@@ -264,7 +264,7 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, {
// Check to see if we have saved timeline information in the currentDocument.
if (typeof(this.application.ninja.currentDocument.isTimelineInitialized) === "undefined") {
// No, we have no information stored. Create it.
- console.log('newfile ' + this.application.ninja.currentDocument.name)
+ this.log('newfile ' + this.application.ninja.currentDocument.name)
this.application.ninja.currentDocument.isTimelineInitialized = true;
this.application.ninja.currentDocument.tlArrLayers = [];
this.application.ninja.currentDocument.tlArrTracks = [];
@@ -281,7 +281,7 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, {
this._openDoc=true;
NJevent('newLayer',{key:this._hashKey,ele:this.application.ninja.currentDocument.documentRoot.children[myIndex]})
myIndex++;
- k }
+ }
}
else{
NJevent('newLayer', this._hashKey);
@@ -300,7 +300,7 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, {
} else {
// we do have information stored. Use it.
- console.log('oldfile ' + this.application.ninja.currentDocument.name)
+ this.log('oldfile ' + this.application.ninja.currentDocument.name)
this._boolCacheArrays = false;
this.arrLayers = [];
this.arrTracks = [];
@@ -469,7 +469,7 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, {
handleDeleteLayerClick:{
value:function (event) {
- console.log('handleDeleteLayerClick called')
+ this.log('handleDeleteLayerClick called')
if (this.arrLayers.length === 1) {
// do not delete last layer
return;
@@ -795,7 +795,7 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, {
if(this.currentLayerSelected.elementsList[0]!==undefined){
if(this.currentTrackSelected.isTrackAnimated){
this.application.ninja.stage.clearDrawingCanvas();
- console.log("cannot add elements to a layer with animated element");
+ this.log("cannot add elements to a layer with animated element");
return;
}else{
this.hashElementMapToLayer.setItem(event.detail.uuid, event.detail,this.currentLayerSelected);
@@ -1167,7 +1167,38 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, {
});
return command;
}
- }
+ },
/* === END: Controllers === */
+
+ /* === BEGIN: Logging routines === */
+ _boolDebug: {
+ enumerable: false,
+ value: false // set to true to enable debugging to console; false for turning off all debugging.
+ },
+ boolDebug: {
+ get: function() {
+ return this._boolDebug;
+ },
+ set: function(boolDebugSwitch) {
+ this._boolDebug = boolDebugSwitch;
+ }
+ },
+ log: {
+ value: function(strMessage) {
+ if (this.boolDebug) {
+ console.log(this.getLineNumber() + ": " + strMessage);
+ }
+ }
+ },
+ getLineNumber: {
+ value: function() {
+ try {
+ throw new Error('bazinga')
+ }catch(e){
+ return e.stack.split("at")[3].split(":")[2];
+ }
+ }
+ }
+ /* === END: Logging routines === */
});
--
cgit v1.2.3
From 205d869d94005cb214fd838879d4f5e81d763311 Mon Sep 17 00:00:00 2001
From: Jon Reid
Date: Thu, 1 Mar 2012 18:01:08 -0800
Subject: Timeline: Merge arrlayers and arrtracks into one object. Redefine
collapser to use property binding instead of events.
---
.../Timeline/TimelinePanel.reel/TimelinePanel.html | 19 +++++++++-
.../Timeline/TimelinePanel.reel/TimelinePanel.js | 43 ++++++++++++++++------
2 files changed, 49 insertions(+), 13 deletions(-)
(limited to 'js/panels/Timeline/TimelinePanel.reel')
diff --git a/js/panels/Timeline/TimelinePanel.reel/TimelinePanel.html b/js/panels/Timeline/TimelinePanel.reel/TimelinePanel.html
index 92adee05..77481ac0 100644
--- a/js/panels/Timeline/TimelinePanel.reel/TimelinePanel.html
+++ b/js/panels/Timeline/TimelinePanel.reel/TimelinePanel.html
@@ -101,6 +101,11 @@
"boundObjectPropertyPath" : "objectAtCurrentIteration.isTransformCollapsed",
"oneway" : false
},
+ "animateCollapser" : {
+ "boundObject" : {"@" : "repetition1"},
+ "boundObjectPropertyPath" : "objectAtCurrentIteration.animateCollapser",
+ "oneway" : false
+ },
"isSelected" : {
"boundObject" : {"@" : "repetition1"},
"boundObjectPropertyPath" : "objectAtCurrentIteration.isSelected",
@@ -116,6 +121,11 @@
"boundObjectPropertyPath" : "objectAtCurrentIteration.isStyleCollapsed",
"oneway" : false
},
+ "animateCollapser" : {
+ "boundObject" : {"@" : "repetition1"},
+ "boundObjectPropertyPath" : "objectAtCurrentIteration.animateCollapser",
+ "oneway" : false
+ },
"dtextPositionX" : {
"boundObject" : {"@" : "repetition1"},
"boundObjectPropertyPath" : "objectAtCurrentIteration.dtextPositionX",
@@ -164,7 +174,7 @@
"bindings": {
"objects": {
"boundObject": {"@": "owner"},
- "boundObjectPropertyPath": "arrTracks",
+ "boundObjectPropertyPath": "arrLayers",
"oneway": false
}
}
@@ -178,7 +188,7 @@
"bindings" : {
"trackID" : {
"boundObject" : {"@" : "repetition2"},
- "boundObjectPropertyPath" : "objectAtCurrentIteration.trackID",
+ "boundObjectPropertyPath" : "objectAtCurrentIteration.layerID",
"oneway" : false
},
"tweens" : {
@@ -231,6 +241,11 @@
"boundObjectPropertyPath" : "objectAtCurrentIteration.isTransformCollapsed",
"oneway" : false
},
+ "animateCollapser" : {
+ "boundObject" : {"@" : "repetition2"},
+ "boundObjectPropertyPath" : "objectAtCurrentIteration.animateCollapser",
+ "oneway" : false
+ },
"isStyleCollapsed" : {
"boundObject" : {"@" : "repetition2"},
"boundObjectPropertyPath" : "objectAtCurrentIteration.isStyleCollapsed",
diff --git a/js/panels/Timeline/TimelinePanel.reel/TimelinePanel.js b/js/panels/Timeline/TimelinePanel.reel/TimelinePanel.js
index 59306705..49f044d7 100644
--- a/js/panels/Timeline/TimelinePanel.reel/TimelinePanel.js
+++ b/js/panels/Timeline/TimelinePanel.reel/TimelinePanel.js
@@ -47,11 +47,11 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, {
_cacheArrays : {
value: function() {
// Cache this.arrLayers and this.arrTracks.
- this.log('cacheArrays ' + this._boolCacheArrays)
+ //this.log('cacheArrays ' + this._boolCacheArrays)
if (this._boolCacheArrays) {
- this.log('caching arrays for ', this.application.ninja.currentDocument.name);
+ //this.log('caching arrays for ', this.application.ninja.currentDocument.name);
this.application.ninja.currentDocument.tlArrLayers = this.arrLayers;
- this.application.ninja.currentDocument.tlArrTracks = this.arrTracks;
+ //this.application.ninja.currentDocument.tlArrTracks = this.arrTracks;
}
}
},
@@ -530,6 +530,8 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, {
while (layerResult = this.returnedObject[hashIndex]) {
trackResult = this.returnedTrack[hashIndex];
if (layerResult.deleted !== true) {
+
+ // TODO: Help from Kruti
this.arrTracks.push(trackResult);
this.arrLayers.push(layerResult);
@@ -545,6 +547,8 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, {
while (dLayer[hashVariable]) {
if (dLayer[hashVariable]._layerID === event.detail._el._layerID) {
dLayer[hashVariable].deleted = false;
+
+ // TODO: Help from Kruti
this.arrTracks.splice(event.detail._layerPosition, 0, event.detail._track);
this.arrLayers.splice(event.detail._layerPosition, 0, event.detail._el);
this.selectLayer(event.detail._layerPosition);
@@ -572,6 +576,8 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, {
while (dLayer[hashVariable]) {
if (dLayer[hashVariable]._layerID === event.detail._el._layerID) {
dLayer[hashVariable].deleted = false;
+
+ // TODO: Help from Kruti
this.arrTracks.splice(event.detail._layerPosition, 0, event.detail._track);
this.arrLayers.splice(event.detail._layerPosition, 0, event.detail._el);
this.selectLayer(event.detail._layerPosition);
@@ -608,6 +614,11 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, {
thingToPush.deleted = false;
thingToPush.isSelected = false;
thingToPush.created=false;
+ thingToPush.isTrackAnimated = false;
+ thingToPush.currentKeyframeRule = null;
+ thingToPush.trackPosition = 0;
+ thingToPush.arrStyleTracks = [];
+ thingToPush.tweens = [];
if (_firstLayerDraw) {
this.application.ninja.currentSelectedContainer.uuid=this._hashKey;
@@ -619,7 +630,7 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, {
event.detail.ele.uuid =nj.generateRandom();
thingToPush.elementsList.push(event.detail.ele);
}
-
+ /*
newTrack.trackID = this.currentLayerNumber;
newTrack.isMainCollapsed = true;
newTrack.isPositionCollapsed = true;
@@ -630,6 +641,7 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, {
newTrack.trackPosition = 0;
newTrack.arrStyleTracks = [];
newTrack.tweens = [];
+ */
if (_firstLayerDraw) {
if (this.application.ninja.currentSelectedContainer.id === "UserContent") {
@@ -643,18 +655,23 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, {
myIndex = this.layerRepetition.selectedIndexes[0];
thingToPush.layerPosition = myIndex;
thingToPush.isSelected = true;
- newTrack.trackPosition = myIndex;
- this.arrTracks.splice(myIndex, 0, newTrack);
+ //newTrack.trackPosition = myIndex;
+ thingToPush.trackPosition = myIndex;
+ //this.arrTracks.splice(myIndex, 0, newTrack);
this.arrLayers.splice(myIndex, 0, thingToPush);
this._LayerUndoPosition = myIndex;
this.selectLayer(myIndex);
this.hashLayerNumber.setItem(this._hashKey, thingToPush);
this.hashInstance.setItem(this._hashKey, thingToPush, myIndex);
+
+ // TODO: Help from Kruti
this.hashTrackInstance.setItem(this._hashKey, newTrack, myIndex);
} else {
- this.arrTracks.splice(0, 0, newTrack);
+ //this.arrTracks.splice(0, 0, newTrack);
this.arrLayers.splice(0, 0, thingToPush);
thingToPush.layerPosition = this.arrLayers.length - 1;
+
+ // TODO: Help from Kruti
newTrack.trackPosition = this.arrTracks.length - 1;