All Downloads are FREE. Search and download functionalities are using the official Maven repository.

gwt.material.design.incubator.client.loadingstate.LoadingStatePanel Maven / Gradle / Ivy

There is a newer version: 2.8.3
Show newest version
/*
 * #%L
 * GwtMaterial
 * %%
 * Copyright (C) 2015 - 2017 GwtMaterialDesign
 * %%
 * 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.
 * #L%
 */
package gwt.material.design.incubator.client.loadingstate;

import com.google.gwt.event.shared.HandlerRegistration;
import gwt.material.design.addins.client.base.constants.AddinsCssName;
import gwt.material.design.client.MaterialDesignBase;
import gwt.material.design.client.constants.Color;
import gwt.material.design.client.constants.CssName;
import gwt.material.design.client.constants.IconType;
import gwt.material.design.client.ui.MaterialIcon;
import gwt.material.design.client.ui.MaterialLabel;
import gwt.material.design.client.ui.MaterialLoader;
import gwt.material.design.client.ui.MaterialPanel;
import gwt.material.design.client.ui.animate.MaterialAnimation;
import gwt.material.design.client.ui.animate.Transition;
import gwt.material.design.incubator.client.AddinsIncubator;
import gwt.material.design.incubator.client.base.IncubatorWidget;
import gwt.material.design.incubator.client.base.constants.IncubatorCssName;
import gwt.material.design.incubator.client.loadingstate.constants.State;
import gwt.material.design.incubator.client.loadingstate.events.ErrorEvent;
import gwt.material.design.incubator.client.loadingstate.events.HasLoadingStateHandler;
import gwt.material.design.incubator.client.loadingstate.events.LoadingEvent;
import gwt.material.design.incubator.client.loadingstate.events.SuccessEvent;

/**
 * An extension to {@link MaterialPanel} that defines
 * a specific states to control it's children.
 *
 * 

* Note: This component is under the incubator process and subject to change. *

* * @author kevzlou7979 */ public class LoadingStatePanel extends MaterialPanel implements HasLoadingStateHandler { static { IncubatorWidget.showWarning(LoadingStatePanel.class); if (AddinsIncubator.isDebug()) { MaterialDesignBase.injectCss(LoadingStatePanelDebugClientBundle.INSTANCE.loadingStateDebugCss()); } else { MaterialDesignBase.injectCss(LoadingStatePanelClientBundle.INSTANCE.loadingStateCss()); } } private State state; private MaterialIcon icon = new MaterialIcon(IconType.LOOP); private MaterialLabel lblTitle = new MaterialLabel(); private MaterialLabel lblDescription = new MaterialLabel(); private MaterialLoader loader = new MaterialLoader(); private boolean animation = true; public LoadingStatePanel() {} @Override protected void onLoad() { super.onLoad(); setVisible(false); addStyleName(IncubatorCssName.LOADING_STATE); lblTitle.addStyleName(CssName.TITLE); lblDescription.addStyleName(AddinsCssName.DESCRIPTION); add(icon); loader.setContainer(icon); add(lblTitle); add(lblDescription); } public void setIcon(IconType iconType) { icon.setIconType(iconType); } public MaterialIcon getIcon() { return icon; } public void setTitle(String title) { lblTitle.setText(title); } public void setDescription(String description) { lblDescription.setText(description); } public void setState(State state, String title, String description) { this.state = state; setTitle(title); setDescription(description); setVisible(true); if (isAnimation()) { new MaterialAnimation().transition(Transition.BOUNCEIN).animate(icon); new MaterialAnimation().transition(Transition.BOUNCEINUP).animate(lblTitle); new MaterialAnimation().transition(Transition.BOUNCEINUP).animate(lblDescription); } if (state == State.LOADING) { icon.setIconType(IconType.LOOP); icon.setBackgroundColor(Color.WHITE); icon.setIconColor(Color.BLACK); LoadingEvent.fire(this); loader.show(); } else if (state == State.SUCCESS) { loader.hide(); icon.setIconType(IconType.CHECK); icon.setBackgroundColor(Color.BLUE); icon.setIconColor(Color.WHITE); SuccessEvent.fire(this); } else if (state == State.ERROR) { loader.hide(); icon.setIconType(IconType.ERROR); icon.setBackgroundColor(Color.RED); icon.setIconColor(Color.WHITE); ErrorEvent.fire(this); } } public boolean isAnimation() { return animation; } public void setAnimation(boolean animation) { this.animation = animation; } public State getState() { return state; } @Override public HandlerRegistration addLoadingHandler(LoadingEvent.LoadingHandler handler) { return addHandler(handler, LoadingEvent.getType()); } @Override public HandlerRegistration addSuccessHandler(SuccessEvent.SuccessHandler handler) { return addHandler(handler, SuccessEvent.getType()); } @Override public HandlerRegistration addErrorHandler(ErrorEvent.ErrorHandler handler) { return addHandler(handler, ErrorEvent.getType()); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy