Repository: wicket Updated Branches: refs/heads/master a79ed51e9 -> cc5d56a50
WICKET-3335 fragment and wicket:container support Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/61b01295 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/61b01295 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/61b01295 Branch: refs/heads/master Commit: 61b01295d0d52929178d058d48456cae4acbc3e7 Parents: a79ed51 Author: Igor Vaynberg <[email protected]> Authored: Mon Feb 24 11:09:12 2014 -0800 Committer: Igor Vaynberg <[email protected]> Committed: Mon Feb 24 11:09:12 2014 -0800 ---------------------------------------------------------------------- .../java/org/apache/wicket/MarkupContainer.java | 4 ++ .../wicket/markup/html/panel/Fragment.java | 10 +++- .../wicket/queueing/ComponentQueueingTest.java | 53 ++++++++++++++++---- 3 files changed, 56 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/61b01295/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java b/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java index 087d655..1aba865 100644 --- a/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java +++ b/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java @@ -2169,6 +2169,10 @@ public abstract class MarkupContainer extends Component implements Iterable<Comp if (tag instanceof WicketTag) { WicketTag wicketTag = (WicketTag)tag; + if (wicketTag.isContainerTag()) + { + return true; + } if (wicketTag.getAutoComponentFactory() != null) { return true; http://git-wip-us.apache.org/repos/asf/wicket/blob/61b01295/wicket-core/src/main/java/org/apache/wicket/markup/html/panel/Fragment.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/panel/Fragment.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/panel/Fragment.java index 078aa44..676cca5 100644 --- a/wicket-core/src/main/java/org/apache/wicket/markup/html/panel/Fragment.java +++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/panel/Fragment.java @@ -17,8 +17,12 @@ package org.apache.wicket.markup.html.panel; import org.apache.wicket.Component; +import org.apache.wicket.IQueueRegion; import org.apache.wicket.MarkupContainer; import org.apache.wicket.markup.IMarkupFragment; +import org.apache.wicket.markup.MarkupElement; +import org.apache.wicket.markup.MarkupFragment; +import org.apache.wicket.markup.WicketTag; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.model.IModel; import org.apache.wicket.util.lang.Args; @@ -46,7 +50,7 @@ import org.apache.wicket.util.lang.Args; * * @author Juergen Donnerstag */ -public class Fragment extends WebMarkupContainer +public class Fragment extends WebMarkupContainer implements IQueueRegion { private static final long serialVersionUID = 1L; @@ -130,4 +134,8 @@ public class Fragment extends WebMarkupContainer return associatedMarkupId; } + @Override + public IMarkupFragment getDequeueMarkup() { + return newMarkupSourcingStrategy().getMarkup(this, null); + } } http://git-wip-us.apache.org/repos/asf/wicket/blob/61b01295/wicket-core/src/test/java/org/apache/wicket/queueing/ComponentQueueingTest.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/java/org/apache/wicket/queueing/ComponentQueueingTest.java b/wicket-core/src/test/java/org/apache/wicket/queueing/ComponentQueueingTest.java index 34f1317..96f0c77 100644 --- a/wicket-core/src/test/java/org/apache/wicket/queueing/ComponentQueueingTest.java +++ b/wicket-core/src/test/java/org/apache/wicket/queueing/ComponentQueueingTest.java @@ -33,6 +33,7 @@ import org.apache.wicket.markup.html.internal.Enclosure; import org.apache.wicket.markup.html.link.Link; import org.apache.wicket.markup.html.list.ListItem; import org.apache.wicket.markup.html.list.ListView; +import org.apache.wicket.markup.html.panel.Fragment; import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.model.Model; import org.apache.wicket.queueing.nestedborders.InnerBorder; @@ -205,7 +206,7 @@ public class ComponentQueueingTest extends WicketTestCase /** {@code [a,q[r,s]] - > [a[q[r[s]]]] } */ @Test - public void dequeueWithPanel1() + public void panel1() { MarkupContainer a = new A(), r = new R(), s = new S(); @@ -225,7 +226,7 @@ public class ComponentQueueingTest extends WicketTestCase /** panel has leading markup */ @Test - public void dequeueWithPanel2() + public void panel2() { MarkupContainer r = new R(); @@ -244,7 +245,7 @@ public class ComponentQueueingTest extends WicketTestCase /** panel with a static header section */ @Test - public void dequeueWithPanel3() + public void panel3() { MarkupContainer r = new R(); @@ -267,7 +268,7 @@ public class ComponentQueueingTest extends WicketTestCase * test with inner panels */ @Test - public void dequeueWithNestedPanels() + public void nestedPanels() { MarkupContainer r = new R(), s = new S(); @@ -291,7 +292,7 @@ public class ComponentQueueingTest extends WicketTestCase } @Test - public void dequeueWithRepeater1() + public void repeater1() { TestPage p = new TestPage(); p.setPageMarkup("<p wicket:id='lv'><p wicket:id='b'><p wicket:id='c'></p></p></p>"); @@ -318,7 +319,7 @@ public class ComponentQueueingTest extends WicketTestCase /** repeater */ @Test - public void dequeueWithRepeater2() + public void repeater2() { TestPage p = new TestPage(); p.setPageMarkup("<p wicket:id='a'><p wicket:id='lv'><p wicket:id='b'><p wicket:id='c'></p></p></p></p>"); @@ -346,7 +347,7 @@ public class ComponentQueueingTest extends WicketTestCase /** repeater with a panel inside */ @Test - public void dequeueWithRepeater3() + public void repeater3() { TestPage p = new TestPage(); p.setPageMarkup("<p wicket:id='a'><p wicket:id='lv'><p wicket:id='b'><p wicket:id='q'></p></p></p></p>"); @@ -378,7 +379,7 @@ public class ComponentQueueingTest extends WicketTestCase /** dequeue, then rerender the page instance after a callback is executed */ @Test - public void dequeueWithCallback() + public void callback() { TestPage p = new TestPage(); p.setPageMarkup("<p wicket:id='a'><a wicket:id='l'><p wicket:id='b'></p></a></p>"); @@ -578,7 +579,7 @@ public class ComponentQueueingTest extends WicketTestCase } @Test - public void dequeueWithBorder1() + public void border1() { MarkupContainer a = new A(), b = new B(), r = new R(), s = new S(); @@ -599,7 +600,7 @@ public class ComponentQueueingTest extends WicketTestCase @Test - public void dequeueWithNestedBorders() + public void nestedBorders() { MarkupContainer a = new A(), b = new B(), c= new C(), d = new D(), r = new R(), s = new S(); @@ -625,6 +626,38 @@ public class ComponentQueueingTest extends WicketTestCase assertThat(p, hasPath(new Path(a, outerBorder, r, outerBorder.getBodyContainer(), b))); } + @Test + public void fragment1() { + MarkupContainer a = new A(), b = new B(), r = new R(), s = new S(); + + TestPage page = new TestPage(); + page.setPageMarkup("<a wicket:id='a'></a><f wicket:id='fragment'></f><b wicket:id='b'></b>" + + "<wicket:fragment wicket:id='f'><r wicket:id='r'></r><s wicket:id='s'></s></wicket:fragment>"); + + Fragment fragment = new Fragment("fragment", "f", page); + + fragment.queue(r, s); + page.queue(a, b, fragment); + + assertThat(page, hasPath(new Path(a))); + assertThat(page, hasPath(new Path(b))); + assertThat(page, hasPath(new Path(fragment, r))); + assertThat(page, hasPath(new Path(fragment, s))); + } + + @Test + public void containerTag1() + { + MarkupContainer a = new A(), b = new B(); + + TestPage page = new TestPage(); + page.setPageMarkup("<wicket:container wicket:id='a'><b wicket:id='b'></b></wicket:container>"); + + page.queue(a, b); + + assertThat(page, hasPath(new Path(a, b))); + } + private static class A extends WebMarkupContainer { public A()
