Not yet, but I can make it available if there is interest. Antony Stubbs wrote: > Just a quick note, is the source available for all this? > > all I see is svn checkout > file:///home/sam/work/svn_repository/uniscala/trunk uniscala > on http://uniscala.net/source-repository.html > > On 14/07/2009, at 12:46 PM, Sam Stainsby wrote: > >> On Tue, 14 Jul 2009 11:38:33 +1200, Antony Stubbs wrote: >> >>> I'm very interested in people's suggestions of otherways of taking >>> advantage of Scala to make Wicket programming easier. >> >> We are using Scala and Wicket intensively (and the DB4O object database >> as well). One thing we are working on is Wicket form generation, which >> touches on ideas that are similar to those you have discussed. >> >> This is what we can do today: consider this domain class: >> >> class MyRectangle(var width:Int, var height:Int) extends Serializable { >> def area:Double = width*height >> } >> >> we can then do: >> >> class MyRectangleSchema extends SimpleFieldsSchema[MyRectangle]( >> ReadWriteFieldSchema("width", _.width, _.width = _:Int), >> ReadWriteFieldSchema("height", _.height, _.height = _:Int), >> ReadOnlyFieldSchema("area", _.area) >> ) >> >> Above we are defining the accessors and mutators for each field except >> the last which just has an accessor. We could probably use introspection >> to make this much more succinct, and will likely provide this as an >> option at some stage. As you see we don't use the JavaBeans conventions >> as we find they are not very scala-ish, and so fully automatic >> introspection is problematic. >> >> Creating a rectangle and schema first: >> >> val rectangle = new MyRectangle(width, height) >> val schema = new MyRectangleSchema() >> >> we use a 'builder' object to create Wicket components: >> >> val builder = new ViewBuilder { } >> >> We can then create a simple 'view' thus: >> >> builder.createView("panel1", schema, rectangle) >> >> and a simple form like this: >> >> builder.createFormView("panel2", schema, rectangle, >> new Button("submit") { >> override def onSubmit = // .. do something ... >> } >> ) >> >> Note that the above is completely type-safe. You can also mix and match >> fields from different schemas, and create schemas for aggregate objects >> by embedding (sub-)schemas inside other schemas. Builders can be >> overridden to provider custom components for any fields that need them. >> >> This part of the project is still half-formed and fairly raw and >> undocumented. Really only text fields are catered for. The javadoc is >> here: >> >> http://uniscala.net/uniscala-view/scaladocs/index.html >> http://uniscala.net/uniscala-view-wicket/scaladocs/index.html >> >> and is part of a larger project: >> >> http://uniscala.net/ >> >> Apologies for lack of cross-linking between modules in the scaladoc - I >> haven't worked out how to do this yet. >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >> For additional commands, e-mail: users-h...@wicket.apache.org >> >
-- Sam Stainsby - Managing Director Sustainable Software Pty Ltd "open knowledge :: social conscience" ABN: 32 117 186 286 WWW: http://sustainablesoftware.com.au/ E-mail: s...@sustainablesoftware.com.au Jabber: sjstain...@jabber.org Tel/Fax: +61 7 3289 5491 Mobile: +61 405 380 844 --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org