accounting-manager-theme/src/com/sencha/gxt/theme/neptune/client/base/button/Css3ButtonGroupAppearance.java

95 lines
2.7 KiB
Java

/**
* Sencha GXT 3.1.1 - Sencha for GWT
* Copyright(c) 2007-2014, Sencha, Inc.
* licensing@sencha.com
*
* http://www.sencha.com/products/gxt/license/
*/
package com.sencha.gxt.theme.neptune.client.base.button;
import com.google.gwt.core.shared.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.StyleInjectorHelper;
import com.sencha.gxt.theme.neptune.client.ThemeDetails;
import com.sencha.gxt.widget.core.client.button.ButtonGroup.ButtonGroupAppearance;
public class Css3ButtonGroupAppearance implements ButtonGroupAppearance {
public interface Css3ButtonGroupResources extends ClientBundle {
@Source("Css3ButtonGroup.css")
Css3ButtonGroupStyle style();
ThemeDetails theme();
}
public interface Css3ButtonGroupStyle extends CssResource {
String group();
String body();
String header();
}
public interface Css3ButtonGroupTemplate extends XTemplates {
@XTemplate("<div class='{style.group}'><div class='{style.header}'></div><div class='{style.body}'></div></div>")
SafeHtml render(Css3ButtonGroupStyle style);
}
private final Css3ButtonGroupResources resources;
private final Css3ButtonGroupStyle style;
private final Css3ButtonGroupTemplate template;
public Css3ButtonGroupAppearance() {
this(GWT.<Css3ButtonGroupResources> create(Css3ButtonGroupResources.class));
}
public Css3ButtonGroupAppearance(Css3ButtonGroupResources resources) {
this.resources = resources;
style = resources.style();
template = GWT.create(Css3ButtonGroupTemplate.class);
StyleInjectorHelper.ensureInjected(resources.style(), true);
}
@Override
public void render(SafeHtmlBuilder sb) {
sb.append(template.render(style));
}
@Override
public void updateText(XElement parent, String text) {
getHeaderElement(parent).setInnerText(text);
}
@Override
public void onHideHeader(XElement parent, boolean hide) {
getHeaderElement(parent).setVisible(!hide);
}
@Override
public XElement getHeaderElement(XElement parent) {
return parent.getFirstChildElement().cast();
}
@Override
public XElement getContentElem(XElement parent) {
return parent.selectNode("." + style.body());
}
@Override
public int getFrameHeight(XElement parent) {
return resources.theme().buttonGroup().borderRadius() * 2;
}
@Override
public int getFrameWidth(XElement parent) {
return resources.theme().buttonGroup().borderRadius() * 2;
}
}