If you only intend to support border and flow layouts, you could
reduce the verbosity by maps implying border layout and vectors
implying flow layouts. That approach would limit you to simpler
layouts, but your example would become something like this:

(deflayout frame
  {:west gamepanel
   :east (deflayout sidepanel
             [nextpanel (JButton. "Exit")] :flow :trailing))


On Feb 2, 12:43 pm, Alexander Yakushev <[email protected]>
wrote:
> Since defining the UI in Clojure is pretty tedious process, even with
> all nice interop features, I decided to write a small library to do
> this more easily and in a declarative way. I was inspired by a series
> of blogposts by Stuart Sierra, he wrote a wonderful macro that deals
> with GridBagLayout. But often you don't need that complex layout, any
> simpler layout will do. So I spent an evening writing 
> thishttps://github.com/alexander-yakushev/deflayout.
> Currently only BorderLayout and FlowLayout are supported, but layouts
> can be added easily. I wanted somebody to look at the code and give
> the opinion about what can be done better and what changes can be
> made.
> Usage of the lib is very easy. Here is an example from my tetris game:
>
> (deflayout
>     frame (:border)
>     :WEST gamepanel
>     :EAST (deflayout
>                 sidepanel (:flow :TRAILING)
>                 nextpanel
>                 (JButton. "Exit")))
>
> In this example we define, that the frame will use BorderLayout and
> add two panels - one on the west side, and second one on the east one.
> Sidepanel that we add is the macro call itself, with FlowLayout and
> two elements added - another panel and a button.
> As you see, the macro executes the code differently based on which
> layout is used. Thus, when the BorderLayout is used, arguments are
> read by pairs where the first argument is position and the second is
> the object. Instead, in FlowLayout all objects are just passed
> sequentially.
> I will surely extend this macro to cover all other layouts, but I need
> some of the guidance and recommendations. Also, I would be happy if
> Stuart Sierra allowed me to include his GridBagLayout code into the
> lib.

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to