Example usage for com.google.gwt.dom.client StyleInjector injectAtEnd

List of usage examples for com.google.gwt.dom.client StyleInjector injectAtEnd

Introduction

In this page you can find the example usage for com.google.gwt.dom.client StyleInjector injectAtEnd.

Prototype

public static void injectAtEnd(String css, boolean immediate) 

Source Link

Document

Add stylesheet data to the document as though it were declared after all stylesheets previously created by #inject(String) .

Usage

From source file:com.floatzcss.gwt.client.util.StyleInjectorUtils.java

License:Apache License

/**
 * Inject CSS resource at the end.// w w  w.  j  a  v a2 s .c  o  m
 *
 * @param resource  CSS Resource
 * @param immediate true to update DOM immediately, false before returning to the event loop
 * @return Reference for chaining
 */
public StyleInjectorUtils injectAtEnd(CssResource resource, boolean immediate) {
    StyleInjector.injectAtEnd(getCss(resource), immediate);
    return getInstance();
}

From source file:com.smartgwt.mobile.client.SmartGwtMobileEntryPoint.java

License:Open Source License

public void onModuleLoad() {
    // Added boolean init check flag because GWT for some reason invokes this entry point class twice in hosted mode
    // even though it appears only once in the load hierarchy. Check with GWT team.
    if (initialized)
        return;//from  www .j a  va 2 s  .c  o m
    initialized = true;

    assert (assertionsEnabled = true) == true; // Intentional side effect.
    if (!assertionsEnabled) {
        SC.logWarn("WARNING: Assertions are not enabled. It is recommended to develop with assertions "
                + "enabled because both GWT and SmartGWT.mobile use them to help find bugs in application code. "
                + "To enable assertions, if using GWT 2.6.0 or later, recompile the application with the "
                + "-checkAssertions option passed to the GWT compiler. If using GWT 2.5.1 or earlier, recompile with the "
                + "-ea option passed to the GWT compiler.");
    }

    _init();

    // Delete all current viewport <meta> tags. We will create a new one to work around two
    // issues:
    // - In an iOS 7 UIWebView, we need to set the viewport height to fix the issue that the
    //   TabSet tabBar stays above the virtual keyboard when a text <input> has keyboard focus
    //   (http://forums.smartclient.com/showthread.php?t=29005).
    //   - On iPhone and iPad (iOS v7.0.4), we need to set the height to device-width to work
    //     around a bug. If height is set to device-height, then in landscape orientation,
    //     the <body>'s dimensions are 1024x1024, causing pickers to fail to appear.
    //     - iOS 6.1 also has this problem, but if we use height = device-width, then there
    //       are severe display issues when the orientation is changed, so we don't specify the
    //       height.
    //   - Don't want to do this unless in a UIWebView, however, because if we set the
    //     viewport height then pickers get cut off when Showcase is viewed in Mobile Safari.
    // - In an iOS 7 UIWebView, we also need a viewport height to fix a different issue, namely
    //   that if an input is tapped, but the virtual keyboard appears on top of the input, then
    //   that input element is not focused, and the ScrollablePanel fails to scroll the tapped
    //   input into view:
    //   http://stackoverflow.com/questions/19110144/ios7-issues-with-webview-focus-when-using-keyboard-html
    //   - This is not an issue on iOS 6.1.
    // - Firefox for Android does not support updating the content of an existing viewport
    //   <meta> tag. However, if a new viewport <meta> tag is added, then the viewport settings
    //   are updated: https://bugzilla.mozilla.org/show_bug.cgi?id=714737
    final NodeList<Element> metaElems = Document.get().getElementsByTagName("meta");
    for (int ri = metaElems.getLength(); ri > 0; --ri) {
        final MetaElement metaElem = metaElems.getItem(ri - 1).cast();
        if ("viewport".equals(metaElem.getName())) {
            metaElem.removeFromParent();
        }
    }
    String width = "device-width";
    String height = null;
    if (CANVAS_STATIC_IMPL.isIOSMin7_0() && CANVAS_STATIC_IMPL.isUIWebView()) {
        height = Page.getOrientation() == PageOrientation.LANDSCAPE ? "device-width" : "device-height";
        Page.addOrientationChangeHandler(new OrientationChangeHandler() {
            @Override
            public void onOrientationChange(OrientationChangeEvent event) {
                final String newHeight = Page.getOrientation() == PageOrientation.LANDSCAPE ? "device-width"
                        : "device-height";
                Page._updateViewport(Float.valueOf(1.0f), "device-width", newHeight, Boolean.FALSE,
                        "minimal-ui");
            }
        });
    }
    Page._updateViewport(Float.valueOf(1.0f), width, height, Boolean.FALSE, "minimal-ui");

    // Inject default styles.
    //
    // Because `CssResource' does not have support for at rules, CSS3 animations @keyframes
    // and @media rules must be added separately.
    // http://code.google.com/p/google-web-toolkit/issues/detail?id=4911
    final StringBuilder cssText = new StringBuilder();
    final String translateXStart = Canvas.isAndroid() ? "translateX(" : "translate3d(",
            translateXEnd = Canvas.isAndroid() ? ")" : ",0,0)",
            translateYStart = Canvas.isAndroid() ? "translateY(" : "translate3d(0,",
            translateYEnd = Canvas.isAndroid() ? ")" : ",0)";

    // base
    cssText.append(Canvas._CSS.getText());
    cssText.append(ThemeResources.INSTANCE.otherBaseCSS().getText());
    cssText.append("@media all and (orientation:landscape){"
            + ThemeResources.INSTANCE.baseCSSLandscape().getText() + "}");

    // activityindicator
    cssText.append(ActivityIndicator._CSS.getText());
    if (ActivityIndicator._CSS instanceof ActivityIndicatorCssResourceIOS) {
        final ActivityIndicatorCssResourceIOS CSS = (ActivityIndicatorCssResourceIOS) ActivityIndicator._CSS;
        // Android 2.3.3 Browser has a bug where attempting to animate from transform:rotate(0deg)
        // to transform:rotate(360deg) results in no animation because its angle calculations
        // are mod 360, so 0 = 360 mod 360 and it thinks that there is no change in the transform
        // from start to end. A work-around is to add a 50% keyframe of transform:rotate(180deg).
        cssText.append(DOMConstants.INSTANCE.getAtKeyframesText() + " " + CSS.spinAnimationName() + "{" + "0%{"
                + DOMConstants.INSTANCE.getTransformPropertyNameForCSSText() + ":rotate(0deg)}" + "50%{"
                + DOMConstants.INSTANCE.getTransformPropertyNameForCSSText() + ":rotate(180deg)}" + "to{"
                + DOMConstants.INSTANCE.getTransformPropertyNameForCSSText() + ":rotate(360deg)}" + "}"
                + "@keyframes " + CSS.spinAnimationName() + "{" + "0%{transform:rotate(0deg)}"
                + "50%{transform:rotate(180deg)}" + "to{transform:rotate(360deg)}" + "}");
    }

    // layout
    cssText.append(ThemeResources.INSTANCE.layoutCSS().getText());

    // panel
    cssText.append(ThemeResources.INSTANCE.panelCSS().getText());

    // headings
    cssText.append(Header1._CSS.getText());

    // buttons
    cssText.append(BaseButton._CSS.getText());

    // form
    cssText.append(DynamicForm._CSS.getText());
    // Note: GWT's CssResource does not currently support CSS3 @media queries.
    // https://code.google.com/p/google-web-toolkit/issues/detail?id=8162
    // One work-around is to add the CSS text within the media query:
    // https://code.google.com/p/google-web-toolkit/issues/detail?id=4911#c6
    cssText.append("@media all and (orientation:landscape){" + // The space after the 'and' keyword is important. Without this space, the styles are not applied on iPad in landscape orientation.
            ThemeResources.INSTANCE.formCSSLandscape().getText() + "}");

    // menu
    cssText.append(Menu._CSS.getText());
    if (Menu._CSS instanceof MenuCssResourceIPhone) {
        final MenuCssResourceIPhone CSS = (MenuCssResourceIPhone) Menu._CSS;
        cssText.append(DOMConstants.INSTANCE.getAtKeyframesText() + " " + CSS.menuFadeInAnimationName() + "{"
                + "0%{opacity:0}" + "to{opacity:1}" + "}" + "@keyframes " + CSS.menuFadeInAnimationName() + "{"
                + "0%{opacity:0}" + "to{opacity:1}" + "}" +

                DOMConstants.INSTANCE.getAtKeyframesText() + " " + CSS.menuFadeOutAnimationName() + "{"
                + "0%{opacity:1}" + "50%{opacity:1}" + "to{opacity:0}" + "}" + "@keyframes "
                + CSS.menuFadeOutAnimationName() + "{" + "0%{opacity:1}" + "50%{opacity:1}" + "to{opacity:0}"
                + "}");
    }

    // navigationbar
    cssText.append(NavigationBar._CSS.getText());
    if (NavigationBar._CSS instanceof NavigationBarCssResourceIOS) {
        final NavigationBarCssResourceIOS CSS = (NavigationBarCssResourceIOS) NavigationBar._CSS;
        cssText.append(DOMConstants.INSTANCE.getAtKeyframesText() + " " + CSS.navbarFadeInAnimationName() + "{"
                + "0%{opacity:0}" + "to{opacity:1}" + "}" + "@keyframes " + CSS.navbarFadeInAnimationName()
                + "{" + "0%{opacity:0}" + "to{opacity:1}" + "}" +

                DOMConstants.INSTANCE.getAtKeyframesText() + " " + CSS.navbarFadeOutAnimationName() + "{"
                + "0%{opacity:1}" + "to{opacity:0}" + "}" + "@keyframes " + CSS.navbarFadeOutAnimationName()
                + "{" + "0%{opacity:1}" + "to{opacity:0}" + "}" +

                DOMConstants.INSTANCE.getAtKeyframesText() + " " + CSS.navbarSlideInFromRightAnimationName()
                + "{" + "0%{opacity:0;" + DOMConstants.INSTANCE.getTransformPropertyNameForCSSText() + ":"
                + translateXStart + "90px" + translateXEnd + "}" + "to{opacity:1;"
                + DOMConstants.INSTANCE.getTransformPropertyNameForCSSText() + ":" + translateXStart + "0"
                + translateXEnd + "}" + "}" + "@keyframes " + CSS.navbarSlideInFromRightAnimationName() + "{"
                + "0%{opacity:0;transform:translateX(90px)}" + "to{opacity:1;transform:translateX(0)}" + "}" +

                DOMConstants.INSTANCE.getAtKeyframesText() + " "
                + CSS.navbarHeadingSlideInFromRightAnimationName() + "{" + "0%{opacity:0;"
                + DOMConstants.INSTANCE.getTransformPropertyNameForCSSText() + ":" + translateXStart + "60%"
                + translateXEnd + "}" + "to{opacity:1;"
                + DOMConstants.INSTANCE.getTransformPropertyNameForCSSText() + ":" + translateXStart + "0"
                + translateXEnd + "}" + "}" + "@keyframes " + CSS.navbarHeadingSlideInFromRightAnimationName()
                + "{" + "0%{opacity:0;transform:translateX(60%)}" + "to{opacity:1;transform:translateX(0)}"
                + "}" +

                DOMConstants.INSTANCE.getAtKeyframesText() + " " + CSS.navbarSlideInFromLeftAnimationName()
                + "{" + "0%{opacity:0;" + DOMConstants.INSTANCE.getTransformPropertyNameForCSSText() + ":"
                + translateXStart + "-90px" + translateXEnd + "}" + "to{opacity:1;"
                + DOMConstants.INSTANCE.getTransformPropertyNameForCSSText() + ":" + translateXStart + "0"
                + translateXEnd + "}" + "}" + "@keyframes " + CSS.navbarSlideInFromLeftAnimationName() + "{"
                + "0%{opacity:0;transform:translateX(-90px)}" + "to{opacity:1;transform:translateX(0)}" + "}" +

                DOMConstants.INSTANCE.getAtKeyframesText() + " "
                + CSS.navbarHeadingSlideInFromLeftAnimationName() + "{" + "0%{opacity:0;"
                + DOMConstants.INSTANCE.getTransformPropertyNameForCSSText() + ":" + translateXStart + "-60%"
                + translateXEnd + "}" + "to{opacity:1;"
                + DOMConstants.INSTANCE.getTransformPropertyNameForCSSText() + ":" + translateXStart + "0"
                + translateXEnd + "}" + "}" + "@keyframes " + CSS.navbarHeadingSlideInFromLeftAnimationName()
                + "{" + "0%{opacity:0;transform:translateX(-60%)}" + "to{opacity:1;transform:translateX(0)}"
                + "}" +

                DOMConstants.INSTANCE.getAtKeyframesText() + " " + CSS.navbarSlideOutRightAnimationName() + "{"
                + "0%{opacity:1;" + DOMConstants.INSTANCE.getTransformPropertyNameForCSSText() + ":"
                + translateXStart + "0" + translateXEnd + "}" + "to{opacity:0;"
                + DOMConstants.INSTANCE.getTransformPropertyNameForCSSText() + ":" + translateXStart + "90px"
                + translateXEnd + "}" + "}" + "@keyframes " + CSS.navbarSlideOutRightAnimationName() + "{"
                + "0%{opacity:1;transform:translateX(0)}" + "to{opacity:0;transform:translateX(90px)}" + "}" +

                DOMConstants.INSTANCE.getAtKeyframesText() + " " + CSS.navbarHeadingSlideOutRightAnimationName()
                + "{" + "0%{opacity:1;" + DOMConstants.INSTANCE.getTransformPropertyNameForCSSText() + ":"
                + translateXStart + "0" + translateXEnd + "}" + "to{opacity:0;"
                + DOMConstants.INSTANCE.getTransformPropertyNameForCSSText() + ":" + translateXStart + "60%"
                + translateXEnd + "}" + "}" + "@keyframes " + CSS.navbarHeadingSlideOutRightAnimationName()
                + "{" + "0%{opacity:1;transform:translateX(0)}" + "to{opacity:0;transform:translateX(60%)}"
                + "}" +

                DOMConstants.INSTANCE.getAtKeyframesText() + " " + CSS.navbarSlideOutLeftAnimationName() + "{"
                + "0%{opacity:1;" + DOMConstants.INSTANCE.getTransformPropertyNameForCSSText() + ":"
                + translateXStart + "0" + translateXEnd + "}" + "to{opacity:0;"
                + DOMConstants.INSTANCE.getTransformPropertyNameForCSSText() + ":" + translateXStart + "-90px"
                + translateXEnd + "}" + "}" + "@keyframes " + CSS.navbarSlideOutLeftAnimationName() + "{"
                + "0%{opacity:1;transform:translateX(0)}" + "to{opacity:0;transform:translateX(-90px)}" + "}" +

                DOMConstants.INSTANCE.getAtKeyframesText() + " " + CSS.navbarHeadingSlideOutLeftAnimationName()
                + "{" + "0%{opacity:1;" + DOMConstants.INSTANCE.getTransformPropertyNameForCSSText() + ":"
                + translateXStart + "0" + translateXEnd + "}" + "to{opacity:0;"
                + DOMConstants.INSTANCE.getTransformPropertyNameForCSSText() + ":" + translateXStart + "-60%"
                + translateXEnd + "}" + "}" + "@keyframes " + CSS.navbarHeadingSlideOutLeftAnimationName() + "{"
                + "0%{opacity:1;transform:translateX(0)}" + "to{opacity:0;transform:translateX(-60%)}" + "}");
    }

    // popup
    cssText.append(Popup._CSS.getText());

    // picker2
    cssText.append(Picker2.CSS.getText());
    if (Picker2.CSS instanceof PickerCssResourceIOS) {
        final PickerCssResourceIOS CSS = (PickerCssResourceIOS) Picker2.CSS;
        cssText.append(DOMConstants.INSTANCE.getAtKeyframesText() + " " + CSS.pickerFadeInAnimationName() + "{"
                + "0%{" + DOMConstants.INSTANCE.getTransformPropertyNameForCSSText() + ":" + translateYStart
                + "100%" + translateYEnd + "}" + "to{"
                + DOMConstants.INSTANCE.getTransformPropertyNameForCSSText() + ":" + translateYStart + "0"
                + translateYEnd + "}" + "}" + "@keyframes " + CSS.pickerFadeInAnimationName() + "{"
                + "0%{transform:translateY(100%)}" + "to{transform:translateY(0)}" + "}" +

                DOMConstants.INSTANCE.getAtKeyframesText() + " " + CSS.pickerFadeOutAnimationName() + "{"
                + "0%{" + DOMConstants.INSTANCE.getTransformPropertyNameForCSSText() + ":" + translateYStart
                + "0" + translateYEnd + "}" + "to{" + DOMConstants.INSTANCE.getTransformPropertyNameForCSSText()
                + ":" + translateYStart + "100%" + translateYEnd + "}" + "}" + "@keyframes "
                + CSS.pickerFadeOutAnimationName() + "{" + "0%{transform:translateY(0)}"
                + "to{transform:translateY(100%)}" + "}");
    }

    // progressbar
    cssText.append(Progressbar._CSS.getText());

    // scrollable
    cssText.append(ScrollablePanel._CSS.getText());

    // slider
    cssText.append(SliderItem._CSS.getText());

    // switchitem
    cssText.append(SwitchItem._CSS.getText());

    // tableview
    // Don't use `TableView._CSS.ensureInjected()' because the way that CssResource.ensureInjected()
    // is implemented, the CSS rules are scheduled to be added in a timeout, which may mean
    // that the DOM elements for the first `TableView' are added to the document before
    // the `TableView' CSS styles are added. If this first `TableView' has a parent `NavStack',
    // then the browser considers the background color of the LIs to have changed when
    // the `TableView' CSS is added, meaning that the background-color transition effect
    // kicks in.
    // http://jsfiddle.net/A4QDd/
    //
    // GWT 2.5 introduces the StyleInjector.flush() function which would solve this problem,
    // but for GWT 2.4, we can simulate the same effect by always using StyleInjector.injectAtEnd()
    // (immediate = true) at the small price of more <style> elements being added to the document.
    cssText.append(TableView._CSS.getText());
    cssText.append("@media all and (orientation:landscape){"
            + ThemeResources.INSTANCE.tableViewCSSLandscape().getText() + "}");

    // tabs
    cssText.append(TabSet._CSS.getText());
    if (TabSet._CSS instanceof TabSetCssResourceIOS) {
        final TabSetCssResourceIOS CSS = (TabSetCssResourceIOS) TabSet._CSS;
        cssText.append(DOMConstants.INSTANCE.getAtKeyframesText() + " " + CSS.tabBarSlideOutAnimationName()
                + "{" + "0%{" + DOMConstants.INSTANCE.getTransformPropertyNameForCSSText() + ":"
                + translateYStart + "0" + translateYEnd + "}" + "to{"
                + DOMConstants.INSTANCE.getTransformPropertyNameForCSSText() + ":" + translateYStart + "100%"
                + translateYEnd + "}" + "}" + "@keyframes " + CSS.tabBarSlideOutAnimationName() + "{"
                + "0%{transform:translateY(0)}" + "to{transform:translateY(100%)}" + "}");
    }
    cssText.append("@media all and (orientation:landscape){"
            + ThemeResources.INSTANCE.tabsCSSLandscape().getText() + "}");

    // toolbar
    cssText.append(ToolStrip._CSS.getText());

    // window
    if (Window._CSS instanceof WindowCssResourceIOS) {
        final WindowCssResourceIOS CSS = (WindowCssResourceIOS) Window._CSS;
        cssText.append(DOMConstants.INSTANCE.getAtKeyframesText() + " " + CSS.modalMaskFadeInAnimationName()
                + "{" + "0%{opacity:0}" + "to{opacity:1}" + "}" + "@keyframes "
                + CSS.modalMaskFadeInAnimationName() + "{" + "0%{opacity:0}" + "to{opacity:1}" + "}"
                + DOMConstants.INSTANCE.getAtKeyframesText() + " " + CSS.modalMaskFadeOutAnimationName() + "{"
                + "0%{opacity:1}" + "to{opacity:0}" + "}" + "@keyframes " + CSS.modalMaskFadeOutAnimationName()
                + "{" + "0%{opacity:1}" + "to{opacity:0}" + "}");
    }
    // On iPad, windows look like alertviews.
    if (Window._CSS instanceof WindowCssResourceIPad) {
        final WindowCssResourceIPad CSS = (WindowCssResourceIPad) Window._CSS;
        cssText.append(DOMConstants.INSTANCE.getAtKeyframesText() + " "
                + CSS.windowBackgroundFadeInAnimationName() + "{" + "0%{opacity:0;"
                + DOMConstants.INSTANCE.getTransformPropertyNameForCSSText() + ":scale(1)}" + "50%{opacity:1;"
                + DOMConstants.INSTANCE.getTransformPropertyNameForCSSText() + ":scale(.95)}" + "to{"
                + DOMConstants.INSTANCE.getTransformPropertyNameForCSSText() + ":scale(1)}" + "}"
                + "@keyframes " + CSS.windowBackgroundFadeInAnimationName() + "{"
                + "0%{opacity:0;transform:scale(1)}" + "50%{opacity:1;transform:scale(.95)}"
                + "to{transform:scale(1)}" + "}" +

                DOMConstants.INSTANCE.getAtKeyframesText() + " " + CSS.windowBackgroundFadeOutAnimationName()
                + "{" + "0%{opacity:1;" + DOMConstants.INSTANCE.getTransformPropertyNameForCSSText()
                + ":scale(1)}" + "to{opacity:0;" + DOMConstants.INSTANCE.getTransformPropertyNameForCSSText()
                + ":scale(.95)}" + "}" + "@keyframes " + CSS.windowBackgroundFadeOutAnimationName() + "{"
                + "0%{opacity:1;transform:scale(1)}" + "to{opacity:0;transform:scale(.95)}" + "}");

        // Otherwise, windows look like action sheets.
    } else {
        assert Window._CSS instanceof WindowCssResourceIPhone;
        final WindowCssResourceIPhone CSS = (WindowCssResourceIPhone) Window._CSS;
        cssText.append(DOMConstants.INSTANCE.getAtKeyframesText() + " "
                + CSS.windowBackgroundSlideInAnimationName() + "{" + "0%{"
                + DOMConstants.INSTANCE.getTransformPropertyNameForCSSText() + ":" + translateYStart + "100%"
                + translateYEnd + "}" + "to{" + DOMConstants.INSTANCE.getTransformPropertyNameForCSSText() + ":"
                + translateYStart + "0" + translateYEnd + "}" + "}" + "@keyframes "
                + CSS.windowBackgroundSlideInAnimationName() + "{" + "0%{transform:translateY(100%)}"
                + "to{transform:translateY(0)}" + "}" +

                DOMConstants.INSTANCE.getAtKeyframesText() + " " + CSS.windowBackgroundSlideOutAnimationName()
                + "{" + "0%{opacity:1;" + DOMConstants.INSTANCE.getTransformPropertyNameForCSSText() + ":"
                + translateYStart + "0" + translateYEnd + "}" + "to{opacity:1;"
                + DOMConstants.INSTANCE.getTransformPropertyNameForCSSText() + ":" + translateYStart + "100%"
                + translateYEnd + "}" + "}" + "@keyframes " + CSS.windowBackgroundSlideOutAnimationName() + "{"
                + "0%{opacity:1;transform:translateY(0)}" + "to{opacity:1;transform:translateY(100%)}" + "}");
    }
    cssText.append(Window._CSS.getText());
    cssText.append("@media all and (orientation:landscape){"
            + ThemeResources.INSTANCE.windowCSSLandscape().getText() + "}");

    // dialog
    cssText.append(Dialog._CSS.getText());

    // alertview
    if (AlertView._CSS instanceof AlertViewCssResourceIOS) {
        final AlertViewCssResourceIOS CSS = (AlertViewCssResourceIOS) AlertView._CSS;
        cssText.append(DOMConstants.INSTANCE.getAtKeyframesText() + " "
                + CSS.alertViewScreenCoverFadeInAnimationName() + "{" + "0%{opacity:0}" + "to{opacity:1}" + "}"
                + "@keyframes " + CSS.alertViewScreenCoverFadeInAnimationName() + "{" + "0%{opacity:0}"
                + "to{opacity:1}" + "}" +

                DOMConstants.INSTANCE.getAtKeyframesText() + " "
                + CSS.alertViewScreenCoverFadeOutAnimationName() + "{" + "0%{opacity:1}" + "to{opacity:0}" + "}"
                + "@keyframes " + CSS.alertViewScreenCoverFadeOutAnimationName() + "{" + "0%{opacity:1}"
                + "to{opacity:0}" + "}" +

                DOMConstants.INSTANCE.getAtKeyframesText() + " " + CSS.alertViewFadeInAnimationName() + "{"
                + "0%{opacity:0;" + DOMConstants.INSTANCE.getTransformPropertyNameForCSSText() + ":scale(1)}"
                + "50%{opacity:1;" + DOMConstants.INSTANCE.getTransformPropertyNameForCSSText() + ":scale(.95)}"
                + "to{" + DOMConstants.INSTANCE.getTransformPropertyNameForCSSText() + ":scale(1)}" + "}"
                + "@keyframes " + CSS.alertViewFadeInAnimationName() + "{" + "0%{opacity:0;transform:scale(1)}"
                + "50%{opacity:1;transform:scale(.95)}" + "to{transform:scale(1)}" + "}" +

                DOMConstants.INSTANCE.getAtKeyframesText() + " " + CSS.alertViewFadeOutAnimationName() + "{"
                + "0%{opacity:1;" + DOMConstants.INSTANCE.getTransformPropertyNameForCSSText() + ":scale(1)}"
                + "to{opacity:0;" + DOMConstants.INSTANCE.getTransformPropertyNameForCSSText() + ":scale(.95)}"
                + "}" + "@keyframes " + CSS.alertViewFadeOutAnimationName() + "{"
                + "0%{opacity:1;transform:scale(1)}" + "to{opacity:0;transform:scale(.95)}" + "}");
    }
    cssText.append(AlertView._CSS.getText());

    // popover
    cssText.append(Popover._CSS.getText());
    if (Popover._CSS instanceof PopoverCssResourceIPhone) {
        final PopoverCssResourceIPhone CSS = (PopoverCssResourceIPhone) Popover._CSS;
        cssText.append(DOMConstants.INSTANCE.getAtKeyframesText() + " " + CSS.popoverFadeOutAnimationName()
                + "{" + "0%{opacity:1}" + "to{opacity:0}" + "}" + "@keyframes "
                + CSS.popoverFadeOutAnimationName() + "{" + "0%{opacity:1}" + "to{opacity:0}" + "}");
    }

    StyleInjector.injectAtEnd(CSSUtil.fixNotSelectors(cssText.toString()), true);
}

