How can summaryrow change immediately after filter [message #1277583] |
Wed, 26 March 2014 07:11 |
Monical Lai Messages: 8 Registered: March 2014 |
Junior Member |
|
|
Summaryrow doesn't make changes after filter, but it works when I resize column after filter.
Any help is appreciated.
Thanks in advance.
public class StaticFilterGridLayer<T> extends GridLayer {
private final ListDataProvider<T> bodyDataProvider;
private final DataLayer bodyDataLayer;
private final CompositeFreezeLayer bodyLayer;
private final SelectionLayer selectionLayer;
public StaticFilterGridLayer(EventList<T> eventList,
String[] propertyNames, Map<String, String> propertyToLabelMap,
IConfigRegistry configRegistry) {
super(true);
// Underlying data source
TransformedList<T, T> rowObjectsGlazedList = GlazedLists
.threadSafeList(eventList);
SortedList<T> sortedList = new SortedList<T>(rowObjectsGlazedList, null);
FilterList<T> filterList = new FilterList<T>(sortedList);
// Body layer
IColumnPropertyAccessor<T> columnPropertyAccessor = new ReflectiveColumnPropertyAccessor<T>(
propertyNames);
bodyDataProvider = new ListDataProvider<T>(filterList,
columnPropertyAccessor);
bodyDataLayer = new DataLayer(bodyDataProvider);
GlazedListsEventLayer<T> glazedListsEventLayer = new GlazedListsEventLayer<T>(
bodyDataLayer, eventList);
RowHideShowLayer rowHideShowLayer = new RowHideShowLayer(
glazedListsEventLayer);
SummaryRowLayer summaryRowLayer = new SummaryRowLayer(
glazedListsEventLayer, configRegistry, false);
summaryRowLayer
.addConfiguration(new CalculatingSummaryRowConfiguration(
bodyDataProvider));
selectionLayer = new SelectionLayer(summaryRowLayer);
final ViewportLayer viewportLayer = new ViewportLayer(selectionLayer);
final FreezeLayer freezeLayer = new FreezeLayer(selectionLayer);
bodyLayer = new CompositeFreezeLayer(freezeLayer, viewportLayer,
selectionLayer);
// bodyLayer = new DefaultBodyLayerStack(glazedListsEventLayer);
ColumnOverrideLabelAccumulator bodyLabelAccumulator = new ColumnOverrideLabelAccumulator(bodyDataLayer);
bodyDataLayer.setConfigLabelAccumulator(bodyLabelAccumulator);
// Column header layer
IDataProvider columnHeaderDataProvider = new DefaultColumnHeaderDataProvider(propertyNames, propertyToLabelMap);
DataLayer columnHeaderDataLayer = new DefaultColumnHeaderDataLayer(columnHeaderDataProvider);
ColumnHeaderLayer columnHeaderLayer = new ColumnHeaderLayer(
columnHeaderDataLayer, bodyLayer, selectionLayer);
SortHeaderLayer<T> sortHeaderLayer = new SortHeaderLayer<T>(
columnHeaderLayer,
new GlazedListsSortModel<T>(
sortedList,
columnPropertyAccessor,
configRegistry,
columnHeaderDataLayer), false);
sortHeaderLayer.addConfiguration(new SingleClickSortConfiguration());
// Note: The column header layer is wrapped in a filter row composite.
// This plugs in the filter row functionality
CompositeMatcherEditor<T> autoFilterMatcherEditor = new CompositeMatcherEditor<T>();
filterList.setMatcherEditor(autoFilterMatcherEditor);
// DefaultGlazedListsFilterStrategy<T> filterStrategy =
// new DefaultGlazedListsFilterStrategy<T>(autoFilterMatcherEditor,
// columnPropertyAccessor, configRegistry);
DefaultGlazedListsStaticFilterStrategy<T> filterStrategy = new DefaultGlazedListsStaticFilterStrategy<T>(
autoFilterMatcherEditor, columnPropertyAccessor, configRegistry);
FilterRowHeaderComposite<T> filterRowHeaderLayer = new FilterRowHeaderComposite<T>(
filterStrategy, sortHeaderLayer, columnHeaderDataProvider,
configRegistry
);
ColumnOverrideLabelAccumulator labelAccumulator = new ColumnOverrideLabelAccumulator(columnHeaderDataLayer);
columnHeaderDataLayer.setConfigLabelAccumulator(labelAccumulator);
// Row header layer
IDataProvider rowHeaderDataProvider = new DefaultSummaryRowHeaderDataProvider(
bodyDataProvider, "\u2211");
DefaultRowHeaderDataLayer rowHeaderDataLayer = new DefaultRowHeaderDataLayer(
rowHeaderDataProvider);
RowHeaderLayer rowHeaderLayer = new RowHeaderLayer(rowHeaderDataLayer,
bodyLayer, selectionLayer);
// Corner layer
DefaultCornerDataProvider cornerDataProvider = new DefaultCornerDataProvider(columnHeaderDataProvider, rowHeaderDataProvider);
DataLayer cornerDataLayer = new DataLayer(cornerDataProvider);
CornerLayer cornerLayer = new CornerLayer(cornerDataLayer, rowHeaderLayer, filterRowHeaderLayer);
// Grid
setBodyLayer(bodyLayer);
// Note: Set the filter row as the column header
setColumnHeaderLayer(filterRowHeaderLayer);
setRowHeaderLayer(rowHeaderLayer);
setCornerLayer(cornerLayer);
}
public SelectionLayer getSelectionLayer() {
return selectionLayer;
}
@Override
public void setClientAreaProvider(IClientAreaProvider clientAreaProvider) {
super.setClientAreaProvider(clientAreaProvider);
}
public ListDataProvider<T> getBodyDataProvider() {
return bodyDataProvider;
}
public DataLayer getBodyDataLayer() {
return bodyDataLayer;
}
public final CompositeFreezeLayer getBodyLayerStack() {
return bodyLayer;
}
class CalculatingSummaryRowConfiguration extends
DefaultSummaryRowConfiguration {
private final IDataProvider dataProvider;
public CalculatingSummaryRowConfiguration(IDataProvider dataProvider) {
this.dataProvider = dataProvider;
summaryRowBgColor = GUIHelper.COLOR_BLUE;
summaryRowFgColor = GUIHelper.COLOR_WHITE;
}
@Override
public void addSummaryProviderConfig(IConfigRegistry configRegistry) {
// Labels are applied to the summary row and cells by default to
// make configuration easier.
// See the Javadoc for the SummaryRowLayer
// Default summary provider
configRegistry.registerConfigAttribute(
SummaryRowConfigAttributes.SUMMARY_PROVIDER,
new SummationSummaryProvider(dataProvider),
DisplayMode.NORMAL,
SummaryRowLayer.DEFAULT_SUMMARY_ROW_CONFIG_LABEL);
}
}
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.04703 seconds