tag:blogger.com,1999:blog-60466698059897433282024-03-18T23:42:42.587-05:00GWT BlogInformation on my favorite web tool kit - The Google Web Toolkit!Jimhttp://www.blogger.com/profile/06526750126342570761noreply@blogger.comBlogger38125tag:blogger.com,1999:blog-6046669805989743328.post-19486738481615631292012-03-09T10:52:00.000-06:002012-03-09T10:55:48.332-06:00Visualizing Piles of Money<span style="font-family: Verdana, sans-serif;">I recently had a need to use the Column Chart <a href="http://visapi-gadgets.googlecode.com/svn/trunk/pilesofmoney/doc.html">'Piles of Money'</a> in one of my GWT projects.</span><br />
<span style="font-family: Verdana, sans-serif;"> <img src="http://code.google.com/apis/chart/interactive/docs/gallery/images/icon-pilesofmoney.png" /></span><br />
<span style="font-family: Verdana, sans-serif;">However to be able to use it in my project I needed to <a href="http://code.google.com/p/gwt-google-apis/wiki/VisualizationNewWrapper" target="_blank">create a GWT "wrapper" class as documented here</a>. See the bottom of my post for the Wrapper Class Code</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span><br />
<span style="font-family: Verdana, sans-serif;">With my new warpper in hand I am now able to create my data table:</span><br />
<br />
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s1">private</span> AbstractDataTable createMoneyTable() {</span></div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>DataTable data = DataTable.create();</span></div>
<div class="p2">
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span></div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>data.addColumn(ColumnType.<span class="s2">STRING</span>, <span class="s3">"Label"</span>);</span></div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>data.addColumn(ColumnType.<span class="s2">NUMBER</span>, <span class="s3">"Value"</span>);</span></div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>data.addRows(4);</span></div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>data.setValue(0, 0, <span class="s3">"France"</span>);</span></div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>data.setValue(1, 0, <span class="s3">"Germany"</span>);</span></div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>data.setValue(2, 0, <span class="s3">"USA"</span>);</span></div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>data.setValue(3, 0, <span class="s3">"Poland"</span>);</span></div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>data.setCell(0, 1, 10, <span class="s3">"$10,000"</span>, <span class="s1">null</span>);</span></div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>data.setCell(1, 1, 30, <span class="s3">"$30,000"</span>, <span class="s1">null</span>);</span></div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>data.setCell(2, 1, 20, <span class="s3">"$20,000"</span>, <span class="s1">null</span>);</span></div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>data.setCell(3, 1, 7.5, <span class="s3">"$7,500"</span>, <span class="s1">null</span>);</span></div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s1">return</span> data;</span></div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>}</span></div>
<br />
<span style="font-family: Verdana, sans-serif;">Once my data table is ready I can also create a select handler:</span><br />
<br />
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="s1">private</span> SelectHandler createMoneySelectHandler(<span class="s1">final</span> PilesOfMoney chart) {</span></div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s1">return</span> <span class="s1">new</span> SelectHandler() {</span></div>
<div class="p2">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>@Override</span></div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s1">public</span> <span class="s1">void</span> onSelect(SelectEvent event) {</span></div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>String message = <span class="s3">""</span>;</span></div>
<div class="p3">
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span></div>
<div class="p4">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>// May be multiple selections.</span></div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>JsArray<selection> selections = chart.getSelections();</selection></span></div>
<div class="p3">
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span></div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s1">for</span> (<span class="s1">int</span> i = 0; i < selections.length(); i++) {</span></div>
<div class="p4">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>// add a new line for each selection</span></div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>message += i == 0 ? <span class="s3">""</span> : <span class="s3">"\n"</span>;</span></div>
<div class="p3">
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span></div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>Selection selection = selections.get(i);</span></div>
<div class="p3">
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span></div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s1">if</span> (selection.isCell()) {</span></div>
<div class="p4">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>// isCell() returns true if a cell has been selected.</span></div>
<div class="p3">
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span></div>
<div class="p4">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>// getRow() returns the row number of the selected cell.</span></div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s1">int</span> row = selection.getRow();</span></div>
<div class="p4">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>// getColumn() returns the column number of the selected</span></div>
<div class="p4">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>// cell.</span></div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s1">int</span> column = selection.getColumn();</span></div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>message += <span class="s3">"cell "</span> + row + <span class="s3">":"</span> + column + <span class="s3">" selected"</span>;</span></div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>} <span class="s1">else</span> <span class="s1">if</span> (selection.isRow()) {</span></div>
<div class="p4">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>// isRow() returns true if an entire row has been</span></div>
<div class="p4">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>// selected.</span></div>
<div class="p3">
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span></div>
<div class="p4">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>// getRow() returns the row number of the selected row.</span></div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s1">int</span> row = selection.getRow();</span></div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>message += <span class="s3">"row "</span> + row + <span class="s3">" selected"</span>;</span></div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>} <span class="s1">else</span> {</span></div>
<div class="p4">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>// unreachable</span></div>
<div class="p5">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>message += </span>"Selections should be either row selections or cell selections."<span class="s2">;</span></span></div>
<div class="p5">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>message += </span>" Other visualizations support column selections as well."<span class="s2">;</span></span></div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>}</span></div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>}</span></div>
<div class="p3">
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span></div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>Window.alert(message);</span></div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>}</span></div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>};</span></div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span>}</span></div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"><br /></span></div>
<div class="p1">
<span style="font-family: Verdana, sans-serif;">Create the Options method for this chart:</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div class="p1">
</div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="s1">private</span> PilesOfMoney.Options createMoneyOptions() {</span></div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace;">PilesOfMoney.Options options = PilesOfMoney.Options</span></div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>.create();</span></div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>options.setTitle(<span class="s2">"Lots of money"</span>);</span></div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>options.setCurrency(<span class="s2">"USD"</span>);</span></div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>options.setCanSelect(<span class="s1">true</span>);</span></div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>options.setMin(2);</span></div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>options.setMax(70);</span></div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s1">return</span> options;</span></div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span>}</span></div>
<div class="p1">
<br /></div>
<div class="p1">
<span style="font-family: Verdana, sans-serif;">From my GWT onModuleLoad() method I can load the visualization api:</span></div>
<div class="p1">
</div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"><span class="s1"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>// Load the visualization <span class="s2">api</span>, passing the onLoadCallback to be called</span></div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"><span class="s1"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>// when loading is done.</span></div>
<div class="p2">
<span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>VisualizationUtils.loadVisualizationApi(onLoadCallback,</span></div>
<div class="p2">
<span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>CoreChart.<span class="s3">PACKAGE</span>);</span></div>
<div class="p2">
<span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"><br /></span></div>
<div class="p2">
<span style="font-family: Verdana, sans-serif;">Define my onLoadCallback:</span></div>
<div class="p2">
</div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="s1"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>// Create a <span class="s2">callback</span> to be called when the visualization API</span></div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="s1"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>// has been loaded.</span></div>
<div class="p2">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>Runnable onLoadCallback = <span class="s3">new</span> Runnable() {</span></div>
<div class="p2">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s3">public</span> <span class="s3">void</span> run() {</span></div>
<div class="p2">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>Panel panel = RootPanel.get();</span></div>
<div class="p3">
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span></div>
<div class="p3">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span></div>
<div class="p2">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>PilesOfMoney pom = <span class="s3">new</span> PilesOfMoney(createMoneyTable(),</span></div>
<div class="p2">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>createMoneyOptions());</span></div>
<div class="p3">
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span></div>
<div class="p2">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>pom.addSelectHandler(createMoneySelectHandler(pom));</span></div>
<div class="p2">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>panel.add(pom);</span></div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span></div>
<div class="p2">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>}</span></div>
<div class="p2">
<br /></div>
<div class="p2">
<span style="font-family: Verdana, sans-serif;"><b>A couple of other things are still required</b></span></div>
<div class="p2">
<span style="font-family: Verdana, sans-serif;">Modify your module.gwt.xml file and add the following import to support Visualizations:</span></div>
<div class="p2">
</div>
<div class="p1">
<span style="font-family: 'Courier New', Courier, monospace;"><span class="s1"> <</span><span class="s3">inherits</span><span class="s1"> </span><span class="s4">name</span><span class="s1">=</span>'com.google.gwt.visualization.Visualization'></span><br />
<span style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="s2"><br /></span></span></div>
<div class="p1">
<span class="s2" style="font-family: Verdana, sans-serif;">Modify the GWT applications web page and add the following code:</span><br />
<span class="s2" style="font-family: Verdana, sans-serif;">
</span><br />
<div class="p1">
<span class="s2" style="font-family: Verdana, sans-serif;"> <script s1"="" type="text/<span class=">
javascript</span>" <span class="s1">src</span>="http://visapi-gadgets.googlecode.com/svn/trunk/pilesofmoney/pom.js">
</script></span></div>
<div class="p1">
<span class="s2" style="font-family: Verdana, sans-serif;"><br /></span></div>
</div>
<div class="p1">
<span style="font-family: Verdana, sans-serif;">Once you have everything done your visualization should be ready to go:</span></div>
<div class="p1">
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRYXGx5AaQsfNp1lSH59tq2hwEivN-wLlirU5C4MpMtHCmQLAZG47Me1AuAfyKaO7RRbtXTogQpwPWyaAvqMMQFYRb9cclRCvGAeo_0pAkpu9uR9RUwVGnioAegyzPKZGhSAQ2xLl0j24/s1600/Screen+shot+2012-03-09+at+10.31.17+AM.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRYXGx5AaQsfNp1lSH59tq2hwEivN-wLlirU5C4MpMtHCmQLAZG47Me1AuAfyKaO7RRbtXTogQpwPWyaAvqMMQFYRb9cclRCvGAeo_0pAkpu9uR9RUwVGnioAegyzPKZGhSAQ2xLl0j24/s1600/Screen+shot+2012-03-09+at+10.31.17+AM.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Stacks of Money Demo</td></tr>
</tbody></table>
<br /></div>
<br />
<br />
<div class="p2">
<br />
<br /></div>
<br />
<br />
<br />
<br />
<br />
<br />
<span style="font-family: Verdana, sans-serif;">You can also click on the stacks of cash and get a window alert showing the row of data that you clicked:</span><br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKoxwTppix_CqfKemEfRJIxc1XktksFM8WqqcIW1FsvTXRegPW5Uuk3r6O6wsDSB9uduqEM89jSlkOmIrzttHGxu3-1rfT4Za2QWn9gBlcfT2j9VBoU15eEGV6Yi-HfhCB7Gg5A240oBM/s1600/Screen+shot+2012-03-09+at+10.32.43+AM.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="230" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKoxwTppix_CqfKemEfRJIxc1XktksFM8WqqcIW1FsvTXRegPW5Uuk3r6O6wsDSB9uduqEM89jSlkOmIrzttHGxu3-1rfT4Za2QWn9gBlcfT2j9VBoU15eEGV6Yi-HfhCB7Gg5A240oBM/s320/Screen+shot+2012-03-09+at+10.32.43+AM.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Stacks of Money with select event</td></tr>
</tbody></table>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<span style="font-family: Verdana, sans-serif;">And finally the all important Wrapper Class for the Piles of Money chart:</span><br />
<br />
<span style="font-family: 'Courier New', Courier, monospace;">/**</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"> * </span><br />
<span style="font-family: 'Courier New', Courier, monospace;"> */</span><br />
<span style="font-family: 'Courier New', Courier, monospace;">package com.mynumnum.vis.client;</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span><br />
<span style="font-family: 'Courier New', Courier, monospace;">import com.google.gwt.core.client.JavaScriptObject;</span><br />
<span style="font-family: 'Courier New', Courier, monospace;">import com.google.gwt.core.client.JsArray;</span><br />
<span style="font-family: 'Courier New', Courier, monospace;">import com.google.gwt.dom.client.Element;</span><br />
<span style="font-family: 'Courier New', Courier, monospace;">import com.google.gwt.visualization.client.AbstractDataTable;</span><br />
<span style="font-family: 'Courier New', Courier, monospace;">import com.google.gwt.visualization.client.AbstractDrawOptions;</span><br />
<span style="font-family: 'Courier New', Courier, monospace;">import com.google.gwt.visualization.client.Selectable;</span><br />
<span style="font-family: 'Courier New', Courier, monospace;">import com.google.gwt.visualization.client.Selection;</span><br />
<span style="font-family: 'Courier New', Courier, monospace;">import com.google.gwt.visualization.client.events.Handler;</span><br />
<span style="font-family: 'Courier New', Courier, monospace;">import com.google.gwt.visualization.client.events.ReadyHandler;</span><br />
<span style="font-family: 'Courier New', Courier, monospace;">import com.google.gwt.visualization.client.events.SelectHandler;</span><br />
<span style="font-family: 'Courier New', Courier, monospace;">import com.google.gwt.visualization.client.events.StateChangeHandler;</span><br />
<span style="font-family: 'Courier New', Courier, monospace;">import com.google.gwt.visualization.client.visualizations.Visualization;</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span><br />
<span style="font-family: 'Courier New', Courier, monospace;">/**</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"> * @author Jim Hathaway</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"> * </span><br />
<span style="font-family: 'Courier New', Courier, monospace;"> */</span><br />
<span style="font-family: 'Courier New', Courier, monospace;">public class PilesOfMoney extends Visualization<pilesofmoney.options> implements</pilesofmoney.options></span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Selectable {</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>/**</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span> * Options for drawing the chart.</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span> */</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>public static class Options extends AbstractDrawOptions {</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>public static Options create() {</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>return JavaScriptObject.createObject().cast();</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>protected Options() {</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>public final native void setTitle(String title) /*-{</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>this.title = title;</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}-*/;</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>/**</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span> * @param currency</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span> * String USD or EUR</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span> */</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>public final native void setCurrency(String currency) /*-{</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>this.currency = currency;</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}-*/;</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>/**</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span> * </span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span> * @param canSelect</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span> * boolean, if true (default), users can click on bars</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span> */</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>public final native void setCanSelect(boolean canSelect) /*-{</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>this.canSelect = canSelect;</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}-*/;</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>public final native void setMin(int min) /*-{</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>this.min = min;</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}-*/;</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>public final native void setMax(int max) /*-{</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>this.max = max;</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}-*/;</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>public static final String PACKAGE = "pilesofmoney";</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>public PilesOfMoney() {</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>super();</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>public PilesOfMoney(AbstractDataTable data, Options options) {</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>super(data, options);</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>public final void addReadyHandler(ReadyHandler handler) {</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Handler.addHandler(this, "ready", handler);</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>public final void addStateChangeHandler(StateChangeHandler handler) {</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Handler.addHandler(this, "statechange", handler);</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>@Override</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>protected native JavaScriptObject createJso(Element parent) /*-{</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>return new $wnd.PilesOfMoney(parent);</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}-*/;</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>public final void addSelectHandler(SelectHandler handler) {</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Selection.addSelectHandler(this, handler);</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>public final JsArray<selection> getSelections() {</selection></span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>return Selection.getSelections(this);</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>public final void setSelections(JsArray<selection> sel) {</selection></span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Selection.setSelections(this, sel);</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span><br />
<span style="font-family: 'Courier New', Courier, monospace;">}</span><br />
<div>
<br /></div>Jimhttp://www.blogger.com/profile/06526750126342570761noreply@blogger.com0tag:blogger.com,1999:blog-6046669805989743328.post-77912347650773188632011-09-08T08:27:00.000-05:002011-09-08T08:27:57.689-05:00GWT 2.4.0 Release<div>Looks like it is time to upgrade GWT again. Version 2.4 of GWT is now available. See the release notes below:</div><div><br /></div><a href="http://code.google.com/webtoolkit/release-notes.html#Release_Notes_Current">Google Web Toolkit Release Notes</a>:<br /><br /><a style="font-size:13px" href="https://chrome.google.com/webstore/detail/pengoopmcjnbflcjbmoeodbmoflcgjlk">'via Blog this'</a>Jimhttp://www.blogger.com/profile/06526750126342570761noreply@blogger.com0tag:blogger.com,1999:blog-6046669805989743328.post-33444776750829429562011-01-12T23:31:00.003-06:002011-01-12T23:39:32.772-06:00GAE/GWT Book: Google App Engine Java and GWT Application Development<span class="Apple-style-span" style="font-family: Verdana, sans-serif;">Daniel Guermeur asked me to share some information on this new GAE/GWT book. <br />
<br />
As you might know from my <a href="http://gwtblog.mynumnum.com/2007/11/gwt-hosting.html">GWT blog post about hosting GWT apps</a> you can deploy your app to a simple servlet container like Tomcat. Recently Google App Engine started supporting GWT applications for deployment, so this gives you the ability to use Google's massive infrastructure to deploy your GWT application. There are some things that you will need to do differently however when deploying to GAE vs a standard servlet container, and the book </span><span class="Apple-style-span" style="font-size: 32px;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: small;"><a href="http://www.amazon.com/gp/product/1849690448?ie=UTF8&tag=hattipandtrif-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1849690448">Google App Engine Java and GWT Application Development</a> </span></span><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">is there to help you though the process of building your GWT application and deploying it to <a href="http://code.google.com/appengine/">Google App Engine</a>. Through the different chapters of the book you will follow the authors as they build and deploy their <a href="http://connectrapp.appspot.com/">GWT app Connectr</a>.</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiccwj7RAYOhYK-j9TJN0l7r5Q0bY1WEcjermiVM7rqrZeZ79Nu2bdUff0Eabgh2i8LzKR74ZWS2f55nGnmba0U8vHqaKkyfEvyedeFvFVAfwWARuWF77DgPsLzVrYkrE6D3yFptPVY2Vw/s1600/Screen+shot+2011-01-12+at+11.25.15+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="140" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiccwj7RAYOhYK-j9TJN0l7r5Q0bY1WEcjermiVM7rqrZeZ79Nu2bdUff0Eabgh2i8LzKR74ZWS2f55nGnmba0U8vHqaKkyfEvyedeFvFVAfwWARuWF77DgPsLzVrYkrE6D3yFptPVY2Vw/s400/Screen+shot+2011-01-12+at+11.25.15+PM.png" width="400" /></a></div><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;">To get a feel for what to expect with this book you can <a href="http://theconnectr.blogspot.com/p/sample-chapter.html">download Chapter 9 - Robustness and Scalability: Transactions, Memcache,and Datastore Design</a> - for free!</span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;">Along with the free chapter 9 content you also will find:</span><br />
<ul><li><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">An overview of what the book covers</span></li>
<li><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">A listing of the chapters found in the book with information on what topics will be covered</span></li>
<li><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">A section introducing the two authors </span><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; white-space: nowrap;"><a href="http://twitter.com/#!/@supercobra">Daniel Guermeur</a> and </span></span><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><a href="http://twitter.com/#!/@amygdala">Amy Unru</a></span><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">. </span></li>
</ul><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">You can also find a nice <a href="http://theconnectr.blogspot.com/p/what-you-will-learn_26.html">description of the book and its chapters here </a>if you prefer not to download the PDF file of chapter 9.</span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;">The book is now available for <a href="http://www.amazon.com/gp/product/1849690448?ie=UTF8&tag=hattipandtrif-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1849690448">order now from Amazon.com</a></span><br />
<iframe align="left" frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://rcm.amazon.com/e/cm?t=hattipandtrif-20&o=1&p=8&l=bpl&asins=1849690448&fc1=000000&IS2=1&lt1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="align: left; height: 245px; padding-right: 10px; padding-top: 5px; width: 131px;"></iframe><br />
<br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><a href="http://www.amazon.com/Google-Engine-Java-Application-Development/product-reviews/1849690448/ref=dp_top_cm_cr_acr_txt?ie=UTF8&showViewpoints=1">Amazon Reviews for this book</a><br />
<span class="Apple-style-span" style="font-family: Times;"><a href="http://connectrapp.appspot.com/"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">Use the Connectr App found in the book.</span></a></span></span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
If you already have this book you can also</span><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><a href="https://www.packtpub.com/support?nid=6295"> download the code from Packt</a></span><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">. Enter in your email address and you will receive a link to download link for the </span><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><a href="http://connectrapp.appspot.com/">Connectr App</a></span><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> source as found in the book. For those of you who are interested Connectr source code is licensed under the Apache License, Version 2.0.</span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
<a href="http://theconnectr.blogspot.com/">The Authors blog can be found here</a></span><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> where you will find c</span><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><span class="Apple-style-span">ode updates and errata when they become available. </span></span>Jimhttp://www.blogger.com/profile/06526750126342570761noreply@blogger.com0tag:blogger.com,1999:blog-6046669805989743328.post-1482535181518635162010-12-09T10:03:00.000-06:002010-12-09T10:03:12.983-06:00GWT browser plugin for Chrome under Mac and Linux now available<span class="Apple-style-span" style="font-family: Verdana, sans-serif;">Chrome Developer plugins are now available on Linux and Mac. <a href="http://googlewebtoolkit.blogspot.com/2010/12/announcing-chrome-developer-plugin.html">See this post for more information on this new feature.</a></span>Jimhttp://www.blogger.com/profile/06526750126342570761noreply@blogger.com0tag:blogger.com,1999:blog-6046669805989743328.post-14180743193364884662010-12-04T21:42:00.000-06:002010-12-04T21:42:53.197-06:00Free online GWT/GAE Book<div>If you are looking for a great source on developing with the Google Web Toolkit and Google App Engine check out this free online book. Link is below.</div><a href="http://code.google.com/p/gwt-gae-book/">gwt-gae-book - Project Hosting on Google Code</a>Jimhttp://www.blogger.com/profile/06526750126342570761noreply@blogger.com0tag:blogger.com,1999:blog-6046669805989743328.post-89283419504552933852010-10-28T07:38:00.000-05:002010-10-28T07:38:04.091-05:00GWT 2.1 Released, download now<a href="http://code.google.com/webtoolkit/doc/latest/ReleaseNotes.html">See what is new with Version 2.1 of GWT.</a><br />
<a href="http://code.google.com/webtoolkit/download.html">Download GWT 2.1.</a><br />
You can also download the latest version of GWT using the download links on the right hand of this page ->Jimhttp://www.blogger.com/profile/06526750126342570761noreply@blogger.com0tag:blogger.com,1999:blog-6046669805989743328.post-53579049947001140632010-10-27T11:17:00.000-05:002010-10-27T11:17:52.937-05:00Latest Trunk Build of GWT Available NowOften I find that waiting for the next build of GWT just takes too long. Well this is not really true, builds of GWT come out as quickly as the GWT team can produce them.<br />
<br />
So what if you are looking for the latest trunk build of GWT? You can always build your own copy by checking out the source, checking out the tools, installing <a href="http://ant.apache.org/">Apache Ant</a> and then compiling the GWT code yourself <a href="http://code.google.com/webtoolkit/makinggwtbetter.html#workingoncode">as found here</a>. One thing about compiling it yourself is that it takes a while to complete, like upwards of an hour.<br />
<br />
A few weeks ago I had a chance to start using <a href="http://hudson-ci.org/">Hudson</a> to automatically build some of my GWT projects, then the though occurred to me that I could also use Hudson to build the latest trunk of GWT when there there is a source code change and then post the resulting output file.<br />
<br />
As of today I am happy to share that you can <a href="http://code.google.com/p/hat3deals/downloads/list">download the latest GWT Trunk</a> from my google code project. The project name is horrible as it does not have anything to do with GWT, but if you are looking for the latest GWT trunk build I am sure you can look past the poor project name.<br />
If you would like to watch for the latest build via RSS you can <a href="http://code.google.com/feeds/p/hat3deals/downloads/basic">use this feed here</a> to watch for the latest trunk build.<br />
<br />
Remember trunk builds of GWT are probably not something you want to move into a production environment, but sometimes you need the latest GWT build.<br />
<br />
<b>Quick Links:</b><br />
<a href="http://code.google.com/p/hat3deals/downloads/list">My Google code project download section (get GWT trunk builds here).</a><br />
<a href="http://code.google.com/feeds/p/hat3deals/downloads/basic">RSS feed of the latest GWT trunk builds.</a>Jimhttp://www.blogger.com/profile/06526750126342570761noreply@blogger.com0tag:blogger.com,1999:blog-6046669805989743328.post-17473151107176487032010-08-05T10:08:00.000-05:002010-08-05T10:08:00.642-05:00Instantiations purchased by Google<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;">According to the Instantiations web site they have been purchased by Google. Here is a little info from their site:</span><br />
<br />
<span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"><span class="Apple-style-span" style="font-size: small;">We’re excited to announce that Instantiations is now part of Google!</span></span><br />
<span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"><span class="Apple-style-span" style="font-size: small;">Yes it’s true. Instantiations’ award-winning Java and Ajax development tools and our incredible Eclipse team have been acquired by Google. We are all very excited about taking our technology and team to the next level - and there is no bigger step up than Google!........</span></span><br />
<br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;">They also said that you should watch the official GWT blog for more information and I assume an official announcement from Google.</span><br />
<a href="http://googlewebtoolkit.blogspot.com/"><span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;">Google Web Toolkit Blog</span></a>Jimhttp://www.blogger.com/profile/06526750126342570761noreply@blogger.com0tag:blogger.com,1999:blog-6046669805989743328.post-2036062653399189492010-06-11T22:08:00.001-05:002010-06-15T21:51:44.236-05:00New GWT 2 Development book: Essential GWT<span class="Apple-style-span" style="font-family: Verdana, sans-serif;">I recently had the opportunity to be one of the technical editors for the book </span><i><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><a href="http://www.pearsonhighered.com/educator/product/Essential-GWT-Building-for-the-Web-with-Google-Web-Toolkit-20/9780321705143.page">Essential GWT: Building for the Web with Google Web Tookit 2</a>.</span></i><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
Some of the topics in the book are:</span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span><br />
<b><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">Getting started </span></b><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span><br />
<ul><li><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">Some background on GWT, what it is, etc.</span></li>
<li><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">Understanding the tools you will need while developing with GWT such as Eclipse</span></li>
<li><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">Client side code vs server side code</span></li>
<li><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">OOPHM, compiler options, GWT application layout.</span></li>
</ul><div><b><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"> Client Side Coding</span></b></div><div><ul><li><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">User interface programming</span></li>
<li><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">Form designing using HTML, XML, UiBinder.</span></li>
<li><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">Other GWT packages such as ExtGWT</span></li>
</ul><div><b><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">Server Communications</span></b></div></div><div><ul><li><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">Remote Procedure Calls </span></li>
<li><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">Communicating with other serivces like XML and JSON</span></li>
<li><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">Sending and receiving files</span></li>
</ul><div><b><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">Building rich internet applications</span></b></div></div><div><ul><li><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">Integrating JavaScript and calling it from GWT</span></li>
<li><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">Exception handling</span></li>
<li><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">Using other services and APIs such as Google search, Yahoo search</span></li>
<li><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">Internationalization (i18n) and Localization (i10n)</span></li>
<li><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">Testing your GWT app with Junit and test cases</span></li>
</ul></div><div style="margin-bottom: 0pt; margin-left: 0pt; margin-right: 0pt; margin-top: 0pt;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">I really enjoyed being a technical editor for this book. The author </span><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">Federico Kereki did a great job covering just about every topic you would need to create a powerful GWT application.</span></div><div style="margin-bottom: 0pt; margin-left: 0pt; margin-right: 0pt; margin-top: 0pt;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span></div><div style="margin-bottom: 0pt; margin-left: 0pt; margin-right: 0pt; margin-top: 0pt;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">There were a couple of topics that were not covered in much detail, but I find they are things that I use in my daily GWT development:</span></div><div style="margin-bottom: 0pt; margin-left: 0pt; margin-right: 0pt; margin-top: 0pt;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">1. Building ANT tasks that can automate your build process. I have built scripts that compile server side code, gwt code and deploy to my Tomcat server of choice. </span></div><div style="margin-bottom: 0pt; margin-left: 0pt; margin-right: 0pt; margin-top: 0pt;"><span class="Apple-style-span" style="font-family: Verdana, sans-serif;">2. Using GWT app engine with your GWT application. You can either pay to have Tomcat hosting on the internet or you can use GWT app engine to host your GWT project for free. <br />
<br />
I highly recommend this book, you can pickup a copy from Amazon:</span></div><div style="font-size: 16px; margin-bottom: 0pt; margin-left: 0pt; margin-right: 0pt; margin-top: 0pt;"><span class="Apple-style-span" style="font-size: medium;"><iframe align="left" frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://rcm.amazon.com/e/cm?t=hattipandtrif-20&o=1&p=8&l=bpl&asins=0321705149&fc1=000000&IS2=1&lt1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="align: left; height: 245px; padding-right: 10px; padding-top: 5px; width: 131px;"></iframe><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span></span></div><div style="font-size: 16px; margin-bottom: 0pt; margin-left: 0pt; margin-right: 0pt; margin-top: 0pt;"><span class="Apple-style-span" style="font-size: medium;"><b><span class="Apple-style-span" style="font-family: Verdana, sans-serif;"><br />
</span></b></span></div><div style="font-size: 16px; margin-bottom: 0pt; margin-left: 36pt; margin-right: 0pt; margin-top: 0pt;"><span class="Apple-style-span" style="font-family: Verdana;"><span class="Apple-style-span" style="font-size: medium;"><br />
</span></span></div>Jimhttp://www.blogger.com/profile/06526750126342570761noreply@blogger.com10tag:blogger.com,1999:blog-6046669805989743328.post-81351192830927628252009-12-10T09:26:00.000-06:002009-12-10T09:26:45.806-06:00Upgrading GWT code from version 1.7 to version 2.0<span style="font-family: Arial, Helvetica, sans-serif;"><span class="Apple-style-span" style="font-size: small;">I have already starting converting several of my GWT apps from older version of GWT to version 2.0. </span></span><a href="http://code.google.com/webtoolkit/doc/latest/ReleaseNotes.html#Upgrading"><span style="font-family: Arial, Helvetica, sans-serif;"><span class="Apple-style-span" style="font-size: small;">According to this link the steps are as follows.</span></span></a><span style="font-family: Arial, Helvetica, sans-serif;"><span class="Apple-style-span" style="font-size: small;"><br />
</span></span><span class="Apple-style-span" style="font-family: Helvetica, Arial, sans-serif;"></span><br />
<div style="line-height: 16px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 1em;"><span style="font-family: Arial, Helvetica, sans-serif;"><span class="Apple-style-span" style="font-size: small;">There</span></span><span class="Apple-style-span" style="font-size: small;"> are 3 tasks involved when upgrading a GWT 1.7 project to a GWT 2.0 project:</span><br />
</div><ul style="line-height: 16px; margin-bottom: 0px; margin-left: 15px; margin-right: 0px; margin-top: 0.5em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><li style="margin-bottom: 0px; margin-left: 1.5em; margin-right: 0px; margin-top: 0.3em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><span class="Apple-style-span" style="font-size: small;">Download GWT 2.0 and update your launch configurations</span></li>
<li style="margin-bottom: 0px; margin-left: 1.5em; margin-right: 0px; margin-top: 0.3em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><span class="Apple-style-span" style="font-size: small;">HostedMode has been replaced by DevMode, so you will need to update your Eclipse project settings accordingly.</span></li>
<li style="margin-bottom: 0px; margin-left: 1.5em; margin-right: 0px; margin-top: 0.3em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><span class="Apple-style-span" style="font-size: small;">Tests now run in HtmlUnit by default. You will need to modify some of your tests to work with HtmlUnit.<br />
</span></li>
</ul><span class="Apple-style-span" style="line-height: 16px;"><span class="Apple-style-span" style="font-size: small;"><br />
</span></span><br />
<span class="Apple-style-span" style="font-family: Helvetica, Arial, sans-serif;"><span class="Apple-style-span" style="line-height: 16px;"><span class="Apple-style-span" style="font-size: small;">So far I have not run into any issues with upgrading. As of this post I have not seen any mention of a GWT 2.0 Incubator file, but my apps seem happy with the older version gwt-incubator-july-14-2009.jar. I have seen several warnings however while compiling with this version such as:<br />
<br />
</span></span></span><br />
<span class="Apple-style-span" style="font-family: Helvetica, Arial, sans-serif; font-size: small;"><span class="Apple-style-span" style="line-height: 16px;"></span></span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-style-span" style="font-size: x-small;"> [WARN] Line 102: Referencing deprecated class 'com.google.gwt.widgetideas.table.client.overrides.HTMLTable'</span></span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-style-span" style="font-size: x-small;"> [WARN] Line 103: Referencing deprecated class 'com.google.gwt.widgetideas.table.client.overrides.Grid'</span></span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-style-span" style="font-size: x-small;"> [WARN] Line 104: Referencing deprecated class 'com.google.gwt.widgetideas.table.client.overrides.Grid'</span></span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span class="Apple-style-span" style="font-size: x-small;"> [WARN] Line 104: Referencing deprecated class 'com.google.gwt.widgetideas.table.client.overrides.HTMLTable'</span></span><br />
<div><br />
</div>Jimhttp://www.blogger.com/profile/06526750126342570761noreply@blogger.com3tag:blogger.com,1999:blog-6046669805989743328.post-52730909639654877582009-12-10T09:18:00.001-06:002009-12-10T09:19:42.660-06:00GWT 2.0.0 is here. Get your copy today!<span style="font-family: Arial, Helvetica, sans-serif;">You can now download and start using GWT version 2.0. If you are using Eclipse the links are below, and of course if you are already using Eclipse then you should be able to update to the latest plugin and GWT version automatically.</span><br />
<br />
<span style="font-family: 'Courier New', Courier, monospace;">Eclipse 3.5 (Galileo)</span><br />
<span style="font-family: 'Courier New', Courier, monospace;">http://dl.google.com/eclipse/plugin/3.5</span><br />
<span style="font-family: 'Courier New', Courier, monospace;">Eclipse 3.4 (Ganymede)</span><br />
<span style="font-family: 'Courier New', Courier, monospace;">http://dl.google.com/eclipse/plugin/3.4</span><br />
<span style="font-family: 'Courier New', Courier, monospace;">Eclipse 3.3 (Europa)</span><br />
<span style="font-family: 'Courier New', Courier, monospace;">http://dl.google.com/eclipse/plugin/3.3</span><br />
<br />
<span style="font-family: Arial, Helvetica, sans-serif;">If you would like to download the latest version of GWT without using Eclipse you can find the <a href="http://code.google.com/webtoolkit/download.html">download here.</a></span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><br />
</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">Some of the new changes:</span><br />
<span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"><b>Speed Tracer</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">Speed Tracer is a Chrome Extension that allows you to pinpoint performance problems in your web applications.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><a href="http://code.google.com/webtoolkit/speedtracer/get-started.html#downloading">Downloading & getting started with Speed Tracer for Google Chrome</a></span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><br />
</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><a href="http://www.youtube.com/watch?v=Sn_3rJaexKc&feature=player_embedded">Speed tracer tutorial video</a></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br />
</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><a href="http://code.google.com/webtoolkit/doc/latest/ReleaseNotes.html#NewFeatures">What's New in GWT 2.0?</a></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br />
</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><b>New Features</b></span><br />
<ul><li><span style="font-family: Arial, Helvetica, sans-serif;"><b><span style="font-weight: normal;">Development Mode</span></b></span></li>
<li><span style="font-family: Arial, Helvetica, sans-serif;">Speed Tracer</span></li>
<li><span style="font-family: Arial, Helvetica, sans-serif;">Developer Guided Code Splitting</span></li>
<li><span style="font-family: Arial, Helvetica, sans-serif;">Compiler Optimizations</span></li>
<li><span style="font-family: Arial, Helvetica, sans-serif;">Draft Compile</span></li>
<li><span style="font-family: Arial, Helvetica, sans-serif;">Declarative User Interfaces</span></li>
<li><span style="font-family: Arial, Helvetica, sans-serif;">Layout Panels</span></li>
<li><span style="font-family: Arial, Helvetica, sans-serif;">Bundled Resources via ClientBundle</span></li>
<li><span style="font-family: Arial, Helvetica, sans-serif;">HtmlUnit for Testing</span></li>
</ul><span style="font-family: Arial, Helvetica, sans-serif;"><b>Video of changes in GWT Version 2.0:</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><object height="344" width="425"><param name="movie" value="http://www.youtube.com/v/uExEw3OVMd0&color1=0xb1b1b1&color2=0xcfcfcf&hl=en_US&feature=player_embedded&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.youtube.com/v/uExEw3OVMd0&color1=0xb1b1b1&color2=0xcfcfcf&hl=en_US&feature=player_embedded&fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="425" height="344"></embed></object></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br />
</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><a href="http://gwtgallery.appspot.com/">Google Web Toolkit Gallery</a></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br />
</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><a href="http://gwt.google.com/samples/Showcase/Showcase.html#CwCheckBox">Google Web Toolkit Showcase of Features</a></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br />
</span><br />
<div><span style="font-family: Arial, Helvetica, sans-serif;"><br />
</span><br />
</div><div><br />
</div>Jimhttp://www.blogger.com/profile/06526750126342570761noreply@blogger.com0tag:blogger.com,1999:blog-6046669805989743328.post-3989238210410877812009-10-07T06:53:00.000-05:002009-10-07T06:53:14.748-05:00Announcing GWT 2.0 Milestone 1If you are like me I am sure you have been patiently waiting for the release of GWT 2.0. If you are ready to start some early testing of GWT 2.0 you can <a href="http://code.google.com/p/google-web-toolkit/downloads/list?can=1&q=2.0+Milestone+1">download a copy of the Milestone 1 release here.</a> It is interesting to note that you no longer need to download the appropriate version for you development environment. Now you simply download this single version and then GWT will download the appropriate plugins for your browser. There are lots of changes in this Milestone 1 release so your best bet is to take a look at the release notes and also the GWT 2.0 Milestone 1 <a href="http://groups.google.com/group/google-web-toolkit/browse_thread/thread/8b79ebe444b9126d?hl=en">announcement in the GWT group here</a>.<br />
Be on the lookout for bugs and you probably don't want to attempt to use this version in your GWT production environment at this time.Jimhttp://www.blogger.com/profile/06526750126342570761noreply@blogger.com0tag:blogger.com,1999:blog-6046669805989743328.post-41989559690922993112009-08-01T20:46:00.002-05:002009-08-01T20:51:01.964-05:00GWT Google Plugin for Eclipse 1.1.0For those of you using the GWT Eclipse plugin there is a new version. Of course if you installed in Eclipse and have automatic updates enabled then you probably know about this update already. <br /><br />Here are some of the main features of this release:<div><div> - Support for Eclipse 3.5 (Galileo) </div><div> - GWT RPC interface validation with quick fixes </div><div> - App Engine DataNucleus enhancer console no longer steals focus on save </div><div><br /></div><div><a href="http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/aa74940787785f51?hl=en">The GWT group thread on this new version is here.</a><br /><br />Depending on your version of Eclipse you have different URLs for installation:<br /><br /></div><div><div> - Eclipse 3.5 (Galileo) - http://dl.google.com/eclipse/plugin/3.5 </div><div> - Eclipse 3.4 (Ganymede) - http://dl.google.com/eclipse/plugin/3.4 </div><div> - Eclipse 3.3 (Europa) - http://dl.google.com/eclipse/plugin/3.3<br /><br /></div></div></div>Jimhttp://www.blogger.com/profile/06526750126342570761noreply@blogger.com0tag:blogger.com,1999:blog-6046669805989743328.post-11247146235774712322009-06-04T22:12:00.006-05:002009-06-08T20:41:36.667-05:00GWT Tetris - Great Puzzle Game from the 80s<div style="text-align: center;"><br /></div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzhEWdWocZS3euSFB56TShBqg1rbfQVoVkqwLGe0H0LP-KiIcQP3SaQ8BaWLsc8ab0XfF44uDatBVMAM9dxEq6qwzCqraer3FEwKGAsoLskbFW1uxhkY0_peGhviuU76cxuAZhsYN3baI/s1600-h/ScreenHunter_01+Jun.+04+22.39.gif"></a><div style="text-align: center;"><br /></div>I am sure there are some of you out there that have never heard of <a href="http://en.wikipedia.org/wiki/Tetris">the puzzle game Tetris</a>. Seems like the 1980s was just a few years ago, ah how time flys. I first played the game Tetris on my <a href="http://en.wikipedia.org/wiki/TRS-80_Color_Computer">Tandy Color Computer 3</a>, and played and played. I absolutly loved the game! Funny, I still love the <a href="http://www.hat3.net/">Color Computer too</a>. Here is a screen shot of Tetris on the Color Computer:<div><br /><div><img src="http://nitros9.lcurtisboyle.com/tetris_intro.gif" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" border="0" alt="" /></div><div>Some time ago I tought it would be a fun little project to take the game Tetris and write a GWT version of it. Well now someone has already done it. A few days ago on the <a href="http://groups.google.com/group/Google-Web-Toolkit?pli=1">Google Web Toolkit Group</a> I noticed a post about Tetris. I had to <a href="http://mars.iti.pk.edu.pl/~swoosh/GWTTetris.html">give it a try</a>, and I was quite impressed with the result:</div><div><br /></div><div><span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzhEWdWocZS3euSFB56TShBqg1rbfQVoVkqwLGe0H0LP-KiIcQP3SaQ8BaWLsc8ab0XfF44uDatBVMAM9dxEq6qwzCqraer3FEwKGAsoLskbFW1uxhkY0_peGhviuU76cxuAZhsYN3baI/s320/ScreenHunter_01+Jun.+04+22.39.gif" border="0" alt="" id="BLOGGER_PHOTO_ID_5343683224620449762" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 246px; " /></span></div><div>I had a chance to talk to the author Janusz Prokulewicz and asked him a few questions about the development of this game.</div><div><br /></div><div>Some time ago Janusz created a Java version of his Tetris game. Having created the same game as a linux shell application over 4 years ago he was able to get his Java version working in three days. So the real question, how hard was it to convert to GWT and how long did it take? To quote Janusz: "It took me 2 and a half days (or rather nights) to do it". </div><div><br /></div><div>So we have an existing Java application that Janusz was able to convert it to GWT in two nights. The game can now be played in any modern browser with no special plug-ins and no goofy browser quirks to worry about. Write it once in GWT and compile and you are ready to go.<br /><div><br /></div><div><div>Unfortunately at this time he does not have a web site that contains his other work, maybe in the future he can set something up.</div><div><br /></div><div>He used <a href="http://code.google.com/webtoolkit/download.html">GWT version 1.6.4</a> with no additional libraries.</div><div>The game is deployed with a PHP backend using JSON to get/send data to the server.</div><div><br /></div><div><a href="http://mars.iti.pk.edu.pl/~swoosh/">Janusz's web site is here</a>.<br /><br />Update June-8-2009: Janusz now has a blog setup. <a href="http://jprokulewicz.wordpress.com/">You can see his site here.</a></div><div><br /></div><div><a href="http://mars.iti.pk.edu.pl/~swoosh/GWTTetris.html">Play GWT Tetris now</a>!</div><div><br /></div></div></div></div>Jimhttp://www.blogger.com/profile/06526750126342570761noreply@blogger.com2tag:blogger.com,1999:blog-6046669805989743328.post-46125025190395388852009-04-08T08:20:00.002-05:002009-04-08T08:26:41.910-05:00GWT support in Google Apps Engine AND GWT 1.6<span style="font-weight:bold;">Big news today for GWT!</span><br /><br />First GWT 1.6 is available for download. <a href="http://googlewebtoolkit.blogspot.com/2009/04/introducing-gwt-16-and-friends.html">Please see the official blog entry from Google here.</a><br /><br />Second big annoucement for GWT is that the Google Apps Engine now supports Java. One thing to be aware of is that google has said that they are only allowing the first 10,000 developers. Better sign up fast. <a href="http://appengine.google.com/promo/java_runtime">Here is the link to signup.</a><br /><br />The also ask that you provide feedback, <a href="http://groups.google.com/group/google-appengine-java">here is that link</a>.<br /><br />To find out more please see the <a href="http://googleappengine.blogspot.com/2009/04/seriously-this-time-new-language-on-app.html">official blog post from Google here on Google App Engine supporting Java</a>.<br /><br />For those of you using Eclipse for Java development (and I highly recommend you use it) there is now a GWT/App engine plugin for Eclipse.<br /><a href="http://code.google.com/eclipse/">For more information on the plugin see this Blog post.</a><br /><br />The quick start guide to install the <a href="http://code.google.com/eclipse/docs/getting_started.html">GWT/Google App Engine Eclipse plugin is here</a>.<br /><br />If you are already an eclipse user and know how to install plugins here are the shortcuts you need:<br /><br />Eclipse 3.3 (Europa)<br /><pre>http://dl.google.com/eclipse/plugin/3.3</pre><br />Eclipse 3.4 (Ganymede)<br /><pre>http://dl.google.com/eclipse/plugin/3.4</pre>Jimhttp://www.blogger.com/profile/06526750126342570761noreply@blogger.com1tag:blogger.com,1999:blog-6046669805989743328.post-43872502040743048172009-02-13T11:47:00.008-06:002009-02-13T12:34:52.684-06:00GWT 1.6 Milestone 1 available for download<span style="font-weight:bold;">This is the latest GWT release, it is a milestone release so be sure to only use it for testing.</span><br /><ul><li><a href="http://code.google.com/p/google-web-toolkit/downloads/list?can=1&q=1.6.0">Download and start playing with this new version.</a><span class="Apple-style-span" style="font-family:arial;"> </span></li><li><a href="http://code.google.com/docreader/#p=google-web-toolkit-doc-1-6&s=google-web-toolkit-doc-1-6&t=google-web-toolkit-doc-1-6">Documentation for release 1.6 Milestone 1.</a></li><li><a href="http://code.google.com/docreader/#p=google-web-toolkit-doc-1-6&s=google-web-toolkit-doc-1-6&t=WhatsNewinGWT16">Changes in this release</a>.</li></ul><span class="Apple-style-span" style="font-family:arial;"> If you are like me and use <a href="http://www.eclipse.org/downloads/">Eclipse</a> to develope your GWT application there is a nice change that is part of this release. You no longer need to run these commands to create a new GWT Eclipse project:<br /><pre><br />C:\Program Files\gwt-windows-1.5.3>applicationCreator.cmd -eclipse MyGWTProject -out c:\MyGWTProject com.mynumnum.client.MyClass<br />Created directory c:\MyGWTProject\src<br />Created directory c:\MyGWTProject\src\com\mynumnum<br />Created directory c:\MyGWTProject\src\com\mynumnum\client<br />Created directory c:\MyGWTProject\src\com\mynumnum\public<br />Created file c:\MyGWTProject\src\com\mynumnum\MyClass.gwt.xml<br />Created file c:\MyGWTProject\src\com\mynumnum\public\MyClass.html<br />Created file c:\MyGWTProject\src\com\mynumnum\public\MyClass.css<br />Created file c:\MyGWTProject\src\com\mynumnum\client\MyClass.java<br />Created file c:\MyGWTProject\MyClass.launchCreated file c:\MyGWTProject\MyClass-shell.cmd<br />Created file c:\MyGWTProject\MyClass-compile.cmd<br /><br />C:\Program Files\gwt-windows-1.5.3>projectCreator.cmd -eclipse MyGWTProject -out c:\MyGWTProject<br /><br />Created directory c:\MyGWTProject\test<br />Created file c:\MyGWTProject\.project<br />Created file c:\MyGWTProject\.classpath<br /><br /></pre><br />Now all you need to do is run the command webAppCreator:<br /><pre><br />C:\Program Files\gwt-windows-1.6.0>webAppCreator.cmd -out c:\MyGWT16Project com.<br />mynumnum.MyClass<br />Created directory c:\MyGWT16Project\src<br />Created directory c:\MyGWT16Project\war<br />Created directory c:\MyGWT16Project\war\WEB-INFCreated directory c:\MyGWT16Project\src\com\mynumnum<br />Created directory c:\MyGWT16Project\src\com\mynumnum\client<br />Created directory c:\MyGWT16Project\src\com\mynumnum\server<br />Created file c:\MyGWT16Project\src\com\mynumnum\MyClass.gwt.xml<br />Created file c:\MyGWT16Project\war\MyClass.html<br />Created file c:\MyGWT16Project\war\MyClass.cssCreated file c:\MyGWT16Project\war\WEB-INF\web.xml<br />Created file c:\MyGWT16Project\src\com\mynumnum\client\MyClass.java<br />Created file c:\MyGWT16Project\src\com\mynumnum\client\EchoService.java<br />Created file c:\MyGWT16Project\src\com\mynumnum\client\EchoServiceAsync.java<br />Created file c:\MyGWT16Project\src\com\mynumnum\server\EchoServiceImpl.java<br />Created file c:\MyGWT16Project\build.xml<br />Created file c:\MyGWT16Project\.projectCreated file c:\MyGWT16Project\.classpath<br />Created file c:\MyGWT16Project\MyClass.launch<br /></pre><br />Your new GWT 1.6 Project will be ready for import into Eclipse. Also you will notice that a simple client and server class is created in the example that demonstrates how to send and receive RPC requests.<br /><br /><span style="font-weight:bold;">Errors when launching your Eclipse GWT project in the GWT shell</span><br /><br /><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQTAXZH-dDiKQ2ql-Y75Ou8ykiO1zjxeSRzUTdL6dyqvyoii9hC_93J6OYpdRc1rHYN_u32OiiKCEdydGqc2v7rJsZF9eokx11HEeos50LYG1L8Bh8yqtKAQR2vzoIq6pFIpeanaY5R0I/s200/ScreenHunter_03+Feb.+13+12.23.gif" style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 156px; height: 138px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5302349589150547922" />You must create a lib folder in your 'project folder'/war/WEB-INF folder and copy gwt-servlet.jar into that folder.<br />After this is done you should be able to launch your new Project without this nasty error message:<br /><span><br /><pre><br />2009-02-13 12:22:51.760::INFO: Logging to STDERR via org.mortbay.log.StdErrLog<br />2009-02-13 12:22:51.901::INFO: jetty-6.1.x<br />2009-02-13 12:22:52.229::WARN: failed echoServlet<br />java.lang.NoClassDefFoundError: com/google/gwt/user/client/rpc/RemoteService<br />at java.lang.ClassLoader.defineClass1(Native Method)<br />at java.lang.ClassLoader.defineClass(Unknown Source)<br /></pre><br /></span><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKyaRfZ3KaVlRAX2hpp3HjiaxCWPTqkpqbBPnNcBwa4rfrPXMzxYUyXGlS46jA3muWTfSbyj_WXSY4KJDKzC-N29_HFH1sBTTTDjrqw3XFrP3Shp5-_boddgeJDxQ_-BA_2B_KFyhlobQ/s1600-h/ScreenHunter_04+Feb.+13+12.25.gif"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKyaRfZ3KaVlRAX2hpp3HjiaxCWPTqkpqbBPnNcBwa4rfrPXMzxYUyXGlS46jA3muWTfSbyj_WXSY4KJDKzC-N29_HFH1sBTTTDjrqw3XFrP3Shp5-_boddgeJDxQ_-BA_2B_KFyhlobQ/s400/ScreenHunter_04+Feb.+13+12.25.gif" border="0" alt="" id="BLOGGER_PHOTO_ID_5302351017811696642" /></a>Jimhttp://www.blogger.com/profile/06526750126342570761noreply@blogger.com0tag:blogger.com,1999:blog-6046669805989743328.post-61937796775609467762008-12-22T23:13:00.005-06:002008-12-22T23:33:17.622-06:00Another GWT Powered Web Site sendMeHome.comIt seems that these question always comes up on <a href="http://groups.google.com/group/Google-Web-Toolkit?hl=en&pli=1">Google-Web-Toolkit group</a> :<br /><ul><li>Who is using GWT?<br /></li><li>Is GWT ready for prime time?<br /></li><li>Why would anyone use GWT when they can use language X and toolkit Y?<br /></li><li>Does Google even use GWT for their web pages?<br /></li></ul><br />I have been using GWT in a 24x7x365 day production environment for over two years now and I can tell you that GWT is ready to deliver on the promise of easy and reliable Ajax web development.<br /><br />As for the question of 'who is using GWT?' I would like to share some information from the guys over at <a href="http://sendmehome.com/">SendMeHome.com</a><br /><br />Their site uses GWT and the GWT incubator project. I spoke with one of their developers and he was nice enough to share some details of their experience with GWT, what GWT widgets they are using, and their overall opinion on the Google Web Toolkit. Please see the details below:<br /><div><br /></div><div><span class="Apple-style-span" style="border-collapse: collapse; font-family:arial;font-size:13px;"><p><span style="font-family:Arial;font-size:85%;"><span style=" ;font-family:Arial;font-size:10pt;">SendMeHome was developed over the course of four months. We chose GWT to create SendMeHome as it allowed us to code in a familiar language (Java), provided a wide array of widgets, and could deliver the type of end user experience we wanted to provide.</span></span></p><p><span style="font-family:Arial;font-size:85%;"><span style=" ;font-family:Arial;font-size:10pt;"> </span></span></p><p><span style="font-family:Arial;font-size:85%;"><span style=" ;font-family:Arial;font-size:10pt;">Although the GWT compiler is quite intelligent and removes any unused functions and libraries at compile-time we wanted to keep SendMeHome as small as possible as some of our users may be accessing the site on a dial-up connection. To do this we consciously tried to only use widgets in the gwt jar file, these include:</span></span></p><ul type="disc" style="margin-top: 0in; "><li style=" margin-left: 15px; "><span style="font-family:Arial;font-size:85%;"><span style=" ;font-family:Arial;font-size:10pt;">Text Box / Password Text Box / Text Area / Rich Text Area</span></span></li><li style=" margin-left: 15px; "><span style="font-family:Arial;font-size:85%;"><span style=" ;font-family:Arial;font-size:10pt;">Radio Buttons and CheckBoxes</span></span></li><li style=" margin-left: 15px; "><span style="font-family:Arial;font-size:85%;"><span style=" ;font-family:Arial;font-size:10pt;">File Upload</span></span></li><li style=" margin-left: 15px; "><span style="font-family:Arial;font-size:85%;"><span style=" ;font-family:Arial;font-size:10pt;">Tree</span></span></li><li style=" margin-left: 15px; "><span style="font-family:Arial;font-size:85%;"><span style=" ;font-family:Arial;font-size:10pt;">iFrame</span></span></li><li style=" margin-left: 15px; "><span style="font-family:Arial;font-size:85%;"><span style=" ;font-family:Arial;font-size:10pt;">Toggle and Push Buttons</span></span></li><li style=" margin-left: 15px; "><span style="font-family:Arial;font-size:85%;"><span style=" ;font-family:Arial;font-size:10pt;">Grids and FlexTables</span></span></li><li style=" margin-left: 15px; "><span style="font-family:Arial;font-size:85%;"><span style=" ;font-family:Arial;font-size:10pt;">Just about every panel available, including the Tab, Decorator, Disclosure and Popup Panels</span></span></li></ul><p><span style="font-family:Arial;font-size:85%;"><span style=" ;font-family:Arial;font-size:10pt;"> </span></span></p><p><span style="font-family:Arial;font-size:85%;"><span style=" ;font-family:Arial;font-size:10pt;">We initially broke our own rule when we discovered the Glass Panel from the incubator. We used it to create a “Lightbox Effect” for our login and error messages. However, we really began using Google’s other API’s when we developed our Stories feature. Stories allows you to track where a physical item travels to and lets you collect stories from the people it meets. To enhance Stories we integrated with Google Maps and YouTube and the process was stunningly simple. We now host all of our videos on YouTube and our users never have to visit YouTube.com or even have a YouTube account.</span></span></p><p><span style="font-family:Arial;font-size:85%;"><span style=" ;font-family:Arial;font-size:10pt;"> </span></span></p><p><span style="font-family:Arial;font-size:85%;"><span style=" ;font-family:Arial;font-size:10pt;">The only complaint we’ve had with GWT is that browsers cannot remember a user’s email and password easily. Otherwise it was been an absolute joy to work with and we are surprised that there aren’t more GWT apps out there!</span></span></p></span><br /><br /></div>Jimhttp://www.blogger.com/profile/06526750126342570761noreply@blogger.com0tag:blogger.com,1999:blog-6046669805989743328.post-83945245408082220892008-12-21T09:31:00.006-06:002011-05-04T21:10:38.339-05:00Eight Queens Puzzle Solution GWT style<div>I have deployed a very 'rough' GWT application, you can <a href="http://gwt.mynumnum.com/EightQueens/">check it out here</a>. This is an <a href="http://en.wikipedia.org/wiki/Eight_queens_puzzle">Eight Queens Puzzle</a> solution using GWT. <a href="http://www.mochahost.com/657-0-3-46.html">Hosting is with Mochahost using Tomcat</a>. Technically there is no reason to host this application with a Tomcat instance, but I thought it would be fun to take the same Java code and let Tomcat run the Eight Queens solution on the server and then let GWT compile the Java code to Javascript and run it on your client browser. <br />
<br />
With a fast processor and <a href="http://www.google.com/chrome">Google Chrome</a> I don't see why someone out there cannot beat the calculation time for the puzzle on their browser! The bulk of the time on the browser is spent building the chess boards and populating the queens onto the board. The Eight Queens Puzzle solution just takes a few seconds, or in the case of Crome miliseconds.<br />
<br />
<span class="Apple-style-span" style="font-weight: bold;">Lots more to come including:</span></div><div><ul><li>Source code<br />
</li>
<li><del>Make the web page look better</del><br />
</li>
</ul></div><div><br />
</div><div><span class="Apple-style-span" style="font-weight: bold;">Some other ideas I had:</span></div><div><ul><li>Capture user agent information and store calculation times based on browser type and OS<br />
</li>
<li>Add a selection box so the user can select their processor speed and save this data with the solution time.<br />
</li>
<li>Build a report showing data based on cpu speed, browser type, bowser version, and OS<br />
</li>
</ul></div><div>For more information on how to setup GWT with Tomcat hosting using Mochahost please see my <a href="http://gwtblog.mynumnum.com/2007/11/gwt-hosting.html">previous post on GWT hosting.</a><br />
<br />
</div><div><span class="Apple-style-span" style="font-weight: bold;">Please leave me any feedback here. Thanks!</span></div><div><br />
</div>Jimhttp://www.blogger.com/profile/06526750126342570761noreply@blogger.com1tag:blogger.com,1999:blog-6046669805989743328.post-9174274917119164572008-12-02T21:19:00.004-06:002008-12-02T21:28:13.713-06:00Calling all GWT web sites!I would love to hear from anyone currently using GWT for a web site or anyone that is in the process or using GWT for a new web site. Please post comments here with your site address and description. If you really feel nice you can also add in all the other libraries or technologies that you incorporated in building your GWT powered site. BTW - my favorite GWT combination is <a href="http://code.google.com/webtoolkit/download.html">GWT 1.5</a> + <a href="http://google-web-toolkit-incubator.googlecode.com/files/gwt-incubator_1-5_Sept_04.zip">GWT Incubator</a> + <a href="http://www.eclipse.org/downloads/">Eclipse</a> + <a href="http://tomcat.apache.org/download-55.cgi">Apache Tomcat 5.5</a><br /><br />Thanks!Jimhttp://www.blogger.com/profile/06526750126342570761noreply@blogger.com6tag:blogger.com,1999:blog-6046669805989743328.post-15772624955674186922008-10-19T19:18:00.001-05:002008-10-19T19:18:08.060-05:00Download Google Web Toolkit Version 1.5.3 - Latest release<div xmlns='http://www.w3.org/1999/xhtml'>The latest version of GWT is now available for download. <a href='http://code.google.com/webtoolkit/releases/release-notes-1.5.3.html'>Version 1.5.3 has several bug fixes</a>. <a href='http://code.google.com/p/google-web-toolkit/issues/list?can=1&q=status%3AFixed%2CFixedNotReleased%20milestone%3A1_5_3&num=1000'>Here is a complete list from the GWT issue tracker.</a> <a href='http://google-web-toolkit.googlecode.com/files/gwt-windows-1.5.3.zip'>Download GWT 1.5.3</a> and upgrade your current GWT apps to the latest and greatest!<br/></div>Jimhttp://www.blogger.com/profile/06526750126342570761noreply@blogger.com0tag:blogger.com,1999:blog-6046669805989743328.post-65817488760543664742008-09-05T15:22:00.001-05:002008-09-05T15:22:34.389-05:00GWT Designer 5.1 to support Google Web Toolkit Version 1.5<div xmlns='http://www.w3.org/1999/xhtml'><font face='Verdana'>I have not used the GWT designer to develop GWT applications but it is good to see that they have updated this tool to work with GWT version 1.5. <a href='http://www.ciol.com/Enterprise-Tools/News-Reports/GWT-Designer-5.1-to-support-Google-Web-Toolkit/4908109923/0/#%23cmp%23%23'> For more information on the latest verions of GWT Designer click here.</a><br/><br/></font></div>Jimhttp://www.blogger.com/profile/06526750126342570761noreply@blogger.com2tag:blogger.com,1999:blog-6046669805989743328.post-23352417997193820792008-09-03T18:43:00.001-05:002008-09-03T18:43:13.380-05:00GWT web apps tutorial<div xmlns='http://www.w3.org/1999/xhtml'><a href='http://lkamal.blogspot.com/2008/09/java-gwt-servlets-web-app-tutorial.html'>Check out this GWT tutorial on creating web apps using GWT.</a><br/></div>Jimhttp://www.blogger.com/profile/06526750126342570761noreply@blogger.com0tag:blogger.com,1999:blog-6046669805989743328.post-12773967297121712512008-09-03T18:25:00.001-05:002008-09-03T18:25:49.168-05:00Google Chrome and GWT<div xmlns='http://www.w3.org/1999/xhtml'><a href='http://www.google.com/chrome'>After installing Google Chrome web browser today</a> I tried out a couple of GWT applications that I have created using GWT 1.5. So far so good. I noticed quickly that my GWT apps were using the Safari version of the GWT code. Performance of GWT in Google Chrome was great. I need to do some more testing to be sure that my GWT apps are working as expected with Google Chrome.<br/></div>Jimhttp://www.blogger.com/profile/06526750126342570761noreply@blogger.com1tag:blogger.com,1999:blog-6046669805989743328.post-84415674617878695072008-08-30T11:33:00.001-05:002008-08-30T11:33:58.428-05:00Make great looking GWT projects by using the Ext GWT Framework<div xmlns='http://www.w3.org/1999/xhtml'>Now that GWT version 1.5 is available for download, using the <a href='http://extjs.com/products/gxt/'>Ext GWT rich internet application framework for GWT is now possible</a>. GXT is designed to support GWT 1.5 forward. From my experience using GXT in your projects does increase compile time for your GWT project, so be aware of that moving forward. I have started plaing around with GXT. So far the dialogue boxes are very handy, they are asyncronus unlike the dialogue boxes found in javascript so you have much more flexability in your applications. Also the progress bars are a very nice touch when you have GWT applications that require some extended processing time.<br/><br/><ul><li><a href='http://extjs.com/products/gxt'>Click here for an Overview of GXT</a></li><li><a href='http://extjs.com/products/gxt/download.php'>Download GXT here</a></li><li><a href='http://extjs.com/explorer/'>Browse the Demos and Samples here</a></li></ul></div>Jimhttp://www.blogger.com/profile/06526750126342570761noreply@blogger.com0tag:blogger.com,1999:blog-6046669805989743328.post-15577110443357224722008-08-30T11:25:00.003-05:002008-08-30T11:25:44.853-05:00Google Web Toolkit Version 1.5 is now officially released<div xmlns='http://www.w3.org/1999/xhtml'>Great news for GWT users. GWT version 1.5.2 is now here! Time to upgrade all those older versions of GWT to the new 1.5 code. I have upgraded a couple of my project from 1.4 to 1.5.1 with little problem. <br/><br/><ul><li><a href='http://code.google.com/webtoolkit/download.html'>Download GWT 1.5.2</a></li><li><a href='http://code.google.com/webtoolkit/releases/release-notes-1.5.2.html'>Release notes for GWT 1.5.2</a></li><li><a href='http://googlewebtoolkit.blogspot.com/2008/08/gwt-15-now-available.html'>Official announcement from Google</a><br/></li></ul></div>Jimhttp://www.blogger.com/profile/06526750126342570761noreply@blogger.com0