Saturday, June 11, 2011

Basic Grid Example -EXT GWT Source Code


  1. package com.extjs.gxt.samples.client.examples.grid;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import com.extjs.gxt.samples.resources.client.Resources;
  5. import com.extjs.gxt.samples.resources.client.TestData;
  6. import com.extjs.gxt.samples.resources.client.model.Stock;
  7. import com.extjs.gxt.ui.client.GXT;
  8. import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
  9. import com.extjs.gxt.ui.client.event.Events;
  10. import com.extjs.gxt.ui.client.event.FieldEvent;
  11. import com.extjs.gxt.ui.client.event.Listener;
  12. import com.extjs.gxt.ui.client.store.ListStore;
  13. import com.extjs.gxt.ui.client.widget.ContentPanel;
  14. import com.extjs.gxt.ui.client.widget.LayoutContainer;
  15. import com.extjs.gxt.ui.client.widget.form.SimpleComboBox;
  16. import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;
  17. import com.extjs.gxt.ui.client.widget.grid.CellSelectionModel;
  18. import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
  19. import com.extjs.gxt.ui.client.widget.grid.ColumnData;
  20. import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
  21. import com.extjs.gxt.ui.client.widget.grid.Grid;
  22. import com.extjs.gxt.ui.client.widget.grid.GridCellRenderer;
  23. import com.extjs.gxt.ui.client.widget.grid.GridSelectionModel;
  24. import com.extjs.gxt.ui.client.widget.layout.FitLayout;
  25. import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
  26. import com.extjs.gxt.ui.client.widget.table.NumberCellRenderer;
  27. import com.extjs.gxt.ui.client.widget.tips.QuickTip;
  28. import com.extjs.gxt.ui.client.widget.toolbar.LabelToolItem;
  29. import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
  30. import com.google.gwt.i18n.client.DateTimeFormat;
  31. import com.google.gwt.i18n.client.NumberFormat;
  32. import com.google.gwt.user.client.Element;
  33. public class GridExample extends LayoutContainer {
  34. private ColumnModel cm;
  35. @Override
  36. protected void onRender(Element parent, int index) {
  37. super.onRender(parent, index);
  38. setLayout(new FlowLayout(10));
  39. getAriaSupport().setPresentation(true);
  40. final NumberFormat currency = NumberFormat.getCurrencyFormat();
  41. final NumberFormat number = NumberFormat.getFormat("0.00");
  42. final NumberCellRenderer> numberRenderer = new NumberCellRenderer>(currency);
  43. GridCellRenderer change = new GridCellRenderer() {
  44. public String render(Stock model, String property, ColumnData config, int rowIndex, int colIndex,
  45. ListStore store, Grid grid) {
  46. double val = (Double) model.get(property);
  47. String style = val < 0 ? "red" : GXT.isHighContrastMode ? "#00ff5a" : "green";
  48. String v = number.format(val);
  49. return "" + v + "";
  50. }
  51. };
  52. GridCellRenderer gridNumber = new GridCellRenderer() {
  53. public String render(Stock model, String property, ColumnData config, int rowIndex, int colIndex,
  54. ListStore store, Grid grid) {
  55. return numberRenderer.render(null, property, model.get(property));
  56. }
  57. };
  58. List configs = new ArrayList();
  59. ColumnConfig column = new ColumnConfig();
  60. column.setId("name");
  61. column.setHeader("Company");
  62. column.setWidth(200);
  63. column.setRowHeader(true);
  64. configs.add(column);
  65. column = new ColumnConfig();
  66. column.setId("symbol");
  67. column.setHeader("Symbol");
  68. column.setWidth(100);
  69. configs.add(column);
  70. column = new ColumnConfig();
  71. column.setId("last");
  72. column.setHeader("Last");
  73. column.setAlignment(HorizontalAlignment.RIGHT);
  74. column.setWidth(75);
  75. column.setRenderer(gridNumber);
  76. configs.add(column);
  77. column = new ColumnConfig("change", "Change", 100);
  78. column.setAlignment(HorizontalAlignment.RIGHT);
  79. column.setRenderer(change);
  80. configs.add(column);
  81. column = new ColumnConfig("date", "Last Updated", 100);
  82. column.setAlignment(HorizontalAlignment.RIGHT);
  83. column.setDateTimeFormat(DateTimeFormat.getFormat("MM/dd/yyyy"));
  84. configs.add(column);
  85. ListStore store = new ListStore();
  86. store.add(TestData.getStocks());
  87. cm = new ColumnModel(configs);
  88. ContentPanel cp = new ContentPanel();
  89. cp.setBodyBorder(true);
  90. cp.setIcon(Resources.ICONS.table());
  91. cp.setHeading("Basic Grid");
  92. cp.setButtonAlign(HorizontalAlignment.CENTER);
  93. cp.setLayout(new FitLayout());
  94. cp.getHeader().setIconAltText("Grid Icon");
  95. cp.setSize(600, 300);
  96. final Grid grid = new Grid(store, cm);
  97. grid.setStyleAttribute("borderTop", "none");
  98. grid.setAutoExpandColumn("name");
  99. grid.setBorders(false);
  100. grid.setStripeRows(true);
  101. grid.setColumnLines(true);
  102. grid.setColumnReordering(true);
  103. grid.getAriaSupport().setLabelledBy(cp.getHeader().getId() + "-label");
  104. cp.add(grid);
  105. ToolBar toolBar = new ToolBar();
  106. toolBar.getAriaSupport().setLabel("Grid Options");
  107. toolBar.add(new LabelToolItem("Selection Mode: "));
  108. final SimpleComboBox type = new SimpleComboBox();
  109. type.getAriaSupport().setLabelledBy(toolBar.getItem(0).getId());
  110. type.setTriggerAction(TriggerAction.ALL);
  111. type.setEditable(false);
  112. type.setFireChangeEventOnSetValue(true);
  113. type.setWidth(100);
  114. type.add("Row");
  115. type.add("Cell");
  116. type.setSimpleValue("Row");
  117. type.addListener(Events.Change, new Listener() {
  118. public void handleEvent(FieldEvent be) {
  119. boolean cell = type.getSimpleValue().equals("Cell");
  120. grid.getSelectionModel().deselectAll();
  121. if (cell) {
  122. grid.setSelectionModel(new CellSelectionModel());
  123. } else {
  124. grid.setSelectionModel(new GridSelectionModel());
  125. }
  126. }
  127. });
  128. toolBar.add(type);
  129. cp.setTopComponent(toolBar);
  130. add(cp);
  131. // needed to enable quicktips (qtitle for the heading and qtip for the
  132. // content) that are setup in the change GridCellRenderer
  133. new QuickTip(grid);
  134. }
  135. }



For Further Reading,
Ext GWT, GWT

0 comments:

Post a Comment