Skip to content

Commit

Permalink
You can now view and accept an offer from the view identity window. A…
Browse files Browse the repository at this point in the history
…lso updated the Seesaw 1.0.9.
  • Loading branch information
macourtney committed Jul 21, 2011
1 parent 4c30cac commit 9c7800d
Show file tree
Hide file tree
Showing 8 changed files with 92 additions and 28 deletions.
2 changes: 1 addition & 1 deletion project.clj
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
[org.clojars.macourtney/streaming "0.8.7-0"]
[org.clojure/clojure "1.2.1"]
[org.clojure/clojure-contrib "1.2.0"]
[seesaw "1.0.7"]]
[seesaw "1.0.9"]]
:dev-dependencies [[drift "1.2.1"]
[lein-tar "1.0.6"]]

Expand Down
80 changes: 63 additions & 17 deletions src/darkexchange/controller/identity/view.clj
Original file line number Diff line number Diff line change
Expand Up @@ -2,50 +2,96 @@
(:require [clojure.contrib.logging :as logging]
[darkexchange.controller.actions.utils :as actions-utils]
[darkexchange.controller.offer.open-offer-table :as open-offer-table-controller]
[darkexchange.controller.offer.view :as offer-view-controller]
[darkexchange.controller.utils :as controller-utils]
[darkexchange.controller.widgets.utils :as widgets-utils]
[darkexchange.model.calls.get-open-offers :as get-open-offers-call]
[darkexchange.model.identity :as identity-model]
[darkexchange.model.offer :as offer-model]
[darkexchange.model.terms :as terms]
[darkexchange.view.identity.view :as identity-view]
[seesaw.core :as seesaw-core]))

(defn find-name-label [parent-component]
(controller-utils/find-component parent-component "#name-label"))

(defn find-public-key-label [parent-component]
(controller-utils/find-component parent-component "#public-key-label"))

(defn find-algorithm-label [parent-component]
(controller-utils/find-component parent-component "#public-key-algorithm-label"))

(defn find-is-online-label [parent-component]
(controller-utils/find-component parent-component "#is-online-label"))

(defn find-status-label [parent-component]
(controller-utils/find-component parent-component "#offer-table-status-label"))

(defn find-view-offer-button [parent-component]
(seesaw-core/select parent-component ["#view-offer-button"]))

(defn attach-cancel-action [parent-component]
(actions-utils/attach-window-close-listener parent-component "#cancel-button"))

(defn attach [parent-component offer]
(attach-cancel-action parent-component))
(defn selected-offer [parent-component]
(open-offer-table-controller/selected-offer parent-component))

(defn find-name-label [parent-component]
(controller-utils/find-component parent-component "#name-label"))
(defn original-selected-offer [parent-component]
(:original-offer (selected-offer parent-component)))

(defn selected-view-offer [parent-component]
(let [original-offer (original-selected-offer parent-component)
identity (:identity original-offer)]
{ :id (:id original-offer)
:public-key (:public_key identity)
:public-key-algorithm (:public_key_algorithm identity)
:name (:name identity)
:wants (offer-model/wants-amount-str original-offer)
:to_receive_by (offer-model/wants-payment-type-str original-offer)
:has (offer-model/has-amount-str original-offer)
:to_send_by (offer-model/has-payment-type-str original-offer) }))

(defn view-offer-listener [parent-component]
(offer-view-controller/show parent-component
(selected-view-offer parent-component)))

(defn attach-view-offer-action [parent-component]
(actions-utils/attach-listener parent-component "#view-offer-button"
(fn [_] (view-offer-listener parent-component))))

(defn view-offer-if-enabled [parent-component]
(widgets-utils/do-click-if-enabled (find-view-offer-button parent-component)))

