<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Blog of Claudius Hauptmann</title>
	
	<link>http://claudiushauptmann.com</link>
	<description>Rich Internet applications related stuff</description>
	<lastBuildDate>Tue, 23 Feb 2010 08:46:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/claudiushauptmann" /><feedburner:info uri="claudiushauptmann" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Tutorial: GWT, Maven and Eclipse with M2Eclipse</title>
		<link>http://feedproxy.google.com/~r/claudiushauptmann/~3/MHybUsyd7To/tutorial-gwt-maven-and-eclipse-with-m2eclipse.html</link>
		<comments>http://claudiushauptmann.com/tutorial-gwt-maven-and-eclipse-with-m2eclipse.html#comments</comments>
		<pubDate>Thu, 29 Oct 2009 13:38:30 +0000</pubDate>
		<dc:creator>Claudius</dc:creator>
				<category><![CDATA[Rich Internet Applications]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Galileo]]></category>
		<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Web Toolkit]]></category>
		<category><![CDATA[GWT]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[m2eclipse]]></category>
		<category><![CDATA[Maps]]></category>
		<category><![CDATA[Marker]]></category>
		<category><![CDATA[Overlay]]></category>
		<category><![CDATA[Point]]></category>
		<category><![CDATA[Polygon]]></category>
		<category><![CDATA[Polyline]]></category>
		<category><![CDATA[spatial computing]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://claudiushauptmann.com/?p=336</guid>
		<description><![CDATA[This tutorial shows how to develop Rich Internet applications with the Google Web Toolkit (GWT) using a state of the art Software  Development Environment, especially Maven integrated in Eclipse through m2eclipse (There is another plugin IAM, but in this tutorial we will use M2Eclipse). We will set up the environment, create a web application that [...]]]></description>
			<content:encoded><![CDATA[<p>This tutorial shows how to develop <a href="http://en.wikipedia.org/wiki/Rich_internet_applications">Rich Internet applications</a> with the <a href="http://code.google.com/intl/de-DE/webtoolkit/">Google Web Toolkit (GWT)</a> using a state of the art Software  Development Environment, especially <a href="http://maven.apache.org/">Maven</a> integrated in <a href="http://www.eclipse.org/">Eclipse</a> through <a href="http://m2eclipse.sonatype.org/">m2eclipse</a> (There is another plugin <a href="http://www.eclipse.org/iam/">IAM</a>, but in this tutorial we will use M2Eclipse). We will set up the environment, create a web application that is using <a href="http://code.google.com/docreader/#p=gwt-google-apis&amp;s=gwt-google-apis&amp;t=Overview">Google Maps</a> and debug it. This tutorial is the Maven version of <a href="http://claudiushauptmann.com/tutorial-google-maps-with-java-gwt-and-eclipse.html">this one using Cypal Studio</a>.</p>
<p><strong>Preliminaries</strong></p>
<p>First we have to download Java and Eclipse. We will not download the Google Web Toolkit, Cypal Studio or the Google Maps library for GWT like in my <a href="http://claudiushauptmann.com/tutorial-google-maps-with-java-gwt-and-eclipse.html">last tutorial</a>.</p>
<ol>
<li><strong>Download and install the Java SE Development Kit</strong><br />
You need the JDK to run Eclipse, the GWT Hosted Mode-Browser and the GWT-Compiler. On MacOS the JDK is installed by default, for other operating systems you can <a href="http://java.sun.com/javase/downloads/index.jsp">download the JDK from Sun</a>.</li>
<li><strong>Download and unzip the Eclipse IDE for Java EE Developers</strong><br />
<a href="http://www.eclipse.org/downloads/">Download Eclipse for EE Developers</a>. You can unzip Eclipse to whereever you like, for example into the folder <em>applications</em> or <em>programs</em>.</li>
<li><strong>Sign up for a Google Maps Api-Key (optional, only necessary for production use)</strong><br />
This step is optional for development on your local computer (localhost). <a href="http://code.google.com/apis/maps/signup.html">You can sign up for a key here</a>.</li>
</ol>
<p><strong>Setup the eclipse workspace and configure plugins</strong></p>
<p>Configure the eclipse workspace and project. This section contains only the configuration of eclipse, no source code that you would check in for example into svn.</p>
<ol>
<li><strong>Eclipse Workspace</strong><br />
Open Eclipse and choose a directory as workspace (project configuration and source code will/can be stored here).<a href="http://claudiushauptmann.com/wp-content/uploads/2009/10/eclipse-galileo-select-workspace.png"><br />
<img class="alignnone size-medium wp-image-345" title="eclipse-galileo-select-workspace" src="http://claudiushauptmann.com/wp-content/uploads/2009/10/eclipse-galileo-select-workspace-300x143.png" alt="eclipse-galileo-select-workspace" width="300" height="143" /></a><br />
<a href="../wp-content/uploads/2008/11/eclipse-ganymede-welcome.png"> </a>When Eclipse has started, you will see the welcome screen:<a href="../wp-content/uploads/2008/11/eclipse-ganymede-welcome.png"><br />
</a><a href="http://claudiushauptmann.com/wp-content/uploads/2009/10/eclipse-galileo-welcome.png"><img class="alignnone size-medium wp-image-349" title="eclipse-galileo-welcome" src="http://claudiushauptmann.com/wp-content/uploads/2009/10/eclipse-galileo-welcome-300x230.png" alt="eclipse-galileo-welcome" width="300" height="230" /></a><br />
Close the Welcome screen with the arrow on the right side and the workspace is displayed:<br />
<a href="http://claudiushauptmann.com/wp-content/uploads/2009/10/eclipse-galileo-workspace.png"><img class="alignnone size-medium wp-image-350" title="eclipse-galileo-workspace" src="http://claudiushauptmann.com/wp-content/uploads/2009/10/eclipse-galileo-workspace-300x230.png" alt="eclipse-galileo-workspace" width="300" height="230" /></a></li>
<li><strong>Add the m2eclipse plugin (Integration of Maven into Eclipse)</strong><br />
Open <em>Help/Install New Software&#8230;</em> and click <em>Add</em> on the upper right side:<br />
<a href="http://claudiushauptmann.com/wp-content/uploads/2009/10/eclipse-galileo-install-new-software.png"><img class="alignnone size-medium wp-image-352" title="eclipse-galileo-install-new-software" src="http://claudiushauptmann.com/wp-content/uploads/2009/10/eclipse-galileo-install-new-software-300x221.png" alt="eclipse-galileo-install-new-software" width="300" height="221" /></a><br />
Enter M2Eclipse as name, http://m2eclipse.sonatype.org/update/ as Location and click OK:<br />
<a href="http://claudiushauptmann.com/wp-content/uploads/2009/10/eclipse-galileo-new-software-add-site.png"><img class="alignnone size-medium wp-image-354" title="eclipse-galileo-new-software-add-site" src="http://claudiushauptmann.com/wp-content/uploads/2009/10/eclipse-galileo-new-software-add-site-300x140.png" alt="eclipse-galileo-new-software-add-site" width="300" height="140" /></a><br />
Select the items shown and click Next:<br />
<a href="http://claudiushauptmann.com/wp-content/uploads/2009/10/eclipse-galileo-install-software-available-software.png"><img class="alignnone size-medium wp-image-355" title="eclipse-galileo-install-software-available-software" src="http://claudiushauptmann.com/wp-content/uploads/2009/10/eclipse-galileo-install-software-available-software-300x279.png" alt="eclipse-galileo-install-software-available-software" width="300" height="279" /></a><br />
Review the details and click Next:<br />
<a href="http://claudiushauptmann.com/wp-content/uploads/2009/10/eclipse-galileo-install-software-review-details.png"><img class="alignnone size-medium wp-image-356" title="eclipse-galileo-install-software-review-details" src="http://claudiushauptmann.com/wp-content/uploads/2009/10/eclipse-galileo-install-software-review-details-300x168.png" alt="eclipse-galileo-install-software-review-details" width="300" height="168" /></a><br />
Accept the license and click Finish:<br />
<a href="http://claudiushauptmann.com/wp-content/uploads/2009/10/eclipse-galileo-install-software-review-license.png"><img class="alignnone size-medium wp-image-359" title="eclipse-galileo-install-software-review-license" src="http://claudiushauptmann.com/wp-content/uploads/2009/10/eclipse-galileo-install-software-review-license-300x168.png" alt="eclipse-galileo-install-software-review-license" width="300" height="168" /></a><br />
Wait until the download has finished and the installation is complete and restart Eclipse (click yes).</li>
</ol>
<p><strong>Your first GWT application with Maven and Eclipse</strong></p>
<p>Now we will create a simple GWT application based on an <a href="http://maven.apache.org/guides/introduction/introduction-to-archetypes.html">archetype</a>.<strong><br />
</strong></p>
<ol>
<li><strong>Create a Maven project</strong><br />
Select <em>File/New/Other&#8230;</em> , select <em>Maven project</em> and click <em>Next</em>:<br />
<a href="http://claudiushauptmann.com/wp-content/uploads/2009/10/eclipse-galileo-new-project-maven.png"><img class="alignnone size-medium wp-image-363" title="eclipse-galileo-new-project-maven" src="http://claudiushauptmann.com/wp-content/uploads/2009/10/eclipse-galileo-new-project-maven-300x287.png" alt="eclipse-galileo-new-project-maven" width="300" height="287" /></a><br />
Click <em>Next</em>:<br />
<a href="http://claudiushauptmann.com/wp-content/uploads/2009/10/eclipse-galileo-new-maven-project-name-and-location.png"><img class="alignnone size-medium wp-image-371" title="eclipse-galileo-new-maven-project-name-and-location" src="http://claudiushauptmann.com/wp-content/uploads/2009/10/eclipse-galileo-new-maven-project-name-and-location-300x251.png" alt="eclipse-galileo-new-maven-project-name-and-location" width="300" height="251" /></a><br />
Select the <em>gwt-maven-plugin</em> archetype from <em>org.codehaus.mojo</em> and click <em>Next</em>:<br />
<a href="http://claudiushauptmann.com/wp-content/uploads/2009/10/eclipse-galileo-new-maven-project-archetype.png"><img class="alignnone size-medium wp-image-372" title="eclipse-galileo-new-maven-project-archetype" src="http://claudiushauptmann.com/wp-content/uploads/2009/10/eclipse-galileo-new-maven-project-archetype-276x300.png" alt="eclipse-galileo-new-maven-project-archetype" width="276" height="300" /></a><br />
Enter Maven details for this project and click <em>Finish</em>:<br />
<a href="http://claudiushauptmann.com/wp-content/uploads/2009/10/eclipse-galileo-new-maven-project-archetype-parameters.png"><img class="alignnone size-medium wp-image-373" title="eclipse-galileo-new-maven-project-archetype-parameters" src="http://claudiushauptmann.com/wp-content/uploads/2009/10/eclipse-galileo-new-maven-project-archetype-parameters-276x300.png" alt="eclipse-galileo-new-maven-project-archetype-parameters" width="276" height="300" /></a><br />
Your workspace will look like this:<br />
<a href="http://claudiushauptmann.com/wp-content/uploads/2009/10/eclipse-galileo-workspace-with-project.png"><img class="alignnone size-medium wp-image-374" title="eclipse-galileo-workspace-with-project" src="http://claudiushauptmann.com/wp-content/uploads/2009/10/eclipse-galileo-workspace-with-project-300x230.png" alt="eclipse-galileo-workspace-with-project" width="300" height="230" /></a></li>
<li><strong>Edit the pom.xml</strong><br />
This is the Project Object Model &#8211; maven project configuration file. Change the version of GWT to 1.7.o
<pre class="brush: xml;">&lt;gwt.version&gt;1.7.0&lt;/gwt.version&gt;</pre>
<p>Add the following dependency to the dependencies:</p>
<pre class="brush: xml;">&lt;dependency&gt;
 &lt;groupId&gt;com.google.gwt.google-apis&lt;/groupId&gt;
 &lt;artifactId&gt;gwt-maps&lt;/artifactId&gt;
 &lt;scope&gt;provided&lt;/scope&gt;
 &lt;version&gt;1.0.4&lt;/version&gt;
 &lt;/dependency&gt;</pre>
<p>Add the following line direct below the gwt.version-tag within the properties:</p>
<pre class="brush: xml;">&lt;runTarget&gt;com.claudiushauptmann.gwt.maven.sample.Application/Application.html&lt;/runTarget&gt;</pre>
<p>Change the plugin version to 1.1:</p>
<pre class="brush: xml;">&lt;plugin&gt;
 &lt;groupId&gt;org.codehaus.mojo&lt;/groupId&gt;
 &lt;artifactId&gt;gwt-maven-plugin&lt;/artifactId&gt;
 &lt;version&gt;1.1&lt;/version&gt;
 &lt;executions&gt;
 &lt;execution&gt;
 &lt;goals&gt;
 &lt;goal&gt;compile&lt;/goal&gt;
 &lt;goal&gt;generateAsync&lt;/goal&gt;
 &lt;goal&gt;test&lt;/goal&gt;
 &lt;/goals&gt;
 &lt;/execution&gt;
 &lt;/executions&gt;
 &lt;/plugin&gt;</pre>
</li>
<li><strong>Edit the Application.gwt.xml</strong><br />
This is the gwt module descriptor. We have to tell it, that we are using the Google Maps library (Yes, we have to do this twice. One time for Java and on time for GWT, because GWT should not use all Java libraries). Add the following lines:</p>
<pre class="brush: xml;">&lt;script src=&quot;http://maps.google.com/maps?gwt=1&amp;amp;file=api&amp;amp;v=2&quot; /&gt;
 &lt;inherits name=&quot;com.google.gwt.maps.GoogleMaps&quot;&gt;</pre>
</li>
<li><strong>Edit the entrypoint (Application.java)</strong><br />
This is the code that will be executed when the site is openend:</p>
<pre class="brush: java;">package com.claudiushauptmann.gwt.maven.sample.client;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.maps.client.MapWidget;
import com.google.gwt.maps.client.control.MapTypeControl;
import com.google.gwt.maps.client.control.SmallMapControl;
import com.google.gwt.maps.client.event.MapClickHandler;
import com.google.gwt.maps.client.geom.LatLng;
import com.google.gwt.maps.client.overlay.Marker;
import com.google.gwt.maps.client.overlay.Overlay;
import com.google.gwt.user.client.ui.RootPanel;

/**
 * Entry point classes define &lt;code&gt;onModuleLoad()&lt;/code&gt;.
 */
public class Application implements EntryPoint {

 /**
 * This is the entry point method.
 */
 public void onModuleLoad() {
 MapWidget mapWiget = new MapWidget(LatLng.newInstance(48.136559,
 11.576318), 13);
 mapWiget.setSize(&quot;500px&quot;, &quot;300px&quot;);

 mapWiget.addControl(new SmallMapControl());
 mapWiget.addControl(new MapTypeControl());

 mapWiget.addMapClickHandler(new MapClickHandler() {
 public void onClick(MapClickEvent e) {
 MapWidget sender = e.getSender();
 Overlay overlay = e.getOverlay();
 LatLng point = e.getLatLng();

 if (overlay != null &amp;&amp; overlay instanceof Marker) {
 sender.removeOverlay(overlay);
 } else {
 sender.addOverlay(new Marker(point));
 }
 }
 });

 RootPanel.get().add(mapWiget);&lt;/pre&gt;
}
&lt;pre&gt;}</pre>
</li>
</ol>
<p><strong>Building the project</strong></p>
<p>The build will be run automatically when debugging the project.</p>
<ol>
<li>Select your project in the Project Explorer.</li>
<li>Click <em>Run/Run As/Maven install</em>.</li>
</ol>
<p><strong>Debugging the project</strong></p>
<p>Of course, you can use a plugin like <a href="http://www.cypal.in/studio">Cypal Studio</a> or the <a href="http://code.google.com/intl/en-US/eclipse/">Google plugin for Eclipse</a>. This is a way that works stable on Mac, Linux and Windows.</p>
<ol>
<li>Select your project in the Project Explorer.</li>
<li>Select <em>Run/Run As/Maven build&#8230;</em></li>
<li>Type gwt:debug as goal, give your launch configuration a name and click <em>Run</em>:<br />
<a href="http://claudiushauptmann.com/wp-content/uploads/2009/10/eclipse-galileo-maven-gwt-launch-configuration.png"><img class="alignnone size-medium wp-image-385" title="eclipse-galileo-maven-gwt-launch-configuration" src="http://claudiushauptmann.com/wp-content/uploads/2009/10/eclipse-galileo-maven-gwt-launch-configuration-300x245.png" alt="eclipse-galileo-maven-gwt-launch-configuration" width="300" height="245" /></a></li>
<li>Select your project in the Project Explorer.</li>
<li>Select <em>Run/Debug configurations</em>.</li>
<li>Select <em>Remote Java Application</em> in the list on the left side and click the <em>new launch configuration</em> symbol on the upper left side and click <em>Debug</em>:<br />
<a href="http://claudiushauptmann.com/wp-content/uploads/2009/10/eclipse-galileo-gwt-launch-configuration.png"><img class="alignnone size-medium wp-image-387" title="eclipse-galileo-gwt-launch-configuration" src="http://claudiushauptmann.com/wp-content/uploads/2009/10/eclipse-galileo-gwt-launch-configuration-300x245.png" alt="eclipse-galileo-gwt-launch-configuration" width="300" height="245" /></a></li>
<li>The hosted mode browser will open and every time you click on the map a marker will appear:<br />
<a href="http://claudiushauptmann.com/wp-content/uploads/2009/10/GWT-hosted-mode.png"><img class="alignnone size-medium wp-image-393" title="GWT-hosted-mode" src="http://claudiushauptmann.com/wp-content/uploads/2009/10/GWT-hosted-mode-300x261.png" alt="GWT-hosted-mode" width="300" height="261" /></a><br />
<a href="http://claudiushauptmann.com/wp-content/uploads/2009/10/GWT-hosted-mode-browser.png"><img class="alignnone size-medium wp-image-394" title="GWT-hosted-mode-browser" src="http://claudiushauptmann.com/wp-content/uploads/2009/10/GWT-hosted-mode-browser-300x231.png" alt="GWT-hosted-mode-browser" width="300" height="231" /></a></li>
</ol>
<p>Thank you for reading my tutorial! Please leave a comment and/or make a link from your web site.</p>
<img src="http://feeds.feedburner.com/~r/claudiushauptmann/~4/MHybUsyd7To" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://claudiushauptmann.com/tutorial-gwt-maven-and-eclipse-with-m2eclipse.html/feed</wfw:commentRss>
		<slash:comments>20</slash:comments>
		<feedburner:origLink>http://claudiushauptmann.com/tutorial-gwt-maven-and-eclipse-with-m2eclipse.html</feedburner:origLink></item>
		<item>
		<title>A framework for GWT multipage applications</title>
		<link>http://feedproxy.google.com/~r/claudiushauptmann/~3/IEfZkKLdvRo/a-framework-for-gwt-multipage-applications.html</link>
		<comments>http://claudiushauptmann.com/a-framework-for-gwt-multipage-applications.html#comments</comments>
		<pubDate>Fri, 22 May 2009 23:39:22 +0000</pubDate>
		<dc:creator>Claudius</dc:creator>
				<category><![CDATA[Rich Internet Applications]]></category>
		<category><![CDATA[Dispatcher]]></category>
		<category><![CDATA[EntryPoint]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[Google Web Toolkit]]></category>
		<category><![CDATA[GWT]]></category>
		<category><![CDATA[gwt-multipage]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Module]]></category>
		<category><![CDATA[multipage]]></category>

		<guid isPermaLink="false">http://claudiushauptmann.com/?p=298</guid>
		<description><![CDATA[This article is about the development of Rich Internet applications with Google Web Toolkit (GWT) that consist of multiple HTML pages like flickr or facebook. It dicusses  techniques to distinguish the different HTML host pages on the client side and an architecture to organize your entrypoints. Finally a framework for gwt multipage applications is introduced. [...]]]></description>
			<content:encoded><![CDATA[<p>This article is about the development of <a href="http://en.wikipedia.org/wiki/Rich_internet_application">Rich Internet applications</a> with <a href="http://code.google.com/webtoolkit/">Google Web Toolkit (GWT)</a> that consist of multiple HTML pages like <a href="http://www.flickr.com/">flickr</a> or <a href="http://www.facebook.com/">facebook</a>. It dicusses  techniques to distinguish the different <a href="http://code.google.com/intl/en-US/webtoolkit/doc/1.6/DevGuideOrganizingProjects.html#DevGuideHostPage">HTML host pages</a> on the client side and an architecture to organize your <a href="http://code.google.com/intl/en-US/webtoolkit/doc/1.6/DevGuideCodingBasics.html#DevGuideClientSide">entrypoints</a>. Finally a framework for gwt multipage applications is introduced.</p>
<p><strong>GWT applications, HTML host pages, modules and entry points</strong></p>
<p>Some time ago I was developing a web application with jsp that consisted of a couple of jsp files. To enhance the usability of the user interface I wanted to add some ajax functionality to the pages and thus I was looking for a reasonable way to integrate GWT into my project. But that was not a simple thing, since the classical GWT application has got one HTML host page and only one entry point. I did not want to create one <a href="http://code.google.com/intl/en-US/webtoolkit/doc/1.6/DevGuideOrganizingProjects.html#DevGuideModules">module</a> per jsp file and so I was googling for a solution &#8211; I&#8217;m <a href="http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/78274f2dc910bcd1">not the only one having this problem</a>, but did not find a simple way to solve this problem. So I decided to develop my own solution and share it as an open source project on code.google.com.</p>
<p><strong>How to choose the right entrypoint for the current page<br />
</strong></p>
<p>If you&#8217;ve got one module for the entire web application with one registered entrypoint you have to know, which page is currently displayed to call the code according to the page. Some possibilities (this list is not complete!) are abvious:</p>
<ul>
<li>Render a javascript variable containing the name of the entrypoint on the server side into the header of the html page and read the value via <a href="http://code.google.com/intl/en-US/webtoolkit/doc/1.6/DevGuideCodingBasics.html#DevGuideJavaScriptNativeInterface">JSNI</a>.</li>
<li>Render a meta tag to the header containing the name of the entrypoint on the server side and read the value via the <a href="http://google-web-toolkit.googlecode.com/svn/javadoc/1.6/com/google/gwt/user/client/DOM.html">DOM</a> object.</li>
<li>Use the page&#8217;s title or a part of the title and read the value via the <a href="http://google-web-toolkit.googlecode.com/svn/javadoc/1.6/com/google/gwt/user/client/Window.html">Window</a> object.</li>
<li>Use the <a href="http://en.wikipedia.org/wiki/URL">URL</a> of the page and read the value with the <a href="http://google-web-toolkit.googlecode.com/svn/javadoc/1.6/com/google/gwt/user/client/Window.html">Window</a> object.</li>
</ul>
<p>I decided to choose the last option and annotate entrypoints with a <a href="http://en.wikipedia.org/wiki/Regular_expression">regular expression</a> describing the adresses that are valid for the entrypoint.</p>
<p><strong>A framework for multipage applications with GWT<br />
</strong></p>
<p>Now we need an architecture for a framework that decides which entrypoint is the right one, creates an instance and calls its onModuleLoad method. The first step is to mark the entrypoints with java annotations containing a regular expression for which the entrypoints are valid:</p>
<pre class="brush: java;">package com.claudiushauptmann.gwt.multipage.sample.client;

import com.claudiushauptmann.gwt.multipage.client.MultipageEntryPoint;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.RootPanel;

@MultipageEntryPoint(urlPattern = &quot;MyMultipageEntryPoint.html&quot;)
public class MyMultipageEntryPoint implements EntryPoint {

public void onModuleLoad() {
Label label = new Label(&quot;MyMultipageEntryPoint&quot;);
RootPanel.get().add(label);
}

}</pre>
<p>Second, we need a dispatcher entrypoint that is called instead of the target entry points, that decides which is the right entrypoint and calls it&#8217;s onModuleLoad method:</p>
<pre class="brush: java;">&lt;module&gt;
&lt;!-- Inherit the core Web Toolkit stuff.                  --&gt;
&lt;inherits name='com.google.gwt.user.User'/&gt;

&lt;!-- Inherit the gwt-multipage module --&gt;
&lt;inherits name='com.claudiushauptmann.gwt.multipage.gwt-multipage'/&gt;

&lt;!-- Use this EntryPoint instead of your own one. --&gt;
&lt;entry-point class='com.claudiushauptmann.gwt.multipage.client.EntrypointDispatcher'/&gt;
&lt;/module&gt;</pre>
<p>Via <a href="http://code.google.com/intl/en-US/webtoolkit/doc/1.6/DevGuideCodingBasics.html#DevGuideDeferredBinding">deferred binding</a> the dispatcher entrypoint knows all possible entrypoints and looks whose regular expression matches the current url.</p>
<p><strong>Conclusion</strong></p>
<p>This framework was developed for multipage Rich Internet applications that are using GWT. The focus is about the pages and their entrypoints. There are some other issues about multipage Rich Internet applications that are not topic of this article but will perhaps find a place in this framework in the future.</p>
<p>If you are interested in this project you will find it at code.google.com:</p>
<p><a href="http://code.google.com/p/gwt-multipage/">http://code.google.com/p/gwt-multipage/</a></p>
<p>Please give some <a href="http://groups.google.com/group/gwt-multipage">feedback</a> and <a href="http://code.google.com/p/gwt-multipage/issues/list">report bugs</a>! The <a href="http://code.google.com/p/gwt-multipage/downloads/list">downloads are here</a>, some more documentation will come soon.</p>
<img src="http://feeds.feedburner.com/~r/claudiushauptmann/~4/IEfZkKLdvRo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://claudiushauptmann.com/a-framework-for-gwt-multipage-applications.html/feed</wfw:commentRss>
		<slash:comments>24</slash:comments>
		<feedburner:origLink>http://claudiushauptmann.com/a-framework-for-gwt-multipage-applications.html</feedburner:origLink></item>
		<item>
		<title>Hibernate Spatial and Envers – Geospatial revisions</title>
		<link>http://feedproxy.google.com/~r/claudiushauptmann/~3/hXVuzYxZGE0/hibernate-spatial-and-envers-geospatial-revisions.html</link>
		<comments>http://claudiushauptmann.com/hibernate-spatial-and-envers-geospatial-revisions.html#comments</comments>
		<pubDate>Sun, 22 Feb 2009 12:16:49 +0000</pubDate>
		<dc:creator>Claudius</dc:creator>
				<category><![CDATA[Geospatial Computing]]></category>
		<category><![CDATA[@audited]]></category>
		<category><![CDATA[changeset]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[envers]]></category>
		<category><![CDATA[Hibernate]]></category>
		<category><![CDATA[HibernateSpatial]]></category>
		<category><![CDATA[history]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[jpa]]></category>
		<category><![CDATA[JTS]]></category>
		<category><![CDATA[Maps]]></category>
		<category><![CDATA[PostGIS]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[spatial computing]]></category>
		<category><![CDATA[subversion]]></category>

		<guid isPermaLink="false">http://claudiushauptmann.com/?p=253</guid>
		<description><![CDATA[Especially in social software, where almost everybody can edit the contents like in Wikipedia, it is important to store the history of the data. OpenStreetMap is also working on a concept of changesets. Some time ago, I was looking for such functionality that can be used in conjunction with the Java Persistence API (JPA) and [...]]]></description>
			<content:encoded><![CDATA[<p>Especially in social software, where almost everybody can edit the contents like in <a href="http://en.wikipedia.org/">Wikipedia</a>, it is important to store the history of the data. <a href="http://www.openstreetmap.org/">OpenStreetMap</a> is also working on a <a href="http://wiki.openstreetmap.org/wiki/OSM_Protocol_Version_0.6">concept of changesets</a>. Some time ago, I was looking for such functionality that can be used in conjunction with the <a href="http://java.sun.com/developer/technicalArticles/J2EE/jpa/">Java Persistence API (JPA)</a> and automatically logs changes. Perhaps you already noticed the <a href="http://www.warski.org/blog/">Blog of Adam Warksi</a> at my blogroll, who is the founder of the <a href="http://www.jboss.org/envers/">Envers project</a>.</p>
<p><em>The Envers project aims to enable easy versioning of persistent classes.  All that you have to do is annotate your persistent class or some of its properties, that you want to version, with <strong><code>@Audited</code></strong>.  For each versioned entity, a table will be created, which will hold the history of changes made to the entity. You can then retrieve and query historical data without much effort. Similarly to <a href="http://subversion.tigris.org/">Subversion</a>, the library has a concept of <strong>revisions</strong>. Basically, one transaction is one revision (unless the transaction didn&#8217;t modify any versioned entities). As the revisions are global, having a revision number, you can query for various entities at that revision, retrieving a (partial) view of the database at that revision. You can find a revision number having a date, and the other way round, you can get the date at which a revision was commited.</em> [<a href="http://www.jboss.org/envers/">Envers project</a>]</p>
<p>Envers works on top of / integrates into hibernate, which is an implementation of the JPA specification integrated in the <a href="http://www.jboss.org/projects/">JBoss Application Server</a> and since october 2008, <a href="http://www.warski.org/blog/?p=34">envers is an official hibernate module</a>.</p>
<p>My first attempts getting envers work, were very disappointing, since I got many exceptions, after I added envers to a well working project. Yesterday, I made a new attempt and downloaded snapshot versions of hibernate (until now, there is no official release of hibernate, which contains envers) from the <a href="http://www.jboss.org/community/docs/DOC-11381">MavenSnapshotReporitory</a>. My code was working fine and envers created a new revision for my data for every commit. Really nice! Great job, Adam!</p>
<p>But what about <a href="http://www.hibernatespatial.org/">Hibernate Spatial</a> (like in my <a href="http://claudiushauptmann.com/how-to-store-your-map-data-on-the-server-side.html">post about storing map data</a>) and Envers? Do they cooperate? I was dying to write a little test, whether that works. First I, created a class, that stores markers, that have got an id, a caption and a location:</p>
<pre>
<pre class="brush: java;">package com.claudiushauptmann.test;

import java.io.Serializable;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

import org.hibernate.annotations.Type;
import org.hibernate.envers.Audited;

import com.vividsolutions.jts.geom.Point;

@Entity
@Audited
public class Marker implements Serializable {

    @Id
    @GeneratedValue
    private int id;

    @Type(type=&quot;org.hibernatespatial.GeometryUserType&quot;)
    private Point location; 

    private String caption;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public Point getLocation() {
        return location;
    }

    public void setLocation(Point location) {
        this.location = location;
    }

    public String getCaption() {
        return caption;
    }

    public void setCaption(String caption) {
        this.caption = caption;
    }
}</pre>
</pre>
<p>Second, I created two tables, one for the current data and one for the history:</p>
<pre>
<pre class="brush: sql;">CREATE TABLE marker
(
  id integer NOT NULL,
  &quot;location&quot; geometry NOT NULL,
  caption text NOT NULL,
  CONSTRAINT &quot;PK_marker&quot; PRIMARY KEY (id)
)
WITH (OIDS=FALSE);</pre>
<pre class="brush: sql;">CREATE TABLE marker_aud
(
  id integer NOT NULL,
  &quot;location&quot; geometry NOT NULL,
  caption text NOT NULL,
  rev integer NOT NULL,
  revtype integer NOT NULL
)
WITH (OIDS=FALSE);</pre>
</pre>
<p>Third, there must be a table, that contains meta data about the revisions. This is the minimum of the columns:</p>
<pre>
<pre class="brush: sql;">CREATE TABLE revinfo
(
  rev integer NOT NULL,
  revtstmp bigint NOT NULL,
  CONSTRAINT &quot;PK_REVINFO&quot; PRIMARY KEY (rev)
)
WITH (OIDS=FALSE);</pre>
</pre>
<p>Don&#8217;t forget to add enlist envers in your persistence.xml file:</p>
<pre>
<pre class="brush: xml;">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;persistence version=&quot;1.0&quot; xmlns=&quot;http://java.sun.com/xml/ns/persistence&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation=&quot;http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd&quot;&gt;
    &lt;persistence-unit name=&quot;test&quot;&gt;
        &lt;jta-data-source&gt;java:/test&lt;/jta-data-source&gt;
        &lt;properties&gt;
            &lt;property name=&quot;hibernate.dialect&quot; value=&quot;org.hibernatespatial.postgis.PostgisDialect&quot; /&gt;
            &lt;property name=&quot;hibernate.show_sql&quot; value=&quot;true&quot; /&gt;
            &lt;property name=&quot;hibernate.ejb.event.post-insert&quot; value=&quot;org.hibernate.envers.event.AuditEventListener&quot; /&gt;
            &lt;property name=&quot;hibernate.ejb.event.post-update&quot; value=&quot;org.hibernate.envers.event.AuditEventListener&quot; /&gt;
            &lt;property name=&quot;hibernate.ejb.event.post-delete&quot; value=&quot;org.hibernate.envers.event.AuditEventListener&quot; /&gt;
            &lt;property name=&quot;hibernate.ejb.event.pre-collection-update&quot; value=&quot;org.hibernate.envers.event.AuditEventListener&quot; /&gt;
            &lt;property name=&quot;hibernate.ejb.event.pre-collection-remove&quot; value=&quot;org.hibernate.envers.event.AuditEventListener&quot; /&gt;
            &lt;property name=&quot;hibernate.ejb.event.post-collection-recreate&quot; value=&quot;org.hibernate.envers.event.AuditEventListener&quot; /&gt;
            &lt;property name=&quot;org.jboss.envers.warnOnUnsupportedTypes&quot; value=&quot;true&quot; /&gt;      
        &lt;/properties&gt;
    &lt;/persistence-unit&gt;
&lt;/persistence&gt;</pre>
</pre>
<p>This is working very well! For every commit, a new revision is created in the table revinfo and the new version of the marker is stored into the table marker_aud and the data within the table marker was updated.</p>
<p>Of course, we do not only need to store the history, but also a way to retrieve past data. There is a pretty nice <a href="http://www.jboss.org/envers/quickstart.html">quickstart tutorial about envers</a>, which describes, how to get the data out of the history with the <a href="http://www.jboss.org/files/envers/api/org/jboss/envers/VersionsReader.html">VersionsReader</a>.</p>
<img src="http://feeds.feedburner.com/~r/claudiushauptmann/~4/hXVuzYxZGE0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://claudiushauptmann.com/hibernate-spatial-and-envers-geospatial-revisions.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://claudiushauptmann.com/hibernate-spatial-and-envers-geospatial-revisions.html</feedburner:origLink></item>
		<item>
		<title>Using OpenStreetMap data in your own applications</title>
		<link>http://feedproxy.google.com/~r/claudiushauptmann/~3/Dg0WsncToYs/using-openstreetmap-data-in-your-own-applications.html</link>
		<comments>http://claudiushauptmann.com/using-openstreetmap-data-in-your-own-applications.html#comments</comments>
		<pubDate>Mon, 16 Feb 2009 11:16:10 +0000</pubDate>
		<dc:creator>Claudius</dc:creator>
				<category><![CDATA[Geospatial Computing]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[Hibernate]]></category>
		<category><![CDATA[HibernateSpatial]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JOSM]]></category>
		<category><![CDATA[JTS]]></category>
		<category><![CDATA[Maps]]></category>
		<category><![CDATA[OpenStreetMap]]></category>
		<category><![CDATA[OSM]]></category>
		<category><![CDATA[Osmosis]]></category>
		<category><![CDATA[PostGIS]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[spatial computing]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://claudiushauptmann.com/?p=216</guid>
		<description><![CDATA[OpenStreetMap is a collaborative project to create a free editable map of the world. The maps are created using data from portable GPS devices, aerial photography and other free sources [Wikipedia]. OpenStreetMap data can be used freely under the terms of the Creative Commons Attribution-ShareAlike 2.0 license [OpenStreetMap]. Thus it can be used e.g. in your own applications, mobile devices or web pages, for productive use [...]]]></description>
			<content:encoded><![CDATA[<p><strong></strong><a href="http://openstreetmap.org/"><span style="text-decoration: none;">OpenStreetMap</span></a> is a collaborative project to create a free editable map of the world. The maps are created using data from portable GPS devices, aerial photography and other free sources [<a href="http://en.wikipedia.org/wiki/Openstreetmap"><span style="text-decoration: none;">Wikipedia</span></a>]. <strong></strong>OpenStreetMap data can be used freely under the terms of the <a class="external text" title="http://creativecommons.org/licenses/by-sa/2.0/" rel="nofollow" href="http://creativecommons.org/licenses/by-sa/2.0/"><span style="text-decoration: none;">Creative Commons Attribution-ShareAlike 2.0 license</span></a> [<a href="http://wiki.openstreetmap.org/wiki/OpenStreetMap_License"><span style="text-decoration: none;">OpenStreetMap</span></a>]. Thus it can be used e.g. in your own applications, mobile devices or web pages, for productive use or testing purposes (This abstract makes no claim to be complete, please read the license before using the data).</p>
<p>The <a href="http://wiki.openstreetmap.org/wiki/Database/Model">database model is documented here</a>. OpenStreetMap provides two ways for programmatical use/access. First, <a href="http://wiki.openstreetmap.org/wiki/Planet.osm">snapshots and diffs</a> that can be imported in your own database and be used for replication (The files are <a href="http://planet.openstreetmap.org/">here</a>). Second, an <a href="http://wiki.openstreetmap.org/wiki/OSM_Protocol_Version_0.5">API</a> (implemented as a <a href="http://en.wikipedia.org/wiki/Representational_State_Transfer">REST webservice</a>). This link <a href="http://openstreetmap.org/api/0.5/node/48783748/">queries a mountain peak in bavaria</a>, for example (Look at the source code, if the browser displays a blank page). If you are just interested in looking up some points of interest from time to time and internet access is available, using the API is a good idea. Otherwise an export or  replication (full or partial) of the database is the better solution, particularly if you want to run intensive geospatial computings on the data.</p>
<p>You do not have to write your own client code to access the API. <a href="http://wiki.openstreetmap.org/wiki/JOSM">JOSM</a>, a java-based map editor for OpenStreetMap is using the web service to load the map content and store your change set. Perhaps it is a good idea to look at the <a href="http://josm.openstreetmap.de/svn/trunk">source code</a> and the api calls. I tried to check out the project via <a href="http://www.eclipse.org/">eclipse</a> (with <a href="http://subclipse.tigris.org/">subclipse</a>) and I just had to click debug as java application and it worked fine, since the required libraries are included in the svn repository. Then I could debug through the code and watch the API calls. Unfortunately there is much GUI code mixed into the logic, but the code is easy to understand.</p>
<p>If you want to export/replicate the data into your own data store, there is a really great java-based console application: <a href="http://wiki.openstreetmap.org/wiki/Osmosis">Osmosis</a>. It can be run within <a href="http://en.wikipedia.org/wiki/Cron">cron jobs</a> to periodically to replicate the database. I checked out the <a href="http://svn.openstreetmap.org/applications/utils/osmosis/trunk/">source code</a>, but had some troubles debugging the application, since not all libraries are included in the svn repository. It took some time to collect all necessary jar files from the web. I advise you not to grub through the code. There is a lot of functionality out of the box, which can be read <a href="http://wiki.openstreetmap.org/wiki/Osmosis/DetailedUsage">here</a> and there is an <a href="http://wiki.openstreetmap.org/wiki/Osmosis/WritingPlugins">API to write your own plugins for Osmosis</a>, that can be included in the pipelines, if you want to use your own database schema, e.g. with <a href="http://www.hibernatespatial.org/">Hibernate Spatial</a> like in my last post about <a href="http://claudiushauptmann.com/how-to-store-your-map-data-on-the-server-side.html">how to store your map data on the server side</a>. A really great feature is the option <a href="http://wiki.openstreetmap.org/wiki/Osmosis/DetailedUsage#--read-change-interval_.28--rci.29">&#8211;read-change-interval</a>, that calculates, which change sets have to be downloaded to keep your own replication of the database up to date.</p>
<img src="http://feeds.feedburner.com/~r/claudiushauptmann/~4/Dg0WsncToYs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://claudiushauptmann.com/using-openstreetmap-data-in-your-own-applications.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://claudiushauptmann.com/using-openstreetmap-data-in-your-own-applications.html</feedburner:origLink></item>
		<item>
		<title>How to store your map data on the server side</title>
		<link>http://feedproxy.google.com/~r/claudiushauptmann/~3/00Perq2gH8s/how-to-store-your-map-data-on-the-server-side.html</link>
		<comments>http://claudiushauptmann.com/how-to-store-your-map-data-on-the-server-side.html#comments</comments>
		<pubDate>Tue, 10 Feb 2009 22:02:27 +0000</pubDate>
		<dc:creator>Claudius</dc:creator>
				<category><![CDATA[Geospatial Computing]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Hibernate]]></category>
		<category><![CDATA[HibernateSpatial]]></category>
		<category><![CDATA[JTS]]></category>
		<category><![CDATA[Marker]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[OGC]]></category>
		<category><![CDATA[Overlay]]></category>
		<category><![CDATA[Point]]></category>
		<category><![CDATA[Polygon]]></category>
		<category><![CDATA[Polyline]]></category>
		<category><![CDATA[PostGIS]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[spatial computing]]></category>

		<guid isPermaLink="false">http://claudiushauptmann.com/?p=195</guid>
		<description><![CDATA[Imagine you want to store your markers, polylines and polygons that are currently on a MapWidget on the server side into a database. How would you do that? My first attempt ended with some Java classes that were mapped via Hibernate in a MySQL database. I created an abstract class &#8220;overlay&#8221; that was inherited by &#8220;point&#8221;, [...]]]></description>
			<content:encoded><![CDATA[<p>Imagine you want to store your <a href="http://gwt-google-apis.googlecode.com/svn/javadoc/maps/1.0/com/google/gwt/maps/client/overlay/Marker.html">markers</a>, <a href="http://gwt-google-apis.googlecode.com/svn/javadoc/maps/1.0/com/google/gwt/maps/client/overlay/Polyline.html">polylines</a> and <a href="http://gwt-google-apis.googlecode.com/svn/javadoc/maps/1.0/com/google/gwt/maps/client/overlay/Polygon.html">polygons</a> that are currently on a <a href="http://gwt-google-apis.googlecode.com/svn/javadoc/maps/1.0/com/google/gwt/maps/client/MapWidget.html">MapWidget</a> on the server side into a database. How would you do that? My first attempt ended with some Java classes that were mapped via <a href="http://www.hibernate.org/">Hibernate</a> in a <a href="http://www.mysql.com/">MySQL</a> database. I created an abstract class &#8220;overlay&#8221; that was inherited by &#8220;point&#8221;, &#8220;polyline&#8221; and &#8220;polygon&#8221;. Map features, e.g. streets, mountain peaks or alpine huts, had properties of the type of the new classes. That was really great. But the first problems came with need for computings like boundaries and distances or testing for spatial relationships like intersects, touches, crosses, within and contains.</p>
<p>Last week there was a <a href="http://www11.in.tum.de/Veranstaltungen/OberseminarWS0809">talk of a student about his diploma thesis.</a> Like me, he also wanted to store spatial data into a database. He chose <a href="http://www.postgresql.org/">PostgreSQL</a> as the database engine with an extension called <a href="http://www.postgis.org/">PostGIS</a> that &#8220;spatially enables&#8221; the PostgreSQL server, allowing it to be used as a backend spatial database for geographic information systems (GIS), much like ESRI&#8217;s SDE or Oracle&#8217;s Spatial extension. PostGIS follows the <a href="http://www.opengis.org/">OpenGIS</a> &#8221;<a href="http://www.opengis.org/docs/99-049.pdf">Simple Features Specification for SQL</a>&#8221; and has been <a href="http://www.postgis.org/files/opengis-certification.png" target="certification">certified as compliant</a> with the &#8220;Types and Functions&#8221; profile. Wow, great! Really nice! MySQL in conrast lacks most of this features.</p>
<p>But how does this work with <a href="http://www.hibernate.org/">Hibernate</a>? And, if this is possible, into which classes will my database rows be mapped? Let&#8217;s ask Google! I found some <a href="http://www.foss4g2007.org/presentations/view.php?abstract_id=118">slides from Chris Hodgson</a> that issued this topic. In his slides he demonstrates the use of <a href="http://www.hibernatespatial.org/">Hibernate Spatial</a>, an extension for Hibernate that maps the data into the <a href="http://www.vividsolutions.com/jts/jtshome.htm">JTS Topology Suite</a>. Wow, super! Now I can handle spatial computings in database queries and with my Java code! There is a <a href="http://www.hibernatespatial.org/tutorial.html">tutorial for your first steps with Hibernate Spatial</a> that works fine (also with Hibernate 3.4 and JTS 1.10). After I&#8217;ve finished this tutorial, I tryed to switch my code to this solution and, for now, it seems that it works stable and fast.</p>
<img src="http://feeds.feedburner.com/~r/claudiushauptmann/~4/00Perq2gH8s" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://claudiushauptmann.com/how-to-store-your-map-data-on-the-server-side.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://claudiushauptmann.com/how-to-store-your-map-data-on-the-server-side.html</feedburner:origLink></item>
		<item>
		<title>gwt-maps-gxt-1.0.0.Beta1 released</title>
		<link>http://feedproxy.google.com/~r/claudiushauptmann/~3/fbrvhQWdP_A/gwt-maps-gxt-100beta1.html</link>
		<comments>http://claudiushauptmann.com/gwt-maps-gxt-100beta1.html#comments</comments>
		<pubDate>Sun, 21 Dec 2008 17:24:25 +0000</pubDate>
		<dc:creator>Claudius</dc:creator>
				<category><![CDATA[Rich Internet Applications]]></category>
		<category><![CDATA[Ext JS]]></category>
		<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Web Toolkit]]></category>
		<category><![CDATA[GWT]]></category>
		<category><![CDATA[gwt-maps-gxt]]></category>
		<category><![CDATA[GXT]]></category>
		<category><![CDATA[Popup Menus]]></category>
		<category><![CDATA[release]]></category>
		<category><![CDATA[ToolTips]]></category>

		<guid isPermaLink="false">http://claudiushauptmann.com/?p=120</guid>
		<description><![CDATA[I&#8217;ve just uploaded a beta release of the previous anounced library gwt-maps-gxt, that integrates the tooltips and popup menus of Ext GWT into the Google Maps wrapper for GWT. You can attach different popup menus for lines, vertices and end points of a polyline. If you are looking for help how to use this library [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just uploaded a <a href="http://code.google.com/p/gwt-maps-gxt/downloads/list">beta release</a> of the <a href="http://claudiushauptmann.com/nice-looking-tooltips-and-popup-menus-for-google-maps-with-gwt.html">previous anounced</a> library <a href="http://code.google.com/p/gwt-maps-gxt/">gwt-maps-gxt</a>, that integrates the tooltips and popup menus of <a href="http://extjs.com/products/gxt/">Ext GWT</a> into the <a href="http://code.google.com/p/gwt-google-apis/">Google Maps wrapper for GWT</a>. You can attach different popup menus for lines, vertices and end points of a polyline.</p>
<p>If you are looking for help how to use this library with your own google maps-mashup, <a href="http://claudiushauptmann.com/tutorial-google-maps-with-java-gwt-and-eclipse.html">my tutorial</a> might be useful. Don&#8217;t forget to additionally add both jar-files of GXT and gwt-maps-gxt to the build path (look at step 4 of the eclipse setup). The download contains rudimentary javadoc.</p>
<p><span style="color: #ff0000;">UPDATE (06/30/2009): Links updated.</span></p>
<p>Here is a <a href="http://claudiushauptmann.com/gwt-maps-gxt/demo/">demo of the wrapper</a> and the <a href="http://code.google.com/p/gwt-maps-gxt/source/browse/tags/1.0.0.Beta1/samples/src/com/claudiushauptmann/gwt/maps/gxt/samples/client/GwtMapsGxt_Sample.java">source code of the sample is here</a>.</p>
<p><a href="http://claudiushauptmann.com/gwt-maps-gxt/demo/"><img class="alignnone size-medium wp-image-126" title="snapshot_demo_gwt-maps-gxt-100beta1" src="http://claudiushauptmann.com/wp-content/uploads/2008/12/snapshot_demo_gwt-maps-gxt-100beta1-300x232.png" alt="snapshot_demo_gwt-maps-gxt-100beta1" width="300" height="232" /></a></p>
<img src="http://feeds.feedburner.com/~r/claudiushauptmann/~4/fbrvhQWdP_A" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://claudiushauptmann.com/gwt-maps-gxt-100beta1.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://claudiushauptmann.com/gwt-maps-gxt-100beta1.html</feedburner:origLink></item>
		<item>
		<title>Tutorial: Google Maps with Java, GWT and Eclipse</title>
		<link>http://feedproxy.google.com/~r/claudiushauptmann/~3/7Hw1v7aJOiQ/tutorial-google-maps-with-java-gwt-and-eclipse.html</link>
		<comments>http://claudiushauptmann.com/tutorial-google-maps-with-java-gwt-and-eclipse.html#comments</comments>
		<pubDate>Sun, 16 Nov 2008 11:10:05 +0000</pubDate>
		<dc:creator>Claudius</dc:creator>
				<category><![CDATA[Rich Internet Applications]]></category>
		<category><![CDATA[Cypal Studio]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Ganymede]]></category>
		<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Web Toolkit]]></category>
		<category><![CDATA[GWT]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Maps]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://claudiushauptmann.com/?p=49</guid>
		<description><![CDATA[The intention of this tutorial is to show how to use eclipse to develop a rich internet application with GWT that contains a Google Maps-map. The focus is less on the API provided by the Google Maps-wrapper for GWT, but how to use eclipse as a comfortable IDE. Google itself provides a very comprehensive example [...]]]></description>
			<content:encoded><![CDATA[<p>The intention of this tutorial is to show how to use eclipse to develop a rich internet application with GWT that contains a Google Maps-map. The focus is less on the <a href="http://code.google.com/docreader/#p(gwt-google-apis)s(gwt-google-apis)t(Overview)">API provided by the Google Maps-wrapper for GWT</a>, but how to use eclipse as a comfortable IDE. Google itself provides a <a href="http://gwt.google.com/samples/HelloMaps-1.0.1/HelloMaps.html">very comprehensive example</a> (<a href="http://code.google.com/p/gwt-google-apis/source/browse/#svn/trunk/maps/samples/hellomaps%3Fstate%3Dclosed">source code</a>) that demonstrates the possibilities of the wrapper.</p>
<p><span style="color: #ff0000;">UPDATE (01/07/09): Since there is some discussion about how to put this tutorial into action, I decided to provide a zip file containing the finished eclipse workspace of this tutorial: <a href="http://claudiushauptmann.com/wp-content/uploads/2008/11/tutorialgwtmaps.zip">tutorialgwtmaps</a>. <em>Don&#8217;t forget to update the build path and the GWT home folder!</em></span></p>
<p><span style="color: #ff0000;"><em>UPDATE 2 (01/14/09): Code Formatted.<br />
</em></span></p>
<p><strong>Preliminaries</strong><br />
Download the required software and sign for a Google Maps API-key.</p>
<ol>
<li><strong>Download and install the Java SE Development Kit</strong><br />
You need the JDK to run Eclipse, the GWT Hosted Mode-Browser and the GWT-Compiler. On MacOS the JDK is installed by default, for other operating systems you can <a href="http://java.sun.com/javase/downloads/index.jsp">download the JDK from Sun</a>.<a href="http://java.sun.com/javase/downloads/index.jsp"><br />
</a></li>
<li><strong>Download and unzip the Eclipse IDE for Java EE Developers</strong><br />
<a href="http://www.eclipse.org/downloads/">Download Eclipse for EE Developers</a>. You can unzip Eclipse to whereever you like, for example into the folder <em>applications</em> or <em>programs</em>.</li>
<li><strong>Download the Google Web Toolkit</strong><br />
<a href="http://code.google.com/webtoolkit/">GWT is available at code.google.com</a>. Download and unzip it to whereever you like.</li>
<li><strong>Download und install Cypal Studio for GWT</strong><br />
<a href="http://www.cypal.in/studio">Cypal Studio</a> is a Eclipse plugin that integrates GWT into Eclipse the build process and the launch process. Unzip the plugin jars into <em>&lt;Eclipse home&gt;/dropins/Cypal/plugins.</em> You have to manually create the Cypal and plugins directories (<a href="http://www.cypal.in/studiodocs#installation">installation manual</a>).<a href="http://java.sun.com/javase/downloads/index.jsp"><br />
</a></li>
<li><strong>Download and unzip the Google Maps-library for GWT</strong><br />
The <a href="http://code.google.com/p/gwt-google-apis/downloads/list">Google Maps-library for GWT</a> wrappes the javascript necessary to run Google Maps on your website. Download and unzip the library to whereever you like.</li>
<li><strong>Sign up for a Google Maps Api-Key</strong><br />
This step is optional for development on your local computer (localhost). <a href="http://code.google.com/apis/maps/signup.html">You can sign up for a key here</a>.</li>
</ol>
<p><strong>Setup the eclipse workspace</strong><br />
Configure the eclipse workspace and project. This section contains only the configuration of eclipse, no source code that you would check in for example into svn.</p>
<ol>
<li><strong>Eclipse Workspace</strong><br />
Open Eclipse and choose a directory as workspace (project configuration and source code will/can be stored here).<br />
<a href="http://claudiushauptmann.com/wp-content/uploads/2008/11/eclipse-ganymede-workspace.png"><img class="alignnone size-medium wp-image-64" title="eclipse-ganymede-workspace" src="http://claudiushauptmann.com/wp-content/uploads/2008/11/eclipse-ganymede-workspace-300x145.png" alt="" width="300" height="145" /></a><a href="http://claudiushauptmann.com/wp-content/uploads/2008/11/eclipse-ganymede-welcome.png"><br />
</a>When Eclipse has started, you will see the welcome screen:<a href="http://claudiushauptmann.com/wp-content/uploads/2008/11/eclipse-ganymede-welcome.png"><br />
<img class="alignnone size-medium wp-image-66" title="eclipse-ganymede-welcome" src="http://claudiushauptmann.com/wp-content/uploads/2008/11/eclipse-ganymede-welcome-300x193.png" alt="" width="300" height="193" /></a><br />
Close the Welcome screen with the arrow on the right side and the workspace is displayed:<br />
<a href="http://claudiushauptmann.com/wp-content/uploads/2008/11/eclipse-workspace.png"><img class="alignnone size-medium wp-image-67" title="eclipse-workspace" src="http://claudiushauptmann.com/wp-content/uploads/2008/11/eclipse-workspace-300x193.png" alt="" width="300" height="193" /></a></li>
<li><strong>Configuration of Cypal Studio</strong><br />
Open the Preferences Dialog (<em>Eclipse/Preferences</em> on MacOS or <em>Window/Preferences</em>) and select <em>Cypal Studio</em> on the left side. Then Enter the folder where the Google Web Tookit is located and click <em>OK</em>:<br />
<a href="http://claudiushauptmann.com/wp-content/uploads/2008/11/eclipse-preferences-cypal-studio.png"><img class="alignnone size-medium wp-image-68" title="eclipse-preferences-cypal-studio" src="http://claudiushauptmann.com/wp-content/uploads/2008/11/eclipse-preferences-cypal-studio-300x203.png" alt="" width="300" height="203" /></a></li>
<li><strong>Create the GWT-Project</strong><br />
Select <em>File/New/Dynamic Web Project</em>. Enter <em>MyFirst Google Maps Application</em> as project name and select <em>Cypal Studio for GWT</em> as configuration, then click <em>Next</em>.<br />
<a href="http://claudiushauptmann.com/wp-content/uploads/2008/11/eclipse-new-dynamic-web-project-page-1.png"><img class="alignnone size-medium wp-image-69" title="eclipse-new-dynamic-web-project-page-1" src="http://claudiushauptmann.com/wp-content/uploads/2008/11/eclipse-new-dynamic-web-project-page-1-300x244.png" alt="" width="300" height="244" /></a><br />
You can leave the default values on the next page and click <em>Finish</em>.<br />
<a href="http://claudiushauptmann.com/wp-content/uploads/2008/11/eclipse-new-dynamic-web-project-page-2.png"><img class="alignnone size-medium wp-image-70" title="eclipse-new-dynamic-web-project-page-2" src="http://claudiushauptmann.com/wp-content/uploads/2008/11/eclipse-new-dynamic-web-project-page-2-300x244.png" alt="" width="300" height="244" /></a><br />
You will see a new project on the left side in the project explorer:<br />
<a href="http://claudiushauptmann.com/wp-content/uploads/2008/11/eclipse-workspace-with-dynamic-web-project.png"><img class="alignnone size-medium wp-image-71" title="eclipse-workspace-with-dynamic-web-project" src="http://claudiushauptmann.com/wp-content/uploads/2008/11/eclipse-workspace-with-dynamic-web-project-300x193.png" alt="" width="300" height="193" /></a></li>
<li><strong>Add the Google Maps-library to the Java Build Path</strong><br />
Rightclick your new project and select <em>Properties</em> in the popup menu, then select <em>Java Build Path</em> on the left side and <em>Libraries</em> on the top. Click <em>Add External JARs&#8230;</em> and add the file <em>gwt-maps.jar</em> located in the Google Maps for GWT-library.<br />
<a href="http://claudiushauptmann.com/wp-content/uploads/2008/11/eclipse-dynamic-web-project-properties.png"><img class="alignnone size-medium wp-image-74" title="eclipse-dynamic-web-project-properties" src="http://claudiushauptmann.com/wp-content/uploads/2008/11/eclipse-dynamic-web-project-properties-300x232.png" alt="" width="300" height="232" /></a></li>
</ol>
<p><strong>Your first Google Maps-application<br />
</strong>This section handles the source code and configuration files. It adjusts the GWT-template to create a Google Maps-map.</p>
<ol>
<li><strong>Create a GWT Module</strong><br />
Select <em>File/New/Other&#8230;</em>, then <em>Cypal Studio/GWT Module</em> and click <em>Next</em>:<br />
<a href="http://claudiushauptmann.com/wp-content/uploads/2008/11/eclipse-new-gwt-module.png"><img class="alignnone size-medium wp-image-78" title="eclipse-new-gwt-module" src="http://claudiushauptmann.com/wp-content/uploads/2008/11/eclipse-new-gwt-module-300x287.png" alt="" width="300" height="287" /></a><br />
Enter a package (e.g.: <em>com.claudiushauptmann.gwt.maps.samples</em>) and a name for the module (e.g.: <em>MyFirstMapsModule</em>) and click <em>Finish</em>.<br />
<a href="http://claudiushauptmann.com/wp-content/uploads/2008/11/eclipse-new-gwt-module-page-2.png"><img class="alignnone size-medium wp-image-79" title="eclipse-new-gwt-module-page-2" src="http://claudiushauptmann.com/wp-content/uploads/2008/11/eclipse-new-gwt-module-page-2-276x300.png" alt="" width="276" height="300" /></a><br />
Your workspace will look like this with 3 new files. A Java class with the module, a wrapper-html-file and a xml-file that defines the GWT-Module:<br />
<a href="http://claudiushauptmann.com/wp-content/uploads/2008/11/eclipse-workspace-with-gwt-module.png"><img class="alignnone size-medium wp-image-80" title="eclipse-workspace-with-gwt-module" src="http://claudiushauptmann.com/wp-content/uploads/2008/11/eclipse-workspace-with-gwt-module-300x193.png" alt="" width="300" height="193" /></a></li>
<li><strong>Configure your project for Google Maps</strong><br />
Add<em> &lt;inherits name=&#8221;com.google.gwt.maps.GoogleMaps&#8221;/&gt;</em> and<em>&lt;script src=&#8221;http://maps.google.com/maps?gwt=1&amp;amp;file=api&amp;amp;v=2&#8243; /&gt;</em> to your Module XML-file (e.g.: <em>MyFirstMapsModule.gwt.xml</em>). You can enter your API-Key here (optional for localhost).</p>
<pre class="brush: xml;">
&amp;lt;module&amp;gt;

	&amp;lt;!-- Inherit the core Web Toolkit stuff.                  --&amp;gt;
	&amp;lt;inherits name='com.google.gwt.user.User'/&amp;gt;

	&amp;lt;inherits name=&amp;quot;com.google.gwt.maps.GoogleMaps&amp;quot;/&amp;gt;
	&amp;lt;script src=&amp;quot;http://maps.google.com/maps?gwt=1&amp;amp;amp;amp;file=api&amp;amp;amp;amp;v=2&amp;quot; /&amp;gt;

	&amp;lt;!-- Specify the app entry point class.                   --&amp;gt;
	&amp;lt;entry-point class='com.claudiushauptmann.gwt.maps.samples.client.MyFirstMapsModule'/&amp;gt;

  	&amp;lt;inherits name=&amp;quot;com.google.gwt.user.theme.standard.Standard&amp;quot;/&amp;gt;
  	&amp;lt;!-- &amp;lt;inherits name=&amp;quot;com.google.gwt.user.theme.chrome.Chrome&amp;quot;/&amp;gt; --&amp;gt;
  	&amp;lt;!-- &amp;lt;inherits name=&amp;quot;com.google.gwt.user.theme.dark.Dark&amp;quot;/&amp;gt; --&amp;gt;

&amp;lt;/module&amp;gt;
</pre>
</li>
<li><strong>Add some code that inserts a MapWidget into the web page:</strong>
<pre class="brush: java;">
package com.claudiushauptmann.gwt.maps.samples.client;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.maps.client.MapWidget;
import com.google.gwt.maps.client.control.MapTypeControl;
import com.google.gwt.maps.client.control.SmallMapControl;
import com.google.gwt.maps.client.event.MapClickHandler;
import com.google.gwt.maps.client.geom.LatLng;
import com.google.gwt.maps.client.overlay.Marker;
import com.google.gwt.maps.client.overlay.Overlay;
import com.google.gwt.user.client.ui.RootPanel;

public class MyFirstMapsModule implements EntryPoint {

	public void onModuleLoad() {
		MapWidget mapWiget = new MapWidget(LatLng.newInstance(48.136559, 11.576318), 13);
		mapWiget.setSize(&amp;quot;500px&amp;quot;, &amp;quot;300px&amp;quot;);

	    mapWiget.addControl(new SmallMapControl());
	    mapWiget.addControl(new MapTypeControl());

	    mapWiget.addMapClickHandler(new MapClickHandler() {
	      public void onClick(MapClickEvent e) {
	        MapWidget sender = e.getSender();
	        Overlay overlay = e.getOverlay();
	        LatLng point = e.getLatLng();

	        if (overlay != null &amp;amp;amp;&amp;amp;amp; overlay instanceof Marker) {
	          sender.removeOverlay(overlay);
	        } else {
	          sender.addOverlay(new Marker(point));
	        }
	      }
	    });

	    RootPanel.get().add(mapWiget);
	}
}
</pre>
</li>
</ol>
<p><strong>The launch configuration<br />
</strong>Now we want to run and debug our application. First we debug it in the Hosted Mode-Browser, the we compile it to javascript and open it with a standard internet browser.</p>
<ol>
<li><strong>Create a launch configuration and start debugging</strong><br />
Select <em>Run/Debug Configurations&#8230;</em> and create a <em>new launch configuration</em> with the button on the top left. Enter a <em>name</em> for the launch configuration and selct your <em>project</em> and your <em>module</em>, then click <em>Apply</em>.<br />
<a href="http://claudiushauptmann.com/wp-content/uploads/2008/11/eclipse-launch-configuration-gwt.png"><img class="alignnone size-medium wp-image-93" title="eclipse-launch-configuration-gwt" src="http://claudiushauptmann.com/wp-content/uploads/2008/11/eclipse-launch-configuration-gwt-300x245.png" alt="" width="300" height="245" /></a></li>
<li><strong>Debugging</strong><br />
Click <em>Debug</em> and the Hosted Mode-browser starts:<br />
<a href="http://claudiushauptmann.com/wp-content/uploads/2008/11/gwt-hosted-mode-browser-with-google-maps.png"><img class="alignnone size-medium wp-image-94" title="gwt-hosted-mode-browser-with-google-maps" src="http://claudiushauptmann.com/wp-content/uploads/2008/11/gwt-hosted-mode-browser-with-google-maps-300x231.png" alt="" width="300" height="231" /></a></li>
<li><strong>Compile and run in your Browser</strong><br />
Click <em>Compile/Browse</em>, wait some seconds and your standard browser will open and show your application:<br />
<a href="http://claudiushauptmann.com/wp-content/uploads/2008/11/gwt-and-google-maps-in-browser.png"><img class="alignnone size-medium wp-image-95" title="gwt-and-google-maps-in-browser" src="http://claudiushauptmann.com/wp-content/uploads/2008/11/gwt-and-google-maps-in-browser-300x194.png" alt="" width="300" height="194" /></a></li>
</ol>
<p>It would give me a great pleasure, if you wrote a short comment, whether this tutorial was helpful!</p>
<img src="http://feeds.feedburner.com/~r/claudiushauptmann/~4/7Hw1v7aJOiQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://claudiushauptmann.com/tutorial-google-maps-with-java-gwt-and-eclipse.html/feed</wfw:commentRss>
		<slash:comments>88</slash:comments>
		<feedburner:origLink>http://claudiushauptmann.com/tutorial-google-maps-with-java-gwt-and-eclipse.html</feedburner:origLink></item>
		<item>
		<title>Nice-looking tooltips and popup menus for Google Maps with GWT</title>
		<link>http://feedproxy.google.com/~r/claudiushauptmann/~3/C2zjtqgXKrM/nice-looking-tooltips-and-popup-menus-for-google-maps-with-gwt.html</link>
		<comments>http://claudiushauptmann.com/nice-looking-tooltips-and-popup-menus-for-google-maps-with-gwt.html#comments</comments>
		<pubDate>Sun, 02 Nov 2008 20:11:41 +0000</pubDate>
		<dc:creator>Claudius</dc:creator>
				<category><![CDATA[Rich Internet Applications]]></category>
		<category><![CDATA[Ext JS]]></category>
		<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Web Toolkit]]></category>
		<category><![CDATA[GWT]]></category>
		<category><![CDATA[gwt-maps-gxt]]></category>
		<category><![CDATA[GXT]]></category>
		<category><![CDATA[Popup Menus]]></category>
		<category><![CDATA[ToolTips]]></category>

		<guid isPermaLink="false">http://claudiushauptmann.com/?p=7</guid>
		<description><![CDATA[For all who love the Google Web Toolkit (GWT), the nice-looking GUI components of GXT (the GWT-version of ExtJs) and Google Maps, I&#8217;ve started a google code-project that integrates the tooltips and popup menus of GXT into the GWT version of Google Maps: http://code.google.com/p/gwt-maps-gxt/ The screenshot shows a tool tip that ist attached to the [...]]]></description>
			<content:encoded><![CDATA[<p>For all who love the <a href="http://code.google.com/webtoolkit/">Google Web Toolkit (GWT)</a>, the nice-looking GUI components of <a href="http://www.extjs.com/products/gxt/">GXT</a> (the GWT-version of ExtJs) and <a href="http://code.google.com/apis/maps/">Google Maps</a>, I&#8217;ve started a <a href="http://code.google.com/">google code-project</a> that integrates the tooltips and popup menus of GXT into the <a href="http://code.google.com/p/gwt-google-apis/">GWT version of Google Maps</a>:</p>
<p><a href="http://code.google.com/p/gwt-maps-gxt/">http://code.google.com/p/gwt-maps-gxt/</a></p>
<p>The screenshot shows a tool tip that ist attached to the standard Google Maps marker (the mouse pointer is missing), popup menus will come soon:</p>
<p><img class="alignnone size-full wp-image-12" title="Tool tip for Google Maps with GWT" src="http://claudiushauptmann.com/wp-content/uploads/2008/11/tooltipmapsgxt.png" alt="" width="400" height="167" /></p>
<p>The java code of the sample:</p>
<p><code>
<pre class="brush: java;">
package com.claudiushauptmann.gwt.maps.gxt.samples.client;

import com.claudiushauptmann.gwt.maps.gxt.client.MarkerTip;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.maps.client.MapWidget;
import com.google.gwt.maps.client.control.LargeMapControl;
import com.google.gwt.maps.client.geom.LatLng;
import com.google.gwt.maps.client.overlay.Marker;
import com.google.gwt.user.client.ui.RootPanel;

public class GwtMapsGxt_Sample implements EntryPoint {
	private MapWidget mapWidget;
	private Marker  marker;
	private MarkerTip markerTip;

	public void onModuleLoad() {
		mapWidget = new MapWidget();
		mapWidget.setCenter(LatLng.newInstance(48.136559, 11.576318), 13);
		mapWidget.setWidth(&quot;100%&quot;);
		mapWidget.setHeight(&quot;100%&quot;);
		mapWidget.addControl(new LargeMapControl());
		mapWidget.setContinuousZoom(true);
		mapWidget.setScrollWheelZoomEnabled(true);
		RootPanel.get().add(mapWidget);

		marker = new Marker(mapWidget.getCenter());
		mapWidget.addOverlay(marker);

		markerTip = new MarkerTip(mapWidget, marker);
		markerTip.setTitle(&quot;Marienplatz&quot;);
		markerTip.setDescription(&quot;Marienplatz is a central square in the&quot;
				+ &quot; city center of Munich, Germany since 1158.&lt;br/&gt;&quot;
				+ &quot; In the Middle Ages markets and tournaments were held in this&quot;
				+ &quot; city square. The Glockenspiel in the new city hall was inspired&quot;
				+ &quot; by these tournaments, and draws millions of tourists a year.&quot;);
	}
}
</pre>
<p></code></p>
<img src="http://feeds.feedburner.com/~r/claudiushauptmann/~4/C2zjtqgXKrM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://claudiushauptmann.com/nice-looking-tooltips-and-popup-menus-for-google-maps-with-gwt.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://claudiushauptmann.com/nice-looking-tooltips-and-popup-menus-for-google-maps-with-gwt.html</feedburner:origLink></item>
	</channel>
</rss>
