001package gwt.material.design.addins.client.fileuploader.events;
002
003/*
004 * #%L
005 * GwtMaterial
006 * %%
007 * Copyright (C) 2015 - 2016 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
023
024import com.google.gwt.event.shared.EventHandler;
025import com.google.gwt.event.shared.GwtEvent;
026import gwt.material.design.addins.client.fileuploader.base.HasFileUpload;
027
028public class MaxFilesExceededEvent<T> extends GwtEvent<MaxFilesExceededEvent.MaxFilesExceededHandler<T>> {
029
030    private static Type<MaxFilesExceededHandler<?>> TYPE;
031
032    public interface MaxFilesExceededHandler<T> extends EventHandler {
033        void onMaxFilesExceeded(MaxFilesExceededEvent<T> event);
034    }
035
036    public static <T> void fire(HasFileUpload<T> source, T target) {
037        if (TYPE != null) {
038            MaxFilesExceededEvent<T> event = new MaxFilesExceededEvent<T>(target);
039            source.fireEvent(event);
040        }
041    }
042
043    public static Type<MaxFilesExceededHandler<?>> getType() {
044        return TYPE != null ? TYPE : (TYPE = new Type<MaxFilesExceededHandler<?>>());
045    }
046
047    private final T target;
048
049    protected MaxFilesExceededEvent(T target) {
050        this.target = target;
051    }
052
053    @Override
054    public final Type<MaxFilesExceededHandler<T>> getAssociatedType() {
055        return (Type) TYPE;
056    }
057
058    public T getTarget() {
059        return target;
060    }
061
062    @Override
063    protected void dispatch(MaxFilesExceededHandler<T> handler) {
064        handler.onMaxFilesExceeded(this);
065    }
066}