com.github.gwtbootstrap.showcase.client.Popovers.java Source code

Java tutorial

Introduction

Here is the source code for com.github.gwtbootstrap.showcase.client.Popovers.java

Source

/*
 *  Copyright 2012 GWT-Bootstrap
 *
 *  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.
 */
package com.github.gwtbootstrap.showcase.client;

import java.util.Arrays;

import com.github.gwtbootstrap.client.ui.CheckBox;
import com.github.gwtbootstrap.client.ui.Divider;
import com.github.gwtbootstrap.client.ui.IntegerBox;
import com.github.gwtbootstrap.client.ui.NavLink;
import com.github.gwtbootstrap.client.ui.NavText;
import com.github.gwtbootstrap.client.ui.Popover;
import com.github.gwtbootstrap.client.ui.TextBox;
import com.github.gwtbootstrap.client.ui.ValueListBox;
import com.github.gwtbootstrap.client.ui.constants.Placement;
import com.github.gwtbootstrap.client.ui.constants.Trigger;
import com.github.gwtbootstrap.showcase.client.util.EnumRenderer;
import com.google.gwt.core.client.GWT;
import com.google.gwt.editor.client.Editor;
import com.google.gwt.editor.client.SimpleBeanEditorDriver;
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Widget;

public class Popovers extends Composite implements Editor<Popover> {

    @UiField
    @Editor.Ignore
    NavLink fooNavlink;

    @UiField
    @Editor.Ignore
    NavLink barNavlink;

    @UiField
    @Editor.Ignore
    Divider divider;

    @UiField
    @Editor.Ignore
    NavText navText;

    @UiField
    Popover popover;

    @UiField
    CheckBox animation;

    @UiField
    TextBox text;

    @UiField
    TextBox heading;

    @UiField(provided = true)
    ValueListBox<Placement> placement = new ValueListBox<Placement>(
            new EnumRenderer<Placement>("choose display placement"));

    @UiField(provided = true)
    ValueListBox<Trigger> trigger = new ValueListBox<Trigger>(new EnumRenderer<Trigger>("choose trigger"));

    @UiField
    IntegerBox showDelay;

    @UiField
    IntegerBox hideDelay;

    interface Driver extends SimpleBeanEditorDriver<Popover, Popovers> {
    }

    Driver driver = GWT.create(Driver.class);

    private static PopoversUiBinder uiBinder = GWT.create(PopoversUiBinder.class);

    interface PopoversUiBinder extends UiBinder<Widget, Popovers> {
    }

    public Popovers() {

        initWidget(uiBinder.createAndBindUi(this));

        placement.setAcceptableValues(Arrays.asList(Placement.values()));
        trigger.setAcceptableValues(Arrays.asList(Trigger.values()));

        driver.initialize(this);

        driver.edit(popover);

        setupPopover(fooNavlink, "Foo", "say foo!");
        setupPopover(barNavlink, "Bar", "say bar!");
        setupPopover(divider, "Divider", "It's a divider");
        setupPopover(navText, "NavText", "You can use this after login.");
    }

    private void setupPopover(Widget w, String heading, String message) {
        Popover popover = new Popover();

        popover.setWidget(w);

        popover.setText(message);

        popover.setHeading(heading);

        popover.setPlacement(Placement.RIGHT);

        popover.reconfigure();
    }

    @UiHandler({ "text", "heading" })
    public void onChangeText(ValueChangeEvent<String> e) {
        if (e.getValue() == null) {
            return;
        }
        reconfigurePopover();
    }

    @UiHandler({ "showDelay", "hideDelay" })
    public void onChangeDelay(ValueChangeEvent<Integer> e) {
        if (e.getValue() == null) {
            return;
        }
        reconfigurePopover();
    }

    @UiHandler("placement")
    public void onChangePlacement(ValueChangeEvent<Placement> e) {
        if (e.getValue() == null) {
            return;
        }
        reconfigurePopover();
    }

    @UiHandler("trigger")
    public void onChangeTrigger(ValueChangeEvent<Trigger> e) {
        if (e.getValue() == null) {
            return;
        }
        reconfigurePopover();
    }

    @UiHandler("animation")
    public void onChangeAnimation(ValueChangeEvent<Boolean> e) {
        if (e.getValue() == null) {
            return;
        }
        reconfigurePopover();
    }

    private void reconfigurePopover() {

        popover = driver.flush();

        if (popover.getText() == null || popover.getHeading() == null || popover.getTrigger() == null
                || popover.getPlacement() == null) {
            return;
        }

        popover.reconfigure();

    }

}