Search in sources :

Example 6 with ListItem

use of gwt.material.design.client.ui.html.ListItem in project gwt-material by GwtMaterialDesign.

the class MaterialCollapsibleBody method add.

@Override
public void add(final Widget child) {
    if (child instanceof UnorderedList) {
        for (Widget w : (UnorderedList) child) {
            if (w instanceof ListItem) {
                w.getElement().getStyle().setDisplay(Style.Display.BLOCK);
                provideActiveClickHandler(w);
            }
        }
    } else if (child instanceof ListItem) {
        child.getElement().getStyle().setDisplay(Style.Display.BLOCK);
        provideActiveClickHandler(child);
    }
    super.add(child);
}
Also used : Widget(com.google.gwt.user.client.ui.Widget) MaterialWidget(gwt.material.design.client.base.MaterialWidget) UnorderedList(gwt.material.design.client.ui.html.UnorderedList) ListItem(gwt.material.design.client.ui.html.ListItem)

Example 7 with ListItem

use of gwt.material.design.client.ui.html.ListItem in project gwt-material by GwtMaterialDesign.

the class AbstractSideNav method wrap.

public Widget wrap(Widget child) {
    if (child instanceof MaterialImage) {
        child.getElement().getStyle().setProperty("border", "1px solid #e9e9e9");
        child.getElement().getStyle().setProperty("textAlign", "center");
    }
    // Check whether the widget is not selectable by default
    boolean isNotSelectable = false;
    if (child instanceof MaterialWidget) {
        MaterialWidget widget = (MaterialWidget) child;
        if (widget.getInitialClasses() != null) {
            if (widget.getInitialClasses().length > 0) {
                if (child instanceof HasNoSideNavSelection) {
                    isNotSelectable = true;
                }
            }
        }
    }
    if (!(child instanceof ListItem)) {
        // Direct list item not collapsible
        final ListItem listItem = new ListItem();
        if (child instanceof MaterialCollapsible) {
            listItem.getElement().getStyle().setBackgroundColor("transparent");
        }
        if (child instanceof HasWaves) {
            listItem.setWaves(((HasWaves) child).getWaves());
            ((HasWaves) child).setWaves(null);
        }
        if (child instanceof HasNoSideNavSelection) {
            super.add(child);
        } else {
            listItem.add(child);
            child = listItem;
        }
    }
    // Collapsible and Side Porfile should not be selectable
    final Widget finalChild = child;
    if (!isNotSelectable) {
        // Active click handler
        registerHandler(finalChild.addDomHandler(event -> {
            clearActive();
            finalChild.addStyleName(CssName.ACTIVE);
        }, ClickEvent.getType()));
    }
    child.getElement().getStyle().setDisplay(Style.Display.BLOCK);
    return child;
}
Also used : JsSideNavOptions(gwt.material.design.client.js.JsSideNavOptions) ListItem(gwt.material.design.client.ui.html.ListItem) ClickEvent(com.google.gwt.event.dom.client.ClickEvent) DOMHelper(gwt.material.design.client.base.helper.DOMHelper) RootPanel(com.google.gwt.user.client.ui.RootPanel) HandlerRegistration(com.google.gwt.event.shared.HandlerRegistration) Scheduler(com.google.gwt.core.client.Scheduler) Widget(com.google.gwt.user.client.ui.Widget) gwt.material.design.client.constants(gwt.material.design.client.constants) Style(com.google.gwt.dom.client.Style) gwt.material.design.client.ui(gwt.material.design.client.ui) Element(com.google.gwt.dom.client.Element) JsMaterialElement(gwt.material.design.client.js.JsMaterialElement) Window(com.google.gwt.user.client.Window) JsMaterialElement.$(gwt.material.design.client.js.JsMaterialElement.$) StyleMixin(gwt.material.design.client.base.mixin.StyleMixin) Document(com.google.gwt.dom.client.Document) gwt.material.design.client.events(gwt.material.design.client.events) Widget(com.google.gwt.user.client.ui.Widget) ListItem(gwt.material.design.client.ui.html.ListItem)

Example 8 with ListItem

use of gwt.material.design.client.ui.html.ListItem in project gwt-material by GwtMaterialDesign.

the class MaterialCollapsibleBody method checkActiveState.

/**
 * Checks if this child holds the current active state.
 * If the child is or contains the active state it is applied.
 */
protected void checkActiveState(Widget child) {
    // Check if this widget has a valid href
    String href = child.getElement().getAttribute("href");
    String url = Window.Location.getHref();
    int pos = url.indexOf("#");
    String location = pos >= 0 ? url.substring(pos, url.length()) : "";
    if (!href.isEmpty() && location.startsWith(href)) {
        ListItem li = findListItemParent(child);
        if (li != null) {
            makeActive(li);
        }
    } else if (child instanceof HasWidgets) {
        // Recursive check
        for (Widget w : (HasWidgets) child) {
            checkActiveState(w);
        }
    }
}
Also used : Widget(com.google.gwt.user.client.ui.Widget) MaterialWidget(gwt.material.design.client.base.MaterialWidget) ListItem(gwt.material.design.client.ui.html.ListItem) HasWidgets(com.google.gwt.user.client.ui.HasWidgets)

Example 9 with ListItem

use of gwt.material.design.client.ui.html.ListItem in project gwt-material by GwtMaterialDesign.

the class MaterialAnimation method animate.

