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 start event is fired when dragging starts.
027 *
028 * @param <T> slider value type
029 */
030 public class SlideStartEvent<T> extends GwtEvent<SlideStartHandler<T>> {
031
032 private static Type<SlideStartHandler<?>> TYPE;
033
034 private T value;
035
036 /**
037 * Fires a slide start 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 HasSlideStartHandlers<T> source, final T value) {
044 if (TYPE != null) {
045 SlideStartEvent<T> event = new SlideStartEvent<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<SlideStartHandler<?>> getType() {
056 if (TYPE == null) {
057 TYPE = new Type<SlideStartHandler<?>>();
058 }
059 return TYPE;
060 }
061
062 @SuppressWarnings({ "unchecked", "rawtypes" })
063 @Override
064 public Type<SlideStartHandler<T>> getAssociatedType() {
065 return (Type)TYPE;
066 }
067
068 @Override
069 protected void dispatch(final SlideStartHandler<T> handler) {
070 handler.onSlideStart(this);
071 }
072
073 /**
074 * Creates a slide start event.
075 *
076 * @param value the new slider value
077 */
078 protected SlideStartEvent(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 }