aboutsummaryrefslogtreecommitdiff
path: root/js/ninja.reel
diff options
context:
space:
mode:
Diffstat (limited to 'js/ninja.reel')
-rwxr-xr-xjs/ninja.reel/ninja.html107
-rwxr-xr-xjs/ninja.reel/ninja.js139
2 files changed, 217 insertions, 29 deletions
diff --git a/js/ninja.reel/ninja.html b/js/ninja.reel/ninja.html
index f9e1efdd..ead7f576 100755
--- a/js/ninja.reel/ninja.html
+++ b/js/ninja.reel/ninja.html
@@ -77,34 +77,83 @@
77 "name": "Splitter", 77 "name": "Splitter",
78 "properties": { 78 "properties": {
79 "element": {"#": "bottomSplitter"}, 79 "element": {"#": "bottomSplitter"},
80 "panel": {"#": "bottomPanelContainer"}, 80 "panel": {"@": "timeline"}
81 "resizeBar": {"#": "timelineResizer"}
82 } 81 }
83 }, 82 },
84 83
85 "resizer1": { 84 "resizer1": {
86 "module": "js/panels/Resizer", 85 "module": "js/panels/resize-composer",
87 "name": "Resizer", 86 "name": "ResizeComposer",
88 "properties": { 87 "properties": {
89 "element": {"#": "rightPanelResizer"}, 88 "element": {"#": "rightPanelResizer"},
90 "id": "rightPanelResizer", 89 "component": {"@": "owner"},
91 "panel": {"#": "rightPanelContainer"}, 90 "yAxis": false
92 "isVertical": false, 91 },
93 "redrawStage": true 92 "listeners": [
94 } 93 {
94 "type": "resizeStart",
95 "listener": {"@": "owner"}
96 },
97 {
98 "type": "resizeMove",
99 "listener": {"@": "owner"}
100 },
101 {
102 "type": "resizeEnd",
103 "listener": {"@": "owner"}
104 }
105 ]
95 }, 106 },
96 107
97 "resizer2": { 108 "resizer2": {
98 "module": "js/panels/Resizer", 109 "module": "js/panels/resize-composer",
99 "name": "Resizer", 110 "name": "ResizeComposer",
100 "properties": { 111 "properties": {
101 "element": {"#": "timelineResizer"}, 112 "element": {"#": "timelineResizer"},
102 "id": "timelineResizer", 113 "component": {"@": "owner"},
103 "panel": {"#": "bottomPanelContainer"}, 114 "xAxis": false
104 "isVertical": true, 115 },
105 "isInversed": true, 116 "listeners": [
106 "redrawStage": true 117 {
107 } 118 "type": "resizeStart",
119 "listener": {"@": "owner"}
120 },
121 {
122 "type": "resizeMove",
123 "listener": {"@": "owner"}
124 },
125 {
126 "type": "resizeEnd",
127 "listener": {"@": "owner"}
128 }
129 ]
130 },
131
132 "Resizer": {
133 "module": "js/panels/resize-composer",
134 "name": "ResizeComposer",
135 "properties": {
136 "element": {"#": "pasteboardResizer"},
137 "component": {"@": "owner"}
138 },
139 "listeners": [
140 {
141 "type": "resizeStart",
142 "listener": {"@": "owner"}
143 },
144 {
145 "type": "resizeMove",
146 "listener": {"@": "owner"}
147 },
148 {
149 "type": "resizeEnd",
150 "listener": {"@": "owner"}
151 },
152 {
153 "type": "resizeReset",
154 "listener": {"@": "owner"}
155 }
156 ]
108 }, 157 },
109 158
110 "stageMode": { 159 "stageMode": {
@@ -267,6 +316,11 @@
267 "name": "StylesController" 316 "name": "StylesController"
268 }, 317 },
269 318
319 "presetsController": {
320 "module": "js/controllers/presets-controller",
321 "name": "PresetsController"
322 },
323
270 "filePickerController": { 324 "filePickerController": {
271 "module": "js/io/ui/file-picker/file-picker-controller", 325 "module": "js/io/ui/file-picker/file-picker-controller",
272 "name": "FilePickerController" 326 "name": "FilePickerController"
@@ -315,13 +369,17 @@
315 "popupManager": {"@": "popupManager1"}, 369 "popupManager": {"@": "popupManager1"},
316 "colorController": {"@": "colorController1"}, 370 "colorController": {"@": "colorController1"},
317 "stylesController": {"@": "stylesController"}, 371 "stylesController": {"@": "stylesController"},
372 "presetsController": {"@": "presetsController"},
318 "filePickerController": {"@": "filePickerController"}, 373 "filePickerController": {"@": "filePickerController"},
319 "newFileController": {"@": "newFileController"}, 374 "newFileController": {"@": "newFileController"},
320 "coreIoApi": {"@": "coreIoApi1"}, 375 "coreIoApi": {"@": "coreIoApi1"},
321 "documentBar": {"@": "documentBar"}, 376 "documentBar": {"@": "documentBar"},
322 "ioMediator": {"@": "ioMediator"}, 377 "ioMediator": {"@": "ioMediator"},
323 "timeline": {"@": "timeline"}, 378 "timeline": {"@": "timeline"},
324 "mainMenuController": {"@": "mainMenuController"} 379 "mainMenuController": {"@": "mainMenuController"},
380 "rightPanelContainer": {"#": "rightPanelContainer" },
381 "panelSplitter": {"@": "splitter3"},
382 "timelineSplitter": {"@": "splitter4"}
325 } 383 }
326 } 384 }
327 } 385 }
@@ -374,7 +432,9 @@
374 <section id="mainContent"> 432 <section id="mainContent">
375 <section id="rulerLeft"></section> 433 <section id="rulerLeft"></section>
376 <section id="stageAndScenesContainer"></section> 434 <section id="stageAndScenesContainer"></section>
435 <section id="pasteboardResizer" class="pasteboardResizer resizeBar"></section>
377 </section> 436 </section>
437 <section id="timelineResizer" class="timelineResizer resizeBar"></section>
378 <section id="stateBar"> 438 <section id="stateBar">
379 <section id="documentBarContainer"> 439 <section id="documentBarContainer">
380 <div id="documentBar" class="documentBar"><a href="#">HTML</a></div> 440 <div id="documentBar" class="documentBar"><a href="#">HTML</a></div>
@@ -382,20 +442,13 @@
382 </section> 442 </section>
383 443
384 <section id="breadCrumbComponent"></section> 444 <section id="breadCrumbComponent"></section>
385 445 <div id="timelinePanelComponent" data-montage-id="timelinePanel" class="timelinePanel"></div>
386 <section id="timelineResizer" class="timelineResizer resizeBar"></section>
387
388 <section id="bottomPanelContainer" class="panelContainer">
389 <section id="timelinePanel" class="panel">
390 <div id="timelinePanelComponent"></div>
391 </section>
392 </section>
393 </section> 446 </section>
394 </section> 447 </section>
395 448
396 <section data-montage-id="rightPanelResizer" class="rightPanelResizer resizeBar"></section> 449 <section data-montage-id="rightPanelResizer" class="rightPanelResizer resizeBar"></section>
397 450
398 <section id="rightPanelContainer" class="rightPanelContainer panelContainer"> 451 <section id="rightPanelContainer" data-montage-id="rightPanelContainer" class="rightPanelContainer panelContainer">
399 <section id="rightPanelContent" class="rightPanelContent"> 452 <section id="rightPanelContent" class="rightPanelContent">
400 </section> 453 </section>
401 </section> 454 </section>
diff --git a/js/ninja.reel/ninja.js b/js/ninja.reel/ninja.js
index c76c7d46..9b5081dd 100755
--- a/js/ninja.reel/ninja.js
+++ b/js/ninja.reel/ninja.js
@@ -6,6 +6,7 @@
6 6
7var Montage = require("montage/core/core").Montage, 7var Montage = require("montage/core/core").Montage,
8 Component = require("montage/ui/component").Component, 8 Component = require("montage/ui/component").Component,
9 UndoManager = require("montage/core/undo-manager").UndoManager,
9 AppData = require("js/data/appdata").AppData; 10 AppData = require("js/data/appdata").AppData;
10 11
11var matrix = require("js/lib/math/matrix"); 12var matrix = require("js/lib/math/matrix");
@@ -23,6 +24,113 @@ exports.Ninja = Montage.create(Component, {
23 value: null 24 value: null
24 }, 25 },
25 26
27 _isResizing: {
28 value: null
29 },
30 _resizedHeight : {
31 value: 0
32 },
33 _height: {
34 value: null
35 },
36
37 height: {
38 get: function() {
39 if(this._height === null) {
40 var storedData = this.application.localStorage.getItem("timelinePanel");
41 if(storedData && storedData.value) {
42 this._height = storedData.value;
43 }
44 }
45 return this._height;
46 },
47 set: function(val) {
48 if(this._height != val) {
49 this._height = val;
50 this.application.localStorage.setItem("timelinePanel", {"version": this.version, "value": val});
51 this.needsDraw = true;
52 }
53
54 }
55 },
56
57 _resizedWidth : {
58 value: 0
59 },
60 _width: {
61 value: null
62 },
63
64 width: {
65 get: function() {
66 if(this._w