Author: ivaynberg Date: Fri Oct 15 05:20:23 2010 New Revision: 1022823 URL: http://svn.apache.org/viewvc?rev=1022823&view=rev Log:
Issue: WICKET-3080 Modified: wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/ModalWindow.java wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/res/modal.js Modified: wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/ModalWindow.java URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/ModalWindow.java?rev=1022823&r1=1022822&r2=1022823&view=diff ============================================================================== --- wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/ModalWindow.java (original) +++ wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/ModalWindow.java Fri Oct 15 05:20:23 2010 @@ -150,6 +150,7 @@ public class ModalWindow extends Panel private String cookieName; private IModel<String> title = null; private MaskType maskType = MaskType.SEMI_TRANSPARENT; + private boolean autoSize = false; private PageCreator pageCreator = null; private CloseButtonCallback closeButtonCallback = null; @@ -1051,6 +1052,9 @@ public class ModalWindow extends Panel { buffer.append("settings.mask=\"semi-transparent\";\n"); } + + appendAssignment(buffer, "settings.autoSize", autoSize); + // set true if we set a windowclosedcallback boolean haveCloseCallback = false; @@ -1151,4 +1155,21 @@ public class ModalWindow extends Panel title.detach(); } } + + public ModalWindow setAutoSize(boolean autoSize) + { + this.autoSize = autoSize; + return this; + } + + /** + * Returns whether the window is resizable. + * + * @return True if the window is resizable, false otherwise + */ + public boolean isAutoSize() + { + return autoSize; + } + } Modified: wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/res/modal.js URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/res/modal.js?rev=1022823&r1=1022822&r2=1022823&view=diff ============================================================================== --- wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/res/modal.js (original) +++ wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/res/modal.js Fri Oct 15 05:20:23 2010 @@ -682,6 +682,10 @@ Wicket.Window.prototype = { if (this.settings.height != null) this.content.style.height = this.settings.height + (this.settings.resizable ? "px" : this.settings.heightUnit); + + //if 'auto' flag was set to true call autoresize function + if (this.settings.autoSize) + this.autoSizeWindow(); // center the window this.center(); @@ -1105,6 +1109,28 @@ Wicket.Window.prototype = { this.resizing(); return this.res; + }, + + /** + * Resize windows in order to fit content's width and heigth + */ + autoSizeWindow: function(){ + var targetWindow = this.window; + var targetContent = this.content; + + targetContent.style.height = this.settings.minHeight +'px'; + targetWindow.style.width = this.settings.minWidth +'px'; + + targetContent.style.overflow = 'hidden'; + + var newHeight = targetContent.scrollHeight +'px'; + var newWidth = (targetContent.scrollWidth + targetWindow.clientWidth - targetContent.clientWidth) + 'px'; + + targetContent.style.height = newHeight; + + targetWindow.style.width = newWidth; + + targetContent.style.overflow = 'auto'; } }