Permalink
Browse files

Documentation and tests for icon function

  • Loading branch information...
1 parent 38b0ed2 commit daebc2fbb68b80b22733336d2d37e0c8c7ad560e @daveray committed Dec 4, 2011
Showing with 59 additions and 0 deletions.
  1. +15 −0 src/seesaw/icon.clj
  2. +41 −0 test/seesaw/test/icon.clj
  3. +3 −0 test/seesaw/test/icon.properties
View
@@ -19,12 +19,27 @@
; Icons
(defn ^javax.swing.Icon icon
+ "Loads an icon. The parameter p can be any of the following:
+
+ nil - returns nil
+ javax.swing.Icon - returns the icon
+ java.awt.Image - returns an ImageIcon around the image
+ java.net.URL - Load the icon from the given URL
+ an i18n keyword - Load the icon from the resource bundle
+ classpath path string - Load the icon from the classpath
+ URL string - Load the icon from the given URL
+ java.io.File - Load the icon from the File
+
+ This is the function used to process the :icon property on most widgets
+ and windows. Thus, any of these values may be used for the :icon property.
+ "
[p]
(cond
(nil? p) nil
(instance? javax.swing.Icon p) p
(instance? java.awt.Image p) (ImageIcon. ^java.awt.Image p)
(instance? java.net.URL p) (ImageIcon. ^java.net.URL p)
+ (instance? java.io.File p) (ImageIcon. (.getAbsolutePath ^java.io.File p))
(and (keyword? p) (namespace p)) (icon (resource p))
:else
(if-let [url (jio/resource (str p))]
View
@@ -0,0 +1,41 @@
+; Copyright (c) Dave Ray, 2011. 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.
+
+(ns seesaw.test.icon
+ (:use seesaw.icon)
+ (:require [seesaw.graphics :as g]
+ [clojure.java.io :as jio])
+ (:use [lazytest.describe :only (describe it testing)]
+ [lazytest.expect :only (expect)]))
+
+(describe icon
+ (it "returns nil given nil"
+ (nil? (icon nil)))
+ (it "returns its input given an Icon"
+ (let [i (javax.swing.ImageIcon.)]
+ (expect (= i (icon i)))))
+ (it "returns an icon given an image"
+ (let [image (g/buffered-image 16 16)
+ i (icon image)]
+ (expect (instance? javax.swing.ImageIcon i))
+ (expect (= image (.getImage i)))))
+ (it "returns an icon given a URL"
+ (let [i (icon (jio/resource "seesaw/test/examples/rss.gif"))]
+ (expect (instance? javax.swing.ImageIcon i))))
+ (it "returns an icon given a path to an icon on the classpath"
+ (let [i (icon "seesaw/test/examples/rss.gif")]
+ (expect (instance? javax.swing.ImageIcon i))))
+ (it "returns an icon given a File"
+ (let [i (icon (java.io.File. "test/seesaw/test/examples/rss.gif"))]
+ (expect (instance? javax.swing.ImageIcon i))))
+ (it "returns an icon given a i18n keyword"
+ (let [i (icon ::test-icon)]
+ (expect (instance? javax.swing.ImageIcon i)))))
+
@@ -0,0 +1,3 @@
+# Resource bundle for icon.clj tests
+
+test-icon=seesaw/test/examples/rss.gif

0 comments on commit daebc2f

Please sign in to comment.