You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by iv...@apache.org on 2010/10/15 07:20:23 UTC

svn commit: r1022823 - in /wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal: ModalWindow.java res/modal.js

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