diff options
author | scgilardi <scgilardi@gmail.com> | 2009-05-31 05:57:15 +0000 |
---|---|---|
committer | scgilardi <scgilardi@gmail.com> | 2009-05-31 05:57:15 +0000 |
commit | 9c2161b4986244a26989b9f70d6f5592f8c89301 (patch) | |
tree | a5e3392fe559e0107221a0ec637b0219d508b646 /src/clojure | |
parent | 01db88a0ea0aaf169458f8546a65141ec122db08 (diff) |
add miglayout.example
Diffstat (limited to 'src/clojure')
-rw-r--r-- | src/clojure/contrib/miglayout/example.clj | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/clojure/contrib/miglayout/example.clj b/src/clojure/contrib/miglayout/example.clj new file mode 100644 index 00000000..8c3f8c44 --- /dev/null +++ b/src/clojure/contrib/miglayout/example.clj @@ -0,0 +1,52 @@ +;; 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.example +;; +;; Temperature converter using miglayout. Demonstrates accessing components +;; by their id constraint. +;; +;; scgilardi (gmail) +;; Created 31 May 2009 + +(ns clojure.contrib.miglayout.example + (:import (javax.swing JButton JFrame JLabel JPanel JTextField) + (java.awt.event ActionListener)) + (:use (clojure.contrib + [miglayout :only (miglayout components)] + [swing-utils :only (add-action-listener)]))) + +(defn fahrenheit + "Converts a string containing a Celsius temperature to a string + containing a Fahrenheit temperature. Returns \"input?\" if the + input can't be read" + [c-str] + (try + (format "%.2f \u00b0Fahrenheit" + (+ 32 (* 1.8 (Double/parseDouble c-str)))) + (catch NumberFormatException _ + "input?"))) + +(defn main + "Creates a converter UI" + [] + (let [panel + (miglayout + (JPanel.) + (JTextField.) {:id :input :width 120} + (JLabel. "\u00b0Celsius") :wrap + (JButton. "Convert") {:id :convert} + (JLabel. "\u00b0Fahrenheit") {:id :output :width 120}) + {:keys [convert input output]} (components panel)] + (add-action-listener convert + (fn [evt in out] (.setText out (fahrenheit (.getText in)))) + input output) + (doto (JFrame. "Temperature Converter") + (.add panel) + (.pack) + (.setVisible true)))) |