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