You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by da...@apache.org on 2012/10/19 15:16:43 UTC

git commit: WIP new wicket examples

Updated Branches:
  refs/heads/master ad849602d -> 5e615ff92


WIP new wicket examples


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/5e615ff9
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/5e615ff9
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/5e615ff9

Branch: refs/heads/master
Commit: 5e615ff929d5f2c005e59edef867f0a3a140c5b0
Parents: ad84960
Author: Martijn Dashorst <da...@apache.org>
Authored: Fri Oct 19 15:16:16 2012 +0200
Committer: Martijn Dashorst <da...@apache.org>
Committed: Fri Oct 19 15:16:29 2012 +0200

----------------------------------------------------------------------
 .../org/apache/wicket/bootstrap/Bootstrap.java     |  123 +++++++++++++--
 .../wicket/examples/base/AbstractBasePage.html     |   11 ++
 .../wicket/examples/base/AbstractBasePage.java     |   41 +++++-
 .../org/apache/wicket/examples/base/Examples.java  |    5 +-
 .../org/apache/wicket/examples/base/HomePage.html  |   15 +-
 .../org/apache/wicket/examples/base/HomePage.java  |    6 +-
 .../wicket/examples/base/annot/ExamplePage.java    |   31 ++++
 .../java/org/apache/wicket/examples/base/docs.css  |   11 +-
 .../org/apache/wicket/examples/base/examples.js    |    4 +-
 .../examples/base/navbar/TopNavbarMenuItem.java    |   30 ++++
 .../navbar/TopbarBookmarkableLinkBehavior.java     |   33 ----
 .../wicket/examples/basic/BasicExamplesPage.html   |   15 +-
 .../wicket/examples/basic/BasicExamplesPage.java   |    5 +-
 .../examples/components/ComponentExamplesPage.html |   11 +-
 .../examples/components/ComponentExamplesPage.java |    6 +
 .../apache/wicket/examples/components/Labels.md    |    4 +-
 .../org/apache/wicket/examples/components/Links.md |    4 +
 17 files changed, 276 insertions(+), 79 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/5e615ff9/wicket-experimental/wicket-bootstrap/src/main/java/org/apache/wicket/bootstrap/Bootstrap.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-bootstrap/src/main/java/org/apache/wicket/bootstrap/Bootstrap.java b/wicket-experimental/wicket-bootstrap/src/main/java/org/apache/wicket/bootstrap/Bootstrap.java
index e302dfc..67071d6 100644
--- a/wicket-experimental/wicket-bootstrap/src/main/java/org/apache/wicket/bootstrap/Bootstrap.java
+++ b/wicket-experimental/wicket-bootstrap/src/main/java/org/apache/wicket/bootstrap/Bootstrap.java
@@ -16,7 +16,7 @@
  */
 package org.apache.wicket.bootstrap;
 
-import java.util.Arrays;
+import static java.util.Arrays.asList;
 
 import org.apache.wicket.ajax.WicketEventJQueryResourceReference;
 import org.apache.wicket.markup.head.CssHeaderItem;
@@ -26,30 +26,119 @@ import org.apache.wicket.markup.head.JavaScriptHeaderItem;
 import org.apache.wicket.request.resource.CssResourceReference;
 import org.apache.wicket.request.resource.JavaScriptResourceReference;
 
