From 870cd062f50303675814afdec4a582beebe03da7 Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Thu, 11 Sep 2014 13:09:02 +0200 Subject: [PATCH] Refactor OrderBookInfo (renamed from OrderBookFilter) --- .../bitsquare/gui/main/trade/BuyViewCB.java | 2 +- ...rderBookFilter.java => OrderBookInfo.java} | 33 +++++++++-------- .../bitsquare/gui/main/trade/SellViewCB.java | 2 +- .../bitsquare/gui/main/trade/TradeModel.java | 26 +++++--------- .../io/bitsquare/gui/main/trade/TradePM.java | 24 ++----------- .../bitsquare/gui/main/trade/TradeViewCB.java | 4 +-- .../main/trade/createoffer/CreateOfferPM.java | 16 ++++----- .../trade/createoffer/CreateOfferViewCB.java | 6 ++-- .../gui/main/trade/orderbook/OrderBook.java | 18 +++++----- .../main/trade/orderbook/OrderBookViewCB.java | 35 +++++++------------ 10 files changed, 66 insertions(+), 100 deletions(-) rename src/main/java/io/bitsquare/gui/main/trade/{OrderBookFilter.java => OrderBookInfo.java} (76%) diff --git a/src/main/java/io/bitsquare/gui/main/trade/BuyViewCB.java b/src/main/java/io/bitsquare/gui/main/trade/BuyViewCB.java index 0aed8e74e6..ea50952ce9 100644 --- a/src/main/java/io/bitsquare/gui/main/trade/BuyViewCB.java +++ b/src/main/java/io/bitsquare/gui/main/trade/BuyViewCB.java @@ -30,7 +30,7 @@ public class BuyViewCB extends TradeViewCB { @Override protected void initOrderBook() { - orderBookViewCB.initOrderBook(Direction.BUY); + orderBookViewCB.initOrderBook(Direction.BUY, presentationModel.getOrderBookInfo()); } } diff --git a/src/main/java/io/bitsquare/gui/main/trade/OrderBookFilter.java b/src/main/java/io/bitsquare/gui/main/trade/OrderBookInfo.java similarity index 76% rename from src/main/java/io/bitsquare/gui/main/trade/OrderBookFilter.java rename to src/main/java/io/bitsquare/gui/main/trade/OrderBookInfo.java index f91fe5b806..b7d18fdded 100644 --- a/src/main/java/io/bitsquare/gui/main/trade/OrderBookFilter.java +++ b/src/main/java/io/bitsquare/gui/main/trade/OrderBookInfo.java @@ -22,16 +22,18 @@ import io.bitsquare.trade.Direction; import com.google.bitcoin.core.Coin; import com.google.bitcoin.utils.Fiat; -import javafx.beans.property.SimpleBooleanProperty; +import javafx.beans.property.ObjectProperty; +import javafx.beans.property.SimpleObjectProperty; -//TODO move to OrderBookModel when converted to new UI structure -public class OrderBookFilter { - // TODO use ObjectProperty instead - private final SimpleBooleanProperty directionChangedProperty = new SimpleBooleanProperty(); +/** + * Shared data between the different trade UIs + */ +public class OrderBookInfo { + + private final ObjectProperty direction = new SimpleObjectProperty<>(); private Fiat price; private Coin amount; - private Direction direction; /////////////////////////////////////////////////////////////////////////////////////////// @@ -46,8 +48,8 @@ public class OrderBookFilter { this.amount = amount; } - public Direction getDirection() { - return direction; + public void setDirection(Direction direction) { + this.direction.set(direction); } @@ -55,11 +57,6 @@ public class OrderBookFilter { // Getters /////////////////////////////////////////////////////////////////////////////////////////// - public void setDirection(Direction direction) { - this.direction = direction; - directionChangedProperty.set(!directionChangedProperty.get()); - } - public Fiat getPrice() { return price; } @@ -68,7 +65,13 @@ public class OrderBookFilter { this.price = price; } - public SimpleBooleanProperty getDirectionChangedProperty() { - return directionChangedProperty; + public Direction getDirection() { + return direction.get(); } + + public ObjectProperty directionProperty() { + return direction; + } + + } diff --git a/src/main/java/io/bitsquare/gui/main/trade/SellViewCB.java b/src/main/java/io/bitsquare/gui/main/trade/SellViewCB.java index 6a0423f60a..986811476d 100644 --- a/src/main/java/io/bitsquare/gui/main/trade/SellViewCB.java +++ b/src/main/java/io/bitsquare/gui/main/trade/SellViewCB.java @@ -30,7 +30,7 @@ public class SellViewCB extends TradeViewCB { @Override protected void initOrderBook() { - orderBookViewCB.initOrderBook(Direction.SELL); + orderBookViewCB.initOrderBook(Direction.SELL, presentationModel.getOrderBookInfo()); } diff --git a/src/main/java/io/bitsquare/gui/main/trade/TradeModel.java b/src/main/java/io/bitsquare/gui/main/trade/TradeModel.java index 6d083f1449..0265f996d9 100644 --- a/src/main/java/io/bitsquare/gui/main/trade/TradeModel.java +++ b/src/main/java/io/bitsquare/gui/main/trade/TradeModel.java @@ -27,33 +27,23 @@ import org.slf4j.LoggerFactory; public class TradeModel extends UIModel { private static final Logger log = LoggerFactory.getLogger(TradeModel.class); + private OrderBookInfo orderBookInfo; + /////////////////////////////////////////////////////////////////////////////////////////// // Constructor /////////////////////////////////////////////////////////////////////////////////////////// @Inject - public TradeModel() { + public TradeModel(OrderBookInfo orderBookInfo) { + this.orderBookInfo = orderBookInfo; } - - - /////////////////////////////////////////////////////////////////////////////////////////// - // Public methods - /////////////////////////////////////////////////////////////////////////////////////////// - + /////////////////////////////////////////////////////////////////////////////////////////// // Getters /////////////////////////////////////////////////////////////////////////////////////////// - - /////////////////////////////////////////////////////////////////////////////////////////// - // Setters - /////////////////////////////////////////////////////////////////////////////////////////// - - - /////////////////////////////////////////////////////////////////////////////////////////// - // Private methods - /////////////////////////////////////////////////////////////////////////////////////////// - - + public OrderBookInfo getOrderBookInfo() { + return orderBookInfo; + } } diff --git a/src/main/java/io/bitsquare/gui/main/trade/TradePM.java b/src/main/java/io/bitsquare/gui/main/trade/TradePM.java index 418fe57296..2c393c863e 100644 --- a/src/main/java/io/bitsquare/gui/main/trade/TradePM.java +++ b/src/main/java/io/bitsquare/gui/main/trade/TradePM.java @@ -37,29 +37,11 @@ public class TradePM extends PresentationModel { } - /////////////////////////////////////////////////////////////////////////////////////////// - // Public methods - /////////////////////////////////////////////////////////////////////////////////////////// - - - /////////////////////////////////////////////////////////////////////////////////////////// - // Interface implementation: Initializable - /////////////////////////////////////////////////////////////////////////////////////////// - - /////////////////////////////////////////////////////////////////////////////////////////// // Getters /////////////////////////////////////////////////////////////////////////////////////////// - - /////////////////////////////////////////////////////////////////////////////////////////// - // Setters - /////////////////////////////////////////////////////////////////////////////////////////// - - - /////////////////////////////////////////////////////////////////////////////////////////// - // Private methods - /////////////////////////////////////////////////////////////////////////////////////////// - - + public OrderBookInfo getOrderBookInfo() { + return model.getOrderBookInfo(); + } } diff --git a/src/main/java/io/bitsquare/gui/main/trade/TradeViewCB.java b/src/main/java/io/bitsquare/gui/main/trade/TradeViewCB.java index 08c33bc8d2..ba48aeaab1 100644 --- a/src/main/java/io/bitsquare/gui/main/trade/TradeViewCB.java +++ b/src/main/java/io/bitsquare/gui/main/trade/TradeViewCB.java @@ -47,8 +47,8 @@ public abstract class TradeViewCB extends CachedViewCB { private static final Logger log = LoggerFactory.getLogger(TradeViewCB.class); protected OrderBookViewCB orderBookViewCB; - protected CreateOfferViewCB createOfferViewCB; - protected TakeOfferController takeOfferController; + private CreateOfferViewCB createOfferViewCB; + private TakeOfferController takeOfferController; private Node createOfferView; diff --git a/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferPM.java b/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferPM.java index 46970d6322..38bd1f996e 100644 --- a/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferPM.java +++ b/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferPM.java @@ -19,7 +19,7 @@ package io.bitsquare.gui.main.trade.createoffer; import io.bitsquare.btc.WalletFacade; import io.bitsquare.gui.PresentationModel; -import io.bitsquare.gui.main.trade.OrderBookFilter; +import io.bitsquare.gui.main.trade.OrderBookInfo; import io.bitsquare.gui.util.BSFormatter; import io.bitsquare.gui.util.validation.BtcValidator; import io.bitsquare.gui.util.validation.FiatValidator; @@ -154,21 +154,21 @@ public class CreateOfferPM extends PresentationModel { /////////////////////////////////////////////////////////////////////////////////////////// // setOrderBookFilter is a one time call - public void setOrderBookFilter(@NotNull OrderBookFilter orderBookFilter) { - model.setDirection(orderBookFilter.getDirection()); + public void setOrderBookFilter(@NotNull OrderBookInfo orderBookInfo) { + model.setDirection(orderBookInfo.getDirection()); directionLabel.set(model.getDirection() == Direction.BUY ? BSResources.get("shared.buy") : BSResources.get ("shared.sell")); // apply only if valid - if (orderBookFilter.getAmount() != null && isBtcInputValid(orderBookFilter.getAmount().toPlainString()) + if (orderBookInfo.getAmount() != null && isBtcInputValid(orderBookInfo.getAmount().toPlainString()) .isValid) { - model.amountAsCoin.set(orderBookFilter.getAmount()); - model.minAmountAsCoin.set(orderBookFilter.getAmount()); + model.amountAsCoin.set(orderBookInfo.getAmount()); + model.minAmountAsCoin.set(orderBookInfo.getAmount()); } // apply only if valid - if (orderBookFilter.getPrice() != null && isBtcInputValid(orderBookFilter.getPrice().toPlainString()).isValid) - model.priceAsFiat.set(parseToFiatWith2Decimals(orderBookFilter.getPrice().toPlainString())); + if (orderBookInfo.getPrice() != null && isBtcInputValid(orderBookInfo.getPrice().toPlainString()).isValid) + model.priceAsFiat.set(parseToFiatWith2Decimals(orderBookInfo.getPrice().toPlainString())); } diff --git a/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferViewCB.java b/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferViewCB.java index 08e157d5b7..53bd3eccc3 100644 --- a/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferViewCB.java +++ b/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferViewCB.java @@ -29,7 +29,7 @@ import io.bitsquare.gui.components.btc.AddressTextField; import io.bitsquare.gui.components.btc.BalanceTextField; import io.bitsquare.gui.main.help.Help; import io.bitsquare.gui.main.help.HelpId; -import io.bitsquare.gui.main.trade.OrderBookFilter; +import io.bitsquare.gui.main.trade.OrderBookInfo; import io.bitsquare.gui.util.ImageUtil; import io.bitsquare.locale.BSResources; @@ -162,8 +162,8 @@ public class CreateOfferViewCB extends CachedViewCB { // Public methods (called form other views/CB) /////////////////////////////////////////////////////////////////////////////////////////// - public void setOrderBookFilter(OrderBookFilter orderBookFilter) { - presentationModel.setOrderBookFilter(orderBookFilter); + public void setOrderBookFilter(OrderBookInfo orderBookInfo) { + presentationModel.setOrderBookFilter(orderBookInfo); } diff --git a/src/main/java/io/bitsquare/gui/main/trade/orderbook/OrderBook.java b/src/main/java/io/bitsquare/gui/main/trade/orderbook/OrderBook.java index 77d8bd9349..0c297120ff 100644 --- a/src/main/java/io/bitsquare/gui/main/trade/orderbook/OrderBook.java +++ b/src/main/java/io/bitsquare/gui/main/trade/orderbook/OrderBook.java @@ -19,7 +19,7 @@ package io.bitsquare.gui.main.trade.orderbook; import io.bitsquare.arbitrator.Arbitrator; import io.bitsquare.bank.BankAccount; -import io.bitsquare.gui.main.trade.OrderBookFilter; +import io.bitsquare.gui.main.trade.OrderBookInfo; import io.bitsquare.locale.Country; import io.bitsquare.locale.CurrencyUtil; import io.bitsquare.msg.MessageFacade; @@ -106,12 +106,12 @@ public class OrderBook implements OrderBookListener { tradeManager.removeOffer(offer); } - public void applyFilter(OrderBookFilter orderBookFilter) { + public void applyFilter(OrderBookInfo orderBookInfo) { filteredList.setPredicate(orderBookListItem -> { Offer offer = orderBookListItem.getOffer(); BankAccount currentBankAccount = user.getCurrentBankAccount(); - if (orderBookFilter == null || currentBankAccount == null || orderBookFilter.getDirection() == null) { + if (orderBookInfo == null || currentBankAccount == null || orderBookInfo.getDirection() == null) { return false; } @@ -128,19 +128,19 @@ public class OrderBook implements OrderBookListener { // Apply applyFilter only if there is a valid value set // The requested amount must be lower or equal then the offer amount boolean amountResult = true; - if (orderBookFilter.getAmount() != null) - amountResult = orderBookFilter.getAmount().compareTo(offer.getAmount()) <= 0; + if (orderBookInfo.getAmount() != null) + amountResult = orderBookInfo.getAmount().compareTo(offer.getAmount()) <= 0; // The requested trade direction must be opposite of the offerList trade direction - boolean directionResult = !orderBookFilter.getDirection().equals(offer.getDirection()); + boolean directionResult = !orderBookInfo.getDirection().equals(offer.getDirection()); // Apply applyFilter only if there is a valid value set boolean priceResult = true; - if (orderBookFilter.getPrice() != null) { + if (orderBookInfo.getPrice() != null) { if (offer.getDirection() == Direction.SELL) - priceResult = orderBookFilter.getPrice().compareTo(offer.getPrice()) >= 0; + priceResult = orderBookInfo.getPrice().compareTo(offer.getPrice()) >= 0; else - priceResult = orderBookFilter.getPrice().compareTo(offer.getPrice()) <= 0; + priceResult = orderBookInfo.getPrice().compareTo(offer.getPrice()) <= 0; } // The arbitrator defined in the offer must match one of the accepted arbitrators defined in the settings diff --git a/src/main/java/io/bitsquare/gui/main/trade/orderbook/OrderBookViewCB.java b/src/main/java/io/bitsquare/gui/main/trade/orderbook/OrderBookViewCB.java index d8b5ff47af..384ceca14d 100644 --- a/src/main/java/io/bitsquare/gui/main/trade/orderbook/OrderBookViewCB.java +++ b/src/main/java/io/bitsquare/gui/main/trade/orderbook/OrderBookViewCB.java @@ -26,7 +26,7 @@ import io.bitsquare.gui.OverlayController; import io.bitsquare.gui.ViewCB; import io.bitsquare.gui.ViewController; import io.bitsquare.gui.components.Popups; -import io.bitsquare.gui.main.trade.OrderBookFilter; +import io.bitsquare.gui.main.trade.OrderBookInfo; import io.bitsquare.gui.main.trade.createoffer.CreateOfferViewCB; import io.bitsquare.gui.main.trade.takeoffer.TakeOfferController; import io.bitsquare.gui.util.BSFormatter; @@ -88,7 +88,7 @@ public class OrderBookViewCB extends CachedViewCB { private NavigationController navigationController; private OverlayController overlayController; private final OrderBook orderBook; - private final OrderBookFilter orderBookFilter; + private OrderBookInfo orderBookInfo; private final User user; private final MessageFacade messageFacade; private final WalletFacade walletFacade; @@ -130,8 +130,6 @@ public class OrderBookViewCB extends CachedViewCB { this.walletFacade = walletFacade; this.settings = settings; this.persistence = persistence; - - this.orderBookFilter = new OrderBookFilter(); } @@ -186,11 +184,13 @@ public class OrderBookViewCB extends CachedViewCB { } + /////////////////////////////////////////////////////////////////////////////////////////// - // Private + // Public methods /////////////////////////////////////////////////////////////////////////////////////////// - private void init() { + public void initOrderBook(Direction direction, OrderBookInfo orderBookInfo) { + this.orderBookInfo = orderBookInfo; orderBook.init(); offerList = orderBook.getOfferList(); offerList.comparatorProperty().bind(orderBookTable.comparatorProperty()); @@ -202,16 +202,16 @@ public class OrderBookViewCB extends CachedViewCB { // handlers amount.textProperty().addListener((observable, oldValue, newValue) -> { - orderBookFilter.setAmount(BSFormatter.parseToCoin(newValue)); + orderBookInfo.setAmount(BSFormatter.parseToCoin(newValue)); updateVolume(); }); price.textProperty().addListener((observable, oldValue, newValue) -> { - orderBookFilter.setPrice(BSFormatter.parseToFiat(newValue)); + orderBookInfo.setPrice(BSFormatter.parseToFiat(newValue)); updateVolume(); }); - orderBookFilter.getDirectionChangedProperty().addListener((observable) -> applyOffers()); + orderBookInfo.directionProperty().addListener((observable) -> applyOffers()); user.currentBankAccountProperty().addListener((ov) -> orderBook.loadOffers()); @@ -219,18 +219,9 @@ public class OrderBookViewCB extends CachedViewCB { //TODO do polling until broadcast works setupPolling(); - } - - - /////////////////////////////////////////////////////////////////////////////////////////// - // Public methods - /////////////////////////////////////////////////////////////////////////////////////////// - - public void initOrderBook(Direction direction) { - init(); orderBookTable.getSelectionModel().clearSelection(); price.setText(""); - orderBookFilter.setDirection(direction); + this.orderBookInfo.setDirection(direction); } @@ -255,7 +246,7 @@ public class OrderBookViewCB extends CachedViewCB { } if (nextController != null) - ((CreateOfferViewCB) nextController).setOrderBookFilter(orderBookFilter); + ((CreateOfferViewCB) nextController).setOrderBookFilter(orderBookInfo); } else { openSetupScreen(); @@ -358,9 +349,9 @@ public class OrderBookViewCB extends CachedViewCB { } private void applyOffers() { - orderBook.applyFilter(orderBookFilter); + orderBook.applyFilter(orderBookInfo); - priceColumn.setSortType((orderBookFilter.getDirection() == Direction.BUY) ? + priceColumn.setSortType((orderBookInfo.getDirection() == Direction.BUY) ? TableColumn.SortType.ASCENDING : TableColumn.SortType.DESCENDING); orderBookTable.sort();