Java tutorial
/* * GWT-Ext Widget Library * Copyright 2007 - 2008, GWT-Ext LLC., and individual contributors as indicated * by the @authors tag. See the copyright.txt in the distribution for a * full listing of individual contributors. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 3 of * the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package com.gwtext.client.widgets.grid; import com.google.gwt.core.client.JavaScriptObject; import com.google.gwt.core.client.GWT; import com.google.gwt.user.client.Element; import com.google.gwt.user.client.Timer; import com.gwtext.client.core.Ext; import com.gwtext.client.core.Function; import com.gwtext.client.data.Store; import com.gwtext.client.util.JavaScriptObjectHelper; import com.gwtext.client.widgets.Panel; import com.gwtext.client.widgets.grid.event.*; /** * A Grid widget. * <br/></br/> * <b>Common Problems:</b> * <ul> * <li>Grid does not resize properly when going smaller: Setting overflow hidden on the container element will correct this</li> * <li>If you get el.style[camel]= NaNpx or -2px or something related, be certain you have given your container element dimensions. * The grid adapts to your container's size, if your container has no size defined then the results are unpredictable.</li> * <li>Do not render the grid into an element with display:none. Try using visibility:hidden. Otherwise there is no way for * the grid to calculate dimensions/offsets.</li> * </ul> * * <br> * CSS can be used to style or customize the behaviour of headers an cells. * <br> * For example, use this to wrap all cell contents globally * <pre> * .x-grid3-cell-inner { * overflow: visible; white-space: normal !important; * } * </pre> * To wrap cell contents on a certain table only, set an ID to the Grid panel (say company-grid) and then use the CSS * <pre> * #company-grid .x-grid3-cell-inner { * overflow: visible; white-space: normal !important; * } * </pre> * To wrap long header titles * For all grids * <pre> * .x-grid3-hd-inner { * overflow: visible; white-space: normal; * } * </pre> * * For specific grid * <pre> * #company-grid .x-grid3-hd-inner { * overflow: visible; white-space: normal; * } * </pre> * * For specific column * <pre> * .x-grid3-hd-company { * overflow: visible; white-space: normal !important; * } * </pre> * * @author Sanjiv Jivan */ public class GridPanel extends Panel { private static JavaScriptObject configPrototype; private Store store = null; static { init(); } private static native void init()/*-{ var c = new $wnd.Ext.grid.GridPanel(); @com.gwtext.client.widgets.grid.GridPanel::configPrototype = c.initialConfig; }-*/; protected JavaScriptObject getConfigPrototype() { return configPrototype; } public String getXType() { return "grid"; } public GridPanel(JavaScriptObject jsObj) { super(jsObj); } public GridPanel() { } /** * Creates a new Grid. * * @param store the Grid's data store * @param columnModel the Grid's column model */ public GridPanel(Store store, ColumnModel columnModel) { setStore(store); setColumnModel(columnModel); } /** * Static method which returns the GridPanel instance based * on the JavaScriptObject * @param jsObj the JavaScript Object that represents the GridPanel * @return The GridPanel instance based on the JavaScriptObject passed in */ public static GridPanel instance(JavaScriptObject jsObj) { return new GridPanel(jsObj); } /** * Creates a new Grid. * * @param id the Grid ID * @param width the Grid width * @param height the Grid height * @param store the Grid's data store * @param columnModel the Grid's column model */ public GridPanel(String id, int width, int height, Store store, ColumnModel columnModel) { setId(id); setWidth(width); setHeight(height); setStore(store); setColumnModel(columnModel); } protected native JavaScriptObject create(JavaScriptObject configJS) /*-{ return new $wnd.Ext.grid.GridPanel(configJS); }-*/; protected void initComponent() { super.initComponent(); if (!GWT.isScript()) { Store store = getStore(); if (store == null && !(this instanceof PropertyGridPanel)) { error("A Store must be assigned to the GridPanel. See setStore(..)"); } } } /** * Clear the sort state of the grid. This resets the sort arrow indicators on the Grid * * @param reload true to reload the store after clearing the sort state */ public native void clearSortState(boolean reload) /*-{ var grid = this.@com.gwtext.client.widgets.Component::getOrCreateJsObj()(); var view = grid.getView(); var sc = view.sortClasses; var hds = view.mainHd.select('td').removeClass(sc); var store = grid.store; store.sortInfo = null; store.lastOptions = null; if(reload) { store.reload({}); } }-*/; /** * Returns the grid's ColumnModel. * * @return the column model */ public ColumnModel getColumnModel() { return new ColumnModel(getColumnModel(getOrCreateJsObj())); } private native JavaScriptObject getColumnModel(JavaScriptObject grid) /*-{ return grid.getColumnModel(); }-*/; /** * Returns the Grid's Store * * @return the Grids Store */ public Store getStore() { // use the store returned by Extj. // if not return the one we store locally. JavaScriptObject storeJS = getAttributeAsJavaScriptObject("store"); if (storeJS != null) { store = new Store(storeJS); } return store; } /** * Called to get Grid's drag proxy text. * * @return the grids drag drop text */ public native String getDragDropText() /*-{ var grid = this.@com.gwtext.client.widgets.Component::getOrCreateJsObj()(); return grid.getDragDropText(); }-*/; /** * Sets the Grid's drag drop text * * @param text the drag drop text */ public native void setDragDropText(String text) /*-{ var grid = this.@com.gwtext.client.widgets.Component::getOrCreateJsObj()(); grid.ddText = text; }-*/; /** * Returns the Grid's row selection model * * @return the selection model */ public RowSelectionModel getSelectionModel() { JavaScriptObject smObj = getSelectionModelAsJavaScriptObject(); if (smObj != null) { return new RowSelectionModel(smObj); } else { RowSelectionModel sm = new RowSelectionModel(); setSelectionModel(sm); return sm; } } /** * Returns the Grid's selection model, as a raw JavaScriptObject * * @return the selection model's raw JavaScriptObject (null if called before * grid creation or calling setSelectionModel(...) ) */ public JavaScriptObject getSelectionModelAsJavaScriptObject() { if (isCreated()) { return getSelectionModel(getJsObj()); } else { return JavaScriptObjectHelper.getAttributeAsJavaScriptObject(config, "sm"); } } private native JavaScriptObject getSelectionModel(JavaScriptObject grid) /*-{ return grid.getSelectionModel(); }-*/; /** * Returns the grid's GridView object. * * @return grid view */ public GridView getView() { return new GridView(getView(getOrCreateJsObj())); } private native JavaScriptObject getView(JavaScriptObject grid) /*-{ return grid.getView(); }-*/; /** * Hides the specified column. * * @param colID the column ID */ public void hideColumn(String colID) { int colIndex = getColumnModel().getIndexById(colID); if (colIndex != -1) { hideColumn(colIndex); } } /** * Hides the specified column. * * @param colIndex the column index */ public void hideColumn(int colIndex) { getColumnModel().setHidden(colIndex, true); if (isRendered() && Ext.isIE()) { Timer t = new Timer() { public void run() { getView().refresh(); getView().updateHeaderSortState(); } }; t.schedule(10); } } /** * Hides the column header of the grid. */ public void hideColumnHeader() { if (isRendered()) { Element el = getEl().child("div[class=x-grid3-header]"); Ext.fly(el).setStyle("display", "none"); } else { addListener("render", new Function() { public void execute() { hideColumnHeader(); } }); } } public native void render(JavaScriptObject grid) /*-{ grid.render(); }-*/; //http://extjs.com/forum/showthread.php?t=8694&highlight=grid+reconfigure /** * Reconfigures the grid to use a different Store and Column Model. The View will be bound to the new objects and refreshed. * * @param store the new Store * @param columnModel the new ColumnModel */ public void reconfigure(Store newStore, ColumnModel columnModel) { store = newStore; reconfigureJ(store, columnModel); } private native void reconfigureJ(Store store, ColumnModel columnModel) /*-{ var grid = this.@com.gwtext.client.widgets.Component::getOrCreateJsObj()(); var storeJS = store.@com.gwtext.client.core.JsObject::getJsObj()(); var columnModelJS = columnModel.@com.gwtext.client.core.JsObject::getJsObj()(); grid.reconfigure(storeJS, columnModelJS); }-*/; /** * Sets the load mask message for the grid. * * @param message the load mask text */ public native void setLoadMask(String message)/*-{ var grid = this.@com.gwtext.client.widgets.Component::getOrCreateJsObj()(); grid.loadMask.msg = message; }-*/; /** * Show the specified column. * * @param colID the column ID */ public void showColumn(String colID) { int colIndex = getColumnModel().getIndexById(colID); if (colIndex != -1) { showColumn(colIndex); } } /** * Shows the specified column. * * @param colIndex the column index */ public void showColumn(int colIndex) { getColumnModel().setHidden(colIndex, false); if (Ext.isIE()) { Timer t = new Timer() { public void run() { getView().refresh(); getView().updateHeaderSortState(); } }; t.schedule(10); } } /** * Add a Grid Cell listener. * * @param listener the listener */ public native void addGridCellListener(GridCellListener listener) /*-{ var gridJ = this; this.@com.gwtext.client.widgets.Component::addListener(Ljava/lang/String;Lcom/google/gwt/core/client/JavaScriptObject;)('cellclick', function(self, rowIndex, colIndex, event) { var e = @com.gwtext.client.core.EventObject::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(event); listener.@com.gwtext.client.widgets.grid.event.GridCellListener::onCellClick(Lcom/gwtext/client/widgets/grid/GridPanel;IILcom/gwtext/client/core/EventObject;)(gridJ, rowIndex, colIndex, e); } ); this.@com.gwtext.client.widgets.Component::addListener(Ljava/lang/String;Lcom/google/gwt/core/client/JavaScriptObject;)('cellcontextmenu', function(self, rowIndex, colIndex, event) { var e = @com.gwtext.client.core.EventObject::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(event); listener.@com.gwtext.client.widgets.grid.event.GridCellListener::onCellContextMenu(Lcom/gwtext/client/widgets/grid/GridPanel;IILcom/gwtext/client/core/EventObject;)(gridJ, rowIndex, colIndex, e); } ); this.@com.gwtext.client.widgets.Component::addListener(Ljava/lang/String;Lcom/google/gwt/core/client/JavaScriptObject;)('celldblclick', function(self, rowIndex, colIndex, event) { var e = @com.gwtext.client.core.EventObject::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(event); listener.@com.gwtext.client.widgets.grid.event.GridCellListener::onCellDblClick(Lcom/gwtext/client/widgets/grid/GridPanel;IILcom/gwtext/client/core/EventObject;)(gridJ, rowIndex, colIndex, e); } ); }-*/; /** * Add a Grid Column listener. * * @param listener the listener */ public native void addGridColumnListener(GridColumnListener listener) /*-{ var gridJ = this; this.@com.gwtext.client.widgets.Component::addListener(Ljava/lang/String;Lcom/google/gwt/core/client/JavaScriptObject;)('columnmove', function(oldIndex, newIndex) { listener.@com.gwtext.client.widgets.grid.event.GridColumnListener::onColumnMove(Lcom/gwtext/client/widgets/grid/GridPanel;II)(gridJ, oldIndex, newIndex); } ); this.@com.gwtext.client.widgets.Component::addListener(Ljava/lang/String;Lcom/google/gwt/core/client/JavaScriptObject;)('columnresize', function(colIndex, newSize) { listener.@com.gwtext.client.widgets.grid.event.GridColumnListener::onColumnResize(Lcom/gwtext/client/widgets/grid/GridPanel;II)(gridJ, colIndex, newSize); } ); }-*/; /** * Add a Grid Header listener. * * @param listener the listener */ public native void addGridHeaderListener(GridHeaderListener listener) /*-{ var gridJ = this; this.@com.gwtext.client.widgets.Component::addListener(Ljava/lang/String;Lcom/google/gwt/core/client/JavaScriptObject;)('headerclick', function(g, colIndex, event) { var e = @com.gwtext.client.core.EventObject::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(event); listener.@com.gwtext.client.widgets.grid.event.GridHeaderListener::onHeaderClick(Lcom/gwtext/client/widgets/grid/GridPanel;ILcom/gwtext/client/core/EventObject;)(gridJ, colIndex, e); } ); this.@com.gwtext.client.widgets.Component::addListener(Ljava/lang/String;Lcom/google/gwt/core/client/JavaScriptObject;)('headercontextmenu', function(g, colIndex, event) { var e = @com.gwtext.client.core.EventObject::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(event); listener.@com.gwtext.client.widgets.grid.event.GridHeaderListener::onHeaderContextMenu(Lcom/gwtext/client/widgets/grid/GridPanel;ILcom/gwtext/client/core/EventObject;)(gridJ, colIndex, e); } ); //todo check signature as it currently has rowindex this.@com.gwtext.client.widgets.Component::addListener(Ljava/lang/String;Lcom/google/gwt/core/client/JavaScriptObject;)('headerdblclick', function(g, colIndex, event) { var e = @com.gwtext.client.core.EventObject::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(event); listener.@com.gwtext.client.widgets.grid.event.GridHeaderListener::onHeaderDblClick(Lcom/gwtext/client/widgets/grid/GridPanel;ILcom/gwtext/client/core/EventObject;)(gridJ, colIndex, e); } ); }-*/; /** * Add a Grid Cell listener. * * @param listener the listener */ public native void addGridListener(GridListener listener) /*-{ var gridJ = this; this.@com.gwtext.client.widgets.Component::addListener(Ljava/lang/String;Lcom/google/gwt/core/client/JavaScriptObject;)('bodyscroll', function(scrollLeft, scrollTop) { listener.@com.gwtext.client.widgets.grid.event.GridListener::onBodyScroll(II)(scrollLeft, scrollTop); } ); this.@com.gwtext.client.widgets.Component::addListener(Ljava/lang/String;Lcom/google/gwt/core/client/JavaScriptObject;)('click', function(event) { var e = @com.gwtext.client.core.EventObject::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(event); listener.@com.gwtext.client.widgets.grid.event.GridListener::onClick(Lcom/gwtext/client/core/EventObject;)(e); } ); this.@com.gwtext.client.widgets.Component::addListener(Ljava/lang/String;Lcom/google/gwt/core/client/JavaScriptObject;)('contextmenu', function(event) { var e = @com.gwtext.client.core.EventObject::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(event); listener.@com.gwtext.client.widgets.grid.event.GridListener::onContextMenu(Lcom/gwtext/client/core/EventObject;)(e); } ); this.@com.gwtext.client.widgets.Component::addListener(Ljava/lang/String;Lcom/google/gwt/core/client/JavaScriptObject;)('dblclick', function(event) { var e = @com.gwtext.client.core.EventObject::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(event); listener.@com.gwtext.client.widgets.grid.event.GridListener::onDblClick(Lcom/gwtext/client/core/EventObject;)(e); } ); this.@com.gwtext.client.widgets.Component::addListener(Ljava/lang/String;Lcom/google/gwt/core/client/JavaScriptObject;)('keydown', function(event) { var e = @com.gwtext.client.core.EventObject::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(event); listener.@com.gwtext.client.widgets.grid.event.GridListener::onKeyDown(Lcom/gwtext/client/core/EventObject;)(e); } ); this.@com.gwtext.client.widgets.Component::addListener(Ljava/lang/String;Lcom/google/gwt/core/client/JavaScriptObject;)('keypress', function(event) { var e = @com.gwtext.client.core.EventObject::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(event); listener.@com.gwtext.client.widgets.grid.event.GridListener::onKeyPress(Lcom/gwtext/client/core/EventObject;)(e); } ); }-*/; /** * Add a Grid mouse listener. * * @param listener the listener */ public native void addGridMouseListener(GridMouseListener listener) /*-{ var gridJ = this; this.@com.gwtext.client.widgets.Component::addListener(Ljava/lang/String;Lcom/google/gwt/core/client/JavaScriptObject;)('mousedown', function(event) { var e = @com.gwtext.client.core.EventObject::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(event); listener.@com.gwtext.client.widgets.grid.event.GridMouseListener::onMouseDown(Lcom/gwtext/client/core/EventObject;)(e); } ); this.@com.gwtext.client.widgets.Component::addListener(Ljava/lang/String;Lcom/google/gwt/core/client/JavaScriptObject;)('mouseout', function(event) { var e = @com.gwtext.client.core.EventObject::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(event); listener.@com.gwtext.client.widgets.grid.event.GridMouseListener::onMouseOut(Lcom/gwtext/client/core/EventObject;)(e); } ); this.@com.gwtext.client.widgets.Component::addListener(Ljava/lang/String;Lcom/google/gwt/core/client/JavaScriptObject;)('mouseover', function(event) { var e = @com.gwtext.client.core.EventObject::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(event); listener.@com.gwtext.client.widgets.grid.event.GridMouseListener::onMouseOver(Lcom/gwtext/client/core/EventObject;)(e); } ); this.@com.gwtext.client.widgets.Component::addListener(Ljava/lang/String;Lcom/google/gwt/core/client/JavaScriptObject;)('mouseup', function(event) { var e = @com.gwtext.client.core.EventObject::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(event); listener.@com.gwtext.client.widgets.grid.event.GridMouseListener::onMouseUp(Lcom/gwtext/client/core/EventObject;)(e); } ); }-*/; /** * Add a Grid row listener. * * @param listener the listener */ public native void addGridRowListener(GridRowListener listener) /*-{ var gridJ = this; this.@com.gwtext.client.widgets.Component::addListener(Ljava/lang/String;Lcom/google/gwt/core/client/JavaScriptObject;)('rowclick', function(source, rowIndex, event) { var e = @com.gwtext.client.core.EventObject::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(event); listener.@com.gwtext.client.widgets.grid.event.GridRowListener::onRowClick(Lcom/gwtext/client/widgets/grid/GridPanel;ILcom/gwtext/client/core/EventObject;)(gridJ, rowIndex, e); } ); this.@com.gwtext.client.widgets.Component::addListener(Ljava/lang/String;Lcom/google/gwt/core/client/JavaScriptObject;)('rowdblclick', function(source, rowIndex, event) { var e = @com.gwtext.client.core.EventObject::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(event); listener.@com.gwtext.client.widgets.grid.event.GridRowListener::onRowDblClick(Lcom/gwtext/client/widgets/grid/GridPanel;ILcom/gwtext/client/core/EventObject;)(gridJ, rowIndex, e); } ); this.@com.gwtext.client.widgets.Component::addListener(Ljava/lang/String;Lcom/google/gwt/core/client/JavaScriptObject;)('rowcontextmenu', function(source, rowIndex, event) { var e = @com.gwtext.client.core.EventObject::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(event); listener.@com.gwtext.client.widgets.grid.event.GridRowListener::onRowContextMenu(Lcom/gwtext/client/widgets/grid/GridPanel;ILcom/gwtext/client/core/EventObject;)(gridJ, rowIndex, e); } ); }-*/; // --- config properties --- /** * The DD group this GridPanel belongs to (defaults to 'GridDD'). * * @param ddGroup the DD group * @throws IllegalStateException this property cannot be changed after the Component has been rendered */ public void setDdGroup(String ddGroup) throws IllegalStateException { setAttribute("ddGroup", ddGroup, true); } /** * The minimum width a column can be resized to. Default is 25. * * @param minColumnWidth the min column width * @throws IllegalStateException this property cannot be changed after the Component has been rendered */ public void setMinColumnWidth(int minColumnWidth) throws IllegalStateException { setAttribute("minColumnWidth", minColumnWidth, true); } /** * True to autoSize the grid when the window resizes. Default is true. * * @param monitorWindowResize true to monitor window resize * @throws IllegalStateException this property cannot be changed after the Component has been rendered */ public void setMonitorWindowResize(boolean monitorWindowResize) throws IllegalStateException { setAttribute("monitorWindowResize", monitorWindowResize, true); } /** * If autoSizeColumns is on, maxRowsToMeasure can be used to limit the number of rows measured to get a columns size. * Default is 0 (all rows). * * @param maxRowsToMeasure max rows to measure * @throws IllegalStateException this property cannot be changed after the Component has been rendered */ public void setMaxRowsToMeasure(int maxRowsToMeasure) throws IllegalStateException { setAttribute("maxRowsToMeasure", maxRowsToMeasure, true); } /** * True to highlight rows when the mouse is over. Default is true. * * @param trackMouseOver true to highlight rows when mouse over * @throws IllegalStateException this property cannot be changed after the Component has been rendered */ public void setTrackMouseOver(boolean trackMouseOver) throws IllegalStateException { setAttribute("trackMouseOver", trackMouseOver, true); } /** * True to enable the drop down button for menu in the headers. * * @param enableHdMenu true to enable the drop down button for menu in the headers. * @throws IllegalStateException this property cannot be changed after the Component has been rendered */ public void setEnableHdMenu(boolean enableHdMenu) throws IllegalStateException { setAttribute("enableHdMenu", enableHdMenu, true); } /** * True to enable column resize. * * @param enableColumnResize true to enable column resize * @throws IllegalStateException this property cannot be changed after the Component has been rendered */ public void setEnableColumnResize(boolean enableColumnResize) throws IllegalStateException { setAttribute("enableColumnResize", enableColumnResize, true); } //http://extjs.com/forum/showthread.php?p=43678#post43678 /** * True to enable drag and drop of rows. Default is false. * * @param enableDragDrop true to enable drag drop of rows * @throws IllegalStateException this property cannot be changed after the Component has been rendered */ public void setEnableDragDrop(boolean enableDragDrop) throws IllegalStateException { setAttribute("enableDragDrop", enableDragDrop, true); } /** * True to enable drag and drop reorder of columns. Default is true. * * @param enableColumnMove true to enable column move * @throws IllegalStateException this property cannot be changed after the Component has been rendered */ public void setEnableColumnMove(boolean enableColumnMove) throws IllegalStateException { setAttribute("enableColumnMove", enableColumnMove, true); } /** * True to enable hiding of columns with the header context menu. Default is true * * @param enableColumnHide true to enable column hide * @throws IllegalStateException this property cannot be changed after the Component has been rendered */ public void setEnableColumnHide(boolean enableColumnHide) throws IllegalStateException { setAttribute("enableColumnHide", enableColumnHide, true); } /** * True to stripe the rows. Default is false. * * @param stripeRows true to stripe rows * @throws IllegalStateException this property cannot be changed after the Component has been rendered */ public void setStripeRows(boolean stripeRows) throws IllegalStateException { setAttribute("stripeRows", stripeRows, true); } /** * Set the GridPanel's selection model. * * @param selectionModel the selection model/ * @throws IllegalStateException this property cannot be changed after the Component has been rendered */ public void setSelectionModel(AbstractSelectionModel selectionModel) throws IllegalStateException { setAttribute("sm", selectionModel.getJsObj(), true); } /** * True to fit the height of the grid container to the height of the data. Default is false. * * @param autoHeight true to fit the height of the grid container to the height of the data * @throws IllegalStateException this property cannot be changed after the Component has been rendered */ public void setAutoHeight(boolean autoHeight) throws IllegalStateException { setAttribute("autoHeight", autoHeight, true); } /** * The id of a column in this grid that should expand to fill unused space. * This id can not be 0. Default is false. <br> * <b>Note : You must pass the ID of the ColumnConfig, and not the dataIndex of the corresponding ColumnConfig.</b> * * @param autoExpandColumn the column id * @throws IllegalStateException this property cannot be changed after the Component has been rendered * @see com.gwtext.client.widgets.grid.ColumnConfig#setId(String) */ public void setAutoExpandColumn(String autoExpandColumn) throws IllegalStateException { setAttribute("autoExpandColumn", autoExpandColumn, true); } /** * The id of a column in this grid that should expand to fill unused space. This id can not be 0. * Default is false. * * @param autoExpandColumn the column id * @throws IllegalStateException this property cannot be changed after the Component has been rendered */ public void setAutoExpandColumn(int autoExpandColumn) throws IllegalStateException { setAttribute("autoExpandColumn", autoExpandColumn, true); } /** * The minimum width the autoExpandColumn can have (if enabled). Default is 50. * * @param autoExpandMin the min expand value * @throws IllegalStateException this property cannot be changed after the Component has been rendered */ public void setAutoExpandMin(int autoExpandMin) throws IllegalStateException { setAttribute("autoExpandMin", autoExpandMin, true); } /** * The maximum width the autoExpandColumn can have (if enabled). Default is 1000. * * @param autoExpandMax the max expand value * @throws IllegalStateException this property cannot be changed after the Component has been rendered */ public void setAutoExpandMax(int autoExpandMax) throws IllegalStateException { setAttribute("autoExpandMax", autoExpandMax, true); } /** * True to disable selections in the grid (defaults to false). - ignored a SelectionModel is specified * * @param disableSelection true to disable selections in the grid (defaults to false). - ignored a SelectionModel is specified * @throws IllegalStateException this property cannot be changed after the Component has been rendered */ public void setDisableSelection(boolean disableSelection) throws IllegalStateException { setAttribute("disableSelection", disableSelection, true); } /** * Hides the column header of the grid if passed true. * * @param hideColumnHeader true to hide the column headers */ public void setHideColumnHeader(boolean hideColumnHeader) { if (hideColumnHeader) { hideColumnHeader(); } } /** * Sets the {@link GridView} used by the grid. * * @param view the grid view * @throws IllegalStateException this property cannot be changed after the Component has been rendered */ public void setView(GridView view) throws IllegalStateException { setAttribute("view", view.getJsObj(), true); } /** * True to mask the grid while loading. Default is false. * * @param loadMask true to mask grid * @throws IllegalStateException this property cannot be changed after the Component has been rendered */ public void setLoadMask(boolean loadMask) throws IllegalStateException { setAttribute("loadMask", loadMask, true); } /** * Sets the {@link com.gwtext.client.widgets.LoadMask} to mask the grid while loading. Default is disable masking. * * @param message the load mask message * @param messageCls the load mask message CSS class * @throws IllegalStateException this property cannot be changed after the Component has been rendered */ public void setLoadMask(String message, String messageCls) throws IllegalStateException { JavaScriptObject config = JavaScriptObjectHelper.createObject(); JavaScriptObjectHelper.setAttribute(config, "msg", message); JavaScriptObjectHelper.setAttribute(config, "msgCls", messageCls); setAttribute("loadMask", config, true); } /** * The Store the grid should use as its data source (required). * * @param store the store * @throws IllegalStateException this property cannot be changed after the Component has been rendered */ public void setStore(Store store) throws IllegalStateException { setAttribute("store", store.getJsObj(), true); this.store = store; } /** * The {@link ColumnModel} to use when rendering the grid (required). * * @param columnModel the grids column model * @throws IllegalStateException this property cannot be changed after the Component has been rendered */ public void setColumnModel(ColumnModel columnModel) throws IllegalStateException { setAttribute("cm", columnModel.getJsObj(), true); } /** * True to stripe the rows. Default is false. * * @param stripeRows true to stripe the rows. Default is false. * @throws IllegalStateException this property cannot be changed after the Component has been rendered */ public void stripeRows(boolean stripeRows) throws IllegalStateException { setAttribute("stripeRows", stripeRows, true); } }