<?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>VolkomenJuist.nl</title>
	<atom:link href="http://www.volkomenjuist.nl/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.volkomenjuist.nl/blog</link>
	<description>Juist! Volkomen Juist!</description>
	<lastBuildDate>Tue, 21 Feb 2012 07:41:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Wicket and CKEditor in Internet Explorer</title>
		<link>http://www.volkomenjuist.nl/blog/2012/02/20/wicket-and-ckeditor-in-internet-explorer/</link>
		<comments>http://www.volkomenjuist.nl/blog/2012/02/20/wicket-and-ckeditor-in-internet-explorer/#comments</comments>
		<pubDate>Mon, 20 Feb 2012 16:10:50 +0000</pubDate>
		<dc:creator>Stefanovich</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Wicket]]></category>
		<category><![CDATA[ckeditor]]></category>
		<category><![CDATA[ie]]></category>
		<category><![CDATA[internet explorer]]></category>

		<guid isPermaLink="false">http://www.volkomenjuist.nl/blog/?p=390</guid>
		<description><![CDATA[CKEditor was working properly in Internet Explorer while developing our Wicket application. After deployment to our demo server it wasn&#8217;t working anymore. We had no issues with FireFox/Chrome or Safari. First we thought it had to do with some timing issues but after a lot of debugging we found out the issue (and of course [...]]]></description>
			<content:encoded><![CDATA[<p>CKEditor was working properly in Internet Explorer while developing our Wicket application. After deployment to our demo server it wasn&#8217;t working anymore. We had no issues with FireFox/Chrome or Safari. First we thought it had to do with some timing issues but after a lot of debugging we found out the issue (and of course the solution <img src='http://www.volkomenjuist.nl/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ).</p>
<p><span id="more-390"></span></p>
<p>The problem was that CKEditor determines via a &#8216;conditional compilation&#8217; whether the current browser is Internet Explorer or another one.<br />
The CKEditor code (found in env.js) looked like this:</p>
<pre class="brush: jscript; title: ; notranslate">
ie		: /*@cc_on!@*/false
</pre>
<p>In our case, when we used IE, this flag was always false which was incorrect. It should have been set to true via the &#8216;conditional compilation&#8217;: @cc_on! </p>
<p>By default (Deployment mode) Wicket sets the javascript compressor to the DefaultJavascriptCompressor. This compressor is responsible for stripping all comments and whitespaces (in Development mode it is set to null).<br />
This is done in the Application class:</p>
<pre class="brush: java; title: ; notranslate">
getResourceSettings().setJavascriptCompressor(new DefaultJavascriptCompressor());
</pre>
<p>While developing we have set Wicket in debug mode. On our demo server this is turned off ofcourse. This means that in debug mode the javascript files were not compressed and not stripped from the comments and whitespaces. In deployment mode it was compressed and stripped. </p>
<p>Wicket stripped out the conditional compilation (!!) to:</p>
<pre class="brush: jscript; title: ; notranslate">
ie		: false
</pre>
<p>This was the reason why it wasn&#8217;t working in Internet Explorer.</p>
<p>To fix this don&#8217;t use the JavascriptResourceReference to add the ckeditor.js file but use a normal ResourceReference instead. The ckeditor.js is already compressed out-of-the-box.</p>
<p>Note: We used CKEditor 3.6.2 in combination with Wicket 1.4.18<br />
Note 2: More information about &#8216;conditional compilation&#8217; can be found <a href="http://www.volkomenjuist.nl/blog/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db25kaXRpb25hbCU1RmNvbW1lbnQ=" target=\"_blank\">here</a>.</p>
 <img src="http://www.volkomenjuist.nl/blog/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=390" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.volkomenjuist.nl/blog/2012/02/20/wicket-and-ckeditor-in-internet-explorer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSX: Browser is slowing down after updating to 10.6.8</title>
		<link>http://www.volkomenjuist.nl/blog/2011/07/18/osx-browser-is-slowing-down-after-updating-to-10-6-8/</link>
		<comments>http://www.volkomenjuist.nl/blog/2011/07/18/osx-browser-is-slowing-down-after-updating-to-10-6-8/#comments</comments>
		<pubDate>Mon, 18 Jul 2011 19:45:06 +0000</pubDate>
		<dc:creator>Stefanovich</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[OSX]]></category>

		<guid isPermaLink="false">http://www.volkomenjuist.nl/blog/?p=382</guid>
		<description><![CDATA[After updating to Mac OSX 10.6.8 the browser was responding very slow. It took up to 30-35 seconds to load a page (doesn&#8217;t matter which one). To solve this problem you can add a DNS. Click on Continue reading to see the solution. Open your network preferences, select Advanced and select the tab DNS. Add [...]]]></description>
			<content:encoded><![CDATA[<p>After updating to Mac OSX 10.6.8 the browser was responding very slow. It took up to 30-35 seconds to load a page (doesn&#8217;t matter which one). To solve this problem you can add a DNS. </p>
<p>Click on Continue reading to see the solution.</p>
<p><span id="more-382"></span><br />
Open your network preferences, select Advanced and select the tab DNS. Add the following two addresses: 208.67.220.220 and 208.67.222.222 (OpenDNS). </p>
 <img src="http://www.volkomenjuist.nl/blog/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=382" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.volkomenjuist.nl/blog/2011/07/18/osx-browser-is-slowing-down-after-updating-to-10-6-8/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>MongoDB &#8211; Usefull PHP queries</title>
		<link>http://www.volkomenjuist.nl/blog/2011/05/10/mongodb-php-quiries/</link>
		<comments>http://www.volkomenjuist.nl/blog/2011/05/10/mongodb-php-quiries/#comments</comments>
		<pubDate>Tue, 10 May 2011 19:59:20 +0000</pubDate>
		<dc:creator>Stefanovich</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Mongo]]></category>
		<category><![CDATA[MongoDB]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.volkomenjuist.nl/blog/?p=368</guid>
		<description><![CDATA[Currently I am playing around with MongoDB. Most of the topics regarding MongoDB are quite straight forward. However, sometimes I needed more complex stuff and was not able to find it or it was not documented well. So in this topic I&#8217;ll add usefull queries which helped me while developing my application. Decrease a field [...]]]></description>
			<content:encoded><![CDATA[<p>Currently I am playing around with MongoDB. Most of the topics regarding MongoDB are quite straight forward. However, sometimes I needed more complex stuff and was not able to find it or it was not documented well. So in this topic I&#8217;ll add usefull queries which helped me while developing my application.</p>
<h3><span id="more-368"></span><br />
Decrease a field</h3>
<pre class="brush: php; title: ; notranslate">
$myCollection-&gt;update(array('_id' =&gt; new MongoId($myId)),
array('$inc' =&gt; array('item.inStock' =&gt; -1)
));
</pre>
<p><em>Note: the negative value (-1) of the &#8216;item.inStock&#8217; field.</em></p>
<h3>Increment / decrease multiple fields at once</h3>
<pre class="brush: php; title: ; notranslate">
$myCollection-&gt;update(array('_id' =&gt; new MongoId($myId)),
array('$inc' =&gt; array(
'item.inStock' =&gt; -1,
'item.sold' =&gt; 1)
));
</pre>
<h3>Return specific fields</h3>
<pre class="brush: php; title: ; notranslate">
$myCollection-&gt;findOne(array('_id' =&gt; new MongoId($id)), array('colors'));
</pre>
<p>This will get one item from the database with the given $id. The result will be the unique mongoId <strong>and</strong> the &#8216;colors&#8217; field. So not <strong>only</strong> the expected &#8216;colors&#8217; field. Other fields are not returned.</p>
<h3>&#8216;Not in&#8217;</h3>
<pre class="brush: php; title: ; notranslate">
$query = array(
			&quot;_id&quot; =&gt; array('$nin' =&gt; $ninArray),
			&quot;item.inStock&quot; =&gt; array('$gt' =&gt; 0)
		);
$offerCollection-&gt;find($query);
</pre>
<p>This examples will return all items which id is not in the $ninArray and item.inStock > 1 </p>
 <img src="http://www.volkomenjuist.nl/blog/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=368" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.volkomenjuist.nl/blog/2011/05/10/mongodb-php-quiries/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bring your own music&#8230;</title>
		<link>http://www.volkomenjuist.nl/blog/2010/09/08/bring-your-own-music/</link>
		<comments>http://www.volkomenjuist.nl/blog/2010/09/08/bring-your-own-music/#comments</comments>
		<pubDate>Wed, 08 Sep 2010 19:21:06 +0000</pubDate>
		<dc:creator>Stefanovich</dc:creator>
				<category><![CDATA[Other]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iTunes]]></category>

		<guid isPermaLink="false">http://www.volkomenjuist.nl/blog/?p=362</guid>
		<description><![CDATA[As of iTunes 10 it is possible to connect every iPhone / iPod Touch (which is running iOS) and play songs which are stored on the portable device. Even without enabling &#8220;manual sync mode&#8221;. Just plug in your device, go to iTunes and select it. Very handy when you are on a boring party with [...]]]></description>
			<content:encoded><![CDATA[<p>As of iTunes 10 it is possible to connect every iPhone / iPod Touch (which is running iOS) and play songs which are stored on the portable device. Even without enabling &#8220;manual sync mode&#8221;. Just plug in your device, go to iTunes and select it. Very handy when you are on a boring party with bad music <img src='http://www.volkomenjuist.nl/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
 <img src="http://www.volkomenjuist.nl/blog/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=362" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.volkomenjuist.nl/blog/2010/09/08/bring-your-own-music/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Synology released Diskstation Manager 2.3 (firmware)</title>
		<link>http://www.volkomenjuist.nl/blog/2010/03/08/synology-released-diskstation-manager-2-3-firmware/</link>
		<comments>http://www.volkomenjuist.nl/blog/2010/03/08/synology-released-diskstation-manager-2-3-firmware/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 19:57:02 +0000</pubDate>
		<dc:creator>Stefanovich</dc:creator>
				<category><![CDATA[Synology]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[firmware]]></category>
		<category><![CDATA[Mirror]]></category>

		<guid isPermaLink="false">http://www.volkomenjuist.nl/blog/?p=357</guid>
		<description><![CDATA[Today Synology released Diskstation Manager 2.3 (DSM 2.3). Currently the main download sites are very slow. You can find a miror here and the release notes here. Enjoy!]]></description>
			<content:encoded><![CDATA[<p>Today Synology released Diskstation Manager 2.3 (DSM 2.3). Currently the main download sites are very slow. You can find a miror<a target=\"_blank\"  href="http://www.volkomenjuist.nl/blog/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovLzE4OC45Mi4yMzIuOTgvZmlybXdhcmUvMTEzOS8="> here</a> and the release notes <a target=\"_blank\" href="http://www.volkomenjuist.nl/blog/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5zeW5vbG9neS5jb20vZW51L3N1cHBvcnQvcmVsZWFzZU5vdGUvRFMyMDkrLnBocA==">here</a>. </p>
<p>Enjoy!</p>
 <img src="http://www.volkomenjuist.nl/blog/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=357" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.volkomenjuist.nl/blog/2010/03/08/synology-released-diskstation-manager-2-3-firmware/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to check whether Javascript is enabled in Wicket</title>
		<link>http://www.volkomenjuist.nl/blog/2010/01/19/how-to-check-whether-javascript-is-enabled-in-wicket/</link>
		<comments>http://www.volkomenjuist.nl/blog/2010/01/19/how-to-check-whether-javascript-is-enabled-in-wicket/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 21:31:49 +0000</pubDate>
		<dc:creator>Stefanovich</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Wicket]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.volkomenjuist.nl/blog/?p=337</guid>
		<description><![CDATA[It is possible, via Wicket, to gather a lot of information regarding the browser/system of your visitor. If you want this you can also turn on some extended information (like javascript is enabled) via the following code: This method works via a redirect to the BrowserInfoPage and finally it goes to your &#8216;original&#8217; page. Because [...]]]></description>
			<content:encoded><![CDATA[<p>It is possible, via Wicket, to gather a lot of information regarding the browser/system of your visitor. If you want this you can also turn on some extended information (like javascript is enabled) via the following code:</p>
<pre class="brush: java; title: ; notranslate">
getRequestCycleSettings().setGatherExtendedBrowserInfo(true);
</pre>
<p>This method works via a redirect to the BrowserInfoPage and finally it goes to your &#8216;original&#8217; page. Because of this it is possible that you see the BrowserInfoPage very shortly especially on slow computers/browsers or internet connections. But what if you don&#8217;t want this and only want to know whether Javascript is enabled? Please read on&#8230;</p>
<p><span id="more-337"></span></p>
<p>When the page is rendered it does a call(back) to Wicket. If  this callback is possible then we can assume Javascipt is enabled.</p>
<h4>How to setup?</h4>
<p>e.g. Login.java (Page)</p>
<pre class="brush: java; title: ; notranslate">
final WebClientInfo clientInfo = (WebClientInfo) WebRequestCycle.get().getClientInfo();
final AbstractDefaultAjaxBehavior behavior = new AbstractDefaultAjaxBehavior()
   @Override
   protected void respond(final AjaxRequestTarget target) {
        if (target != null) {
            clientInfo.getProperties().setJavaEnabled(true);
        }
   }
};
add(behavior);

Label jsEnabledScript = new Label(&quot;jsEnabledScript&quot;, &quot;wicketAjaxGet('&quot;+ behavior.getCallbackUrl() +&quot;', function() { }, function() { });&quot;);
jsEnabledScript.setEscapeModelStrings(false); // do not HTML escape JavaScript code
add(jsEnabledScript);
</pre>
<p>And in your HTML</p>
<pre class="brush: plain; title: ; notranslate">
&lt;script type=&quot;text/javascript&quot; wicket:id=&quot;jsEnabledScript&quot;&gt;&lt;/script&gt;
</pre>
<h4>How to use?</h4>
<pre class="brush: java; title: ; notranslate">
final WebClientInfo clientInfo = (WebClientInfo) WebRequestCycle.get().getClientInfo();
boolean javascriptEnabled = clientInfo.getProperties().isJavaEnabled();
</pre>
<address>Note1: Put this code on one of your first pages like your login page, to do this callback only once.<br />
Note2: I really don&#8217;t have a clue why they called it isJavaEnabled() because Java != Javascript&#8230;.</address>
 <img src="http://www.volkomenjuist.nl/blog/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=337" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.volkomenjuist.nl/blog/2010/01/19/how-to-check-whether-javascript-is-enabled-in-wicket/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AjaxTabbedPanel &#8211; Store state when switching tabs</title>
		<link>http://www.volkomenjuist.nl/blog/2009/12/01/ajaxtabbedpanel-store-state-when-switching-tabs/</link>
		<comments>http://www.volkomenjuist.nl/blog/2009/12/01/ajaxtabbedpanel-store-state-when-switching-tabs/#comments</comments>
		<pubDate>Tue, 01 Dec 2009 21:48:09 +0000</pubDate>
		<dc:creator>Stefanovich</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Wicket]]></category>
		<category><![CDATA[AjaxTabbedPanel]]></category>

		<guid isPermaLink="false">http://www.volkomenjuist.nl/blog/?p=331</guid>
		<description><![CDATA[Normally when you switch tabs of an AjaxTabbedPanel it won&#8217;t store the state of all your input fields. If you do want this, without pressing a save button, you have to override the newLink(String linkId, final int index) method of the AjaxTabbedPanel class and use an AjaxSubmitLink instead of the default AjaxFallbackLink. Now all values [...]]]></description>
			<content:encoded><![CDATA[<p>Normally when you switch tabs of an AjaxTabbedPanel it won&#8217;t store the state of all your input fields. If you do want this, without pressing a save button, you have to override the <code>newLink(String linkId, final int index)</code> method of the AjaxTabbedPanel class and use an AjaxSubmitLink instead of the default AjaxFallbackLink. Now all values will be stored in the model (not saved to the database). </p>
<p>Keep in mind that all Wicket validations will be validated, so we have to take care of the FeedbackPanel (refreshing) as well.</p>
<p><span id="more-331"></span><br />
Example:</p>
<pre class="brush: java; title: ; notranslate">
/**
	 * {@inheritDoc}
	 */
	@Override
	protected WebMarkupContainer newLink(String linkId, final int index) {

			return new AjaxSubmitLink(linkId, m_form) {

			@Override
			protected void onSubmit(AjaxRequestTarget target, Form&lt;?&gt; form) {
				setSelectedTab(index);
				if (target != null) {
					target.addComponent(TabbedComponent.this);
				}
				onAjaxUpdate(target);
			}

			@Override
			protected void onError(AjaxRequestTarget target, Form&lt;?&gt; form) {
				target.addComponent(((FeedbackAware) getPage()).getFeedbackPanel());
			}
		};
	}
</pre>
<p>See also my other blog about the <a href="http://www.volkomenjuist.nl/blog/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy52b2xrb21lbmp1aXN0Lm5sL2Jsb2cvMjAwOS8xMS8wNS9hamF4dGFiYmVkcGFuZWwtaW4tY29tYmluYXRpb24td2l0aC1hamF4bGF6eWxvYWRwYW5lbC8jbW9yZS0zMjI=">AjaxTabbedPanel and LazyLoading</a></p>
 <img src="http://www.volkomenjuist.nl/blog/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=331" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.volkomenjuist.nl/blog/2009/12/01/ajaxtabbedpanel-store-state-when-switching-tabs/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>AjaxTabbedPanel in combination with AjaxLazyLoadPanel</title>
		<link>http://www.volkomenjuist.nl/blog/2009/11/05/ajaxtabbedpanel-in-combination-with-ajaxlazyloadpanel/</link>
		<comments>http://www.volkomenjuist.nl/blog/2009/11/05/ajaxtabbedpanel-in-combination-with-ajaxlazyloadpanel/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 22:14:57 +0000</pubDate>
		<dc:creator>Stefanovich</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Wicket]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[AjaxLazyLoadPanel]]></category>
		<category><![CDATA[AjaxTabbedPanel]]></category>

		<guid isPermaLink="false">http://www.volkomenjuist.nl/blog/?p=322</guid>
		<description><![CDATA[Wicket (extensions) offers a AjaxTabbedPanel to take care of your tabs. The constructor of the AjaxTabbedPanel expects a wicket id (obviously) and a list of ITabs. The implementation of this interface should return the panel via getPanel(String panelId) which will be the &#8216;actual&#8217; tab. Out-of-the-box Wicket (extensions) offers an abstract implementation of this interface (AbstractTab). [...]]]></description>
			<content:encoded><![CDATA[<p>Wicket (extensions) offers a AjaxTabbedPanel to take care of your tabs. The constructor of the AjaxTabbedPanel expects a wicket id (obviously) and a list of ITabs. The implementation of this interface should return the panel via <code>getPanel(String panelId)</code> which will be the &#8216;actual&#8217; tab. Out-of-the-box Wicket (extensions) offers an abstract implementation of this interface (AbstractTab).</p>
<p>What I want to achieve is that an AjaxIndicator (loading image) will be shown on the place were the actual panel will come till it is completely loaded. Especially when you have a lot of components to render this can be handy. See image below.</p>
<div id="attachment_324" class="wp-caption aligncenter" style="width: 506px"><img class="size-full wp-image-324" title="example" src="http://www.volkomenjuist.nl/blog/wp-content/uploads/2009/11/example.png" alt="Example" width="496" height="200" /><p class="wp-caption-text">Example</p></div>
<p><span id="more-322"></span><br />
My solution was to create a class (AbstractLazyLoadTab) on top of the AbstractTab (implements ITab) which will take care of this. It will use the AjaxLazyLoadPanel.</p>
<pre class="brush: java; title: ; notranslate">
public abstract class AbstractLazyLoadTab extends AbstractTab {
         //removed some lines

	@Override
	public Panel getPanel(String panelId) {
		return new AjaxLazyLoadPanel(panelId){

			private static final long serialVersionUID = 1L;

			@Override
			public Component getLazyLoadComponent(String markupId) {
				return getLazyLoadPanel(final String markupId);
			}
		};
	}

        public abstract Panel getLazyLoadPanel(final String markupId);
}
</pre>
<p>Now you can use this class as you normally would do when you use AbstractTab.</p>
<p>When your page (or components higher in the hierarchy) implements IAjaxIndicatorAware to show another loading layer it is possible that you now have two loading layers on top of each other. One on the tab and one which will e.g. block the whole page. To avoid that I created an other class which extends the AjaxTabbedPanel and implements the IAjaxIndicatorAware interface.</p>
<pre class="brush: java; title: ; notranslate">
public class TabbedComponent extends AjaxTabbedPanel implements IAjaxIndicatorAware{
         //removed some lines
        @Override
	public String getAjaxIndicatorMarkupId() {
		//Our tab will take care of the loading layer, so return null.
		return null;
	}
}
</pre>
<p>Now you can use the classes like this:</p>
<pre class="brush: java; title: ; notranslate">
  List&lt;ITab&gt; tabs=new ArrayList&lt;ITab&gt;();
    tabs.add(new AbstractLazyLoadTab(new Model(&quot;first tab&quot;)) {
        public Panel getLazyLoadPanel(String panelId) {
           return new TabPanel1(panelId);
        }
    });

    add(new TabbedComponent(&quot;tabs&quot;, tabs)
</pre>
</pre>
<h2>Another solution</h2>
<p>If you prefer to have a waiting icon on the right side of the tab itself, you can override the newLink method of AjaxTabbedPanel and use the IndicatingAjaxFallbackLink instead of the AjaxFallbackLink. You will probably have to add the following code to your css file.</p>
<pre class="brush: css; title: ; notranslate">
span.wicket-ajax-indicator {
float: left;
}
</pre>
<p>More information about this solution please click <a href="http://www.volkomenjuist.nl/blog/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2phdmF0aG91Z2h0cy5jYXBlc3VnYXJiaXJkLmNvbS8yMDA3LzExL2FqYXgtdGFiYmVkLXBhbmVsLXdpdGgtbGF6eS1sb2FkaW5nLmh0bWw=" target=\"_blank\">here</a></p>
 <img src="http://www.volkomenjuist.nl/blog/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=322" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.volkomenjuist.nl/blog/2009/11/05/ajaxtabbedpanel-in-combination-with-ajaxlazyloadpanel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress application on iPhone</title>
		<link>http://www.volkomenjuist.nl/blog/2009/09/14/wordpress-application-on-iphone/</link>
		<comments>http://www.volkomenjuist.nl/blog/2009/09/14/wordpress-application-on-iphone/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 20:06:08 +0000</pubDate>
		<dc:creator>Stefanovich</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.volkomenjuist.nl/blog/2009/09/14/wordpress-application-on-iphone/</guid>
		<description><![CDATA[This test entry is submitted via my iPhone. I was looking for a free application which is able to write/edit blog entries and manage comments. I think this application will fit my needs. (More info)]]></description>
			<content:encoded><![CDATA[<p>This test entry is submitted via my iPhone. I was looking for a free application which is able to write/edit blog entries and manage comments. I think this application will fit my needs. <img src='http://www.volkomenjuist.nl/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  (<a target=\"_blank\" href="http://www.volkomenjuist.nl/blog/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2lQaG9uZS53b3JkcHJlc3Mub3Jn">More info</a>) </p>
 <img src="http://www.volkomenjuist.nl/blog/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=318" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.volkomenjuist.nl/blog/2009/09/14/wordpress-application-on-iphone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Synology released new firmware (DSM v2.2)</title>
		<link>http://www.volkomenjuist.nl/blog/2009/09/08/synology-released-new-firmware-dsm-v2-2/</link>
		<comments>http://www.volkomenjuist.nl/blog/2009/09/08/synology-released-new-firmware-dsm-v2-2/#comments</comments>
		<pubDate>Tue, 08 Sep 2009 21:49:19 +0000</pubDate>
		<dc:creator>Stefanovich</dc:creator>
				<category><![CDATA[Synology]]></category>
		<category><![CDATA[firmware]]></category>

		<guid isPermaLink="false">http://www.volkomenjuist.nl/blog/?p=310</guid>
		<description><![CDATA[A couple of days ago Synology released new DSM firmware (v2.2) with a big list of new features/upgrades/fixes and improvements. For the whole list, please click here. Synology even offers/supports 2 free iPhone applications (DS Audio and DS Photo)!! Those applications allows you to play your own music ,stored on the NAS, on your iPhone [...]]]></description>
			<content:encoded><![CDATA[<p>A couple of days ago Synology released new DSM firmware (v2.2) with a big list of new features/upgrades/fixes and improvements. For the whole list, please click <a target=\"_blank\" href="http://www.volkomenjuist.nl/blog/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5zeW5vbG9neS5jb20vZW51L3N1cHBvcnQvcmVsZWFzZU5vdGUvRFMyMDkrLnBocA==">here</a>. Synology even offers/supports 2 free iPhone applications (DS Audio and DS Photo)!! Those applications allows you to play your own music ,stored on the NAS, on your iPhone and easily upload/share your photo&#8217;s.</p>
 <img src="http://www.volkomenjuist.nl/blog/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=310" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.volkomenjuist.nl/blog/2009/09/08/synology-released-new-firmware-dsm-v2-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

