Package com.gwtext.client.widgets.grid

Source Code of com.gwtext.client.widgets.grid.GridPanel

/*
* 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;

    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);
    }

    /**
     * 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() {
        JavaScriptObject storeJS = getAttributeAsJavaScriptObject("store");
        return storeJS == null ? null : new Store(storeJS);
    }

    /**
     * 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 native void reconfigure(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 true.
     *
     * @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);
    }

    /**
     * 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);
  }
}
TOP

Related Classes of com.gwtext.client.widgets.grid.GridPanel

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.