(defn attach-view-offer-table-action [parent-component]
(open-offer-table-controller/attach-table-action parent-component #(view-offer-if-enabled parent-component)))

(defn attach-view-offer-button-enable-listener [parent-component]
(open-offer-table-controller/attach-single-select-button-enable-listener parent-component
(find-view-offer-button parent-component)))

(defn attach-view-offer-actions [parent-component]
(attach-view-offer-button-enable-listener
(attach-view-offer-table-action
(attach-view-offer-action parent-component))))

(defn attach [parent-component offer]
(attach-view-offer-actions (attach-cancel-action parent-component)))

(defn load-name [parent-component identity]
(seesaw-core/config! (find-name-label parent-component) :text (:name identity)))

(defn find-public-key-label [parent-component]
(controller-utils/find-component parent-component "#public-key-label"))

(defn load-public-key [parent-component identity]
(seesaw-core/config! (find-public-key-label parent-component)
:text (identity-model/shortened-public-key identity)))

(defn find-algorithm-label [parent-component]
(controller-utils/find-component parent-component "#public-key-algorithm-label"))

(defn load-algorithm [parent-component identity]
(seesaw-core/config! (find-algorithm-label parent-component)
:text (:public_key_algorithm identity)))

(defn find-is-online-label [parent-component]
(controller-utils/find-component parent-component "#is-online-label"))

(defn load-is-online [parent-component identity]
(seesaw-core/config! (find-is-online-label parent-component)
:text (if (identity-model/is-online? identity) (terms/yes) (terms/no))))

(defn find-status-label [parent-component]
(controller-utils/find-component parent-component "#offer-table-status-label"))

(defn set-table-status [parent-component status-text]
(seesaw-core/config! (find-status-label parent-component) :text (terms/status-parens status-text)))

Expand All @@ -62,7 +108,7 @@
(defn load-offers [parent-component identity]
(future
(let [open-offers (get-open-offers-call/call (identity-model/get-record (:id identity)))]
(seesaw-core/invoke-later (set-offers parent-component open-offers)))))
(seesaw-core/invoke-later (set-offers parent-component (map #(assoc % :identity identity) open-offers))))))

(defn load-data [parent-component identity]
(load-name parent-component identity)
Expand Down
3 changes: 2 additions & 1 deletion src/darkexchange/controller/main/home/open_trade_panel.clj
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
(ns darkexchange.controller.main.home.open-trade-panel
(:require [darkexchange.controller.actions.utils :as action-utils]
(:require [clojure.contrib.logging :as logging]
[darkexchange.controller.actions.utils :as action-utils]
[darkexchange.controller.trade.view :as view-trade]
[darkexchange.controller.widgets.utils :as widgets-utils]
[darkexchange.model.trade :as trade-model]
Expand Down
13 changes: 11 additions & 2 deletions src/darkexchange/controller/offer/open_offer_table.clj
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
(ns darkexchange.controller.offer.open-offer-table
(:require [darkexchange.model.offer :as offer-model]
(:require [darkexchange.controller.widgets.utils :as widgets-utils]
[darkexchange.model.offer :as offer-model]
[darkexchange.view.offer.open-offer-table :as open-offer-table-view]
[seesaw.core :as seesaw-core]
[seesaw.table :as seesaw-table]))
Expand Down Expand Up @@ -45,4 +46,12 @@
(defn update-offer [parent-component offer]
(let [open-offer-table (find-open-offer-table parent-component)]
(when-let [offer-index (find-offer-index open-offer-table offer)]
(replace-offer-at open-offer-table offer offer-index))))
(replace-offer-at open-offer-table offer offer-index))))

(defn attach-single-select-button-enable-listener [parent-component button]
(widgets-utils/single-select-table-button button (find-open-offer-table parent-component))
parent-component)

(defn attach-table-action [parent-component action-fn]
(widgets-utils/add-table-action (find-open-offer-table parent-component) action-fn)
parent-component)
7 changes: 4 additions & 3 deletions src/darkexchange/model/calls/accept_offer.clj
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,10 @@
(defn update-trade [initial-trade response-map]
(if-let [foreign-trade-id (:trade-id (:data response-map))]
(when-let [other-identity (interchange-map-util/from-identity response-map)]
(when-let [offer (find-offer initial-trade response-map)]
(trade-model/set-foreign-trade-id (:id initial-trade) foreign-trade-id)))
(trade-model/destroy-record { :id (:id initial-trade) })))
(if-let [offer (find-offer initial-trade response-map)]
(trade-model/set-foreign-trade-id (:id initial-trade) foreign-trade-id)
(trade-model/destroy-record initial-trade)))
(trade-model/destroy-record initial-trade)))

(defn find-identity
([offer] (find-identity (:name offer) (:public-key offer) (:public-key-algorithm offer)))
Expand Down
3 changes: 2 additions & 1 deletion src/darkexchange/model/identity.clj
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,8 @@
(find-identity (:name user) (:public_key user) (:public_key_algorithm user))))

(defn shortened-public-key-str [public-key]
(str ".." (.substring public-key 40 60) ".."))
(when public-key
(str ".." (.substring public-key 40 60) "..")))

(defn shortened-public-key [identity]
(shortened-public-key-str (:public_key identity)))
Expand Down
3 changes: 2 additions & 1 deletion src/darkexchange/model/offer.clj
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,8 @@
:i-want-amount (wants-amount-str offer)
:i-want-to-receive-by (wants-payment-type-str offer)
:has-div-wants (calculate-has-div-wants offer)
:wants-div-has (calculate-wants-div-has offer) })
:wants-div-has (calculate-wants-div-has offer)
:original-offer offer })

(defn table-open-offers []
(map convert-to-table-offer (open-offers)))
9 changes: 7 additions & 2 deletions src/darkexchange/view/identity/view.clj
Original file line number Diff line number Diff line change
Expand Up @@ -36,14 +36,19 @@
(defn create-offer-table-title []
(seesaw-core/horizontal-panel
:items [ (terms/offers)
[:fill-v 3]
[:fill-h 3]
(seesaw-core/label :id :offer-table-status-label :text (terms/status-parens (terms/loading)))]))

(defn create-offer-table-button-panel []
(seesaw-core/horizontal-panel
:items [ (seesaw-core/button :id :view-offer-button :text (terms/view) :enabled? false) ]))

(defn create-offer-table-header []
(seesaw-core/border-panel
:border 5
:hgap 5
:west (create-offer-table-title)))
:west (create-offer-table-title)
:east (create-offer-table-button-panel)))

(defn create-offer-table-panel []
(seesaw-core/border-panel
Expand Down

0 comments on commit 9c7800d

Please sign in to comment.