Skip to content

Commit

Permalink
TreeExpansionListener support
Browse files Browse the repository at this point in the history
  • Loading branch information
daveray committed Jul 20, 2011
1 parent baa9d90 commit 215e43b
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 7 deletions.
20 changes: 14 additions & 6 deletions src/seesaw/event.clj
Expand Up @@ -14,7 +14,7 @@
seesaw.event
(:use [seesaw util meta])
(:import [javax.swing.event ChangeListener DocumentListener
ListSelectionListener TreeSelectionListener]
ListSelectionListener TreeSelectionListener TreeExpansionListener]
[javax.swing.text Document]
[java.awt.event WindowListener FocusListener ActionListener ItemListener
MouseListener MouseMotionListener MouseWheelListener
Expand Down Expand Up @@ -168,6 +168,12 @@
:named-events #{:tree-selection} ; Suppress reversed map entry
:install #(.addTreeSelectionListener ^javax.swing.JTree %1 ^TreeSelectionListener %2)
}
:tree-expansion {
:name :tree-expansion
:class TreeExpansionListener
:events #{:tree-expanded :tree-collapsed}
:install #(.addTreeExpansionListener ^javax.swing.JTree %1 ^TreeExpansionListener %2)
}
})

; Kind of a hack. Re-route methods with renamed events (due to collisions like
Expand Down Expand Up @@ -248,9 +254,9 @@

(defn- get-or-install-handlers
[target event-name]
(let [event-group (event-group-table event-name)
handlers (get-handlers* target (:name event-group))]
(if handlers
(let [event-group (event-group-table event-name)]
(if-not event-group (throw (IllegalArgumentException. (str "Unknown event type " event-name))))
(if-let [handlers (get-handlers* target (:name event-group))]
handlers
(install-group-handlers target event-group))))

Expand Down Expand Up @@ -302,8 +308,10 @@
(reduce
(fn [result target]
(cond
(instance? javax.swing.ButtonGroup target) (concat result (enumeration-seq (.getElements ^javax.swing.ButtonGroup target)))
:else (conj result target)))
(instance? javax.swing.ButtonGroup target)
(concat result (enumeration-seq (.getElements ^javax.swing.ButtonGroup target)))
:else
(conj result target)))
[]
targets))

Expand Down
19 changes: 18 additions & 1 deletion test/seesaw/test/event.clj
Expand Up @@ -105,6 +105,12 @@


(describe listen
(it "throws IllegalArgumentException for unknown event types"
(try
(listen (JPanel.) :something-something (fn [_]))
false
(catch IllegalArgumentException e
true)))
(it "can install a mouse-clicked listener"
(let [panel (JPanel.)
f (fn [e] (println "handled"))]
Expand Down Expand Up @@ -232,5 +238,16 @@
(listen b :selection (fn [e] (reset! called true)))
(expect (= 1 (count (.getItemListeners b))))
(.. (first (.getItemListeners b)) (itemStateChanged nil))
(expect @called)))))
(expect @called))))
(it "can register a tree expansion listener"
(let [tree (javax.swing.JTree.)
expanded (atom false)
collapsed (atom false)]
(listen tree :tree-expanded #(reset! expanded %)
:tree-collapsed #(reset! collapsed %))
(expect (not (or @expanded @collapsed)))
(.collapseRow tree 0)
(expect @collapsed)
(.expandRow tree 0)
(expect @expanded))))

0 comments on commit 215e43b

Please sign in to comment.