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

<channel>
	<title>pgt</title>
	<atom:link href="http://pgt.de/feed/" rel="self" type="application/rss+xml" />
	<link>http://pgt.de</link>
	<description>t3chnology scouting GmbH</description>
	<lastBuildDate>Thu, 25 Apr 2013 13:53:08 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Jax 2013 &#8211; GWT lessons learned</title>
		<link>http://pgt.de/2013/04/25/jax-2013-gwt-lessons-learned/</link>
		<comments>http://pgt.de/2013/04/25/jax-2013-gwt-lessons-learned/#comments</comments>
		<pubDate>Thu, 25 Apr 2013 09:04:06 +0000</pubDate>
		<dc:creator>P.G.Taboada</dc:creator>
				<category><![CDATA[conferences]]></category>
		<category><![CDATA[GWT]]></category>

		<guid isPermaLink="false">http://pgt.de/?p=1020</guid>
		<description><![CDATA[It is quite a long time since my last post. Today I talked at the JAX 2013 about GWT architectures and lessons learned. I have uploaded my slides to slideshare.net:]]></description>
				<content:encoded><![CDATA[<p>It is quite a long time since my last post. Today I talked at the JAX 2013 about GWT architectures and lessons learned.</p>
<p>I have uploaded my slides to slideshare.net:</p>
<p><script async class="speakerdeck-embed" data-id="cafe9f008fb60130feac1231381d79e1" data-ratio="1.2994923857868" src="//speakerdeck.com/assets/embed.js"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://pgt.de/2013/04/25/jax-2013-gwt-lessons-learned/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GPE, eclipse and maven never ending story. Done.</title>
		<link>http://pgt.de/2012/12/19/gpe-eclipse-and-maven-never-ending-story-done/</link>
		<comments>http://pgt.de/2012/12/19/gpe-eclipse-and-maven-never-ending-story-done/#comments</comments>
		<pubDate>Wed, 19 Dec 2012 10:33:36 +0000</pubDate>
		<dc:creator>P.G.Taboada</dc:creator>
				<category><![CDATA[GWT]]></category>
		<category><![CDATA[gwt]]></category>
		<category><![CDATA[hell]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[pom]]></category>

		<guid isPermaLink="false">http://pgt.de/?p=1015</guid>
		<description><![CDATA[I don&#8217;t know how many times I had to start over and over again, searching for the latest versions, searching for &#8220;how to make&#8221; the Google Eclipse Plugin, eclipse and maven work together. The problem is: too many tools that don&#8217;t seem to like each other fighting over project layout and classpath. Java EE packaging [...]]]></description>
				<content:encoded><![CDATA[<p>I don&#8217;t know how many times I had to start over and over again, searching for the latest versions, searching for &#8220;how to make&#8221; the Google Eclipse Plugin, eclipse and maven work together.</p>
<p>The problem is: too many tools that don&#8217;t seem to like each other fighting over project layout and classpath. Java EE packaging specs and GWT specialities coming from DevMode don&#8217;t really make things easier. If you were not a pro in all of this, you ended up with a mess. I have seen it too often.</p>
<p>Since <a href="http://eclipse.org/m2e/" target="_blank">m2e</a> integration things started getting better. And finally, using recent versions from the following official update sites, it started working flawlessly. Even the DevMode/ classpath issue that made us <a href="http://code.google.com/p/google-web-toolkit/issues/detail?id=5693">patch the Jetty launcher</a> past year is solved!</p>
<p>I&#8217;ll try to keep this posting here up-to-date, so you won&#8217;t have to read through all the docs, tips, tricks comments from <a href="http://mojo.codehaus.org/gwt-maven-plugin/" target="_blank">here</a> and <a href="http://code.google.com/p/google-web-toolkit/wiki/WorkingWithMaven" target="_blank">here</a> again and again.</p>
<p>What you need:</p>
<ul>
<li><strong>m2e &#8211; maven integration for eclipse</strong>
<p>http://download.eclipse.org/technology/m2e/releases</li>
<li><strong>m2e-wtp &#8211; maven Integration for WTP</strong>
<p>http://download.eclipse.org/m2e-wtp/releases/</li>
</ul>
<p>I am using the latest stable releases from eclipse.org. Well, not always, I am going as stable as possible: the actual wtp integration is still in incubation&#8230; but works&#8230;</p>
<p>Talking numbers, this are the version numbers I used here:</p>
<ul>
<li><strong>m2e &#8211; Maven Integration for Eclipse</strong> 1.2.0.20120903-1050</li>
<li><strong>m2e-wtp &#8211; Maven Integration for WTP (Incubation)</strong> 0.16.0.20120914-0945</li>
<li><strong>m2e connector for mavenarchiver pom properties</strong> 0.15.0.201207090125-signed-201209140800</li>
</ul>
<p>I have installed a few m2e connectors I required for other non GWT projects, I think they are not needed for a GWT project. Just for the curious:</p>
<blockquote><p>M2E connectors are a bridge between Maven and Eclipse. When a maven plugin is bound to a lifecycle phase like generate-sources, or process-sources it becomes a part of Eclipse build. (<a href="http://objectledge.org/confluence/display/TOOLS/M2E+Connectors" target="_blank">source</a>)</p></blockquote>
<p>Don&#8217;t use the archetype. And if you do, remove the maven-war-plugin plugin. I am using the copyWebapp configuration option in the gwt-maven-plugin to copy the </p><pre class="crayon-plain-tag">src/main/webapp</pre><p> stuff into the folder used by the DevMode and build system located at </p><pre class="crayon-plain-tag">${project.build.directory}/${project.build.finalName}</pre><p>.</p><pre class="crayon-plain-tag">&lt;build&gt;
    &lt;plugins&gt;	
      &lt;!-- GWT Maven Plugin --&gt;
      &lt;plugin&gt;
        &lt;groupId&gt;org.codehaus.mojo&lt;/groupId&gt;
        &lt;artifactId&gt;gwt-maven-plugin&lt;/artifactId&gt;
        &lt;version&gt;2.5.0&lt;/version&gt;
        &lt;executions&gt;
          &lt;execution&gt;
            &lt;goals&gt;
              &lt;goal&gt;compile&lt;/goal&gt;
            &lt;/goals&gt;
          &lt;/execution&gt;
        &lt;/executions&gt;
        &lt;configuration&gt;
          &lt;runTarget&gt;index.html&lt;/runTarget&gt;
          &lt;gwtSdkFirstInClasspath /&gt;
          &lt;copyWebapp /&gt;
          &lt;extraJvmArgs&gt;-Xms128m -Xss1M -Xmx512m -XX:MaxPermSize?=512M&lt;/extraJvmArgs&gt;
        &lt;/configuration&gt;
      &lt;/plugin&gt;

      &lt;plugin&gt;
        &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
        &lt;artifactId&gt;maven-compiler-plugin&lt;/artifactId&gt;
        &lt;version&gt;2.3.2&lt;/version&gt;
        &lt;configuration&gt;
          &lt;source&gt;1.6&lt;/source&gt;
          &lt;target&gt;1.6&lt;/target&gt;
        &lt;/configuration&gt;
      &lt;/plugin&gt;
    &lt;/plugins&gt;
  &lt;/build&gt;</pre><p>By the way, defaults work fine now, there is no need to setup/ fix the path configs for the plugin anymore. If you use M2E to update the project configuration things will work.</p>
<p>If you are sure your config is right, and you are absolutely sure you have at least the versions mentioned above, try killing your eclipse config with</p><pre class="crayon-plain-tag">mvn clean eclipse:clean</pre><p>This will leave you with a completely missconfigured project in eclipse. Let m2e update the project again. Sometimes I get the error that m2e did fail setting up the project description. Ignore it, do it again.</p>
<p>&nbsp;</p>
<div></div>
<div></div>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://pgt.de/2012/12/19/gpe-eclipse-and-maven-never-ending-story-done/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Presentation slides from the W-JAX 2012</title>
		<link>http://pgt.de/2012/11/06/presentation-slides-from-the-w-jax-2012/</link>
		<comments>http://pgt.de/2012/11/06/presentation-slides-from-the-w-jax-2012/#comments</comments>
		<pubDate>Tue, 06 Nov 2012 16:58:01 +0000</pubDate>
		<dc:creator>P.G.Taboada</dc:creator>
				<category><![CDATA[conferences]]></category>
		<category><![CDATA[GWT]]></category>

		<guid isPermaLink="false">http://pgt.de/?p=1010</guid>
		<description><![CDATA[Session: GWT &#8211; Building a better web&#8230; Talking about GWT is always fun. Thanks to all participants for the great feedback.]]></description>
				<content:encoded><![CDATA[<p>Session: GWT &#8211; Building a better web&#8230;</p>
<p><iframe src="http://www.slideshare.net/slideshow/embed_code/15051794" width="476" height="400" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe></p>
<p>Talking about GWT is always fun. Thanks to all participants for the great feedback.</p>
]]></content:encoded>
			<wfw:commentRss>http://pgt.de/2012/11/06/presentation-slides-from-the-w-jax-2012/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Google I/O 2012 &#8211; The History and Future of Google Web Toolkit</title>
		<link>http://pgt.de/2012/07/11/google-io-2012-the-history-and-future-of-google-web-toolkit/</link>
		<comments>http://pgt.de/2012/07/11/google-io-2012-the-history-and-future-of-google-web-toolkit/#comments</comments>
		<pubDate>Wed, 11 Jul 2012 06:55:01 +0000</pubDate>
		<dc:creator>P.G.Taboada</dc:creator>
				<category><![CDATA[conferences]]></category>
		<category><![CDATA[GWT]]></category>

		<guid isPermaLink="false">http://pgt.de/?p=999</guid>
		<description><![CDATA[The video to the GWT session from the Google IO 2012 is finally online!]]></description>
				<content:encoded><![CDATA[<p>The video to the GWT session from the Google IO 2012 is finally online!</p>
<p><span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='640' height='390' src='http://www.youtube.com/embed/VOf27ez_Hvg?version=3&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' frameborder='0'></iframe></span></p>
]]></content:encoded>
			<wfw:commentRss>http://pgt.de/2012/07/11/google-io-2012-the-history-and-future-of-google-web-toolkit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using guava with GWT</title>
		<link>http://pgt.de/2012/07/11/using-guava-with-gwt/</link>
		<comments>http://pgt.de/2012/07/11/using-guava-with-gwt/#comments</comments>
		<pubDate>Wed, 11 Jul 2012 06:35:51 +0000</pubDate>
		<dc:creator>P.G.Taboada</dc:creator>
				<category><![CDATA[GWT]]></category>
		<category><![CDATA[guava]]></category>
		<category><![CDATA[gwt]]></category>

		<guid isPermaLink="false">http://pgt.de/?p=995</guid>
		<description><![CDATA[Guava is a very useful library, and it is quite easy to use it (partially) within the GWT client code. First, add the guava.jar and the guava-gwt.jar libs to your project. If you are using maven, just add the following dependency to you pom.xml: [crayon-51c11e48a2c0b/] For Ivy or Gradle, just have a loot at here. [...]]]></description>
				<content:encoded><![CDATA[<p>Guava is a very useful library, and it is quite easy to use it (partially) within the GWT client code.</p>
<p>First, add the guava.jar and the guava-gwt.jar libs to your project. If you are using maven, just add the following dependency to you pom.xml:</p><pre class="crayon-plain-tag">&lt;dependency&gt;
   &lt;groupId&gt;com.google.guava&lt;/groupId&gt;
   &lt;artifactId&gt;guava-gwt&lt;/artifactId&gt;
   &lt;version&gt;12.0&lt;/version&gt;
&lt;/dependency&gt;</pre><p>For Ivy or Gradle, just have a loot at <a href="http://mvnrepository.com/artifact/com.google.guava/guava/12.0" target="_blank">here</a>.</p>
<p>Once the libs are in your classpath, you can inherit the required modules in your GWT module:</p><pre class="crayon-plain-tag">&lt;inherits name="com.google.common.base.Base"/&gt;

&lt;inherits name="com.google.common.math.Math"/&gt;

&lt;inherits name="com.google.common.primitives.Primitives"/&gt;</pre><p>or, as in my case, just add</p><pre class="crayon-plain-tag">&lt;inherits name="com.google.common.collect.Collect"/&gt;</pre><p>which does all of the above&#8230;</p>
<p>I am not going into all the guava goodies here, but&#8230;</p><pre class="crayon-plain-tag">if (!Strings.isNullOrEmpty( somebean.getSomeProperty() )) {
      ...
}</pre><p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://pgt.de/2012/07/11/using-guava-with-gwt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Conditional CSS with GWT, linear gradient&#8230;</title>
		<link>http://pgt.de/2012/07/07/conditional-css-with-gwt-linear-gradient/</link>
		<comments>http://pgt.de/2012/07/07/conditional-css-with-gwt-linear-gradient/#comments</comments>
		<pubDate>Sat, 07 Jul 2012 15:15:15 +0000</pubDate>
		<dc:creator>P.G.Taboada</dc:creator>
				<category><![CDATA[My blog]]></category>
		<category><![CDATA[conditional css]]></category>
		<category><![CDATA[gwt]]></category>

		<guid isPermaLink="false">http://pgt.de/?p=992</guid>
		<description><![CDATA[Here is another snippet for copy and paste: how to create conditional CSS entries in a CSS resource. In this special case I am adding a liner color transition to a &#8220;box&#8221;&#8230; [crayon-51c11e48a334c/]]]></description>
				<content:encoded><![CDATA[<p>Here is another snippet for copy and paste: how to create conditional CSS entries in a CSS resource. In this special case I am adding a liner color transition to a &#8220;box&#8221;&#8230;</p>
<p></p><pre class="crayon-plain-tag">.box {
}
@if user.agent safari gecko1_8 {
	.box {
		border-radius: 10px;
	}
}
@if !user.agent safari gecko1_8{
	.box {
		background-color: grey;
	}
}
@if user.agent safari {
	.box {
		background: -webkit-linear-gradient(top, rgba(247, 134, 18, 0.4) 0%,
			rgba(250, 250, 250, 0.5) 23%, rgba(200, 200, 200, 0.7) 30%,
			rgba(247, 134, 18, 0.9) 40%, rgba(247, 134, 18, 0.5) 100% );
	}
}
	
@if user.agent gecko1_8 {
	.box {
		background: -moz-linear-gradient(top, rgba(247, 134, 18, 0.4) 0%,
			rgba(250, 250, 250, 0.5) 23%, rgba(200, 200, 200, 0.7) 30%,
			rgba(247, 134, 18, 0.9) 40%, rgba(247, 134, 18, 0.5) 100% );
	}
}</pre><p></p>
]]></content:encoded>
			<wfw:commentRss>http://pgt.de/2012/07/07/conditional-css-with-gwt-linear-gradient/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CellTable/DataGrid wrapped by TabLayoutPanel (non active tab): Table not filled</title>
		<link>http://pgt.de/2012/07/07/celltabledatagrid-wrapped-by-tablayoutpanel-non-active-tab-table-not-filled/</link>
		<comments>http://pgt.de/2012/07/07/celltabledatagrid-wrapped-by-tablayoutpanel-non-active-tab-table-not-filled/#comments</comments>
		<pubDate>Sat, 07 Jul 2012 14:29:53 +0000</pubDate>
		<dc:creator>P.G.Taboada</dc:creator>
				<category><![CDATA[GWT]]></category>
		<category><![CDATA[cellgrid]]></category>
		<category><![CDATA[gwt]]></category>
		<category><![CDATA[tablayout]]></category>

		<guid isPermaLink="false">http://pgt.de/?p=985</guid>
		<description><![CDATA[Finally, the issue CellTable/DataGrid wrapped by TabLayoutPanel (non active tab): Table not filled seems to be fixed by 2.5 RC1. Just in case you are stuck with a previous version of GWT for now, try using the following workaround: [crayon-51c11e48a385a/]]]></description>
				<content:encoded><![CDATA[<p>Finally, the issue <strong><a href="http://code.google.com/p/google-web-toolkit/issues/detail?id=7065" target="_blank">CellTable/DataGrid wrapped by TabLayoutPanel (non active tab): Table not filled</a></strong> seems to be fixed by 2.5 RC1. Just in case you are stuck with a previous version of GWT for now, try using the following workaround:</p>
<p></p><pre class="crayon-plain-tag">detailTabs.addSelectionHandler(new SelectionHandler&lt;Integer&gt;() {
            @Override
            public void onSelection(SelectionEvent&lt;Integer&gt; event) {
                Widget w = detailsTabs.getWidget(event.getSelectedItem());
                if (w instanceof RequiresResize) {
                    ((RequiresResize) w).onResize();
                }
            }
        });</pre><p></p>
]]></content:encoded>
			<wfw:commentRss>http://pgt.de/2012/07/07/celltabledatagrid-wrapped-by-tablayoutpanel-non-active-tab-table-not-filled/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Creating cell widgets with uibinder</title>
		<link>http://pgt.de/2012/07/06/creating-cell-widgets-with-uibinder/</link>
		<comments>http://pgt.de/2012/07/06/creating-cell-widgets-with-uibinder/#comments</comments>
		<pubDate>Fri, 06 Jul 2012 12:13:18 +0000</pubDate>
		<dc:creator>P.G.Taboada</dc:creator>
				<category><![CDATA[GWT]]></category>
		<category><![CDATA[cell widgets]]></category>
		<category><![CDATA[gwt2.5]]></category>
		<category><![CDATA[uirenderer]]></category>

		<guid isPermaLink="false">http://pgt.de/?p=976</guid>
		<description><![CDATA[With the upcoming GWT 2.5 release we will be able to create cell widgets using UiRenderer, a sort of an UiBinder technique. The main difference: while UiBinder creates either widgets or DOM elements to be used with (Resize)Composite or Widgets, the new approach enables us to render the content as HTML, as required by the [...]]]></description>
				<content:encoded><![CDATA[<p>With the upcoming GWT 2.5 release we will be able to create cell widgets using UiRenderer, a sort of an UiBinder technique. The main difference: while UiBinder creates either widgets or DOM elements to be used with (Resize)Composite or Widgets, the new approach enables us to render the content as HTML, as required by the cell widgets.</p>
<p>Coding HTML in a custom cell means writing HTML in Java code, and while it is possible, it is not very readable. The code is hard to read and hard to maintain. Wrapping css, js and html in Widgets is quite heavyweight, but it enables a certain level of software engeneering on the java side. With the cell widgets it changed in favor of performance &#8211; and in my opinion it was a fair trade: we needed an efficient data grid.</p>
<p>The first remedy for the HTML and CSS pain with the cell widgets came with the SafeHTMLTemplates. SafeHtmlTemplates did a good job helping here and there, here is an simple Example:</p>
<p></p><pre class="crayon-plain-tag">interface MyTemplate extends SafeHtmlTemplates {
        @Template(&quot;&lt;span style=&quot;0cursor: pointer; text-decoration: underline; padding-left: 5px;&quot;&gt;{0}&lt;/span&gt;&quot;)
         SafeHtml withFileName(SafeHtml fileNameSafeHTML);
    }</pre><p></p>
<p>Another nice example (where I do copy and past from), comes from the <a href="http://code.google.com/p/google-web-toolkit/source/browse/releases/2.4/user/src/com/google/gwt/cell/client/IconCellDecorator.java" target="_blank">IconCellDecorator</a> from the toolkit itself. For &#8220;small&#8221; or &#8220;simple&#8221; cells, SafeHtmlTemplates will continue to be my favorite approach. But when it comes down to more complex cells, the new UiRenderer approach is better.</p>
<p>One drawback with the SafeHtmlTemplate approach is that it is cumbersome to catch specific events on the rendered cell. Since the cell is not a Widget, you cannot register DOM event handlers. This changes a little with the new UiRenderer, as shown on the next example.</p>
<p>So here is a more complete example of how to use an UiRenderer to shape a custom cell. This is quite cutting edge, and the API is likely to change. The example below works with GWT 2.5 RC1. The actual 2.5 RC documentation seems to be a little out-dated, it took me a little try-and-error to get it working.</p>
<p>This is the UiBinder like markup for the layout of the cell. Did you notice the &#8220;fileName&#8221; trick? You declare what the cell will need with the &#8220;&lt;ui:with field&#8221; element, and use it later with &#8220;&lt;ui:text from&#8221;&#8230;</p>
<p></p><pre class="crayon-plain-tag">&lt;!DOCTYPE ui:UiBinder SYSTEM &quot;http://dl.google.com/gwt/DTD/xhtml.ent&quot;&gt;
&lt;ui:UiBinder xmlns:ui=&quot;urn:ui:com.google.gwt.uibinder&quot;&gt;
	&lt;ui:with field='filename' type='java.lang.String' /&gt;
	&lt;ui:style&gt;
		.fileName {
			cursor: pointer;
			text-decoration: underline;
			padding-left: 5px;
		}
	&lt;/ui:style&gt;
	&lt;div&gt;
		&lt;span ui:field=&quot;fileNameSpan&quot; class=&quot;{style.fileName}&quot;&gt;
			&lt;ui:text from='{filename}' /&gt;
		&lt;/span&gt;
	&lt;/div&gt;
&lt;/ui:UiBinder&gt;</pre><p></p>
<div></div>
<div>The real magic than happens in the Java counterpart:</div>
<div></div>
<p></p><pre class="crayon-plain-tag">public class FileNameCell extends AbstractCell {

    private static CellBinder cellRenderer = GWT.create(CellBinder.class);

    interface CellBinder extends UiRenderer {

        void render(SafeHtmlBuilder sb, String filename);

        void onBrowserEvent(FileNameCell cell, NativeEvent e, Element p, ValueUpdater valueUpdater, FileDTO n);
    }

    public FileNameCell() {
        super(&quot;click&quot;);
    }

    @Override
    public void onBrowserEvent(Context context, Element parent, FileDTO value, NativeEvent event, ValueUpdater valueUpdater) {
        cellRenderer.onBrowserEvent(this, event, parent, valueUpdater, value);
    }

    @Override
    public void render(Context context, FileDTO file, SafeHtmlBuilder sb) {

        cellRenderer.render(sb, file.getName());

    }

    @UiHandler(&quot;fileNameSpan&quot;)
    void onFileNameGotPressed(ClickEvent event, Element parent, ValueUpdater valueUpdater, FileDTO name) {
        valueUpdater.update(name);
    }

}</pre><p></p>
<p>This is very promising! </p>
]]></content:encoded>
			<wfw:commentRss>http://pgt.de/2012/07/06/creating-cell-widgets-with-uibinder/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How to change the style of a CellTable/ DataGrid</title>
		<link>http://pgt.de/2012/07/06/how-to-change-the-style-of-a-celltable-datagrid/</link>
		<comments>http://pgt.de/2012/07/06/how-to-change-the-style-of-a-celltable-datagrid/#comments</comments>
		<pubDate>Fri, 06 Jul 2012 09:19:58 +0000</pubDate>
		<dc:creator>P.G.Taboada</dc:creator>
				<category><![CDATA[GWT]]></category>
		<category><![CDATA[cellgrid]]></category>
		<category><![CDATA[custom style]]></category>
		<category><![CDATA[gwt]]></category>

		<guid isPermaLink="false">http://pgt.de/?p=968</guid>
		<description><![CDATA[The cell table widgets in GWT use a client bundle to store all the required resources. This is great in reducing the number of round-trips for loading the required css and image resources, and allows us to place images and css fragments where they belong: close to the components. But how do we change the [...]]]></description>
				<content:encoded><![CDATA[<p>The cell table widgets in GWT use a client bundle to store all the required resources. This is great in reducing the number of round-trips for loading the required css and image resources, and allows us to place images and css fragments where they belong: close to the components.</p>
<p>But how do we change the styles? Simply subclass the client bundle, replace the images/ styles partially or completely, and they give it to the cell widget.</p>
<p>Here is a small example:</p><pre class="crayon-plain-tag">interface TableResources extends DataGrid.Resources {
    @Override
    @Source(value = {DataGrid.Style.DEFAULT_CSS, &quot;DataGridPatch.css&quot;})
    DataGrid.Style dataGridStyle();
  }</pre><p>Now, you have to create the cell table:</p><pre class="crayon-plain-tag">@UiField(provided = true)
DataGrid&lt;Company&gt; table;
(...)
table = new DataGrid&lt;Comapany&gt;(numRows,
        GWT.&lt;TableResources&gt; create(TableResources.class));
(...)</pre><p></p>
]]></content:encoded>
			<wfw:commentRss>http://pgt.de/2012/07/06/how-to-change-the-style-of-a-celltable-datagrid/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>GWT 2.5 Release candidate 1 [update1]</title>
		<link>http://pgt.de/2012/06/27/gwt-2-5-release-candidate-1/</link>
		<comments>http://pgt.de/2012/06/27/gwt-2-5-release-candidate-1/#comments</comments>
		<pubDate>Wed, 27 Jun 2012 17:01:14 +0000</pubDate>
		<dc:creator>P.G.Taboada</dc:creator>
				<category><![CDATA[GWT]]></category>

		<guid isPermaLink="false">http://pgt.de/?p=955</guid>
		<description><![CDATA[Just in time for the Google IO 2012, the GWT team released a first release candidate for the upcoming GWT version 2.5. The download can be found in the GWT  google code project downloads page. [update1] The official  release notes are missing can be found here, but and there is a blog posting about  the [...]]]></description>
				<content:encoded><![CDATA[<p>Just in time for the Google IO 2012, the GWT team released a first release candidate for the upcoming GWT version 2.5.</p>
<div>The download can be found in the <a href="http://code.google.com/p/google-web-toolkit/downloads/list" target="_blank">GWT  google code project downloads page</a>.</div>
<div></div>
<div><strong>[update1]</strong></div>
<div>The official  release notes <del>are missing</del> can be found <a href="https://developers.google.com/web-toolkit/doc/latest/ReleaseNotes" target="_blank">here</a>, <del>but</del> and there is a blog <a href="http://googlewebtoolkit.blogspot.de/2012/06/gwt-2.html" target="_blank">posting</a> about  the new and noteworthy features/ changes:</div>
<div>
<div><strong>[/update1]</strong></div>
</div>
<div>
<ul>
<li>Preview of Super Dev Mode</li>
<li>Introducing Elemental</li>
<li>Speed and Optimization Improvements</li>
<li>ARIA</li>
<li>UiBinder and CellWidget Enhancements</li>
</ul>
</div>
<div>Citing Ray Cromwell from the GWT team about Elemental:</div>
<blockquote>
<div>It&#8217;s basically a new API for GWT that is &#8220;to the metal&#8221;. It is not hand written, but completely generated by the W3C machine readable IDL specs which are used by Chrome and Firefox to implement the C++/Javascript API bindings.This means GWT will have 100% feature parity with hand written JS. There will be no API not exposed. In fact, even experimental stuff like MouseLock, Web Components/Shadow DOM and Web Intents is exposed. And of course, Typed arrays, WebGL, WebAudio, WebSockets, WebRTC, WebWorkers, and pretty much everything else.</div>
</blockquote>
<div>Just for the curious: if you don&#8217;t know how bare &#8220;to the metal&#8221; elemental is, have a look <a href="http://code.google.com/p/google-web-toolkit/source/browse/trunk/elemental/examples/simple/src/elemental/example/client/ElementalExample.java?r=11039" target="_blank">here</a>. In my opinion,  it is nothing I would like to be building apps with, but it is the best we can get to build components with. And it is a change of course: this is something that is really leaving old browsers behind, meaning that we developers must start developing more defensively.</div>
<div></div>
<div>
<div><strong>[update1]</strong></div>
<div>There recording of the session is not available yet, but the slides of the presentation can be found on <a href="https://docs.google.com/presentation/d/1pC9WK80-fzIs2iMQOO3Jsvfmqv2erI9xucuF3lHOE7Q/edit?pli=1#slide=id.p18" target="_blank">google docs</a>.</div>
</div>
<div><strong>[/update1]</strong></div>
<div></div>
<div>Taking GWT 2.5 RC1 to a ride on an existing project was not a problem at all. The compile settings did not change, and none of my code complained about the new version.</div>
<div>So nothing new? Not really! One of the big news to GWT 2.5 is that the closure compiler was integrated into GWT.</div>
<div></div>
<div>Compiling the app with a few optimizations turned on, I managed to reduce the size of the compile output by almost 50%!!!</div>
<div>
<blockquote><p>&lt;set-property name=<em>&#8220;compiler.stackMode&#8221;</em> value=<em>&#8220;strip&#8221;</em> /&gt;<br />
&lt;set-configuration-property name=<em>&#8220;compiler.enum.name.obfuscate&#8221;</em> value=<em>&#8220;true&#8221;</em> /&gt;</p>
<div>-XenableClosureCompiler</div>
<div>-XdisableClassMetadata</div>
<div>-XdisableCastChecking</div>
<div>-XfragmentMerge 20</div>
</blockquote>
</div>
<div></div>
<div>Unfortunately I was not able to generate a SOYC report for those settings (why?), so I cannot provide hard numbers. As soon as I figured it out I will update the post.</div>
]]></content:encoded>
			<wfw:commentRss>http://pgt.de/2012/06/27/gwt-2-5-release-candidate-1/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Checkbox in cell table/ data grid header</title>
		<link>http://pgt.de/2012/05/09/checkbox-in-cell-table-data-grid-header/</link>
		<comments>http://pgt.de/2012/05/09/checkbox-in-cell-table-data-grid-header/#comments</comments>
		<pubDate>Wed, 09 May 2012 11:00:07 +0000</pubDate>
		<dc:creator>P.G.Taboada</dc:creator>
				<category><![CDATA[GWT]]></category>

		<guid isPermaLink="false">http://pgt.de/?p=945</guid>
		<description><![CDATA[Here is a simple column header that selects/ de-selects all rows in a table. When all rows are checked, the header becomes checked automatically. Clicking o the checkbox in the header causes either to select or de-select all rows. I am using the selection model and the data list provider to do the selection magic. [...]]]></description>
				<content:encoded><![CDATA[<p style="text-align: left;">Here is a simple column header that selects/ de-selects all rows in a table. When all rows are checked, the header becomes checked automatically. Clicking o the checkbox in the header causes either to select or de-select all rows.</p>
<p style="text-align: left;"><img class="size-full wp-image-948 alignnone" title="selection" src="http://pgt.de/wp-content/uploads/2012/05/selection.png" alt="" width="64" height="219" /></p>
<p style="text-align: left;">I am using the selection model and the data list provider to do the selection magic.</p>
<p style="text-align: left;">May not work for everyone&#8230;.</p>
<p>And here is my custom header:</p><pre class="crayon-plain-tag">public final class CheckboxHeader extends Header {

	private final MultiSelectionModel selectionModel;
	private final ListDataProvider provider;

	public CheckboxHeader(MultiSelectionModel selectionModel,
			ListDataProvider provider) {
		super(new CheckboxCell());
		this.selectionModel = selectionModel;
		this.provider = provider;
	}

	@Override
	public Boolean getValue() {
		boolean allItemsSelected = selectionModel.getSelectedSet().size() == provider
				.getList().size();
		return allItemsSelected;
	}

	@Override
	public void onBrowserEvent(Context context, Element elem, NativeEvent event) {
		InputElement input = elem.getFirstChild().cast();
		Boolean isChecked = input.isChecked();
		for (TYPE element : provider.getList()) {
			selectionModel.setSelected(element, isChecked);
		}
	}

}</pre><p></p>
]]></content:encoded>
			<wfw:commentRss>http://pgt.de/2012/05/09/checkbox-in-cell-table-data-grid-header/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Studie und GWT Referenzliste</title>
		<link>http://pgt.de/2012/05/04/studie-und-gwt-referenzliste/</link>
		<comments>http://pgt.de/2012/05/04/studie-und-gwt-referenzliste/#comments</comments>
		<pubDate>Fri, 04 May 2012 08:13:30 +0000</pubDate>
		<dc:creator>P.G.Taboada</dc:creator>
				<category><![CDATA[GWT]]></category>
		<category><![CDATA[gwt reference list]]></category>
		<category><![CDATA[studie]]></category>

		<guid isPermaLink="false">http://pgt.de/?p=936</guid>
		<description><![CDATA[Ich möchte kurz auf zwei Dinge aufmerksam machen, die mich in letzter Zeit beschäftigt haben&#8230; Entstanden sind zwei Instrumente, die für uns GWT-Interessierte relevant sein könnten: zum einen geht es um eine Studie, die im kleinen Kreis den Einsatz von GWT in deutschen Unternehmen dokumentiert, zum anderen geht es tatsächlich um eine Liste mit Unternehmen, [...]]]></description>
				<content:encoded><![CDATA[<p>Ich möchte kurz auf zwei Dinge aufmerksam machen, die mich in letzter Zeit beschäftigt haben&#8230;</p>
<p>Entstanden sind zwei Instrumente, die für uns GWT-Interessierte relevant sein könnten: zum einen geht es um eine Studie, die im kleinen Kreis den Einsatz von GWT in deutschen Unternehmen dokumentiert, zum anderen geht es tatsächlich um eine Liste mit Unternehmen, die GWT einsetzen.</p>
<p><strong>OIO Kompass : Java Web-Frameworks</strong></p>
<p>&nbsp;</p>
<p><a href="http://www.oio.de/public/java/java-web-frameworks-vergleich/OIO-Kompass-Webframeworks-Studie.pdf"><img class="alignleft size-full wp-image-942" style="margin: 10px;" title="Studie" src="http://pgt.de/wp-content/uploads/2012/05/studie.png" alt="" width="196" height="279" /></a></p>
<p>Im letzten Jahr habe ich in Zusammenarbeit mit der Firma Orientaion in Objects, Mannheim, im kleinen Kreis eine Umfrage zu den Hintergründen der Auswahl von Java Web-Frameworks im deutschsprachigen Raum durchgeführt.</p>
<p>Die Studie, die wir kürzlich veröffentlicht haben, beruhte auf 50 Entscheidungen. Von diesen Entscheidungen waren ca. 250 Entwickler und 200 Projekte betroffen. Genug, <a href="http://www.oio.de/public/java/java-web-frameworks-vergleich/jsf-vs-gwt-studie.htm" target="_blank">um eine erste Studie zu veröffentlichen</a>. Die Studie kann auch als <a href="http://www.oio.de/public/java/java-web-frameworks-vergleich/OIO-Kompass-Webframeworks-Studie.pdf">PDF</a> geladen werden.</p>
<p>Unter dem reisserischem Titel <a href="http://www.heise.de/developer/meldung/Java-Frameworks-Zweikampf-zwischen-JSF-und-GWT-1546312.html" target="_blank">Java-Frameworks: Zweikampf zwischen JSF und GWT</a> hatte unsere kleine Studie einen kleinen Auftritt in den Medien.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Und somit ist auch die zweite Runde eingeleitet: mit einem überarbeiteten Fragebogen wollen wir die Studie nochmal im großen Kreis durchführen.</p>
<p><a href="http://lemniscus.de/27525/lang-de"><img class="size-full wp-image-940 alignleft" style="margin: 10px;" title="Umfrage..." src="http://pgt.de/wp-content/uploads/2012/05/umfrage.png" alt="" width="100" height="71" /></a><br />
<a href="http://lemniscus.de/27525/lang-de">Hier geht es direkt zur aktuellen Umfrage.</a></p>
<p>Für die Beantwortung der Fragen veranschlagen wir rund 10 bis 15 Minuten:</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>GWT Referenzliste</strong></p>
<p><a href="http://gwtreferencelist.appspot.com"><img class="alignleft size-full wp-image-943" style="margin: 10px;" title="Referenzliste" src="http://pgt.de/wp-content/uploads/2012/05/referencelist.png" alt="" width="100" height="72" /></a>In den letzten Jahren wurde ich unzählige Male danach gefragt, welche Unternehmen GWT einsetzen würden. In diesem Kontext ist eine kleine GWT Anwendung entstanden, in der sich Unternehmen anmelden können, die GWT im Einsatz haben.</p>
<p>Inzwischen sind 80+ Unternehmen eingetragen, darunter 20++ aus Deutschland und 20++ aus den USA.</p>
<p><a href="http://gwtreferencelist.appspot.com" target="_blank">Die Liste ist öffentlich zugänglich</a>, die Kontaktdaten werden nicht veröffentlicht (dienen nur für Rückfragen und Verifizierung). Optional können ein paar Angaben zum Kontext gemacht werden, daraus entstehen die netten Statistiken, die ebenfalls öffentlich zugänglich sind.</p>
<p>Mit ein bisschen Hilfe können wir sicherlich die Anzahl der deutschen Unternehmen in der Liste deutlich erhöhen. Für die Registrierung werden keine 5 Minuten veranschlagt&#8230;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://pgt.de/2012/05/04/studie-und-gwt-referenzliste/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Titelthema Javascript &amp; Eclipse im Eclipse Magazin 2.12</title>
		<link>http://pgt.de/2012/03/29/titelthema-javascript-eclipse-im-eclipse-magazin-2-12/</link>
		<comments>http://pgt.de/2012/03/29/titelthema-javascript-eclipse-im-eclipse-magazin-2-12/#comments</comments>
		<pubDate>Thu, 29 Mar 2012 15:51:26 +0000</pubDate>
		<dc:creator>P.G.Taboada</dc:creator>
				<category><![CDATA[My blog]]></category>

		<guid isPermaLink="false">http://pgt.de/?p=919</guid>
		<description><![CDATA[Zeiten des Wandels Als Java-Entwickler ist man nicht selten Webentwickler. Über einen ungewöhnlich langen Zeitraum haben sich die Technologien um einen herum kaum geändert: Das W3C hat sich in Bezug auf HTML lange seitwärts, insgesamt im Kreis, aber praktisch kaum bewegt, der Browserkrieg schien gewonnen und mit den Java-Webframeworks waren wir im Großen und Ganzen [...]]]></description>
				<content:encoded><![CDATA[<p><strong>Zeiten des Wandels</strong></p>
<blockquote><p>Als Java-Entwickler ist man nicht selten Webentwickler. Über einen ungewöhnlich langen Zeitraum haben sich die Technologien um einen herum kaum geändert: Das W3C hat sich in Bezug auf HTML lange seitwärts, insgesamt im Kreis, aber praktisch kaum bewegt, der Browserkrieg schien gewonnen und mit den Java-Webframeworks waren wir im Großen und Ganzen recht zufrieden.</p></blockquote>
<p><strong>The Web 2.0 Toolkit</strong></p>
<blockquote><p>Das Google Web Toolkit ist eine Sammlung von Werkzeugen und Bibliotheken für die Entwicklung von JavaScript-Anwendungen. Das Toolkit wird sowohl intern von Google als auch weltweit in vielen Projekten eingesetzt. Das Besondere an GWT ist die Vorgehensweise: Ein Compiler liest Java-Quellen ein und generiert JavaScript. Somit können Java-Entwickler auf bestehendes Wissen, Erfahrungen und Werkzeuge aufsetzen. Allerdings hat GWT nicht den Versuch unternommen, das gesamte JDK und Swing im Browser zu unterstützen. Die JDK-Unterstützung ist fragmentarisch (nicht alle Klassen können verwendet werden), und GWT liefert ein eigenes, an HTML orientiertes<br />
UI-Komponentenmodell.</p></blockquote>
<p><img class="alignright size-full wp-image-928" title="eclipsemagazin-2.12" src="http://pgt.de/wp-content/uploads/2012/03/eclipsemagazin-2.12.png" alt="" width="120" height="161" /><br />
Der komplette Artikel von Benjamin Bart (Orientation in Objects GmbH) und Papick G. Taboada (pgt technology scouting GmbH)  <a href="http://pgt.de/wp-content/uploads/2012/03/ECM_2_2012_Taboada_JavaScript_GWT.pdf">kann im PDF nachgelesen werden</a> und stammt aus der Ausgabe 2.12 des Eclipse Magazins.</p>
]]></content:encoded>
			<wfw:commentRss>http://pgt.de/2012/03/29/titelthema-javascript-eclipse-im-eclipse-magazin-2-12/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to cancel backspace key from navigating back&#8230;</title>
		<link>http://pgt.de/2012/03/21/how-to-cancel-backspace-key-from-navigating-back/</link>
		<comments>http://pgt.de/2012/03/21/how-to-cancel-backspace-key-from-navigating-back/#comments</comments>
		<pubDate>Wed, 21 Mar 2012 21:48:16 +0000</pubDate>
		<dc:creator>P.G.Taboada</dc:creator>
				<category><![CDATA[GWT]]></category>
		<category><![CDATA[backspace]]></category>
		<category><![CDATA[gwt]]></category>
		<category><![CDATA[tweaks]]></category>

		<guid isPermaLink="false">http://pgt.de/?p=910</guid>
		<description><![CDATA[Don&#8217;t ask me who had the insane idea that one can navigate back when pressing the back space. In GWT we did something like that to cancel the backspace back navigation: [crayon-51c11e48a57a4/]]]></description>
				<content:encoded><![CDATA[<p>Don&#8217;t ask me who had the insane idea that one can navigate back when pressing the back space.</p>
<p>In GWT we did something like that to cancel the backspace back navigation:</p><pre class="crayon-plain-tag">Event.addNativePreviewHandler(new NativePreviewHandler() {
    @Override
    public void onPreviewNativeEvent(NativePreviewEvent event) {
        if (event.getNativeEvent().getKeyCode() == KeyCodes.KEY_BACKSPACE) {
            if (event.getNativeEvent().getEventTarget() != null) {
                Element as = Element.as(event.getNativeEvent().getEventTarget());
                if (as == RootPanel.getBodyElement()) {
                    event.getNativeEvent().stopPropagation();
                    event.getNativeEvent().preventDefault();
                }
            }

        }
    }
});</pre><p></p>
]]></content:encoded>
			<wfw:commentRss>http://pgt.de/2012/03/21/how-to-cancel-backspace-key-from-navigating-back/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Companies using Google Web Toolkit</title>
		<link>http://pgt.de/2012/03/15/companies-using-google-web-toolkit/</link>
		<comments>http://pgt.de/2012/03/15/companies-using-google-web-toolkit/#comments</comments>
		<pubDate>Wed, 14 Mar 2012 22:21:10 +0000</pubDate>
		<dc:creator>P.G.Taboada</dc:creator>
				<category><![CDATA[My blog]]></category>

		<guid isPermaLink="false">http://pgt.de/?p=905</guid>
		<description><![CDATA[Every now and than I get asked for a reference list of companies using GWT. First, there is Google: „AdWords, AdSense, Flights, Hotel Finder, Offers, Wallet, The New Blogger, Chrome Webstore, Product Search, Public Data, New Google Groups, Orkut, Google Takeout, Google Pagespeed, Google WebFonts, Google Tables, Google Health (discontinued), Google Wave (discontinued), PlayN (basis of Angry Birds)“ And now, online, there is a public reference list of companies using GWT: http://gwtreferencelist.appspot.com/ There [...]]]></description>
				<content:encoded><![CDATA[<p>Every now and than I get asked for a reference list of companies using GWT.</p>
<p>First, there is Google:</p>
<p><em>„AdWords, AdSense, Flights, Hotel Finder, Offers, Wallet, The New Blogger, Chrome Webstore, Product Search, Public Data, New Google Groups, Orkut, Google Takeout, Google Pagespeed, Google WebFonts, Google Tables, Google Health (discontinued), Google Wave (discontinued), PlayN (basis of Angry Birds)“</em></p>
<p>And now, online, there is a public reference list of companies using GWT:</p>
<p><a href="http://gwtreferencelist.appspot.com/" target="_blank">http://gwtreferencelist.appspot.com/</a></p>
<p>There you will find the company list, some fancy charts and the &#8220;register company&#8221; form. Using GWT and not on the list? Please register!</p>
<p><a href="http://gwtreferencelist.appspot.com/"><img class="size-full wp-image-906" title="referencelist" src="http://pgt.de/wp-content/uploads/2012/03/referencelist.png" alt="" width="520" height="375" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://pgt.de/2012/03/15/companies-using-google-web-toolkit/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>GWT 2.5?</title>
		<link>http://pgt.de/2011/12/08/gwt-2-5/</link>
		<comments>http://pgt.de/2011/12/08/gwt-2-5/#comments</comments>
		<pubDate>Thu, 08 Dec 2011 11:06:21 +0000</pubDate>
		<dc:creator>P.G.Taboada</dc:creator>
				<category><![CDATA[GWT]]></category>
		<category><![CDATA[gwt]]></category>

		<guid isPermaLink="false">http://pgt.de/?p=898</guid>
		<description><![CDATA[Normally the GWT team does not comment on future milestones, releases and does not provide an official roadmap (Issue 7013). But this time, the team posted several comments on whether GWT is dead or not (mainly because of the fuss around Dart), and Ray Cromwell posted a comment providing some insight on what is coming [...]]]></description>
				<content:encoded><![CDATA[<p>Normally the GWT team does not comment on future milestones, releases and does not provide an official roadmap (<a href="http://code.google.com/p/google-web-toolkit/issues/detail?id=7013" target="_blank">Issue 7013</a>).</p>
<p>But this time, the team posted several comments on whether <a href="http://blog.oio.de/2011/12/08/future-of-gwt-and-gwt-2-5/" target="_blank">GWT is dead or not</a> (mainly because of the fuss around Dart), and Ray Cromwell posted a comment providing some insight on what is coming on GWT 2.5:</p>
<blockquote><p>The next release or two of GWT may include more core improvements than the last few point releases of GWT so far, consider:</p>
<p>1) Compiler optimizations that reduce code by size by 30% uncompressed, and 15% gzipped<br />
2) SourceMap support and Source-Level Java debugging in Chrome (and hopefully Firefox)<br />
3) A „super draft mode“ that can recompile many apps in under 10 seconds and most under 5<br />
4) New „to the metal“ „modern browser“ HTML bindings<br />
5) Testing framework that makes GUI testing delightful<br />
6) Incremental compile support to speed up production compiles</p>
<p>So code will be getting smaller, faster, easier to debug (in some situations) and test, and compiles will go quicker. This reflects somewhat the shift in GWT team composition, but as people ramp up on other parts of the SDK (e.g. MVP stuff), I’m sure there will be improved responsiveness to fixing bugs in that area as well.</p></blockquote>
<p>Add this to the list of issues already fixed and scheduled for 2.5, and we will have a really interesting release.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://pgt.de/2011/12/08/gwt-2-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GWT-JSF &#8211; Wahl-o-Mat</title>
		<link>http://pgt.de/2011/05/05/gwt-jsf-wahl-o-mat/</link>
		<comments>http://pgt.de/2011/05/05/gwt-jsf-wahl-o-mat/#comments</comments>
		<pubDate>Thu, 05 May 2011 07:15:22 +0000</pubDate>
		<dc:creator>P.G.Taboada</dc:creator>
				<category><![CDATA[conferences]]></category>
		<category><![CDATA[GWT]]></category>
		<category><![CDATA[Java & Co.]]></category>
		<category><![CDATA[gwt]]></category>
		<category><![CDATA[jsf]]></category>
		<category><![CDATA[politics]]></category>

		<guid isPermaLink="false">http://pgt.de/?p=885</guid>
		<description><![CDATA[Die kleine Entscheidungshilfe, bzw. die Vortragsfolien zu unserem Vortrag auf der Jax 2011. Oder direkt hier: http://bit.ly/gwt-jsf-wahlomat]]></description>
				<content:encoded><![CDATA[<p>Die kleine Entscheidungshilfe, bzw. die Vortragsfolien zu unserem Vortrag auf der Jax 2011.</p>
<p><iframe frameborder='0' style='width:460px;height:375px;' src='http://public.iwork.com/embed/?d=wahlomat-gwt-jsf.key&#038;a=p51619782&#038;h=768&#038;w=1024&#038;sw=458'></iframe></p>
<p>Oder direkt hier: <a href="http://bit.ly/gwt-jsf-wahlomat" target="_blank">http://bit.ly/gwt-jsf-wahlomat</a></p>
]]></content:encoded>
			<wfw:commentRss>http://pgt.de/2011/05/05/gwt-jsf-wahl-o-mat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Presentation slides: GWT in 20 minutes</title>
		<link>http://pgt.de/2011/02/01/presentation-slides-gwt-in-20-minutes/</link>
		<comments>http://pgt.de/2011/02/01/presentation-slides-gwt-in-20-minutes/#comments</comments>
		<pubDate>Tue, 01 Feb 2011 21:53:51 +0000</pubDate>
		<dc:creator>P.G.Taboada</dc:creator>
				<category><![CDATA[conferences]]></category>
		<category><![CDATA[GWT]]></category>

		<guid isPermaLink="false">http://pgt.de/?p=841</guid>
		<description><![CDATA[It is not easy to &#8220;sneak preview&#8221; any technology in 20 minutes&#8230; I was the last in a row of five &#8220;RIA&#8221; technologies talks. It was a very interesting evening, great feedback and nice chatting afterwards. Recapping, we had a talk on RAP, the Canoo RIA thing, Silverlight and Qooxdoo. I jumped in with my talk on [...]]]></description>
				<content:encoded><![CDATA[<p>It is not easy to &#8220;sneak preview&#8221; any technology in 20 minutes&#8230; I was the last in a row of five &#8220;RIA&#8221; technologies talks.</p>
<p>It was a very interesting evening, great feedback and nice chatting afterwards. Recapping, we had a talk on RAP, the Canoo RIA thing, Silverlight and Qooxdoo. I jumped in with my talk on GWT, my third slide says: &#8220;GWT is better&#8221;:</p>
<p style="text-align: center;"><a href="http://bit.ly/GWT_in_20_min"><img class="size-full wp-image-871 aligncenter" src="http://pgt.de/wp-content/uploads/2011/02/gwt_better.png" alt="" width="512" height="289" /></a></p>
<p><a href="http://bit.ly/GWT_in_20_min" target="_blank">Here are the slides</a> I used in the VKSI sneak preview &#8220;<a href="http://www.vksi.de/20110201-ria-plattformen.html" target="_blank">RIA Entwicklungsplattformen im Vergleich</a>&#8220;.</p>
]]></content:encoded>
			<wfw:commentRss>http://pgt.de/2011/02/01/presentation-slides-gwt-in-20-minutes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IE 6 / 7 / 8 bad performance?</title>
		<link>http://pgt.de/2011/01/30/ie-6-7-8-bad-performance/</link>
		<comments>http://pgt.de/2011/01/30/ie-6-7-8-bad-performance/#comments</comments>
		<pubDate>Sun, 30 Jan 2011 19:04:37 +0000</pubDate>
		<dc:creator>P.G.Taboada</dc:creator>
				<category><![CDATA[GWT]]></category>
		<category><![CDATA[gwt]]></category>
		<category><![CDATA[IE]]></category>

		<guid isPermaLink="false">http://pgt.de/?p=839</guid>
		<description><![CDATA[When you start developing complex enterprise applications using GWT, you can run into the problem that IE does not perform quite well with too much JavaScript. Many companies are still stuck in &#8211; IMHO &#8211; the most successfull vendor-version lock-in web history. Ever heard this? I cannot upgrade IE in our company because of  (&#8230;)* [...]]]></description>
				<content:encoded><![CDATA[<p>When you start developing complex enterprise applications using GWT, you can run into the problem that IE does not perform quite well with too much JavaScript.</p>
<p>Many companies are still stuck in &#8211; IMHO &#8211; the most successfull vendor-version lock-in web history. Ever heard this?</p>
<blockquote><p>I cannot upgrade IE in our company because of  (&#8230;)*</p>
<p>(*) You can fill in you favorite corporate intranet application that won&#8217;t work elsewhere, only in IE6.</p></blockquote>
<p>And even if you can upgrade IE to the latest version (actually IE8), it won&#8217;t get much better. Chrome, Opera, Firefox and Safari &#8211; pic anyone and you will see that the RIA in question can be fast.</p>
<p>And here is where Google comes to the rescue. In a recent blog posting, the Chromium declared that &#8220;<a href="http://blog.chromium.org/2010/12/chrome-is-ready-for-business.html" target="_blank">chrome is ready for business</a>&#8220;:</p>
<blockquote><p>Both Chrome and Chromium are now manageable through Group Policy objects on Windows, plist/MCX configuration on Mac, and special JSON configuration files on Linux. We polished up the NTLM and Kerberos protocol support, and created a list of supported policies and administrative templates to help administrators deploy.</p></blockquote>
<p>This is good news for companies willing to switch from IE to chrome, but for those sticking to IE we still have the nochrome-vendor-version lock-in. And this is the greatest problem: how do you switch to a modern browser, if you must run several applications in IE? The answer is simple: you switch the rendering engine inside IE, but not for all applications, just for those explicitly asking for it:</p>
<blockquote><p>For users needing access to older web applications not yet qualified for Chrome, we also developed Chrome Frame, an Internet Explorer (TM) plug-in that provides Chrome-quality rendering for the broader Web, while defaulting to host rendering for any web applications that still require IE.</p></blockquote>
<p>This way, IE will work as always, but if some page adds a simple html or http header, google chrome will do the rendering of the page, inside IE. Users don&#8217;t have to switch from one browser to another, and the IT department can rollout one web application upgrade after another, without compromising legacy apps.</p>
<p>You could even use a <a href="http://wiki.squid-cache.org/SquidFaq/ContentAdaptation" target="_blank">proxy with content adaptation</a> to add the required http header to all pages from the internet.</p>
<p>I mean, really, <a href="http://apcmag.com/microsoft-warns-stop-using-ie6-ie7-now.htm" target="_blank">even Microsoft says you should upgrade</a>:</p>
<blockquote><p>Microsoft&#8217;s urging to upgrade to IE8 appears to be partially in response to the German and French governments&#8217; recommendation that people stop using Internet Explorer altogether due to its security vulnerabilities.</p>
<p>Microsoft&#8217;s announcement said: &#8220;It is important to note that all software has vulnerabilities and switching browsers in an attempt to protect against this one, highly publicized, but currently limited attack can inadvertently create some false sense of security. Moreover, IE8 has other built-in security protections, such as the SmartScreen filter, that other browsers do not have that protect against real consumer threats, such as socially engineered malware and phishing attacks.&#8221;</p></blockquote>
<p><div style="padding: 50px 10px 50px 10px; text-align:center;"><script type="text/javascript"><!--
google_ad_client = "ca-pub-8682101792434953";
/* blogposts */
google_ad_slot = "3634251742";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div></p>
]]></content:encoded>
			<wfw:commentRss>http://pgt.de/2011/01/30/ie-6-7-8-bad-performance/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>GWT and standards compliance</title>
		<link>http://pgt.de/2011/01/30/gwt-and-standards-compliance/</link>
		<comments>http://pgt.de/2011/01/30/gwt-and-standards-compliance/#comments</comments>
		<pubDate>Sun, 30 Jan 2011 17:11:14 +0000</pubDate>
		<dc:creator>P.G.Taboada</dc:creator>
				<category><![CDATA[GWT]]></category>
		<category><![CDATA[gwt]]></category>
		<category><![CDATA[java ee]]></category>
		<category><![CDATA[standards]]></category>

		<guid isPermaLink="false">http://pgt.de/?p=828</guid>
		<description><![CDATA[This is a sort of &#8220;standard&#8221; question when it comes down to the topic web frameworks, Java and finally the Google Web Toolkit (GWT). My first though is, what exactly is meant with &#8220;standard&#8221;? A short look at Wikipedia shows: Open Standard: An open standard is a standard that is publicly available and has various [...]]]></description>
				<content:encoded><![CDATA[<p>This is a sort of &#8220;standard&#8221; question when it comes down to the topic web frameworks, Java and finally the Google Web Toolkit (GWT).</p>
<p>My first though is, what exactly is meant with &#8220;standard&#8221;?<br />
<span id="more-828"></span><br />
A short look at Wikipedia shows:</p>
<blockquote><p><a href="http://en.wikipedia.org/wiki/Open_standard" target="_blank">Open Standard</a>: An open standard is a standard that is publicly available and has various rights to use associated with it, and may also have various properties of how it was designed (e.g. open process). There is no single definition and interpretations do vary with usage.</p>
<p><a href="http://en.wikipedia.org/wiki/De_facto_standard">De facto standard</a>: A de facto standard is a custom, convention, product, or system that has achieved a dominant position by public acceptance or market forces (such as early entrance to the market). De facto is a Latin phrase meaning &#8220;concerning the fact&#8221; or &#8220;in practice&#8221;.</p>
<p><a href="http://en.wikipedia.org/wiki/Internet_standard" target="_blank">Internet standard</a>: In computer network engineering, an Internet Standard (STD) is a normative specification of a technology or methodology applicable to the Internet. Internet Standards are created and published by the Internet Engineering Task Force (IETF).</p></blockquote>
<p>No, no,  no! Not that kind of standard, right? Ah, ok, the Java EE standard!</p>
<p>Again, looking at Wikipedia you will find the following under &#8220;<a href="http://en.wikipedia.org/wiki/Java_Platform,_Enterprise_Edition#Nomenclature.2C_standards.2C_and_specifications" target="_blank">nomenclature, standards and specification</a>&#8220;:</p>
<blockquote><p>Java EE is defined by its specification. As with other Java Community Process specifications, providers must meet certain conformance requirements in order to declare their products as Java EE compliant.</p>
<p>Java EE includes several API specifications, such as JDBC, RMI, e-mail, JMS, web services, XML, etc., and defines how to coordinate them. Java EE also features some specifications unique to Java EE for components. These include Enterprise JavaBeans, Connectors, servlets, portlets (following the Java Portlet specification), JavaServer Pages and several web service technologies. This allows developers to create enterprise applications that are portable and scalable, and that integrate with legacy technologies.</p></blockquote>
<p>Which leaves us just a few options: the Servlet/ JSP and the JavaServer Faces specifications. While the Servlet and JSP specifications focus on how to handle HTTP request/ responses, the JSF specification defines a GUI component model for web applications.</p>
<p>The problem here is: there is no room anymore for another &#8220;compliant&#8221; web framework &#8211; JSF made it into the Java EE specification &#8211; end of line. But, despite of a wide industry support, JSF is not the only web framework being used today by Java developers. And to make things a little more trickier, typical Web 2.0 web applications do not render the UI on the server side but in the browser.</p>
<p>Fancy &#8220;Web 2.0&#8243; applications are not written in Java. Rich user interfaces are being rendered completely in the browser, avoiding the server roundtrip and minimizing latency. How? By simply using DHTML (technologies defined by the W3C).</p>
<p>So is this the end of Java? No! You will find people using Java backends for &#8220;Web 2.0&#8243; applications. But even as a backend technology we won&#8217;t be abiding by the rules of standard compliance by using RMI or SOAP to communicate: it is common to send lightweight JSON over HTTP. All you need for that is a Servlet and a little bit of JSON &lt;-&gt; Java objects mapping. People developing RIAs and using JSON back and forward to the server are measuring latency in milliseconds.</p>
<p>So, if you will be building a Web 2.0 application, don&#8217;t look for a specification at the Java EE side. It is the wrong side, as Java is actually the backend, not the frontend. That brings us back to the first standards I cited above: open standards, de facto standards and internet standards.</p>
<p>This is how things were before JSF, and this is how things became after Web 2.o.</p>
<p><a href="http://pgt.de/wp-content/uploads/2011/01/gwt-and-standards.png"><img class="aligncenter size-medium wp-image-829" title="gwt-and-standards" src="http://pgt.de/wp-content/uploads/2011/01/gwt-and-standards-300x203.png" alt="" width="300" height="203" /></a></p>
<p>So, back to the question, is GWT standard compliant or not? Well, besides of those blue boxes on the picture above I would say yes!</p>
<ul>
<li>The compiler is not standard, but I would not know what a standard compiler would be or mean to development anyway</li>
<li>The GWT-RPC mechanism is highly GWT proprietary, don&#8217;t use it if you don&#8217;t like it. But it is my belief that there aren&#8217;t too many developers out there that can code something better than GWT-RPC by hand&#8230;</li>
</ul>
<p><div style="padding: 50px 10px 50px 10px; text-align:center;"><script type="text/javascript"><!--
google_ad_client = "ca-pub-8682101792434953";
/* blogposts */
google_ad_slot = "3634251742";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div></p>
]]></content:encoded>
			<wfw:commentRss>http://pgt.de/2011/01/30/gwt-and-standards-compliance/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
