]> source.dussan.org Git - vaadin-framework.git/commitdiff
#8325 Move ApplicationConnection.updateComponent to
authorArtur Signell <artur@vaadin.com>
Tue, 7 Feb 2012 14:09:21 +0000 (16:09 +0200)
committerArtur Signell <artur@vaadin.com>
Tue, 7 Feb 2012 16:14:42 +0000 (18:14 +0200)
VAbstractPaintableWidget.updateFromUIDL

47 files changed:
src/com/vaadin/terminal/gwt/client/ApplicationConnection.java
src/com/vaadin/terminal/gwt/client/Util.java
src/com/vaadin/terminal/gwt/client/ui/VAbsoluteLayoutPaintable.java
src/com/vaadin/terminal/gwt/client/ui/VAbstractPaintableWidget.java
src/com/vaadin/terminal/gwt/client/ui/VAbstractSplitPanelPaintable.java
src/com/vaadin/terminal/gwt/client/ui/VAccordionPaintable.java
src/com/vaadin/terminal/gwt/client/ui/VAudioPaintable.java
src/com/vaadin/terminal/gwt/client/ui/VButtonPaintable.java
src/com/vaadin/terminal/gwt/client/ui/VCheckBoxPaintable.java
src/com/vaadin/terminal/gwt/client/ui/VCssLayoutPaintable.java
src/com/vaadin/terminal/gwt/client/ui/VCustomComponentPaintable.java
src/com/vaadin/terminal/gwt/client/ui/VCustomLayoutPaintable.java
src/com/vaadin/terminal/gwt/client/ui/VDateFieldPaintable.java
src/com/vaadin/terminal/gwt/client/ui/VDragAndDropWrapperPaintable.java
src/com/vaadin/terminal/gwt/client/ui/VEmbeddedPaintable.java
src/com/vaadin/terminal/gwt/client/ui/VFilterSelectPaintable.java
src/com/vaadin/terminal/gwt/client/ui/VFormLayoutPaintable.java
src/com/vaadin/terminal/gwt/client/ui/VFormPaintable.java
src/com/vaadin/terminal/gwt/client/ui/VGridLayoutPaintable.java
src/com/vaadin/terminal/gwt/client/ui/VLinkPaintable.java
src/com/vaadin/terminal/gwt/client/ui/VMediaBasePaintable.java
src/com/vaadin/terminal/gwt/client/ui/VMenuBarPaintable.java
src/com/vaadin/terminal/gwt/client/ui/VNativeButtonPaintable.java
src/com/vaadin/terminal/gwt/client/ui/VOptionGroupBasePaintable.java
src/com/vaadin/terminal/gwt/client/ui/VOrderedLayoutPaintable.java
src/com/vaadin/terminal/gwt/client/ui/VPanelPaintable.java
src/com/vaadin/terminal/gwt/client/ui/VPopupCalendarPaintable.java
src/com/vaadin/terminal/gwt/client/ui/VPopupViewPaintable.java
src/com/vaadin/terminal/gwt/client/ui/VProgressIndicatorPaintable.java
src/com/vaadin/terminal/gwt/client/ui/VScrollTablePaintable.java
src/com/vaadin/terminal/gwt/client/ui/VSliderPaintable.java
src/com/vaadin/terminal/gwt/client/ui/VTabsheetBase.java
src/com/vaadin/terminal/gwt/client/ui/VTabsheetBasePaintable.java
src/com/vaadin/terminal/gwt/client/ui/VTabsheetPaintable.java
src/com/vaadin/terminal/gwt/client/ui/VTextFieldPaintable.java
src/com/vaadin/terminal/gwt/client/ui/VTreePaintable.java
src/com/vaadin/terminal/gwt/client/ui/VTwinColSelectPaintable.java
src/com/vaadin/terminal/gwt/client/ui/VUnknownComponentPaintable.java
src/com/vaadin/terminal/gwt/client/ui/VUploadPaintable.java
src/com/vaadin/terminal/gwt/client/ui/VVideoPaintable.java
src/com/vaadin/terminal/gwt/client/ui/VViewPaintable.java
src/com/vaadin/terminal/gwt/client/ui/VWindowPaintable.java
src/com/vaadin/terminal/gwt/client/ui/label/VLabelPaintable.java
src/com/vaadin/terminal/gwt/client/ui/layout/CellBasedLayoutPaintable.java
src/com/vaadin/terminal/gwt/client/ui/richtextarea/VRichTextAreaPaintable.java
tests/testbench/com/vaadin/tests/dd/VMyDragSourcePaintable.java
tests/testbench/com/vaadin/tests/dd/VMyDropTargetPaintable.java

index bce5534eeb8e05a775b110e39e1e0d585e9b0f0d..65827fac0c446fe6db7ddfceb818836830ba0345 100644 (file)
@@ -30,14 +30,11 @@ import com.google.gwt.user.client.Element;
 import com.google.gwt.user.client.Event;
 import com.google.gwt.user.client.Timer;
 import com.google.gwt.user.client.Window;
-import com.google.gwt.user.client.ui.FocusWidget;
-import com.google.gwt.user.client.ui.Focusable;
 import com.google.gwt.user.client.ui.HasWidgets;
 import com.google.gwt.user.client.ui.Widget;
 import com.vaadin.terminal.gwt.client.ApplicationConfiguration.ErrorMessage;
 import com.vaadin.terminal.gwt.client.RenderInformation.FloatSize;
 import com.vaadin.terminal.gwt.client.RenderInformation.Size;
-import com.vaadin.terminal.gwt.client.ui.Field;
 import com.vaadin.terminal.gwt.client.ui.VContextMenu;
 import com.vaadin.terminal.gwt.client.ui.VNotification;
 import com.vaadin.terminal.gwt.client.ui.VNotification.HideEvent;
