(defn seq-ref-list-model [seq-ref]
(let [listeners (atom #{})
key (gensym "seq-ref-list-model-watch")
m (list-model
:size ([] (count @seq-ref))
:add-listener ([l] (swap! listeners conj l))
:remove-listener ([l] (swap! listeners disj l))
:get ([i] (if (has-index? @seq-ref i) (nth @seq-ref i) nil))
)]
(add-watch seq-ref key
(fn [_ _ _ state]
(do-swing
(let [m (ListDataEvent. m (ListDataEvent/CONTENTS_CHANGED) 0 (count state))]
(doseq [l @listeners]
(.contentsChanged l m))))))
m))
Used in 0 other vars
Comments top
No comments for seq-ref-list-model. Log in to add a comment.