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);
}
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;
}
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);
}
}
}
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);
}
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());
}
}
Aggregations