/* * Copyright 2014 cruxframework.org. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package org.cruxframework.crux.core.client.select; import org.cruxframework.crux.core.client.event.HasSelectEndHandlers; import org.cruxframework.crux.core.client.event.HasSelectHandlers; import org.cruxframework.crux.core.client.event.HasSelectStartHandlers; import org.cruxframework.crux.core.client.event.SelectEndEvent; import org.cruxframework.crux.core.client.event.SelectEndHandler; import org.cruxframework.crux.core.client.event.SelectEvent; import org.cruxframework.crux.core.client.event.SelectHandler; import org.cruxframework.crux.core.client.event.SelectStartEvent; import org.cruxframework.crux.core.client.event.SelectStartHandler; import com.google.gwt.core.client.GWT; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.dom.client.MouseDownEvent; import com.google.gwt.event.dom.client.MouseDownHandler; import com.google.gwt.event.dom.client.MouseUpEvent; import com.google.gwt.event.dom.client.MouseUpHandler; import com.google.gwt.event.dom.client.TouchEndEvent; import com.google.gwt.event.dom.client.TouchEndHandler; import com.google.gwt.event.dom.client.TouchMoveEvent; import com.google.gwt.event.dom.client.TouchMoveHandler; import com.google.gwt.event.dom.client.TouchStartEvent; import com.google.gwt.event.dom.client.TouchStartHandler; import com.google.gwt.event.shared.HandlerRegistration; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Widget; /** * @author Thiago da Rosa de Bustamante * */ public abstract class SelectableWidget extends Composite implements HasSelectHandlers, HasSelectStartHandlers, HasSelectEndHandlers { protected SelectEventsHandler selectEventsHandler; @Override protected void initWidget(Widget widget) { super.initWidget(widget); initializeEventsHandler(); } protected void initializeEventsHandler() { selectEventsHandler = GWT.create(SelectEventsHandler.class); selectEventsHandler.setSelectableWidget(this); selectEventsHandler.handleWidget(); } /** * Allows changing the tap event threshold property. * @param tapEventThreshold */ public void setTapEventThreshold(int tapEventThreshold) { selectEventsHandler.setTapEventThreshold(tapEventThreshold); } @Override public HandlerRegistration addSelectHandler(SelectHandler handler) { return addHandler(handler, SelectEvent.getType()); } @Override public HandlerRegistration addSelectStartHandler(SelectStartHandler handler) { return addHandler(handler, SelectStartEvent.getType()); } @Override public HandlerRegistration addSelectEndHandler(SelectEndHandler handler) { return addHandler(handler, SelectEndEvent.getType()); } public void select() { SelectEvent.fire(this); } public void setStopPropagationTouchEvents(boolean stopPropagationTouchEvents) { selectEventsHandler.setStopPropagationTouchEvents(stopPropagationTouchEvents); } public void setPreventDefaultTouchEvents(boolean preventDefaultTouchEvents) { selectEventsHandler.setPreventDefaultTouchEvents(preventDefaultTouchEvents); } public void setAllowPropagationToNonSelectableWidgets(boolean allowPropagationToNonSelectableWidgets) { selectEventsHandler.setAllowPropagationToNonSelectableWidgets(allowPropagationToNonSelectableWidgets); } public SelectEventsHandler getSelectEventsHandler() { return selectEventsHandler; } protected HandlerRegistration addTouchEndHandler(TouchEndHandler handler) { return addDomHandler(handler, TouchEndEvent.getType()); } protected HandlerRegistration addTouchMoveHandler(TouchMoveHandler handler) { return addDomHandler(handler, TouchMoveEvent.getType()); } protected HandlerRegistration addTouchStartHandler(TouchStartHandler handler) { return addDomHandler(handler, TouchStartEvent.getType()); } protected HandlerRegistration addClickHandler(ClickHandler handler) { return addDomHandler(handler, ClickEvent.getType()); } protected HandlerRegistration addMouseDownHandler(MouseDownHandler handler) { return addDomHandler(handler, MouseDownEvent.getType()); } protected HandlerRegistration addMouseUpHandler(MouseUpHandler handler) { return addDomHandler(handler, MouseUpEvent.getType()); } }