![JAR search and dependency download from the Maven repository](/logo.png)
com.sencha.gxt.state.client.GridStateHandler Maven / Gradle / Ivy
/**
* Sencha GXT 3.0.1 - Sencha for GWT
* Copyright(c) 2007-2012, Sencha, Inc.
* [email protected]
*
* http://www.sencha.com/products/gxt/license/
*/
package com.sencha.gxt.state.client;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import com.sencha.gxt.core.client.ValueProvider;
import com.sencha.gxt.data.shared.SortDir;
import com.sencha.gxt.data.shared.Store.StoreSortInfo;
import com.sencha.gxt.state.client.GridStateHandler.GridState;
import com.sencha.gxt.widget.core.client.event.ColumnWidthChangeEvent;
import com.sencha.gxt.widget.core.client.event.ColumnWidthChangeEvent.ColumnWidthChangeHandler;
import com.sencha.gxt.widget.core.client.event.SortChangeEvent;
import com.sencha.gxt.widget.core.client.event.SortChangeEvent.SortChangeHandler;
import com.sencha.gxt.widget.core.client.grid.ColumnConfig;
import com.sencha.gxt.widget.core.client.grid.ColumnHiddenChangeEvent;
import com.sencha.gxt.widget.core.client.grid.ColumnHiddenChangeEvent.ColumnHiddenChangeHandler;
import com.sencha.gxt.widget.core.client.grid.Grid;
public class GridStateHandler extends ComponentStateHandler> {
public interface GridState {
Set getHidden();
Map getWidths();
void setHidden(Set hidden);
void setWidths(Map widths);
void setSortField(String field);
String getSortField();
void setSortDir(SortDir sortDir);
SortDir getSortDir();
}
public interface GridSortState {
String getSortField();
void setSortField(String sortField);
SortDir getSortDir();
void setSortDir(SortDir dir);
}
private class Handler implements ColumnHiddenChangeHandler, ColumnWidthChangeHandler, SortChangeHandler {
@Override
public void onColumnHiddenChange(ColumnHiddenChangeEvent event) {
handleColumnHiddenChange(event);
}
@Override
public void onColumnWidthChange(ColumnWidthChangeEvent event) {
handleColumnWidthChange(event);
}
@Override
public void onSortChange(SortChangeEvent event) {
handleSortChange(event);
}
}
public GridStateHandler(Grid component) {
super(GridState.class, component);
Handler h = new Handler();
component.addSortChangeHandler(h);
component.getColumnModel().addColumnHiddenChangeHandler(h);
component.getColumnModel().addColumnWidthChangeHandler(h);
}
public GridStateHandler(Grid component, String key) {
super(GridState.class, component, key);
Handler h = new Handler();
component.addSortChangeHandler(h);
component.getColumnModel().addColumnHiddenChangeHandler(h);
component.getColumnModel().addColumnWidthChangeHandler(h);
}
@SuppressWarnings({"rawtypes", "unchecked"})
@Override
public void applyState() {
if (getObject().isStateful()) {
GridState state = getState();
Set hidden = state.getHidden();
if (hidden != null) {
for (String path : hidden) {
ColumnConfig column = getObject().getColumnModel().findColumnConfig(path);
if (column != null) {
column.setHidden(true);
}
}
}
Map widths = state.getWidths();
if (widths != null) {
for (String path : widths.keySet()) {
ColumnConfig column = getObject().getColumnModel().findColumnConfig(path);
if (column != null) {
column.setWidth(widths.get(path));
}
}
}
if (state.getSortField() != null) {
ValueProvider super M, Comparable> vp = (ValueProvider) getObject().getColumnModel().findColumnConfig(
state.getSortField()).getValueProvider();
if (vp != null) {
getObject().getStore().clearSortInfo();
getObject().getStore().addSortInfo(new StoreSortInfo(vp, state.getSortDir()));
}
}
}
}
protected void handleColumnHiddenChange(ColumnHiddenChangeEvent event) {
if (getObject().isStateful()) {
GridState state = getState();
Set hidden = state.getHidden();
if (hidden == null) {
hidden = new HashSet();
state.setHidden(hidden);
}
if (event.getColumnConfig().isHidden()) {
hidden.add(event.getColumnConfig().getPath());
} else {
hidden.remove(event.getColumnConfig().getPath());
}
saveState();
}
}
protected void handleColumnWidthChange(ColumnWidthChangeEvent event) {
if (getObject().isStateful()) {
GridState state = getState();
Map widths = state.getWidths();
if (widths == null) {
widths = new HashMap();
state.setWidths(widths);
}
widths.put(event.getColumnConfig().getPath(), event.getColumnConfig().getWidth());
saveState();
}
}
protected void handleSortChange(SortChangeEvent event) {
if (getObject().isStateful()) {
GridState state = getState();
state.setSortField(event.getSortInfo().getSortField());
state.setSortDir(event.getSortInfo().getSortDir());
saveState();
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy