package org.gwtbootstrap3.client.ui.base.button;
/*
* #%L
* GwtBootstrap3
* %%
* Copyright (C) 2013 GwtBootstrap3
* %%
* 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.
* #L%
*/
import org.gwtbootstrap3.client.ui.constants.IconType;
import cc.kune.common.shared.res.KuneIcon;
import com.google.gwt.dom.client.Document;
import com.google.gwt.dom.client.Element;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.DragEndEvent;
import com.google.gwt.event.dom.client.DragEndHandler;
import com.google.gwt.event.dom.client.DragEnterEvent;
import com.google.gwt.event.dom.client.DragEnterHandler;
import com.google.gwt.event.dom.client.DragEvent;
import com.google.gwt.event.dom.client.DragHandler;
import com.google.gwt.event.dom.client.DragLeaveEvent;
import com.google.gwt.event.dom.client.DragLeaveHandler;
import com.google.gwt.event.dom.client.DragOverEvent;
import com.google.gwt.event.dom.client.DragOverHandler;
import com.google.gwt.event.dom.client.DragStartEvent;
import com.google.gwt.event.dom.client.DragStartHandler;
import com.google.gwt.event.dom.client.DropEvent;
import com.google.gwt.event.dom.client.DropHandler;
import com.google.gwt.event.dom.client.HasAllDragAndDropHandlers;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.resources.client.ImageResource;
/**
* Button based on {@code <button>} element with different types and sizes.
* <p/>
* <h3>UiBinder example</h3>
* <p/>
*
* <pre>
* {@code
* <b:Button type="PRIMARY">Save</b:Button>
* <b:Button type="DANGER">Delete</b:Button>
* <b:Button type="INFO" block="true>I'm a block level button</b:Button>
* }
* </pre>
*
* @author Sven Jacobs
* @author Vicente J. Ruiz Jurado (added drag&drop, and other kind of icons, see
* <a href="https://github.com/gwtbootstrap3/gwtbootstrap3/issues/213">
* this bug</a>)
* @see org.gwtbootstrap3.client.ui.base.button.CustomAbstractToggleButton
*/
public class CustomButton extends CustomAbstractToggleButton implements HasClickHandlers,
HasAllDragAndDropHandlers {
/**
* Creates button with DEFAULT type.
*/
public CustomButton() {
}
/**
* Creates button with specified text
*
* @param text
* Text contents of button
*/
public CustomButton(final String text) {
setText(text);
}
public CustomButton(final String text, final ClickHandler handler) {
this(text);
super.addClickHandler(handler);
}
public CustomButton(final String text, final IconType iconType, final ClickHandler clickHandler) {
this(text, clickHandler);
setIcon(iconType);
}
@Override
public HandlerRegistration addDragEndHandler(final DragEndHandler handler) {
return addDomHandler(handler, DragEndEvent.getType());
}
@Override
public HandlerRegistration addDragEnterHandler(final DragEnterHandler handler) {
return addDomHandler(handler, DragEnterEvent.getType());
}
@Override
public HandlerRegistration addDragHandler(final DragHandler handler) {
return addDomHandler(handler, DragEvent.getType());
}
@Override
public HandlerRegistration addDragLeaveHandler(final DragLeaveHandler handler) {
return addDomHandler(handler, DragLeaveEvent.getType());
}
@Override
public HandlerRegistration addDragOverHandler(final DragOverHandler handler) {
return addDomHandler(handler, DragOverEvent.getType());
}
@Override
public HandlerRegistration addDragStartHandler(final DragStartHandler handler) {
return addDomHandler(handler, DragStartEvent.getType());
}
@Override
public HandlerRegistration addDropHandler(final DropHandler handler) {
return addDomHandler(handler, DropEvent.getType());
}
@Override
protected Element createElement() {
return Document.get().createPushButtonElement().cast();
}
@Override
public void setIcon(final KuneIcon icon) {
super.setIcon(icon);
}
@Override
public void setIconBackColor(final String backgroundColor) {
super.setIconBackColor(backgroundColor);
}
@Override
public void setIconResource(final ImageResource icon) {
super.setIconResource(icon);
}
@Override
public void setIconRightResource(final ImageResource icon) {
super.setIconRightResource(icon);
}
@Override
public void setIconStyle(final String style) {
super.setIconStyle(style);
}
@Override
public void setIconUrl(final String url) {
super.setIconUrl(url);
}
}