mirror of
https://github.com/unclebob/more-speech.git
synced 2024-09-30 10:30:56 +00:00
Threading multiple references works.
This commit is contained in:
parent
c0ed9cd9d4
commit
fcdc6016b5
@ -1,4 +1,6 @@
|
||||
;;Stories
|
||||
;; - e and p tags for text events
|
||||
;; - ping/pong heartbeat for web services
|
||||
;; - validate incoming messages.
|
||||
;; - Add author/date, etc. to replies.
|
||||
;; - Start checking sdefs in update.
|
||||
|
@ -59,8 +59,9 @@
|
||||
(onBinary [_this _webSocket _data _last]
|
||||
(prn 'binary)
|
||||
)
|
||||
(onPing [_this _webSocket _message]
|
||||
(onPing [_this webSocket message]
|
||||
(prn 'ping)
|
||||
(.sendPong webSocket message)
|
||||
)
|
||||
(onPong [_this _webSocket _message]
|
||||
(prn 'pong)
|
||||
|
@ -16,7 +16,9 @@
|
||||
(events/handle-text-event [_handler event]
|
||||
(invoke-later (add-event event))))
|
||||
|
||||
(def ui-context (atom nil))
|
||||
(def ui-context (atom {:frame nil
|
||||
:event-agent nil
|
||||
:node-map {}}))
|
||||
|
||||
(declare find-header-node add-references)
|
||||
(defn add-event [event]
|
||||
@ -29,19 +31,26 @@
|
||||
child (DefaultMutableTreeNode. event-id)]
|
||||
(.insertNodeInto model child root child-count)
|
||||
(.makeVisible tree (TreePath. (.getPath child)))
|
||||
(add-references root event)
|
||||
(swap! ui-context update-in [:node-map event-id] conj child)
|
||||
(add-references event)
|
||||
))
|
||||
|
||||
(defn add-references [root event]
|
||||
(defn add-reference [reference id]
|
||||
(loop [nodes (get-in @ui-context [:node-map reference])]
|
||||
(if (empty? nodes)
|
||||
nil
|
||||
(let [node (first nodes)
|
||||
child (DefaultMutableTreeNode. id)]
|
||||
(.add ^DefaultMutableTreeNode node child)
|
||||
(swap! ui-context update-in [:node-map id] conj child)
|
||||
(recur (rest nodes))))))
|
||||
|
||||
(defn add-references [event]
|
||||
(loop [references (events/get-references event)]
|
||||
(if (empty? references)
|
||||
nil
|
||||
(let [reference (first references)
|
||||
node (find-header-node root reference)]
|
||||
(when (some? node)
|
||||
(.add ^DefaultMutableTreeNode node
|
||||
(DefaultMutableTreeNode. (:id event))))
|
||||
(recur (rest references))))))
|
||||
(do (add-reference (first references) (:id event))
|
||||
(recur (rest references))))))
|
||||
|
||||
(defn find-header-node [root id]
|
||||
(loop [children (enumeration-seq (.children root))]
|
||||
@ -81,7 +90,7 @@
|
||||
reply-button (button :text "Reply")
|
||||
create-button (button :text "Create")
|
||||
timer (Timer. 100 nil)]
|
||||
(reset! ui-context {:frame main-frame :event-agent event-agent})
|
||||
(swap! ui-context assoc :frame main-frame :event-agent event-agent)
|
||||
|
||||
(listen timer :action timer-action)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user