Class AbstractGrid<M,I,S>

Type Parameters:
M - grid model object type
I - row/item model object type
All Implemented Interfaces:
Serializable, Iterable<Component>, IEventSink, IEventSource, IFeedbackContributor, IConverterLocator, IMetadataContext<Serializable,Component>, IQueueRegion, IHeaderContributor, IRequestableComponent, IHierarchical<Component>, IClusterable
Direct Known Subclasses:
DataGrid, TreeGrid

public abstract class AbstractGrid<M,I,S> extends Panel
Provides common functionality for DataGrid and TreeGrid.
Author:
Matej Knopp
See Also:
  • Field Details

  • Constructor Details

  • Method Details

    • getForm

      public Form<Void> getForm()
    • columnSanityCheck

      protected void columnSanityCheck(IGridColumn<M,I,S> column)
      Checks whether the column is a valid grid column
      Parameters:
      column -
    • onColumnStateChanged

      public void onColumnStateChanged()
      Invoked when client change the column state (e.g. resize or reorder a column).
      See Also:
    • getColumnState

      public ColumnsState getColumnState()
      Returns the column state.
      Returns:
      state of columns
      See Also:
    • setColumnState

      public void setColumnState(ColumnsState columnState)
      Sets a new column state. The state must not be null and must match current set of columns, i.e. for every column in grid there must be entry in the given state.
      Parameters:
      columnState - new column state
      See Also:
    • onInitialize

      protected void onInitialize()
      Overrides:
      onInitialize in class MarkupContainer
    • onBeforeRender

      protected void onBeforeRender()
      Overrides:
      onBeforeRender in class Component
    • onAfterRender

      protected void onAfterRender()
      Overrides:
      onAfterRender in class Component
    • addTopToolbar

      public void addTopToolbar(AbstractToolbar<M,I,S> toolbar)
      Adds a toolbar to the top section (above the grid header).
      Parameters:
      toolbar - toolbar instance
      See Also:
    • addBottomToolbar

      public void addBottomToolbar(AbstractToolbar<M,I,S> toolbar)
      Adds a toolbar to the bottom section (below the actual data).
      Parameters:
      toolbar - toolbar instance
      See Also:
    • addHeaderToolbar

      public void addHeaderToolbar(AbstractHeaderToolbar<M,I,S> toolbar)
      Ads a toolbar to the header section (below the grid header, above the actual data).
      Parameters:
      toolbar - toolbar instance
      See Also:
    • onSortStateChanged

      protected void onSortStateChanged(AjaxRequestTarget target)
      Invoked when sort state of this grid has changed (e.g. user clicked a sortable column header). By default refreshes the grid.
      Parameters:
      target -
    • getActiveColumns

      public Collection<IGridColumn<M,I,S>> getActiveColumns()
      Returns collection of currently visible columns.
      Returns:
      collection of currently visible columns
    • getAllColumns

      public List<IGridColumn<M,I,S>> getAllColumns()
      Returns the list of all columns in this grid.
      Returns:
      list of columns
    • getSortState

      public GridSortState<S> getSortState()
      Returns the sort state of this grid.
      Returns:
      sort state
      See Also:
    • setTheme

      public void setTheme(String theme)
      Sets the grid theme. Grid theme is used as CSS style class for the grid. The theme itself consist of a proper style definition in stylesheet. For more information on custom theme creation see the custom theme example.
      Parameters:
      theme - theme identifier
    • getTheme

      public String getTheme()
      Returns the theme identifier
      Returns:
      theme identifier
      See Also:
    • onComponentTag

      protected void onComponentTag(ComponentTag tag)
      Overrides:
      onComponentTag in class Component
    • renderHead

      public void renderHead(IHeaderResponse response)
      Specified by:
      renderHead in interface IHeaderContributor
      Overrides:
      renderHead in class Component
    • selectItem

      public abstract void selectItem(IModel<I> itemModel, boolean selected)
      Alters the selection state of item specified by the item model.
      Parameters:
      itemModel - item model
      selected - true if the item should be selected, false otherwise.
    • selectAllVisibleItems

      public abstract void selectAllVisibleItems()
      Marks all currently displayed items as selected. For DataGrid this selects all items on current page, for TreeGrid this selects all currently visible nodes.
    • resetSelectedItems

      public abstract void resetSelectedItems()
      Deselects all items. This method marks all items (not just visible items) as no selected.
    • isItemSelected

      public abstract boolean isItemSelected(IModel<I> itemModel)
      Queries whether the item specified by itemModel is currently selected.
      Parameters:
      itemModel - item model
      Returns:
      true if the item is selected, false otherwise
    • getSelectedItems

      public abstract Collection<IModel<I>> getSelectedItems()
      Returns the collection of models of all currently selected items.
      Returns:
      collection of models of currently selected items
    • setAllowSelectMultiple

      public abstract void setAllowSelectMultiple(boolean value)
      Sets whether user will be able to select more than one item.
      Parameters:
      value - true if the user will be able to select more than one item at a time, false otherwise (single selection mode).
    • isAllowSelectMultiple

      public abstract boolean isAllowSelectMultiple()
      Returns whether user will be able to select more than one item at a time.
      Returns:
      true if multiple items can be selected at a time, false otherwise.
    • update

      public abstract void update()
      During an Ajax request this method updates the changed grid rows.

      The definition of "changed" varies in DataGrid and TreeGrid.

      • In both grids the items for which the selection state changed are considered changed.
      • In TreeGrid the changes to TreeModel itself are being tracked (assuming the proper listeners are fired) and all rows that need to be updated are also considered changed.
      • In DataGrid the items that need to be updated can be marked by DataGrid.markItemDirty(IModel) or DataGrid.markAllItemsDirty(). The grid itself doesn't track changes to specific items (apart from the selection state).
    • onItemSelectionChanged

      protected void onItemSelectionChanged(IModel<I> item, boolean newValue)
      Invoked when an item selection state has been changed.
      Parameters:
      item - item model
      newValue - true if the item became selected, false otherwise.
    • getLastClickedColumn

      public IGridColumn<M,I,S> getLastClickedColumn()
    • cleanLastClickedColumn

      public void cleanLastClickedColumn()
    • disableRowClickNotifications

      protected boolean disableRowClickNotifications()
    • onRowPopulated

      protected void onRowPopulated(WebMarkupContainer rowComponent)
      Called after a grid row has been populated. This method allows adding behaviors to grid rows.
      Parameters:
      rowComponent -
    • onCellClicked

      protected boolean onCellClicked(AjaxRequestTarget target, IModel<I> rowModel, IGridColumn<M,I,S> column)
    • onRowClicked

      protected void onRowClicked(AjaxRequestTarget target, IModel<I> rowModel)
    • setClickRowToSelect

      public AbstractGrid<M,I,S> setClickRowToSelect(boolean clickRowToSelect)
      Sets whether a click on grid row should select/deselect the row.
      Parameters:
      clickRowToSelect - true if the row selection state should be changed upon a mouse click, false otherwise.
      Returns:
      this (useful for method chaining)
      See Also:
    • isClickRowToSelect

      public boolean isClickRowToSelect()
      Returns whether a click on grid row should select/deselect the row.
      Returns:
      true if the row click should alter the row selection state, false otherwise.
    • setClickRowToDeselect

      public void setClickRowToDeselect(boolean clickRowToDeselect)
      Sets whether a click on selected grid row should deselect it. This only applies when setClickRowToSelect(boolean) is set to true.
      Parameters:
      clickRowToDeselect - whether clicking a selected row should deselect it
    • isClickRowToDeselect

      public boolean isClickRowToDeselect()
      Returns whether clicking a selected row deselects it.
      Returns:
      true if clicking a selected row deselects it, false otherwise.
    • setContentHeight

      public void setContentHeight(Integer contentHeight, SizeUnit contentSizeUnit)
      Sets the height of grid content. Content is the part of grid displaying the actual data (rows), i.e. it doesn't cover the header part and toolbars. When the actual content height is bigger than specified height, a vertical scrollbar is displayed.
      Parameters:
      contentHeight - desired height of the content or null is the height should be determined by the actual height (no scrollbar displayed, defalt value)
      contentSizeUnit - size unit for the contentHeight
    • getContentHeight

      public int getContentHeight()
      Returns the content height.
      Returns:
      content height or 0 if the content height should be determined by the actual content.
      See Also:
    • getContentHeightSizeUnit

      public SizeUnit getContentHeightSizeUnit()
      Returns the size unit for content height.
      Returns:
      size unit
    • findParentRow

      public abstract WebMarkupContainer findParentRow(Component child)
      Returns the row in DataTable that contains the child component
      Parameters:
      child -
      Returns:
    • findRowComponent

      protected abstract WebMarkupContainer findRowComponent(IModel<I> rowModel)
      Returns the row component for specified item.
      Parameters:
      rowModel -
      Returns:
    • markItemDirty

      public abstract void markItemDirty(IModel<I> model)
      Marks the item from the given model as dirty. Dirty items are updated during Ajax requests when update() method is called.
      Parameters:
      model - model used to access the item
    • setSelectToEdit

      public void setSelectToEdit(boolean selectToEdit)
      Determines whether selected items should also be editable. This should be set to false when the grid is both selectable and editable (independently).
      Parameters:
      selectToEdit - whether selected rows should be editable
    • isSelectToEdit

      public boolean isSelectToEdit()
      Returns whether selected rows are also editable.
      Returns:
    • setItemEdit

      public void setItemEdit(IModel<I> rowModel, boolean edit)
      Sets the edit mode of the row. If selectToEdit is true, this is same as calling selectItem(IModel, boolean).
      Parameters:
      rowModel - row model
      edit - true if the row should be in editable mode, false otherwise.
      See Also:
    • isItemEdited

      public boolean isItemEdited(IModel<I> rowModel)
      Returns whether the row is in editable mode.
      Parameters:
      rowModel -
      Returns:
      true if the row is in editable mode, false otherwise.
    • isUseYui

      public boolean isUseYui()
    • setUseYui

      public void setUseYui(boolean useYui)