aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorscgilardi <scgilardi@gmail.com>2009-05-29 20:52:50 +0000
committerscgilardi <scgilardi@gmail.com>2009-05-29 20:52:50 +0000
commit59e48bbc1fbfb666962d931eb41452850c73759f (patch)
treef143f342c85a607debbd252701f5261387c3a19f
parentc23478d4a698744869732edd80ae9ebd4e48422c (diff)
miglayout: refactoring for clarity
-rw-r--r--src/clojure/contrib/miglayout.clj22
-rw-r--r--src/clojure/contrib/miglayout/internal.clj18
2 files changed, 24 insertions, 16 deletions
diff --git a/src/clojure/contrib/miglayout.clj b/src/clojure/contrib/miglayout.clj
index 0e03f8d4..d8f37180 100644
--- a/src/clojure/contrib/miglayout.clj
+++ b/src/clojure/contrib/miglayout.clj
@@ -20,8 +20,8 @@
;; Created 5 October 2008
(ns
- #^{:author "Stephen C. Gilardi",
- :doc "Clojure support for the MiGLayout layout manager
+ #^{:author "Stephen C. Gilardi",
+ :doc "Clojure support for the MiGLayout layout manager
http://www.miglayout.com/
Example:
@@ -31,8 +31,7 @@ Example:
"}
clojure.contrib.miglayout
- (:import (java.awt Container Component)
- (clojure.lang RT))
+ (:import java.awt.Container)
(:use clojure.contrib.miglayout.internal))
(defn miglayout
@@ -66,14 +65,7 @@ Example:
[#^Container container & args]
(let [item-constraints (apply parse-item-constraints args)
{:keys [keywords components]} item-constraints
- {:keys [layout column row]} keywords
- class (RT/classForName "net.miginfocom.swing.MigLayout")
- layout-manager (.newInstance class)]
- (doto layout-manager
- (.setLayoutConstraints layout)
- (.setColumnConstraints column)
- (.setRowConstraints row))
- (.setLayout container layout-manager)
- (doseq [[#^Component component constraints] components]
- (.add container component constraints))
- container))
+ {:keys [layout column row]} keywords]
+ (doto container
+ (.setLayout (new-instance layout column row))
+ (add-components components))))
diff --git a/src/clojure/contrib/miglayout/internal.clj b/src/clojure/contrib/miglayout/internal.clj
index 2db25457..fb6d7257 100644
--- a/src/clojure/contrib/miglayout/internal.clj
+++ b/src/clojure/contrib/miglayout/internal.clj
@@ -14,7 +14,8 @@
;; Created 13 October 2008
(ns clojure.contrib.miglayout.internal
- (:import (java.awt Component))
+ (:import (java.awt Container Component)
+ clojure.lang.RT)
(:use (clojure.contrib
[except :only (throwf)]
[fcase :only (fcase)]
@@ -22,6 +23,21 @@
(declare format-constraints)
+(defn new-instance
+ "Returns a new instance of MigLayout with the specified constraints"
+ [layout column row]
+ (doto (.newInstance (RT/classForName "net.miginfocom.swing.MigLayout"))
+ (.setLayoutConstraints layout)
+ (.setColumnConstraints column)
+ (.setRowConstraints row)))
+
+(defn add-components
+ "Adds components with constraints to a container"
+ [#^Container container components]
+ (doseq [[#^Component component constraints] components]
+ (.add container component constraints))
+ container)
+
(defn format-constraint
"Returns a vector of vectors representing one or more constraints
separated by commas. Constraints may be specified in Clojure using