public void animate(Widget widget, Functions.Func callback) {
    if (widget != null) {
        this.widget = widget;
    } else {
        throw new NullPointerException("Cannot animate on a null widget.");
    }
    if (startTimer != null) {
        // Exit early since we are already animating.
        return;
    }
    final JsMaterialElement element = $(widget.getElement());
    element.css("animation-duration", duration + "ms");
    element.css("-webkit-animation-duration", duration + "ms");
    switch(transition) {
        case SHOW_STAGGERED_LIST:
            if (widget instanceof UnorderedList) {
                UnorderedList ul = (UnorderedList) widget;
                for (Widget li : ul) {
                    if (li instanceof ListItem) {
                        li.getElement().getStyle().setOpacity(0);
                    }
                }
            }
            break;
        case SHOW_GRID:
            widget.getElement().getStyle().setOpacity(0);
            break;
        default:
            break;
    }
    startTimer = new Timer() {

        @Override
        public void run() {
            switch(transition) {
                case SHOW_STAGGERED_LIST:
                    JsMaterialElement.showStaggeredList(element);
                    break;
                case FADE_IN_IMAGE:
                    JsMaterialElement.fadeInImage(element);
                    break;
                case SHOW_GRID:
                    widget.addStyleName(CssName.DISPLAY_ANIMATION);
                    JsMaterialElement.showGrid(element);
                    break;
                case CLOSE_GRID:
                    widget.addStyleName(CssName.DISPLAY_ANIMATION);
                    JsMaterialElement.closeGrid(element);
                    break;
                default:
                    // For core animation components
                    if (infinite) {
                        widget.addStyleName(CssName.INFINITE);
                    }
                    widget.addStyleName("animated " + transition.getCssName());
                    // Only start the end timer if its not already active.
                    if (endTimer == null) {
                        endTimer = new Timer() {

                            @Override
                            public void run() {
                                if (callback != null) {
                                    callback.call();
                                }
                                if (!infinite) {
                                    $(element).removeClass("animated " + transition.getCssName());
                                }
                                endTimer = null;
                                startTimer = null;
                            }
                        };
                        endTimer.schedule(duration);
                    }
                    break;
            }
        }
    };
    if (delay < 1) {
        startTimer.run();
    } else {
        startTimer.schedule(delay);
    }
    widget.removeStyleName(CssName.MATERIALIZE_CSS);
}
Also used : JsMaterialElement(gwt.material.design.client.js.JsMaterialElement) Timer(com.google.gwt.user.client.Timer) Widget(com.google.gwt.user.client.ui.Widget) UnorderedList(gwt.material.design.client.ui.html.UnorderedList) ListItem(gwt.material.design.client.ui.html.ListItem)

Example 10 with ListItem

use of gwt.material.design.client.ui.html.ListItem in project gwt-material by GwtMaterialDesign.

the class MaterialDropDown method add.

@Override
public void add(final Widget child) {
    String tagName = child.getElement().getTagName();
    if (child instanceof ListItem || tagName.toLowerCase().startsWith("li")) {
        child.getElement().getStyle().setDisplay(Style.Display.BLOCK);
        add(child, (Element) getElement());
    } else {
        ListItem li = new ListItem(child);
        // Checks if there are sub dropdown components
        if (child instanceof MaterialLink) {
            MaterialLink link = (MaterialLink) child;
            for (int i = 0; i < link.getWidgetCount(); i++) {
                if (link.getWidget(i) instanceof MaterialDropDown) {
                    registerHandler(link.addClickHandler(DomEvent::stopPropagation));
                    link.stopTouchStartEvent();
                }
            }
        }
        if (child instanceof HasWaves) {
            li.setWaves(((HasWaves) child).getWaves());
            ((HasWaves) child).setWaves(null);
        }
        li.getElement().getStyle().setDisplay(Style.Display.BLOCK);
        add(li, (Element) getElement());
    }
}
Also used : ListItem(gwt.material.design.client.ui.html.ListItem)

Aggregations

ListItem (gwt.material.design.client.ui.html.ListItem)13 Widget (com.google.gwt.user.client.ui.Widget)8 UnorderedList (gwt.material.design.client.ui.html.UnorderedList)3 Element (com.google.gwt.dom.client.Element)2 Style (com.google.gwt.dom.client.Style)2 ClickEvent (com.google.gwt.event.dom.client.ClickEvent)2 HandlerRegistration (com.google.gwt.event.shared.HandlerRegistration)2 MaterialWidget (gwt.material.design.client.base.MaterialWidget)2 DOMHelper (gwt.material.design.client.base.helper.DOMHelper)2 JsMaterialElement (gwt.material.design.client.js.JsMaterialElement)2 JsMaterialElement.$ (gwt.material.design.client.js.JsMaterialElement.$)2 GWT (com.google.gwt.core.client.GWT)1 Scheduler (com.google.gwt.core.client.Scheduler)1 Document (com.google.gwt.dom.client.Document)1 DomEvent (com.google.gwt.event.dom.client.DomEvent)1 HasSelectionHandlers (com.google.gwt.event.logical.shared.HasSelectionHandlers)1 SelectionEvent (com.google.gwt.event.logical.shared.SelectionEvent)1 SelectionHandler (com.google.gwt.event.logical.shared.SelectionHandler)1 UiConstructor (com.google.gwt.uibinder.client.UiConstructor)1 DOM (com.google.gwt.user.client.DOM)1