summaryrefslogtreecommitdiffstats
path: root/documentation/gwt/gwt-advanced.asciidoc
diff options
context:
space:
mode:
Diffstat (limited to 'documentation/gwt/gwt-advanced.asciidoc')
-rw-r--r--documentation/gwt/gwt-advanced.asciidoc64
1 files changed, 64 insertions, 0 deletions
diff --git a/documentation/gwt/gwt-advanced.asciidoc b/documentation/gwt/gwt-advanced.asciidoc
new file mode 100644
index 0000000000..51fc2ef3db
--- /dev/null
+++ b/documentation/gwt/gwt-advanced.asciidoc
@@ -0,0 +1,64 @@
+---
+title: Advanced Client-Side Topics
+order: 10
+layout: page
+---
+
+[[gwt.advanced]]
+= Advanced Client-Side Topics
+
+In the following, we mention some topics that you may encounter when integrating
+widgets.
+
+[[gwt.advanced.phases]]
+== Client-Side Processing Phases
+
+Vaadin's client-side engine reacts to changes from the server in a number of
+phases, the order of which can be relevant for a connector. The processing
+occurs in the [methodname]#handleUIDLMessage()# method in
+[classname]#ApplicationConnection#, but the logic can be quite overwhelming, so
+we describe the phases in the following summary.
+
+. Any dependencies defined by using [classname]#@JavaScript# or
+[classname]#@StyleSheet# on the server-side class are loaded. Processing does
+not continue until the browser confirms that they have been loaded.
+
+. New connectors are instantiated and [methodname]#init()# is run for each
+[interfacename]#Connector#.
+
+. State objects are updated, but no state change event is fired yet.
+
+. The connector hierarchy is updated, but no hierarchy change event is fired yet.
+[methodname]#setParent()# and [methodname]#setChildren()# are run in this phase.
+
+. Hierarchy change events are fired. This means that all state objects and the
+entire hierarchy are already up to date when this happens. The DOM hierarchy
+should in theory be up to date after all hierarchy events have been handled,
+although there are some built-in components that for various reasons do not
+always live up to this promise.
+
+. Captions are updated, causing [methodname]#updateCaption()# to be invoked on
+layouts as needed.
+
+. [classname]#@DelegateToWidget# is handled for all changed state objects using
+the annotation.
+
+. State change events are fired for all changed state objects.
+
+. [methodname]#updateFromUIDL()# is called for legacy connectors.
+
+. All RPC methods received from the server are invoked.
+
+. Connectors that are no longer included in the hierarchy are unregistered. This
+calls [methodname]#onUnregister()# on the [interfacename]#Connector#.
+
+. The layout phase starts, first checking the sizes and positions of all elements,
+and then notifying any [interfacename]#ElementResizeListener#s, as well as
+calling the appropriate layout method for the connectors that implement either
+[classname]#SimpleManagedLayout# or [classname]#DirectionalManagedLayout#
+interface.
+
+
+
+
+