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());