You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2014/11/29 12:31:36 UTC

wicket git commit: WICKET-3435 Revamp Wicket Examples with the new website L&F

Repository: wicket
Updated Branches:
  refs/heads/3435-use-bootstrap-for-examples [created] 1ba689baf


WICKET-3435 Revamp Wicket Examples with the new website L&F

Bootstrapify HelloWorld, Echo and FormInput examples


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

Branch: refs/heads/3435-use-bootstrap-for-examples
Commit: 1ba689bafa1ca221b7cd3c3ff4039e149daf1f2a
Parents: 5e07526
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Sat Nov 29 12:30:24 2014 +0100
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Sat Nov 29 12:30:24 2014 +0100

----------------------------------------------------------------------
 wicket-examples/pom.xml                         |  15 ++
 .../examples/WicketExampleApplication.java      |  24 +-
 .../wicket/examples/WicketExampleHeader.html    |  12 +-
 .../wicket/examples/WicketExampleHeader.java    |   2 +-
 .../wicket/examples/WicketExamplePage.html      |  18 ++
 .../wicket/examples/WicketExamplePage.java      |  49 +++-
 .../ajaxhellobrowser/AjaxHelloBrowser.html      |   2 +-
 .../org/apache/wicket/examples/echo/Echo.html   |  20 +-
 .../org/apache/wicket/examples/echo/Echo.java   |  10 +-
 .../wicket/examples/forminput/FormInput.html    | 227 ++++++++++++-------
 .../wicket/examples/forminput/FormInput.java    |  42 +++-
 .../wicket/examples/forminput/Multiply.html     |  13 +-
 .../wicket/examples/helloworld/HelloWorld.html  |   7 +-
 .../wicket/examples/helloworld/HelloWorld.java  |  11 +-
 .../template/pageinheritance/Page1.java         |  12 +-
 .../template/pageinheritance/Page2.java         |  13 +-
 .../template/pageinheritance/TemplatePage.java  |  26 +--
 17 files changed, 336 insertions(+), 167 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/1ba689ba/wicket-examples/pom.xml
----------------------------------------------------------------------
diff --git a/wicket-examples/pom.xml b/wicket-examples/pom.xml
index eb20aca..6265442 100644
--- a/wicket-examples/pom.xml
+++ b/wicket-examples/pom.xml
@@ -73,6 +73,21 @@
     </dependencyManagement>
 	<dependencies>
 		<dependency>
+			<groupId>de.agilecoders.wicket</groupId>
+			<artifactId>wicket-bootstrap-core</artifactId>
+			<version>0.10.0-SNAPSHOT</version>
+		</dependency>
+		<dependency>
+			<groupId>de.agilecoders.wicket</groupId>
+			<artifactId>wicket-bootstrap-themes</artifactId>
+			<version>0.10.0-SNAPSHOT</version>
+		</dependency>
+		<dependency>
+			<groupId>net.ftlines.wicket-source</groupId>
+			<artifactId>wicket-source</artifactId>
+			<version>7.0.0</version>
+		</dependency>
+		<dependency>
 			<groupId>javax.el</groupId>
 			<artifactId>javax.el-api</artifactId>
 		</dependency>

http://git-wip-us.apache.org/repos/asf/wicket/blob/1ba689ba/wicket-examples/src/main/java/org/apache/wicket/examples/WicketExampleApplication.java
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/WicketExampleApplication.java b/wicket-examples/src/main/java/org/apache/wicket/examples/WicketExampleApplication.java
index 2a63041..3c00fbe 100644
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/WicketExampleApplication.java
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/WicketExampleApplication.java
@@ -16,6 +16,11 @@
  */
 package org.apache.wicket.examples;
 
+import de.agilecoders.wicket.core.Bootstrap;
+import de.agilecoders.wicket.core.settings.BootstrapSettings;
+import de.agilecoders.wicket.themes.markup.html.bootswatch.BootswatchTheme;
+import de.agilecoders.wicket.themes.markup.html.bootswatch.BootswatchThemeProvider;
+import net.ftlines.wicketsource.WicketSource;
 import org.apache.wicket.protocol.http.WebApplication;
 import org.apache.wicket.settings.SecuritySettings;
 import org.apache.wicket.util.crypt.ClassCryptFactory;
@@ -39,17 +44,6 @@ public abstract class WicketExampleApplication extends WebApplication
 		System.setProperty("java.awt.headless", "true");
 	}
 
