rlm@10: ;; Copyright (c) Stephen C. Gilardi. All rights reserved. The use and rlm@10: ;; distribution terms for this software are covered by the Eclipse Public rlm@10: ;; License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) which can rlm@10: ;; be found in the file epl-v10.html at the root of this distribution. By rlm@10: ;; using this software in any fashion, you are agreeing to be bound by the rlm@10: ;; terms of this license. You must not remove this notice, or any other, rlm@10: ;; from this software. rlm@10: ;; rlm@10: ;; clojure.contrib.miglayout.test rlm@10: ;; rlm@10: ;; Test/example for clojure.contrib.miglayout rlm@10: ;; rlm@10: ;; scgilardi (gmail) rlm@10: ;; Created 5 October 2008 rlm@10: rlm@10: (ns clojure.contrib.test-miglayout rlm@10: (:import (javax.swing JButton JFrame JLabel JList JPanel rlm@10: JScrollPane JTabbedPane JTextField JSeparator)) rlm@10: (:use clojure.contrib.miglayout)) rlm@10: rlm@10: (def tests) rlm@10: rlm@10: (defn run-test rlm@10: [index] rlm@10: (let [panel ((tests index) (JPanel.))] rlm@10: (println index (components panel)) rlm@10: (doto (JFrame. (format "MigLayout Test %d" index)) rlm@10: (.add panel) rlm@10: (.pack) rlm@10: (.setVisible true)))) rlm@10: rlm@10: (defn label rlm@10: "Returns a swing label" rlm@10: [text] rlm@10: (JLabel. text)) rlm@10: rlm@10: (defn text-field rlm@10: "Returns a swing text field" rlm@10: ([] (text-field 10)) rlm@10: ([width] rlm@10: (JTextField. width))) rlm@10: rlm@10: (defn sep rlm@10: "Returns a swing separator" rlm@10: [] rlm@10: (JSeparator.)) rlm@10: rlm@10: (def tests [ rlm@10: rlm@10: (fn test0 rlm@10: [panel] rlm@10: (miglayout panel rlm@10: (label "Hello") rlm@10: (label "World") {:gap :unrelated} rlm@10: (text-field) :wrap rlm@10: (label "Bonus!") rlm@10: (JButton. "Bang it") {:wmin :button :grow :x :span 2} :center)) rlm@10: rlm@10: ;; test1 and test2 are based on code from rlm@10: ;; http://www.devx.com/java/Article/38017/1954 rlm@10: rlm@10: ;; constraints as strings exclusively rlm@10: (fn test1 rlm@10: [panel] rlm@10: (miglayout panel rlm@10: :column "[right]" rlm@10: (label "General") "split, span" rlm@10: (sep) "growx, wrap" rlm@10: (label "Company") "gap 10" rlm@10: (text-field "") "span, growx" rlm@10: (label "Contact") "gap 10" rlm@10: (text-field "") "span, growx, wrap" rlm@10: (label "Propeller") "split, span, gaptop 10" rlm@10: (sep) "growx, wrap, gaptop 10" rlm@10: (label "PTI/kW") "gapx 10, gapy 15" rlm@10: (text-field) rlm@10: (label "Power/kW") "gap 10" rlm@10: (text-field) "wrap" rlm@10: (label "R/mm") "gap 10" rlm@10: (text-field) rlm@10: (label "D/mm") "gap 10" rlm@10: (text-field))) rlm@10: rlm@10: ;; the same constraints as strings, keywords, vectors, and maps rlm@10: (fn test2 rlm@10: [panel] rlm@10: (miglayout panel rlm@10: :column "[right]" rlm@10: (label "General") "split, span" rlm@10: (sep) :growx :wrap rlm@10: (label "Company") [:gap 10] rlm@10: (text-field "") :span :growx rlm@10: (label "Contact") [:gap 10] rlm@10: (text-field "") :span :growx :wrap rlm@10: (label "Propeller") :split :span [:gaptop 10] rlm@10: (sep) :growx :wrap [:gaptop 10] rlm@10: (label "PTI/kW") {:gapx 10 :gapy 15} rlm@10: (text-field) rlm@10: (label "Power/kW") [:gap 10] rlm@10: (text-field) :wrap rlm@10: (label "R/mm") [:gap 10] rlm@10: (text-field) rlm@10: (label "D/mm") [:gap 10] rlm@10: (text-field))) rlm@10: rlm@10: ;; the same constraints using symbols to name groups of constraints rlm@10: (fn test3 rlm@10: [panel] rlm@10: (let [g [:gap 10] rlm@10: gt [:gaptop 10] rlm@10: gxs #{:growx :span} rlm@10: gxw #{:growx :wrap} rlm@10: gxy {:gapx 10 :gapy 15} rlm@10: right "[right]" rlm@10: ss #{:split :span} rlm@10: w :wrap] rlm@10: (miglayout panel rlm@10: :column right rlm@10: (label "General") ss rlm@10: (sep) gxw rlm@10: (label "Company") g rlm@10: (text-field "") gxs rlm@10: (label "Contact") g rlm@10: (text-field "") gxs rlm@10: (label "Propeller") ss gt rlm@10: (sep) gxw g rlm@10: (label "PTI/kW") gxy rlm@10: (text-field) rlm@10: (label "Power/kW") g rlm@10: (text-field) w rlm@10: (label "R/mm") g rlm@10: (text-field) rlm@10: (label "D/mm") g rlm@10: (text-field)))) rlm@10: rlm@10: (fn test4 rlm@10: [panel] rlm@10: (miglayout panel rlm@10: (label "First Name") rlm@10: (text-field) {:id :firstname} rlm@10: (label "Surname") [:gap :unrelated] rlm@10: (text-field) {:id :surname} :wrap rlm@10: (label "Address") rlm@10: (text-field) {:id :address} :span :grow)) rlm@10: ])