Class WAbstractItemDelegate
- java.lang.Object
-
- eu.webtoolkit.jwt.WObject
-
- eu.webtoolkit.jwt.WAbstractItemDelegate
-
- Direct Known Subclasses:
WItemDelegate
public abstract class WAbstractItemDelegate extends WObject
Abstract delegate class for rendering an item in an item view.Rendering of an item in a
WAbstractItemViewis delegated to an implementation of this delegate class. The default implementation used by JWt's item views isWItemDelegate. To provide specialized rendering support, you can reimplement this class (or specializeWItemDelegate).As a delegate is used for rendering multiple items, the class should not keep state about one specific item.
A delegate may provide editing support by instantiating an editor when
update()is called with theViewItemRenderFlag.Editingflag. In that case, you will also need to implementgetEditState()andsetEditState()to support virtual scrolling andsetModelData()to save the edited value to the model. For an example, see theWItemDelegate.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class eu.webtoolkit.jwt.WObject
WObject.FormData
-
-
Constructor Summary
Constructors Constructor Description WAbstractItemDelegate()Constructor.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description Signal2<WWidget,java.lang.Boolean>closeEditor()Signal which indicates that an editor needs to be closed.java.lang.ObjectgetEditState(WWidget widget, WModelIndex anon2)Returns the current edit state.voidsetEditState(WWidget widget, WModelIndex anon2, java.lang.Object value)Sets the editor data from the editor state.voidsetModelData(java.lang.Object editState, WAbstractItemModel model, WModelIndex anon3)Saves the edited data to the model.WWidgetupdate(WWidget widget, WModelIndex index, ViewItemRenderFlag flag, ViewItemRenderFlag... flags)Creates or updates a widget that renders an item.abstract WWidgetupdate(WWidget widget, WModelIndex index, java.util.EnumSet<ViewItemRenderFlag> flags)Creates or updates a widget that renders an item.voidupdateModelIndex(WWidget widget, WModelIndex anon2)Updates the model index of a widget.ValidationStatevalidate(WModelIndex anon1, java.lang.Object editState)Returns whether the edited value is valid.-
Methods inherited from class eu.webtoolkit.jwt.WObject
getId, getObjectName, remove, setFormData, setObjectName, tr
-
-
-
-
Method Detail
-
update
public abstract WWidget update(WWidget widget, WModelIndex index, java.util.EnumSet<ViewItemRenderFlag> flags)
Creates or updates a widget that renders an item.The item is specified by its model
index, which also indicates the model. If an existing widget already renders the item, but needs to be updated, it is passed as thewidgetparameter.When
widgetisnull, a new widget needs to be created and returned.If you want to replace the
widgetwith a new one, return the new widget. The oldwidgetwill be removed. Returnnullif you do not want to replace thewidget.You can remove the
widgetfrom its parent for reuse withWWidget.removeFromParent().The returned widget should be a widget that responds properly to be given a height, width and style class. In practice, that means it cannot have a border or margin, and thus cannot be a
WFormWidgetsince those widgets typically have built-in borders and margins. If you want to return a form widget (for editing the item), you should wrap it in a container widget.The
flagsparameter indicates options for rendering the item.
-
update
public final WWidget update(WWidget widget, WModelIndex index, ViewItemRenderFlag flag, ViewItemRenderFlag... flags)
Creates or updates a widget that renders an item.
-
updateModelIndex
public void updateModelIndex(WWidget widget, WModelIndex anon2)
Updates the model index of a widget.This method is invoked by the view when due to row/column insertions or removals, the index has shifted.
You should reimplement this method only if you are storing the model index in the
widget, to update the stored model index.The default implementation does nothing.
-
getEditState
public java.lang.Object getEditState(WWidget widget, WModelIndex anon2)
Returns the current edit state.Because a View may support virtual scrolling in combination with editing, it may happen that the view decides to delete the editor widget while the user is editing. To allow to reconstruct the editor in its original state, the View will therefore ask for the editor to serialize its state in a boost::any.
When the view decides to close an editor and save its value back to the model, he will first call
getEditState()and thensetModelData().The default implementation assumes a read-only delegate, and returns a boost::any().
-
setEditState
public void setEditState(WWidget widget, WModelIndex anon2, java.lang.Object value)
Sets the editor data from the editor state.When the View scrolls back into view an item that was being edited, he will use
setEditState()to allow the editor to restore its current editor state.The default implementation assumes a read-only delegate and does nothing.
-
validate
public ValidationState validate(WModelIndex anon1, java.lang.Object editState)
Returns whether the edited value is valid.The default implementation does nothing and returns Valid.
- See Also:
WValidator.validate(String input)
-
setModelData
public void setModelData(java.lang.Object editState, WAbstractItemModel model, WModelIndex anon3)Saves the edited data to the model.The View will use this method to save the edited value to the model. The
editStateis first fetched from the editor usinggetEditState().The default implementation assumes a read-only delegate does nothing.
-
closeEditor
public Signal2<WWidget,java.lang.Boolean> closeEditor()
Signal which indicates that an editor needs to be closed.The delegate should emit this signal when it decides for itself that it should be closed (e.g. because the user confirmed the edited value or cancelled the editing). The View will then rerender the item if needed.
The second boolean argument passed to the signal is a flag which indicates whether the editor feels that the value should be saved or cancelled.
-
-