Bruno, Yet another idea for the dsl:
def ldm[R, ID](id: ID = null, f: (ID) => R) = {new LoadableDetachableModel(id) { override def load() : R = { f(id); } } } P.S. Not tested. On Thu, Jul 28, 2011 at 9:07 AM, Bruno Borges <bruno.bor...@gmail.com> wrote: > Just wanted to share my experience playing a little more with Scala and > Wicket> A few minutes ago I got this excelent code: > > I know it is too simple, and it can be accomplished as well in Java with > static imports. But still, for my project it's being great (and cool) to do > such things. > > object btnEditar extends Button("btnEditar") { > override def onSubmit() = { > - /* show fields */ > - camposForm.setVisibilityAllowed(true) > - btnSalvar.setVisibilityAllowed(true) > - cancelar.setVisibilityAllowed(true) > - > - /* hide them */ > - camposTela.setVisibilityAllowed(false) > - btnEditar.setVisibilityAllowed(false) > + show(camposForm, btnSalvar, cancelar) > + hide(camposTela, btnEditar) > } > } > add(btnEditar) > > Methods show/hide are imported as "import code.DSLWicket._" > > > > *Bruno Borges* > www.brunoborges.com.br > +55 21 76727099 > > > > On Wed, Jul 27, 2011 at 4:53 PM, Bruno Borges <bruno.bor...@gmail.com>wrote: > >> Thanks Martin, >> >> There was only a small little problem in your code. The correct syntax is: >> >> def label[T](id: String, model: IModel[T] = null): Label = { val label >> = new Label(id, model); add(label); label } >> >> The suggestions were updated on Gist. >> >> *Bruno Borges* >> www.brunoborges.com.br >> +55 21 76727099 >> >> >> >> On Wed, Jul 27, 2011 at 3:55 PM, Martin Grigorov <mgrigo...@apache.org>wrote: >> >>> Idea for simplification: use named parameters. >>> For example >>> def label[T](id: String, model: IModel[T]): Label = { val label = new >>> Label(id, model); add(label); label } >>> would become >>> def label[T](id: String, model = _ : IModel[T]): Label = { val label = >>> new Label(id, model); add(label); label } >>> >>> this way you'll have just one declaration of label function which will >>> handle the current three >>> >>> additionally you may add a pimp: >>> implicit def ser2model[S :< Serializable](ser: S): IModel[S] = >>> Model.of(ser) >>> >>> now even when you pass String as second param to label() it will be >>> converted to IModel >>> >>> On Wed, Jul 27, 2011 at 9:11 PM, Martin Grigorov <mgrigo...@apache.org> >>> wrote: >>> > Take a look at scala.swing.* sources. >>> > >>> > On Wed, Jul 27, 2011 at 8:34 PM, Bruno Borges <bruno.bor...@gmail.com> >>> wrote: >>> >> Can some Scala expert help me to make this DSL available as PML (pimp >>> my >>> >> library)? >>> >> >>> >> I've tried to code it that way but things didn't quite worked out the >>> way >>> >> they should. >>> >> >>> >> The reason is that for every Wicket object I create, I must extend the >>> trait >>> >> DSLWicket >>> >> >>> >> >>> >> >>> >> *Bruno Borges* >>> >> www.brunoborges.com.br >>> >> +55 21 76727099 >>> >> >>> >> >>> >> >>> >> On Wed, Jul 27, 2011 at 2:30 PM, Bruno Borges <bruno.bor...@gmail.com >>> >wrote: >>> >> >>> >>> Not really. >>> >>> >>> >>> The method onSubmit() of button is void, as well onClick(), so there's >>> no >>> >>> need for the function be passed as () => Unit or anything else. >>> >>> >>> >>> I made a few changes to it and updated on Gist. >>> >>> >>> >>> I've also uploaded a page that uses this DSL at >>> >>> https://gist.github.com/1109919 >>> >>> >>> >>> Take a look >>> >>> >>> >>> *Bruno Borges* >>> >>> www.brunoborges.com.br >>> >>> +55 21 76727099 >>> >>> >>> >>> >>> >>> >>> >>> On Wed, Jul 27, 2011 at 2:22 PM, Scott Swank <scott.sw...@gmail.com >>> >wrote: >>> >>> >>> >>>> I think you do want Unit, which as I understand it is closest >>> >>>> equivalent to "void" in Scala. >>> >>>> >>> >>>> http://www.scala-lang.org/api/current/scala/Unit.html >>> >>>> >>> >>>> Scott >>> >>>> >>> >>>> On Wed, Jul 27, 2011 at 10:14 AM, Bruno Borges < >>> bruno.bor...@gmail.com> >>> >>>> wrote: >>> >>>> > No, the function must return void, not another function (unit). >>> >>>> > >>> >>>> > But there's also the option of () => Nothing. Which one should I >>> use for >>> >>>> > this case? >>> >>>> > >>> >>>> > *Bruno Borges* >>> >>>> > www.brunoborges.com.br >>> >>>> > +55 21 76727099 >>> >>>> > >>> >>>> > >>> >>>> > >>> >>>> > On Wed, Jul 27, 2011 at 12:54 PM, Martin Grigorov < >>> mgrigo...@apache.org >>> >>>> >wrote: >>> >>>> > >>> >>>> >> def button(id: String, submit: () => Void): Button = { >>> >>>> >> >>> >>>> >> it should be () => Unit, no ? >>> >>>> >> >>> >>>> >> On Wed, Jul 27, 2011 at 6:51 PM, Martin Grigorov < >>> mgrigo...@apache.org >>> >>>> > >>> >>>> >> wrote: >>> >>>> >> > Adding some usage examples at the bottom will help us evaluate >>> it. >>> >>>> >> > >>> >>>> >> > Why not add type to >>> >>>> >> > def textField(id: String): TextField[_] = { val field = new >>> >>>> >> > TextField(id); add(field); field } >>> >>>> >> > to become >>> >>>> >> > def textField[T](id: String): TextField[T] = { val field = new >>> >>>> >> > TextField[T](id); add(field); field } >>> >>>> >> > >>> >>>> >> > usage: textField[Int](someId) >>> >>>> >> > >>> >>>> >> > with using implicit Manifest for T you can also can >>> automatically set >>> >>>> >> > the type: field.setType(m.erasure) >>> >>>> >> > >>> >>>> >> > On Wed, Jul 27, 2011 at 6:26 PM, Bruno Borges < >>> >>>> bruno.bor...@gmail.com> >>> >>>> >> wrote: >>> >>>> >> >> I've been playing with Wicket and Scala and I thought this >>> could be >>> >>>> >> added to >>> >>>> >> >> the wicket-scala project at WicketStuff. >>> >>>> >> >> >>> >>>> >> >> What do you guys think? >>> >>>> >> >> >>> >>>> >> >> https://gist.github.com/1109603 >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> *Bruno Borges* >>> >>>> >> >> www.brunoborges.com.br >>> >>>> >> >> +55 21 76727099 >>> >>>> >> >> >>> >>>> >> > >>> >>>> >> > >>> >>>> >> > >>> >>>> >> > -- >>> >>>> >> > Martin Grigorov >>> >>>> >> > jWeekend >>> >>>> >> > Training, Consulting, Development >>> >>>> >> > http://jWeekend.com >>> >>>> >> > >>> >>>> >> >>> >>>> >> >>> >>>> >> >>> >>>> >> -- >>> >>>> >> Martin Grigorov >>> >>>> >> jWeekend >>> >>>> >> Training, Consulting, Development >>> >>>> >> http://jWeekend.com >>> >>>> >> >>> >>>> >> >>> --------------------------------------------------------------------- >>> >>>> >> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>> >>>> >> For additional commands, e-mail: users-h...@wicket.apache.org >>> >>>> >> >>> >>>> >> >>> >>>> > >>> >>>> >>> >>>> --------------------------------------------------------------------- >>> >>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>> >>>> For additional commands, e-mail: users-h...@wicket.apache.org >>> >>>> >>> >>>> >>> >>> >>> >> >>> > >>> > >>> > >>> > -- >>> > Martin Grigorov >>> > jWeekend >>> > Training, Consulting, Development >>> > http://jWeekend.com >>> > >>> >>> >>> >>> -- >>> Martin Grigorov >>> jWeekend >>> Training, Consulting, Development >>> http://jWeekend.com >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>> For additional commands, e-mail: users-h...@wicket.apache.org >>> >>> >> > -- Martin Grigorov jWeekend Training, Consulting, Development http://jWeekend.com --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org