diff options
Diffstat (limited to 'js/panels/Timeline/TimelinePanel.reel/TimelinePanel.js')
-rw-r--r-- | js/panels/Timeline/TimelinePanel.reel/TimelinePanel.js | 722 |
1 files changed, 393 insertions, 329 deletions
diff --git a/js/panels/Timeline/TimelinePanel.reel/TimelinePanel.js b/js/panels/Timeline/TimelinePanel.reel/TimelinePanel.js index 81415951..087bf3cd 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, { | |||
28 | }, | 28 | }, |
29 | set:function (newVal) { | 29 | set:function (newVal) { |
30 | this._arrLayers = newVal; | 30 | this._arrLayers = newVal; |
31 | this.application.ninja.currentDocument.tlArrLayers = newVal; | 31 | this._cacheArrays(); |
32 | } | 32 | } |
33 | }, | 33 | }, |
34 | 34 | ||
@@ -45,6 +45,20 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, { | |||
45 | } | 45 | } |
46 | }, | 46 | }, |
47 | 47 | ||
48 | _cacheArrays : { | ||
49 | value: function() { | ||
50 | if (this._boolCacheArrays) { | ||
51 | this.application.ninja.currentDocument.tlArrLayers = this.arrLayers; | ||
52 | |||
53 | } | ||
54 | } | ||
55 | }, | ||
56 | |||
57 | // Set to false to skip array caching array sets in current document | ||
58 | _boolCacheArrays : { | ||
59 | value: true | ||
60 | }, | ||
61 | |||
48 | _currentLayerNumber:{ | 62 | _currentLayerNumber:{ |
49 | value:0 | 63 | value:0 |
50 | }, | 64 | }, |
@@ -56,15 +70,44 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, { | |||
56 | set:function (newVal) { | 70 | set:function (newVal) { |
57 | if (newVal !== this._currentLayerNumber) { | 71 | if (newVal !== this._currentLayerNumber) { |
58 | this._currentLayerNumber = newVal; | 72 | this._currentLayerNumber = newVal; |
73 | this._setCurrentLayerNumber(); | ||
59 | } | 74 | } |
60 | } | 75 | } |
61 | }, | 76 | }, |
62 | 77 | ||
63 | currentLayerSelected:{ | 78 | _setCurrentLayerNumber:{ |
64 | value: null | 79 | value:function(){ |
80 | if (this._boolCacheArrays) { | ||
81 | this.application.ninja.currentDocument.tllayerNumber = this.currentLayerNumber; | ||
82 | } | ||
83 | } | ||
84 | }, | ||
85 | |||
86 | _hashKey:{ | ||
87 | value:0 | ||
88 | }, | ||
89 | |||
90 | hashKey:{ | ||
91 | get:function () { | ||
92 | return this._hashKey; | ||
93 | }, | ||
94 | set:function (newVal) { | ||
95 | if (newVal !== this._hashKey) { | ||
96 | this._hashKey = newVal; | ||
97 | this._setHashKey(); | ||
98 | } | ||
99 | } | ||
100 | }, | ||
101 | |||
102 | _setHashKey:{ | ||
103 | value:function(){ | ||
104 | if (this._boolCacheArrays) { | ||
105 | this.application.ninja.currentDocument.hashKey = this.hashKey; | ||
106 | } | ||
107 | } | ||
65 | }, | 108 | }, |
66 | 109 | ||
67 | currentTrackSelected:{ | 110 | currentLayerSelected:{ |
68 | value: null | 111 | value: null |
69 | }, | 112 | }, |
70 | 113 | ||
@@ -88,22 +131,6 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, { | |||
88 | } | 131 | } |
89 | }, | 132 | }, |
90 | 133 | ||
91 | _arrTracks:{ | ||
92 | serializable:true, | ||
93 | value:[] | ||
94 | }, | ||
95 | |||
96 | arrTracks:{ | ||
97 | serializable:true, | ||
98 | get:function () { | ||
99 | return this._arrTracks; | ||
100 | }, | ||
101 | set:function (newVal) { | ||
102 | this._arrTracks = newVal; | ||
103 | this.application.ninja.currentDocument.tlArrTracks = newVal; | ||
104 | } | ||
105 | }, | ||
106 | |||
107 | _trackRepetition:{ | 134 | _trackRepetition:{ |
108 | serializable:true, | 135 | serializable:true, |
109 | value:null | 136 | value:null |
@@ -147,6 +174,22 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, { | |||
147 | } | 174 | } |
148 | }, | 175 | }, |
149 | 176 | ||
177 | _breadCrumbContainer:{ | ||
178 | value:null | ||
179 | }, | ||
180 | |||
181 | breadCrumbContainer: { | ||
182 | set: function(value) { | ||
183 | if(this._breadCrumbContainer !== value) { | ||
184 | this._breadCrumbContainer = value; | ||
185 | this.LayerBinding(this.application.ninja.currentSelectedContainer); | ||
186 | } | ||
187 | }, | ||
188 | get: function() { | ||
189 | return this._breadCrumbContainer; | ||
190 | } | ||
191 | }, | ||
192 | |||
150 | _isLayer:{ | 193 | _isLayer:{ |
151 | value:false | 194 | value:false |
152 | }, | 195 | }, |
@@ -165,55 +208,21 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, { | |||
165 | value:false, | 208 | value:false, |
166 | writable:true | 209 | writable:true |
167 | }, | 210 | }, |
211 | |||
168 | timeMarkerHolder:{ | 212 | timeMarkerHolder:{ |
169 | value: null | 213 | value: null |
170 | }, | 214 | }, |
171 | /* === END: Models === */ | 215 | /* === END: Models === */ |
172 | |||
173 | /* === BEGIN: Draw cycle === */ | 216 | /* === BEGIN: Draw cycle === */ |
174 | prepareForDraw:{ | 217 | prepareForDraw:{ |
175 | value:function () { | 218 | value:function () { |
176 | this.initTimeline(); | 219 | this.initTimeline(); |
177 | this.eventManager.addEventListener("onOpenDocument", this, false); | 220 | this.eventManager.addEventListener("onOpenDocument", this, false); |
178 | this.eventManager.addEventListener("closeDocument", this, false); | 221 | this.eventManager.addEventListener("closeDocument", this, false); |
179 | this.eventManager.addEventListener("switchDocument", this, false); | 222 | this.eventManager.addEventListener("switchDocument", this, false); |
180 | } | ||
181 | }, | ||
182 | |||
183 | handleOnOpenDocument:{ | ||
184 | value:function(){ | ||
185 | this.clearTimelinePanel(); | ||
186 | this.eventManager.addEventListener("deleteLayerClick", this, false); | ||
187 | this.eventManager.addEventListener("newLayer", this, false); | ||
188 | this.eventManager.addEventListener("deleteLayer", this, false); | ||
189 | this.eventManager.addEventListener("layerBinding", this, false); | ||
190 | this.eventManager.addEventListener("elementAdded", this, false); | ||
191 | this.eventManager.addEventListener("elementDeleted", this, false); | ||
192 | this.eventManager.addEventListener("deleteSelection", this, false); | ||
193 | this.eventManager.addEventListener("selectionChange", this, true); | ||
194 | this.hashInstance = this.createLayerHashTable(); | ||
195 | this.hashTrackInstance = this.createTrackHashTable(); | ||
196 | this.hashLayerNumber = this.createLayerNumberHash(); | ||
197 | this.hashElementMapToLayer = this.createElementMapToLayer(); | ||
198 | this.initTimelineView(); | ||
199 | |||
200 | |||
201 | } | 223 | } |
202 | }, | 224 | }, |
203 | 225 | ||
204 | handleCloseDocument: { | ||
205 | value: function(event) { | ||
206 | this.clearTimelinePanel(); | ||
207 | } | ||
208 | }, | ||
209 | |||
210 | handleSwitchDocument : { | ||
211 | value: function(event) { | ||
212 | // Handle document change. | ||
213 | this.handleOnOpenDocument(); | ||
214 | } | ||
215 | }, | ||
216 | |||
217 | willDraw:{ | 226 | willDraw:{ |
218 | value:function () { | 227 | value:function () { |
219 | if (this._isLayer) { | 228 | if (this._isLayer) { |
@@ -223,8 +232,36 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, { | |||
223 | } | 232 | } |
224 | }, | 233 | }, |
225 | /* === END: Draw cycle === */ | 234 | /* === END: Draw cycle === */ |
226 | |||
227 | /* === BEGIN: Controllers === */ | 235 | /* === BEGIN: Controllers === */ |
236 | // Bind all document-specific events (pass in true to unbind) | ||
237 | _bindDocumentEvents : { | ||
238 | value: function(boolUnbind) { | ||
239 | var arrEvents = ["deleteLayerClick", | ||