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 2009/02/05 09:01:07 UTC

svn commit: r741039 - in /wicket/trunk/wicket/src: main/java/org/apache/wicket/ test/java/org/apache/wicket/markup/html/border/

Author: ivaynberg
Date: Thu Feb  5 08:01:06 2009
New Revision: 741039

URL: http://svn.apache.org/viewvc?rev=741039&view=rev
Log:
WICKET-2079

Modified:
    wicket/trunk/wicket/src/main/java/org/apache/wicket/Page.java
    wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/border/ComponentBorderTest.java
    wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/border/HideableBorder.java
    wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/border/HideableBorderPage.html
    wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/border/HideableBorderPage.java
    wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/border/HideableBorderPage_ExpectedResult.html

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/Page.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/Page.java?rev=741039&r1=741038&r2=741039&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/Page.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/Page.java Thu Feb  5 08:01:06 2009
@@ -33,6 +33,7 @@
 import org.apache.wicket.markup.MarkupException;
 import org.apache.wicket.markup.MarkupStream;
 import org.apache.wicket.markup.html.WebPage;
+import org.apache.wicket.markup.html.border.Border;
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.resolver.IComponentResolver;
 import org.apache.wicket.model.IModel;
@@ -1133,6 +1134,29 @@
 							}
 						}
 					}
+
+					// Check if this component is a child of a border whose body is invisible and if
+					// so ignore it
+					Border border = component.findParent(Border.class);
+					if (border != null && !border.getBodyContainer().isVisibleInHierarchy())
+					{
+
+						// Suppose:
+						//						  
+						// <div wicket:id="border"><div wicket:id="label"></div> suppose
+						// border->label and border's body is hidden.
+						//						  
+						// The label is added to border not to its hidden body so as far as wicket
+						// is concerned label is visible in hierarchy, but when rendering label wont
+						// be rendered because in the markup it is inside the border's hidden body.
+						// Thus component use check will fail even though it shouldnt - make sure it
+						// doesnt.
+						//						 
+
+						// TODO it would be more accurate to determine that this component is inside
+						// the border parent's markup not the border's itself
+						iterator.remove();
+					}
 				}
 				// if still > 0
 				if (unrenderedComponents.size() > 0)

Modified: wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/border/ComponentBorderTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/border/ComponentBorderTest.java?rev=741039&r1=741038&r2=741039&view=diff
==============================================================================
--- wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/border/ComponentBorderTest.java (original)
+++ wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/border/ComponentBorderTest.java Thu Feb  5 08:01:06 2009
@@ -47,6 +47,34 @@
 	}
 
 	/**
+	 * Tests component use check does not fail when border starts out hidden
+	 * 
+	 * @throws Exception
+	 */
+	public void testComponentUseCheck() throws Exception
+	{
+		/*
+		 * Suppose:
+		 * 
+		 * <div wicket:id="border"><div wicket:id="label"></div> suppose border->label and border's
+		 * body is hidden.
+		 * 
+		 * The label is added to border not to its hidden body so as far as wicket is concerned
+		 * label is visible in hierarchy, but when rendering label wont be rendered because in the
+		 * markup it is inside the border's hidden body. Thus component use check will fail even
+		 * though it shouldnt - make sure it doesnt.
+		 */
+		tester.getApplication().getDebugSettings().setComponentUseCheck(true);
+
+		HideableBorderPage page = new HideableBorderPage();
+		// start with border body hidden
+		page.getBorder().setHidden(true);
+
+		tester.startPage(page);
+		tester.assertRenderedPage(HideableBorderPage.class);
+	}
+
+	/**
 	 * 
 	 * @throws Exception
 	 */

Modified: wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/border/HideableBorder.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/border/HideableBorder.java?rev=741039&r1=741038&r2=741039&view=diff
==============================================================================
--- wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/border/HideableBorder.java (original)
+++ wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/border/HideableBorder.java Thu Feb  5 08:01:06 2009
@@ -37,7 +37,14 @@
 	public HideableBorder(String name)
 	{
 		super(name);
-		final WebMarkupContainer containerWrapper = new WebMarkupContainer("wrapper");
+		final WebMarkupContainer containerWrapper = new WebMarkupContainer("wrapper")
+		{
+			@Override
+			public boolean isVisible()
+			{
+				return !hidden;
+			}
+		};
 		add(containerWrapper);
 		containerWrapper.add(getBodyContainer());
 		add(new AjaxLink("hideLink")
@@ -48,10 +55,27 @@
 			public void onClick(AjaxRequestTarget target)
 			{
 				hidden = !hidden;
-				containerWrapper.setVisible(!hidden);
 				target.addComponent(containerWrapper);
 			}
 		});
 		containerWrapper.setOutputMarkupPlaceholderTag(true);
 	}
+
+	/**
+	 * @return true if body of this border is hidden
+	 */
+	public boolean isHidden()
+	{
+		return hidden;
+	}
+
+	/**
+	 * @param hidden
+	 */
+	public void setHidden(boolean hidden)
+	{
+		this.hidden = hidden;
+	}
+
+
 }

Modified: wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/border/HideableBorderPage.html
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/border/HideableBorderPage.html?rev=741039&r1=741038&r2=741039&view=diff
==============================================================================
--- wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/border/HideableBorderPage.html (original)
+++ wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/border/HideableBorderPage.html Thu Feb  5 08:01:06 2009
@@ -1,7 +1,7 @@
 <html xmlns:wicket>
 <body>
   <div wicket:id="hideable">
-    Contents
+    Contents <span wicket:id="content"></span>
   </div>
 </body>
 </html>
\ No newline at end of file

Modified: wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/border/HideableBorderPage.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/border/HideableBorderPage.java?rev=741039&r1=741038&r2=741039&view=diff
==============================================================================
--- wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/border/HideableBorderPage.java (original)
+++ wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/border/HideableBorderPage.java Thu Feb  5 08:01:06 2009
@@ -17,6 +17,7 @@
 package org.apache.wicket.markup.html.border;
 
 import org.apache.wicket.markup.html.WebPage;
+import org.apache.wicket.markup.html.basic.Label;
 
 /**
  * 
@@ -25,11 +26,23 @@
 {
 	private static final long serialVersionUID = 1L;
 
+	private final HideableBorder border;
+
 	/**
 	 * Construct.
 	 */
 	public HideableBorderPage()
 	{
-		add(new HideableBorder("hideable"));
+		border = new HideableBorder("hideable");
+		add(border);
+		border.add(new Label("content", "label"));
+	}
+
+	/** @return hideable border */
+	public HideableBorder getBorder()
+	{
+		return border;
 	}
+
+
 }

Modified: wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/border/HideableBorderPage_ExpectedResult.html
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/border/HideableBorderPage_ExpectedResult.html?rev=741039&r1=741038&r2=741039&view=diff
==============================================================================
--- wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/border/HideableBorderPage_ExpectedResult.html (original)
+++ wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/border/HideableBorderPage_ExpectedResult.html Thu Feb  5 08:01:06 2009
@@ -11,7 +11,7 @@
   <a href="#" wicket:id="hideLink" onclick="var wcall=wicketAjaxGet('?wicket:interface=:0:hideable:hideLink::IBehaviorListener:0:',null,null, function() {return Wicket.$('hideLink1') != null;}.bind(this));return !wcall;" id="hideLink1">Hide contents</a>
   <div wicket:id="wrapper" id="wrapper2">
   <wicket:body>
-    Contents
+    Contents <span wicket:id="content">label</span>
   </wicket:body>
   </div>
 </wicket:border></div>