-
-	/**
-	 * Constructor.
-	 */
-	public WicketExampleApplication()
-	{
-	}
-
-	/**
-	 * @see org.apache.wicket.protocol.http.WebApplication#init()
-	 */
 	@Override
 	protected void init()
 	{
@@ -65,5 +59,13 @@ public abstract class WicketExampleApplication extends WebApplication
 			new ClassCryptFactory(NoCrypt.class, SecuritySettings.DEFAULT_ENCRYPTION_KEY));
 
 		getDebugSettings().setDevelopmentUtilitiesEnabled(true);
+
+		if (usesDevelopmentConfig()) {
+			WicketSource.configure(this);
+		}
+
+		BootstrapSettings bootstrapSettings = new BootstrapSettings();
+		bootstrapSettings.setThemeProvider(new BootswatchThemeProvider(BootswatchTheme.Flatly));
+		Bootstrap.install(this, bootstrapSettings);
 	}
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/1ba689ba/wicket-examples/src/main/java/org/apache/wicket/examples/WicketExampleHeader.html
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/WicketExampleHeader.html b/wicket-examples/src/main/java/org/apache/wicket/examples/WicketExampleHeader.html
index ebc0b33..1b14f4e 100644
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/WicketExampleHeader.html
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/WicketExampleHeader.html
@@ -2,12 +2,12 @@
 <html xmlns:wicket="http://wicket.apache.org">
 <body>
   <wicket:panel>
-    <a href="index.html" style="color: #E9601A" target="_top"><img src="logo.png" /></a><div wicket:id="debug"></div>      
-      <div id="titleblock" style="font-size:larger;height:1.5em;vertical-align:center;">
-        <div style="float:left;"><span wicket:id="exampleTitle">Example Title Goes Here</span></div>
-	      <div style="float:right;padding-right:10px"><a href="#" wicket:id="sources">Source code</a></div>
+
+    <div class="jumbotron">
+      <h1><a href="index.html">Wicket Examples</a></h1>
+      <h3 wicket:id="exampleTitle"></h3>
+      <div class="pull-right"><a href="#" wicket:id="sources">Source code</a></div>
     </div>
-    <br/>
   </wicket:panel>
 </body>
-</html>
\ No newline at end of file
+</html>

