<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>A Place for John on the Web &#187; Software Projects</title>
	<atom:link href="http://www.siberian.org/category/software-projects/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.siberian.org</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Sun, 21 Mar 2010 14:51:49 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>GXT/GWT, DTOs and Dozer : Managing the Exception rather then the Common Case</title>
		<link>http://www.siberian.org/2010/02/04/gxtgwt-dtos-and-dozer-managing-the-exception-rather-then-the-common-case/</link>
		<comments>http://www.siberian.org/2010/02/04/gxtgwt-dtos-and-dozer-managing-the-exception-rather-then-the-common-case/#comments</comments>
		<pubDate>Thu, 04 Feb 2010 18:56:12 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[GWT/GXT]]></category>
		<category><![CDATA[Software Projects]]></category>

		<guid isPermaLink="false">http://www.siberian.org/?p=230</guid>
		<description><![CDATA[For all of its amazing cleverness, GWT has one really difficult area, persistence. There are various projects and attempts to clear this are up but most are very young and have a ways to go. This gets even more complicated if your not, lets face it, using Hibernate. As a Cayenne fan I don&#8217;t use [...]]]></description>
			<content:encoded><![CDATA[<p>For all of its amazing cleverness, GWT has one really difficult area, persistence. There are various projects and attempts to clear this are up but most are very young and have a ways to go. This gets even more complicated if your not, lets face it, using Hibernate. As a Cayenne fan I don&#8217;t use Hibernate so of course my path is even more complex then most. Persistent objects, in most popular frameworks, carry with them a lot of persistent baggage that doesn&#8217;t cleanly serialize across the wire.</p>
<p>Thankfully there is, as with most things software related, a pattern! The pattern in this case is to use a Data Transfer Object (DTO). A DTO is basically a serializable bean that mirrors the persistent object. This is an annoying duplication of work and obviously violates the DRY (Don&#8217;t Repeat Yourself) principle since you are essentially cloning the Persistent object as a basic java bean. The upside of it is that you can control exactly what gets into your DTO (and thus what is transferred to the client). Originally I was constructing these beans as required, doing a pretty ad hoc job of it and generally causing myself headaches.</p>
<p>My first attempt at streamlining this was to use the <a title="Bean Utils - Apache Commons" href="http://commons.apache.org/beanutils/" target="_blank">BeanUtils</a> apache commons project. This library has some simple methods for copying properties between beans which, in the end, is what the DTO is all about. This worked well for common and primitive types that were shared (name and type) between the two objects but it fell over pretty quickly if the types mismatched. Additionally, there is no easy way to exclude or customize an individual field level map and no way to do one-way mappings (there is never a reason to map the ID from the Bean to the Persistent Object!)</p>
<p>What are my requirements and why didn&#8217;t BeanUtils not working?</p>
<ul>
<li>BeanUtils is exceptions based: If it has a mismatched attribute it blows up spectacularly and you then have to treat those objects differently.</li>
<li>BeanUtils doesn&#8217;t have an exceptions mechanism: In my situation where I have enumerations everywhere this meant that many objects of mine are not eligible for BeanUtils. (GWT doesn&#8217;t easily support enumerations so I have to convert them to int before sticking the int in the DTO with a map of values)</li>
<li>BeanUtils doesn&#8217;t have an extensions mechanism: Once your object is out of the path of automation there is no way back, its a manual coding exercise.</li>
</ul>
<p>There was a better way: <a title="Dozer is a Java Bean to Java Bean mapper that recursively copies data from one object to another." href="http://dozer.sourceforge.net/" target="_blank">Dozer</a></p>
<p>I had looked at Dozer a few times and it just seemed Scary and Large but in my desperation I started to dig around and discovered how addictingly easy it is to start with Dozer:</p>
<pre>public static void setUser(UserBean bean, Pguser user){
     Mapper mapper = DozerBeanMapperSingletonWrapper.getInstance();
     mapper.map(bean,user);
}</pre>
<p>This is your base &#8216;BeanUtils replacement&#8217; usage of Dozer. In my case this is part of a larger static class that is a big BeanFactory, eg: A bit file that has a bunch of static methods for converting beans to objects and objects to beans.</p>
<p>Fantastic! Now my conversions did not blow up in the general case where one object had a field that the other one lacked. However, it still exploded when types mismatched. Thats where the Dozer mapping comes in. Dozer allows you to create an XML file of exceptions that run as a part of the map(a,b) process. You don&#8217;t have to specific ALL fields in this mapping, just the differentials! Once I understood that it was happy-pants-time!</p>
<p>All you do is toss a file called &#8216;dozerBeanMapping.xml&#8217; into your class path and Dozer automatically picks it up. No muss no fuss. Lets look at one of my beans in this file. In the below example I am basically excluded my enumerations from the mapping process. Note: you can do a LOT more then this, my goal here is to show how easy it is to use Dozer to manage your bean&lt;-&gt;object exceptions.</p>
<pre>&lt;mapping&gt;
   &lt;class-a&gt;com.pgi.common.Clientsettings&lt;/class-a&gt;
   &lt;class-b&gt;com.pgi.webapp.client.dto.ClientsettingsBean&lt;/class-b&gt;
   &lt;field-exclude&gt;
      &lt;a&gt;jobmode&lt;/a&gt;
     &lt;b&gt;jobmode&lt;/b&gt;
   &lt;/field-exclude&gt;
   &lt;field-exclude&gt;
      &lt;a&gt;removemethod&lt;/a&gt;
      &lt;b&gt;removemethod&lt;/b&gt;
   &lt;/field-exclude&gt;
   &lt;field-exclude&gt;
      &lt;a&gt;reportingmode&lt;/a&gt;
      &lt;b&gt;reportingmode&lt;/b&gt;
   &lt;/field-exclude&gt;
&lt;/mapping&gt;</pre>
<p>But now how do I put my enumerations into my DTO? Two options really</p>
<p>For now I am putting this mapping in my factory method post auto-map</p>
<pre>public static ClientsettingsBean getClientsettingsBean(Clientsettings settings){
   Mapper mapper = DozerBeanMapperSingletonWrapper.getInstance();
   ClientsettingsBean theBean = mapper.map(settings,ClientsettingsBean.class);
   theBean.setJobmode(settings.getJobmode().ordinal());
   theBean.setReportingmode(settings.getReportingmode().ordinal());
   theBean.setRemovemethod(settings.getRemovemethod().ordinal());
   theBean.setId(DataObjectUtils.intPKForObject(settings));
   return theBean;
}</pre>
<div id="_mcePaste">There is another way though, I can create a custom Dozer Converter that knows how to do this mapping for me. I am still working on this though, Enumerations in my case are tough as I have about 15 of them and they all have a custom methods that goes from int to enum. Since I don&#8217;t want 15 converters that do the same thing, just with a different class, I need to find a way to extend my enumeration from a base class that has this mapping.</div>
<div>With a base enumeration class (if possible, haven&#8217;t looked deeply yet) I can have one Dozer Conversion class that maps back and forth between any of my enumerations and the class that has that enumeration as an attribute. Should be fun.</div>
<div></div>
<div>An intriguing idea for the future would be a Cayenne template that auto-creates these DTOs, Factory and Mapping files for me as part of the Cayenne class generation process. I&#8217;d still need to copy them manually into my GWT *.client.* namespace but it would speed things up considerably.</div>
]]></content:encoded>
			<wfw:commentRss>http://www.siberian.org/2010/02/04/gxtgwt-dtos-and-dozer-managing-the-exception-rather-then-the-common-case/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ajax Wizards in Wicket</title>
		<link>http://www.siberian.org/2009/10/29/ajax-wizards-in-wicket/</link>
		<comments>http://www.siberian.org/2009/10/29/ajax-wizards-in-wicket/#comments</comments>
		<pubDate>Fri, 30 Oct 2009 03:42:00 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Software Projects]]></category>
		<category><![CDATA[Wicket]]></category>

		<guid isPermaLink="false">http://www.siberian.org/?p=174</guid>
		<description><![CDATA[Lately I&#8217;ve found that Wicket + Ajax == Very nice. More then nice its turns out its just a lot easier to build sites using Ajax and Wicket then it is to do it otherwise. Last night I found myself wanting to place a wizard into an entirely Ajax driven site. Luckily Google pointed me [...]]]></description>
			<content:encoded><![CDATA[<p>Lately I&#8217;ve found that Wicket + Ajax == Very nice. More then nice its turns out its just a lot easier to build sites using Ajax and Wicket then it is to do it otherwise. Last night I found myself wanting to place a wizard into an entirely Ajax driven site. Luckily Google pointed me to the answer in this thread: <a href="http://www.nabble.com/Is-there-an-ajax-WizardButton-to-use-in-a-wizard-inside-a-ModalWindow--td15978434.html" target="_blank">Ajax Wizard Button in Modal Window</a>.</p>
<p>In the spirit of duplicating information all over the internet I&#8217;ll paste my copy/paste implementation of the presented solution. It works well!</p>
<p>Step 1: Create the AjaxWizardButton class</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="co2">import org.apache.wicket.ajax.AjaxRequestTarget;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2">import org.apache.wicket.ajax.markup.html.form.AjaxButton;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2">import org.apache.wicket.extensions.wizard.IWizard;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2">import org.apache.wicket.extensions.wizard.IWizardModel;</span></div>
</li>
<li class="li2">
<div class="de2"><span class="co2">import org.apache.wicket.markup.html.form.Form;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2">import org.apache.wicket.model.ResourceModel;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">public</span> <span class="kw2">abstract</span> <span class="kw2">class</span> AjaxWizardButton <span class="kw2">extends</span> AjaxButton <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">private</span> <span class="kw2">static</span> <span class="kw2">final</span> <span class="kw4">long</span> serialVersionUID = 1L;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">private</span> <span class="kw2">final</span> IWizard wizard;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">public</span> AjaxWizardButton<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AString+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> id, IWizard wizard, <span class="kw2">final</span> Form form,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AString+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> labelResourceKey<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">super</span><span class="br0">&#40;</span>id, form<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">this</span>.<span class="me1">setLabel</span><span class="br0">&#40;</span><span class="kw2">new</span> ResourceModel<span class="br0">&#40;</span>labelResourceKey<span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">this</span>.<span class="me1">wizard</span> = wizard;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">public</span> AjaxWizardButton<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AString+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> id, IWizard wizard, <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AString+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> labelResourceKey<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">this</span><span class="br0">&#40;</span>id, wizard, <span class="kw2">null</span>, labelResourceKey<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">protected</span> <span class="kw2">final</span> IWizard getWizard<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">return</span> wizard;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">protected</span> <span class="kw2">final</span> IWizardModel getWizardModel<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">return</span> getWizard<span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">getWizardModel</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">protected</span> <span class="kw2">final</span> <span class="kw4">void</span> onSubmit<span class="br0">&#40;</span>AjaxRequestTarget target, Form form<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; onClick<span class="br0">&#40;</span>target, form<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">protected</span> <span class="kw2">abstract</span> <span class="kw4">void</span> onClick<span class="br0">&#40;</span>AjaxRequestTarget target, Form form<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Step 2: Create the buttonbar that will wrap these buttons and override the native buttonbar built into the Wizard.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2">import org.apache.wicket.ajax.AjaxRequestTarget;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2">import org.apache.wicket.extensions.wizard.IWizardModel;</span></div>
</li>
<li class="li2">
<div class="de2"><span class="co2">import org.apache.wicket.extensions.wizard.IWizardStep;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2">import org.apache.wicket.extensions.wizard.Wizard;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2">import org.apache.wicket.extensions.wizard.WizardButtonBar;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2">import org.apache.wicket.markup.html.form.Form;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2"><span class="kw2">public</span> <span class="kw2">class</span> AjaxWizardButtonBar <span class="kw2">extends</span> WizardButtonBar <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">private</span> <span class="kw2">static</span> <span class="kw2">final</span> <span class="kw4">long</span> serialVersionUID = 1L;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">public</span> AjaxWizardButtonBar<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AString+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> id, <span class="kw2">final</span> Wizard wizard<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">super</span><span class="br0">&#40;</span>id, wizard<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; addOrReplace<span class="br0">&#40;</span><span class="kw2">new</span> AjaxWizardButton<span class="br0">&#40;</span><span class="st0">&quot;next&quot;</span>, wizard, <span class="st0">&quot;next&quot;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @Override</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">protected</span> <span class="kw4">void</span> onClick<span class="br0">&#40;</span>AjaxRequestTarget target, Form form<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; IWizardModel wizardModel = getWizardModel<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; IWizardStep step = wizardModel.<span class="me1">getActiveStep</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// let the step apply any state</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; step.<span class="me1">applyState</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// if the step completed after applying the state, move the</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// model onward</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>step.<span class="me1">isComplete</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; wizardModel.<span class="me1">next</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; error<span class="br0">&#40;</span>getLocalizer<span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .<span class="me1">getString</span><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&quot;org.apache.wicket.extensions.wizard.NextButton.step.did.not.complete&quot;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">this</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; target.<span class="me1">addComponent</span><span class="br0">&#40;</span>wizard<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">public</span> <span class="kw2">final</span> <span class="kw4">boolean</span> isEnabled<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">return</span> getWizardModel<span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">isNextAvailable</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; addOrReplace<span class="br0">&#40;</span><span class="kw2">new</span> AjaxWizardButton<span class="br0">&#40;</span><span class="st0">&quot;previous&quot;</span>, wizard, <span class="st0">&quot;prev&quot;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">protected</span> <span class="kw4">void</span> onClick<span class="br0">&#40;</span>AjaxRequestTarget target, Form form<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; getWizardModel<span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">previous</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; target.<span class="me1">addComponent</span><span class="br0">&#40;</span>wizard<span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">public</span> <span class="kw2">final</span> <span class="kw4">boolean</span> isEnabled<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">return</span> getWizardModel<span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">isPreviousAvailable</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
</ol>
</div>
<p>Step 3: Alter your wizard html markup so you can override the native buttonbar</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&lt;html xmlns:wicket&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;wicket:panel&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;div&gt;
</div>
</li>
<li class="li2">
<div class="de2">&lt;form wicket:id=&quot;form&quot; class=&quot;wicketExtensionsWizardForm&quot;&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&lt;span wicket:id=&quot;overview&quot;&gt;&lt;/span&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;span wicket:id=&quot;header&quot;&gt;&lt;/span&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&lt;div wicket:id=&quot;view&quot;&gt;&lt;/div&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&lt;span wicket:id=&quot;feedback&quot;&gt;&lt;/span&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;div class=&quot;buttons&quot;&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;span wicket:id=&quot;buttons&quot;&gt;&lt;/span&gt;
</div>
</li>
<li class="li2">
<div class="de2">&lt;/div&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;/form&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;/div&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;/wicket:panel&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;/html&gt;
</div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
</ol>
</div>
<p>Step 4: Set your wizard markup output ID so that you can target it with Ajax calls</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">theWizard.<span class="me1">setOutputMarkupId</span><span class="br0">&#40;</span><span class="kw2">true</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
</ol>
</div>
<p>Step 5: Override the buttonbar call in your wizard class</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">protected</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AComponent+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Component</span></a> newButtonBar<span class="br0">&#40;</span>java.<span class="me1">lang</span>.<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AString+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> id<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">return</span> <span class="kw2">new</span> AjaxWizardButtonBar<span class="br0">&#40;</span>id, <span class="kw2">this</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
</ol>
</div>
<p>Step 6: Bask in the glow of warm Ajax.</p>
<p>Pretty simple but the impact is fantastic. Using this code I was able to Ajaxify my wizard in well under 10 minutes.</p>
<p>Thanks Wicket!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.siberian.org/2009/10/29/ajax-wizards-in-wicket/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Customizing Wicket Wizard Markup</title>
		<link>http://www.siberian.org/2009/06/24/customizing-wicket-wizard-markup/</link>
		<comments>http://www.siberian.org/2009/06/24/customizing-wicket-wizard-markup/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 08:04:23 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[Software Projects]]></category>
		<category><![CDATA[Wicket]]></category>

		<guid isPermaLink="false">http://www.siberian.org/?p=77</guid>
		<description><![CDATA[Apache Wicket provides an interesting out of the box component called a 'Wizard' that does just what you'd expect it to, create an easy to use Wizard workflow that you can insert into your page. The base markup that comes with the wizard is 'adequate' in that 'it works' but its complex table based structure is at odds with modern CSS based markup making it difficult to adapt at times. Luckily its totally and completely customizable (as all good Wicket Things are)..]]></description>
			<content:encoded><![CDATA[<p><strong>Overview</strong></p>
<p style="text-align: center;"><a href="http://wicket.apache.org/"></a></p>
<p style="text-align: left;"><a href="http://wicket.apache.org/">Apache Wicke</a>t provides an interesting out of the box component called a &#8216;Wizard&#8217; that does just what you&#8217;d expect it to, create an easy to use Wizard workflow that you can insert into your page. It provides next, previous and cancel buttons as well as tracking the state between steps and enabling the &#8216;Finish&#8217; button when appropriate. You can see the genericwizard in action here : <a href="http://www.wicket-library.com/wicket-examples/wizard/">http://www.wicket-library.com/wicket-examples/wizard/</a></p>
<p>The base markup that comes with the wizard is &#8216;adequate&#8217; in that &#8216;it works&#8217; but its complex table based structure is at odds with modern CSS based markup making it difficult to adapt at times. Luckily  (ok, by design..) its totally and completely customizable (as all good Wicket Things are) however doing so is a bit obtuse and generally left as an exercise for the reader. Here is a step by step for how you customize the look/feel of your wizard in Wicket. I won&#8217;t be explaining the base case, the link above details that. This tutorial won&#8217;t go &#8220;all the way&#8221;, if you really want to customize to the &#8216;nth degree its easy enough once you understand how the basics work.</p>
<p>When in doubt, download the wicket source and follow the bouncing ball, thats all I did. This quick tutorial also touches on how to customize a few other pieces of the Wizard process but the core of it is demonstrated in the first section.</p>
<p>You can download my Quickstart here: <a href="http://www.siberian.org/wp-content/uploads/2009/06/wizard-quickstart.zip">wizard-quickstart</a>.zip</p>
<p><strong>Create A Wizard without tables!</strong></p>
<p>Lets create a Table-less Wizard! A Wizard is basically a Panel that extends &#8216;Wizard&#8217;, lets call ours &#8220;YourCustomWizard&#8221; and build out its base methods, assign it a model and add a few steps. In the Real World your steps are probably going to be dynamic. If you want a quick tutorial on that let me know but its pretty easy to get through.  Note that the HTML on the right has NO TABLES. You are now in control of your own CSS destiny.</p>
<p>Put simply (thanks Nathan!) &#8220;To override the default markup, make a markup file using the same basename as your custom Wizard class (e.g., &#8220;YourCustomWizard.html&#8221;) with the following wicket:id attributes: <em><strong>form</strong></em>, <em><strong>overview</strong></em>, <em><strong>header</strong></em>, <em><strong>view</strong></em>, <em><strong>feedback</strong></em> and <em><strong>buttons</strong></em>. With that knowledge you can stop reading. Continue on for code samples.</p>
<p>Your welcome. NOTE: The Old Fat Wizard is the html that ships with the Wicket source.</p>
<p><span style="font-size: x-small;">(/src/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/wizard/Wizard.html)</span></p>
<table border="0">
<tbody>
<tr>
<td>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f0055; padding: 0px; margin: 0px; border: 0px initial initial;">package</span> wicket.quickstart;</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; min-height: 15px; padding: 0px; margin: 0px; border: 0px initial initial;">
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f0055; padding: 0px; margin: 0px; border: 0px initial initial;">import</span> wicket.Component;</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f0055; padding: 0px; margin: 0px; border: 0px initial initial;">import</span> wicket.extensions.wizard.Wizard;</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f0055; padding: 0px; margin: 0px; border: 0px initial initial;">import</span> wicket.extensions.wizard.WizardModel;</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; min-height: 15px; padding: 0px; margin: 0px; border: 0px initial initial;">
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f0055; padding: 0px; margin: 0px; border: 0px initial initial;">public</span> <span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f0055; padding: 0px; margin: 0px; border: 0px initial initial;">class</span> <span style="text-decoration: underline;">YourCustomWizard</span> <span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f0055; padding: 0px; margin: 0px; border: 0px initial initial;">extends</span> Wizard {</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #3f7f5f; padding: 0px; margin: 0px; border: 0px initial initial;">/*</span></p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #3f7f5f; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> * Create a wizard with a default model</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #3f7f5f; padding: 0px; margin: 0px; border: 0px initial initial;">* and three custom steps. Each step</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #3f7f5f; padding: 0px; margin: 0px; border: 0px initial initial;">* is a form with some default data</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #3f7f5f; padding: 0px; margin: 0px; border: 0px initial initial;">* in the model for example purpose.</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #3f7f5f; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> */</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f0055; padding: 0px; margin: 0px; border: 0px initial initial;">public</span> YourCustomWizard(String id){</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> <span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f0055; padding: 0px; margin: 0px; border: 0px initial initial;">super</span>(id);</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> WizardModel model = <span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f0055; padding: 0px; margin: 0px; border: 0px initial initial;">new</span> WizardModel();</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> YourObject theObj = <span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f0055; padding: 0px; margin: 0px; border: 0px initial initial;">new</span> YourObject();</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> theObj.setElementdescription(<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #2a00ff; padding: 0px; margin: 0px; border: 0px initial initial;">&#8220;First item&#8221;</span>);</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> theObj.setElementlabel(<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #2a00ff; padding: 0px; margin: 0px; border: 0px initial initial;">&#8220;Label me&#8221;</span>);</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> theObj.setElementvalue(<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #2a00ff; padding: 0px; margin: 0px; border: 0px initial initial;">&#8220;my value&#8221;</span>);</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; min-height: 15px; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span></p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> YourObject theObj2 = <span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f0055; padding: 0px; margin: 0px; border: 0px initial initial;">new</span> YourObject();</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #2a00ff; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> theObj2.setElementdescription(</span>&#8220;Second item&#8221;<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;">);</span></p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> theObj2.setElementlabel(<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #2a00ff; padding: 0px; margin: 0px; border: 0px initial initial;">&#8220;Label me2&#8243;</span>);</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> theObj2.setElementvalue(<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #2a00ff; padding: 0px; margin: 0px; border: 0px initial initial;">&#8220;my value2&#8243;</span>);</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; min-height: 15px; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span></p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> YourObject theObj3 = <span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f0055; padding: 0px; margin: 0px; border: 0px initial initial;">new</span> YourObject();</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #2a00ff; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> theObj3.setElementdescription(</span>&#8220;Third item&#8221;<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;">);</span></p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> theObj3.setElementlabel(<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #2a00ff; padding: 0px; margin: 0px; border: 0px initial initial;">&#8220;Label me3&#8243;</span>);</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> theObj3.setElementvalue(<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #2a00ff; padding: 0px; margin: 0px; border: 0px initial initial;">&#8220;my value3&#8243;</span>);</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; min-height: 15px; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span></p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> model.add(<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f0055; padding: 0px; margin: 0px; border: 0px initial initial;">new</span> YourWizardStep(theObj));</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> model.add(<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f0055; padding: 0px; margin: 0px; border: 0px initial initial;">new</span> YourWizardStep(theObj2));</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> model.add(<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f0055; padding: 0px; margin: 0px; border: 0px initial initial;">new</span> YourWizardStep(theObj3));</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> init(model);</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>}</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> <span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #3f5fbf; padding: 0px; margin: 0px; border: 0px initial initial;">/**</span></p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #3f5fbf; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> </span>*<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>On<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>finish.</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> <span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #3f5fbf; padding: 0px; margin: 0px; border: 0px initial initial;">*</span></p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #3f5fbf; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> </span>*<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>Put<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>any<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>specific<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>logic<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>you<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>want<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>when<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>the<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span></p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #3f5fbf; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> </span>*<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>user<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>hits<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>the<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>&#8220;finish&#8221;<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>button<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>eventually</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #3f5fbf; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> </span>*<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>Here<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>we<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>print<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>to<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>error<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>log<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>and<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>send<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>them</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #3f5fbf; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> </span>*<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>to<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>the<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>home<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>page.</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #3f5fbf; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> </span>*<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>Normally<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>used<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>for<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>saving<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>unclean<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>objects<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span></p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #3f5fbf; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> </span>*<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>to<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>database<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>if<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>you<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>did<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>not<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>do<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>it<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>in<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>the<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>WizardStep</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> <span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #3f5fbf; padding: 0px; margin: 0px; border: 0px initial initial;">*/</span></p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #646464; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> </span>@Override</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> <span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f0055; padding: 0px; margin: 0px; border: 0px initial initial;">public</span> <span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f0055; padding: 0px; margin: 0px; border: 0px initial initial;">void</span> onFinish() {</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> System.<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #0000c0; padding: 0px; margin: 0px; border: 0px initial initial;">err</span>.println(<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #2a00ff; padding: 0px; margin: 0px; border: 0px initial initial;">&#8220;DONE WITH THE WIZ!&#8221;</span>);</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> setResponsePage(Index.<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f0055; padding: 0px; margin: 0px; border: 0px initial initial;">class</span>);</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> }</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> <span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #3f5fbf; padding: 0px; margin: 0px; border: 0px initial initial;">/**</span></p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #3f5fbf; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> </span>*<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>On<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>cancel.</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> <span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #3f5fbf; padding: 0px; margin: 0px; border: 0px initial initial;">*</span></p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #3f5fbf; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> </span>*<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>Put<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>your<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>cancel<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>logic<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>in<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>for<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>when<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>users<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span></p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #3f5fbf; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> </span>*<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>hit<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>the<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>&#8216;Cancel&#8217;<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>button.</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #3f5fbf; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> </span>*<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>I<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>send<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>them<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>to<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>the<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>home<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>page</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> <span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #3f5fbf; padding: 0px; margin: 0px; border: 0px initial initial;">*/</span></p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #646464; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> </span>@Override</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> <span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f0055; padding: 0px; margin: 0px; border: 0px initial initial;">public</span> <span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f0055; padding: 0px; margin: 0px; border: 0px initial initial;">void</span> onCancel() {</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> setResponsePage(Index.<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f0055; padding: 0px; margin: 0px; border: 0px initial initial;">class</span>);</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> }</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; min-height: 15px; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span></p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f0055; padding: 0px; margin: 0px; border: 0px initial initial;">protected </span>Component newButtonBar(java.lang.String id){</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> <span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f0055; padding: 0px; margin: 0px; border: 0px initial initial;">return</span> <span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f0055; padding: 0px; margin: 0px; border: 0px initial initial;">new</span> ButtonBarPanel(id, <span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f0055; padding: 0px; margin: 0px; border: 0px initial initial;">this</span>);</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> }</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f0055; padding: 0px; margin: 0px; border: 0px initial initial;">protected </span>Component newOverviewBar(java.lang.String id){</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> <span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f0055; padding: 0px; margin: 0px; border: 0px initial initial;">return</span> <span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f0055; padding: 0px; margin: 0px; border: 0px initial initial;">new</span> OverviewPanel(id);</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;">}</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; min-height: 15px; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span></p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;">}</p>
</td>
<td>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #3f7f7f; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;"><strong><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;">The New Lean And Mean Wizard </span></strong></span></p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #3f7f7f; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;"><strong><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;">(YourCustomWizard.html)</span></strong></span></p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #3f7f7f; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;"><strong> </strong></span></p>
<p><strong><br />
</strong></p>
<p><strong> </strong></p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #3f7f7f; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="text-decoration: underline;">&lt;</span><span style="text-decoration: underline;">wicket:panel</span><span style="text-decoration: underline;">&gt;</span></p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #3f7f7f; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&lt;</span>div<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&gt;</span></p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #2a00ff; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&lt;</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #3f7f7f; padding: 0px; margin: 0px; border: 0px initial initial;">form</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span><span style="text-decoration: underline;">wicket:id</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;">=</span>&#8220;form&#8221;<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f007f; padding: 0px; margin: 0px; border: 0px initial initial;">class</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;">=</span>&#8220;wicketExtensionsWizardForm&#8221;<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&gt;</span></p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #2a00ff; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&lt;</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #3f7f7f; padding: 0px; margin: 0px; border: 0px initial initial;">span</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span><span style="text-decoration: underline;">wicket:id</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;">=</span>&#8220;overview&#8221;<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&gt;&lt;/</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #3f7f7f; padding: 0px; margin: 0px; border: 0px initial initial;">span</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&gt;</span></p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #7f007f; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&lt;</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #3f7f7f; padding: 0px; margin: 0px; border: 0px initial initial;">span</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span><span style="text-decoration: underline;">wicket:id</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;">=</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #2a00ff; padding: 0px; margin: 0px; border: 0px initial initial;">&#8220;header&#8221;</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&gt;&lt;/</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #3f7f7f; padding: 0px; margin: 0px; border: 0px initial initial;">span</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&gt;</span></p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #7f007f; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&lt;</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #3f7f7f; padding: 0px; margin: 0px; border: 0px initial initial;">div</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span><span style="text-decoration: underline;">wicket:id</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;">=</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #2a00ff; padding: 0px; margin: 0px; border: 0px initial initial;">&#8220;view&#8221;</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&gt;&lt;/</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #3f7f7f; padding: 0px; margin: 0px; border: 0px initial initial;">div</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&gt;</span></p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #2a00ff; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&lt;</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #3f7f7f; padding: 0px; margin: 0px; border: 0px initial initial;">span</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span><span style="text-decoration: underline;">wicket:id</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;">=</span>&#8220;feedback&#8221;<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&gt;&lt;/</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #3f7f7f; padding: 0px; margin: 0px; border: 0px initial initial;">span</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&gt;</span></p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #2a00ff; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&lt;</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #3f7f7f; padding: 0px; margin: 0px; border: 0px initial initial;">div</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f007f; padding: 0px; margin: 0px; border: 0px initial initial;">class</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;">=</span>&#8220;buttons&#8221;<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&gt;</span></p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&lt;</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #3f7f7f; padding: 0px; margin: 0px; border: 0px initial initial;">span</span> <span style="text-decoration: underline;">wicket:id</span>=<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #2a00ff; padding: 0px; margin: 0px; border: 0px initial initial;">&#8220;buttons&#8221;</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&gt;&lt;/</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #3f7f7f; padding: 0px; margin: 0px; border: 0px initial initial;">span</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&gt;</span></p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&lt;/</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #3f7f7f; padding: 0px; margin: 0px; border: 0px initial initial;">div</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&gt;</span></p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #3f7f7f; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&lt;/</span>form<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&gt;</span></p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #3f7f7f; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&lt;/</span>div<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&gt;</span></p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #3f7f7f; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&lt;/</span>wicket:panel<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&gt;</span></p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #3f7f7f; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;"> </span></p>
<p style="font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #3f7f7f; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><strong><span style="color: #000000;">The Old Fat Wizard </span></strong></p>
<p style="font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #3f7f7f; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><strong><span style="color: #000000;">(Wizard.html)</span></strong></p>
<p style="font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #3f7f7f; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #3f7f7f; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="text-decoration: underline;">&lt;</span><span style="text-decoration: underline;">wicket:panel</span><span style="text-decoration: underline;">&gt;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #2a00ff;"><span style="color: #008080;">&lt;</span><span style="color: #3f7f7f;">div</span><span style="color: #000000;"> </span><span style="color: #7f007f;">class</span><span style="color: #000000;">=</span>&#8220;wicketExtensionsWizard&#8221;<span style="color: #008080;">&gt;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #2a00ff;"><span style="color: #008080;">&lt;</span><span style="color: #3f7f7f;">form</span><span style="color: #3f7f7f;"><span style="color: #000000;"> </span></span><span style="text-decoration: underline;">wicket:id</span><span style="color: #000000;">=</span>&#8220;form&#8221;<span style="color: #000000;"> </span><span style="color: #7f007f;">class</span><span style="color: #000000;">=</span>&#8220;wicketExtensionsWizardForm&#8221;<span style="color: #008080;">&gt;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #2a00ff;"><span style="color: #000000;"> </span><span style="color: #008080;">&lt;</span><span style="color: #3f7f7f;">table</span><span style="color: #000000;"> </span><span style="color: #7f007f;">class</span><span style="color: #000000;">=</span>&#8220;wicketExtensionsWizardOuterTable&#8221;<span style="color: #008080;">&gt;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;"><span style="color: #008080;">&lt;</span><span style="color: #3f7f7f;">tr</span><span style="color: #008080;">&gt;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #7f007f;"><span style="color: #000000;"> </span><span style="color: #008080;">&lt;</span><span style="color: #3f7f7f;">td</span><span style="color: #000000;"> </span>valign<span style="color: #000000;">=</span><span style="color: #2a00ff;">&#8220;top&#8221;</span><span style="color: #008080;">&gt;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #2a00ff;"><span style="color: #008080;">&lt;</span><span style="color: #3f7f7f;">span</span><span style="color: #000000;"> </span><span style="text-decoration: underline;">wicket:id</span><span style="color: #000000;">=</span>&#8220;overview&#8221;<span style="color: #008080;">&gt;&lt;/</span><span style="color: #3f7f7f;">span</span><span style="color: #008080;">&gt;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;"><span style="color: #008080;">&lt;/</span><span style="color: #3f7f7f;">td</span><span style="color: #008080;">&gt;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #7f007f;"><span style="color: #000000;"> </span><span style="color: #008080;">&lt;</span><span style="color: #3f7f7f;">td</span><span style="color: #000000;"> </span>valign<span style="color: #000000;">=</span><span style="color: #2a00ff;">&#8220;top&#8221;</span><span style="color: #008080;">&gt;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #2a00ff;"><span style="color: #000000;"> </span><span style="color: #008080;">&lt;</span><span style="color: #3f7f7f;">table</span><span style="color: #000000;"> </span><span style="color: #7f007f;">class</span><span style="color: #000000;">=</span>&#8220;wicketExtensionsWizardInnerTable&#8221;<span style="color: #008080;">&gt;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #2a00ff;"><span style="color: #000000;"> </span><span style="color: #008080;">&lt;</span><span style="color: #3f7f7f;">tr</span><span style="color: #000000;"> </span><span style="color: #7f007f;">class</span><span style="color: #000000;">=</span>&#8220;wicketExtensionsWizardHeaderRow&#8221;<span style="color: #008080;">&gt;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #2a00ff;"><span style="color: #000000;"> </span><span style="color: #008080;">&lt;</span><span style="color: #3f7f7f;">td</span><span style="color: #000000;"> </span><span style="color: #7f007f;">valign</span><span style="color: #000000;">=</span>&#8220;top&#8221;<span style="color: #000000;"> </span><span style="color: #7f007f;">class</span><span style="color: #000000;">=</span>&#8220;wicketExtensionsWizardHeader&#8221;<span style="color: #008080;">&gt;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #2a00ff;"><span style="color: #008080;">&lt;</span><span style="color: #3f7f7f;">span</span><span style="color: #000000;"> </span><span style="text-decoration: underline;">wicket:id</span><span style="color: #000000;">=</span>&#8220;header&#8221;<span style="color: #008080;">&gt;&lt;/</span><span style="color: #3f7f7f;">span</span><span style="color: #008080;">&gt;&lt;/</span><span style="color: #3f7f7f;">td</span><span style="color: #008080;">&gt;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;"><span style="color: #008080;">&lt;/</span><span style="color: #3f7f7f;">tr</span><span style="color: #008080;">&gt;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #2a00ff;"><span style="color: #000000;"> </span><span style="color: #008080;">&lt;</span><span style="color: #3f7f7f;">tr</span><span style="color: #000000;"> </span><span style="color: #7f007f;">class</span><span style="color: #000000;">=</span>&#8220;wicketExtensionsWizardViewRow&#8221;<span style="color: #008080;">&gt;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #2a00ff;"><span style="color: #000000;"> </span><span style="color: #008080;">&lt;</span><span style="color: #3f7f7f;">td</span><span style="color: #000000;"> </span><span style="color: #7f007f;">valign</span><span style="color: #000000;">=</span>&#8220;top&#8221;<span style="color: #000000;"> </span><span style="color: #7f007f;">class</span><span style="color: #000000;">=</span>&#8220;wicketExtensionsWizardView&#8221;<span style="color: #008080;">&gt;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #2a00ff;"><span style="color: #008080;">&lt;</span><span style="color: #3f7f7f;">div</span><span style="color: #3f7f7f;"><span style="color: #000000;"> </span></span><span style="text-decoration: underline;">wicket:id</span><span style="color: #000000;">=</span>&#8220;view&#8221;<span style="color: #000000;"> </span><span style="color: #7f007f;">class</span><span style="color: #000000;">=</span>&#8220;wicketExtensionsWizardViewInner&#8221;<span style="color: #008080;">&gt;&lt;/</span><span style="color: #3f7f7f;">div</span><span style="color: #008080;">&gt;&lt;/</span><span style="color: #3f7f7f;">td</span><span style="color: #008080;">&gt;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;"><span style="color: #008080;">&lt;/</span><span style="color: #3f7f7f;">tr</span><span style="color: #008080;">&gt;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #2a00ff;"><span style="color: #000000;"> </span><span style="color: #008080;">&lt;</span><span style="color: #3f7f7f;">tr</span><span style="color: #000000;"> </span><span style="color: #7f007f;">class</span><span style="color: #000000;">=</span>&#8220;wicketExtensionsWizardFeedbackRow&#8221;<span style="color: #008080;">&gt;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #2a00ff;"><span style="color: #000000;"> </span><span style="color: #008080;">&lt;</span><span style="color: #3f7f7f;">td</span><span style="color: #000000;"> </span><span style="color: #7f007f;">valign</span><span style="color: #000000;">=</span>&#8220;top&#8221;<span style="color: #000000;"> </span><span style="color: #7f007f;">class</span><span style="color: #000000;">=</span>&#8220;wicketExtensionsWizardFeedback&#8221;<span style="color: #008080;">&gt;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #2a00ff;"><span style="color: #008080;">&lt;</span><span style="color: #3f7f7f;">span</span><span style="color: #000000;"> </span><span style="text-decoration: underline;">wicket:id</span><span style="color: #000000;">=</span>&#8220;feedback&#8221;<span style="color: #008080;">&gt;&lt;/</span><span style="color: #3f7f7f;">span</span><span style="color: #008080;">&gt;&lt;/</span><span style="color: #3f7f7f;">td</span><span style="color: #008080;">&gt;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;"><span style="color: #008080;">&lt;/</span><span style="color: #3f7f7f;">tr</span><span style="color: #008080;">&gt;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #2a00ff;"><span style="color: #000000;"> </span><span style="color: #008080;">&lt;</span><span style="color: #3f7f7f;">tr</span><span style="color: #000000;"> </span><span style="color: #7f007f;">class</span><span style="color: #000000;">=</span>&#8220;wicketExtensionsWizardButtonBarRow&#8221;<span style="color: #008080;">&gt;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #2a00ff;"><span style="color: #000000;"> </span><span style="color: #008080;">&lt;</span><span style="color: #3f7f7f;">td</span><span style="color: #000000;"> </span><span style="color: #7f007f;">valign</span><span style="color: #000000;">=</span>&#8220;top&#8221;<span style="color: #000000;"> </span><span style="color: #7f007f;">class</span><span style="color: #000000;">=</span>&#8220;wicketExtensionsWizardButtonBar&#8221;<span style="color: #008080;">&gt;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #2a00ff;"><span style="color: #008080;">&lt;</span><span style="color: #3f7f7f;">span</span><span style="color: #000000;"> </span><span style="text-decoration: underline;">wicket:id</span><span style="color: #000000;">=</span>&#8220;buttons&#8221;<span style="color: #008080;">&gt;&lt;/</span><span style="color: #3f7f7f;">span</span><span style="color: #008080;">&gt;&lt;/</span><span style="color: #3f7f7f;">td</span><span style="color: #008080;">&gt;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;"><span style="color: #008080;">&lt;/</span><span style="color: #3f7f7f;">tr</span><span style="color: #008080;">&gt;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #3f7f7f;"><span style="color: #000000;"> </span><span style="color: #008080;">&lt;/</span>table<span style="color: #008080;">&gt;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;"><span style="color: #008080;">&lt;/</span><span style="color: #3f7f7f;">td</span><span style="color: #008080;">&gt;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #008080;"><span style="color: #000000;"> </span>&lt;/<span style="color: #3f7f7f;">tr</span>&gt;</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #3f7f7f;"><span style="color: #000000;"> </span><span style="color: #008080;">&lt;/</span>table<span style="color: #008080;">&gt;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #3f7f7f;"><span style="color: #008080;">&lt;/</span>form<span style="color: #008080;">&gt;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #3f7f7f;"><span style="color: #008080;">&lt;/</span>div<span style="color: #008080;">&gt;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #3f7f7f;"><span style="color: #008080;">&lt;/</span>wicket:panel<span style="color: #008080;">&gt;</span></p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #3f7f7f; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="color: #000000;"><strong> </strong></span></p>
<p><strong><br />
</strong></p>
<p><strong> </strong></td>
</tr>
</tbody>
</table>
<p>Now that you have the base system of Custom Wizardry in place lets look at some more components you can customize.</p>
<p><span style="color: #7f0055;"> </span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;"><strong>What&#8217;s in a Wizard Step?</strong></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;"><strong><span style="font-family: Georgia; font-weight: normal; font-size: 13px; line-height: 19px; ">Lets first look at our example step &#8220;YourWizardStep()&#8221;. In our case this is a panel that extends the WizardStep class with a nice form that collects &#8216;elementvalue&#8217; and displays two fields, &#8216;elementlabel&#8217; and &#8216;elementdescription&#8217;. Its important to stop for a second and understand that I am using the same class for *all* of my wizard steps. You are not bound by this, you can create a multitude of wizard steps and add them to your wizard as you see fit. Your Wizard can do things like branch steps based on the previous set, force users to stay on a step and you can even embed a full wizard within a step for some Wizard On Wizard action.</span></strong></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;"><strong><span style="font-family: Georgia; font-weight: normal; font-size: 13px; line-height: 19px; "> </span></strong></p>
<p><strong><br />
</strong></p>
<p><strong> </strong></p>
<table border="0">
<tbody>
<tr>
<td>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f0055; padding: 0px; margin: 0px; border: 0px initial initial;">package</span> wicket.quickstart;</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; min-height: 15px; padding: 0px; margin: 0px; border: 0px initial initial;">
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f0055; padding: 0px; margin: 0px; border: 0px initial initial;">import</span> wicket.extensions.wizard.WizardStep;</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f0055; padding: 0px; margin: 0px; border: 0px initial initial;">import</span> wicket.markup.html.basic.Label;</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f0055; padding: 0px; margin: 0px; border: 0px initial initial;">import</span> wicket.markup.html.form.TextField;</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f0055; padding: 0px; margin: 0px; border: 0px initial initial;">import</span> wicket.model.CompoundPropertyModel;</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f0055; padding: 0px; margin: 0px; border: 0px initial initial;">import</span> wicket.model.PropertyModel;</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; min-height: 15px; padding: 0px; margin: 0px; border: 0px initial initial;">
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f0055; padding: 0px; margin: 0px; border: 0px initial initial;">public</span> <span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f0055; padding: 0px; margin: 0px; border: 0px initial initial;">class</span> <span style="text-decoration: underline;">YourWizardStep</span> <span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f0055; padding: 0px; margin: 0px; border: 0px initial initial;">extends</span> WizardStep {</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> <span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f0055; padding: 0px; margin: 0px; border: 0px initial initial;">public</span> YourWizardStep(YourObject object1){</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> setModel(<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f0055; padding: 0px; margin: 0px; border: 0px initial initial;">new</span> CompoundPropertyModel(object1));</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> add(<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f0055; padding: 0px; margin: 0px; border: 0px initial initial;">new</span> Label(<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #2a00ff; padding: 0px; margin: 0px; border: 0px initial initial;">&#8220;elementlabel&#8221;</span>));</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> add(<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f0055; padding: 0px; margin: 0px; border: 0px initial initial;">new</span> Label(<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #2a00ff; padding: 0px; margin: 0px; border: 0px initial initial;">&#8220;elementdescription&#8221;</span>).setEscapeModelStrings(<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f0055; padding: 0px; margin: 0px; border: 0px initial initial;">false</span>));</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>TextField theField = <span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f0055; padding: 0px; margin: 0px; border: 0px initial initial;">new</span> TextField(<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #2a00ff; padding: 0px; margin: 0px; border: 0px initial initial;">&#8220;elementvalue&#8221;</span>,<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f0055; padding: 0px; margin: 0px; border: 0px initial initial;">new</span> PropertyModel(object1, <span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #2a00ff; padding: 0px; margin: 0px; border: 0px initial initial;">&#8220;elementvalue&#8221;</span>));</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> theField.setRequired(<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f0055; padding: 0px; margin: 0px; border: 0px initial initial;">true</span>);</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> add(theField);</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> }</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> <span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #3f7f5f; padding: 0px; margin: 0px; border: 0px initial initial;">/*</span></p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #3f7f5f; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> *  This is called when the next button i clicked,</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #3f7f5f; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> *  I assume you want to use your for for data gathering..</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #3f7f5f; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> *  Normally you&#8217;d save the object the the database</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #3f7f5f; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> *  Or just leave it in memory and save it in the Wizard onFinish()</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #3f7f5f; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> */</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> <span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f0055; padding: 0px; margin: 0px; border: 0px initial initial;">public</span> <span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f0055; padding: 0px; margin: 0px; border: 0px initial initial;">void</span> applyState(){</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> System.<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #0000c0; padding: 0px; margin: 0px; border: 0px initial initial;">err</span>.println(<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #2a00ff; padding: 0px; margin: 0px; border: 0px initial initial;">&#8220;Applying state!&#8221;</span>);</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #3f7f5f; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> setComplete(</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f0055; padding: 0px; margin: 0px; border: 0px initial initial;">true</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;">); </span>// Set this step as done, you should put custom logic here</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; white-space: pre; padding: 0px; margin: 0px; border: 0px initial initial;"> </span> }</p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;">}</p>
</td>
<td>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #7f007f; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&lt;</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #3f7f7f; padding: 0px; margin: 0px; border: 0px initial initial;">html</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span>xmlns:wicket<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&gt;</span></p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #3f7f7f; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&lt;</span>wicket:panel<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&gt;</span></p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #3f7f7f; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&lt;</span>fieldset<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&gt;</span></p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&lt;</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #3f7f7f; padding: 0px; margin: 0px; border: 0px initial initial;">legend</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&gt;</span></p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #2a00ff; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&lt;</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #3f7f7f; padding: 0px; margin: 0px; border: 0px initial initial;">span</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f007f; padding: 0px; margin: 0px; border: 0px initial initial;">wicket:id</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;">=</span>&#8220;elementlabel&#8221;<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&gt;&lt;/</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #3f7f7f; padding: 0px; margin: 0px; border: 0px initial initial;">span</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&gt;</span></p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&lt;/</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #3f7f7f; padding: 0px; margin: 0px; border: 0px initial initial;">legend</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&gt;</span></p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&lt;</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #3f7f7f; padding: 0px; margin: 0px; border: 0px initial initial;">span</span> <span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f007f; padding: 0px; margin: 0px; border: 0px initial initial;">wicket:id</span>=<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #2a00ff; padding: 0px; margin: 0px; border: 0px initial initial;">&#8220;elementdescription&#8221;</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&gt;</span>[Element Description]<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&lt;/</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #3f7f7f; padding: 0px; margin: 0px; border: 0px initial initial;">span</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&gt;</span></p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&lt;</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #3f7f7f; padding: 0px; margin: 0px; border: 0px initial initial;">br</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">/&gt;</span></p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #2a00ff; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&lt;</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #3f7f7f; padding: 0px; margin: 0px; border: 0px initial initial;">input</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f007f; padding: 0px; margin: 0px; border: 0px initial initial;">type</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;">=</span>text<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;"> </span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #7f007f; padding: 0px; margin: 0px; border: 0px initial initial;">wicket:id</span><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px; border: 0px initial initial;">=</span>&#8220;elementvalue&#8221;<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&gt;</span></p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #3f7f7f; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&lt;/</span>fieldset<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&gt;</span></p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #3f7f7f; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&lt;/</span>wicket:panel<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&gt;</span></p>
<p style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; text-align: justify; font: normal normal normal 11px/normal Monaco; color: #3f7f7f; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&lt;/</span>html<span style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; vertical-align: baseline; color: #008080; padding: 0px; margin: 0px; border: 0px initial initial;">&gt;</span></p>
</td>
</tr>
</tbody>
</table>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;"><span style="font-family: Georgia; color: #7f0055; font-size: small;"><span> </span></span></p>
<p><strong>Add an Overview</strong></p>
<p>The overview is just a bit of markup that is placed in the element named &#8216;overview&#8217;. Nominally this is used to give the user an &#8216;overview&#8217; of what this wizard is all about etc.  This is pretty vanilla but we are nothing if not complete.</p>
<table border="0">
<tbody>
<tr>
<td>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;"><span style="color: #7f0055;">package</span> wicket.quickstart;</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px;">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;"><span style="color: #7f0055;">import</span> wicket.markup.html.panel.Panel;</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px;">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #3f7f5f;">/*</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #3f7f5f;">* The Overview panel is displayed in the Overview <span style="text-decoration: underline;">div</span> automatically.</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #3f7f5f;">* It serves no special purposes other then for the default wizard</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #3f7f5f;">* to display common information across pages.</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #3f7f5f;">*/</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;"><span style="color: #7f0055;">public</span> <span style="color: #7f0055;">class</span> <span style="text-decoration: underline;">OverviewPanel</span> <span style="color: #7f0055;">extends</span> Panel {</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;"><span style="white-space: pre;"> </span><span style="color: #7f0055;">public</span> OverviewPanel(String id){</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;"><span style="white-space: pre;"> </span><span style="color: #7f0055;">super</span>(id);</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px;"><span style="white-space: pre;"> </span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;"><span style="white-space: pre;"> </span>}</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;">}</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px;">
</td>
<td>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #7f007f;"><span style="color: #008080;">&lt;</span><span style="color: #3f7f7f;">html</span><span style="color: #000000;"> </span>xmlns:wicket<span style="color: #008080;">&gt;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #3f7f7f;"><span style="color: #008080;">&lt;</span>wicket:panel<span style="color: #008080;">&gt;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;">Overview Panel</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #3f7f7f;"><span style="color: #008080;">&lt;/</span>wicket:panel<span style="color: #008080;">&gt;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #3f7f7f;"><span style="color: #008080;">&lt;/</span>html<span style="color: #008080;">&gt;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px;">
</td>
</tr>
</tbody>
</table>
<p><strong>Pressing My Buttons</strong></p>
<p>The other thing developers usually want to customize are the buttons. You may need to add custom classes in order to Prettify them, you might want to use images. Buttons always need some help. The Wizard by default places buttons in a wicket element  component with the id &#8216;buttons&#8217;. To create your own ButtonBar you just need to &#8230; wait for it .. extend Panel and make sure you have some specific markup in the page to indicate to wicket what element to attach its actions to.</p>
<table border="0">
<tbody>
<tr>
<td>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;"><span style="color: #7f0055;">package</span> wicket.quickstart;</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px;">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;"><span style="color: #7f0055;">import</span> wicket.extensions.wizard.CancelButton;</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;"><span style="color: #7f0055;">import</span> wicket.extensions.wizard.FinishButton;</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;"><span style="color: #7f0055;">import</span> wicket.extensions.wizard.NextButton;</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;"><span style="color: #7f0055;">import</span> wicket.extensions.wizard.PreviousButton;</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;"><span style="color: #7f0055;">import</span> wicket.extensions.wizard.Wizard;</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;"><span style="color: #7f0055;">import</span> wicket.markup.html.panel.Panel;</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px;">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;"><span style="color: #7f0055;">public</span> <span style="color: #7f0055;">class</span> <span style="text-decoration: underline;">ButtonBarPanel</span> <span style="color: #7f0055;">extends</span> Panel {</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;"><span style="white-space: pre;"> </span><span style="color: #7f0055;">public</span> ButtonBarPanel(String id, Wizard wizard){</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;"><span style="white-space: pre;"> </span><span style="color: #7f0055;">super</span>(id);</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;">add(<span style="color: #7f0055;">new</span> PreviousButton(<span style="color: #2a00ff;">&#8220;previous&#8221;</span>, wizard));</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;">add(<span style="color: #7f0055;">new</span> NextButton(<span style="color: #2a00ff;">&#8220;next&#8221;</span>, wizard));</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;">add(<span style="color: #7f0055;">new</span> YourLastButton(<span style="color: #2a00ff;">&#8220;last&#8221;</span>, wizard));</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;">add(<span style="color: #7f0055;">new</span> CancelButton(<span style="color: #2a00ff;">&#8220;cancel&#8221;</span>, wizard));</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;">add(<span style="color: #7f0055;">new</span> FinishButton(<span style="color: #2a00ff;">&#8220;finish&#8221;</span>, wizard));</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;"><span style="white-space: pre;"> </span>}</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;">}</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px;">
</td>
<td>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #3f7f7f;"><span style="text-decoration: underline;">&lt;</span><span style="text-decoration: underline;">wicket:panel</span><span style="text-decoration: underline;">&gt;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px;">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #3f7f7f;"><span style="color: #008080;">&lt;</span>div<span style="color: #008080;">&gt;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #2a00ff;"><span style="color: #000000;"> </span><span style="color: #008080;">&lt;</span><span style="color: #3f7f7f;">input</span><span style="color: #000000;"> </span><span style="text-decoration: underline;">wicket:id</span><span style="color: #000000;">=</span>&#8220;previous&#8221;<span style="color: #000000;"> </span><span style="color: #7f007f;">type</span><span style="color: #000000;">=</span>&#8220;submit&#8221;<span style="color: #000000;"> </span><span style="color: #7f007f;">value</span><span style="color: #000000;">=</span>&#8220;previous&#8221;<span style="color: #000000;"> </span><span style="color: #008080;">/&gt;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #2a00ff;"><span style="color: #000000;"> </span><span style="color: #008080;">&lt;</span><span style="color: #3f7f7f;">input</span><span style="color: #000000;"> </span><span style="text-decoration: underline;">wicket:id</span><span style="color: #000000;">=</span>&#8220;next&#8221;<span style="color: #000000;"> </span><span style="color: #7f007f;">type</span><span style="color: #000000;">=</span>&#8220;submit&#8221;<span style="color: #000000;"> </span><span style="color: #7f007f;">value</span><span style="color: #000000;">=</span>&#8220;next&#8221;<span style="color: #000000;"> </span><span style="color: #008080;">/&gt;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #2a00ff;"><span style="color: #000000;"> </span><span style="color: #008080;">&lt;</span><span style="color: #3f7f7f;">input</span><span style="color: #000000;"> </span><span style="text-decoration: underline;">wicket:id</span><span style="color: #000000;">=</span>&#8220;last&#8221;<span style="color: #000000;"> </span><span style="color: #7f007f;">type</span><span style="color: #000000;">=</span>&#8220;submit&#8221;<span style="color: #000000;"> </span><span style="color: #7f007f;">value</span><span style="color: #000000;">=</span>&#8220;last&#8221;<span style="color: #000000;"> </span><span style="color: #008080;">/&gt;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #2a00ff;"><span style="color: #000000;"> </span><span style="color: #008080;">&lt;</span><span style="color: #3f7f7f;">input</span><span style="color: #000000;"> </span><span style="text-decoration: underline;">wicket:id</span><span style="color: #000000;">=</span>&#8220;cancel&#8221;<span style="color: #000000;"> </span><span style="color: #7f007f;">type</span><span style="color: #000000;">=</span>&#8220;submit&#8221;<span style="color: #000000;"> </span><span style="color: #7f007f;">value</span><span style="color: #000000;">=</span>&#8220;cancel&#8221;<span style="color: #000000;"> </span><span style="color: #008080;">/&gt;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #2a00ff;"><span style="color: #000000;"> </span><span style="color: #008080;">&lt;</span><span style="color: #3f7f7f;">input</span><span style="color: #000000;"> </span><span style="text-decoration: underline;">wicket:id</span><span style="color: #000000;">=</span>&#8220;finish&#8221;<span style="color: #000000;"> </span><span style="color: #7f007f;">type</span><span style="color: #000000;">=</span>&#8220;submit&#8221;<span style="color: #000000;"> </span><span style="color: #7f007f;">value</span><span style="color: #000000;">=</span>&#8220;finish&#8221;<span style="color: #000000;"> </span><span style="color: #008080;">/&gt;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #3f7f7f;"><span style="color: #008080;">&lt;/</span>div<span style="color: #008080;">&gt;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px;">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #3f7f7f;"><span style="color: #008080;">&lt;/</span>wicket:panel<span style="color: #008080;">&gt;</span></p>
<div style="text-align: justify;"><span style="font-family: Monaco; color: #008080; font-size: small;"><span style="line-height: normal;"></p>
<p></span></span></div>
</td>
</tr>
</tbody>
</table>
<p>Easy! However if you look closely you will notice that One Of These Buttons is doing his own thing. We are attaching a button called &#8216;YourLastButton&#8217; to the wicket element &#8216;last&#8217;. This is a custom button implementation as an example of what can be done. Note that you are not controlling the view of a button, just the controller. You&#8217;d do this if you wanted to add some customer behavior to a button or override one of the methods like isEnabled(). The most general case is to add an update workflow to the onClick() that updates the model somehow.</p>
<table border="0">
<tbody>
<tr>
<td>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2353px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">jfdpackage wicket.quickstart;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2353px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">import wicket.extensions.wizard.IWizard;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2353px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">import wicket.extensions.wizard.IWizardModel;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2353px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">import wicket.extensions.wizard.WizardButton;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2353px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">public class YourLastButton extends WizardButton</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2353px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">{</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2353px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>private static final long serialVersionUID = 1L;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2353px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>public YourLastButton(String id, IWizard wizard)</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2353px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>{</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2353px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>super(id, wizard, &#8220;org.apache.wicket.extensions.wizard.last&#8221;);</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2353px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>}</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2353px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>public final boolean isEnabled()</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2353px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>{</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2353px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>return getWizardModel().isLastAvailable();</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2353px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>}</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2353px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>public final boolean isVisible()</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2353px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>{</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2353px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>return getWizardModel().isLastVisible();</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2353px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>}</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2353px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>public final void onClick()</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2353px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>{</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2353px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>IWizardModel wizardModel = getWizardModel();</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2353px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>wizardModel.getActiveStep().applyState();</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2353px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>wizardModel.lastStep();</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2353px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>}</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2353px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">}</div>
<p><span style="font-family: Monaco; font-size: 11px;"><span style="color: #7f0055;">package</span> wicket.quickstart;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px;">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;"><span style="color: #7f0055;">import</span> wicket.extensions.wizard.IWizard;</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;"><span style="color: #7f0055;">import</span> wicket.extensions.wizard.IWizardModel;</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;"><span style="color: #7f0055;">import</span> wicket.extensions.wizard.WizardButton;</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px;">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;"><span style="color: #7f0055;">public</span> <span style="color: #7f0055;">class</span> YourLastButton <span style="color: #7f0055;">extends</span> WizardButton {</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #7f0055;"><span style="color: #000000;"><span style="white-space: pre;"> </span></span>private<span style="color: #000000;"> </span>static<span style="color: #000000;"> </span>final<span style="color: #000000;"> </span>long<span style="color: #000000;"> </span><span style="color: #0000c0;">serialVersionUID</span><span style="color: #000000;"> = 1L;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px;">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;"><span style="white-space: pre;"> </span><span style="color: #7f0055;">public</span> YourLastButton(String id, IWizard wizard) {</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #2a00ff;"><span style="color: #000000;"><span style="white-space: pre;"> </span></span><span style="color: #7f0055;">super</span><span style="color: #000000;">(id, wizard, </span>&#8220;org.apache.wicket.extensions.wizard.last&#8221;<span style="color: #000000;">);</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;"><span style="white-space: pre;"> </span>}</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px;">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #7f0055;"><span style="color: #000000;"><span style="white-space: pre;"> </span></span>public<span style="color: #000000;"> </span>final<span style="color: #000000;"> </span>boolean<span style="color: #000000;"> isEnabled() {</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;"><span style="white-space: pre;"> </span><span style="color: #7f0055;">return</span> getWizardModel().isLastAvailable();</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;"><span style="white-space: pre;"> </span>}</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px;">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #7f0055;"><span style="color: #000000;"><span style="white-space: pre;"> </span></span>public<span style="color: #000000;"> </span>final<span style="color: #000000;"> </span>boolean<span style="color: #000000;"> isVisible() {</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;"><span style="white-space: pre;"> </span><span style="color: #7f0055;">return</span> getWizardModel().isLastVisible();</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;"><span style="white-space: pre;"> </span>}</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px;">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;"><span style="white-space: pre;"> </span><span style="color: #7f0055;">public</span> <span style="color: #7f0055;">final</span> <span style="color: #7f0055;">void</span> onClick() {</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;"><span style="white-space: pre;"> </span>IWizardModel wizardModel = getWizardModel();</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;"><span style="white-space: pre;"> </span>wizardModel.getActiveStep().applyState();</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;"><span style="white-space: pre;"> </span>wizardModel.lastStep();</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;"><span style="white-space: pre;"> </span>}</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;">}</p>
<div><span style="font-family: Monaco; font-size: small;"><span></p>
<p></span></span></div>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></td>
<td></td>
</tr>
</tbody>
</table>
<p><strong>Summary</strong></p>
<p>This is a basic introduction on how to implement your own Wizard markup in place of the mark-up that the wizard puts out. I had to get through this on a project because throwing the default table based layout into my pages was causing some serious issues. By creating my own extended Wizard classes I was able to totally customize the look/feel of the wizard and ensure pixel perfect design. In my case I needed to use <a title="NiceForms" href="http://www.emblematiq.com/projects/niceforms/" target="_blank">NiceForms</a> which I highly recommend. Particularly since you can now Customize Your Wicket Wizard..</p>
<p>You can do more with Wizards, much more. This tutorial is not meant to be comprehensive. Check out the <a title="WizardAPI" href="http://www.wicketframework.org/wicket-extensions/apidocs/wicket/extensions/wizard/package-summary.html">Wizard API</a> for a total rundown on what can be sub-classed. Take a look at the DynamicWizardStep and other classes, they really open the power of the Wizard. Also refer to the source for the base implementations. Open Source is an invaluable resource so Read The Source. The Wizard code is short and easy to understand since it uses the common Wicket constructs (panels etc). Don&#8217;t be intimidated.</p>
<p>Now, Go Forth And Wizardify.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.siberian.org/2009/06/24/customizing-wicket-wizard-markup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Latest GSpace doesn&#039;t really require GMail.. (GMail as an anonymous File Relay)</title>
		<link>http://www.siberian.org/2006/10/09/latest-gspace-doesnt-really-require-gmail-gmail-as-an-anonymous-file-relay/</link>
		<comments>http://www.siberian.org/2006/10/09/latest-gspace-doesnt-really-require-gmail-gmail-as-an-anonymous-file-relay/#comments</comments>
		<pubDate>Mon, 09 Oct 2006 11:48:41 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Software Projects]]></category>

		<guid isPermaLink="false">http://www.siberian.org/2006/10/09/latest-gspace-doesnt-really-require-gmail-gmail-as-an-anonymous-file-relay/</guid>
		<description><![CDATA[This is probably very obvious but I was installing the latest version of Gmail Space today &#8211; 0.5.1 &#8211; ( a FireFox extension for accessing GMail as a filestore in the browser, get it here: http://www.rjonna.com/ext/gspace.php ) and came across some interesting and most likely unintended functionality.
You can use your own arbitrary email address as [...]]]></description>
			<content:encoded><![CDATA[<p>This is probably very obvious but I was installing the latest version of Gmail Space today &#8211; 0.5.1 &#8211; ( a FireFox extension for accessing GMail as a filestore in the browser, get it here: <a href="http://www.rjonna.com/ext/gspace.php">http://www.rjonna.com/ext/gspace.php</a> ) and came across some interesting and most likely unintended functionality.</p>
<p><strong>You can use your own arbitrary email address as GSpace storage.</strong> This latest release (and possibly others, have not tested) seems to communicate with GMail in a way that relays the data via the GMail SMTP servers and back and forth to your personal server. It appears actually to proxy the login over to the specified server, <strong>without any valid gmail credentials..</strong></p>
<p>Pretty simple stuff actually, when you configure it, instead of giving it your gmail address simply give it your personal email address and password. GSpace communicates with GMail which then relays the mail to your personal account. When retrieving it does the same and somehow pulls the content back over. <strong>Note that the connection to the 3rd party server comes from GMail, <em>not </em>the connecting client.</strong></p>
<p>My GMail account stays empty (since I never gave it my account id) but my personal email account gets the files as per the screencaps. The connection to the 3rd part mailserver comes from GOOGLE and not from my desktop PC.</p>
<p>Last oddity, if I delete the file from GSpace it does NOT remove it from my server but it is unavailable in GSpace (it must be keeping an internal counter?). If I delete from my email it STILL shows in GSpace(It seems to be caching the files locally).</p>
<p>Some security implications of this would be things like large scale piracy. Someone sets up an SMTP server, distributes the file drop information (login info for an email account on the mail server) and that data is transferred anonymously via GMail with no audit trail. Google can&#8217;t look for it since the data is NOT ON THEIR SERVER but thousands of people around the world can easily access the pirated data and be anonymized at the Google GMail SMTP gateway.</p>
<p>Anyone know why Google would be relaying data like this? Seems ripe for abuse&#8230; I may be missing something obvious but it feels wrong to me.</p>
<p>Some photos and logfiles</p>
<hr />
<a HREF="http://www.siberian.org/pictures/main.php?g2_view=core.DownloadItem&#038;g2_itemId=1711&#038;g2_serialNumber=2"><br />
<img src="http://www.siberian.org/pictures/main.php?g2_view=core.DownloadItem&#038;g2_itemId=1710&#038;g2_serialNumber=2" align=left alt="Webmail Contents" title="WebMail Contents" /><br />This is the contents of my PERSONAL email account (webmail interface)</a></p>
<p><br CLEAR="all"></p>
<p><a HREF="http://www.siberian.org/pictures/main.php?g2_view=core.DownloadItem&#038;g2_itemId=1725&#038;g2_serialNumber=2"><br />
<img src="http://www.siberian.org/pictures/main.php?g2_view=core.DownloadItem&#038;g2_itemId=1724&#038;g2_serialNumber=2" align=left alt="Thunderbird Contents" title="Thunderbird Contents" /><br />GSpace files in Thunderbird via IMAP</a> <br/></p>
<p><br CLEAR="all"><br />
<a HREF="http://www.siberian.org/pictures/main.php?g2_view=core.DownloadItem&#038;g2_itemId=1712&#038;g2_serialNumber=1"><br />
<img src="http://www.siberian.org/pictures/main.php?g2_view=core.DownloadItem&#038;g2_itemId=1713&#038;g2_serialNumber=2" align=left alt="Webmail Contents" title="WebMail Contents" /><br />Capture of the config screen for GSpace, note that its my PERSONAL account login information.</a></p>
<p><br CLEAR="all"></p>
<p><a HREF="http://www.siberian.org/pictures/main.php?g2_view=core.DownloadItem&#038;g2_itemId=1728&#038;g2_serialNumber=2"><img src="http://www.siberian.org/pictures/main.php?g2_view=core.DownloadItem&#038;g2_itemId=1728&#038;g2_serialNumber=2" align=left width=300 alt="GSpace Contents" title="GSpace Contents" /><br />Screen capture of the contents of GSpace.</a></p>
<p><br CLEAR="all"></p>
<p>Here is my mailserver log. Note that the connection is coming FROM Gmail, not from my office ISP. My personal identity is not compromised in this workflow from a Gmail/GSpace perspective, I am totally anonymous to the 3rd party mailserver(my own in this case).</p>
<hr />
<code><br />
# host 64.233.166.178<br />
178.166.233.64.in-addr.arpa domain name pointer py-out-1112.google.com.<br />
</code></p>
<hr />
<code> 9 17:35:14.00:Info:218318848: Adding (X-IP-stats: Incoming Last 0, First 244, in=51, out=0, spam=0)<br />
17:35:14.00:Info:218318848: Adding (X-External-IP: <strong>64.233.166.178</strong>)<br />
17:35:14.00:Info:218318848: check friends<br />
17:35:14.00:Info:218318848: friend: ok<br />
17:35:14.00:Info:218318848: process exceptions<br />
17:35:14.00:Info:218318848: friend: processed<br />
17:35:14.00:Info:218318848: process centipaid<br />
17:35:14.00:Info:218318848: Rename<br />
17:35:14.00:Info:218318848: Hashed maildir path is (xxxx)<br />
17:35:14.00:Info:218318848: UTOTAL: NEW 0xf53b5d0 nref=1 n=0  (global=231)<br />
17:35:14.00:Info:218318848: fld_lock: (INBOX) msg.c:6995<br />
17:35:14.00:Info:218318848: fld_lock_user siberian.org#siberian#_INBOX<br />
17:35:14.00:Info:218318848: fld_slib_unlock_user now (siberian.org#siberian#_INBOX)<br />
17:35:14.00:Info:218318848: fld_unlock_user siberian.org#siberian#_INBOX<br />
17:35:14.00:Info:218318848: slib_unlock n=0 f=0<br />
17:35:14.00:Info:218318848: UTOTAL: FREE 0xf53b5d0 nref=0 n=0  (global=231)<br />
17:35:14.00:Info:218318848: msg: [4629097] Stored: 64.233.166.178 <479ffcd60610091739l4f8a9000y74058311dd1d29f7@mail.gmail.com> "Stored locally"<br />
17:35:14.00:Info:218318848: msg: deliver locals done 1 Deliver locals<br />
17:35:14.00:Info:218318848: msg: dsn send (delivered)</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.siberian.org/2006/10/09/latest-gspace-doesnt-really-require-gmail-gmail-as-an-anonymous-file-relay/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Matrix Switcher Control Appliance (In progress)</title>
		<link>http://www.siberian.org/2006/07/05/matrix-switcher-control-appliance-in-progress/</link>
		<comments>http://www.siberian.org/2006/07/05/matrix-switcher-control-appliance-in-progress/#comments</comments>
		<pubDate>Wed, 05 Jul 2006 19:18:45 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Embedded IR Control System]]></category>
		<category><![CDATA[Software Projects]]></category>

		<guid isPermaLink="false">http://www.avdistro.com/2006/07/05/matrix-switcher-control-appliance-in-progress/</guid>
		<description><![CDATA[EDITING IN PROGRESS
STARTUPDATE (Sept 8.2006)
Some interesting things have happened.
1) A LIRC module was released for Ruby and this will let me accept the raw codes and get rid of the totalitarian lird.conf file! Hooray! Now I can allow people to, via a RIA app (Flex) remap arbitrary IR codes to switcher activities!
2) Ruby actually works [...]]]></description>
			<content:encoded><![CDATA[<p><strong>EDITING IN PROGRESS</strong></p>
<p><strong>STARTUPDATE (Sept 8.2006)</strong><br />
Some interesting things have happened.</p>
<p>1) A LIRC module was released for Ruby and this will let me accept the raw codes and get rid of the totalitarian lird.conf file! Hooray! Now I can allow people to, via a RIA app (Flex) remap arbitrary IR codes to switcher activities!<br />
2) Ruby actually works on my device! Having trouble packaging it up to return to the SH4 community but I&#8217;ll work on that more later.<br />
3) I learned how to build RIA apps in Adobe Flex.</p>
<p>This means some progress is being made, just slowly. Lots going on as I put the finishing touches on the huge home remodel I did All On My Own With Help From My Dad.</p>
<p>oh, and now I don&#8217;t have to code in C. All Hail Ruby (this month at least).</p>
<p><strong>ENDUPDATE</strong></p>
<p>As my 2 regular readers know, I am deep into my Whole House A/V Distribution installation. Overall the results have been fantastic but there is one missing component, its just not turnkey enough. If anyone else had to maintain it they&#8217;d rip it off the wall and plug all the RG-6 into a splitter from the local Cable Co.</p>
<p>Thats not the goal here, the goal is to build a Distribution system to stand the test of time, one that Ozymandias himself would be proud of. Wait. Bad example. So, the latest quest has been for a small appliance that can act as the switching system.<span id="more-14"></span></p>
<p>There are any number of these out there but they are all limited in one way or another, until now that is! JJPlus (<a title="http://www.linux.jjplus.com/" href="http://www.linux.jjplus.com/"><u><font color="#0000ff">http://www.linux.jjplus.com/</font></u></a>) recently released this cute little box that has NAND RAM onboard, accepts USB storage external or internal and has multiple network ports AS WELL AS a serial port! That makes it perfect for my scheme. Should be easy enough right?</p>
<p>Not really, see, since I haven&#8217;t had hardware to work on I&#8217;ve been playing &#8216;product manager&#8217; in my head and thinking up all sorts of crazy features. The goal is to make this thing usable when I am no longer the owner of it. Towards that, here is my current feature list:</p>
<h2>Dynamic Configuration of IR codes</h2>
<ul>
<li>Accessed via a web-based wizard as well as a Java SWT app</li>
<li>Allows for configuration of switch (add/remove inputs/outputs) and assignment of IR codes via learning</li>
</ul>
<p><strong>PROBLEM</strong> &#8211; LIRC is great but its typical &#8216;Linux&#8217; stuff meaning &#8216;the people who use it use it one way&#8217;, I need LIRC with an sql back-end and no .conf file. I don&#8217;t know much about it yet, it probably does this already since lircd can spit out raw codes on socket.</p>
<p><strong>PROBLEM </strong>- JJPlus box is very low resource. Thats ok, I&#8217;ll write my CGI&#8217;s in C and use really lite XML.</p>
<h2>Plug-in architecture for switching languages</h2>
<ul>
<li>Each switch manufacturer uses a different protocol, although they are all text based. We&#8217;ll need to be able to drop new protocols in whenever required.</li>
<li>XML communications to Java App</li>
</ul>
<p>Obvious, buy why a Java app? See next point ZeroConf implementation to support Java app configuration &#8211; This is the key ingredient. Launch the java app, it finds the switch controller and your off to the races. So thats the list today. I think its a nice, doable, medium term project that I can get cracking on. I haven&#8217;t coded in C in -years- (who codes in C now? No one I know but then again I hang out with perl nerds and java snobs). It should be a blast and I&#8217;ve been wanting to build a -useful- embedded system for quite awhile. <em>DISCLAIMER : I Know That There Are More C Coders Out There Then Sand On A Beach. It Was A Sarcastic Remark. Some of My Best Friends Code In C, regularly!</em> From a user perspective its great, plug power, ethernet and null modem to the box, power it up, launch the java tool, add your inputs and outputs and for each combination assign IR controls. Viola! Truly distributed media switching that was dynamically configured by someone who could care less what an autopatch is, why its connected with a null modem connector and how levels work. PS &#8211; Why do I care that my HTPC handles it today? Well, my HTPC tends to CRASH or be REBOOTED BY MICROSOFT on a regular basis. Thats cool, they are protecting me from Evil, I know this but it makes things get screwy with Girder and the IR sub-systems when it happens to often. Its also lame to have this big 3ghz P4 system required to issue 6 character codes over the serial port. Its also just way cooler to have a little 1&#8243;x4&#8243;x8&#8243; solid-state box doing all the magic, thats what my inner nerd tells me. Finally, I am on a quest. For the last 18 months everyone I know tells me I am crazy, that my system is to complicated (even though my wife can use it with ease) or that its to expensive. This is the final piece of the puzzle to complete the vision and prove, once and for all, that I have built the Budget A/V Switching System To End All Budget A/V Switching Systems. Thats not to hard, its the only one going. Turns out A/V Switching systems are not that popular..</p>
]]></content:encoded>
			<wfw:commentRss>http://www.siberian.org/2006/07/05/matrix-switcher-control-appliance-in-progress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Webmin Virtual Host Manager</title>
		<link>http://www.siberian.org/2006/07/05/webmin-virtual-host-manager/</link>
		<comments>http://www.siberian.org/2006/07/05/webmin-virtual-host-manager/#comments</comments>
		<pubDate>Wed, 05 Jul 2006 19:18:02 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Software Projects]]></category>

		<guid isPermaLink="false">http://www.avdistro.com/2006/07/05/webmin-virtual-host-manager/</guid>
		<description><![CDATA[**UPDATE**
Dead project, leaving this be for historical purposes. Webmin has perfectly good vhost capabilities now.
Update
 Now requires the perl module YAML. Why? I moved to a new host and the Storable data was not byte compatible. YAML is a nice way to represent data structures in a portable, parsable and human readable way. It was [...]]]></description>
			<content:encoded><![CDATA[<p><strong>**UPDATE**</strong></p>
<p><strong>Dead project, leaving this be for historical purposes. Webmin has perfectly good vhost capabilities now.</strong></p>
<p><strong>Update</strong><br />
 Now requires the perl module YAML. Why? I moved to a new host and the Storable data was not byte compatible. YAML is a nice way to represent data structures in a portable, parsable and human readable way. It was a 4 line change and it made my life easier. It&#8217;ll make your easier as well. Ok, maybe not, but it works better this way, trust me:)</p>
<p><a href="/software/vhost-1.1.wbm">Download the 1.1 Version that requires YAML</a></p>
<p><br class="spacer_" /></p>
<p>
 <a href="/software/vhost-1.0.wbm">Download the 1.0 Version that requires Storable</a></p>
<hr />
<p><br class="spacer_" /></p>
<p>There are about 4,353.32 Virtual Host tools for webmin so of course I had to write my own! What does mine do differently?</p>
<ul>
<li>It uses Apache mod_vhost_alias to simplify deployment and management of sites.</li>
<li>It automatically gives each domain a restricted FTP account using Pure FTP</li>
<li>It supports unlimited alias per virtual host.</li>
<li>Everything is managed via the Webmin interface</li>
</ul>
<p>I use this to support ~100 virtual sites on a server and it has really freed up my time in a significant way. Mod_Vhost_Alias is highly recommended, its a nice way to have virtual sites created by simply creating a directory. When apache gets the request it checks for a directory using the hostname (<em>www.crackcocaine.com</em> for example). If it finds it then a vhost is dynamically created with that as the DocumentRoot.</p>
<p>Currently tested on Linux and FreeBSD with no issues, its just perl after all!</p>
<p>Read on for details</p>
<p><span id="more-13"></span></p>
<p><!--adsense--></p>
<p>All you need to do to get this to work is :</p>
<ul>
<li>Install Pure FTP and configure it for Virtual Users (follow Pure FTP docs)</li>
<li>Install Apache with mod_vhost_alias (follow Apache Docs)</li>
<li>Create a dynamic vhost that looks like this (change items in bold). Note, you can add whatever options you wish enabled for the Vhost in this config file. Things like server-side includes etc.</li>
</ul>
<pre class="code">UseCanonicalName Off VirtualDocumentRoot <strong>/path/to/your/vhosts</strong>/%0
LogFormat "%V %h %l %u %t \"%r\" %&gt;s %b \"%{Referer}i\"" vhost_common
CustomLog <strong>/path/to/your/weblogs</strong>/VHOST_ACCESS vhost_common
ErrorLog <strong>/path/to/your/weblogs</strong>/VHOST_ERROR   /path/to/your/vhosts/*&gt;
AllowOverride All
Options All</pre>
<ul>
<li>Load the vhost.wbm into webmin. It will appear within &#8216;Others&#8217;, you can move it where you want it.</li>
<li>Configure the module by telling it
<ul>
<li>Where to store its virtual host database (text file writable by webserver)</li>
<li>What the webserver username is (for directory creation)</li>
<li>Where the PureFTP user file is (for ftp login updates)</li>
<li>The mod_vhost root from the apache config file (to create the new directories)</li>
</ul>
</li>
<li>Voila! Thats it, create a virtualhost and try it out. You&#8217;ll need to map your DNS entries to the IP of your vhost of course <img src='http://www.siberian.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
</ul>
<p>You can install it directly from webmin from from this link : <a title="http://www.siberian.org/software/vhost.wbm" href="http://www.siberian.org/software/vhost.wbm"><span style="text-decoration: underline;"><span style="color: #0000ff;">Virtual Host Manager</span></span></a><br />
 Any questions? Drop me an email or make a comment. Let me know if you use it, I am always curious!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.siberian.org/2006/07/05/webmin-virtual-host-manager/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
