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

Reply via email to