diff options
Diffstat (limited to 'js/panels/Timeline/TimelinePanel.reel')
-rw-r--r-- | js/panels/Timeline/TimelinePanel.reel/TimelinePanel.js | 161 |
1 files changed, 90 insertions, 71 deletions
diff --git a/js/panels/Timeline/TimelinePanel.reel/TimelinePanel.js b/js/panels/Timeline/TimelinePanel.reel/TimelinePanel.js index c55e5a24..d7329ac7 100644 --- a/js/panels/Timeline/TimelinePanel.reel/TimelinePanel.js +++ b/js/panels/Timeline/TimelinePanel.reel/TimelinePanel.js | |||
@@ -15,6 +15,76 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, { | |||
15 | }, | 15 | }, |
16 | 16 | ||
17 | /* === BEGIN: Models === */ | 17 | /* === BEGIN: Models === */ |
18 | _currentDocument: { | ||
19 | value : null | ||
20 | }, | ||
21 | |||
22 | currentDocument : { | ||
23 | get : function() { | ||
24 | return this._currentDocument; | ||
25 | }, | ||
26 | set : function(value) { | ||
27 | // If it's the same document, do nothing. | ||
28 | if (value === this._currentDocument) { | ||
29 | return; | ||
30 | } | ||
31 | |||
32 | if(!this._currentDocument && value.currentView === "design") { | ||
33 | this.enablePanel(true); | ||
34 | } | ||
35 | |||
36 | this._currentDocument = value; | ||
37 | |||
38 | if(!value) { | ||
39 | this._boolCacheArrays = false; | ||
40 | this.clearTimelinePanel(); | ||
41 | this._boolCacheArrays = true; | ||
42 | this.enablePanel(false); | ||
43 | } else if(this._currentDocument.currentView === "design") { | ||
44 | this._boolCacheArrays = false; | ||
45 | this.clearTimelinePanel(); | ||
46 | this._boolCacheArrays = true; | ||
47 | |||
48 | // Rebind the document events for the new document context | ||
49 | this._bindDocumentEvents(); | ||
50 | |||
51 | // Initialize the timeline for the document. | ||
52 | this.initTimelineForDocument(); | ||
53 | } | ||
54 | } | ||
55 | }, | ||
56 | |||
57 | _currentSelectedContainer: { | ||
58 | value: null | ||
59 | }, | ||
60 | currentSelectedContainer: { | ||
61 | get: function() { | ||
62 | return this._currentSelectedContainer; | ||
63 | }, | ||
64 | set: function(newVal) { | ||
65 | if(this._currentSelectedContainer !== newVal) { | ||
66 | this._currentSelectedContainer = newVal; | ||
67 | if (this._ignoreNextContainerChange === true) { | ||
68 | this._ignoreNextContainerChange = false; | ||
69 | return; | ||
70 | } | ||
71 | this.application.ninja.currentDocument.setLevel = true; | ||
72 | |||
73 | if(this._currentDocument.currentView === "design") { | ||
74 | this._boolCacheArrays = false; | ||
75 | this.clearTimelinePanel(); | ||
76 | this._boolCacheArrays = true; | ||
77 | |||
78 | // Rebind the document events for the new document context | ||
79 | this._bindDocumentEvents(); | ||
80 | |||
81 | // Initialize the timeline for the document. | ||
82 | this.initTimelineForDocument(); | ||
83 | } | ||
84 | } | ||
85 | } | ||
86 | }, | ||
87 | |||
18 | _arrLayers:{ | 88 | _arrLayers:{ |
19 | value:[] | 89 | value:[] |
20 | }, | 90 | }, |
@@ -135,19 +205,7 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, { | |||
135 | this.cacheTimeline(); | 205 | this.cacheTimeline(); |
136 | } | 206 | } |
137 | }, | 207 | }, |
138 | 208 | ||
139 | _currentSelectedContainer: { | ||
140 | value: null | ||
141 | }, | ||
142 | currentSelectedContainer: { | ||
143 | get: function() { | ||
144 | return this._currentSelectedContainer; | ||
145 | }, | ||
146 | set: function(newVal) { | ||
147 | this._currentSelectedContainer = newVal; | ||
148 | this.handleDocumentChange(); | ||
149 | } | ||
150 | }, | ||
151 | 209 | ||
152 | _millisecondsOffset:{ | 210 | _millisecondsOffset:{ |
153 | value:1000 | 211 | value:1000 |
@@ -233,7 +291,6 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, { | |||
233 | set:function (value) { | 291 | set:function (value) { |
234 | if (this._breadCrumbContainer !== value) { | 292 | if (this._breadCrumbContainer !== value) { |
235 | this._breadCrumbContainer = value; | 293 | this._breadCrumbContainer = value; |
236 | //this.LayerBinding(); | ||
237 | } | 294 | } |
238 | } | 295 | } |
239 | }, | 296 | }, |
@@ -334,12 +391,7 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, { | |||
334 | prepareForDraw:{ | 391 | prepareForDraw:{ |
335 | value:function () { | 392 | value:function () { |
336 | this.initTimeline(); | 393 | this.initTimeline(); |
337 | // Bind the event handler for the document change events | 394 | |
338 | //this.eventManager.addEventListener("onOpenDocument", this.handleDocumentChange.bind(this), false); | ||
339 | this.eventManager.addEventListener("closeDocument", this.handleDocumentChange.bind(this), false); | ||
340 | //this.eventManager.addEventListener("switchDocument", this.handleDocumentChange.bind(this), false); | ||
341 | //this.eventManager.addEventListener("breadCrumbBinding",this,false); | ||
342 | |||
343 | // Bind drag and drop event handlers | 395 | // Bind drag and drop event handlers |
344 | this.container_layers.addEventListener("dragstart", this.handleLayerDragStart.bind(this), false); | 396 | this.container_layers.addEventListener("dragstart", this.handleLayerDragStart.bind(this), false); |
345 | this.container_layers.addEventListener("dragend", this.handleLayerDragEnd.bind(this), false); | 397 | this.container_layers.addEventListener("dragend", this.handleLayerDragEnd.bind(this), false); |
@@ -353,6 +405,14 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, { | |||
353 | this.tl_configbutton.addEventListener("click", this.handleConfigButtonClick.bind(this), false); | 405 | this.tl_configbutton.addEventListener("click", this.handleConfigButtonClick.bind(this), false); |
354 | document.addEventListener("click", this.handleDocumentClick.bind(this), false); | 406 | document.addEventListener("click", this.handleDocumentClick.bind(this), false); |
355 | 407 | ||
408 | |||
409 | // Bind some bindings | ||
410 | Object.defineBinding(this, "currentSelectedContainer", { | ||
411 | boundObject:this.application.ninja, | ||
412 | boundObjectPropertyPath:"currentSelectedContainer", | ||
413 | oneway:true | ||
414 | }); | ||
415 | |||
356 | } | 416 | } |
357 | }, | 417 | }, |
358 | 418 | ||
@@ -559,14 +619,7 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, { | |||
559 | this.playhead.addEventListener("mousedown", this.startPlayheadTracking.bind(this), false); | 619 | this.playhead.addEventListener("mousedown", this.startPlayheadTracking.bind(this), false); |
560 | this.playhead.addEventListener("mouseup", this.stopPlayheadTracking.bind(this), false); | 620 | this.playhead.addEventListener("mouseup", this.stopPlayheadTracking.bind(this), false); |
561 | this.time_markers.addEventListener("click", this.updatePlayhead.bind(this), false); | 621 | this.time_markers.addEventListener("click", this.updatePlayhead.bind(this), false); |
562 | 622 | ||
563 | // Bind some bindings | ||
564 | Object.defineBinding(this, "currentSelectedContainer", { | ||
565 | boundObject:this.application.ninja, | ||
566 | boundObjectPropertyPath:"currentSelectedContainer", | ||
567 | oneway:true | ||
568 | }); | ||
569 | |||
570 | // Start the panel out in disabled mode by default | 623 | // Start the panel out in disabled mode by default |
571 | // (Will be switched on later, if appropriate). | 624 | // (Will be switched on later, if appropriate). |
572 | this.enablePanel(false); | 625 | this.enablePanel(false); |
@@ -576,17 +629,17 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, { | |||
576 | 629 | ||
577 | // Initialize the timeline for a document. | 630 | // Initialize the timeline for a document. |
578 | // Called when a document is opened (new or existing), or when documents are switched. | 631 | // Called when a document is opened (new or existing), or when documents are switched. |
632 | _ignoreNextContainerChange: { | ||
633 | value: true | ||
634 | }, | ||
579 | initTimelineForDocument:{ | 635 | initTimelineForDocument:{ |
580 | value:function () { | 636 | value:function () { |
581 | 637 | var myIndex; | |
582 | |||
583 | var myIndex, | ||
584 | boolAlreadyInitialized = false; | ||
585 | this.drawTimeMarkers(); | 638 | this.drawTimeMarkers(); |
586 | // Document switching | 639 | // Document switching |
587 | // Check to see if we have saved timeline information in the currentDocument. | 640 | // Check to see if we have saved timeline information in the currentDocument. |
588 | if ((typeof(this.application.ninja.currentDocument.isTimelineInitialized) === "undefined")) { | 641 | if ((typeof(this.application.ninja.currentDocument.isTimelineInitialized) === "undefined")) { |
589 | //console.log('TimelinePanel.initTimelineForDocument: new Document'); | 642 | // console.log('TimelinePanel.initTimelineForDocument: new Document'); |
590 | // No, we have no information stored. | 643 | // No, we have no information stored. |
591 | // This could mean we are creating a new file, OR are opening an existing file. | 644 | // This could mean we are creating a new file, OR are opening an existing file. |
592 | 645 | ||
@@ -610,10 +663,10 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, { | |||
610 | // Draw the repetition. | 663 | // Draw the repetition. |
611 | this.arrLayers = this.temparrLayers; | 664 | this.arrLayers = this.temparrLayers; |
612 | this.currentLayerNumber = this.arrLayers.length; | 665 | this.currentLayerNumber = this.arrLayers.length; |
613 | boolAlreadyInitialized = true; | 666 | this._ignoreNextContainerChange = true; |
614 | 667 | ||
615 | } else if (this.application.ninja.currentDocument.setLevel) { | 668 | } else if (this.application.ninja.currentDocument.setLevel) { |
616 | //console.log('TimelinePanel.initTimelineForDocument: breadCrumbClick'); | 669 | // console.log('TimelinePanel.initTimelineForDocument: breadCrumbClick'); |
617 | // Information stored, but we're moving up or down in the breadcrumb. | 670 | // Information stored, but we're moving up or down in the breadcrumb. |
618 | // Get the current selection and restore timeline info for its children. | 671 |