Author: ehillenius
Date: Mon Jul 16 19:10:41 2007
New Revision: 556792
URL: http://svn.apache.org/viewvc?view=rev&rev=556792
Log:
WICKET-763
Modified:
incubator/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/breadcrumb/BreadCrumbBar.java
Modified:
incubator/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/breadcrumb/BreadCrumbBar.java
URL:
http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/breadcrumb/BreadCrumbBar.java?view=diff&rev=556792&r1=556791&r2=556792
==============================================================================
---
incubator/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/breadcrumb/BreadCrumbBar.java
(original)
+++
incubator/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/breadcrumb/BreadCrumbBar.java
Mon Jul 16 19:10:41 2007
@@ -17,6 +17,7 @@
package org.apache.wicket.extensions.breadcrumb;
import java.util.ArrayList;
+import java.util.Iterator;
import java.util.List;
import org.apache.wicket.Component;
@@ -25,6 +26,7 @@
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.IDetachable;
import org.apache.wicket.model.LoadableDetachableModel;
@@ -46,6 +48,46 @@
*/
public class BreadCrumbBar extends Panel implements IBreadCrumbModel
{
+ /** Default crumb component. */
+ private static final class BreadCrumbComponent extends Panel
+ {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * Construct.
+ *
+ * @param id
+ * Component id
+ * @param index
+ * The index of the bread crumb
+ * @param breadCrumbModel
+ * The bread crumb model
+ * @param breadCrumbParticipant
+ * The bread crumb
+ * @param enableLink
+ * Whether the link should be enabled
+ */
+ public BreadCrumbComponent(String id, int index,
IBreadCrumbModel breadCrumbModel,
+ final IBreadCrumbParticipant
breadCrumbParticipant, boolean enableLink)
+ {
+ super(id);
+ add(new Label("sep", (index > 0) ? "/" :
"").setEscapeModelStrings(false)
+ .setRenderBodyOnly(true));
+ BreadCrumbLink link = new BreadCrumbLink("link",
breadCrumbModel)
+ {
+ private static final long serialVersionUID = 1L;
+
+ protected IBreadCrumbParticipant
getParticipant(String componentId)
+ {
+ return breadCrumbParticipant;
+ }
+ };
+ link.setEnabled(enableLink);
+ add(link);
+ link.add(new Label("label",
breadCrumbParticipant.getTitle()).setRenderBodyOnly(true));
+ }
+ }
+
/**
* List view for rendering the bread crumbs.
*/
@@ -106,6 +148,18 @@
}
/**
+ * Signal model change.
+ */
+ private void signalModelChange()
+ {
+ // else let the listview recalculate it's childs
immediately;
+ // it was attached, but it needs to go trhough that
again now
+ // as the signalling component attached after this
+ getModel().detach();
+ super.internalOnAttach();
+ }
+
+ /**
* @see
org.apache.wicket.markup.html.list.ListView#onBeforeRender()
*/
protected void onBeforeRender()
@@ -128,58 +182,6 @@
.getModelObject();
item.add(newBreadCrumbComponent("crumb", index, size,
breadCrumbParticipant));
}
-
- /**
- * Signal model change.
- */
- private void signalModelChange()
- {
- // else let the listview recalculate it's childs
immediately;
- // it was attached, but it needs to go trhough that
again now
- // as the signalling component attached after this
- getModel().detach();
- super.internalOnAttach();
- }
- }
-
- /** Default crumb component. */
- private static final class BreadCrumbComponent extends Panel
- {
- private static final long serialVersionUID = 1L;
-
- /**
- * Construct.
- *
- * @param id
- * Component id
- * @param index
- * The index of the bread crumb
- * @param breadCrumbModel
- * The bread crumb model
- * @param breadCrumbParticipant
- * The bread crumb
- * @param enableLink
- * Whether the link should be enabled
- */
- public BreadCrumbComponent(String id, int index,
IBreadCrumbModel breadCrumbModel,
- final IBreadCrumbParticipant
breadCrumbParticipant, boolean enableLink)
- {
- super(id);
- add(new Label("sep", (index > 0) ? "/" :
"").setEscapeModelStrings(false)
- .setRenderBodyOnly(true));
- BreadCrumbLink link = new BreadCrumbLink("link",
breadCrumbModel)
- {
- private static final long serialVersionUID = 1L;
-
- protected IBreadCrumbParticipant
getParticipant(String componentId)
- {
- return breadCrumbParticipant;
- }
- };
- link.setEnabled(enableLink);
- add(link);
- link.add(new Label("label",
breadCrumbParticipant.getTitle()).setRenderBodyOnly(true));
- }
}
private static final long serialVersionUID = 1L;
@@ -231,7 +233,6 @@
add(breadCrumbsListView);
}
-
/**
* Will let the bread crumb bar contribute a CSS include to the page's
* header. It will add BreadCrumbBar.css from this package. This method
is
@@ -250,6 +251,7 @@
{
}
+
/**
* @see
org.apache.wicket.extensions.breadcrumb.IBreadCrumbModel#addListener(org.apache.wicket.extensions.breadcrumb.IBreadCrumbModelListener)
*/
@@ -385,5 +387,25 @@
{
boolean enableLink = getEnableLinkToCurrent() || (index <
(total - 1));
return new BreadCrumbComponent(id, index, this,
breadCrumbParticipant, enableLink);
+ }
+
+ /**
+ * @see org.apache.wicket.Component#onDetach()
+ */
+ protected void onDetach()
+ {
+ super.onDetach();
+ for (Iterator i = crumbs.iterator(); i.hasNext();)
+ {
+ IBreadCrumbParticipant crumb =
(IBreadCrumbParticipant)i.next();
+ if (crumb instanceof Component)
+ {
+ ((Component)crumb).detach();
+ }
+ else if (crumb instanceof IDetachable)
+ {
+ ((IDetachable)crumb).detach();
+ }
+ }
}
}