Simplifying Swing development with Genesis: wiring Swing apps with annotations

Netbean’s Matisse GUI builder has made a huge difference in the effort required to build a Swing app – with Netbeans 5.0 now it is possible to build good looking Swing apps with minimal effort.

But what about wiring together actual code with your new GUI front end? Michael Santos has an interesting blog entry on java.net about a project called Genesis that allows you to use annotations to wire up your code to your Swing code. The examples in the article look very simple – this is an approach we should keep our eyes on.

Google launch corporate Online Office suite

Based on their existing Online webapps, Google is announcing a corporate suite of applications targeted at businesses and organizations on Monday.

The suite is likely to comprise GMail, Google Calendar, Google Talk, and Page Creator. Also in the works are beta versions of their online Spreadsheet and Word Processing software.

The collection of apps will be available for free, with a premium edition available towards the end of the year that will include additional storage and support. The suite of apps is an extension of the ‘GMail for your Domain’ service, which allows you to use GMail with your own corporate or orgainization’s domain name, instead of ‘gmail.com’. The other apps offered are now available to take advantage of this feature.

Is Google about to beat Microsoft at their own game?

Handling validation on Entity properties

Grails GORM (Grails Object Relational Mapping) allows you to define a number of validation rules that are carried through to your view when entering data.

For example with following simple Entity:

<code>
class Test1 { 
    Long id
    Long version
    String string1
    Long testLong
    Float float1
	
    def constraints = {
        string1(blank:false)
        testLong(nullable:false,blank:false)
        float1(nullable:false,blank:false)
	}
...
}
</code>

The ‘constraints’ section defines the rules on the properties on this Entity – the rules are a comma separated list of name/value pairs for the rules to be applied. Notice the ‘blank’ only works on String properties. To require a value for any other property type, use ‘nullable:false’.

Here are some further self-explanatory examples from the online Grails docs:

<code>

   def constraints = {
          login(length:5..15,blank:false,unique:true)
          password(length:5..15,blank:false)
          email(email:true,blank:false)
          age(min:new Date(),nullable:false)
   }
</code>

X-develop – comments on an ‘unknown’ IDE – artima developer

Geert Bevin, known for his work on the full-stack open source framework ‘RIFE’, has an interesting post on artima developer about an interesting sounding IDE that I’ve never come across before called X-develop.

Geert mentions a couple of benefits of this IDE that I realize now seeing them in writing I find extremely infuriating with Eclipse – X-develop gives you ‘permissive’ code completition that still works even if you have compilation errors (which not many other IDEs including Eclipse do not), and the IDE itself takes up minimal screen real estate, something else that drives me crazy with the different perspectives and views in Eclipse.

Another cool feature which I would love to see in all IDEs (I’ve only read about this but have never seen it in an IDE before), is ‘back in time’ debugging, which allows you to step backwards through your code as well as forwards. This is an awesome feature. One of the most annoying features in current debuggers is that you are stepping through your code looking for that one particular place where you have some bug, and then you step too far by mistake and you miss it, and now you have to start again to get back to that one crucial place. If this feature is what it sounds like, then it would allow you to step back to previously executed code to see where you came from – that is an awesome timesaving feature.