/*
* Copyright (c) 2008 TouK.pl
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package pl.touk.example.gwt.client;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.Text;
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
import com.extjs.gxt.ui.client.widget.grid.Grid;
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
import com.extjs.gxt.ui.client.data.*;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.Style;
import com.google.gwt.user.client.Random;
import java.util.ArrayList;
import java.util.List;
import pl.touk.tola.gwt.client.utils.ListUtils;
import pl.touk.tola.gwt.client.widgets.grid.VariablePageSizePagingToolBar;
/**
* @author Lukasz Kucharski - lkc@touk.pl
*/
public class VariablePageSizePagingToolBarExample extends ContentPanel {
protected static final ArrayList<SampleItem> sampleItems = new ArrayList<SampleItem>(500);
static {
for (int i = 0; i < 500; i++) {
sampleItems.add(new SampleItem());
}
}
protected Grid demoGrid;
public VariablePageSizePagingToolBarExample() {
this.setLayoutOnChange(true);
this.setScrollMode(Style.Scroll.AUTOY);
this.setLayout(new FitLayout());
PagingLoader loader = new BasePagingLoader(new MemoryProxy(sampleItems), new DataReader<PagingLoadResult<SampleItem>>(){
public PagingLoadResult<SampleItem> read(Object loadConfig, Object data) {
PagingLoadConfig config = (PagingLoadConfig) loadConfig;
ArrayList<SampleItem> items = (ArrayList<SampleItem>) data;
int offset = config.getOffset();
int limit = config.getLimit();
int size = items.size();
List<SampleItem> sublist = ListUtils.subList(items,offset,offset + limit);
BasePagingLoadResult<SampleItem> result =
new BasePagingLoadResult<SampleItem>(sublist,offset, size);
return result;
}
});
ListStore ls = new ListStore(loader);
List<ColumnConfig> columns = new ArrayList<ColumnConfig>();
columns.add(new ColumnConfig("random1", "random1", 100));
columns.add(new ColumnConfig("random2", "random2", 100));
ColumnModel cm = new ColumnModel(columns);
demoGrid = new Grid(ls,cm);
demoGrid.setAutoHeight(true);
this.add(demoGrid);
VariablePageSizePagingToolBar toolBar = new VariablePageSizePagingToolBar("ListForSampleItem");
toolBar.bind(loader);
this.setBottomComponent(toolBar);
this.setTopComponent(new Text("Prezentuje mozliwość zmieniania ilości wynikow na stronie. Wybrana wartość jest zapamiętywana w ciasteczkach przez ComboBoxWithMemory"));
loader.load();
}
static class SampleItem extends BaseModelData{
SampleItem() {
set("random1",Random.nextInt());
set("random2", Random.nextInt());
}
}
}