diff options
Diffstat (limited to 'src/clojure/contrib/miglayout.clj')
-rw-r--r-- | src/clojure/contrib/miglayout.clj | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/src/clojure/contrib/miglayout.clj b/src/clojure/contrib/miglayout.clj new file mode 100644 index 00000000..3fc5971e --- /dev/null +++ b/src/clojure/contrib/miglayout.clj @@ -0,0 +1,63 @@ +;; Copyright (c) Stephen C. Gilardi. All rights reserved. The use and +;; distribution terms for this software are covered by the Common Public +;; License 1.0 (http://opensource.org/licenses/cpl.php) which can be found +;; in the file CPL.TXT at the root of this distribution. By using this +;; software in any fashion, you are agreeing to be bound by the terms of +;; this license. You must not remove this notice, or any other, from this +;; software. +;; +;; clojure.contrib.miglayout +;; +;; Clojure support for the MiGLayout layout manager +;; http://www.miglayout.com/ +;; +;; Example: +;; +;; (require '[clojure.contrib.miglayout.test :as mlt]) +;; (doseq i (range 3) (mlt/run-test i)) +;; +;; scgilardi (gmail) +;; Created 5 October 2008 + +(ns clojure.contrib.miglayout + (:import (java.awt Container Component) + (net.miginfocom.swing MigLayout)) + (:use clojure.contrib.miglayout.internal)) + +(defn miglayout + "Adds java.awt.Components to a java.awt.Container with constraints + formatted for the MiGLayout layout manager. + + Arguments: container [item constraint*]* + + - container: the container for the specified components, its layout + manager will be set to a new instance of MigLayout + + - an inline series of items and constraints--each item may be followed + by zero or more constraints. + + Item: + + - An item is either a Component or one of the keywords :layout + :column or :row. Constraints for a keyword item affect the entire + layout. + + Constraint: string, keyword, vector, or map + + - A string specifies one or more constraints each with zero or more + arguments. + - A keyword specifies a single constraint without arguments + - A vector specifies a single constraint with one or more arguments + - A map specifies one or more constraints as keys, each mapped to a + single argument" + [#^Container container & args] + (let [{:keys [keyword-items components]} + (apply parse-item-constraints args)] + (.setLayout container + (MigLayout. + (:layout keyword-items) + (:column keyword-items) + (:row keyword-items))) + (doseq [[#^Component component constraints] components] + (.add container component constraints)) + container)) |