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 event is fired when the slider is dragged.
027 *
028 * @param <T> slider value type
029 */
030 public class SlideEvent<T> extends GwtEvent<SlideHandler<T>> {
031
032 private static Type<SlideHandler<?>> TYPE;
033
034 private T value;
035
036 /**
037 * Fires a slide event on all registered handlers in the handler manager. If
038 * no such handlers exist, this method will do nothing.
039 *
040 * @param source the source of the handlers
041 * @param newValue the new slider value
042 */
043 public static <T> void fire(final HasSlideHandlers<T> source, T newValue) {
044 if (TYPE != null) {
045 SlideEvent<T> event = new SlideEvent<T>(newValue);
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<SlideHandler<?>> getType() {
056 if (TYPE == null) {
057 TYPE = new Type<SlideHandler<?>>();
058 }
059 return TYPE;
060 }
061
062 @SuppressWarnings({ "unchecked", "rawtypes" })
063 @Override
064 public Type<SlideHandler<T>> getAssociatedType() {
065 return (Type) TYPE;
066 }
067
068 @Override
069 protected void dispatch(final SlideHandler<T> handler) {
070 handler.onSlide(this);
071 }
072
073 /**
074 * Creates a slide event with slider value
075 *
076 * @param newValue the new slider value
077 */
078 protected SlideEvent(final T newValue) {
079 this.value = newValue;
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 }