package de.swm.gwt.client.utils;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.event.shared.GwtEvent;
import com.google.gwt.event.shared.HandlerRegistration;
import java.util.ArrayList;
import java.util.List;
/**
* Ermoglichet einer Komponente die einen Clickehandler benoetigt weitere ClickHanlder zur laufzeit hinzuzufuegen.
*
* @author wiese.daniel <br>
* copyright (C) 2011, SWM Services GmbH
*/
public class ShimClickHandler implements ClickHandler, HasClickHandlers {
private final List<ClickHandler> clickHandlers = new ArrayList<ClickHandler>();
private boolean isEnabled = true;
@Override
public void onClick(ClickEvent event) {
if (isEnabled) {
for (ClickHandler clickHandler : clickHandlers) {
clickHandler.onClick(event);
}
}
}
/**
* Enabled / disabled the shim click hanlder.
*
* @param isEnabled true is enabled.
*/
public void setEnabled(boolean isEnabled) {
this.isEnabled = isEnabled;
}
/**
* Removes all click Hanlders.
*/
public void removeAll() {
clickHandlers.clear();
}
@Override
public void fireEvent(GwtEvent<?> event) {
throw new IllegalArgumentException("Not supported");
}
@Override
public HandlerRegistration addClickHandler(final ClickHandler handler) {
clickHandlers.add(handler);
return new HandlerRegistration() {
@Override
public void removeHandler() {
clickHandlers.remove(handler);
}
};
}
}