001package gwt.material.design.client.base;
002
003/*
004 * #%L
005 * GwtMaterial
006 * %%
007 * Copyright (C) 2015 GwtMaterialDesign
008 * %%
009 * Licensed under the Apache License, Version 2.0 (the "License");
010 * you may not use this file except in compliance with the License.
011 * You may obtain a copy of the License at
012 * 
013 *      http://www.apache.org/licenses/LICENSE-2.0
014 * 
015 * Unless required by applicable law or agreed to in writing, software
016 * distributed under the License is distributed on an "AS IS" BASIS,
017 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
018 * See the License for the specific language governing permissions and
019 * limitations under the License.
020 * #L%
021 */
022
023import com.google.gwt.event.logical.shared.AttachEvent;
024import com.google.gwt.user.client.ui.IsWidget;
025import com.google.gwt.user.client.ui.Widget;
026
027public class Waves {
028    
029    public static final String WAVES_STYLE = "waves-effect";
030
031    /**
032     * Initialize any uninitialized wave elements.
033     */
034    public static native void detectAndApply() /*-{
035        $wnd.Waves.displayEffect();
036    }-*/;
037
038    /**
039     * Detect and apply waves, now or when the widget is attached.
040     * @param widget target widget to ensure is attached first
041     */
042    public static void detectAndApply(Widget widget) {
043        if(!widget.isAttached()) {
044            widget.addAttachHandler(new AttachEvent.Handler() {
045                @Override
046                public void onAttachOrDetach(AttachEvent event) {
047                    if(event.isAttached()) {
048                        detectAndApply();
049                    }
050                }
051            });
052        } else {
053            detectAndApply();
054        }
055    }
056
057    public static void detectAndApply(IsWidget isWidget) {
058        detectAndApply(isWidget.asWidget());
059    }
060}