Author: yurize
Date: Sat Dec  1 13:02:25 2012
New Revision: 1415990

URL: http://svn.apache.org/viewvc?rev=1415990&view=rev
Log:
Fixes GadgetWidget properly to save height and re-use it for faster wave
loading. By rocklund
https://reviews.apache.org/r/8008

Modified:
    
incubator/wave/trunk/src/org/waveprotocol/wave/client/gadget/renderer/GadgetWidget.java
    
incubator/wave/trunk/src/org/waveprotocol/wave/client/gadget/renderer/GadgetWidgetUi.java

Modified: 
incubator/wave/trunk/src/org/waveprotocol/wave/client/gadget/renderer/GadgetWidget.java
URL: 
http://svn.apache.org/viewvc/incubator/wave/trunk/src/org/waveprotocol/wave/client/gadget/renderer/GadgetWidget.java?rev=1415990&r1=1415989&r2=1415990&view=diff
==============================================================================
--- 
incubator/wave/trunk/src/org/waveprotocol/wave/client/gadget/renderer/GadgetWidget.java
 (original)
+++ 
incubator/wave/trunk/src/org/waveprotocol/wave/client/gadget/renderer/GadgetWidget.java
 Sat Dec  1 13:02:25 2012
@@ -304,6 +304,7 @@ public class GadgetWidget extends Observ
   private boolean toUpdateIframeUrl = false;
 
   private final String clientInstanceLogLabel;
+  private boolean isSavedHeightSet = false;
 
   // Note that the following regex expressions are strings rather than 
compiled patterns because GWT
   // does not (yet) support those. Consider using the new GWT RegExp class in 
the future.
@@ -611,6 +612,23 @@ public class GadgetWidget extends Observ
   }
 
   /**
+   * Update the gadget iframe height in a deferred command if the panel is
+   * editable
+   *
+   * @param height the new height of the gadget iframe
+   */
+  private void scheduleGadgetHeightUpdate(final String height) {
+    ScheduleCommand.addCommand(new Scheduler.Task() {
+      @Override
+      public void execute() {
+        if (canModifyDocument()) {
+          updateIframeHeight(height);
+        }
+      }
+    });
+  }
+
+  /**
    * Updates gadget IFrame attributes.
    *
    * @param url URL template for the iframe.
@@ -655,6 +673,7 @@ public class GadgetWidget extends Observ
       try {
         int height = parseSizeString(savedHeight);
         ui.setIframeHeight(height);
+        isSavedHeightSet = true;
       } catch (NumberFormatException e) {
         log("Invalid saved height attribute (ignored): ", savedHeight);
       }
@@ -935,9 +954,9 @@ public class GadgetWidget extends Observ
         (int) (metadata.hasWidth() ? metadata.getWidth() : 
metadata.getPreferredWidth(view));
     registerWithController(url, width, height);
     if (height > 0) {
-      setIframeHeight(String.valueOf(height));
+      updateIframeHeight(String.valueOf(height));
     } else {
-      setIframeHeight(String.valueOf(DEFAULT_HEIGHT_PX));
+      updateIframeHeight(String.valueOf(DEFAULT_HEIGHT_PX));
     }
     if (width > 0){
       setIframeWidth(String.valueOf(width));
@@ -1323,9 +1342,8 @@ public class GadgetWidget extends Observ
     active = false;
   }
 
-  @Override
-  public void setIframeHeight(String height) {
-    if (!isActive()) {
+  private void updateIframeHeight(String height) {
+    if (!isActive() || (isSavedHeightSet && !documentModified)) {
       return;
     }
     log("Set IFrame height ", height);
@@ -1338,6 +1356,11 @@ public class GadgetWidget extends Observ
     }
   }
 
+  @Override
+  public void setIframeHeight(String height) {
+    scheduleGadgetHeightUpdate(height);
+  }
+
   public void setIframeWidth(String width) {
     if (!isActive()) {
       return;

Modified: 
incubator/wave/trunk/src/org/waveprotocol/wave/client/gadget/renderer/GadgetWidgetUi.java
URL: 
http://svn.apache.org/viewvc/incubator/wave/trunk/src/org/waveprotocol/wave/client/gadget/renderer/GadgetWidgetUi.java?rev=1415990&r1=1415989&r2=1415990&view=diff
==============================================================================
--- 
incubator/wave/trunk/src/org/waveprotocol/wave/client/gadget/renderer/GadgetWidgetUi.java
 (original)
+++ 
incubator/wave/trunk/src/org/waveprotocol/wave/client/gadget/renderer/GadgetWidgetUi.java
 Sat Dec  1 13:02:25 2012
@@ -340,6 +340,7 @@ public class GadgetWidgetUi extends Comp
    */
   public void setIframeHeight(long height) {
     getIframeElement().setAttribute("height", height + "px");
+    gadgetFrame.setHeight(height + "px");
     if (height > MAX_SMALL_GADGET_HEIGHT) {
       if (throbberState == ThrobberState.SMALL) {
         gadgetIframe.removeStyleName(CSS.loadingGadgetSmallThrobber());


Reply via email to