For LDM class Ldm[T](provider:()=> T) extends LoadableDetachable... { def load():T { provider() } }
object Ldm { def apply(provider:()=>T) = new Ldm[T](provider) } could be used as ... val id = 1 val model = Ldm(()=>{dao.get(id)}) or val id = 1 def provider = dao.get(id) val model = Ldm(provider) On Fri, Jul 29, 2011 at 6: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 > >