Package com.inmethod.grid.common
Class AbstractGrid<M,I,S>
- java.lang.Object
-
- org.apache.wicket.Component
-
- org.apache.wicket.MarkupContainer
-
- org.apache.wicket.markup.html.WebMarkupContainer
-
- org.apache.wicket.markup.html.panel.Panel
-
- com.inmethod.grid.common.AbstractGrid<M,I,S>
-
- Type Parameters:
M- grid model object typeI- row/item model object type
- All Implemented Interfaces:
Serializable,Iterable<Component>,IEventSink,IEventSource,IFeedbackContributor,IConverterLocator,IMetadataContext<Serializable,Component>,IQueueRegion,IHeaderContributor,IRequestableComponent,IHierarchical<Component>,IClusterable
public abstract class AbstractGrid<M,I,S> extends Panel
- Author:
- Matej Knopp
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description static PackageResourceReferenceCSSstatic StringINTERNAL_TOOLBAR_ITEM_IDINTERNALstatic JavaScriptResourceReferenceJS_DOMstatic JavaScriptResourceReferenceJS_EVENTstatic JavaScriptResourceReferenceJS_SCRIPTstatic JavaScriptResourceReferenceJS_SCRIPT_JQstatic JavaScriptResourceReferenceJS_YAHOOstatic StringTHEME_VISTAConstant for the Vista theme (default).-
Fields inherited from class org.apache.wicket.Component
ENABLE, FLAG_INITIALIZED, FLAG_RESERVED1, FLAG_RESERVED2, FLAG_RESERVED3, FLAG_RESERVED4, FLAG_RESERVED5, FLAG_RESERVED8, PARENT_PATH, PATH_SEPARATOR, RENDER, RFLAG_CONTAINER_DEQUEING
-
-
Constructor Summary
Constructors Constructor Description AbstractGrid(String id, IModel<M> model, List<IGridColumn<M,I,S>> columns)Creates newAbstractGridinstance
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description voidaddBottomToolbar(AbstractToolbar<M,I,S> toolbar)Adds a toolbar to the bottom section (below the actual data).voidaddHeaderToolbar(AbstractHeaderToolbar<M,I,S> toolbar)Ads a toolbar to the header section (below the grid header, above the actual data).voidaddTopToolbar(AbstractToolbar<M,I,S> toolbar)Adds a toolbar to the top section (above the grid header).voidcleanLastClickedColumn()protected voidcolumnSanityCheck(IGridColumn<M,I,S> column)Checks whether the column is a valid grid columnprotected booleandisableRowClickNotifications()abstract WebMarkupContainerfindParentRow(Component child)Returns the row in DataTable that contains the child componentprotected abstract WebMarkupContainerfindRowComponent(IModel<I> rowModel)Returns the row component for specified item.Collection<IGridColumn<M,I,S>>getActiveColumns()Returns collection of currently visible columns.List<IGridColumn<M,I,S>>getAllColumns()Returns the list of all columns in this grid.ColumnsStategetColumnState()Returns the column state.intgetContentHeight()Returns the content height.SizeUnitgetContentHeightSizeUnit()Returns the size unit for content height.Form<Void>getForm()IGridColumn<M,I,S>getLastClickedColumn()abstract Collection<IModel<I>>getSelectedItems()Returns the collection of models of all currently selected items.GridSortState<S>getSortState()Returns the sort state of this grid.StringgetTheme()Returns the theme identifierabstract booleanisAllowSelectMultiple()Returns whether user will be able to select more than one item at a time.booleanisClickRowToDeselect()Returns whether clicking a selected row deselects it.booleanisClickRowToSelect()Returns whether a click on grid row should select/deselect the row.booleanisItemEdited(IModel<I> rowModel)Returns whether the row is in editable mode.abstract booleanisItemSelected(IModel<I> itemModel)Queries whether the item specified by itemModel is currently selected.booleanisSelectToEdit()Returns whether selected rows are also editable.booleanisUseYui()abstract voidmarkItemDirty(IModel<I> model)Marks the item from the given model as dirty.protected voidonAfterRender()protected voidonBeforeRender()protected booleanonCellClicked(AjaxRequestTarget target, IModel<I> rowModel, IGridColumn<M,I,S> column)voidonColumnStateChanged()Invoked when client change the column state (e.g.protected voidonComponentTag(ComponentTag tag)protected voidonInitialize()protected voidonItemSelectionChanged(IModel<I> item, boolean newValue)Invoked when an item selection state has been changed.protected voidonRowClicked(AjaxRequestTarget target, IModel<I> rowModel)protected voidonRowPopulated(WebMarkupContainer rowComponent)Called after a grid row has been populated.protected voidonSortStateChanged(AjaxRequestTarget target)Invoked when sort state of this grid has changed (e.g.voidrenderHead(IHeaderResponse response)abstract voidresetSelectedItems()Deselects all items.abstract voidselectAllVisibleItems()Marks all currently displayed items as selected.abstract voidselectItem(IModel<I> itemModel, boolean selected)Alters the selection state of item specified by the item model.abstract voidsetAllowSelectMultiple(boolean value)Sets whether user will be able to select more than one item.voidsetClickRowToDeselect(boolean clickRowToDeselect)Sets whether a click on selected grid row should deselect it.AbstractGrid<M,I,S>setClickRowToSelect(boolean clickRowToSelect)Sets whether a click on grid row should select/deselect the row.voidsetColumnState(ColumnsState columnState)Sets a new column state.voidsetContentHeight(Integer contentHeight, SizeUnit contentSizeUnit)Sets the height of grid content.voidsetItemEdit(IModel<I> rowModel, boolean edit)Sets the edit mode of the row.voidsetSelectToEdit(boolean selectToEdit)Determines whether selected items should also be editable.voidsetTheme(String theme)Sets the grid theme.voidsetUseYui(boolean useYui)abstract voidupdate()During an Ajax request this method updates the changed grid rows.-
Methods inherited from class org.apache.wicket.markup.html.panel.Panel
getRegionMarkup, newMarkupSourcingStrategy
-
Methods inherited from class org.apache.wicket.markup.html.WebMarkupContainer
getWebApplication, getWebPage, getWebRequest, getWebResponse, getWebSession
-
Methods inherited from class org.apache.wicket.MarkupContainer
add, addDequeuedComponent, addOrReplace, autoAdd, canDequeueTag, contains, dequeue, dequeue, dequeuePreamble, findChildComponent, findComponentToDequeue, get, getAssociatedMarkup, getAssociatedMarkupStream, getMarkup, getMarkupType, internalAdd, internalInitialize, iterator, iterator, newDequeueContext, onComponentTagBody, onDetach, onRender, queue, remove, remove, removeAll, renderAll, renderAssociatedMarkup, renderNext, replace, setDefaultModel, size, stream, streamChildren, toString, toString, visitChildren, visitChildren
-
Methods inherited from class org.apache.wicket.Component
add, addStateChange, beforeRender, canCallListener, canCallListenerAfterExpiry, checkComponentTag, checkComponentTagAttribute, checkHierarchyChange, clearOriginalDestination, configure, continueToOriginalDestination, createConverter, debug, detach, detachModel, detachModels, determineVisibility, error, exceptionMessage, fatal, findMarkupStream, findPage, findParent, findParentWithAssociatedMarkup, getAjaxRegionMarkupId, getApplication, getBehaviorById, getBehaviorId, getBehaviors, getBehaviors, getClassRelativePath, getConverter, getDefaultModel, getDefaultModelObject, getDefaultModelObjectAsString, getDefaultModelObjectAsString, getEscapeModelStrings, getFeedbackMessages, getFlag, getId, getInnermostModel, getInnermostModel, getLocale, getLocalizer, getMarkup, getMarkupAttributes, getMarkupId, getMarkupId, getMarkupIdFromMarkup, getMarkupIdImpl, getMarkupSourcingStrategy, getMarkupTag, getMetaData, getModelComparator, getOutputMarkupId, getOutputMarkupPlaceholderTag, getPage, getPageRelativePath, getParent, getPath, getRenderBodyOnly, getRequest, getRequestCycle, getRequestFlag, getResponse, getSession, getSizeInBytes, getStatelessHint, getString, getString, getString, getStyle, getVariation, hasBeenRendered, hasErrorMessage, hasFeedbackMessage, info, initModel, internalOnModelChanged, internalRenderComponent, internalRenderHead, isActionAuthorized, isAuto, isBehaviorAccepted, isEnableAllowed, isEnabled, isEnabledInHierarchy, isIgnoreAttributeModifier, isInitialized, isRenderAllowed, isRendering, isStateless, isVersioned, isVisibilityAllowed, isVisible, isVisibleInHierarchy, markRendering, modelChanged, modelChanging, onConfigure, onEvent, onModelChanged, onModelChanging, onReAdd, onRemove, redirectToInterceptPage, remove, remove, render, renderComponentTag, rendered, renderPart, renderPlaceholderTag, replaceComponentTagBody, replaceWith, sameInnermostModel, sameInnermostModel, send, setAuto, setDefaultModelObject, setEnabled, setEscapeModelStrings, setFlag, setIgnoreAttributeModifier, setMarkup, setMarkupId, setMarkupIdImpl, setMetaData, setOutputMarkupId, setOutputMarkupPlaceholderTag, setParent, setRenderBodyOnly, setResponsePage, setResponsePage, setResponsePage, setVersioned, setVisibilityAllowed, setVisible, success, urlFor, urlFor, urlFor, urlForListener, urlForListener, visitParents, visitParents, warn, wrap
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.apache.wicket.IQueueRegion
dequeue, newDequeueContext
-
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
-
-
-
Field Detail
-
INTERNAL_TOOLBAR_ITEM_ID
public static final String INTERNAL_TOOLBAR_ITEM_ID
INTERNALId of toolbar item (inside toolbar repeaters).
- See Also:
- Constant Field Values
-
THEME_VISTA
public static final String THEME_VISTA
Constant for the Vista theme (default).- See Also:
- Constant Field Values
-
JS_YAHOO
public static final JavaScriptResourceReference JS_YAHOO
-
JS_EVENT
public static final JavaScriptResourceReference JS_EVENT
-
JS_DOM
public static final JavaScriptResourceReference JS_DOM
-
JS_SCRIPT
public static final JavaScriptResourceReference JS_SCRIPT
-
JS_SCRIPT_JQ
public static final JavaScriptResourceReference JS_SCRIPT_JQ
-
CSS
public static final PackageResourceReference CSS
-
-
Constructor Detail
-
AbstractGrid
public AbstractGrid(String id, IModel<M> model, List<IGridColumn<M,I,S>> columns)
Creates newAbstractGridinstance- Parameters:
id-model-columns-
-
-
Method Detail
-
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()
-
getColumnState
public ColumnsState getColumnState()
Returns the column state.- Returns:
- state of columns
- See Also:
ColumnsState
-
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:
ColumnsState
-
onInitialize
protected void onInitialize()
- Overrides:
onInitializein classMarkupContainer
-
onBeforeRender
protected void onBeforeRender()
- Overrides:
onBeforeRenderin classComponent
-
onAfterRender
protected void onAfterRender()
- Overrides:
onAfterRenderin classComponent
-
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:
AbstractToolbar
-
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:
AbstractToolbar
-
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:
AbstractToolbar
-
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:
IGridSortState,GridSortState
-
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:
setTheme(String)
-
onComponentTag
protected void onComponentTag(ComponentTag tag)
- Overrides:
onComponentTagin classComponent
-
renderHead
public void renderHead(IHeaderResponse response)
- Specified by:
renderHeadin interfaceIHeaderContributor- Overrides:
renderHeadin classComponent
-
selectItem
public abstract void selectItem(IModel<I> itemModel, boolean selected)
Alters the selection state of item specified by the item model.- Parameters:
itemModel- item modelselected-trueif the item should be selected,falseotherwise.
-
selectAllVisibleItems
public abstract void selectAllVisibleItems()
-
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:
trueif the item is selected,falseotherwise
-
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-trueif the user will be able to select more than one item at a time,falseotherwise (single selection mode).
-
isAllowSelectMultiple
public abstract boolean isAllowSelectMultiple()
Returns whether user will be able to select more than one item at a time.- Returns:
trueif multiple items can be selected at a time,falseotherwise.
-
update
public abstract void update()
During an Ajax request this method updates the changed grid rows.The definition of "changed" varies in
DataGridandTreeGrid.- In both grids the items for which the selection state changed are considered changed.
- In
TreeGridthe changes toTreeModelitself are being tracked (assuming the proper listeners are fired) and all rows that need to be updated are also considered changed. - In
DataGridthe items that need to be updated can be marked byDataGrid.markItemDirty(IModel)orDataGrid.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 modelnewValue-trueif the item became selected,falseotherwise.
-
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-trueif the row selection state should be changed upon a mouse click,falseotherwise.- Returns:
this(useful for method chaining)- See Also:
setClickRowToDeselect(boolean)
-
isClickRowToSelect
public boolean isClickRowToSelect()
Returns whether a click on grid row should select/deselect the row.- Returns:
trueif the row click should alter the row selection state,falseotherwise.
-
setClickRowToDeselect
public void setClickRowToDeselect(boolean clickRowToDeselect)
Sets whether a click on selected grid row should deselect it. This only applies whensetClickRowToSelect(boolean)is set totrue.- Parameters:
clickRowToDeselect- whether clicking a selected row should deselect it
-
isClickRowToDeselect
public boolean isClickRowToDeselect()
Returns whether clicking a selected row deselects it.- Returns:
trueif clicking a selected row deselects it,falseotherwise.
-
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 ornullis the height should be determined by the actual height (no scrollbar displayed, defalt value)contentSizeUnit- size unit for thecontentHeight
-
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:
setContentHeight(Integer, SizeUnit)
-
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 whenupdate()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 tofalsewhen 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 callingselectItem(IModel, boolean).- Parameters:
rowModel- row modeledit-trueif the row should be in editable mode,falseotherwise.- See Also:
setSelectToEdit(boolean)
-
isItemEdited
public boolean isItemEdited(IModel<I> rowModel)
Returns whether the row is in editable mode.- Parameters:
rowModel-- Returns:
trueif the row is in editable mode,falseotherwise.
-
isUseYui
public boolean isUseYui()
-
setUseYui
public void setUseYui(boolean useYui)
-
-