1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.ui.vaadin.gwt.client.magnoliashell.viewport.animation;
35
36 import info.magnolia.ui.vaadin.gwt.client.jquerywrapper.AnimationSettings;
37 import info.magnolia.ui.vaadin.gwt.client.jquerywrapper.JQueryCallback;
38 import info.magnolia.ui.vaadin.gwt.client.jquerywrapper.JQueryWrapper;
39
40 import com.google.gwt.animation.client.Animation;
41 import com.google.gwt.dom.client.Element;
42
43
44
45
46 public class JQueryAnimation extends Animation {
47
48 private AnimationSettingst/client/jquerywrapper/AnimationSettings.html#AnimationSettings">AnimationSettings settings = new AnimationSettings();
49
50 private JQueryWrapper jQueryWrapper;
51
52 private Element currentElement;
53
54 private boolean isClearTopAfterThisAnimation = false;
55
56 private boolean isCancelled = false;
57
58 public void setProperty(String property, Object value) {
59 settings.setProperty(property, value);
60 }
61
62 public void addCallback(JQueryCallback callback) {
63 settings.addCallback(callback);
64 }
65
66 public void clearTopAfterThisAnimation() {
67 isClearTopAfterThisAnimation = true;
68 }
69
70 public JQueryAnimation() {
71 addCallback(new JQueryCallback() {
72 @Override
73 public void execute(JQueryWrapper query) {
74 query.setCss("transition", "");
75 query.setCss("transform", "");
76
77 getJQueryWrapper().setCss("-webkit-transform", "");
78 getJQueryWrapper().setCss("-webkit-transition", "");
79
80 if (isClearTopAfterThisAnimation) {
81 currentElement.getStyle().clearTop();
82 }
83 isClearTopAfterThisAnimation = false;
84 onComplete();
85 }
86 });
87 }
88
89 @Override
90 public void run(int duration, double startTime, Element element) {
91 this.currentElement = element;
92 this.jQueryWrapper = null;
93 cancel();
94 onStart();
95 getJQueryWrapper().animate(duration, settings);
96 }
97
98 protected JQueryWrapper getJQueryWrapper() {
99 if (jQueryWrapper == null) {
100 jQueryWrapper = JQueryWrapper.select((com.google.gwt.user.client.Element)currentElement);
101 }
102 return jQueryWrapper;
103 }
104
105 @Override
106 protected void onUpdate(double progress) {}
107
108 @Override
109 public void cancel() {
110 getJQueryWrapper().stop();
111 this.isCancelled = true;
112 onComplete();
113 }
114
115 @Override
116 protected void onStart() {
117 super.onStart();
118 this.isCancelled = false;
119 }
120
121 @Override
122 protected void onComplete() {
123 }
124
125 @Override
126 public boolean isRunning() {
127 return getJQueryWrapper().isAnimationInProgress();
128 }
129
130 public Element getCurrentElement() {
131 return currentElement;
132 }
133
134 public AnimationSettings getSettings() {
135 return settings;
136 }
137
138
139 public boolean isCancelled() {
140 return isCancelled;
141 }
142 }