mirror of
https://github.com/unclebob/more-speech.git
synced 2024-09-30 02:21:02 +00:00
CLicking on an id in the article panel will load the article from the DB into the article tree.
This commit is contained in:
parent
d9b32be803
commit
02ec1ae707
@ -1,9 +1,9 @@
|
||||
(ns more-speech.ui.swing.article-tree-util-spec
|
||||
(ns more-speech.ui.swing.article-panel-util-spec
|
||||
(:require [speclj.core :refer :all]
|
||||
[more-speech.mem :refer :all]
|
||||
[more-speech.ui.swing.article-tree-util :refer :all :as article-tree-util]))
|
||||
[more-speech.ui.swing.article-panel-util :refer :all]))
|
||||
|
||||
(describe "Article Tree Util"
|
||||
(describe "article-panel-util"
|
||||
(before (clear-mem))
|
||||
|
||||
(context "adjust-back-count"
|
||||
@ -26,7 +26,7 @@
|
||||
(context "go-back-by"
|
||||
(with-stubs)
|
||||
(it "displays the appropriate event and tab"
|
||||
(with-redefs [article-tree-util/display-event (stub :display-event)]
|
||||
(with-redefs [display-event (stub :display-event)]
|
||||
(set-mem :event-history [[:t1 1] [:t2 2]])
|
||||
(set-mem :back-count 0)
|
||||
(go-back-by 1)
|
@ -15,7 +15,8 @@
|
||||
|
||||
(defprotocol event-handler
|
||||
(handle-text-event [handler event])
|
||||
(update-relay-panel [handler]))
|
||||
(update-relay-panel [handler])
|
||||
(immediate-add-text-event [handler event]))
|
||||
|
||||
(defn fix-name [name]
|
||||
(if (empty? name)
|
||||
|
@ -4,7 +4,7 @@
|
||||
[more-speech.nostr.util :as util]
|
||||
[more-speech.ui.formatters :as formatters]
|
||||
[more-speech.ui.formatter-util :as f-util]
|
||||
[more-speech.ui.swing.article-tree-util :as article-tree-util]
|
||||
[more-speech.ui.swing.article-panel-util :as article-panel-util]
|
||||
[more-speech.ui.swing.edit-window :as edit-window]
|
||||
[more-speech.mem :refer :all]
|
||||
[more-speech.ui.swing.util :as swing-util :refer [copy-to-clipboard]]
|
||||
@ -27,7 +27,7 @@
|
||||
(defn id-click [e]
|
||||
(if (.isPopupTrigger e)
|
||||
(copy-click e)
|
||||
(article-tree-util/id-click (config e :user-data))))
|
||||
(article-panel-util/id-click (config e :user-data))))
|
||||
|
||||
(defn reaction-click [polarity]
|
||||
(let [frame (get-mem :frame)
|
||||
@ -113,10 +113,10 @@
|
||||
:text editor-pane-stylesheet))
|
||||
|
||||
(defn go-back [_e]
|
||||
(article-tree-util/go-back-by 1))
|
||||
(article-panel-util/go-back-by 1))
|
||||
|
||||
(defn go-forward [_e]
|
||||
(article-tree-util/go-back-by -1))
|
||||
(article-panel-util/go-back-by -1))
|
||||
|
||||
(defn make-control-panel []
|
||||
(let [reply-button (button :text "Reply")
|
||||
|
60
src/more_speech/ui/swing/article_panel_util.clj
Normal file
60
src/more_speech/ui/swing/article_panel_util.clj
Normal file
@ -0,0 +1,60 @@
|
||||
(ns more-speech.ui.swing.article-panel-util
|
||||
(:use [seesaw core])
|
||||
(:require [more-speech.mem :refer :all]
|
||||
[more-speech.nostr.event-handlers :as event-handlers]
|
||||
[more-speech.ui.swing.util :as util]
|
||||
[more-speech.db.gateway :as gateway]
|
||||
[more-speech.config :refer [get-db]]
|
||||
[more-speech.ui.swing.article-tree-util :as at-util]))
|
||||
|
||||
(defn load-event [id]
|
||||
(when-not (contains? (get-mem :node-map) id)
|
||||
(let [event (gateway/get-event (get-db) id)
|
||||
handler (get-mem :event-handler)]
|
||||
(when (some? event)
|
||||
(event-handlers/immediate-add-text-event handler event)))))
|
||||
|
||||
(defn id-click [id]
|
||||
(load-event id)
|
||||
(let [frame (get-mem :frame)
|
||||
tab-index (get-mem :selected-tab)
|
||||
tab-selector (keyword (str "#" tab-index))
|
||||
tree (select frame [tab-selector])
|
||||
model (config tree :model)
|
||||
root-node (.getRoot model)
|
||||
node (at-util/find-header-node root-node id)]
|
||||
(if (some? node)
|
||||
(at-util/select-tree-node tree node)
|
||||
(let [tree (select frame [(keyword (str "#" (util/get-tab-index "all")))])
|
||||
model (config tree :model)
|
||||
root-node (.getRoot model)
|
||||
node (at-util/find-header-node root-node id)]
|
||||
(when (some? node)
|
||||
(util/select-tab "all")
|
||||
(at-util/select-tree-node tree node))))))
|
||||
|
||||
(defn display-event [tab-index event-id]
|
||||
(let [frame (get-mem :frame)
|
||||
tab-selector (keyword (str "#" tab-index))
|
||||
tree (select frame [tab-selector])
|
||||
model (config tree :model)
|
||||
root-node (.getRoot model)
|
||||
node (at-util/find-header-node root-node event-id)]
|
||||
(when (some? node)
|
||||
(util/select-tab tab-index)
|
||||
(at-util/select-tree-node tree node))))
|
||||
|
||||
(defn adjust-back-count [n]
|
||||
(let [event-history (get-mem :event-history)
|
||||
back-count (-> (get-mem :back-count) (+ n) (max 0) (min (dec (count event-history))))]
|
||||
(set-mem :back-count back-count)
|
||||
(set-mem :backing-up true)))
|
||||
|
||||
(defn go-back-by [n]
|
||||
(let [event-history (get-mem :event-history)]
|
||||
(when-not (empty? event-history)
|
||||
(adjust-back-count n)
|
||||
(let [back-count (get-mem :back-count)
|
||||
event-position (- (count event-history) back-count 1)
|
||||
[tab-index event-id] (nth event-history event-position)]
|
||||
(display-event tab-index event-id)))))
|
@ -1,7 +1,6 @@
|
||||
(ns more-speech.ui.swing.article-tree-util
|
||||
(:use [seesaw core])
|
||||
(:require [more-speech.mem :refer :all]
|
||||
[more-speech.ui.swing.util :as util]
|
||||
[more-speech.db.gateway :as gateway]
|
||||
[more-speech.config :refer [get-db]])
|
||||
(:import (java.util Collections)
|
||||
@ -53,46 +52,5 @@
|
||||
(.setSelectionPath tree tree-path)
|
||||
(.scrollPathToVisible tree tree-path)))
|
||||
|
||||
(defn id-click [id]
|
||||
(let [frame (get-mem :frame)
|
||||
tab-index (get-mem :selected-tab)
|
||||
tab-selector (keyword (str "#" tab-index))
|
||||
tree (select frame [tab-selector])
|
||||
model (config tree :model)
|
||||
root-node (.getRoot model)
|
||||
node (find-header-node root-node id)]
|
||||
(if (some? node)
|
||||
(select-tree-node tree node)
|
||||
(let [tree (select frame [(keyword (str "#" (util/get-tab-index "all")))])
|
||||
model (config tree :model)
|
||||
root-node (.getRoot model)
|
||||
node (find-header-node root-node id)]
|
||||
(when (some? node)
|
||||
(util/select-tab "all")
|
||||
(select-tree-node tree node))))))
|
||||
|
||||
(defn adjust-back-count [n]
|
||||
(let [event-history (get-mem :event-history)
|
||||
back-count (-> (get-mem :back-count) (+ n) (max 0) (min (dec (count event-history))))]
|
||||
(set-mem :back-count back-count)
|
||||
(set-mem :backing-up true)))
|
||||
|
||||
(defn display-event [tab-index event-id]
|
||||
(let [frame (get-mem :frame)
|
||||
tab-selector (keyword (str "#" tab-index))
|
||||
tree (select frame [tab-selector])
|
||||
model (config tree :model)
|
||||
root-node (.getRoot model)
|
||||
node (find-header-node root-node event-id)]
|
||||
(when (some? node)
|
||||
(util/select-tab tab-index)
|
||||
(select-tree-node tree node))))
|
||||
|
||||
(defn go-back-by [n]
|
||||
(let [event-history (get-mem :event-history)]
|
||||
(when-not (empty? event-history)
|
||||
(adjust-back-count n)
|
||||
(let [back-count (get-mem :back-count)
|
||||
event-position (- (count event-history) back-count 1)
|
||||
[tab-index event-id] (nth event-history event-position)]
|
||||
(display-event tab-index event-id)))))
|
||||
|
@ -20,7 +20,9 @@
|
||||
(handle-text-event [_handler event]
|
||||
(invoke-later (article-tree/add-event event)))
|
||||
(update-relay-panel [_handler]
|
||||
(invoke-later (relay-panel/update-relay-panel))))
|
||||
(invoke-later (relay-panel/update-relay-panel)))
|
||||
(immediate-add-text-event [_handler event]
|
||||
(article-tree/add-event event)))
|
||||
|
||||
(defn open-link [e]
|
||||
(when (= HyperlinkEvent$EventType/ACTIVATED (.getEventType e))
|
||||
|
Loading…
Reference in New Issue
Block a user