diff options
author | Chouser <chouser@n01se.net> | 2010-09-30 12:13:11 -0400 |
---|---|---|
committer | Chouser <chouser@n01se.net> | 2010-09-30 14:03:55 -0400 |
commit | 2e7ef0b12838b33f12e5c13ae41d4dd34a5469e8 (patch) | |
tree | 2fabe27d86925bff45e7b708d1c62507337b4482 /modules/miglayout/src/examples/clojure | |
parent | 39c38227d21f8cb6139d68f361b516ce1f05f66e (diff) |
Restore examples lost during modules split, a6a92b9b3d2bfd9a56e1e5e9cfba706d1aeeaae5
Diffstat (limited to 'modules/miglayout/src/examples/clojure')
-rw-r--r-- | modules/miglayout/src/examples/clojure/examples/miglayout.clj | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/modules/miglayout/src/examples/clojure/examples/miglayout.clj b/modules/miglayout/src/examples/clojure/examples/miglayout.clj new file mode 100644 index 00000000..04c9a040 --- /dev/null +++ b/modules/miglayout/src/examples/clojure/examples/miglayout.clj @@ -0,0 +1,60 @@ +;; 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 +;; +;; A temperature converter using miglayout. Demonstrates accessing +;; components by their id constraint. +;; +;; scgilardi (gmail) +;; Created 31 May 2009 + +(ns examples.miglayout + (:import (javax.swing JButton JFrame JLabel JPanel JTextField + SwingUtilities)) + (:use (clojure.contrib + [miglayout :only (miglayout components)] + [swing-utils :only (add-key-typed-listener)]))) + +(defn fahrenheit + "Converts a Celsius temperature to Fahrenheit. Input and output are + strings. Returns \"input?\" if the input can't be parsed as a Double." + [celsius] + (try + (format "%.2f" (+ 32 (* 1.8 (Double/parseDouble celsius)))) + (catch NumberFormatException _ "input?"))) + +(defn- handle-key + "Clears output on most keys, shows conversion on \"Enter\"" + [event out] + (.setText out + (if (= (.getKeyChar event) \newline) + (fahrenheit (-> event .getComponent .getText)) + ""))) + +(defn converter-ui + "Lays out and shows a Temperature Converter UI" + [] + (let [panel + (miglayout (JPanel.) + (JTextField. 6) {:id :input} + (JLabel. "\u00b0Celsius") :wrap + (JLabel.) {:id :output} + (JLabel. "\u00b0Fahrenheit")) + {:keys [input output]} (components panel)] + (add-key-typed-listener input handle-key output) + (doto (JFrame. "Temperature Converter") + (.setDefaultCloseOperation JFrame/DISPOSE_ON_CLOSE) + (.add panel) + (.pack) + (.setVisible true)))) + +(defn main + "Invokes converter-ui in the AWT Event thread" + [] + (SwingUtilities/invokeLater converter-ui)) |