http://git-wip-us.apache.org/repos/asf/wicket/blob/1ba689ba/wicket-examples/src/main/java/org/apache/wicket/examples/WicketExampleHeader.java
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/WicketExampleHeader.java b/wicket-examples/src/main/java/org/apache/wicket/examples/WicketExampleHeader.java
index 4a7b370..e3febaf 100644
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/WicketExampleHeader.java
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/WicketExampleHeader.java
@@ -45,7 +45,7 @@ public final class WicketExampleHeader extends Panel
 	{
 		super(id);
 
-		add(new DebugBar("debug"));
+//		add(new DebugBar("debug"));
 		add(new Label("exampleTitle", exampleTitle));
 		BookmarkablePageLink<Void> link = new BookmarkablePageLink<Void>("sources",
 			SourcesPage.class, SourcesPage.generatePageParameters(page));

http://git-wip-us.apache.org/repos/asf/wicket/blob/1ba689ba/wicket-examples/src/main/java/org/apache/wicket/examples/WicketExamplePage.html
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/WicketExamplePage.html b/wicket-examples/src/main/java/org/apache/wicket/examples/WicketExamplePage.html
new file mode 100644
index 0000000..abda258
--- /dev/null
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/WicketExamplePage.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html xmlns:wicket="http://wicket.apache.org">
+<head lang="en">
+    <meta charset="UTF-8">
+    <title wicket:id="title"></title>
+    <meta wicket:id="viewport">
+    <meta wicket:id="description">
+    <meta wicket:id="author">
+    <meta wicket:id="ie-edge">
+</head>
+<body>
+    <div class="container-fluid">
+        <div wicket:id="mainNavigation"></div>
+
+        <wicket:child/>
+    </div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/wicket/blob/1ba689ba/wicket-examples/src/main/java/org/apache/wicket/examples/WicketExamplePage.java
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/WicketExamplePage.java b/wicket-examples/src/main/java/org/apache/wicket/examples/WicketExamplePage.java
index 3f36f54..4abbbb4 100644
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/WicketExamplePage.java
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/WicketExamplePage.java
@@ -16,8 +16,16 @@
  */
 package org.apache.wicket.examples;
 
+import de.agilecoders.wicket.core.markup.html.bootstrap.behavior.BootstrapBaseBehavior;
+import de.agilecoders.wicket.core.markup.html.bootstrap.html.IeEdgeMetaTag;
+import de.agilecoders.wicket.core.markup.html.bootstrap.html.MetaTag;
+import de.agilecoders.wicket.core.markup.html.bootstrap.html.OptimizedMobileViewportMetaTag;
+import de.agilecoders.wicket.core.markup.html.references.BootlintHeaderItem;
+import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.markup.html.WebPage;
+import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.util.string.Strings;
 
@@ -28,9 +36,6 @@ import org.apache.wicket.util.string.Strings;
  */
 public class WicketExamplePage extends WebPage
 {
-	/**
-	 * 
-	 */
 	private static final long serialVersionUID = 1L;
 
 	/**
@@ -44,26 +49,48 @@ public class WicketExamplePage extends WebPage
 	/**
 	 * Constructor
 	 * 
-	 * @param pageParameters
+	 * @param pageParameters The request parameters
 	 */
 	public WicketExamplePage(final PageParameters pageParameters)
 	{
 		super(pageParameters);
 
+		add(new OptimizedMobileViewportMetaTag("viewport"));
+		add(new IeEdgeMetaTag("ie-edge"));
+		add(new MetaTag("description", Model.of("description"), Model.of("Apache Wicket examples")));
+		add(new MetaTag("author", Model.of("author"), Model.of("Wicket Dev team <de...@wicket.apache.org>")));
+
+
 		final String packageName = getClass().getPackage().getName();
 		add(new WicketExampleHeader("mainNavigation", Strings.afterLast(packageName, '.'), this));
+
+		BootstrapBaseBehavior.addTo(this);
+	}
+
+	@Override
+	protected void onInitialize()
+	{
+		super.onInitialize();
+
 		explain();
+
+		add(new Label("title", getPageTitle()));
 	}
 
+	@Override
+	public void renderHead(IHeaderResponse response)
+	{
+		super.renderHead(response);
 
-	/**
-	 * Construct.
-	 * 
-	 * @param model
-	 */
-	public WicketExamplePage(IModel<?> model)
+		if (getApplication().usesDevelopmentConfig()) {
+			response.render(BootlintHeaderItem.INSTANCE);
+		}
+	}
+
+	// TODO make abstract
+	protected IModel<String> getPageTitle()
 	{
-		super(model);
+		return Model.of("Default Title");
 	}
 
 	/**

http://git-wip-us.apache.org/repos/asf/wicket/blob/1ba689ba/wicket-examples/src/main/java/org/apache/wicket/examples/ajaxhellobrowser/AjaxHelloBrowser.html
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/ajaxhellobrowser/AjaxHelloBrowser.html b/wicket-examples/src/main/java/org/apache/wicket/examples/ajaxhellobrowser/AjaxHelloBrowser.html
index 48e9a0e..5c88266 100644
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/ajaxhellobrowser/AjaxHelloBrowser.html
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/ajaxhellobrowser/AjaxHelloBrowser.html
@@ -2,7 +2,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
 <head>
     <title>Wicket Examples - hellobrowser</title>
-    <link rel="stylesheet" type="text/css" href="style.css"/>
+    <!--<link rel="stylesheet" type="text/css" href="style.css"/>-->
 </head>
 <body>
     <div wicket:id="mainNavigation"></div>

http://git-wip-us.apache.org/repos/asf/wicket/blob/1ba689ba/wicket-examples/src/main/java/org/apache/wicket/examples/echo/Echo.html
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/echo/Echo.html b/wicket-examples/src/main/java/org/apache/wicket/examples/echo/Echo.html
index e47d53b..7c397cd 100644
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/echo/Echo.html
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/echo/Echo.html
@@ -1,17 +1,17 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
-<head>
-    <title>Wicket Examples - echo</title>
-    <link rel="stylesheet" type="text/css" href="style.css"/>
-</head>
 <body>
-    <span wicket:id="mainNavigation"/>
+    <wicket:extend>
 
-	<form wicket:id="form">
-		<input type="text" wicket:id="msgInput" value="" size="50" />
-		<input type="submit" value="set message" />
-	</form>
-    <span wicket:id="msg" id="msg">Message goes here</span>
+        <form wicket:id="form" class="form-inline">
+            <div class="form-group">
+                <input type="text" class="form-control" wicket:id="msgInput" value="" size="50" />
+            </div>
 
+            <button type="submit"class="btn btn-primary">Set message</button>
+        </form>
+        <span wicket:id="msg">Message goes here</span>
+
+    </wicket:extend>
 </body>
 </html>

http://git-wip-us.apache.org/repos/asf/wicket/blob/1ba689ba/wicket-examples/src/main/java/org/apache/wicket/examples/echo/Echo.java
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/echo/Echo.java b/wicket-examples/src/main/java/org/apache/wicket/examples/echo/Echo.java
index bdb837c..3573f1f 100644
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/echo/Echo.java
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/echo/Echo.java
@@ -20,6 +20,8 @@ import org.apache.wicket.examples.WicketExamplePage;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
 import org.apache.wicket.model.PropertyModel;
 
 
@@ -68,4 +70,10 @@ public class Echo extends WicketExamplePage
 	{
 		this.message = message;
 	}
-}
\ No newline at end of file
+
+	@Override
+	protected IModel<String> getPageTitle()
+	{
+		return Model.of("Echo");
+	}
+}

http://git-wip-us.apache.org/repos/asf/wicket/blob/1ba689ba/wicket-examples/src/main/java/org/apache/wicket/examples/forminput/FormInput.html
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/forminput/FormInput.html b/wicket-examples/src/main/java/org/apache/wicket/examples/forminput/FormInput.html
index c516b65..43fdc9c 100644
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/forminput/FormInput.html
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/forminput/FormInput.html
@@ -1,86 +1,155 @@
 <html xmlns:wicket="http://wicket.apache.org">
-<head>
-    <title>Wicket Examples - forminput</title>
-    <link rel="stylesheet" type="text/css" href="style.css"/>
-</head>
 <body>
-    <span wicket:id="mainNavigation"/>
-    <form wicket:id="inputForm" class="inputForm">
- 	 <div>
-		<wicket:message key="use.locale">Use locale:</wicket:message>
-		<select wicket:id="localeSelect"></select>
-		<wicket:link><img src="flag.gif" /></wicket:link>
-		<a href="#" wicket:id="defaultLocaleLink">[<wicket:message key="default" />]</a>
-     </div>
-     <p></p>
-      <fieldset>
-        <legend><wicket:message key="input" /></legend>
-        <table id="inputFormTable">
-          <tr>
-          <td valign="top">
-			  <label for="stringProperty"><wicket:message key="string" /></label>
-			  <input wicket:id="stringProperty" id="stringProperty" type="text" size="40"/>
-			  <label for="integerProperty"><wicket:message key="integer" /></label>
-			  <input wicket:id="integerProperty" id="integerProperty" type="text" size="40"/>
-			  <label for="doubleProperty"><wicket:message key="double" /></label>
-			  <input wicket:id="doubleProperty" id="doubleProperty" type="text" size="40"/>	  
-			  
-	          <label>ListView</label>			  
-			  <ul>
-			   <li wicket:id="lines">
-			    <input type="text" wicket:id="lineEdit" /> 
-			   </li>
-			  </ul>
-			  <label for="booleanProperty"><wicket:message key="boolean" /></label>
-			  <input wicket:id="booleanProperty" id="booleanProperty" type="checkbox"/>
-              <br /><br />
-              <span wicket:id="multiply">[multiply]</span>
-              = <span wicket:id="multiplyLabel">[result]</span>
-	      </td>
-	      <td valign="top">
-			  
-			  <label for="integerInRangeProperty"><wicket:message key="value.between.0.and.100" /></label>
-			  <input wicket:id="integerInRangeProperty" id="integerInRangeProperty" type="text" size="40"/>
-	          <label for="urlProperty"><wicket:message key="valid.url" /></label>
-	          <input wicket:id="urlProperty" id="urlProperty" type="text" size="40"/>
-	          <label for="phoneNumberUS"><wicket:message key="us.phone.number.mask" /></label>
-	          <input wicket:id="phoneNumberUS" id="phoneNumberUS" type="text" size="40"/>        
-			  <label for="numberRadioChoice"><wicket:message key="select.a.number" /> (RadioChoice)</label>
-			  <span valign="top" wicket:id="numberRadioChoice" id="numberRadioChoice">
-	    		<input type="radio">foo</input>
-				<input type="radio">bar</input>
-			  </span>
-			  <span wicket:id="numbersGroup">
-			  <label><wicket:message key="select.a.number" /> (RadioGroup)</label>			  
-				<span wicket:id="numbers">
-					<input type="radio" wicket:id="radio"/><label wicket:id="number" style="display:inline"></label>
-				</span>
-			  </span>
-			  <span wicket:id="numbersCheckGroup">
-			  <label><wicket:message key="select.one.or.more.numbers" /> (CheckGroup)</label>			  
-				<span wicket:id="numbers">
-					<input type="checkbox" wicket:id="check"/><label wicket:id="number" style="display:inline;"></label>
-				</span>
-			  </span>
-			  <label for="siteSelection"><wicket:message key="your.favorite.sites" /></label>
-			  <select wicket:id="siteSelection" id="siteSelection">
-			  	<option>foo</option>
-			  	<option>bar</option>
-			  </select>
-		  </td>
-		  </tr>
-		  <tr>
-		  <td colspan="2">
-			  <input type="submit" wicket:id="saveButton" value="save" />
-			  <input type="submit" wicket:id="resetButton" value="reset" />
-		  </td>
-		  </tr>
-		 </table>
-      </fieldset>
-    </form>
+	<wicket:extend>
+	<form wicket:id="inputForm" class="form-horizontal" role="form">
+
+	<fieldset>
+		<div class="row">
+			<div class="col-sm-4">
+				<div class="form-group">
+					<label wicket:for="localeSelect" class="control-label col-sm-2"><wicket:message key="use.locale"/></label>
+					<div class="col-sm-10">
+						<select wicket:id="localeSelect" class="form-control"></select>
+					</div>
+				</div>
+			</div>
+			<div class="col-sm-4">
+				<div class="row">
+					<div class="col-sm-3">
+						<wicket:link><img src="flag.gif" /></wicket:link>
+						<a wicket:id="defaultLocaleLink" class="btn btn-link">[<wicket:message key="default" />]</a>
+					</div>
+				</div>
+			</div>
+		</div>
+		<hr/>
+		<div class="row">
+			<div class="col-sm-4">
+				<div class="form-group">
+					<label wicket:for="stringProperty" class="col-sm-2 control-label"><wicket:message key="string" /></label>
+					<div class="col-sm-10">
+						<input wicket:id="stringProperty" class="form-control" id="stringProperty" type="text" size="40"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<label wicket:for="integerProperty" class="col-sm-2 control-label"><wicket:message key="integer" /></label>
+					<div class="col-sm-10">
+						<input wicket:id="integerProperty" class="form-control" id="integerProperty" type="text" size="40"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<label wicket:for="doubleProperty" class="col-sm-2 control-label"><wicket:message key="double" /></label>
+					<div class="col-sm-10">
+						<input wicket:id="doubleProperty" class="form-control" id="doubleProperty" type="text" size="40"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<label class="col-sm-2 control-label">List</label>
+					<div class="col-sm-10">
+						<ul>
+							<li wicket:id="lines">
+								<input type="text" class="form-control" wicket:id="lineEdit" />
+							</li>
+						</ul>
+					</div>
+				</div>
+				<div class="form-group">
+					<label wicket:for="booleanProperty" class="col-sm-2 control-label"><wicket:message key="boolean"/></label>
+					<div class="col-sm-10">
+						<div class="checkbox">
+							<label>
+								<input wicket:id="booleanProperty" type="checkbox"/>
+							</label>
+						</div>
+					</div>
+				</div>
+				<div class="form-group">
+					<label wicket:for="multiply" class="col-sm-2 control-label">Multiply</label>
+					<div class="col-sm-10">
+						<div class="row">
+							<div class="col-sm-8" wicket:id="multiply">[multiply]</div><div style="padding-top: 10px">= <span wicket:id="multiplyLabel">[result]</span></div>
+						</div>
+					</div>
+				</div>
+			</div>
+
+			<div class="col-sm-4">
+				<div class="form-group">
+					<label wicket:for="integerInRangeProperty" class="col-sm-5 control-label"><wicket:message key="value.between.0.and.100"/></label>
+					<div class="col-sm-7">
+						<input wicket:id="integerInRangeProperty" class="form-control" type="text" size="40"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<label wicket:for="urlProperty" class="col-sm-5 control-label"><wicket:message key="valid.url"/></label>
+					<div class="col-sm-7">
+						<input wicket:id="urlProperty" class="form-control" type="text" size="40"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<label wicket:for="phoneNumberUS" class="col-sm-5 control-label"><wicket:message key="us.phone.number.mask"/></label>
+					<div class="col-sm-7">
+						<input wicket:id="phoneNumberUS" class="form-control" type="text" size="40"/>
+					</div>
+				</div>
+				<div class="form-group">
+					<label wicket:for="numberRadioChoice" class="col-sm-5 control-label"><wicket:message key="select.a.number"/>(RadioChoice)</label>
+					<div class="col-sm-7">
+						<div wicket:id="numberRadioChoice">
+							<input type="radio">foo</input>
+							<input type="radio">bar</input>
+						</div>
+					</div>
+				</div>
+				<div class="form-group">
+					<div wicket:id="numbersGroup">
+						<label class="col-sm-5 control-label"><wicket:message key="select.a.number"/> (RadioGroup)</label>
+						<div class="col-sm-7">
+							<span wicket:id="numbers">
+								<label wicket:id="number">
+									<input type="radio" wicket:id="radio"/>
+									<span wicket:id="radioValue"></span>
+								</label>
+							</span>
+						</div>
+					</div>
+				</div>
+				<div class="form-group">
+					<div wicket:id="numbersCheckGroup">
+						<label class="col-sm-5 control-label"><wicket:message key="select.one.or.more.numbers"/>(CheckGroup)</label>
+						<div class="col-sm-7">
+							<span wicket:id="numbers">
+								<label wicket:id="number" style="display:inline;">
+									<input type="checkbox" wicket:id="check"/>
+									<span wicket:id="checkboxValue"></span>
+								</label>
+							</span>
+						</div>
+					</div>
+				</div>
+				<div class="form-group">
+					<label wicket:for="siteSelection" class="col-sm-5 control-label"><wicket:message key="your.favorite.sites"/></label>
+					<div class="col-sm-7">
+						<select wicket:id="siteSelection" id="siteSelection" class="form-control">
+							<option>foo</option>
+							<option>bar</option>
+						</select>
+					</div>
+				</div>
+			</div>
+		</div>
+		<div class="row">
+			<div class="col-sm-offset-1 col-sm-4">
+				<input type="submit" wicket:id="saveButton" value="save" class="btn btn-primary"/>
+				<input type="submit" wicket:id="resetButton" value="reset" class="btn btn-sm btn-default"/>
+			</div>
+		</div>
+		</fieldset>
+	</form>
 
 	<div id="feedbackPanel">
 		<span wicket:id="feedback"/>
-    </div>
+	</div>
+</wicket:extend>
 </body>
 </html>

http://git-wip-us.apache.org/repos/asf/wicket/blob/1ba689ba/wicket-examples/src/main/java/org/apache/wicket/examples/forminput/FormInput.java
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/forminput/FormInput.java b/wicket-examples/src/main/java/org/apache/wicket/examples/forminput/FormInput.java
index 9cbc294..e176d5c 100644
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/forminput/FormInput.java
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/forminput/FormInput.java
@@ -22,8 +22,12 @@ import java.util.Arrays;
 import java.util.List;
 import java.util.Locale;
 
+import de.agilecoders.wicket.core.markup.html.bootstrap.behavior.CssClassNameAppender;
+import de.agilecoders.wicket.core.markup.html.bootstrap.common.NotificationPanel;
 import org.apache.wicket.examples.WicketExamplePage;
+import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.AbstractChoice;
 import org.apache.wicket.markup.html.form.Button;
 import org.apache.wicket.markup.html.form.Check;
 import org.apache.wicket.markup.html.form.CheckBox;
@@ -40,14 +44,16 @@ import org.apache.wicket.markup.html.form.TextField;
 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.FeedbackPanel;
 import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.model.PropertyModel;
 import org.apache.wicket.request.http.WebRequest;
 import org.apache.wicket.util.convert.ConversionException;
 import org.apache.wicket.util.convert.IConverter;
 import org.apache.wicket.util.convert.MaskConverter;
+import org.apache.wicket.util.value.IValueMap;
+import org.apache.wicket.util.value.ValueMap;
 import org.apache.wicket.validation.validator.RangeValidator;
 
 
@@ -108,7 +114,17 @@ public class FormInput extends WicketExamplePage
 			// just for fun, add a border so that our result will be displayed as '[ x ]'
 			multiplyLabel.add(new BeforeAndAfterBorder());
 			add(multiplyLabel);
-			RadioChoice<String> rc = new RadioChoice<>("numberRadioChoice", NUMBERS).setSuffix("");
+			RadioChoice<String> rc = new RadioChoice<String>("numberRadioChoice", NUMBERS)
+			{
+				@Override
+				protected IValueMap getAdditionalAttributesForLabel(int index, String choice)
+				{
+					IValueMap additionalAttributesForLabel = new ValueMap();
+					additionalAttributesForLabel.put("class", "radio-inline");
+					return additionalAttributesForLabel;
+				}
+			};
+			rc.setSuffix("").setLabelPosition(AbstractChoice.LabelPosition.WRAP_AFTER);
 			rc.setLabel(new Model<>("number"));
 			rc.setRequired(true);
 			add(rc);
@@ -122,8 +138,11 @@ public class FormInput extends WicketExamplePage
 				{
 					Radio<String> radio = new Radio<>("radio", item.getModel());
 					radio.setLabel(item.getModel());
-					item.add(radio);
-					item.add(new SimpleFormComponentLabel("number", radio));
+					WebMarkupContainer label = new WebMarkupContainer("number");
+					label.add(new CssClassNameAppender("radio-inline"));
+					Label radioValue = new Label("radioValue", item.getModel());
+					label.add(radio, radioValue);
+					item.add(label);
 				}
 			}.setReuseItems(true);
 			group.add(persons);
@@ -137,8 +156,11 @@ public class FormInput extends WicketExamplePage
 				{
 					Check<String> check = new Check<>("check", item.getModel());
 					check.setLabel(item.getModel());
-					item.add(check);
-					item.add(new SimpleFormComponentLabel("number", check));
+					WebMarkupContainer label = new WebMarkupContainer("number");
+					label.add(new CssClassNameAppender("checkbox-inline"));
+					Label radioValue = new Label("checkboxValue", item.getModel());
+					label.add(check, radioValue);
+					item.add(label);
 				}
 			}.setReuseItems(true);
 			checks.add(checksList);
@@ -209,6 +231,12 @@ public class FormInput extends WicketExamplePage
 		}
 	}
 
+	@Override
+	protected IModel<String> getPageTitle()
+	{
+		return Model.of("Form Input");
+	}
+
 	/** list view to be nested in the form. */
 	private static final class LinesListView extends ListView<String>
 	{
@@ -318,7 +346,7 @@ public class FormInput extends WicketExamplePage
 	public FormInput()
 	{
 		// Construct form and feedback panel and hook them up
-		final FeedbackPanel feedback = new FeedbackPanel("feedback");
+		final NotificationPanel feedback = new NotificationPanel("feedback");
 		add(feedback);
 		add(new InputForm("inputForm"));
 	}

http://git-wip-us.apache.org/repos/asf/wicket/blob/1ba689ba/wicket-examples/src/main/java/org/apache/wicket/examples/forminput/Multiply.html
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/forminput/Multiply.html b/wicket-examples/src/main/java/org/apache/wicket/examples/forminput/Multiply.html
index 80ddb06..d70d759 100644
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/forminput/Multiply.html
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/forminput/Multiply.html
@@ -1,3 +1,12 @@
 <wicket:panel xmlns:wicket="http://wicket.apache.org">
-<input type="text" wicket:id="left" size="2" />&#160;*&#160;<input type="text" wicket:id="right" size="2" />
-</wicket:panel>
\ No newline at end of file
+    <div class="row">
+        <div class="col-sm-5">
+            <input type="text" class="form-control" wicket:id="left" size="2" />
+        </div>
+        <div class="col-sm-1" style="padding-top: 10px; padding-right: 30px"><i class="glyphicon glyphicon-asterisk"></i></div>
+        <div class="col-sm-5">
+            <input type="text" class="form-control" wicket:id="right" size="2" />
+        </div>
+    </div>
+
+</wicket:panel>

http://git-wip-us.apache.org/repos/asf/wicket/blob/1ba689ba/wicket-examples/src/main/java/org/apache/wicket/examples/helloworld/HelloWorld.html
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/helloworld/HelloWorld.html b/wicket-examples/src/main/java/org/apache/wicket/examples/helloworld/HelloWorld.html
index 271d7b0..49a82d6 100644
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/helloworld/HelloWorld.html
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/helloworld/HelloWorld.html
@@ -2,10 +2,11 @@
 <html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
 <head>
     <title>Wicket Examples - helloworld</title>
-    <link rel="stylesheet" type="text/css" href="style.css"/>
+    <!--<link rel="stylesheet" type="text/css" href="style.css"/>-->
 </head>
 <body>
-    <span wicket:id="mainNavigation"/>
-    <span wicket:id="message" id="message">Message goes here</span>
+    <wicket:extend>
+        <span wicket:id="message" id="message">Message goes here</span>
+    </wicket:extend>
 </body>
 </html>

http://git-wip-us.apache.org/repos/asf/wicket/blob/1ba689ba/wicket-examples/src/main/java/org/apache/wicket/examples/helloworld/HelloWorld.java
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/helloworld/HelloWorld.java b/wicket-examples/src/main/java/org/apache/wicket/examples/helloworld/HelloWorld.java
index 734cf55..d376a6e 100644
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/helloworld/HelloWorld.java
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/helloworld/HelloWorld.java
@@ -18,7 +18,8 @@ package org.apache.wicket.examples.helloworld;
 
 import org.apache.wicket.examples.WicketExamplePage;
 import org.apache.wicket.markup.html.basic.Label;
-
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
 
 /**
  * Everybody's favorite example!
@@ -34,4 +35,10 @@ public class HelloWorld extends WicketExamplePage
 	{
 		add(new Label("message", "Hello World!"));
 	}
-}
\ No newline at end of file
+
+	@Override
+	protected IModel<String> getPageTitle()
+	{
+		return Model.of("Hello World");
+	}
+}

http://git-wip-us.apache.org/repos/asf/wicket/blob/1ba689ba/wicket-examples/src/main/java/org/apache/wicket/examples/template/pageinheritance/Page1.java
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/template/pageinheritance/Page1.java b/wicket-examples/src/main/java/org/apache/wicket/examples/template/pageinheritance/Page1.java
index 7ccb792..a287085 100644
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/template/pageinheritance/Page1.java
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/template/pageinheritance/Page1.java
@@ -16,6 +16,9 @@
  */
 package org.apache.wicket.examples.template.pageinheritance;
 
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+
 /**
  * Concrete page. Note that it extends {@link TemplatePage} and the markup uses
  * &lt;wicket:extend&gt; tags to define the region that is to be expanded into the parent's
@@ -30,7 +33,12 @@ public class Page1 extends TemplatePage
 	 */
 	public Page1()
 	{
-		setPageTitle("Template example, page 1 - page inheritance");
 		add(new Panel1("panel1"));
 	}
-}
\ No newline at end of file
+
+	@Override
+	protected IModel<String> getPageTitle()
+	{
+		return Model.of("Template example, page 1 - page inheritance");
+	}
+}

http://git-wip-us.apache.org/repos/asf/wicket/blob/1ba689ba/wicket-examples/src/main/java/org/apache/wicket/examples/template/pageinheritance/Page2.java
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/template/pageinheritance/Page2.java b/wicket-examples/src/main/java/org/apache/wicket/examples/template/pageinheritance/Page2.java
index 6d99b3e..a41031f 100644
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/template/pageinheritance/Page2.java
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/template/pageinheritance/Page2.java
@@ -16,6 +16,9 @@
  */
 package org.apache.wicket.examples.template.pageinheritance;
 
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+
 /**
  * Concrete page. Note that it extends {@link TemplatePage} and the markup uses
  * &lt;wicket:extend&gt; tags to define the region that is to be expanded into the parent's
@@ -25,11 +28,9 @@ package org.apache.wicket.examples.template.pageinheritance;
  */
 public class Page2 extends TemplatePage
 {
-	/**
-	 * Constructor
-	 */
-	public Page2()
+	@Override
+	protected IModel<String> getPageTitle()
 	{
-		setPageTitle("Template example, page 2");
+		return Model.of("Template example, page 2");
 	}
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/wicket/blob/1ba689ba/wicket-examples/src/main/java/org/apache/wicket/examples/template/pageinheritance/TemplatePage.java
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/template/pageinheritance/TemplatePage.java b/wicket-examples/src/main/java/org/apache/wicket/examples/template/pageinheritance/TemplatePage.java
index 4a705e7..df53829 100644
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/template/pageinheritance/TemplatePage.java
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/template/pageinheritance/TemplatePage.java
@@ -33,9 +33,6 @@ import org.apache.wicket.model.PropertyModel;
  */
 public abstract class TemplatePage extends WicketExamplePage
 {
-	/** title of the current page. */
-	private String pageTitle = "(no title)";
-
 	/** the current banner. */
 	private Banner currentBanner;
 
@@ -67,25 +64,4 @@ public abstract class TemplatePage extends WicketExamplePage
 		add(new BookmarkablePageLink<>("page1Link", Page1.class));
 		add(new BookmarkablePageLink<>("page2Link", Page2.class));
 	}
-
-	/**
-	 * Gets the title.
-	 * 
-	 * @return title
-	 */
-	public final String getPageTitle()
-	{
-		return pageTitle;
-	}
-
-	/**
-	 * Sets the title.
-	 * 
-	 * @param title
-	 *            title
-	 */
-	public final void setPageTitle(String title)
-	{
-		pageTitle = title;
-	}
-}
\ No newline at end of file
+}