From source file:org.gwtbootstrap3.extras.animate.client.ui.Animate.java

License:Apache License

/**
 * Styles element with animation class. New class name is generated to customize count, duration and delay.
 * Style is removed on animation end (if not set to infinite).
 *
 * @param element Element to apply animation to.
 * @param animation Type of animation to apply.
 * @param count Number of animation repeats. 0 disables animation, any negative value set repeats to infinite.
 * @param duration Animation duration in ms. 0 disables animation, any negative value keeps default of original animation.
 * @param delay Delay before starting the animation loop in ms. Value <= 0 means no delay.
 * @param <T> Any object extending UIObject class (typically Widget).
 * @return Animation's CSS class name, which can be removed to stop animation.
 *//*from   www. j a v  a2s  .c om*/
private static <T extends UIObject> String styleElement(Element element, String animation, int count,
        int duration, int delay) {

    if (!usedStyles.contains(animation + " " + getStyleNameFromAnimation(animation, count, duration, delay))) {

        String styleSheet = "." + getStyleNameFromAnimation(animation, count, duration, delay) + " {";

        // 1 is default, 0 disable animation, any negative -> infinite loop
        if (count >= 0) {

            styleSheet += "-webkit-animation-iteration-count: " + count + ";"
                    + "-moz-animation-iteration-count:" + count + ";" + "-ms-animation-iteration-count:" + count
                    + ";" + "-o-animation-iteration-count:" + count + ";" + "animation-iteration-count:" + count
                    + ";";

        } else {

            styleSheet += "-webkit-animation-iteration-count: infinite;"
                    + "-moz-animation-iteration-count: infinite;" + "-ms-animation-iteration-count: infinite;"
                    + "-o-animation-iteration-count: infinite;" + "animation-iteration-count: infinite;";

        }

        // if not default (any negative -> use default)
        if (duration >= 0) {

            styleSheet += "-webkit-animation-duration: " + duration + "ms;" + "-moz-animation-duration:"
                    + duration + "ms;" + "-ms-animation-duration:" + duration + "ms;" + "-o-animation-duration:"
                    + duration + "ms;" + "animation-duration:" + duration + "ms;";

        }

        // if not default (any negative -> use default)
        if (delay >= 0) {

            styleSheet += "-webkit-animation-delay: " + delay + "ms;" + "-moz-animation-delay:" + delay + "ms;"
                    + "-ms-animation-delay:" + delay + "ms;" + "-o-animation-delay:" + delay + "ms;"
                    + "animation-delay:" + delay + "ms;";

        }

        styleSheet += "}";

        // inject new style
        StyleInjector.injectAtEnd(styleSheet, true);

        usedStyles.add(animation + " " + getStyleNameFromAnimation(animation, count, duration, delay));

    }

    // start animation
    element.addClassName(animation + " " + getStyleNameFromAnimation(animation, count, duration, delay));

    // remove animation on end so we could start it again
    // removeAnimationOnEnd(element, animation + " anim-"+count+"-"+duration+"-"+delay);

    return animation + " " + getStyleNameFromAnimation(animation, count, duration, delay);

}

From source file:org.rstudio.studio.client.common.RetinaStyleInjector.java

License:Open Source License

public static void injectAtEnd(String css, boolean immediate) {
    StyleInjector.injectAtEnd(asRetina(css), immediate);
}