1 goog.provide('lime.transitions.MoveInDown');
  2 
  3 goog.provide('lime.transitions.MoveInLeft');
  4 goog.provide('lime.transitions.MoveInRight');
  5 goog.provide('lime.transitions.MoveInUp');
  6 goog.provide('lime.transitions.SlideIn');
  7 
  8 
  9 goog.provide('lime.transitions.SlideInDown');
 10 goog.provide('lime.transitions.SlideInLeft');
 11 goog.provide('lime.transitions.SlideInRight');
 12 goog.provide('lime.transitions.SlideInUp');
 13 
 14 
 15 goog.require('lime.animation.MoveBy');
 16 goog.require('lime.transitions.Transition');
 17 
 18 /**
 19  * Slide-In transition.
 20  * @param {lime.scene} outgoing Outgoing scene.
 21  * @param {lime.scene} incoming Incoming scene.
 22  * @param {boolean=} opt_movein Use Move-In transition.
 23  * @constructor
 24  * @extends lime.transitions.Transition
 25  */
 26 lime.transitions.SlideIn = function(outgoing, incoming, opt_movein) {
 27     goog.base(this, outgoing, incoming);
 28 
 29     this.mode_ = lime.transitions.SlideIn.Mode.LEFT;
 30 
 31     this.movein_ = opt_movein || false;
 32 
 33 };
 34 goog.inherits(lime.transitions.SlideIn, lime.transitions.Transition);
 35 
 36 
 37 /**
 38  * Enum for different animation directions.
 39  * @enum {number}
 40  */
 41 lime.transitions.SlideIn.Mode = {
 42   LEFT: 0,
 43   UP: 1,
 44   RIGHT: 2,
 45   DOWN: 4
 46 };
 47 
 48 /** @inheritDoc */
 49 lime.transitions.SlideIn.prototype.start = function() {
 50     var size = this.incoming_.getSize();
 51     var delta = new goog.math.Coordinate(0, 0);
 52 
 53     switch (this.mode_) {
 54         case lime.transitions.SlideIn.Mode.LEFT:
 55             this.incoming_.setPosition(-size.width, 0);
 56             delta.x = size.width;
 57         break;
 58 
 59         case lime.transitions.SlideIn.Mode.UP:
 60             this.incoming_.setPosition(0, -size.height);
 61             delta.y = size.height;
 62         break;
 63 
 64         case lime.transitions.SlideIn.Mode.RIGHT:
 65             this.incoming_.setPosition(size.width, 0);
 66             delta.x = -size.width;
 67         break;
 68 
 69         case lime.transitions.SlideIn.Mode.DOWN:
 70             this.incoming_.setPosition(0, size.height);
 71             delta.y = -size.height;
 72         break;
 73     }
 74     this.incoming_.setHidden(false);
 75 
 76     var move = new lime.animation.MoveBy(delta).
 77             setDuration(this.getDuration());
 78 
 79     if (this.outgoing_ && !this.movein_) move.addTarget(this.outgoing_);
 80 
 81     move.addTarget(this.incoming_);
 82 
 83     goog.events.listen(move, lime.animation.Event.STOP,
 84         this.finish, false, this);
 85 
 86     move.play();
 87 };
 88 
 89 /** @inheritDoc */
 90 lime.transitions.SlideIn.prototype.finish = function() {
 91     if (this.outgoing_)
 92         this.outgoing_.setPosition(0, 0);
 93 
 94     lime.transitions.Transition.prototype.finish.call(this);
 95 };
 96 
 97 /**
 98  * Set the mode for transition. Mode defines the animation direction.
 99  * @param {lime.transitions.SlideIn.Mode} value New mode.
100  * @return {lime.transitions.SlideIn} object itself.
101  */
102 lime.transitions.SlideIn.prototype.setMode = function(value) {
103     this.mode_ = value;
104     return this;
105 };
106 
107 
108 /**
109  * @inheritDoc
110  * @extends lime.transitions.SlideIn
111  */
112 lime.transitions.SlideInLeft = lime.transitions.SlideIn;
113 
114 /**
115  * @inheritDoc
116  * @constructor
117  * @extends lime.transitions.SlideIn
118  */
119 lime.transitions.SlideInUp = function(outgoing, incoming) {
120     goog.base(this, outgoing, incoming);
121 
122     this.setMode(lime.transitions.SlideIn.Mode.UP);
123 };
124 goog.inherits(lime.transitions.SlideInUp, lime.transitions.SlideIn);
125 
126 /**
127  * @inheritDoc
128  * @constructor
129  * @extends lime.transitions.SlideIn
130  */
131 lime.transitions.SlideInRight = function(outgoing, incoming) {
132     goog.base(this, outgoing, incoming);
133 
134     this.setMode(lime.transitions.SlideIn.Mode.RIGHT);
135 };
136 goog.inherits(lime.transitions.SlideInRight, lime.transitions.SlideIn);
137 
138 /**
139  * @inheritDoc
140  * @constructor
141  * @extends lime.transitions.SlideIn
142  */
143 lime.transitions.SlideInDown = function(outgoing, incoming) {
144     goog.base(this, outgoing, incoming);
145 
146     this.setMode(lime.transitions.SlideIn.Mode.DOWN);
147 };
148 goog.inherits(lime.transitions.SlideInDown, lime.transitions.SlideIn);
149 
150 
151 
152 
153 /**
154  * Move-In transition. Difference form slide-in is that outgoing scene
155  * does not move.
156  * @inheritDoc
157  * @constructor
158  * @extends lime.transitions.SlideInLeft
159  */
160 lime.transitions.MoveInLeft = function(outgoing, incoming) {
161     goog.base(this, outgoing, incoming, true);
162 };
163 goog.inherits(lime.transitions.MoveInLeft, lime.transitions.SlideInLeft);
164 
165 /**
166  * @inheritDoc
167  * @constructor
168  * @extends lime.transitions.SlideInUp
169  */
170 lime.transitions.MoveInUp = function(outgoing, incoming) {
171     goog.base(this, outgoing, incoming, true);
172 };
173 goog.inherits(lime.transitions.MoveInUp, lime.transitions.SlideInUp);
174 
175 /**
176  * @inheritDoc
177  * @constructor
178  * @extends lime.transitions.SlideInRight
179  */
180 lime.transitions.MoveInRight = function(outgoing, incoming) {
181     goog.base(this, outgoing, incoming, true);
182 };
183 goog.inherits(lime.transitions.MoveInRight, lime.transitions.SlideInRight);
184 
185 /**
186  * @inheritDoc
187  * @constructor
188  * @extends lime.transitions.SlideInDown
189  */
190 lime.transitions.MoveInDown = function(outgoing, incoming) {
191     goog.base(this, outgoing, incoming, true);
192 };
193 goog.inherits(lime.transitions.MoveInDown, lime.transitions.SlideInDown);
194 
195 
196 
197 
198