-public class Bootstrap extends JavaScriptResourceReference {
-	private static final long serialVersionUID = 1L;
+/**
+ * Resources for <a href="http://twitter.github.com/bootstrap">Twitter
+ * Bootstrap</a>. This class exposes a {@linkplain #plain() plain} and a
+ * {@linkplain #responsive() responsive} bootstrap resource reference.
+ * 
+ * The resource references have the correct dependencies: jquery, bootstrap
+ * (responsive) stylesheet and javascript. They will use the minified variants
+ * when running in deployment mode.
+ * 
+ * For your convenience you can also use
+ * {@link #renderHeadPlain(IHeaderResponse)} and
+ * {@link #renderHeadResponsive(IHeaderResponse)} to write these references to
+ * the header.
+ * 
+ * <h3>Example</h3>
+ * 
+ * <pre>
+ * {@code
+ * public class BootstrapPage extends WebPage {
+ *     public void renderHead(IHeaderResponse response) {
+ *         Bootstrap.renderHeadResponsive(response);
+ *     }
+ * }
+ * </pre>
+ */
+public class Bootstrap {
+	/**
+	 * Defines a resource reference for plain, non-responsive bootstrap. This
+	 * resource reference depends on jquery, bootstrap.css and bootstrap.js
+	 * 
+	 * @return a bootstrap resource reference that includes everything necessary
+	 *         for bootstrap
+	 */
+	public static JavaScriptResourceReference plain() {
+		return bootstrapPlain;
+	}
 
-	private static final Bootstrap instance = new Bootstrap();
+	/**
+	 * Defines a resource reference for responsive bootstrap. This resource
+	 * reference depends on jquery, bootstrap.css, bootstrap-responsive.css and
+	 * bootstrap.js
+	 * 
+	 * @return a bootstrap resource reference that includes everything necessary
+	 *         for responsive bootstrap
+	 */
+	public static JavaScriptResourceReference responsive() {
+		return bootstrapResponsive;
+	}
 
-	public static Bootstrap get() {
-		return instance;
+	/**
+	 * Convenience method for rendering a dependency on bootstrap (without
+	 * responsive layout) in your header.
+	 */
+	public static void renderHeadPlain(IHeaderResponse response) {
+		response.render(JavaScriptHeaderItem.forReference(Bootstrap.plain()));
 	}
 
-	public static void renderHead(IHeaderResponse response) {
-		response.render(JavaScriptHeaderItem.forReference(Bootstrap.get()));
+	/**
+	 * Convenience method for rendering a dependency on bootstrap (with
+	 * responsive layout) in your header.
+	 */
+	public static void renderHeadResponsive(IHeaderResponse response) {
+		response.render(JavaScriptHeaderItem.forReference(Bootstrap
+				.responsive()));
 	}
 
+	private static final BootstrapResourceReference bootstrapPlain = new BootstrapResourceReference();
+
+	private static final BootstrapResponsiveResourceReference bootstrapResponsive = new BootstrapResponsiveResourceReference();
+
+	private static final CssResourceReference bootstrapCss = new CssResourceReference(
+			Bootstrap.class, "css/bootstrap.css");
+
+	private static final CssResourceReference bootstrapResponsiveCss = new CssResourceReference(
+			Bootstrap.class, "css/bootstrap-responsive.css");
+
 	private Bootstrap() {
-		super(Bootstrap.class, "js/bootstrap.js");
 	}
 
-	@Override
-	public Iterable<? extends HeaderItem> getDependencies() {
-		return Arrays.asList(JavaScriptHeaderItem
-				.forReference(WicketEventJQueryResourceReference.get()),
-				CssHeaderItem.forReference(new CssResourceReference(
-						Bootstrap.class, "css/bootstrap.css")), CssHeaderItem
-						.forReference(new CssResourceReference(Bootstrap.class,
-								"css/bootstrap-responsive.css")));
+	private static class BootstrapResourceReference extends
+			JavaScriptResourceReference {
+		private static final long serialVersionUID = 1L;
+
+		public BootstrapResourceReference() {
+			super(Bootstrap.class, "js/bootstrap.js");
+		}
+
+		@Override
+		public Iterable<? extends HeaderItem> getDependencies() {
+			HeaderItem jquery = JavaScriptHeaderItem
+					.forReference(WicketEventJQueryResourceReference.get());
+			HeaderItem stylesheet = CssHeaderItem.forReference(bootstrapCss);
+
+			return asList(jquery, stylesheet);
+		}
+	}
+
+	private static class BootstrapResponsiveResourceReference extends
+			JavaScriptResourceReference {
+		private static final long serialVersionUID = 1L;
+
+		public BootstrapResponsiveResourceReference() {
+			super(Bootstrap.class, "js/bootstrap.js");
+		}
+
+		@Override
+		public Iterable<? extends HeaderItem> getDependencies() {
+			HeaderItem jquery = JavaScriptHeaderItem
+					.forReference(WicketEventJQueryResourceReference.get());
+			HeaderItem stylesheet = CssHeaderItem.forReference(bootstrapCss);
+			HeaderItem responsive = CssHeaderItem
+					.forReference(bootstrapResponsiveCss);
+			return asList(jquery, stylesheet, responsive);
+		}
 	}
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/5e615ff9/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/AbstractBasePage.html
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/AbstractBasePage.html b/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/AbstractBasePage.html
new file mode 100644
index 0000000..8ff4778
--- /dev/null
+++ b/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/AbstractBasePage.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html xmlns:wicket>
+<head>
+	<meta charset="utf-8" />
+	<title wicket:id="title">Apache Wicket Examples — Home</title>
+</head>
+<body wicket:id="body">
+	<div wicket:id="topnavbar"></div>
+	<wicket:child />
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/wicket/blob/5e615ff9/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/AbstractBasePage.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/AbstractBasePage.java b/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/AbstractBasePage.java
index c9d2855..546ac73 100644
--- a/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/AbstractBasePage.java
+++ b/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/AbstractBasePage.java
@@ -1,6 +1,7 @@
 package org.apache.wicket.examples.base;
 
 import org.apache.wicket.bootstrap.Bootstrap;
+import org.apache.wicket.examples.base.annot.ExamplePage;
 import org.apache.wicket.examples.base.navbar.TopNavbar;
 import org.apache.wicket.examples.base.prettify.Prettify;
 import org.apache.wicket.examples.basic.BasicExamplesPage;
@@ -8,7 +9,11 @@ import org.apache.wicket.examples.components.ComponentExamplesPage;
 import org.apache.wicket.markup.head.CssHeaderItem;
 import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.markup.head.JavaScriptHeaderItem;
+import org.apache.wicket.markup.html.TransparentWebMarkupContainer;
+import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.WebPage;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.model.PropertyModel;
 import org.apache.wicket.request.resource.CssResourceReference;
 import org.apache.wicket.request.resource.JavaScriptResourceReference;
 
@@ -16,6 +21,25 @@ public abstract class AbstractBasePage extends WebPage
 {
 	private static final long serialVersionUID = 1L;
 
+	private final WebMarkupContainer body;
+
+	public AbstractBasePage()
+	{
+		add(body = new TransparentWebMarkupContainer("body"));
+	}
+
+	protected WebMarkupContainer getBody()
+	{
+		return body;
+	}
+
+	@Override
+	protected void onInitialize()
+	{
+		super.onInitialize();
+		add(new Label("title", PropertyModel.of(this, "title")).setEscapeModelStrings(false));
+	}
+
 	@Override
 	protected void onConfigure()
 	{
@@ -34,16 +58,27 @@ public abstract class AbstractBasePage extends WebPage
 	{
 		super.renderHead(response);
 
-		Bootstrap.renderHead(response);
+		Bootstrap.renderHeadResponsive(response);
 		Prettify.renderHead(response);
 
 		response.render(CssHeaderItem.forReference(new CssResourceReference(AbstractBasePage.class,
 			"docs.css")));
-		response.render(CssHeaderItem.forCSS("body { padding-top: 60px; padding-bottom: 40px; }",
-			"custom-wicket-examples"));
 
 		response.render(JavaScriptHeaderItem.forReference(new JavaScriptResourceReference(
 			AbstractBasePage.class, "examples.js")));
+	}
 
+	/**
+	 * Gets the title for rendering in the {@code head} section of the page using the
+	 * {@link ExamplePage} annotation.
+	 * 
+	 * @return the title tag value
+	 */
+	public String getTitle()
+	{
+		ExamplePage examplePage = getClass().getAnnotation(ExamplePage.class);
+		if (examplePage != null)
+			return examplePage.title() + " &mdash; Apache Wicket Examples";
+		return "Apache Wicket Examples";
 	}
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/5e615ff9/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/Examples.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/Examples.java b/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/Examples.java
index 51bc085..6e61ed8 100644
--- a/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/Examples.java
+++ b/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/Examples.java
@@ -28,6 +28,9 @@ public class Examples extends JavaScriptResourceReference {
 
 	@Override
 	public Iterable<? extends HeaderItem> getDependencies() {
-		return Arrays.asList(JavaScriptHeaderItem.forReference(Bootstrap.get()), JavaScriptHeaderItem.forReference(Prettify.get()));
+		HeaderItem bootstrap = JavaScriptHeaderItem.forReference(Bootstrap
+				.responsive());
+		HeaderItem prettify = JavaScriptHeaderItem.forReference(Prettify.get());
+		return Arrays.asList(bootstrap, prettify);
 	}
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/5e615ff9/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/HomePage.html
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/HomePage.html b/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/HomePage.html
index 9ba16bd..98a33eb 100644
--- a/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/HomePage.html
+++ b/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/HomePage.html
@@ -1,16 +1,19 @@
 <!DOCTYPE html>
-<html>
+<html xmlns:wicket>
 <head>
 	<meta charset="utf-8" />
-	<title>Apache Wicket Examples</title>
+	<title>Apache Wicket Examples — Home</title>
 </head>
 <body>
-	<div wicket:id="topnavbar">
-	</div>
-	<div class="container">
-		<div class="page-header">
+<wicket:extend>
+	<header class="jumbotron subhead">
+		<div class="container">
 			<h1>Apache Wicket Examples</h1>
+			<p class="lead">Apache Wicket concepts and components explained.</p>
 		</div>
+	</header>
+	<div class="container">
 	</div>
+</wicket:extend>
 </body>
 </html>

http://git-wip-us.apache.org/repos/asf/wicket/blob/5e615ff9/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/HomePage.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/HomePage.java b/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/HomePage.java
index 46cb360..c0ae66e 100644
--- a/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/HomePage.java
+++ b/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/HomePage.java
@@ -1,5 +1,9 @@
 package org.apache.wicket.examples.base;
 
-public class HomePage extends AbstractBasePage {
+import org.apache.wicket.examples.base.annot.ExamplePage;
+
+@ExamplePage(title = "Home")
+public class HomePage extends AbstractBasePage
+{
 	private static final long serialVersionUID = 1L;
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/5e615ff9/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/annot/ExamplePage.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/annot/ExamplePage.java b/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/annot/ExamplePage.java
new file mode 100644
index 0000000..2696b3a
--- /dev/null
+++ b/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/annot/ExamplePage.java
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.examples.base.annot;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+@Retention(RetentionPolicy.RUNTIME)
+public @interface ExamplePage {
+	/**
+	 * The title of the example page, gets appended with {@code &emdash;Apache Wicket Examples} and
+	 * rendered in the {@code head} section of the page.
+	 * 
+	 * @return the title for the page
+	 */
+	public String title();
+}

http://git-wip-us.apache.org/repos/asf/wicket/blob/5e615ff9/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/docs.css
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/docs.css b/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/docs.css
index f48f846..98d0328 100644
--- a/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/docs.css
+++ b/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/docs.css
@@ -1,6 +1,13 @@
 body {
-	margin-top : 60px;
+	padding : 20px 0 0 0;
+	margin : 0;
 }
 article {
-  padding-top: 30px;
+}
+.aw-docs-sidenav.affix {
+	top: 60px;
+}
+.jumbotron {
+	position: relative;
+	padding: 40px 0;
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/wicket/blob/5e615ff9/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/examples.js
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/examples.js b/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/examples.js
index dd5acb6..5ad8a21 100644
--- a/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/examples.js
+++ b/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/examples.js
@@ -5,9 +5,9 @@
     var $window = $(window)
 
     // side bar
-    $('.bs-docs-sidenav').affix({
+    $('.aw-docs-sidenav').affix({
       offset: {
-        top: function () { return $window.width() <= 980 ? 290 : 210 }
+        top: 170
       , bottom: 270
       }
     });

http://git-wip-us.apache.org/repos/asf/wicket/blob/5e615ff9/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/navbar/TopNavbarMenuItem.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/navbar/TopNavbarMenuItem.java b/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/navbar/TopNavbarMenuItem.java
index 1cb7135..3a41b70 100644
--- a/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/navbar/TopNavbarMenuItem.java
+++ b/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/navbar/TopNavbarMenuItem.java
@@ -24,12 +24,42 @@ import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 
+/**
+ * Menu item for top navigation menu.
+ */
 public class TopNavbarMenuItem extends Panel
 {
 	private static final long serialVersionUID = 1L;
 
 	private BookmarkablePageLink<Void> link;
 
+	/**
+	 * Constructs a menu item linking to the page.
+	 * 
+	 * @param id
+	 *            component identifier
+	 * @param label
+	 *            the contents of the menu item
+	 * @param page
+	 *            the page that is linked to using a bookmarkable link
+	 */
+	public TopNavbarMenuItem(String id, String label, Class<? extends WebPage> page)
+	{
+		this(id, label, page, null);
+	}
+
+	/**
+	 * Constructs a menu item linking to the page.
+	 * 
+	 * @param id
+	 *            component identifier
+	 * @param label
+	 *            the contents of the menu item
+	 * @param page
+	 *            the page that is linked to using a bookmarkable link
+	 * @param parameters
+	 *            the page parameters (optional) used with the link
+	 */
 	public TopNavbarMenuItem(String id, String label, Class<? extends WebPage> page,
 		PageParameters parameters)
 	{

http://git-wip-us.apache.org/repos/asf/wicket/blob/5e615ff9/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/navbar/TopbarBookmarkableLinkBehavior.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/navbar/TopbarBookmarkableLinkBehavior.java b/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/navbar/TopbarBookmarkableLinkBehavior.java
deleted file mode 100644
index 151fda5..0000000
--- a/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/base/navbar/TopbarBookmarkableLinkBehavior.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package org.apache.wicket.examples.base.navbar;
-
-import org.apache.wicket.Component;
-import org.apache.wicket.behavior.Behavior;
-import org.apache.wicket.examples.base.markup.ClassValue;
-import org.apache.wicket.markup.ComponentTag;
-import org.apache.wicket.markup.html.link.BookmarkablePageLink;
-
-public class TopbarBookmarkableLinkBehavior extends Behavior {
-	private static final long serialVersionUID = 1L;
-
-	@Override
-	public void bind(Component component) {
-		assert component instanceof BookmarkablePageLink;
-
-		super.bind(component);
-	}
-
-	@Override
-	public void onComponentTag(Component component, ComponentTag tag) {
-		super.onComponentTag(component, tag);
-
-		BookmarkablePageLink<?> link = (BookmarkablePageLink<?>) component;
-		ClassValue classValue = ClassValue.of(tag.getAttributes().getString(
-				"class"));
-		if (link.linksTo(link.getPage()))
-			classValue.with("active");
-		else
-			classValue.without("active");
-
-		tag.put("class", classValue.toString());
-	}
-}

http://git-wip-us.apache.org/repos/asf/wicket/blob/5e615ff9/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/basic/BasicExamplesPage.html
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/basic/BasicExamplesPage.html b/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/basic/BasicExamplesPage.html
index ab09cdb..ee16187 100644
--- a/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/basic/BasicExamplesPage.html
+++ b/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/basic/BasicExamplesPage.html
@@ -1,16 +1,18 @@
 <!DOCTYPE html>
-<html>
+<html xmlns:wicket>
 <head>
 	<meta charset="utf-8" />
 	<title>Apache Wicket Examples</title>
 </head>
 <body>
-	<div wicket:id="topnavbar">
-	</div>
-	<div class="container">
-		<div class="page-header">
-			<h1>Apache Wicket Examples <small>Basic examples</small></h1>
+	<wicket:extend>
+	<header class="jumbotron subhead">
+		<div class="container">
+			<h1>Apache Wicket Examples</h1>
+			<p class="lead">Basic examples</p>
 		</div>
+	</header>
+	<div class="container">
 		<article id="helloworld">
 			<div class="">
 				<h2>Hello, World! <small>Because every examples site needs one</small></h2>
@@ -85,5 +87,6 @@ public class HelloWorldPage extends WebPage {
 			</div>
 		</article>
 	</div>
+	</wicket:extend>
 </body>
 </html>

http://git-wip-us.apache.org/repos/asf/wicket/blob/5e615ff9/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/basic/BasicExamplesPage.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/basic/BasicExamplesPage.java b/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/basic/BasicExamplesPage.java
index 9371f9d..461da6a 100644
--- a/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/basic/BasicExamplesPage.java
+++ b/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/basic/BasicExamplesPage.java
@@ -1,8 +1,11 @@
 package org.apache.wicket.examples.basic;
 
 import org.apache.wicket.examples.base.AbstractBasePage;
+import org.apache.wicket.examples.base.annot.ExamplePage;
 
-public class BasicExamplesPage extends AbstractBasePage {
+@ExamplePage(title = "Basic examples")
+public class BasicExamplesPage extends AbstractBasePage
+{
 	private static final long serialVersionUID = 1L;
 
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/5e615ff9/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/components/ComponentExamplesPage.html
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/components/ComponentExamplesPage.html b/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/components/ComponentExamplesPage.html
index 1afc980..7db7993 100644
--- a/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/components/ComponentExamplesPage.html
+++ b/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/components/ComponentExamplesPage.html
@@ -2,10 +2,10 @@
 <html xmlns:wicket>
 <head>
 	<meta charset="utf-8" />
-	<title>Apache Wicket Examples</title>
+	<title>Components&mdash;Apache Wicket Examples</title>
 </head>
-<body data-spy="scroll" data-target=".bs-docs-sidebar">
-	<div wicket:id="topnavbar"></div>
+<body data-spy="scroll" data-target=".aw-docs-sidebar">
+	<wicket:extend>
 	<header class="jumbotron subhead">
 		<div class="container">
 			<h1>Component Reference</h1>
@@ -14,8 +14,8 @@
 	</header>
 	<div class="container">
 		<div class="row">
-			<div class="span3 bs-docs-sidebar">
-				<ul class="nav nav-list bs-docs-sidenav affix-top">
+			<div class="span3 aw-docs-sidebar">
+				<ul class="nav nav-list aw-docs-sidenav affix-top">
 					<li wicket:id="menuitems"><a wicket:id="menuitem" href="#Labels">Labels</a></li>
 				</ul>
 			</div>
@@ -24,5 +24,6 @@
 			</div>
 		</div>
 	</div>
+	</wicket:extend>
 </body>
 </html>

http://git-wip-us.apache.org/repos/asf/wicket/blob/5e615ff9/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/components/ComponentExamplesPage.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/components/ComponentExamplesPage.java b/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/components/ComponentExamplesPage.java
index d3fee08..fea0c22 100644
--- a/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/components/ComponentExamplesPage.java
+++ b/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/components/ComponentExamplesPage.java
@@ -1,13 +1,16 @@
 package org.apache.wicket.examples.components;
 
+import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.examples.base.AbstractBasePage;
 import org.apache.wicket.examples.base.MarkdownArticleModel;
+import org.apache.wicket.examples.base.annot.ExamplePage;
 import org.apache.wicket.examples.base.components.AnchorLink;
 import org.apache.wicket.examples.base.markdown.MarkdownLabel;
 import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.repeater.RepeatingView;
 
+@ExamplePage(title = "Component reference")
 public class ComponentExamplesPage extends AbstractBasePage
 {
 	private static final long serialVersionUID = 1L;
@@ -17,6 +20,9 @@ public class ComponentExamplesPage extends AbstractBasePage
 
 	public ComponentExamplesPage()
 	{
+		getBody().add(AttributeModifier.replace("data-spy", "scroll"));
+		getBody().add(AttributeModifier.replace("data-target", ".aw-docs-sidebar"));
+
 		add(articles);
 		add(menuitems);
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/5e615ff9/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/components/Labels.md
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/components/Labels.md b/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/components/Labels.md
index 18492e6..b25ed28 100644
--- a/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/components/Labels.md
+++ b/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/components/Labels.md
@@ -2,8 +2,8 @@
 	<h2>Labels <small>Displaying text using labels, MultiLineLabels and escaping markup</small></h2>
 </div>
 
-With `Label` components you can display dynamic text in
-your pages and components.
+With [Label](http://ci.apache.org/projects/wicket/apidocs/6.0.x/org/apache/wicket/markup/html/basic/Label.html)
+components you can display dynamic text in your pages and components.
 
 {% highlight java %}
     add(new Label<String>("text", "Hello, World!"));

http://git-wip-us.apache.org/repos/asf/wicket/blob/5e615ff9/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/components/Links.md
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/components/Links.md b/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/components/Links.md
index 5805a48..d10fd0d 100644
--- a/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/components/Links.md
+++ b/wicket-experimental/wicket-examples-parent/wicket-examples-jar/src/main/java/org/apache/wicket/examples/components/Links.md
@@ -228,3 +228,7 @@ serverside event: the user is taken directly to the external site.
 {% highlight java %}
 	add(new ExternalLink("google", "http://google.com"));
 {% endhighlight %}
+
+The external link also has a constructor taking an IModel, enabling
+you to retrieve URLs from a database or other persistent storage.
+