/**
* Sencha GXT 3.0.0b - Sencha for GWT
* Copyright(c) 2007-2012, Sencha, Inc.
* licensing@sencha.com
*
* http://www.sencha.com/products/gxt/license/
*/
package com.sencha.gxt.desktop.client.theme.base.startmenu;
import com.google.gwt.core.client.GWT;
import com.google.gwt.resources.client.ClientBundle;
import com.google.gwt.resources.client.CssResource;
import com.google.gwt.safehtml.shared.SafeHtml;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
import com.sencha.gxt.core.client.XTemplates;
import com.sencha.gxt.core.client.dom.XElement;
import com.sencha.gxt.core.client.resources.CommonStyles;
import com.sencha.gxt.core.client.resources.StyleInjectorHelper;
import com.sencha.gxt.desktop.client.widget.StartMenu;
import com.sencha.gxt.widget.core.client.menu.Menu;
import com.sencha.gxt.widget.core.client.menu.MenuItem;
public class StartMenuDefaultAppearance implements StartMenu.Appearance {
public interface StartMenuResources extends ClientBundle {
@Source({"StartMenu.css"})
StartMenuStyle style();
}
public interface StartMenuStyle extends CssResource {
String body();
String heading();
String mainMenu();
String startMenu();
String toolMenu();
}
public interface StartMenuTemplate extends XTemplates {
@XTemplate(source = "StartMenu.html")
SafeHtml template(StartMenuStyle style, String ignoreClass);
}
@SuppressWarnings("unused")
private StartMenuResources resources;
private StartMenuStyle style;
private StartMenuTemplate template;
public StartMenuDefaultAppearance() {
this(GWT.<StartMenuResources> create(StartMenuResources.class),
GWT.<StartMenuTemplate> create(StartMenuTemplate.class));
}
public StartMenuDefaultAppearance(StartMenuResources resources, StartMenuTemplate template) {
this.resources = resources;
this.style = resources.style();
this.template = template;
StyleInjectorHelper.ensureInjected(this.style, true);
}
public void render(SafeHtmlBuilder result) {
result.append(template.template((StartMenuStyle) style, CommonStyles.get().ignore()));
}
@Override
public void setHeading(XElement parent, MenuItem heading) {
XElement element = parent.selectNode("." + style.heading());
element.removeChildren();
element.appendChild(heading.getElement());
}
@Override
public void setMainMenu(XElement parent, Menu mainMenu) {
XElement element = parent.selectNode("." + style.mainMenu());
element.removeChildren();
element.appendChild(mainMenu.getElement());
}
@Override
public void setToolMenu(XElement parent, Menu toolMenu) {
XElement element = parent.selectNode("." + style.toolMenu());
element.removeChildren();
element.appendChild(toolMenu.getElement());
}
}