aboutsummaryrefslogtreecommitdiff
path: root/modules/miglayout/src/test/clojure/clojure/contrib/test_miglayout.clj
diff options
context:
space:
mode:
Diffstat (limited to 'modules/miglayout/src/test/clojure/clojure/contrib/test_miglayout.clj')
-rw-r--r--modules/miglayout/src/test/clojure/clojure/contrib/test_miglayout.clj145
1 files changed, 145 insertions, 0 deletions
diff --git a/modules/miglayout/src/test/clojure/clojure/contrib/test_miglayout.clj b/modules/miglayout/src/test/clojure/clojure/contrib/test_miglayout.clj
new file mode 100644
index 00000000..0ec32167
--- /dev/null
+++ b/modules/miglayout/src/test/clojure/clojure/contrib/test_miglayout.clj
@@ -0,0 +1,145 @@
+;; Copyright (c) Stephen C. Gilardi. All rights reserved. The use and
+;; distribution terms for this software are covered by the Eclipse Public
+;; License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) which can
+;; be found in the file epl-v10.html 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.test
+;;
+;; Test/example for clojure.contrib.miglayout
+;;
+;; scgilardi (gmail)
+;; Created 5 October 2008
+
+(ns clojure.contrib.test-miglayout
+ (:import (javax.swing JButton JFrame JLabel JList JPanel
+ JScrollPane JTabbedPane JTextField JSeparator))
+ (:use clojure.contrib.miglayout))
+
+(def tests)
+
+(defn run-test
+ [index]
+ (let [panel ((tests index) (JPanel.))]
+ (println index (components panel))
+ (doto (JFrame. (format "MigLayout Test %d" index))
+ (.add panel)
+ (.pack)
+ (.setVisible true))))
+
+(defn label
+ "Returns a swing label"
+ [text]
+ (JLabel. text))
+
+(defn text-field
+ "Returns a swing text field"
+ ([] (text-field 10))
+ ([width]
+ (JTextField. width)))
+
+(defn sep
+ "Returns a swing separator"
+ []
+ (JSeparator.))
+
+(def tests [
+
+ (fn test0
+ [panel]
+ (miglayout panel
+ (label "Hello")
+ (label "World") {:gap :unrelated}
+ (text-field) :wrap
+ (label "Bonus!")
+ (JButton. "Bang it") {:wmin :button :grow :x :span 2} :center))
+
+ ;; test1 and test2 are based on code from
+ ;; http://www.devx.com/java/Article/38017/1954
+
+ ;; constraints as strings exclusively
+ (fn test1
+ [panel]
+ (miglayout panel
+ :column "[right]"
+ (label "General") "split, span"
+ (sep) "growx, wrap"
+ (label "Company") "gap 10"
+ (text-field "") "span, growx"
+ (label "Contact") "gap 10"
+ (text-field "") "span, growx, wrap"
+ (label "Propeller") "split, span, gaptop 10"
+ (sep) "growx, wrap, gaptop 10"
+ (label "PTI/kW") "gapx 10, gapy 15"
+ (text-field)
+ (label "Power/kW") "gap 10"
+ (text-field) "wrap"
+ (label "R/mm") "gap 10"
+ (text-field)
+ (label "D/mm") "gap 10"
+ (text-field)))
+
+ ;; the same constraints as strings, keywords, vectors, and maps
+ (fn test2
+ [panel]
+ (miglayout panel
+ :column "[right]"
+ (label "General") "split, span"
+ (sep) :growx :wrap
+ (label "Company") [:gap 10]
+ (text-field "") :span :growx
+ (label "Contact") [:gap 10]
+ (text-field "") :span :growx :wrap
+ (label "Propeller") :split :span [:gaptop 10]
+ (sep) :growx :wrap [:gaptop 10]
+ (label "PTI/kW") {:gapx 10 :gapy 15}
+ (text-field)
+ (label "Power/kW") [:gap 10]
+ (text-field) :wrap
+ (label "R/mm") [:gap 10]
+ (text-field)
+ (label "D/mm") [:gap 10]
+ (text-field)))
+
+ ;; the same constraints using symbols to name groups of constraints
+ (fn test3
+ [panel]
+ (let [g [:gap 10]
+ gt [:gaptop 10]
+ gxs #{:growx :span}
+ gxw #{:growx :wrap}
+ gxy {:gapx 10 :gapy 15}
+ right "[right]"
+ ss #{:split :span}
+ w :wrap]
+ (miglayout panel
+ :column right
+ (label "General") ss
+ (sep) gxw
+ (label "Company") g
+ (text-field "") gxs
+ (label "Contact") g
+ (text-field "") gxs
+ (label "Propeller") ss gt
+ (sep) gxw g
+ (label "PTI/kW") gxy
+ (text-field)
+ (label "Power/kW") g
+ (text-field) w
+ (label "R/mm") g
+ (text-field)
+ (label "D/mm") g
+ (text-field))))
+
+ (fn test4
+ [panel]
+ (miglayout panel
+ (label "First Name")
+ (text-field) {:id :firstname}
+ (label "Surname") [:gap :unrelated]
+ (text-field) {:id :surname} :wrap
+ (label "Address")
+ (text-field) {:id :address} :span :grow))
+])