001package org.gwtbootstrap3.extras.select.client.ui.event;
002
003/*
004 * #%L
005 * GwtBootstrap3
006 * %%
007 * Copyright (C) 2013 - 2016 GwtBootstrap3
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.shared.GwtEvent;
024
025/**
026 * The shown event is fired when the drop-down has been made visible to
027 * the user (will wait for CSS transitions, to complete).
028 */
029public class ShownEvent extends GwtEvent<ShownHandler> {
030
031    private static Type<ShownHandler> TYPE;
032
033    /**
034     * Fires a shown event on all registered handlers in the handler manager. If
035     * no such handlers exist, this method will do nothing.
036     *
037     * @param source the source of the handlers
038     */
039    public static void fire(final HasShownHandlers source) {
040        if (TYPE != null) {
041            ShownEvent event = new ShownEvent();
042            source.fireEvent(event);
043        }
044    }
045
046    /**
047     * Gets the type associated with this event.
048     *
049     * @return returns the handler type
050     */
051    public static Type<ShownHandler> getType() {
052        if (TYPE == null) {
053            TYPE = new Type<ShownHandler>();
054        }
055        return TYPE;
056    }
057
058    @Override
059    public Type<ShownHandler> getAssociatedType() {
060        return TYPE;
061    }
062
063    @Override
064    protected void dispatch(final ShownHandler handler) {
065        handler.onShown(this);
066    }
067
068    /**
069     * Creates a shown event.
070     */
071    protected ShownEvent() {}
072
073}