OK, now I get it. Groovy allows you to do something similar. However, I believe 
this approach requires creating "builder" classes, correct? BXML offers a 
similar capability, but without the need for builders:

<Window>
  <BoxPane>
    <Label text="here's a Label inside a BoxPane inside a Window"/>
  </BoxPane>
</Window>

You can also define event listeners in BXML.

However, I see value in both approaches, I think a Scala builder library would 
be a great addition to the platform. By all means, please consider submitting 
it if you would like.

On Dec 21, 2010, at 12:42 AM, Gilbert, Clint wrote:

> 
> ________________________________________
> From: Greg Brown [[email protected]]
> Sent: Monday, December 20, 2010 8:54 PM
> To: calathus
> Cc: [email protected]
> Subject: Re: [pivot] are there any tools to convert bxml to Java?
> 
>> Also if we may really have declarative GUI design, using Scala may be more 
>> attractive way. Scala would allow declaring GUI in equivalent code side as 
>> BXML.
> 
> I'm not sure how this would work. Scala is conceptually more akin to Java 
> than markup. Could you elaborate?
> 
> 
> I've been moving a Pivot project of mine bit-by-bit from Java to Scala, so I 
> think I know what he's getting at here.  Scala makes nice-looking, 
> declarative DSLs possible.  I'm not familiar with BXML, but I'm guessing you 
> can declare things like: "here's a window and here's what it contains".  A 
> Scala DSL for this might look like
> 
> val window = Window {
>  BoxPane { 
>    new Label("here's a Label inside a BoxPane inside a Window")
> }
> }
> 
> I have a very small Scala lib to allow syntax like:
> 
> val component = new Button("Hello")
> 
> button onClick {
>  println("You clicked the button!")
> }
> 
> and 
> 
> val container = new BoxPane
> 
> container += new Label("A label")
> 
> and 
> 
> 
> val label = new Label("A label")
> val widget = new SomeWidget
> 
> container ++ (label, widget)
> 
> etc.
> 
> It's extremely rudimentary, but if anyone's interested I can share it with 
> the list.

Reply via email to