Package org.adempiere.webui.component
Class WListbox
java.lang.Object
org.zkoss.zk.ui.AbstractComponent
org.zkoss.zk.ui.HtmlBasedComponent
org.zkoss.zul.impl.XulElement
org.zkoss.zul.impl.MeshElement
org.zkoss.zul.Listbox
org.adempiere.webui.component.Listbox
org.adempiere.webui.component.WListbox
- All Implemented Interfaces:
Serializable,Cloneable,TableValueChangeListener,WTableModelListener,IMiniTable,org.zkoss.zk.ui.Component,org.zkoss.zk.ui.event.EventListener<org.zkoss.zk.ui.event.Event>,org.zkoss.zk.ui.ext.Scope,org.zkoss.zk.ui.sys.ComponentCtrl,org.zkoss.zul.ext.Paginated
public class WListbox
extends Listbox
implements IMiniTable, TableValueChangeListener, WTableModelListener
IMiniTable implementation for Zk.- Author:
- Andrew Kimball, Sendy Yagambrum
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class org.zkoss.zul.Listbox
org.zkoss.zul.Listbox.Children, org.zkoss.zul.Listbox.ExtraCtrlNested classes/interfaces inherited from class org.zkoss.zul.impl.MeshElement
org.zkoss.zul.impl.MeshElement.InternalPagingNested classes/interfaces inherited from class org.zkoss.zk.ui.AbstractComponent
org.zkoss.zk.ui.AbstractComponent.ForwardInfo, org.zkoss.zk.ui.AbstractComponent.TargetInfo -
Field Summary
FieldsFields inherited from class org.zkoss.zul.Listbox
LOADING_MODEL, SYNCING_MODELFields inherited from class org.zkoss.zul.impl.MeshElement
CSS_FLEX_AUTO_DISABLED_COUNTFields inherited from class org.zkoss.zk.ui.HtmlBasedComponent
_zclassFields inherited from interface org.zkoss.zk.ui.Component
APPLICATION_SCOPE, COMPONENT_SCOPE, DESKTOP_SCOPE, PAGE_SCOPE, REQUEST_SCOPE, SESSION_SCOPE, SPACE_SCOPEFields inherited from interface org.zkoss.zk.ui.sys.ComponentCtrl
AFTER_CHILD_ADDED, AFTER_CHILD_REMOVED, AFTER_PAGE_ATTACHED, AFTER_PAGE_DETACHED, AFTER_PARENT_CHANGED, CE_BUSY_IGNORE, CE_DUPLICATE_IGNORE, CE_IMPORTANT, CE_NON_DEFERRABLE, CE_REPEAT_IGNORE -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidAdd columnvoidadd column with headervoidAdd columnvoidAdd Table Column and specify the column header.voidaddTotals(ColumnInfo[] layout) Add new row for column totalsvoidautoSize()Deprecated.voidclear()Clear the table components.voidRemoves all data stored in the underlying model.intconvertColumnIndexToModel(int viewColumnIndex) Convert the index for a column from the display index to the corresponding index in the underlying model.intgetColorCode(int row) Get ColorCode for Row.intGet number of columns<T extends Serializable>
TGet key of first rowintGet columns layout.Get Columns Layout.getModel()Return theListModelTableassociated with this table.intGet the number of rows in this table's model.<T extends Serializable>
TgetRowKeyAt(int index) IDEMPIERE-1334 get key of record at indexintGet index of the first selected row, -1 if no row is selected.<T extends Serializable>
TGet the key of currently selected row based on layout defined inprepareTable(ColumnInfo[], String, String, boolean, String).booleanIs show totalgetValueAt(int row, int column) Returns the cell value atrowandcolumn.Get the name of the wListboxvoidCreateListHeadand render list box header by callingWListItemRenderer.renderListHead(ListHead).
Throw ApplicationException if renderer of list box is notWListItemRenderer.booleanbooleanisCellEditable(int row, int column) Is the cell at the specified row and column editable?booleanQuery whether multiple rows can be selected in the table.voidPopulate Table from ResultSet, note that ResultSet is not closed at the end of this method.voidPopulate Table from PO Array.prepareTable(ColumnInfo[] layout, String from, String where, boolean multiSelection, String tableName) Prepare Table and return SQL required to get resultset to populate table.prepareTable(ColumnInfo[] layout, String from, String where, boolean multiSelection, String tableName, boolean addAccessSQL) Prepare Table and return SQL to get ResultSet to populate tablevoidRender the header of the WListbox with saved column widthvoidrepaint()Repaint the Table.voidSave the width of all the columns toMWlistboxCustomizationvoidsetAllowIDColumnForReadWrite(boolean allowIDColumnForReadWrite) Set whether ID column is editablevoidsetColorColumn(int modelIndex) Set the Column to determine the color of the row (based on model index).voidsetColorCompare(Object dataCompare) Set ColorColumn comparison criteria.voidsetColumnClass(int index, Class<?> classType, boolean readOnly) Set the type of the column.voidsetColumnClass(int index, Class<?> classType, boolean readOnly, String header) Set the type of the column.voidsetColumnReadOnly(int index, boolean readOnly) Set Column at the specifiedindexto read-only or read/write.voidsetData(ListModelTable model, List<? extends String> columnNames) Set the data model and column header names for the Listbox.voidsetModel(org.zkoss.zul.ListModel<?> model) Set ListModelvoidsetMultiSelection(boolean multiSelection) Set whether or not multiple rows can be selected.voidsetRowCount(int rowCount) Set the size of the underlying data model.voidsetSelectedByKeys(List<Integer> lsKey) IDEMPIERE-1334.
De-select all current select, set all record with key in lsKey as selected.
If table has no key column, just return.voidsetShowTotals(boolean show) Set if Totals is ShowvoidsetValueAt(Object value, int row, int column) Set the cell value atrowandcolumn.voidsetwListBoxName(String wListBoxName) Set the name of the wListbox.voidtableChanged(WTableModelEvent event) Respond to a change in the table's model.voidRespond to a TableValueChangeEvent event.
To listen to the event, you have to register it first by callingWListItemRenderer.addTableValueChangeListener(TableValueChangeListener)Methods inherited from class org.adempiere.webui.component.Listbox
addActionListener, addDoubleClickListener, addItem, addItem, addOnDropListener, afterInsert, appendItem, appendItem, getItemAtIndex, getListHead, getOddRowSclass, getSelectedIndices, getSelectedItem, getValue, insertBefore, isEnabled, isItemDraggable, onEvent, removeActionListener, removeAllItems, removeChild, setEnabled, setItemDraggable, setOddRowSclass, setSelectedIndices, setSelectedKeyNamePair, setSelectedValueNamePair, setValue, toStringMethods inherited from class org.zkoss.zul.Listbox
addItemToSelection, beforeChildAdded, beforeRemove, clearSelection, clone, getChildren, getEmptyMessage, getExtraCtrl, getFrozen, getGroupCount, getGroups, getGroupsModel, getHeads, getIndexOfItem, getInnerWidth, getItemCount, getItemRenderer, getItems, getListfoot, getListhead, getListModel, getMaxlength, getName, getNonselectableTags, getPaginal, getPagingChild, getPropertyAccess, getRows, getSelectedCount, getSelectedIndex, getSelectedItems, getSeltype, getVisibleItemCount, getZclass, hasGroup, isAutohidePaging, isCheckmark, isDisabled, isMultiple, isSelectOnHighlightDisabled, isVflex, onAfterRender, onInitRender, onPageAttached, onPageDetached, onPagingInitRender, pgi, removeItemAt, removeItemFromSelection, renderAll, renderItem, renderItems, renderProperties, scrollToIndex, selectAll, selectItem, service, sessionDidActivate, sessionWillPassivate, setActivePage, setActivePage, setCheckmark, setDisabled, setEmptyMessage, setHeight, setInnerWidth, setItemRenderer, setItemRenderer, setMaxlength, setModel, setMold, setMultiple, setName, setNonselectableTags, setPageSize, setPaginal, setRows, setSelectedIndex, setSelectedItem, setSelectedItems, setSeltype, setVflex, setVflex, shallUpdateScrollPos, toggleItemSelectionMethods inherited from class org.zkoss.zul.impl.MeshElement
checkBeforeSetRows, evalCSSFlex, getActivePage, getPageCount, getPageSize, getPagingPosition, getSpan, isAutopaging, isPagingDisabled, isSizedByContent, isSpan, setAutopaging, setPagingDisabled, setPagingPosition, setSizedByContent, setSpan, setSpanMethods inherited from class org.zkoss.zul.impl.XulElement
getContext, getCtrlKeys, getPopup, getTooltip, setContext, setContext, setContextAttributes, setCtrlKeys, setPopup, setPopup, setPopupAttributes, setTooltip, setTooltip, setTooltipAttributesMethods inherited from class org.zkoss.zk.ui.HtmlBasedComponent
addSclass, focus, getAction, getClientAction, getDraggable, getDroppable, getHeight, getHflex, getLeft, getRenderdefer, getSclass, getStyle, getTabindex, getTabindexInteger, getTooltiptext, getTop, getVflex, getWidth, getZindex, getZIndex, removeSclass, removeSclass, setAction, setClass, setClientAction, setDraggable, setDroppable, setFocus, setHeight0, setHeightDirectly, setHflex, setHflex0, setHflexDirectly, setLeft, setLeftDirectly, setRenderdefer, setSclass, setStyle, setTabindex, setTabindex, setTooltiptext, setTop, setTopDirectly, setVflex0, setVflexDirectly, setWidth, setWidth0, setWidthDirectly, setZclass, setZindex, setZIndex, setZIndexDirectlyMethods inherited from class org.zkoss.zk.ui.AbstractComponent
addAnnotation, addCallback, addClientEvent, addEventHandler, addEventListener, addEventListener, addForward, addForward, addForward, addForward, addMoved, addRedrawCallback, addScopeListener, addShadowRoot, addShadowRootBefore, addSharedEventHandlerMap, appendChild, applyProperties, beforeChildRemoved, beforeParentChanged, destroyIndexCacheMap, detach, didActivate, didActivate, didDeserialize, didDeserialize, disableBindingAnnotation, disableClientUpdate, disableHostChanged, enableBindingAnnotation, enableHostChanged, getAnnotatedProperties, getAnnotatedPropertiesBy, getAnnotation, getAnnotations, getAnnotations, getAttribute, getAttribute, getAttribute, getAttributeOrFellow, getAttributes, getAttributes, getAuService, getAutag, getCallback, getClientAttribute, getClientDataAttribute, getClientEvents, getDefaultMold, getDefinition, getDesktop, getEventHandler, getEventHandlerNames, getEventListenerMap, getEventListeners, getFellow, getFellow, getFellowIfAny, getFellowIfAny, getFellows, getFirstChild, getForwards, getId, getIndexCacheMap, getLastChild, getMold, getNextSibling, getPage, getParent, getPreviousSibling, getRedrawCallback, getRoot, getShadowFellowIfAny, getShadowRoots, getShadowVariable, getShadowVariable, getShadowVariable0, getSpaceOwner, getSpecialRendererOutput, getStubonly, getSubBindingAnnotationCount, getTemplate, getTemplateNames, getUuid, getWidgetAttributeNames, getWidgetClass, getWidgetListener, getWidgetListenerNames, getWidgetOverride, getWidgetOverrideNames, hasAttribute, hasAttribute, hasAttribute, hasAttributeOrFellow, hasBindingAnnotation, hasFellow, hasFellow, hasSubBindingAnnotation, initIndexCacheMap, invalidate, isChildable, isDisabledHostChanged, isInitialized, isInvalidated, isListenerAvailable, isVisible, onChildAdded, onChildRemoved, onParentChanged, onWrongValue, query, queryAll, redraw, redrawChildren, removeAttribute, removeAttribute, removeAttribute, removeCallback, removeEventListener, removeForward, removeForward, removeRedrawCallback, removeScopeListener, removeShadowRoot, render, render, render, renderPropertiesOnly, replace, response, response, response, service, setAttribute, setAttribute, setAttribute, setAuService, setAutag, setClientAttribute, setClientDataAttribute, setDefinition, setDefinition, setId, setPage, setPageBefore, setParent, setStubonly, setStubonly, setSubBindingAnnotationCount, setTemplate, setVisible, setVisibleDirectly, setWidgetClass, setWidgetListener, setWidgetOverride, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdateWidgetListener, smartUpdateWidgetOverride, updateByClient, updateSubBindingAnnotationCount, willPassivate, willPassivate, willSerialize, willSerialize
-
Field Details
-
m_keyColumnIndex
protected int m_keyColumnIndexModel Index of Key Column.
-
-
Constructor Details
-
WListbox
public WListbox()Default constructor.
Set empty model andWListItemRendereras renderer.
-
-
Method Details
-
setData
Set the data model and column header names for the Listbox.- Parameters:
model- The data model to assign to the tablecolumnNames- Header names of the table columns
-
setModel
public void setModel(org.zkoss.zul.ListModel<?> model) Set ListModel- Overrides:
setModelin classorg.zkoss.zul.Listbox
-
initialiseHeader
public void initialiseHeader()CreateListHeadand render list box header by callingWListItemRenderer.renderListHead(ListHead).
Throw ApplicationException if renderer of list box is notWListItemRenderer. -
isCellEditable
public boolean isCellEditable(int row, int column) Is the cell at the specified row and column editable?- Specified by:
isCellEditablein interfaceIMiniTable- Parameters:
row- row index of cellcolumn- column index of cell- Returns:
- true if cell is editable, false otherwise
-
getValueAt
Returns the cell value atrowandcolumn.Note: The column is specified in the table view's display order, and not in the
TableModel's column order. This is an important distinction because as the user rearranges the columns in the table, the column at a given index in the view will change. Meanwhile the user's actions never affect the model's column ordering.- Specified by:
getValueAtin interfaceIMiniTable- Parameters:
row- the index of the row whose value is to be queriedcolumn- the index of the column whose value is to be queried- Returns:
- the Object at the specified cell
-
getModel
Return theListModelTableassociated with this table.- Overrides:
getModelin classorg.zkoss.zul.Listbox- Returns:
- The
ListModelTableassociated with this table.
-
setValueAt
Set the cell value atrowandcolumn.- Specified by:
setValueAtin interfaceIMiniTable- Parameters:
value- The value to setrow- the index of the row whose value is to be setcolumn- the index of the column whose value is to be set
-
convertColumnIndexToModel
public int convertColumnIndexToModel(int viewColumnIndex) Convert the index for a column from the display index to the corresponding index in the underlying model.This is unused for this implementation because the column ordering cannot be dynamically changed.
- Specified by:
convertColumnIndexToModelin interfaceIMiniTable- Parameters:
viewColumnIndex- the index of the column in the view- Returns:
- the index of the corresponding column in the model
-
setColumnReadOnly
public void setColumnReadOnly(int index, boolean readOnly) Set Column at the specifiedindexto read-only or read/write.- Specified by:
setColumnReadOnlyin interfaceIMiniTable- Parameters:
index- index of column to set as read-only (or not)readOnly- Read only value. Iftruecolumn is read only, iffalsecolumn is read-write
-
prepareTable
public String prepareTable(ColumnInfo[] layout, String from, String where, boolean multiSelection, String tableName) Prepare Table and return SQL required to get resultset to populate table.- Specified by:
prepareTablein interfaceIMiniTable- Parameters:
layout- array of column infofrom- SQL FROM contentwhere- SQL WHERE contentmultiSelection- multiple selectionstableName- table name- Returns:
- SQL statement to use to get resultset to populate table
-
prepareTable
public String prepareTable(ColumnInfo[] layout, String from, String where, boolean multiSelection, String tableName, boolean addAccessSQL) Prepare Table and return SQL to get ResultSet to populate table- Parameters:
layout- array of column infofrom- SQL FROM contentwhere- SQL WHERE contentmultiSelection- multiple selectionstableName- multiple selectionsaddAccessSQL- specifies whether to addAcessSQL- Returns:
- SQL statement to use to get resultset to populate table
-
addColumn
Description copied from interface:IMiniTableadd column with header- Specified by:
addColumnin interfaceIMiniTable- Parameters:
header-
-
addColumn
Add column- Parameters:
header-description-
-
addColumn
Add Table Column and specify the column header.- Parameters:
header- name of column headerdescription-AD_Reference_ID-
-
setColumnClass
Set the type of the column.- Specified by:
setColumnClassin interfaceIMiniTable- Parameters:
index- The index of the column to be modifiedclassType- The class of data that the column will containreadOnly- Whether the column is read onlyheader- The header text for the column- See Also:
-
setColumnClass
Set the type of the column.- Specified by:
setColumnClassin interfaceIMiniTable- Parameters:
index- The index of the column to be modifiedclassType- The class of data that the column will containreadOnly- Whether column is read only- See Also:
-
addColumn
Add column- Parameters:
classType- The class of data that the column will containreadOnly- Whether the column is read onlyheader- The header text for the column- See Also:
-
setColorColumn
public void setColorColumn(int modelIndex) Set the Column to determine the color of the row (based on model index).- Parameters:
modelIndex- the index of the column used to decide the colour
-
loadTable
Populate Table from ResultSet, note that ResultSet is not closed at the end of this method.- Specified by:
loadTablein interfaceIMiniTable- Parameters:
rs- ResultSet containing data to enter into the table.
The contents must conform to the column layout defined inprepareTable(ColumnInfo[], String, String, boolean, String)
-
loadTable
Populate Table from PO Array.- Specified by:
loadTablein interfaceIMiniTable- Parameters:
pos- array of Persistent Objects
-
clear
public void clear()Clear the table components. -
getSelectedRowKey
Get the key of currently selected row based on layout defined inprepareTable(ColumnInfo[], String, String, boolean, String).- Specified by:
getSelectedRowKeyin interfaceIMiniTable- Returns:
- ID (int) or UUID (String) - if key
-
getRowKeyAt
IDEMPIERE-1334 get key of record at index- Parameters:
index-- Returns:
- ID (int) or UUID (String)
-
setSelectedByKeys
IDEMPIERE-1334.
De-select all current select, set all record with key in lsKey as selected.
If table has no key column, just return.- Parameters:
lsKey-
-
getFirstRowKey
Get key of first row- Returns:
- key for first row (row 0). null if table is empty.
-
getSelectedRow
public int getSelectedRow()Get index of the first selected row, -1 if no row is selected.- Specified by:
getSelectedRowin interfaceIMiniTable- Returns:
- the index of the first selected row
-
setRowCount
public void setRowCount(int rowCount) Set the size of the underlying data model.- Specified by:
setRowCountin interfaceIMiniTable- Parameters:
rowCount- number of rows
-
setwListBoxName
Set the name of the wListbox. This is use to save the width of columns into ad_wlistbox_customization. -
getwListBoxName
Get the name of the wListbox -
getLayoutInfo
Get Columns Layout.- Specified by:
getLayoutInfoin interfaceIMiniTable- Returns:
- Array of ColumnInfo
-
clearTable
public void clearTable()Removes all data stored in the underlying model. -
getRowCount
public int getRowCount()Get the number of rows in this table's model.- Specified by:
getRowCountin interfaceIMiniTable- Returns:
- the number of rows in this table's model
-
setMultiSelection
public void setMultiSelection(boolean multiSelection) Set whether or not multiple rows can be selected.- Specified by:
setMultiSelectionin interfaceIMiniTable- Parameters:
multiSelection- are multiple selections allowed
-
isMultiSelection
public boolean isMultiSelection()Query whether multiple rows can be selected in the table.- Specified by:
isMultiSelectionin interfaceIMiniTable- Returns:
- true if multiple rows can be selected
-
setShowTotals
public void setShowTotals(boolean show) Set if Totals is Show- Specified by:
setShowTotalsin interfaceIMiniTable- Parameters:
show-
-
getShowTotals
public boolean getShowTotals()Is show total- Returns:
- true if Totals is Show
-
setColorCompare
Set ColorColumn comparison criteria.- Specified by:
setColorComparein interfaceIMiniTable- Parameters:
dataCompare- object encapsulating comparison criteria
-
getColorCode
public int getColorCode(int row) Get ColorCode for Row.
If numerical value in color column (m_colorColumnIndex) compare to m_colorDataCompare is- negative = -1
- positive = 1
- otherwise = 0
If Timestamp, same as above for before, after and equal for comparison to m_colorDataCompare or today (if m_colorDataCompare is null).- Specified by:
getColorCodein interfaceIMiniTable- Parameters:
row- row- Returns:
- color code
-
tableValueChange
Description copied from interface:TableValueChangeListenerRespond to a TableValueChangeEvent event.
To listen to the event, you have to register it first by callingWListItemRenderer.addTableValueChangeListener(TableValueChangeListener)- Specified by:
tableValueChangein interfaceTableValueChangeListener- Parameters:
event- The event that has occurred
-
repaint
public void repaint()Repaint the Table.- Specified by:
repaintin interfaceIMiniTable
-
getLayout
Get columns layout.- Returns:
- ColumnInfo[], the columns layout of the table
- See Also:
-
setLayout(ColumnInfo[])
-
tableChanged
Respond to a change in the table's model.
If the event indicates that the entire table has changed, the table is repainted.- Specified by:
tableChangedin interfaceWTableModelListener- Parameters:
event- The event fired to indicate a change in the table's model
-
autoSize
Deprecated.no op, to ease porting of swing form- Specified by:
autoSizein interfaceIMiniTable
-
getColumnCount
public int getColumnCount()Description copied from interface:IMiniTableGet number of columns- Specified by:
getColumnCountin interfaceIMiniTable- Returns:
- number of columns
-
getKeyColumnIndex
public int getKeyColumnIndex()- Returns:
- key column index
-
addTotals
Add new row for column totals- Parameters:
layout- ColumnInfo[]
-
isAllowIDColumnForReadWrite
public boolean isAllowIDColumnForReadWrite()- Returns:
- true if ID column is editable
-
setAllowIDColumnForReadWrite
public void setAllowIDColumnForReadWrite(boolean allowIDColumnForReadWrite) Set whether ID column is editable- Parameters:
allowIDColumnForReadWrite-
-
renderCustomHeaderWidth
public void renderCustomHeaderWidth()Render the header of the WListbox with saved column width -
saveColumnWidth
public void saveColumnWidth()Save the width of all the columns toMWlistboxCustomization
-