![JAR search and dependency download from the Maven repository](/logo.png)
com.sencha.gxt.theme.base.client.grid.GroupingViewDefaultAppearance Maven / Gradle / Ivy
/**
* Sencha GXT 3.0.0 - Sencha for GWT
* Copyright(c) 2007-2012, Sencha, Inc.
* [email protected]
*
* http://www.sencha.com/products/gxt/license/
*/
package com.sencha.gxt.theme.base.client.grid;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Style.Display;
import com.google.gwt.resources.client.ClientBundle;
import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.safehtml.shared.SafeHtml;
import com.sencha.gxt.core.client.GXT;
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.widget.core.client.grid.GroupingView;
import com.sencha.gxt.widget.core.client.grid.GroupingView.GroupingData;
import com.sencha.gxt.widget.core.client.grid.GroupingView.GroupingViewAppearance;
public class GroupingViewDefaultAppearance implements GroupingViewAppearance {
@SuppressWarnings("rawtypes")
public interface DefaultHeaderTemplate extends XTemplates, GroupHeaderTemplate {
@Override
@XTemplate("{groupInfo.value}")
public SafeHtml renderGroupHeader(GroupingData groupInfo);
}
public interface GroupHeaderTemplate {
SafeHtml renderGroupHeader(GroupingData groupInfo);
}
public interface GroupingViewResources extends ClientBundle {
ImageResource groupBy();
@Source("GroupingView.css")
GroupingView.GroupingViewStyle style();
}
public interface GroupTemplate {
SafeHtml renderGroup(GroupingView.GroupingViewStyle style, SafeHtml groupHeader, SafeHtml rows, SafeHtml groupSummary);
}
private final GroupingViewResources resources;
private GroupingView.GroupingViewStyle style;
private GroupHeaderTemplate> headerTemplate = GWT.create(DefaultHeaderTemplate.class);
public GroupingViewDefaultAppearance() {
this(GWT. create(GroupingViewResources.class));
}
public GroupingViewDefaultAppearance(GroupingViewResources resources) {
this.resources = resources;
this.style = this.resources.style();
StyleInjectorHelper.ensureInjected(style, true);
}
@Override
public XElement findHead(XElement element) {
return element.findParent("." + style.gridGroupHead(), 10);
}
@Override
public XElement getGroup(XElement head) {
return head.getParentElement().cast();
}
@Override
public ImageResource groupByIcon() {
return resources.groupBy();
}
@Override
public boolean isCollapsed(XElement group) {
return group.hasClassName(style.gridGroupCollapsed());
}
@Override
public void onGroupExpand(XElement group, boolean expanded) {
group.setClassName(style.gridGroupCollapsed(), !expanded);
if (GXT.isIE7()) {
group.getNextSiblingElement().getStyle().setDisplay(expanded ? Display.BLOCK : Display.NONE);
} else {
group.getNextSiblingElement().getStyle().setProperty("display", expanded ? "table-row" : "none");
}
}
@SuppressWarnings({"unchecked", "rawtypes"})
@Override
public SafeHtml renderGroupHeader(GroupingData> groupInfo) {
return headerTemplate.renderGroupHeader((GroupingData) groupInfo);
}
public void setHeaderTemplate(GroupHeaderTemplate> headerTemplate) {
this.headerTemplate = headerTemplate;
}
@Override
public GroupingView.GroupingViewStyle style() {
return style;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy