All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.geomajas.graphics.client.service.HasHandlerWidget Maven / Gradle / Ivy

The newest version!
/*
 * This is part of Geomajas, a GIS framework, http://www.geomajas.org/.
 *
 * Copyright 2008-2014 Geosparc nv, http://www.geosparc.com/, Belgium.
 *
 * The program is available in open source according to the Apache
 * License, Version 2.0. All contributions in this program are covered
 * by the Geomajas Contributors License Agreement. For full licensing
 * details, see LICENSE.txt in the project root.
 */
package org.geomajas.graphics.client.service;

import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.DomEvent.Type;
import com.google.gwt.event.dom.client.DoubleClickEvent;
import com.google.gwt.event.dom.client.DoubleClickHandler;
import com.google.gwt.event.dom.client.MouseDownEvent;
import com.google.gwt.event.dom.client.MouseDownHandler;
import com.google.gwt.event.dom.client.MouseEvent;
import com.google.gwt.event.dom.client.MouseMoveEvent;
import com.google.gwt.event.dom.client.MouseMoveHandler;
import com.google.gwt.event.dom.client.MouseOutEvent;
import com.google.gwt.event.dom.client.MouseOutHandler;
import com.google.gwt.event.dom.client.MouseOverEvent;
import com.google.gwt.event.dom.client.MouseOverHandler;
import com.google.gwt.event.dom.client.MouseUpEvent;
import com.google.gwt.event.dom.client.MouseUpHandler;
import com.google.gwt.event.dom.client.MouseWheelEvent;
import com.google.gwt.event.dom.client.MouseWheelHandler;
import com.google.gwt.event.shared.EventHandler;
import com.google.gwt.event.shared.GwtEvent;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.Widget;

/**
 * {@link Widget} wrapper that can stop event propagation and act as handler registrar.
 * 
 * @author Jan De Moerloose
 * 
 */
public class HasHandlerWidget implements HasAllMouseAndClickHandlers, IsWidget {

	private Widget widget;

	private boolean stopPropagation;

	public HasHandlerWidget(Widget widget, boolean stopPropagation) {
		this.widget = widget;
		this.stopPropagation = stopPropagation;
		StopPropagation s = new StopPropagation();
		addMouseDownHandler(s);
		addMouseUpHandler(s);
		addMouseWheelHandler(s);
		addMouseMoveHandler(s);
		addMouseOverHandler(s);
		addMouseOutHandler(s);
		addClickHandler(s);
		addDoubleClickHandler(s);
	}

	@Override
	public  HandlerRegistration addDomHandler(H handler, Type type) {
		return widget.addDomHandler(handler, type);
	}

	public boolean isStopPropagation() {
		return stopPropagation;
	}

	public void setStopPropagation(boolean stopPropagation) {
		this.stopPropagation = stopPropagation;
	}

	@Override
	public Widget asWidget() {
		return widget;
	}

	@Override
	public HandlerRegistration addMouseDownHandler(MouseDownHandler handler) {
		return widget.addDomHandler(handler, MouseDownEvent.getType());
	}

	@Override
	public void fireEvent(GwtEvent event) {
		widget.fireEvent(event);
	}

	@Override
	public HandlerRegistration addMouseUpHandler(MouseUpHandler handler) {
		return widget.addDomHandler(handler, MouseUpEvent.getType());
	}

	@Override
	public HandlerRegistration addMouseOutHandler(MouseOutHandler handler) {
		return widget.addDomHandler(handler, MouseOutEvent.getType());
	}

	@Override
	public HandlerRegistration addMouseOverHandler(MouseOverHandler handler) {
		return widget.addDomHandler(handler, MouseOverEvent.getType());
	}

	@Override
	public HandlerRegistration addMouseMoveHandler(MouseMoveHandler handler) {
		return widget.addDomHandler(handler, MouseMoveEvent.getType());
	}

	@Override
	public HandlerRegistration addMouseWheelHandler(MouseWheelHandler handler) {
		return widget.addDomHandler(handler, MouseWheelEvent.getType());
	}

	@Override
	public HandlerRegistration addClickHandler(ClickHandler handler) {
		return widget.addDomHandler(handler, ClickEvent.getType());
	}

	@Override
	public HandlerRegistration addDoubleClickHandler(DoubleClickHandler handler) {
		return widget.addDomHandler(handler, DoubleClickEvent.getType());
	}

	/**
	 * Stops event propagation.
	 * 
	 * @author Jan De Moerloose
	 * 
	 */
	class StopPropagation implements MouseDownHandler, MouseUpHandler, MouseWheelHandler, MouseMoveHandler,
			MouseOutHandler, MouseOverHandler, ClickHandler, DoubleClickHandler {

		@Override
		public void onDoubleClick(DoubleClickEvent event) {
			checkPropagation(event);
		}

		@Override
		public void onClick(ClickEvent event) {
			checkPropagation(event);
		}

		@Override
		public void onMouseOver(MouseOverEvent event) {
			checkPropagation(event);
		}

		@Override
		public void onMouseOut(MouseOutEvent event) {
			checkPropagation(event);
		}

		@Override
		public void onMouseMove(MouseMoveEvent event) {
			checkPropagation(event);
		}

		@Override
		public void onMouseWheel(MouseWheelEvent event) {
			checkPropagation(event);
		}

		@Override
		public void onMouseUp(MouseUpEvent event) {
			checkPropagation(event);
		}

		@Override
		public void onMouseDown(MouseDownEvent event) {
			checkPropagation(event);
		}

		private void checkPropagation(MouseEvent event) {
			if (stopPropagation) {
				event.stopPropagation();
			}
		}

	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy