com.vaadin.ui.renderers.
Class AbstractJavaScriptRenderer<T,V>
- java.lang.Object
-
- com.vaadin.server.AbstractClientConnector
-
- com.vaadin.server.AbstractExtension
-
- com.vaadin.ui.renderers.AbstractRenderer<T,V>
-
- com.vaadin.ui.renderers.AbstractJavaScriptRenderer<T,V>
-
Type Parameters:
T
- the grid type this renderer can be attached toV
- the type this renderer knows how to presentAll Implemented Interfaces:
MethodEventSource
,ClientConnector
,Extension
,Connector
,Renderer<V>
,Serializable
public abstract class AbstractJavaScriptRenderer<T,V> extends AbstractRenderer<T,V>
Base class for Renderers with all client-side logic implemented using JavaScript.
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-sidecom.example.MyRenderer extends AbstractJavaScriptRenderer
class. If MyRenderer instead extendscom.example.SuperRenderer
, thencom_example_SuperRenderer
will also be attempted ifcom_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 forAbstractJavaScriptExtension
, 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 usinggetItem(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 tocom.vaadin.client.renderers.Renderer#render(com.vaadin.client.widget.grid.RendererCellReference, Object)
.init(cell)
- Prepares a cell for rendering. Corresponds tocom.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 tocom.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 tocom.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 tocom.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 tocom.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 therender
function - other functions should not use the property. Readable and writable.
Since:
8.0
Author:
Vaadin Ltd
See Also:
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface com.vaadin.server.ClientConnector
ClientConnector.AttachEvent, ClientConnector.AttachListener, ClientConnector.ConnectorErrorEvent, ClientConnector.DetachEvent, ClientConnector.DetachListener
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
AbstractJavaScriptRenderer(Class<V> presentationType)
protected
AbstractJavaScriptRenderer(Class<V> presentationType, String nullRepresentation)
-
Method Summary
All Methods Modifier and Type Method 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 JavaScriptExtensionState
getState(boolean markAsDirty)
Returns the shared state for this connector.
protected <R extends ServerRpc>
voidregisterRpc(R implementation, Class<R> rpcInterfaceType)
Registers an RPC interface implementation for this component.
-
Methods inherited from class com.vaadin.ui.renderers.AbstractRenderer
encode, encode, extend, getNullRepresentation, getParent, getParentGrid, getPresentationType, getSupportedParentType
-
Methods inherited from class com.vaadin.server.AbstractExtension
remove, setParent
-
Methods inherited from class com.vaadin.server.AbstractClientConnector
addAttachListener, addDetachListener, addExtension, addListener, addListener, addListener, addListener, addListener, addListener, addMethodInvocationToQueue, attach, beforeClientResponse, createState, detach, encodeState, equals, fireEvent, getAllChildrenIterable, getConnectorId, getErrorHandler, getExtensions, getListeners, getResource, getRpcManager, getRpcProxy, getSession, getStateType, getUI, handleConnectorRequest, hashCode, hasListeners, isAttached, isConnectorEnabled, isThis, markAsDirty, markAsDirtyRecursive, registerRpc, removeAttachListener, removeDetachListener, removeExtension, removeListener, removeListener, removeListener, removeListener, removeListener, requestRepaint, requestRepaintAll, retrievePendingRpcCalls, setErrorHandler, setResource, updateDiffstate
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.vaadin.server.ClientConnector
addAttachListener, addDetachListener, attach, beforeClientResponse, detach, encodeState, getErrorHandler, getExtensions, getRpcManager, getStateType, getUI, handleConnectorRequest, isAttached, isConnectorEnabled, markAsDirty, markAsDirtyRecursive, removeAttachListener, removeDetachListener, removeExtension, requestRepaint, requestRepaintAll, retrievePendingRpcCalls, setErrorHandler
-
Methods inherited from interface com.vaadin.shared.Connector
getConnectorId
-
-
-
-
Method Detail
-
registerRpc
protected <R extends ServerRpc> void registerRpc(R implementation, Class<R> rpcInterfaceType)
Description copied from class:
AbstractClientConnector
Registers an RPC interface implementation for this component. A component can listen to multiple RPC interfaces, and subclasses can register additional implementations.
Overrides:
registerRpc
in classAbstractClientConnector
Parameters:
implementation
- RPC interface implementationrpcInterfaceType
- RPC interface class for which the implementation should be registered
-
addFunction
protected void addFunction(String functionName, JavaScriptFunction function)
Register a
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 asthis
). Calling that JavaScript function will cause the call method in the registeredJavaScriptFunction
to be invoked with the same arguments.Parameters:
functionName
- the name that should be used for client-side callbackfunction
- theJavaScriptFunction
object that will be invoked when the JavaScript function is called
-
callFunction
protected void callFunction(String name, Object... arguments)
Invoke a named function that the connector JavaScript has added to the JavaScript connector wrapper object. The arguments can be any boxed primitive type, String,
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 aJsonValue
before sending. This can be done either withJsonCodec.encode(Object, JsonValue, java.lang.reflect.Type, com.vaadin.ui.ConnectorTracker)
or using the factory methods inJson
.Parameters:
name
- the name of the functionarguments
- function arguments
-
getState
protected JavaScriptExtensionState getState()
Description copied from class:
AbstractClientConnector
Returns the shared state for this connector. The shared state object is shared between the server connector and the client connector. Changes are only communicated from the server to the client and not in the other direction.
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.Overrides:
getState
in classAbstractRenderer<T,V>
Returns:
The shared state for this connector. Never null.
-
getState
protected JavaScriptExtensionState getState(boolean markAsDirty)
Description copied from class:
AbstractClientConnector
Returns the shared state for this connector.
Overrides:
getState
in classAbstractRenderer<T,V>
Parameters:
markAsDirty
- true if the connector should automatically be marked dirty, false otherwiseReturns:
The shared state for this connector. Never null.
See Also:
-
-