001package org.gwtbootstrap3.client.ui;
002
003/*
004 * #%L
005 * GwtBootstrap3
006 * %%
007 * Copyright (C) 2013 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
023import org.gwtbootstrap3.client.ui.base.button.AbstractToggleButton;
024import org.gwtbootstrap3.client.ui.constants.IconType;
025
026import com.google.gwt.dom.client.Document;
027import com.google.gwt.dom.client.Element;
028import com.google.gwt.event.dom.client.ClickHandler;
029
030/**
031 * Button based on {@code <button>} element with different types and sizes.
032 * <p/>
033 * <h3>UiBinder example</h3>
034 * <p/>
035 * <pre>
036 * {@code
037 *     <b:Button type="PRIMARY">Save</b:Button>
038 *     <b:Button type="DANGER">Delete</b:Button>
039 *     <b:Button type="INFO" block="true>I'm a block level button</b:Button>
040 * }
041 * </pre>
042 *
043 * @author Sven Jacobs
044 * @see org.gwtbootstrap3.client.ui.base.button.AbstractToggleButton
045 * @see SubmitButton
046 */
047public class Button extends AbstractToggleButton {
048
049    /**
050     * Creates button with DEFAULT type.
051     */
052    public Button() {
053    }
054
055    /**
056     * Creates button with specified text
057     *
058     * @param text Text contents of button
059     */
060    public Button(final String text) {
061        setText(text);
062    }
063
064    public Button(final String text, final ClickHandler handler) {
065        this(text);
066        super.addClickHandler(handler);
067    }
068
069    public Button(final String text, final IconType iconType, final ClickHandler clickHandler) {
070        this(text, clickHandler);
071        setIcon(iconType);
072    }
073
074    @Override
075    protected Element createElement() {
076        return Document.get().createPushButtonElement().cast();
077    }
078}