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>