I thought about this yesterday but maybe overloading the method is better. Because this way the function must have to be passed as of expecting an id argument, even if the id argument for ldm() is optional.
I just haven't added yet because of lack of usecase. :-) But thanks!! This DSL is saving me a lot of coding, even if is not actually a DSL, but a "way to go". :-) *Bruno Borges* www.brunoborges.com.br +55 21 76727099 On Fri, Jul 29, 2011 at 9:44 AM, Martin Grigorov <mgrigo...@apache.org>wrote: > 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 > >