001    package org.gwtbootstrap3.extras.slider.client.ui.base.event;
002    
003    /*
004     * #%L
005     * GwtBootstrap3
006     * %%
007     * Copyright (C) 2013 - 2015 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    
023    import com.google.gwt.event.shared.GwtEvent;
024    
025    /**
026     * The slide stop event is fired when dragging stops or has been clicked on.
027     *
028     * @param <T> slider value type
029     */
030    public class SlideStopEvent<T> extends GwtEvent<SlideStopHandler<T>> {
031    
032        private static Type<SlideStopHandler<?>> TYPE;
033    
034        private T value;
035    
036        /**
037         * Fires a slide stop event on all registered handlers in the handler
038         * manager. If no such handlers exist, this method will do nothing.
039         *
040         * @param source the source of the handlers
041         * @param value the new slider value
042         */
043        public static <T> void fire(final HasSlideStopHandlers<T> source, final T value) {
044            if (TYPE != null) {
045                SlideStopEvent<T> event = new SlideStopEvent<T>(value);
046                source.fireEvent(event);
047            }
048        }
049    
050        /**
051         * Gets the type associated with this event.
052         *
053         * @return returns the handler type
054         */
055        public static Type<SlideStopHandler<?>> getType() {
056            if (TYPE == null) {
057                TYPE = new Type<SlideStopHandler<?>>();
058            }
059            return TYPE;
060        }
061    
062        @SuppressWarnings({ "unchecked", "rawtypes" })
063        @Override
064        public Type<SlideStopHandler<T>> getAssociatedType() {
065            return (Type) TYPE;
066        }
067    
068        @Override
069        protected void dispatch(final SlideStopHandler<T> handler) {
070            handler.onSlideStop(this);
071        }
072    
073        /**
074         * Creates a slide stop event.
075         *
076         * @param value the new slider value
077         */
078        protected SlideStopEvent(final T value) {
079            this.value = value;
080        }
081    
082        /**
083         * @return the new slider value
084         */
085        public T getValue() {
086            return value;
087        }
088    
089        @Override
090        public String toDebugString() {
091            return super.toDebugString() + getValue();
092        }
093    }