Package org.gwtbootstrap3.client.ui.base.button

Source Code of org.gwtbootstrap3.client.ui.base.button.AbstractLabelButton

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 com.google.gwt.dom.client.Document;
import com.google.gwt.dom.client.Element;
import com.google.gwt.editor.client.IsEditor;
import com.google.gwt.editor.client.LeafValueEditor;
import com.google.gwt.editor.client.adapters.TakesValueEditor;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.user.client.ui.HasName;
import com.google.gwt.user.client.ui.HasValue;
import org.gwtbootstrap3.client.ui.CheckableInputButton;
import org.gwtbootstrap3.client.ui.base.HasActive;
import org.gwtbootstrap3.client.ui.base.HasFormValue;
import org.gwtbootstrap3.client.ui.base.mixin.ActiveMixin;
import org.gwtbootstrap3.client.ui.constants.ButtonType;
import org.gwtbootstrap3.client.ui.constants.Styles;
import org.gwtbootstrap3.client.ui.constants.TypeAttrType;

/**
* Base class for {@link org.gwtbootstrap3.client.ui.CheckBoxButton}
* and {@link org.gwtbootstrap3.client.ui.RadioButton} which are
* encapsulated {@code <input>} elements within {@code <label>}.
*
* @author Sven Jacobs
*/
public abstract class AbstractLabelButton extends AbstractIconButton implements HasActive, HasName, HasFormValue,
        HasValue<Boolean>, IsEditor<LeafValueEditor<Boolean>> {

    private final ActiveMixin<AbstractLabelButton> activeMixin = new ActiveMixin<AbstractLabelButton>(this);
    protected final CheckableInputButton input;
    private LeafValueEditor<Boolean> editor;

    protected AbstractLabelButton(final TypeAttrType typeAttr) {
        super(ButtonType.DEFAULT);

        input = new CheckableInputButton(typeAttr);
        input.setStyleName("");

        add(input, (Element) getElement());
        iconTextMixin.addTextWidgetToParent();
    }

    protected AbstractLabelButton(final TypeAttrType typeAttr,
                                  final String label) {

        this(typeAttr);
        setText(label);
    }

    @Override
    public void setEnabled(final boolean enabled) {
        if (enabled) {
            removeStyleName(Styles.DISABLED);
        } else {
            addStyleName(Styles.DISABLED);
        }

        input.setEnabled(enabled);
    }

    @Override
    public boolean isEnabled() {
        return input.isEnabled();
    }

    @Override
    public void setActive(final boolean active) {
        setValue(active);
    }

    @Override
    public boolean isActive() {
        return activeMixin.isActive();
    }

    @Override
    public void setName(final String name) {
        input.setName(name);
    }

    @Override
    public String getName() {
        return input.getName();
    }

    @Override
    public String getFormValue() {
        return input.getFormValue();
    }

    @Override
    public void setFormValue(final String value) {
        input.setFormValue(value);
    }

    @Override
    public void setValue(final Boolean value) {
        setValue(value, false);
    }

    @Override
    public void setValue(final Boolean value, final boolean fireEvents) {
        activeMixin.setActive(value);
        input.setValue(value, fireEvents);
    }

    @Override
    public Boolean getValue() {
        return input.getValue();
    }

    @Override
    public HandlerRegistration addValueChangeHandler(final ValueChangeHandler<Boolean> handler) {
        return input.addValueChangeHandler(handler);
    }

    @Override
    protected Element createElement() {
        return Document.get().createLabelElement();
    }

    @Override
    public LeafValueEditor<Boolean> asEditor() {
        if (editor == null) {
            editor = TakesValueEditor.of(this);
        }
        return editor;
    }
}
TOP

Related Classes of org.gwtbootstrap3.client.ui.base.button.AbstractLabelButton

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.