![JAR search and dependency download from the Maven repository](/logo.png)
com.sencha.gxt.theme.base.client.menu.MenuItemBaseAppearance Maven / Gradle / Ivy
/**
* Ext GWT 3.0.0-rc - Ext for GWT
* Copyright(c) 2007-2011, Sencha, Inc.
* [email protected]
*
* http://sencha.com/license
*/
package com.sencha.gxt.theme.base.client.menu;
import com.google.gwt.dom.client.Element;
import com.google.gwt.resources.client.CssResource;
import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.safehtml.shared.SafeHtml;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
import com.google.gwt.user.client.ui.Widget;
import com.sencha.gxt.core.client.XTemplates;
import com.sencha.gxt.core.client.dom.XElement;
import com.sencha.gxt.core.client.resources.StyleInjectorHelper;
import com.sencha.gxt.core.client.util.IconHelper;
import com.sencha.gxt.core.client.util.Util;
import com.sencha.gxt.widget.core.client.menu.MenuItem;
public class MenuItemBaseAppearance implements MenuItem.MenuItemAppearance {
public interface MenuItemResources {
MenuItemStyle style();
}
public interface MenuItemStyle extends CssResource {
String menuItem();
String menuItemArrow();
String menuItemIcon();
String menuListItem();
}
public interface MenuItemTemplate extends XTemplates {
@XTemplates.XTemplate(source = "MenuItem.html")
SafeHtml template(MenuItemStyle style);
}
private final MenuItemStyle style;
private MenuItemTemplate template;
public MenuItemBaseAppearance(MenuItemResources resources, MenuItemTemplate template) {
style = resources.style();
this.template = template;
StyleInjectorHelper.ensureInjected(this.style, true);
}
public XElement getAnchor(XElement parent) {
return XElement.as(parent.getFirstChild());
}
public void onAddSubMenu(XElement parent) {
parent.getFirstChildElement().addClassName(style.menuItemArrow());
}
public void onRemoveSubMenu(XElement parent) {
parent.getFirstChildElement().removeClassName(style.menuItemArrow());
}
public void render(SafeHtmlBuilder result) {
result.append(template.template(style));
}
public void setIcon(XElement parent, ImageResource icon) {
XElement anchor = getAnchor(parent);
XElement oldIcon = parent.selectNode("." + style.menuItemIcon());
if (oldIcon != null) {
oldIcon.removeFromParent();
}
if (icon != null) {
Element e = IconHelper.getElement(icon);
e.addClassName(style.menuItemIcon());
anchor.insertChild(e, 0);
}
}
@Override
public void setText(XElement parent, String text, boolean asHtml) {
XElement oldIcon = parent.selectNode("." + style.menuItemIcon());
if (asHtml || Util.isEmptyString(text)) {
getAnchor(parent).setInnerHTML(Util.isEmptyString(text) ? " " : text);
} else {
getAnchor(parent).setInnerText(text);
}
if (oldIcon != null) {
getAnchor(parent).insertFirst(oldIcon);
}
}
@Override
public void setWidget(XElement parent, Widget widget) {
XElement oldIcon = parent.selectNode("." + style.menuItemIcon());
getAnchor(parent).setInnerHTML("");
getAnchor(parent).appendChild(widget.getElement());
if (oldIcon != null) {
getAnchor(parent).insertFirst(oldIcon);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy