Will do, just forgot it here. Carl-Eric
On Mon, 18 Aug 2014 12:20:49 +0200 Martin Grigorov <[email protected]> wrote: > On Mon, Aug 18, 2014 at 11:50 AM, <[email protected]> wrote: > > > Repository: wicket > > Updated Branches: > > refs/heads/WICKET-5265 [created] 9c60d34e3 > > > > > > > Please use WICKET-5265 in the commit message > It is used to link the commit with the ticket (the auto comments in > the tickets) and for debugging later (e.g. 3 years later) why a > change has been made > Please amend the commit before merging this branch to > wicket-6.x/master Thanks! > > > > re-create fence mark after remove and re-add > > > > > > Project: http://git-wip-us.apache.org/repos/asf/wicket/repo > > Commit: > > http://git-wip-us.apache.org/repos/asf/wicket/commit/9c60d34e Tree: > > http://git-wip-us.apache.org/repos/asf/wicket/tree/9c60d34e Diff: > > http://git-wip-us.apache.org/repos/asf/wicket/diff/9c60d34e > > > > Branch: refs/heads/WICKET-5265 > > Commit: 9c60d34e3b5e7e0c1702e7fd504dbeac8749959a > > Parents: 70b7327 > > Author: Carl-Eric Menzel <[email protected]> > > Authored: Mon Aug 18 11:50:15 2014 +0200 > > Committer: Carl-Eric Menzel <[email protected]> > > Committed: Mon Aug 18 11:50:15 2014 +0200 > > > > ---------------------------------------------------------------------- > > .../wicket/feedback/FencedFeedbackPanel.java | 70 > > ++++++++++++++------ 1 file changed, 49 insertions(+), 21 > > deletions(-) > > ---------------------------------------------------------------------- > > > > > > > > http://git-wip-us.apache.org/repos/asf/wicket/blob/9c60d34e/wicket-core/src/main/java/org/apache/wicket/feedback/FencedFeedbackPanel.java > > ---------------------------------------------------------------------- > > diff --git > > a/wicket-core/src/main/java/org/apache/wicket/feedback/FencedFeedbackPanel.java > > b/wicket-core/src/main/java/org/apache/wicket/feedback/FencedFeedbackPanel.java > > index f7df59e..042a8e7 100644 > > --- > > a/wicket-core/src/main/java/org/apache/wicket/feedback/FencedFeedbackPanel.java > > +++ > > b/wicket-core/src/main/java/org/apache/wicket/feedback/FencedFeedbackPanel.java > > @@ -29,13 +29,13 @@ import > > org.apache.wicket.markup.html.panel.FeedbackPanel; > > * the nesting of these panels to work correctly without > > displaying the same feedback message twice. > > * A constructor that does not takes a fencing component creates a > > catch-all panel that shows > > * messages that do not come from inside any fence or from the > > {@link Session}. > > - * > > + * <p/> > > * <h2>IN DEPTH EXPLANATION</h2> > > * <p> > > * It is often very useful to have feedback panels that show > > feedback that comes from inside a > > * certain container only. For example given a page with the > > following structure: > > * </p> > > - * > > + * <p/> > > * <pre> > > * Page > > * Form1 > > @@ -72,7 +72,7 @@ import > > org.apache.wicket.markup.html.panel.FeedbackPanel; > > * fencing component. There is usually one instance of such a > > panel at the top of the page to > > * display notifications of success. > > * </p> > > - * > > + * > > * @author igor > > */ > > public class FencedFeedbackPanel extends FeedbackPanel > > @@ -89,7 +89,7 @@ public class FencedFeedbackPanel extends > > FeedbackPanel /** > > * Creates a catch-all feedback panel that will show > > messages not coming from any fence, > > * including messages coming from {@link Session} > > - * > > + * > > * @param id > > */ > > public FencedFeedbackPanel(String id) > > @@ -100,7 +100,7 @@ public class FencedFeedbackPanel extends > > FeedbackPanel /** > > * Creates a feedback panel that will only show messages if > > they original from, or inside of, > > * the {@code fence} component and not from any inner fence. > > - * > > + * > > * @param id > > * @param fence > > */ > > @@ -111,11 +111,10 @@ public class FencedFeedbackPanel extends > > FeedbackPanel > > > > /** > > * Creates a catch-all instance with a filter. > > - * > > - * @see #FencedFeedbackPanel(String) > > - * > > + * > > * @param id > > * @param filter > > + * @see #FencedFeedbackPanel(String) > > */ > > public FencedFeedbackPanel(String id, IFeedbackMessageFilter > > filter) > > { > > @@ -124,12 +123,11 @@ public class FencedFeedbackPanel extends > > FeedbackPanel > > > > /** > > * Creates a fenced feedback panel with a filter. > > - * > > - * @see #FencedFeedbackPanel(String, Component) > > - * > > + * > > * @param id > > * @param fence > > * @param filter > > + * @see #FencedFeedbackPanel(String, Component) > > */ > > public FencedFeedbackPanel(String id, Component fence, > > IFeedbackMessageFilter filter) > > { > > @@ -137,12 +135,17 @@ public class FencedFeedbackPanel extends > > FeedbackPanel > > this.fence = fence; > > if (fence != null) > > { > > - Integer count = > > fence.getMetaData(FENCE_KEY); > > - count = count == null ? 1 : count + 1; > > - fence.setMetaData(FENCE_KEY, count); > > + incrementFenceCount(); > > } > > } > > > > + private void incrementFenceCount() > > + { > > + Integer count = fence.getMetaData(FENCE_KEY); > > + count = count == null ? 1 : count + 1; > > + fence.setMetaData(FENCE_KEY, count); > > + } > > + > > @Override > > protected void onRemove() > > { > > @@ -151,12 +154,17 @@ public class FencedFeedbackPanel extends > > FeedbackPanel > > { > > // decrement the fence count > > > > - Integer count = > > fence.getMetaData(FENCE_KEY); > > - count = (count == null || count == 1) ? > > null : count - 1; > > - fence.setMetaData(FENCE_KEY, count); > > + decrementFenceCount(); > > } > > } > > > > + private void decrementFenceCount() > > + { > > + Integer count = fence.getMetaData(FENCE_KEY); > > + count = (count == null || count == 1) ? null : > > count - 1; > > + fence.setMetaData(FENCE_KEY, count); > > + } > > + > > @Override > > protected FeedbackMessagesModel newFeedbackMessagesModel() > > { > > @@ -166,7 +174,7 @@ public class FencedFeedbackPanel extends > > FeedbackPanel > > > > @Override > > protected List<FeedbackMessage> > > collectMessages(Component panel, > > - IFeedbackMessageFilter filter) > > + IFeedbackMessageFilter > > filter) { > > if (fence == null) > > { > > @@ -177,7 +185,7 @@ public class FencedFeedbackPanel extends > > FeedbackPanel @Override > > protected boolean > > shouldRecurseInto(Component component) > > { > > - return > > component.getMetaData(FENCE_KEY) == null; > > + return > > !componentIsMarkedAsFence(component); > > } > > }.collect(filter); > > } > > @@ -191,12 +199,32 @@ public class FencedFeedbackPanel extends > > FeedbackPanel > > protected boolean > > shouldRecurseInto(Component component) > > { > > // only > > recurse into components that are not fences > > - > > - return > > component.getMetaData(FENCE_KEY) == null; > > + return > > !componentIsMarkedAsFence(component); > > } > > > > }.setIncludeSession(false).collect(filter); > > } > > } > > }; > > } > > + > > + private boolean componentIsMarkedAsFence(Component > > component) > > + { > > + return component.getMetaData(FENCE_KEY) != null; > > + } > > + > > + @Override > > + protected void onAddToPage() > > + { > > + if (this.fence != null) > > + { > > + // The fence mark is removed when the > > feedback panel is removed from the hierarchy. > > + // We can't see when it is re-added, so we > > check before rendering whether the > > + // fence mark is actually set on our fence > > component. If not, we recreate it. > > + if (!componentIsMarkedAsFence(this.fence)) > > + { > > + incrementFenceCount(); > > + } > > + } > > + super.onAddToPage(); > > + } > > } > > > >
