|
8 | 8 | (defmethod handle-event :default [e] |
9 | 9 | (println "non event")) |
10 | 10 |
|
| 11 | +(defn fex-back [context tclient] |
| 12 | + (let [cur-dir (fx/sub-val context :cur-path) |
| 13 | + prev-dir (clojure.string/join "/" (drop-last (clojure.string/split cur-dir #"/"))) |
| 14 | + msg @(s/put! tclient ["get-dir" prev-dir]) ;get parent from :cur-path |
| 15 | + dir-contents @(s/take! tclient)] |
| 16 | + {:context (fx/swap-context context |
| 17 | + assoc |
| 18 | + :dir-contents dir-contents |
| 19 | + :cur-path prev-dir)})) |
| 20 | + |
| 21 | +;TODO: send event for replacing highlighted text, send event for inserting text |
| 22 | + |
| 23 | +(defmethod handle-event ::type-filename [{:keys [fx/event fx/context]}] |
| 24 | + {:context (fx/swap-context context |
| 25 | + assoc |
| 26 | + :file-name-entered (.getCharacters (.getSource event)))}) |
| 27 | + |
| 28 | +(defmethod handle-event ::newclick [{:keys [fx/event fx/context tclient]}] |
| 29 | + (let [file-name (fx/sub-val context :file-name-entered) |
| 30 | + file-path-new (str (fx/sub-val context :cur-path) "/" (.toString file-name)) |
| 31 | + msg @(s/put! tclient ["open-file" file-path-new])] |
| 32 | + (println "CUR-PATH: " (fx/sub-val context :cur-path)) |
| 33 | + {:context (fx/swap-context context ;how the fuck do I do this |
| 34 | + assoc |
| 35 | + :file-path file-path-new |
| 36 | + :text-editor "" |
| 37 | + :file-explorer-show false)})) |
| 38 | + |
| 39 | +(defmethod handle-event ::openfex [{:keys [fx/event fx/context]}] |
| 40 | + {:context (fx/swap-context context |
| 41 | + assoc |
| 42 | + :file-explorer-show true)}) |
| 43 | + |
| 44 | +(defmethod handle-event ::saveevent [{:keys [fx/event fx/context tclient]}] |
| 45 | + @(s/put! tclient ["save-file" (fx/sub-val context :file-path)]) |
| 46 | + {:context context}) |
| 47 | + |
| 48 | +(defmethod handle-event ::backclick [{:keys [fx/event fx/context tclient]}] |
| 49 | + (fex-back context tclient)) |
| 50 | + |
| 51 | +(defmethod handle-event ::fexclick [{:keys [fx/event fx/context tclient]}] |
| 52 | + (let [entry (.getText (.getTarget event)) |
| 53 | + entry-info (subs entry 0 5) |
| 54 | + entry-name (subs entry 5)] |
| 55 | + (cond |
| 56 | + (= entry-info "DIR: ") (do @(s/put! tclient ["get-dir" entry-name]) |
| 57 | + (let [dir-contents @(s/take! tclient)] |
| 58 | + (println dir-contents) |
| 59 | + {:context (fx/swap-context context |
| 60 | + assoc |
| 61 | + :dir-contents dir-contents |
| 62 | + :cur-path entry-name)})) |
| 63 | + (= entry-info "FIL: ") (do @(s/put! tclient ["open-file" entry-name]) |
| 64 | + (let [file-contents @(s/take! tclient)] |
| 65 | + (println file-contents) |
| 66 | + {:context (fx/swap-context context |
| 67 | + assoc |
| 68 | + :file-path entry-name |
| 69 | + :text-editor file-contents |
| 70 | + :file-explorer-show false)}))))) |
| 71 | + |
11 | 72 | (defmethod handle-event ::type-text [{:keys [fx/event fx/context tclient]}] |
12 | | - @(s/put! tclient ["text-edit" (fx/sub-val context :file-path) (fx/sub-val context :caret-pos) (.getCharacter event)]) |
| 73 | + (println event) ;get soruce of event, prefereably |
| 74 | + (let [message ["text-edit" (fx/sub-val context :file-path) (.getCharacter event) (.getCaretPosition (.getSource event))] |
| 75 | + length (- (fx/sub-val context :anchor-pos) (fx/sub-val context :caret-pos))] |
| 76 | + (println length (conj message length)) |
| 77 | + @(s/put! tclient (if (> length 0) (assoc (conj message length) 3 (.getAnchor (.getSource event))) message))) |
13 | 78 | (println @(s/take! tclient)) |
14 | 79 | {:context (fx/swap-context context |
15 | 80 | assoc |
16 | 81 | :anchor-pos (.getAnchor (.getSource event)) |
17 | 82 | :caret-pos (.getCaretPosition (.getSource event)))}) |
18 | 83 |
|
19 | | - |
20 | | -;similar event must be made for arrow key press |
21 | 84 | (defmethod handle-event ::mouse-click [{:keys [fx/event fx/context tclient]}] |
22 | | - (println "click") |
| 85 | + (println (:fx/event event)) |
23 | 86 | (println (.getSource event)) |
24 | 87 | {:context (fx/swap-context context |
25 | 88 | assoc |
26 | 89 | :anchor-pos (.getAnchor (.getSource event)) |
27 | 90 | :caret-pos (.getCaretPosition (.getSource event)))}) |
28 | 91 |
|
29 | | -(defmethod handle-event ::open-file [{:keys [fx/event fx/context tclient]}] |
30 | | - (println "getting file") |
31 | | - @(s/put! tclient ["open-file" (fx/sub-val context :file-path)]) |
32 | | - {:context (fx/swap-context context |
33 | | - assoc |
34 | | - :text-editor |
35 | | - @(s/take! tclient))}) |
36 | | - |
37 | 92 | (defmethod handle-event ::close-file [{:keys [fx/event fx/context tclient]}] |
38 | 93 | (println "requesting close file") |
39 | 94 | @(s/put! tclient ["close-file" (fx/sub-val context :file-path)])) |
|
0 commit comments