Last active
August 29, 2015 14:01
-
-
Save branflake2267/956a7d304e63befb515a to your computer and use it in GitHub Desktop.
Grid with a default filter field value set
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import java.io.Serializable; | |
| import java.util.ArrayList; | |
| import java.util.Date; | |
| import java.util.List; | |
| import com.google.gwt.core.client.GWT; | |
| import com.google.gwt.editor.client.Editor.Path; | |
| import com.google.gwt.user.client.ui.RootPanel; | |
| import com.sencha.gxt.core.client.ValueProvider; | |
| import com.sencha.gxt.core.client.util.DateWrapper; | |
| import com.sencha.gxt.data.shared.ListStore; | |
| import com.sencha.gxt.data.shared.ModelKeyProvider; | |
| import com.sencha.gxt.data.shared.PropertyAccess; | |
| import com.sencha.gxt.widget.core.client.ContentPanel; | |
| import com.sencha.gxt.widget.core.client.grid.ColumnConfig; | |
| import com.sencha.gxt.widget.core.client.grid.ColumnModel; | |
| import com.sencha.gxt.widget.core.client.grid.Grid; | |
| import com.sencha.gxt.widget.core.client.grid.filters.GridFilters; | |
| import com.sencha.gxt.widget.core.client.grid.filters.StringFilter; | |
| public class GXT_Grid_withDefaultFilter { | |
| private static int COUNTER = 0; | |
| private static final StockProperties props = GWT.create(StockProperties.class); | |
| public GXT_Grid_withDefaultFilter() { | |
| ContentPanel cp = new ContentPanel(); | |
| cp.setPixelSize(600, 400); | |
| cp.add(createGrid()); | |
| RootPanel.get().add(cp, 100, 100); | |
| } | |
| // customized filter that sets the default value in a filter | |
| public class StringFilterExt<T> extends StringFilter<T> { | |
| public StringFilterExt(ValueProvider<? super T, String> valueProvider) { | |
| super(valueProvider); | |
| } | |
| // set the value into the filter field | |
| public void setValue(String value) { | |
| field.setValue(value); | |
| } | |
| // once the grid is visible, update the grid | |
| public void filterGrid() { | |
| fireUpdate(); | |
| } | |
| } | |
| public Grid<Stock> createGrid() { | |
| ColumnConfig<Stock, String> nameCol = new ColumnConfig<Stock, String>(props.name(), 50, "Company"); | |
| ColumnConfig<Stock, String> symbolCol = new ColumnConfig<Stock, String>(props.symbol(), 100, "Symbol"); | |
| ColumnConfig<Stock, Double> lastCol = new ColumnConfig<Stock, Double>(props.last(), 75, "Last"); | |
| ColumnConfig<Stock, Double> changeCol = new ColumnConfig<Stock, Double>(props.change(), 100, "Change"); | |
| ColumnConfig<Stock, Date> lastTransCol = new ColumnConfig<Stock, Date>(props.lastTrans(), 100, "Last Updated"); | |
| List<ColumnConfig<Stock, ?>> columns = new ArrayList<ColumnConfig<Stock, ?>>(); | |
| columns.add(nameCol); | |
| columns.add(symbolCol); | |
| columns.add(lastCol); | |
| columns.add(changeCol); | |
| columns.add(lastTransCol); | |
| ColumnModel<Stock> cm = new ColumnModel<Stock>(columns); | |
| final StringFilterExt<Stock> nameFilter = new StringFilterExt<Stock>(props.name()); | |
| nameFilter.setValue("app"); | |
| final ListStore<Stock> store = new ListStore<Stock>(props.key()); | |
| store.addAll(getStocks()); | |
| store.setEnableFilters(true); | |
| Grid<Stock> grid = new Grid<Stock>(store, cm) { | |
| @Override | |
| protected void onAfterFirstAttach() { | |
| super.onAfterFirstAttach(); | |
| // update the grid after its rendered | |
| nameFilter.filterGrid(); | |
| } | |
| }; | |
| grid.getView().setAutoExpandColumn(nameCol); | |
| // filters | |
| GridFilters<Stock> filters = new GridFilters<Stock>(); | |
| filters.initPlugin(grid); | |
| filters.setLocal(true); | |
| filters.addFilter(nameFilter); | |
| return grid; | |
| } | |
| public class Stock implements Serializable { | |
| private Integer id; | |
| private Double change; | |
| private Date date = new Date(); | |
| private String industry = getType(); | |
| private Double last; | |
| private String name; | |
| private Double open; | |
| private String symbol; | |
| private boolean split = Boolean.valueOf(Math.random() > .5); | |
| public Stock() { | |
| this.id = Integer.valueOf(COUNTER++); | |
| } | |
| public Stock(String name, String symbol, double open, double last, Date date) { | |
| this(); | |
| this.name = name; | |
| this.symbol = symbol; | |
| this.change = last - open; | |
| this.open = open; | |
| this.last = last; | |
| this.date = date; | |
| } | |
| public Double getChange() { | |
| return change; | |
| } | |
| public Integer getId() { | |
| return id; | |
| } | |
| public String getIndustry() { | |
| return industry; | |
| } | |
| public Double getLast() { | |
| return last; | |
| } | |
| public Date getLastTrans() { | |
| return date; | |
| } | |
| public String getName() { | |
| return name; | |
| } | |
| public Double getOpen() { | |
| return open; | |
| } | |
| public double getPercentChange() { | |
| return getChange() / getOpen(); | |
| } | |
| public String getSymbol() { | |
| return symbol; | |
| } | |
| public boolean isSplit() { | |
| return split; | |
| } | |
| public void setChange(Double change) { | |
| this.change = change; | |
| } | |
| public void setId(Integer id) { | |
| this.id = id; | |
| } | |
| public void setIndustry(String industry) { | |
| this.industry = industry; | |
| } | |
| public void setLast(Double last) { | |
| this.last = last; | |
| } | |
| public void setLastTrans(Date date) { | |
| this.date = date; | |
| } | |
| public void setName(String name) { | |
| this.name = name; | |
| } | |
| public void setOpen(Double open) { | |
| this.open = open; | |
| } | |
| public void setSplit(boolean split) { | |
| this.split = split; | |
| } | |
| public void setSymbol(String symbol) { | |
| this.symbol = symbol; | |
| } | |
| public String toString() { | |
| return getName(); | |
| } | |
| private String getType() { | |
| double r = Math.random(); | |
| if (r <= .25) { | |
| return "Auto"; | |
| } else if (r > .25 && r <= .50) { | |
| return "Media"; | |
| } else if (r > .5 && r <= .75) { | |
| return "Medical"; | |
| } else { | |
| return "Tech"; | |
| } | |
| } | |
| } | |
| public List<Stock> getStocks() { | |
| List<Stock> stocks = new ArrayList<Stock>(); | |
| stocks.add(new Stock("Apple Inc.", "AAPL", 125.64, 123.43, randomDate())); | |
| stocks.add(new Stock("Cisco Systems, Inc.", "CSCO", 25.84, 26.3, randomDate())); | |
| stocks.add(new Stock("Google Inc.", "GOOG", 516.2, 512.6, randomDate())); | |
| stocks.add(new Stock("Intel Corporation", "INTC", 21.36, 21.53, randomDate())); | |
| stocks.add(new Stock("Level 3 Communications, Inc.", "LVLT", 5.55, 5.54, randomDate())); | |
| stocks.add(new Stock("Microsoft Corporation", "MSFT", 29.56, 29.72, randomDate())); | |
| stocks.add(new Stock("Nokia Corporation (ADR)", "NOK", 27.83, 27.93, randomDate())); | |
| stocks.add(new Stock("Oracle Corporation", "ORCL", 18.73, 18.98, randomDate())); | |
| return stocks; | |
| } | |
| private Date randomDate() { | |
| DateWrapper w = new DateWrapper(); | |
| int r = (int) (Math.random() * 10) * 10; | |
| w = w.addDays(-r); | |
| return w.asDate(); | |
| } | |
| public interface StockProperties extends PropertyAccess<Stock> { | |
| @Path("symbol") | |
| ModelKeyProvider<Stock> key(); | |
| ValueProvider<Stock, String> name(); | |
| ValueProvider<Stock, String> symbol(); | |
| ValueProvider<Stock, Double> last(); | |
| ValueProvider<Stock, Double> change(); | |
| ValueProvider<Stock, Date> lastTrans(); | |
| ValueProvider<Stock, String> industry(); | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment