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';
        }
 }
 


Reply via email to