@@ -66,13 +63,13 @@ public class ApplicationConnection {
     // This indicates the whole page is generated by us (not embedded)
     public static final String GENERATED_BODY_CLASSNAME = "v-generated-body";
 
-    private static final String MODIFIED_CLASSNAME = "v-modified";
+    public static final String MODIFIED_CLASSNAME = "v-modified";
 
     public static final String DISABLED_CLASSNAME = "v-disabled";
 
-    private static final String REQUIRED_CLASSNAME_EXT = "-required";
+    public static final String REQUIRED_CLASSNAME_EXT = "-required";
 
-    private static final String ERROR_CLASSNAME_EXT = "-error";
+    public static final String ERROR_CLASSNAME_EXT = "-error";
 
     public static final char VAR_RECORD_SEPARATOR = '\u001e';
 
@@ -99,9 +96,6 @@ public class ApplicationConnection {
 
     public static final String PARAM_UNLOADBURST = "onunloadburst";
 
-    public static final String ATTRIBUTE_DESCRIPTION = "description";
-    public static final String ATTRIBUTE_ERROR = "error";
-
     /**
      * A string that, if found in a non-JSON response to a UIDL request, will
      * cause the browser to refresh the page. If followed by a colon, optional
@@ -1592,204 +1586,7 @@ public class ApplicationConnection {
         return result.toString();
     }
 
-    /**
-     * Update generic component features.
-     * 
-     * <h2>Selecting correct implementation</h2>
-     * 
-     * <p>
-     * The implementation of a component depends on many properties, including
-     * styles, component features, etc. Sometimes the user changes those
-     * properties after the component has been created. Calling this method in
-     * the beginning of your updateFromUIDL -method automatically replaces your
-     * component with more appropriate if the requested implementation changes.
-     * </p>
-     * 
-     * <h2>Caption, icon, error messages and description</h2>
-     * 
-     * <p>
-     * Component can delegate management of caption, icon, error messages and
-     * description to parent layout. This is optional an should be decided by
-     * component author
-     * </p>
-     * 
-     * <h2>Component visibility and disabling</h2>
-     * 
-     * This method will manage component visibility automatically and if
-     * component is an instanceof FocusWidget, also handle component disabling
-     * when needed.
-     * 
-     * @param component
-     *            Widget to be updated, expected to implement an instance of
-     *            Paintable
-     * @param uidl
-     *            UIDL to be painted
-     * @param manageCaption
-     *            True if you want to delegate caption, icon, description and
-     *            error message management to parent.
-     * 
-     * @return Returns true iff no further painting is needed by caller
-     */
-    @Deprecated
-    public boolean updateComponent(VPaintableWidget paintable, UIDL uidl,
-            boolean manageCaption) {
-        Widget component = paintable.getWidgetForPaintable();
-
-        String pid = paintableMap.getPid(paintable);
-        if (pid == null) {
-            VConsole.error("Trying to update an unregistered component: "
-                    + Util.getSimpleName(component));
-            return true;
-        }
-
-        // If the server request that a cached instance should be used, do
-        // nothing
-        if (uidl.getBooleanAttribute("cached")) {
-            return true;
-        }
-
-        // register the listened events by the server-side to the event-handler
-        // of the component
-        paintableMap.registerEventListenersFromUIDL(pid, uidl);
-
-        // Visibility
-        boolean visible = !uidl.getBooleanAttribute("invisible");
-        boolean wasVisible = component.isVisible();
-        component.setVisible(visible);
-        if (wasVisible != visible) {
-            // Changed invisibile <-> visible
-            if (wasVisible && manageCaption) {
-                // Must hide caption when component is hidden
-                paintable.getParent().updateCaption(paintable, uidl);
-            }
-        }
-
-        if (configuration.useDebugIdInDOM() && uidl.getId().startsWith("PID_S")) {
-            DOM.setElementProperty(component.getElement(), "id", uidl.getId()
-                    .substring(5));
-        }
-
-        if (!visible) {
-            // component is invisible, delete old size to notify parent, if
-            // later make visible
-            paintableMap.setOffsetSize(paintable, null);
-            return true;
-        }
-
-        boolean enabled = !uidl.getBooleanAttribute("disabled");
-        if (uidl.hasAttribute("tabindex") && component instanceof Focusable) {
-            ((Focusable) component).setTabIndex(uidl
-                    .getIntAttribute("tabindex"));
-        }
-        /*
-         * Disabled state may affect (override) tabindex so the order must be
-         * first setting tabindex, then enabled state.
-         */
-        if (component instanceof FocusWidget) {
-            FocusWidget fw = (FocusWidget) component;
-            fw.setEnabled(enabled);
-        }
-
-        // Style names
-        component.setStyleName(getStyleName(component.getStylePrimaryName(),
-                uidl, component instanceof Field));
-
-        TooltipInfo tooltipInfo = paintableMap.getTooltipInfo(paintable, null);
-        // Update tooltip
-        if (uidl.hasAttribute(ATTRIBUTE_DESCRIPTION)) {
-            tooltipInfo
-                    .setTitle(uidl.getStringAttribute(ATTRIBUTE_DESCRIPTION));
-        } else {
-            tooltipInfo.setTitle(null);
-        }
-
-        // Set captions
-        if (manageCaption) {
-            paintable.getParent().updateCaption(paintable, uidl);
-        }
-
-        // add error classname to components w/ error
-        if (uidl.hasAttribute(ATTRIBUTE_ERROR)) {
-            tooltipInfo.setErrorUidl(uidl.getErrors());
-        } else {
-            tooltipInfo.setErrorUidl(null);
-        }
-
-        /*
-         * updateComponentSize need to be after caption update so caption can be
-         * taken into account
-         */
-
-        updateComponentSize(paintable, uidl);
-
-        return false;
-    }
-
-    /**
-     * Generates the style name for the widget based on the given primary style
-     * name (typically returned by Widget.getPrimaryStyleName()) and the UIDL.
-     * An additional "modified" style name can be added if the field parameter
-     * is set to true.
-     * 
-     * @param primaryStyleName
-     * @param uidl
-     * @param isField
-     * @return
-     */
-    public static String getStyleName(String primaryStyleName, UIDL uidl,
-            boolean field) {
-        boolean enabled = !uidl.getBooleanAttribute("disabled");
-
-        StringBuffer styleBuf = new StringBuffer();
-        styleBuf.append(primaryStyleName);
-
-        // first disabling and read-only status
-        if (!enabled) {
-            styleBuf.append(" ");
-            styleBuf.append(DISABLED_CLASSNAME);
-        }
-        if (uidl.getBooleanAttribute("readonly")) {
-            styleBuf.append(" ");
-            styleBuf.append("v-readonly");
-        }
-
-        // add additional styles as css classes, prefixed with component default
-        // stylename
-        if (uidl.hasAttribute("style")) {
-            final String[] styles = uidl.getStringAttribute("style").split(" ");
-            for (int i = 0; i < styles.length; i++) {
-                styleBuf.append(" ");
-                styleBuf.append(primaryStyleName);
-                styleBuf.append("-");
-                styleBuf.append(styles[i]);
-                styleBuf.append(" ");
-                styleBuf.append(styles[i]);
-            }
-        }
-
-        // add modified classname to Fields
-        if (field && uidl.hasAttribute("modified")) {
-            styleBuf.append(" ");
-            styleBuf.append(MODIFIED_CLASSNAME);
-        }
-
-        // add error classname to components w/ error
-        if (uidl.hasAttribute(ATTRIBUTE_ERROR)) {
-            styleBuf.append(" ");
-            styleBuf.append(primaryStyleName);
-            styleBuf.append(ERROR_CLASSNAME_EXT);
-        }
-        // add required style to required components
-        if (uidl.hasAttribute("required")) {
-            styleBuf.append(" ");
-            styleBuf.append(primaryStyleName);
-            styleBuf.append(REQUIRED_CLASSNAME_EXT);
-        }
-
-        return styleBuf.toString();
-    }
-
-    private void updateComponentSize(VPaintableWidget paintable, UIDL uidl) {
+    public void updateComponentSize(VPaintableWidget paintable, UIDL uidl) {
         String w = uidl.hasAttribute("width") ? uidl
                 .getStringAttribute("width") : "";
 
index 135ab04c98609902bcd54a4af22861ffbd762aed..fc4d56931c605f39099d33262a662a3083c5ce40 100644 (file)
@@ -594,6 +594,7 @@ public class Util {
 
     }
 
+    @Deprecated
     public static boolean isCached(UIDL uidl) {
         return uidl.getBooleanAttribute("cached");
     }
index 9d73e75b092b83e1e78861b6e9478a60f37abbc6..75597e27e0945ad590be3630be22053c1e66f5a5 100644 (file)
@@ -35,11 +35,13 @@ public class VAbsoluteLayoutPaintable extends VAbstractPaintableWidgetContainer
         }
     };
 
+    @Override
     public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
         getWidgetForPaintable().rendering = true;
         getWidgetForPaintable().client = client;
         // TODO margin handling
-        if (client.updateComponent(this, uidl, true)) {
+        super.updateFromUIDL(uidl, client);
+        if (!isRealUpdate(uidl)) {
             getWidgetForPaintable().rendering = false;
             return;
         }
index 474e9c416d4f66135433b7fc6f14a3de534882b2..6813c225d337c003ae8b80f944732c7156e1527f 100644 (file)
@@ -3,21 +3,30 @@
  */
 package com.vaadin.terminal.gwt.client.ui;
 
+import com.google.gwt.user.client.DOM;
+import com.google.gwt.user.client.ui.FocusWidget;
+import com.google.gwt.user.client.ui.Focusable;
 import com.google.gwt.user.client.ui.Widget;
 import com.vaadin.terminal.gwt.client.ApplicationConnection;
+import com.vaadin.terminal.gwt.client.TooltipInfo;
+import com.vaadin.terminal.gwt.client.UIDL;
 import com.vaadin.terminal.gwt.client.VPaintableMap;
 import com.vaadin.terminal.gwt.client.VPaintableWidget;
 import com.vaadin.terminal.gwt.client.VPaintableWidgetContainer;
 
 public abstract class VAbstractPaintableWidget implements VPaintableWidget {
 
+    public static final String ATTRIBUTE_DESCRIPTION = "description";
+    public static final String ATTRIBUTE_ERROR = "error";
+
     private Widget widget;
     private ApplicationConnection connection;
     private String id;
     private VPaintableWidgetContainer parent;
-    
+
     /* State variables */
     private boolean enabled = true;
+    private boolean visible = true;
 
     /**
      * Default constructor
@@ -73,10 +82,6 @@ public abstract class VAbstractPaintableWidget implements VPaintableWidget {
         this.connection = connection;
     }
 
-    public boolean isEnabled() {
-        return enabled;
-    }
-
     public String getId() {
         return id;
     }
@@ -86,9 +91,10 @@ public abstract class VAbstractPaintableWidget implements VPaintableWidget {
     }
 
     public VPaintableWidgetContainer getParent() {
-        if (parent != null)
+        if (parent != null) {
             return parent;
-        
+        }
+
         // FIXME: Hierarchy should be set by framework instead of looked up here
         VPaintableMap paintableMap = VPaintableMap.get(getConnection());
 
@@ -96,11 +102,218 @@ public abstract class VAbstractPaintableWidget implements VPaintableWidget {
         while (w != null) {
             w = w.getParent();
             if (paintableMap.isPaintable(w)) {
-                parent = (VPaintableWidgetContainer) paintableMap.getPaintable(w);
+                parent = (VPaintableWidgetContainer) paintableMap
+                        .getPaintable(w);
                 return parent;
             }
         }
 
         return null;
     }
+
+    protected static boolean isRealUpdate(UIDL uidl) {
+        return !isCachedUpdate(uidl) && !uidl.getBooleanAttribute("invisible");
+    }
+
+    protected static boolean isCachedUpdate(UIDL uidl) {
+        return uidl.getBooleanAttribute("cached");
+    }
+
+    public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
+        if (isCachedUpdate(uidl)) {
+            return;
+        }
+
+        VPaintableMap paintableMap = VPaintableMap.get(getConnection());
+        // register the listened events by the server-side to the event-handler
+        // of the component
+        paintableMap.registerEventListenersFromUIDL(getId(), uidl);
+
+        // Visibility
+        setVisible(!uidl.getBooleanAttribute("invisible"), uidl);
+
+        if (uidl.getId().startsWith("PID_S")) {
+            DOM.setElementProperty(getWidgetForPaintable().getElement(), "id",
+                    uidl.getId().substring(5));
+        }
+
+        if (!isVisible()) {
+            // component is invisible, delete old size to notify parent, if
+            // later made visible
+            paintableMap.setOffsetSize(this, null);
+            return;
+        }
+
+        /*
+         * Disabled state may affect (override) tabindex so the order must be
+         * first setting tabindex, then enabled state.
+         */
+        if (uidl.hasAttribute("tabindex")
+                && getWidgetForPaintable() instanceof Focusable) {
+            ((Focusable) getWidgetForPaintable()).setTabIndex(uidl
+                    .getIntAttribute("tabindex"));
+        }
+        setEnabled(!uidl.getBooleanAttribute("disabled"));
+
+        // Style names
+        String styleName = getStyleNameFromUIDL(getWidgetForPaintable()
+                .getStylePrimaryName(), uidl,
+                getWidgetForPaintable() instanceof Field);
+        getWidgetForPaintable().setStyleName(styleName);
+
+        // Update tooltip
+        TooltipInfo tooltipInfo = paintableMap.getTooltipInfo(this, null);
+        if (uidl.hasAttribute(ATTRIBUTE_DESCRIPTION)) {
+            tooltipInfo
+                    .setTitle(uidl.getStringAttribute(ATTRIBUTE_DESCRIPTION));
+        } else {
+            tooltipInfo.setTitle(null);
+        }
+        // add error info to tooltip if present
+        if (uidl.hasAttribute(ATTRIBUTE_ERROR)) {
+            tooltipInfo.setErrorUidl(uidl.getErrors());
+        } else {
+            tooltipInfo.setErrorUidl(null);
+        }
+
+        // Set captions
+        if (delegateCaptionHandling()) {
+            getParent().updateCaption(this, uidl);
+        }
+
+        /*
+         * updateComponentSize need to be after caption update so caption can be
+         * taken into account
+         */
+
+        getConnection().updateComponentSize(this, uidl);
+    }
+
+    /**
+     * Sets the enabled state of this paintable
+     * 
+     * @param enabled
+     *            true if the paintable is enabled, false otherwise
+     */
+    protected void setEnabled(boolean enabled) {
+        this.enabled = enabled;
+
+        if (getWidgetForPaintable() instanceof FocusWidget) {
+            FocusWidget fw = (FocusWidget) getWidgetForPaintable();
+            fw.setEnabled(enabled);
+        }
+
+    }
+
+    public boolean isEnabled() {
+        return enabled;
+    }
+
+    /**
+     * Return true if parent handles caption, false if the paintable handles the
+     * caption itself.
+     * 
+     * 
+     * @deprecated This should always return true and all components should let
+     *             the parent handle the caption and use other attributes for
+     *             internal texts in the component
+     * @return
+     */
+    @Deprecated
+    protected boolean delegateCaptionHandling() {
+        return true;
+    }
+
+    /**
+     * Sets the visible state for this paintable.
+     * 
+     * @param visible
+     *            true if the paintable should be made visible, false otherwise
+     * @param captionUidl
+     *            The UIDL that is passed to the parent and onwards to VCaption
+     *            if the caption needs to be updated as a result of the
+     *            visibility change.
+     */
+    protected void setVisible(boolean visible, UIDL captionUidl) {
+        boolean wasVisible = this.visible;
+        this.visible = visible;
+
+        getWidgetForPaintable().setVisible(visible);
+        if (wasVisible != visible) {
+            // Changed invisibile <-> visible
+            if (wasVisible && delegateCaptionHandling()) {
+                // Must hide caption when component is hidden
+                getParent().updateCaption(this, captionUidl);
+            }
+        }
+    }
+
+    protected boolean isVisible() {
+        return visible;
+    }
+
+    /**
+     * Generates the style name for the widget based on the given primary style
+     * name (typically returned by Widget.getPrimaryStyleName()) and the UIDL.
+     * An additional "modified" style name can be added if the field parameter
+     * is set to true.
+     * 
+     * @param primaryStyleName
+     * @param uidl
+     * @param isField
+     * @return
+     */
+    protected static String getStyleNameFromUIDL(String primaryStyleName,
+            UIDL uidl, boolean field) {
+        boolean enabled = !uidl.getBooleanAttribute("disabled");
+
+        StringBuffer styleBuf = new StringBuffer();
+        styleBuf.append(primaryStyleName);
+
+        // first disabling and read-only status
+        if (!enabled) {
+            styleBuf.append(" ");
+            styleBuf.append(ApplicationConnection.DISABLED_CLASSNAME);
+        }
+        if (uidl.getBooleanAttribute("readonly")) {
+            styleBuf.append(" ");
+            styleBuf.append("v-readonly");
+        }
+
+        // add additional styles as css classes, prefixed with component default
+        // stylename
+        if (uidl.hasAttribute("style")) {
+            final String[] styles = uidl.getStringAttribute("style").split(" ");
+            for (int i = 0; i < styles.length; i++) {
+                styleBuf.append(" ");
+                styleBuf.append(primaryStyleName);
+                styleBuf.append("-");
+                styleBuf.append(styles[i]);
+                styleBuf.append(" ");
+                styleBuf.append(styles[i]);
+            }
+        }
+
+        // add modified classname to Fields
+        if (field && uidl.hasAttribute("modified")) {
+            styleBuf.append(" ");
+            styleBuf.append(ApplicationConnection.MODIFIED_CLASSNAME);
+        }
+
+        // add error classname to components w/ error
+        if (uidl.hasAttribute(ATTRIBUTE_ERROR)) {
+            styleBuf.append(" ");
+            styleBuf.append(primaryStyleName);
+            styleBuf.append(ApplicationConnection.ERROR_CLASSNAME_EXT);
+        }
+        // add required style to required components
+        if (uidl.hasAttribute("required")) {
+            styleBuf.append(" ");
+            styleBuf.append(primaryStyleName);
+            styleBuf.append(ApplicationConnection.REQUIRED_CLASSNAME_EXT);
+        }
+
+        return styleBuf.toString();
+    }
+
 }
index 9c7e5f04f9645fa6cae346abf5b1277639cc0d16..ccf3119d132cc3fe2e6b9468184530498fc996ce 100644 (file)
@@ -64,6 +64,7 @@ public abstract class VAbstractSplitPanelPaintable extends
 
     };
 
+    @Override
     public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
         getWidgetForPaintable().client = client;
         getWidgetForPaintable().id = uidl.getId();
@@ -71,7 +72,8 @@ public abstract class VAbstractSplitPanelPaintable extends
 
         getWidgetForPaintable().immediate = uidl.hasAttribute("immediate");
 
-        if (client.updateComponent(this, uidl, true)) {
+        super.updateFromUIDL(uidl, client);
+        if (!isRealUpdate(uidl)) {
             getWidgetForPaintable().rendering = false;
             return;
         }
index 6b03300a09a92561c3cef162c66a603f8150865b..2ed356127c51b1cb7d1a10805fd4efdd50b1c66d 100644 (file)
@@ -32,7 +32,7 @@ public class VAccordionPaintable extends VTabsheetBasePaintable {
                     getWidgetForPaintable().selectedUIDLItemIndex);
 
             selectedItem.setContent(selectedTabUIDL);
-        } else if (!uidl.getBooleanAttribute("cached")
+        } else if (isRealUpdate(uidl)
                 && getWidgetForPaintable().openTab != null) {
             getWidgetForPaintable().close(getWidgetForPaintable().openTab);
         }
index a10c81861bf8379e377d99e70401bb9d8cd4e12e..f978a51bf7a6176a1464c3ffea7540c342194e2a 100644 (file)
@@ -15,10 +15,10 @@ public class VAudioPaintable extends VMediaBasePaintable {
 
     @Override
     public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
-        if (client.updateComponent(this, uidl, true)) {
+        super.updateFromUIDL(uidl, client);
+        if (!isRealUpdate(uidl)) {
             return;
         }
-        super.updateFromUIDL(uidl, client);
         Style style = getWidgetForPaintable().getElement().getStyle();
 
         // Make sure that the controls are not clipped if visible.
index 98f288870047f357f3eebdb9186733e85f353091..9d60e21c827dfb0fb7586dc711f73f77feffebab 100644 (file)
@@ -13,11 +13,18 @@ import com.vaadin.terminal.gwt.client.UIDL;
 
 public class VButtonPaintable extends VAbstractPaintableWidget {
 
+    @Override
+    protected boolean delegateCaptionHandling() {
+        return false;
+    }
+
+    @Override
     public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
 
         // Ensure correct implementation,
         // but don't let container manage caption etc.
-        if (client.updateComponent(this, uidl, false)) {
+        super.updateFromUIDL(uidl, client);
+        if (!isRealUpdate(uidl)) {
             return;
         }
 
index 9fee6a8ba6f1a7ebc534ecfeb586f62eccba609f..acbb620361f3502314c7b179afeda736780ddf2f 100644 (file)
@@ -14,13 +14,20 @@ import com.vaadin.terminal.gwt.client.VTooltip;
 
 public class VCheckBoxPaintable extends VAbstractPaintableWidget {
 
+    @Override
+    protected boolean delegateCaptionHandling() {
+        return false;
+    }
+
+    @Override
     public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
         // Save details
         getWidgetForPaintable().client = client;
         getWidgetForPaintable().id = uidl.getId();
 
         // Ensure correct implementation
-        if (client.updateComponent(this, uidl, false)) {
+        super.updateFromUIDL(uidl, client);
+        if (!isRealUpdate(uidl)) {
             return;
         }
 
index 4d551fa5e8ae269811451a0948a4f84a8403d94f..016474973f183427d952063dd6582c2dc322a5f0 100644 (file)
@@ -31,10 +31,12 @@ public class VCssLayoutPaintable extends VAbstractPaintableWidgetContainer {
         }
     };
 
+    @Override
     public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
         getWidgetForPaintable().rendering = true;
 
-        if (client.updateComponent(this, uidl, true)) {
+        super.updateFromUIDL(uidl, client);
+        if (!isRealUpdate(uidl)) {
             getWidgetForPaintable().rendering = false;
             return;
         }
index 585466f4f7a26e93bfce2624c16a7a8c34a4e2cf..25289c6adb97e4d8c1001bffcfe1cd00764d928a 100644 (file)
@@ -15,9 +15,11 @@ import com.vaadin.terminal.gwt.client.VPaintableWidget;
 public class VCustomComponentPaintable extends
         VAbstractPaintableWidgetContainer {
 
+    @Override
     public void updateFromUIDL(UIDL uidl, final ApplicationConnection client) {
         getWidgetForPaintable().rendering = true;
-        if (client.updateComponent(this, uidl, true)) {
+        super.updateFromUIDL(uidl, client);
+        if (!isRealUpdate(uidl)) {
             getWidgetForPaintable().rendering = false;
             return;
         }
index 9cf877f44679f77fe5b21264c4a61c556ed6274e..ea3f3c0bc0c1aa7876c49c5eb415f92521be7055 100644 (file)
@@ -16,10 +16,12 @@ import com.vaadin.terminal.gwt.client.VPaintableWidget;
 public class VCustomLayoutPaintable extends VAbstractPaintableWidgetContainer {
 
     /** Update the layout from UIDL */
+    @Override
     public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
         getWidgetForPaintable().client = client;
         // ApplicationConnection manages generic component features
-        if (client.updateComponent(this, uidl, true)) {
+        super.updateFromUIDL(uidl, client);
+        if (!isRealUpdate(uidl)) {
             return;
         }
 
index a4bbe64a3024f2180772dcac2f377b95e2ee4f5b..c11ef6f54f5dff853318a174e1a2293700cd60cd 100644 (file)
@@ -14,9 +14,11 @@ import com.vaadin.terminal.gwt.client.VConsole;
 
 public class VDateFieldPaintable extends VAbstractPaintableWidget {
 
+    @Override
     public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
         // Ensure correct implementation and let layout manage caption
-        if (client.updateComponent(this, uidl, true)) {
+        super.updateFromUIDL(uidl, client);
+        if (!isRealUpdate(uidl)) {
             return;
         }
 
index 2d2f0fcad3921f639aec7b0e0300e2c38c8a96dd..262d7f0894a910ff488c72341bc9e7355060dfb0 100644 (file)
@@ -17,7 +17,7 @@ public class VDragAndDropWrapperPaintable extends VCustomComponentPaintable {
     public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
         getWidgetForPaintable().client = client;
         super.updateFromUIDL(uidl, client);
-        if (!uidl.hasAttribute("cached") && !uidl.hasAttribute("hidden")) {
+        if (isRealUpdate(uidl) && !uidl.hasAttribute("hidden")) {
             UIDL acceptCrit = uidl.getChildByTagName("-ac");
             if (acceptCrit == null) {
                 getWidgetForPaintable().dropHandler = null;
index bdb34b6d146b69d287d0011e32bdae063b3a8850..f4a3df7615b0662f69470a424d02b04b0449cf94 100644 (file)
@@ -28,8 +28,10 @@ public class VEmbeddedPaintable extends VAbstractPaintableWidget {
 
     public static final String CLICK_EVENT_IDENTIFIER = "click";
 
+    @Override
     public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
-        if (client.updateComponent(this, uidl, true)) {
+        super.updateFromUIDL(uidl, client);
+        if (!isRealUpdate(uidl)) {
             return;
         }
 
index 3249ea17d5c133fc0a55804a3b0a7354b41e0234..ee8aedd642c8ac1d15427bed2296a6adb9922813 100644 (file)
@@ -21,6 +21,7 @@ public class VFilterSelectPaintable extends VAbstractPaintableWidget {
      * com.vaadin.terminal.gwt.client.Paintable#updateFromUIDL(com.vaadin.terminal
      * .gwt.client.UIDL, com.vaadin.terminal.gwt.client.ApplicationConnection)
      */
+    @Override
     @SuppressWarnings("deprecation")
     public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
         // Save details
@@ -33,7 +34,8 @@ public class VFilterSelectPaintable extends VAbstractPaintableWidget {
         getWidgetForPaintable().tb.setEnabled(getWidgetForPaintable().enabled);
         getWidgetForPaintable().updateReadOnly();
 
-        if (client.updateComponent(this, uidl, true)) {
+        super.updateFromUIDL(uidl, client);
+        if (!isRealUpdate(uidl)) {
             return;
         }
 
index 3be2a028c58ef53ff2c0d4bdd150ad6e9bffd685..8769466ce48c3430de0e37defa41c25790d4f724 100644 (file)
@@ -10,12 +10,14 @@ import com.vaadin.terminal.gwt.client.UIDL;
 import com.vaadin.terminal.gwt.client.VPaintableWidget;
 
 public class VFormLayoutPaintable extends VAbstractPaintableWidgetContainer {
+    @Override
     public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
         getWidgetForPaintable().rendering = true;
 
         getWidgetForPaintable().client = client;
 
-        if (client.updateComponent(this, uidl, true)) {
+        super.updateFromUIDL(uidl, client);
+        if (!isRealUpdate(uidl)) {
             getWidgetForPaintable().rendering = false;
             return;
         }
index e2533591eaed1443812953f4b2a6e0408876e291..a15a5b78374003e5226edd6263e6725a23d8afbd 100644 (file)
@@ -13,12 +13,19 @@ import com.vaadin.terminal.gwt.client.VPaintableWidget;
 
 public class VFormPaintable extends VAbstractPaintableWidgetContainer {
 
+    @Override
+    protected boolean delegateCaptionHandling() {
+        return false;
+    }
+
+    @Override
     public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
         getWidgetForPaintable().rendering = true;
         getWidgetForPaintable().client = client;
         getWidgetForPaintable().id = uidl.getId();
 
-        if (client.updateComponent(this, uidl, false)) {
+        super.updateFromUIDL(uidl, client);
+        if (!isRealUpdate(uidl)) {
             getWidgetForPaintable().rendering = false;
             return;
         }
index 8f84f27297aaebe47d29277bea2d52de21394b4b..c7e9f79d9a9391dabe2d31dfc55fec4e462800f2 100644 (file)
@@ -37,12 +37,14 @@ public class VGridLayoutPaintable extends VAbstractPaintableWidgetContainer {
         }
     };
 
+    @Override
     @SuppressWarnings("unchecked")
     public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
         getWidgetForPaintable().rendering = true;
         getWidgetForPaintable().client = client;
 
-        if (client.updateComponent(this, uidl, true)) {
+        super.updateFromUIDL(uidl, client);
+        if (!isRealUpdate(uidl)) {
             getWidgetForPaintable().rendering = false;
             return;
         }
index 3fbd796c4bf827c464fd26082393c14576b852e2..6980baa61d5ca66b2a0c433a231de362c35608cf 100644 (file)
@@ -12,11 +12,18 @@ import com.vaadin.terminal.gwt.client.UIDL;
 
 public class VLinkPaintable extends VAbstractPaintableWidget {
 
+    @Override
+    protected boolean delegateCaptionHandling() {
+        return false;
+    }
+
+    @Override
     public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
 
         // Ensure correct implementation,
         // but don't let container manage caption etc.
-        if (client.updateComponent(this, uidl, false)) {
+        super.updateFromUIDL(uidl, client);
+        if (!isRealUpdate(uidl)) {
             return;
         }
 
index 1f6bbe6a0a8397ff1c10e3f22108c1f72f779260..833922679b1e337edbc798aa61c3d57719cebc65 100644 (file)
@@ -21,8 +21,10 @@ public abstract class VMediaBasePaintable extends VAbstractPaintableWidget {
     public static final String ATTR_HTML = "html";
     public static final String ATTR_ALT_TEXT = "alt";
 
+    @Override
     public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
-        if (client.updateComponent(this, uidl, true)) {
+        super.updateFromUIDL(uidl, client);
+        if (!isRealUpdate(uidl)) {
             return;
         }
 
index ef2a49b9d0dd658ae73fb596b8da06c6403e913e..f3e4609540a4bb9a9b97ad0e70f266553ef677a1 100644 (file)
@@ -22,10 +22,12 @@ public class VMenuBarPaintable extends VAbstractPaintableWidget {
      * This method is called when the page is loaded for the first time, and
      * every time UI changes in the component are received from the server.
      */
+    @Override
     public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
         // This call should be made first. Ensure correct implementation,
         // and let the containing layout manage caption, etc.
-        if (client.updateComponent(this, uidl, true)) {
+        super.updateFromUIDL(uidl, client);
+        if (!isRealUpdate(uidl)) {
             return;
         }
 
index ebf9cad264adba7654b123ee71af908a1d5e0152..b34a9d1335863425eaa602f1f4ba6d94507b5a7f 100644 (file)
@@ -12,11 +12,18 @@ import com.vaadin.terminal.gwt.client.UIDL;
 
 public class VNativeButtonPaintable extends VAbstractPaintableWidget {
 
+    @Override
+    protected boolean delegateCaptionHandling() {
+        return false;
+    }
+
+    @Override
     public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
 
         // Ensure correct implementation,
         // but don't let container manage caption etc.
-        if (client.updateComponent(this, uidl, false)) {
+        super.updateFromUIDL(uidl, client);
+        if (!isRealUpdate(uidl)) {
             return;
         }
 
index 76486ff8a3ad2c920ee69a243641d40f2885c1be..b0fbda08753fc82ad52a2e1ca856e59774a1440f 100644 (file)
@@ -10,13 +10,15 @@ import com.vaadin.terminal.gwt.client.UIDL;
 public abstract class VOptionGroupBasePaintable extends
         VAbstractPaintableWidget {
 
+    @Override
     public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
 
         // Save details
         getWidgetForPaintable().client = client;
         getWidgetForPaintable().paintableId = uidl.getId();
 
-        if (client.updateComponent(this, uidl, true)) {
+        super.updateFromUIDL(uidl, client);
+        if (!isRealUpdate(uidl)) {
             return;
         }
 
index 6ab11457985c6815b3b51be37dfe9ab35a7f62f0..0d9f5c6263cb300a1cce57fed5aee7a7a28f2e70 100644 (file)
@@ -58,8 +58,7 @@ public abstract class VOrderedLayoutPaintable extends CellBasedLayoutPaintable {
         super.updateFromUIDL(uidl, client);
 
         // Only non-cached, visible UIDL:s can introduce changes
-        if (uidl.getBooleanAttribute("cached")
-                || uidl.getBooleanAttribute("invisible")) {
+        if (!isRealUpdate(uidl) || uidl.getBooleanAttribute("invisible")) {
             getWidgetForPaintable().isRendering = false;
             return;
         }
@@ -106,7 +105,7 @@ public abstract class VOrderedLayoutPaintable extends CellBasedLayoutPaintable {
              * the layout are rendered later when it is clear how much space
              * they can use
              */
-            if (!Util.isCached(childUIDL)) {
+            if (isRealUpdate(childUIDL)) {
                 FloatSize relativeSize = Util.parseRelativeSize(childUIDL);
                 childComponentContainer.setRelativeSize(relativeSize);
             }
@@ -125,7 +124,7 @@ public abstract class VOrderedLayoutPaintable extends CellBasedLayoutPaintable {
                                             .getWidth());
                 }
                 if (getWidgetForPaintable().sizeHasChangedDuringRendering
-                        && Util.isCached(childUIDL)) {
+                        && !isRealUpdate(childUIDL)) {
                     // notify cached relative sized component about size
                     // chance
                     client.handleComponentRelativeSize(childComponentContainer
@@ -176,7 +175,7 @@ public abstract class VOrderedLayoutPaintable extends CellBasedLayoutPaintable {
                         getWidgetForPaintable().activeLayoutSize.getWidth());
             }
 
-            if (Util.isCached(childUIDL)) {
+            if (!isRealUpdate(childUIDL)) {
                 /*
                  * We must update the size of the relative sized component if
                  * the expand ratio or something else in the layout changes
index df4554ea5e5f59b3bd876505f1afd03c81d3c2c2..9c34a68528e05dd5d6e70656c08ab3492e3df377 100644 (file)
@@ -26,13 +26,18 @@ public class VPanelPaintable extends VAbstractPaintableWidgetContainer {
         }
     };
 
+    @Override
+    protected boolean delegateCaptionHandling() {
+        return false;
+    };
+
+    @Override
     public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
         getWidgetForPaintable().rendering = true;
-        if (!uidl.hasAttribute("cached")) {
+        if (isRealUpdate(uidl)) {
 
             // Handle caption displaying and style names, prior generics.
-            // Affects size
-            // calculations
+            // Affects size calculations
 
             // Restore default stylenames
             getWidgetForPaintable().contentNode.setClassName(VPanel.CLASSNAME
@@ -78,7 +83,9 @@ public class VPanelPaintable extends VAbstractPaintableWidgetContainer {
             }
         }
         // Ensure correct implementation
-        if (client.updateComponent(this, uidl, false)) {
+        super.updateFromUIDL(uidl, client);
+
+        if (!isRealUpdate(uidl)) {
             getWidgetForPaintable().rendering = false;
             return;
         }
index 96e966a993b0eae2d2e72cc2eec0fbe656ab5255..042d7307389e7e133143e64bcdf8e38191b7bfa6 100644 (file)
@@ -34,7 +34,7 @@ public class VPopupCalendarPaintable extends VTextualDatePaintable {
 
         super.updateFromUIDL(uidl, client);
 
-        String popupStyleNames = ApplicationConnection.getStyleName(
+        String popupStyleNames = getStyleNameFromUIDL(
                 VPopupCalendar.POPUP_PRIMARY_STYLE_NAME, uidl, false);
         popupStyleNames += " "
                 + VDateField.CLASSNAME
index cd8965ffc6697b3106dc1ff716bee04bb0a2f099..11896f7087137fb3b3d76e26dbab83dbd6136088 100644 (file)
@@ -13,16 +13,23 @@ import com.vaadin.terminal.gwt.client.VPaintableWidget;
 
 public class VPopupViewPaintable extends VAbstractPaintableWidgetContainer {
 
+    @Override
+    protected boolean delegateCaptionHandling() {
+        return false;
+    }
+
     /**
      * 
      * 
      * @see com.vaadin.terminal.gwt.client.VPaintableWidget#updateFromUIDL(com.vaadin.terminal.gwt.client.UIDL,
      *      com.vaadin.terminal.gwt.client.ApplicationConnection)
      */
+    @Override
     public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
         // This call should be made first. Ensure correct implementation,
         // and don't let the containing layout manage caption.
-        if (client.updateComponent(this, uidl, false)) {
+        super.updateFromUIDL(uidl, client);
+        if (!isRealUpdate(uidl)) {
             return;
         }
         // These are for future server connections
index 39ffe1ad96a005c7a2a9e498afae607622088ca1..0d7c1624f488ecefdd7f50a832f14a3c01191640 100644 (file)
@@ -12,11 +12,13 @@ import com.vaadin.terminal.gwt.client.UIDL;
 
 public class VProgressIndicatorPaintable extends VAbstractPaintableWidget {
 
+    @Override
     public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
 
         // Ensure correct implementation,
         // but don't let container manage caption etc.
-        if (client.updateComponent(this, uidl, false)) {
+        super.updateFromUIDL(uidl, client);
+        if (!isRealUpdate(uidl)) {
             return;
         }
 
index 058b8f15b31760b964dcbedf7c766e7e5671f0dc..23cf4925f8cd350369f494d22253ac9f97a57f11 100644 (file)
@@ -23,6 +23,7 @@ public class VScrollTablePaintable extends VAbstractPaintableWidgetContainer {
      * com.vaadin.terminal.gwt.client.Paintable#updateFromUIDL(com.vaadin.terminal
      * .gwt.client.UIDL, com.vaadin.terminal.gwt.client.ApplicationConnection)
      */
+    @Override
     public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
         getWidgetForPaintable().rendering = true;
 
@@ -48,7 +49,8 @@ public class VScrollTablePaintable extends VAbstractPaintableWidgetContainer {
         getWidgetForPaintable().tFoot
                 .setVisible(getWidgetForPaintable().showColFooters);
 
-        if (client.updateComponent(this, uidl, true)) {
+        super.updateFromUIDL(uidl, client);
+        if (!isRealUpdate(uidl)) {
             getWidgetForPaintable().rendering = false;
             return;
         }
index 6c0dc7441212a962c0b3c4f45a3ddc6606e60d80..5e32ac873a031a6deae6c181dcc224dd0bc56dee 100644 (file)
@@ -12,13 +12,15 @@ import com.vaadin.terminal.gwt.client.UIDL;
 
 public class VSliderPaintable extends VAbstractPaintableWidget {
 
+    @Override
     public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
 
         getWidgetForPaintable().client = client;
         getWidgetForPaintable().id = uidl.getId();
 
         // Ensure correct implementation
-        if (client.updateComponent(this, uidl, true)) {
+        super.updateFromUIDL(uidl, client);
+        if (!isRealUpdate(uidl)) {
             return;
         }
 
index 271aed18599d2f77e07e6053cfcc2c751d8be5e5..582452988a4f395e5f27c686ac8a1c2a82c1de93 100644 (file)
@@ -26,7 +26,6 @@ abstract class VTabsheetBase extends ComplexPanel implements Container {
     protected boolean disabled;
     protected boolean readonly;
     protected Set<String> disabledTabKeys = new HashSet<String>();
-    protected boolean cachedUpdate = false;
 
     public VTabsheetBase(String classname) {
         setElement(DOM.createDiv());
index 79f6012ed110209be9af5efb7decf0f47bb08b0a..f08ffbe1452c5ce6b614887c7dd9ec62b8e18494 100644 (file)
@@ -15,13 +15,13 @@ import com.vaadin.terminal.gwt.client.VPaintableWidget;
 public abstract class VTabsheetBasePaintable extends
         VAbstractPaintableWidgetContainer {
 
+    @Override
     public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
         getWidgetForPaintable().client = client;
 
         // Ensure correct implementation
-        getWidgetForPaintable().cachedUpdate = client.updateComponent(this,
-                uidl, true);
-        if (getWidgetForPaintable().cachedUpdate) {
+        super.updateFromUIDL(uidl, client);
+        if (!isRealUpdate(uidl)) {
             return;
         }
 
index 0d32484e105e6e5e7c8cebe596495b5771a80880..29e3e3d95c465888d01842275b4186b13c79daa4 100644 (file)
@@ -16,14 +16,14 @@ public class VTabsheetPaintable extends VTabsheetBasePaintable {
     public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
         getWidgetForPaintable().rendering = true;
 
-        if (!uidl.getBooleanAttribute("cached")) {
+        if (isRealUpdate(uidl)) {
             // Handle stylename changes before generics (might affect size
             // calculations)
             getWidgetForPaintable().handleStyleNames(uidl);
         }
 
         super.updateFromUIDL(uidl, client);
-        if (getWidgetForPaintable().cachedUpdate) {
+        if (!isRealUpdate(uidl)) {
             getWidgetForPaintable().rendering = false;
             return;
         }
index e3eecd5a09c535d61f81c37467f2d5a3095022a3..f7735afc6922c9c854457e33b5e74246a7c99290 100644 (file)
@@ -16,12 +16,14 @@ import com.vaadin.terminal.gwt.client.ui.ShortcutActionHandler.BeforeShortcutAct
 public class VTextFieldPaintable extends VAbstractPaintableWidget implements
         BeforeShortcutActionListener {
 
+    @Override
     public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
         // Save details
         getWidgetForPaintable().client = client;
         getWidgetForPaintable().paintableId = uidl.getId();
 
-        if (client.updateComponent(this, uidl, true)) {
+        super.updateFromUIDL(uidl, client);
+        if (!isRealUpdate(uidl)) {
             return;
         }
 
index 69aecebb064b1397d962a66b48ed1a20966655fd..1a45c7418d025300bfa735642a048d269a55c87a 100644 (file)
@@ -14,9 +14,11 @@ import com.vaadin.terminal.gwt.client.ui.VTree.TreeNode;
 
 public class VTreePaintable extends VAbstractPaintableWidget {
 
+    @Override
     public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
         // Ensure correct implementation and let container manage caption
-        if (client.updateComponent(this, uidl, true)) {
+        super.updateFromUIDL(uidl, client);
+        if (!isRealUpdate(uidl)) {
             return;
         }
 
index ce176113dacb4f35ff711d67c27ab0a0cc15b50b..b0bb1c6844247afad9c7f1ef83b92d9fc3976a9b 100644 (file)
@@ -15,7 +15,7 @@ public class VTwinColSelectPaintable extends VOptionGroupBasePaintable {
     public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
         // Captions are updated before super call to ensure the widths are set
         // correctly
-        if (!uidl.getBooleanAttribute("cached")) {
+        if (isRealUpdate(uidl)) {
             getWidgetForPaintable().updateCaptions(uidl);
         }
 
index 252d7528ca6bf1b60e74a6e2e765e4d2e071737f..4773dec0e5acee664ab3ea5c1233718116adcdbd 100644 (file)
@@ -12,8 +12,15 @@ import com.vaadin.terminal.gwt.client.VUIDLBrowser;
 
 public class VUnknownComponentPaintable extends VAbstractPaintableWidget {
 
+    @Override
+    protected boolean delegateCaptionHandling() {
+        return false;
+    }
+
+    @Override
     public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
-        if (client.updateComponent(this, uidl, false)) {
+        super.updateFromUIDL(uidl, client);
+        if (!isRealUpdate(uidl)) {
             return;
         }
         getWidgetForPaintable().setCaption(
index 7fd59fc176bda7ce31f656ce4ad43d41c66e2e66..d633d8721c1089696a16fe599fab485ae725c03d 100644 (file)
@@ -11,8 +11,10 @@ import com.vaadin.terminal.gwt.client.UIDL;
 
 public class VUploadPaintable extends VAbstractPaintableWidget {
 
+    @Override
     public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
-        if (client.updateComponent(this, uidl, true)) {
+        super.updateFromUIDL(uidl, client);
+        if (!isRealUpdate(uidl)) {
             return;
         }
         if (uidl.hasAttribute("notStarted")) {
index 53b79344cf6a0cf914d93a0a3cb8cab219e6e396..e46b975da9dc51319f3a2f6e9079d782cce2c65f 100644 (file)
@@ -13,7 +13,8 @@ public class VVideoPaintable extends VMediaBasePaintable {
 
     @Override
     public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
-        if (client.updateComponent(this, uidl, true)) {
+        super.updateFromUIDL(uidl, client);
+        if (!isRealUpdate(uidl)) {
             return;
         }
         super.updateFromUIDL(uidl, client);
index 94e7bfd9af96f27ff5eeaf51c21d942c8229825d..890fdd3e13d46edca3b75a2b2b1623dc610c4b16 100644 (file)
@@ -31,6 +31,7 @@ public class VViewPaintable extends VAbstractPaintableWidgetContainer {
 
     private static final String CLICK_EVENT_IDENTIFIER = VPanelPaintable.CLICK_EVENT_IDENTIFIER;
 
+    @Override
     public void updateFromUIDL(final UIDL uidl, ApplicationConnection client) {
         getWidgetForPaintable().rendering = true;
         // As VView is not created in the same way as all other paintables we
@@ -143,7 +144,7 @@ public class VViewPaintable extends VAbstractPaintableWidgetContainer {
         }
 
         getWidgetForPaintable().layout.updateFromUIDL(childUidl, client);
-        if (!childUidl.getBooleanAttribute("cached")) {
+        if (isRealUpdate(childUidl)) {
             getWidgetForPaintable().updateParentFrameSize();
         }
 
index 633e28d0c34aaa26ec425e60edfb7a2cb31484e3..e77aefc25b19e01825763b6b372d8968b44f0d33 100644 (file)
@@ -33,6 +33,12 @@ public class VWindowPaintable extends VAbstractPaintableWidgetContainer
         }
     };
 
+    @Override
+    protected boolean delegateCaptionHandling() {
+        return false;
+    };
+
+    @Override
     public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
         getWidgetForPaintable().id = uidl.getId();
         getWidgetForPaintable().client = client;
@@ -47,7 +53,7 @@ public class VWindowPaintable extends VAbstractPaintableWidgetContainer
             return;
         }
 
-        if (!uidl.hasAttribute("cached")) {
+        if (isRealUpdate(uidl)) {
             if (uidl.getBooleanAttribute("modal") != getWidgetForPaintable().vaadinModality) {
                 getWidgetForPaintable().setVaadinModality(
                         !getWidgetForPaintable().vaadinModality);
@@ -75,7 +81,8 @@ public class VWindowPaintable extends VAbstractPaintableWidgetContainer
         }
 
         getWidgetForPaintable().visibilityChangesDisabled = true;
-        if (client.updateComponent(this, uidl, false)) {
+        super.updateFromUIDL(uidl, client);
+        if (!isRealUpdate(uidl)) {
             return;
         }
         getWidgetForPaintable().visibilityChangesDisabled = false;
index c57f705c75a108c8e67a83d891d59491f01ac62f..b61eb3eaba1bba13724a841d82fb7c3e76ccd603 100644 (file)
@@ -16,8 +16,10 @@ public class VLabelPaintable extends VAbstractPaintableWidget {
     public VLabelPaintable() {
     }
 
+    @Override
     public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
-        if (client.updateComponent(this, uidl, true)) {
+        super.updateFromUIDL(uidl, client);
+        if (!isRealUpdate(uidl)) {
             return;
         }
 
index c41652fb3da8a9c3a58e38699739178ba8ddea44..752462dcf65ed0dd5de6dd90c69d5f64421d0664 100644 (file)
@@ -11,11 +11,12 @@ import com.vaadin.terminal.gwt.client.ui.VMarginInfo;
 public abstract class CellBasedLayoutPaintable extends
         VAbstractPaintableWidgetContainer {
 
+    @Override
     public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
         getWidgetForPaintable().client = client;
 
         // Only non-cached UIDL:s can introduce changes
-        if (uidl.getBooleanAttribute("cached")) {
+        if (isCachedUpdate(uidl)) {
             return;
         }
 
@@ -30,9 +31,7 @@ public abstract class CellBasedLayoutPaintable extends
          * This call should be made first. Ensure correct implementation, handle
          * size etc.
          */
-        if (client.updateComponent(this, uidl, true)) {
-            return;
-        }
+        super.updateFromUIDL(uidl, client);
 
         handleDynamicDimensions(uidl);
     }
index ec83f294f2580f26177bf847ff7c99c0be67dad2..9ade007d2e9c50223ce218a9519a6326aa45d6d8 100644 (file)
@@ -14,6 +14,7 @@ import com.vaadin.terminal.gwt.client.ui.VAbstractPaintableWidget;
 public class VRichTextAreaPaintable extends VAbstractPaintableWidget implements
         BeforeShortcutActionListener {
 
+    @Override
     public void updateFromUIDL(final UIDL uidl, ApplicationConnection client) {
         getWidgetForPaintable().client = client;
         getWidgetForPaintable().id = uidl.getId();
@@ -29,12 +30,13 @@ public class VRichTextAreaPaintable extends VAbstractPaintableWidget implements
                         .setHTML(getWidgetForPaintable().currentValue);
             }
         }
-        if (!uidl.hasAttribute("cached")) {
+        if (isRealUpdate(uidl)) {
             getWidgetForPaintable().setEnabled(
                     !uidl.getBooleanAttribute("disabled"));
         }
 
-        if (client.updateComponent(this, uidl, true)) {
+        super.updateFromUIDL(uidl, client);
+        if (!isRealUpdate(uidl)) {
             return;
         }
 
index c0076592ccb9e3e6ba169e98284b2a13a016cb31..b6aeb55874933e315b7448df38df688edfc8aa82 100644 (file)
@@ -11,8 +11,10 @@ import com.vaadin.terminal.gwt.client.ui.VAbstractPaintableWidget;
 
 public class VMyDragSourcePaintable extends VAbstractPaintableWidget {
 
+    @Override
     public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
-        if (client.updateComponent(this, uidl, true)) {
+        super.updateFromUIDL(uidl, client);
+        if (!isRealUpdate(uidl)) {
             return;
         }
     }
index 5529c55383c516a55723b0a161ef6e69aff1d020..af3aad3accbcb90a18a0197a182aba07e9942bd4 100644 (file)
@@ -11,8 +11,10 @@ import com.vaadin.terminal.gwt.client.ui.VAbstractPaintableWidget;
 
 public class VMyDropTargetPaintable extends VAbstractPaintableWidget {
 
+    @Override
     public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
-        if (client.updateComponent(this, uidl, true)) {
+        super.updateFromUIDL(uidl, client);
+        if (!isRealUpdate(uidl)) {
             return;
         }
         getWidgetForPaintable().client = client;