public abstract class AbstractJavaScriptRenderer<T> extends Grid.AbstractRenderer<T>
When a new JavaScript renderer is initialized in the browser, the framework
will look for a globally defined JavaScript function that will initialize the
renderer. The name of the initialization function is formed by replacing .
with _ in the name of the server-side class. If no such function is defined,
each super class is used in turn until a match is found. The framework will
thus first attempt with com_example_MyRenderer
for the
server-side
com.example.MyRenderer extends AbstractJavaScriptRenderer
class.
If MyRenderer instead extends com.example.SuperRenderer
, then
com_example_SuperRenderer
will also be attempted if
com_example_MyRenderer
has not been defined.
In addition to the general JavaScript extension functionality explained in
AbstractJavaScriptExtension
, this class also provides some
functionality specific for renderers.
The initialization function will be called with this
pointing to
a connector wrapper object providing integration to Vaadin. Please note that
in JavaScript, this
is not necessarily defined inside callback
functions and it might therefore be necessary to assign the reference to a
separate variable, e.g. var self = this;
. In addition to the
extension functions described for AbstractJavaScriptExtension
, the
connector wrapper object also provides this function:
getRowKey(rowIndex)
- Gets a unique identifier for the row
at the given index. This identifier can be used on the server to retrieve the
corresponding ItemId using Grid.AbstractGridExtension.getItemId(String)
.render(cell, data)
- Callback for rendering the given data
into the given cell. The structure of cell and data are described in separate
sections below. The renderer is required to implement this function.
Corresponds to
com.vaadin.client.renderers.Renderer#render(com.vaadin.client.widget.grid.RendererCellReference, Object)
.init(cell)
- Prepares a cell for rendering. Corresponds to
com.vaadin.client.renderers.ComplexRenderer#init(com.vaadin.client.widget.grid.RendererCellReference)
.destroy(cell)
- Allows the renderer to release resources
allocate for a cell that will no longer be used. Corresponds to
com.vaadin.client.renderers.ComplexRenderer#destroy(com.vaadin.client.widget.grid.RendererCellReference)
.onActivate(cell)
- Called when the cell is activated by the
user e.g. by double clicking on the cell or pressing enter with the cell
focused. Corresponds to
com.vaadin.client.renderers.ComplexRenderer#onActivate(com.vaadin.client.widget.grid.CellReference)
.getConsumedEvents()
- Returns a JavaScript array of event
names that should cause onBrowserEvent to be invoked whenever an event is
fired for a cell managed by this renderer. Corresponds to
com.vaadin.client.renderers.ComplexRenderer#getConsumedEvents()
.onBrowserEvent(cell, event)
- Called by Grid when an event
of a type returned by getConsumedEvents is fired for a cell managed by this
renderer. Corresponds to
com.vaadin.client.renderers.ComplexRenderer#onBrowserEvent(com.vaadin.client.widget.grid.CellReference, com.google.gwt.dom.client.NativeEvent)
.The cell object passed to functions defined by the renderer has these properties:
element
- The DOM element corresponding to this cell.
Readonly.rowIndex
- The current index of the row of this cell.
Readonly.columnIndex
- The current index of the column of this cell.
Readonly.colSpan
- The number of columns spanned by this cell. Only
supported in the object passed to the render
function - other
functions should not use the property. Readable and writable.
ClientConnector.AttachEvent, ClientConnector.AttachListener, ClientConnector.ConnectorErrorEvent, ClientConnector.DetachEvent, ClientConnector.DetachListener
Modifier | Constructor and Description |
---|---|
protected |
AbstractJavaScriptRenderer(Class<T> presentationType) |
protected |
AbstractJavaScriptRenderer(Class<T> presentationType,
String nullRepresentation) |
Modifier and Type | Method and Description |
---|---|
protected void |
addFunction(String functionName,
JavaScriptFunction function)
Register a
JavaScriptFunction that can be called from the
JavaScript using the provided name. |
protected void |
callFunction(String name,
Object... arguments)
Invoke a named function that the connector JavaScript has added to the
JavaScript connector wrapper object.
|
protected JavaScriptExtensionState |
getState()
Returns the shared state for this connector.
|
protected <R extends ServerRpc> |
registerRpc(R implementation,
Class<R> rpcInterfaceType)
Registers an RPC interface implementation for this component.
|
encode, encode, encodeValue, extend, getNullRepresentation, getPresentationType, getSupportedParentType
addComponentToGrid, getColumn, getItemId, getParentGrid, refreshRow, remove, removeComponentFromGrid
getParent, setParent
addAttachListener, addDetachListener, addExtension, addListener, addListener, addListener, addMethodInvocationToQueue, attach, beforeClientResponse, createState, detach, encodeState, equals, fireEvent, getAllChildrenIterable, getConnectorId, getErrorHandler, getExtensions, getListeners, getResource, getRpcManager, getRpcProxy, getSession, getState, getStateType, getUI, handleConnectorRequest, hashCode, hasListeners, isAttached, isConnectorEnabled, isThis, markAsDirty, markAsDirtyRecursive, registerRpc, removeAttachListener, removeDetachListener, removeExtension, removeListener, removeListener, removeListener, removeListener, requestRepaint, requestRepaintAll, retrievePendingRpcCalls, setErrorHandler, setResource
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
addAttachListener, addDetachListener, attach, beforeClientResponse, detach, encodeState, getErrorHandler, getExtensions, getParent, getRpcManager, getStateType, getUI, handleConnectorRequest, isAttached, isConnectorEnabled, markAsDirty, markAsDirtyRecursive, removeAttachListener, removeDetachListener, removeExtension, requestRepaint, requestRepaintAll, retrievePendingRpcCalls, setErrorHandler
getConnectorId
protected AbstractJavaScriptRenderer(Class<T> presentationType, String nullRepresentation)
protected <R extends ServerRpc> void registerRpc(R implementation, Class<R> rpcInterfaceType)
AbstractClientConnector
registerRpc
in class AbstractClientConnector
implementation
- RPC interface implementationrpcInterfaceType
- RPC interface class for which the implementation should be
registeredprotected void addFunction(String functionName, JavaScriptFunction function)
JavaScriptFunction
that can be called from the
JavaScript using the provided name. A JavaScript function with the
provided name will be added to the connector wrapper object (initially
available as this
). Calling that JavaScript function will
cause the call method in the registered JavaScriptFunction
to be
invoked with the same arguments.functionName
- the name that should be used for client-side callbackfunction
- the JavaScriptFunction
object that will be invoked
when the JavaScript function is calledprotected void callFunction(String name, Object... arguments)
JsonValue
or arrays of any other
supported type. Complex types (e.g. List, Set, Map, Connector or any
JavaBean type) must be explicitly serialized to a JsonValue
before sending. This can be done either with
JsonCodec.encode(Object, JsonValue, java.lang.reflect.Type, com.vaadin.ui.ConnectorTracker)
or using the factory methods in Json
.name
- the name of the functionarguments
- function argumentsprotected JavaScriptExtensionState getState()
AbstractClientConnector
As a side effect, marks the connector dirty so any changes done to the
state will be sent to the client. Use getState(false)
to avoid
marking the connector as dirty.
getState
in class AbstractClientConnector
Copyright © 2023 Vaadin Ltd. All rights reserved.