/* * Copyright 2011 cruxframework.org. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package org.cruxframework.crux.core.client.css.transition; import org.cruxframework.crux.core.client.css.transition.Transition.Callback; import org.cruxframework.crux.core.client.css.transition.Transition.TransitionHandler; import com.google.gwt.animation.client.Animation; import com.google.gwt.dom.client.Element; import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.user.client.ui.Widget; /** * @author Thiago da Rosa de Bustamante * */ class UnsupportedTransitionHandler implements TransitionHandler { private Animation animation; @Override public void clearFadeTransitions(Widget widget) { if(widget == null) { return; } widget.getElement().getStyle().setOpacity(1); } @Override public void fade(Widget outWidget, Widget inWidget, int duration, Callback callback) { if(inWidget == null || outWidget == null) { return; } outWidget.getElement().getStyle().setOpacity(0); inWidget.getElement().getStyle().setOpacity(1); if (callback != null) { callback.onTransitionCompleted(); } } @Override public void fadeIn(Widget inWidget, int duration, Callback callback) { if(inWidget == null) { return; } inWidget.getElement().getStyle().setOpacity(1); if (callback != null) { callback.onTransitionCompleted(); } } @Override public void fadeOut(Widget outWidget, int duration, Callback callback) { if(outWidget == null) { return; } outWidget.getElement().getStyle().setOpacity(0); if (callback != null) { callback.onTransitionCompleted(); } } @Override public void hideBackface(Widget widget) { } @Override public void resetTransition(Widget widget) { if(widget == null) { return; } Element element = widget.getElement(); if (hasOriginalLeft(element)) { setLeft(element, getOriginalLeft(element)); clearOriginalLeft(element); } } @Override public void setHeight(Widget widget, int height, int duration, Callback callback) { if(widget == null) { return; } setHeight(widget, height+"px", duration, callback); } @Override public void setHeight(Widget widget, String height, int duration, Callback callback) { if(widget == null) { return; } widget.setHeight(height); if (callback != null) { callback.onTransitionCompleted(); } } @Override public void translateX(Widget widget, int diff, Callback callback) { if(widget == null) { return; } Element element = widget.getElement(); if (!hasOriginalLeft(element)) { setOriginalLeft(element, element.getOffsetLeft()); } else { diff = getOriginalLeft(element) + diff; } setLeft(element, diff); if (callback != null) { callback.onTransitionCompleted(); } } @Override public void translateX(Widget widget, final int diff, int duration, final Callback callback) { if(widget == null) { return; } translateX(widget, diff, callback); } @Override public void translateY(Widget widget, int diff, Callback callback) { if(widget == null) { return; } Element element = widget.getElement(); if (!hasOriginalTop(element)) { setOriginalTop(element, element.getOffsetTop()); } else { diff = getOriginalTop(element) + diff; } setTop(element, diff); if (callback != null) { callback.onTransitionCompleted(); } } @Override public void translateY(Widget widget, final int diff, int duration, final Callback callback) { if(widget == null) { return; } translateY(widget, diff, callback); } private native void clearOriginalLeft(Element el)/*-{ el._originalLeft = null; }-*/; private native int getOriginalLeft(Element el)/*-{ return el._originalLeft; }-*/; private native int getOriginalTop(Element el)/*-{ return el._originalTop; }-*/; private native boolean hasOriginalLeft(Element el)/*-{ var intRegex = /^\d+$/; try { if(intRegex.test(el._originalLeft)) { return true; } } catch(err) {} return false; }-*/; private native boolean hasOriginalTop(Element el)/*-{ var intRegex = /^\d+$/; try { if(intRegex.test(el._originalTop)) { return true; } } catch(err) {} return false; }-*/; private void setLeft(Element element, double left) { element.getStyle().setLeft(left, Unit.PX); } private native void setOriginalLeft(Element el, int left)/*-{ el._originalLeft = left; }-*/; private native void setOriginalTop(Element el, int top)/*-{ el._originalTop = top; }-*/; private void setTop(Element element, double top) { element.getStyle().setTop(top, Unit.PX); } }