diff options
Diffstat (limited to 'js/panels/Timeline/EasingMenu.reel')
-rw-r--r-- | js/panels/Timeline/EasingMenu.reel/EasingMenu.html | 34 | ||||
-rw-r--r-- | js/panels/Timeline/EasingMenu.reel/EasingMenu.js | 161 | ||||
-rw-r--r-- | js/panels/Timeline/EasingMenu.reel/css/EasingMenu.css | 86 | ||||
-rw-r--r-- | js/panels/Timeline/EasingMenu.reel/scss/EasingMenu.scss | 85 | ||||
-rw-r--r-- | js/panels/Timeline/EasingMenu.reel/scss/config.rb | 9 |
5 files changed, 375 insertions, 0 deletions
diff --git a/js/panels/Timeline/EasingMenu.reel/EasingMenu.html b/js/panels/Timeline/EasingMenu.reel/EasingMenu.html new file mode 100644 index 00000000..82218b45 --- /dev/null +++ b/js/panels/Timeline/EasingMenu.reel/EasingMenu.html | |||
@@ -0,0 +1,34 @@ | |||
1 | <!DOCTYPE html> | ||
2 | <!-- <copyright> | ||
3 | This file contains proprietary software owned by Motorola Mobility, Inc.<br/> | ||
4 | No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.<br/> | ||
5 | (c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved. | ||
6 | </copyright> --> | ||
7 | <html lang="en"> | ||
8 | <head> | ||
9 | <meta http-equiv="content-type" content="text/html; charset=utf-8" /> | ||
10 | <link rel="stylesheet" type="text/css" href="css/EasingMenu.css"> | ||
11 | <script type="text/montage-serialization"> | ||
12 | { | ||
13 | "owner": { | ||
14 | "prototype": "js/panels/Timeline/EasingMenu.reel", | ||
15 | "properties": { | ||
16 | "element": {"#": "container-easing-menu"} | ||
17 | |||
18 | } | ||
19 | } | ||
20 | } | ||
21 | </script> | ||
22 | </head> | ||
23 | <body> | ||
24 | <div data-montage-id="container-easing-menu" class="container-easing-choices"> | ||
25 | <ul data-montage-id="easing_choices" class="easing-choices"> | ||
26 | <li data-ninja-ease="ease">ease</li> | ||
27 | <li data-ninja-ease="ease-out" class="easing-selected">ease-out</li> | ||
28 | <li data-ninja-ease="ease-in">ease-in</li> | ||
29 | <li data-ninja-ease="ease-in-out">ease-in-out</li> | ||
30 | <li data-ninja-ease="linear">linear</li> | ||
31 | </ul> | ||
32 | </div> | ||
33 | </body> | ||
34 | </html> \ No newline at end of file | ||
diff --git a/js/panels/Timeline/EasingMenu.reel/EasingMenu.js b/js/panels/Timeline/EasingMenu.reel/EasingMenu.js new file mode 100644 index 00000000..006efd69 --- /dev/null +++ b/js/panels/Timeline/EasingMenu.reel/EasingMenu.js | |||
@@ -0,0 +1,161 @@ | |||
1 | /* <copyright> | ||
2 | This file contains proprietary software owned by Motorola Mobility, Inc.<br/> | ||
3 | No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.<br/> | ||
4 | (c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved. | ||
5 | </copyright> */ | ||
6 | |||
7 | var Montage = require("montage/core/core").Montage, | ||
8 | Component = require("montage/ui/component").Component, | ||
9 | Popup = require("montage/ui/popup/popup.reel").Popup; | ||
10 | |||
11 | var EasingMenu = exports.EasingMenu = Montage.create(Component, { | ||
12 | |||
13 | hasTemplate:{ | ||
14 | value: true | ||
15 | }, | ||
16 | |||
17 | /* Begin: Models */ | ||
18 | |||
19 | // popup: the initialized component. | ||
20 | _popup: { | ||
21 | value: null | ||
22 | }, | ||
23 | popup: { | ||
24 | get: function() { | ||
25 | return this._popup; | ||
26 | }, | ||
27 | set: function(newVal) { | ||
28 | this._popup = newVal | ||
29 | } | ||
30 | }, | ||
31 | |||
32 | // callingComponent: pointer to the span that called for the menu | ||
33 | _callingComponent: { | ||
34 | value: null | ||
35 | }, | ||
36 | callingComponent: { | ||
37 | get: function() { | ||
38 | return this._callingComponent; | ||
39 | }, | ||
40 | set: function(newVal) { | ||
41 | this._callingComponent = newVal; | ||
42 | } | ||
43 | }, | ||
44 | |||
45 | // anchor: pointer to the anchoring element | ||
46 | _anchor: { | ||
47 | value: null | ||
48 | }, | ||
49 | anchor: { | ||
50 | get: function() { | ||
51 | return this._anchor; | ||
52 | }, | ||
53 | set: function(newVal) { | ||
54 | this._anchor = newVal; | ||
55 | } | ||
56 | }, | ||
57 | |||
58 | |||
59 | _top: { | ||
60 | value: null | ||
61 | }, | ||
62 | top: { | ||
63 | get: function() { | ||
64 | return this._top; | ||
65 | }, | ||
66 | set: function(newVal) { | ||
67 | this._top = newVal; | ||
68 | } | ||
69 | }, | ||
70 | _left: { | ||
71 | value: null | ||
72 | }, | ||
73 | left: { | ||
74 | get: function() { | ||
75 | return this._left; | ||
76 | }, | ||
77 | set: function(newVal) { | ||
78 | this._left = newVal; | ||
79 | } | ||
80 | }, | ||
81 | |||
82 | // currentChoice: The data attribute of the current choice | ||
83 | _currentChoice: { | ||
84 | value: null | ||
85 | }, | ||
86 | currentChoice: { | ||
87 | get: function() { | ||
88 | return this._currentChoice; | ||
89 | }, | ||
90 | set: function(newVal) { | ||
91 | this._currentChoice = newVal; | ||
92 | } | ||
93 | }, | ||
94 | |||
95 | /* End: Models */ | ||
96 | |||
97 | /* Begin: Draw Cycle */ | ||
98 | willDraw: { | ||
99 | value: function() { | ||
100 | this.element.addEventListener("click", this.handleEasingChoicesClick.bind(this), false); | ||
101 | } | ||
102 | }, | ||
103 | |||
104 | draw: { | ||
105 | value: function() { | ||
106 | // Update the selection classes. | ||
107 | this.element.querySelector(".easing-selected").classList.remove("easing-selected"); | ||
108 | this.element.querySelector('[data-ninja-ease="'+this.currentChoice+'"]').classList.add("easing-selected"); | ||
109 | } | ||
110 | }, | ||
111 | didDraw: { | ||
112 | value: function() { | ||
113 | } | ||
114 | }, | ||
115 | /* End Draw Cycle */ | ||
116 | |||
117 | /* Begin: Controllers */ | ||
118 | show: { | ||
119 | value: function() { | ||
120 | // Initialize the popup if it hasn't already been done | ||
121 | if (this.popup == null) { | ||
122 | this.popup = Popup.create(); | ||
123 | this.popup.modal = false; | ||
124 | this.popup.content = EasingMenu.create(); | ||
125 | } | ||
126 | |||
127 | // Show the popup | ||
128 | this.popup.anchor = this.anchor; | ||
129 | var position = {}; | ||
130 | position.top = this.top; | ||
131 | position.left = this.left; | ||
132 | this.popup.position = position; | ||
133 | this.popup.show(); | ||
134 | |||
135 | |||
136 | |||
137 | |||
138 | |||
139 | // Redraw the content (needed to reflect probable changes in selection from the last time we showed it) | ||
140 | this.popup.content.needsDraw = true; | ||
141 | } | ||
142 | }, | ||
143 | handleEasingChoicesClick: { | ||
144 | value: function(event) { | ||
145 | event.stopPropagation(); | ||
146 | |||
147 | // Un-highlight the old choice and highlight the new choice | ||
148 | this.element.querySelector(".easing-selected").classList.remove("easing-selected"); | ||
149 | event.target.classList.add("easing-selected"); | ||
150 | |||
151 | // Set the easing in the span that called us | ||
152 | this.callingComponent.easing = event.target.dataset.ninjaEase; | ||
153 | |||
154 | // Hide the menu. | ||
155 | this.popup.hide(); | ||
156 | } | ||
157 | } | ||
158 | |||
159 | /* End: Controllers */ | ||
160 | |||
161 | }); | ||
diff --git a/js/panels/Timeline/EasingMenu.reel/css/EasingMenu.css b/js/panels/Timeline/EasingMenu.reel/css/EasingMenu.css new file mode 100644 index 00000000..ec300304 --- /dev/null +++ b/js/panels/Timeline/EasingMenu.reel/css/EasingMenu.css | |||
@@ -0,0 +1,86 @@ | |||
1 | @charset "UTF-8"; | ||
2 | /* <copyright> | ||
3 | This file contains proprietary software owned by Motorola Mobility, Inc.<br/> | ||
4 | No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.<br/> | ||
5 | (c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved. | ||
6 | </copyright> */ | ||
7 | /* Layer.scss | ||
8 | * Main SCSS file for EasingMenu component, compiled by SASS into the file css/EasingMenu.css. | ||
9 | */ | ||
10 | /* | ||
11 | * Easing picker | ||
12 | */ | ||
13 | /* line 26, ../scss/EasingMenu.scss */ | ||
14 | .container-easing-choice { | ||
15 | position: absolute; | ||
16 |