From b2552b968c1d4e79648c9d4956405169188ab4c7 Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Thu, 10 Mar 2016 20:01:39 +0100 Subject: [PATCH] Make market price display invertable by click on field --- .../java/io/bitsquare/app/BitsquareApp.java | 2 +- .../main/java/io/bitsquare/gui/bitsquare.css | 9 +++++- .../java/io/bitsquare/gui/main/MainView.java | 32 ++++++++----------- .../io/bitsquare/gui/main/MainViewModel.java | 3 ++ .../markets/charts/MarketsChartsView.java | 12 +++++-- .../main/offer/offerbook/OfferBookView.java | 20 +++++++++--- .../settings/preferences/PreferencesView.java | 10 ++++-- .../io/bitsquare/gui/util/BSFormatter.java | 21 ++++-------- 8 files changed, 67 insertions(+), 42 deletions(-) diff --git a/gui/src/main/java/io/bitsquare/app/BitsquareApp.java b/gui/src/main/java/io/bitsquare/app/BitsquareApp.java index a56caa7aaa..d9a14d932c 100644 --- a/gui/src/main/java/io/bitsquare/app/BitsquareApp.java +++ b/gui/src/main/java/io/bitsquare/app/BitsquareApp.java @@ -153,7 +153,7 @@ public class BitsquareApp extends Application { mainView.setPersistedFilesCorrupted(corruptedDatabaseFiles); });*/ - scene = new Scene(mainView.getRoot(), 1060, 740); + scene = new Scene(mainView.getRoot(), 1100, 740); scene.getStylesheets().setAll( "/io/bitsquare/gui/bitsquare.css", "/io/bitsquare/gui/images.css"); diff --git a/gui/src/main/java/io/bitsquare/gui/bitsquare.css b/gui/src/main/java/io/bitsquare/gui/bitsquare.css index 3c8d9854f9..7903a083b6 100644 --- a/gui/src/main/java/io/bitsquare/gui/bitsquare.css +++ b/gui/src/main/java/io/bitsquare/gui/bitsquare.css @@ -992,4 +992,11 @@ textfield */ .popup-icon-warning { -fx-text-fill: #dd6900; -} \ No newline at end of file +} + +#price-feed-text-field { + -fx-alignment: center; + -fx-background-color: #555; + -fx-text-fill: white; + -fx-cursor: hand; +} diff --git a/gui/src/main/java/io/bitsquare/gui/main/MainView.java b/gui/src/main/java/io/bitsquare/gui/main/MainView.java index fe2e2e63cb..faddf86cd6 100644 --- a/gui/src/main/java/io/bitsquare/gui/main/MainView.java +++ b/gui/src/main/java/io/bitsquare/gui/main/MainView.java @@ -36,6 +36,8 @@ import io.bitsquare.gui.main.overlays.popups.Popup; import io.bitsquare.gui.main.portfolio.PortfolioView; import io.bitsquare.gui.main.settings.SettingsView; import io.bitsquare.gui.util.Transitions; +import javafx.beans.property.BooleanProperty; +import javafx.beans.property.SimpleBooleanProperty; import javafx.beans.value.ChangeListener; import javafx.geometry.Insets; import javafx.geometry.Pos; @@ -134,12 +136,17 @@ public class MainView extends InitializableView { }}; Tuple3 marketPriceBox = getMarketPriceBox("Market price"); + final BooleanProperty priceInverted = new SimpleBooleanProperty(false); + marketPriceBox.first.setOnMouseClicked(e -> priceInverted.setValue(!priceInverted.get())); marketPriceBox.first.textProperty().bind(createStringBinding( - () -> { - return model.marketPrice.get() + " " + - model.marketPriceCurrency.get() + "/BTC"; - }, - model.marketPriceCurrency, model.marketPrice)); + () -> (priceInverted.get() ? + model.marketPriceInverted.get() : + model.marketPrice.get()) + + (priceInverted.get() ? + " BTC/" + model.marketPriceCurrency.get() : + " " + model.marketPriceCurrency.get() + "/BTC"), + model.marketPriceCurrency, model.marketPrice, priceInverted)); + marketPriceBox.second.textProperty().bind(createStringBinding( () -> { PriceFeed.Type type = model.typeProperty.get(); @@ -256,10 +263,9 @@ public class MainView extends InitializableView { private Tuple3 getMarketPriceBox(String text) { TextField textField = new TextField(); textField.setEditable(false); - textField.setPrefWidth(150); - textField.setMouseTransparent(true); + textField.setPrefWidth(180); textField.setFocusTraversable(false); - textField.setStyle("-fx-alignment: center; -fx-background-color: -bs-bg-grey;"); + textField.setId("price-feed-text-field"); Label label = new Label(text); label.setId("nav-balance-label"); @@ -497,11 +503,6 @@ public class MainView extends InitializableView { notification.getChildren().addAll(icon, label); notification.visibleProperty().bind(model.showPendingTradesNotification); buttonHolder.getChildren().add(notification); - - /* model.showPendingTradesNotification.addListener((ov, oldValue, newValue) -> { - if (newValue) - SystemNotification.openInfoNotification(title, "You received a new trade message."); - });*/ } private void setupDisputesIcon(Pane buttonHolder) { @@ -521,11 +522,6 @@ public class MainView extends InitializableView { notification.getChildren().addAll(icon, label); notification.visibleProperty().bind(model.showOpenDisputesNotification); buttonHolder.getChildren().add(notification); - - /* model.showOpenDisputesNotification.addListener((ov, oldValue, newValue) -> { - if (newValue) - SystemNotification.openInfoNotification(title, "You received a dispute message."); - });*/ } private class NavButton extends ToggleButton { diff --git a/gui/src/main/java/io/bitsquare/gui/main/MainViewModel.java b/gui/src/main/java/io/bitsquare/gui/main/MainViewModel.java index 0602ca549d..bd9e10baf5 100644 --- a/gui/src/main/java/io/bitsquare/gui/main/MainViewModel.java +++ b/gui/src/main/java/io/bitsquare/gui/main/MainViewModel.java @@ -101,6 +101,7 @@ public class MainViewModel implements ViewModel { final StringProperty walletServiceErrorMsg = new SimpleStringProperty(); final StringProperty btcSplashSyncIconId = new SimpleStringProperty(); final StringProperty marketPrice = new SimpleStringProperty("N/A"); + final StringProperty marketPriceInverted = new SimpleStringProperty("N/A"); final StringProperty marketPriceCurrency = new SimpleStringProperty(""); final ObjectProperty typeProperty = new SimpleObjectProperty<>(PriceFeed.Type.LAST); final StringProperty availableBalance = new SimpleStringProperty(); @@ -609,9 +610,11 @@ public class MainViewModel implements ViewModel { priceFeed.setType(PriceFeed.Type.LAST); priceFeed.init(price -> { marketPrice.set(formatter.formatMarketPrice(price)); + marketPriceInverted.set(formatter.formatMarketPrice(1 / price, 8)); }, (errorMessage, throwable) -> { marketPrice.set("N/A"); + marketPriceInverted.set("N/A"); }); marketPriceCurrency.bind(priceFeed.currencyCodeProperty()); typeProperty.bind(priceFeed.typeProperty()); diff --git a/gui/src/main/java/io/bitsquare/gui/main/markets/charts/MarketsChartsView.java b/gui/src/main/java/io/bitsquare/gui/main/markets/charts/MarketsChartsView.java index ba78d51471..bdb9425a07 100644 --- a/gui/src/main/java/io/bitsquare/gui/main/markets/charts/MarketsChartsView.java +++ b/gui/src/main/java/io/bitsquare/gui/main/markets/charts/MarketsChartsView.java @@ -27,6 +27,8 @@ import io.bitsquare.gui.main.offer.BuyOfferView; import io.bitsquare.gui.main.offer.SellOfferView; import io.bitsquare.gui.main.offer.offerbook.OfferBookListItem; import io.bitsquare.gui.util.BSFormatter; +import io.bitsquare.locale.CryptoCurrency; +import io.bitsquare.locale.FiatCurrency; import io.bitsquare.locale.TradeCurrency; import io.bitsquare.trade.offer.Offer; import javafx.beans.property.ReadOnlyObjectWrapper; @@ -86,7 +88,13 @@ public class MarketsChartsView extends ActivatableViewAndModel() { @Override public String toString(TradeCurrency tradeCurrency) { - return tradeCurrency.getNameAndCode(); + // http://boschista.deviantart.com/journal/Cool-ASCII-Symbols-214218618 + if (tradeCurrency instanceof FiatCurrency) + return "★ " + tradeCurrency.getNameAndCode(); + else if (tradeCurrency instanceof CryptoCurrency) + return "✦ " + tradeCurrency.getNameAndCode(); + else + return "-"; } @Override @@ -158,7 +166,7 @@ public class MarketsChartsView extends ActivatableViewAndModel priceColumn = new TableColumn<>(); diff --git a/gui/src/main/java/io/bitsquare/gui/main/offer/offerbook/OfferBookView.java b/gui/src/main/java/io/bitsquare/gui/main/offer/offerbook/OfferBookView.java index 29414162fe..e2515b3758 100644 --- a/gui/src/main/java/io/bitsquare/gui/main/offer/offerbook/OfferBookView.java +++ b/gui/src/main/java/io/bitsquare/gui/main/offer/offerbook/OfferBookView.java @@ -34,6 +34,8 @@ import io.bitsquare.gui.main.overlays.popups.Popup; import io.bitsquare.gui.main.overlays.windows.OfferDetailsWindow; import io.bitsquare.gui.util.Layout; import io.bitsquare.locale.BSResources; +import io.bitsquare.locale.CryptoCurrency; +import io.bitsquare.locale.FiatCurrency; import io.bitsquare.locale.TradeCurrency; import io.bitsquare.payment.PaymentMethod; import io.bitsquare.trade.offer.Offer; @@ -94,12 +96,17 @@ public class OfferBookView extends ActivatableViewAndModel> Show all"; + return "▶ Show all"; else if (code.equals(OfferBookViewModel.EDIT_FLAG)) - return ">> Edit currency list"; + return "▼ Edit currency list"; + else if (tradeCurrency instanceof FiatCurrency) + return "★ " + tradeCurrency.getNameAndCode(); + else if (tradeCurrency instanceof CryptoCurrency) + return "✦ " + tradeCurrency.getNameAndCode(); else - return tradeCurrency.getNameAndCode(); + return "-"; } @Override @@ -114,7 +121,12 @@ public class OfferBookView extends ActivatableViewAndModel> Show all"); + if (id.equals(OfferBookViewModel.SHOW_ALL_FLAG)) + return "▶ Show all"; + else if (paymentMethod.equals(PaymentMethod.BLOCK_CHAINS)) + return "✦ " + BSResources.get(id); + else + return "★ " + BSResources.get(id); } @Override diff --git a/gui/src/main/java/io/bitsquare/gui/main/settings/preferences/PreferencesView.java b/gui/src/main/java/io/bitsquare/gui/main/settings/preferences/PreferencesView.java index 37f6dbf81f..85037a0a8f 100644 --- a/gui/src/main/java/io/bitsquare/gui/main/settings/preferences/PreferencesView.java +++ b/gui/src/main/java/io/bitsquare/gui/main/settings/preferences/PreferencesView.java @@ -136,11 +136,17 @@ public class PreferencesView extends ActivatableViewAndModel() { @Override public String toString(TradeCurrency tradeCurrency) { - return tradeCurrency.getNameAndCode(); + // http://boschista.deviantart.com/journal/Cool-ASCII-Symbols-214218618 + if (tradeCurrency instanceof FiatCurrency) + return "★ " + tradeCurrency.getNameAndCode(); + else if (tradeCurrency instanceof CryptoCurrency) + return "✦ " + tradeCurrency.getNameAndCode(); + else + return "-"; } @Override - public TradeCurrency fromString(String string) { + public TradeCurrency fromString(String s) { return null; } }); diff --git a/gui/src/main/java/io/bitsquare/gui/util/BSFormatter.java b/gui/src/main/java/io/bitsquare/gui/util/BSFormatter.java index 41679627f6..379c0d721e 100644 --- a/gui/src/main/java/io/bitsquare/gui/util/BSFormatter.java +++ b/gui/src/main/java/io/bitsquare/gui/util/BSFormatter.java @@ -263,20 +263,13 @@ public class BSFormatter { } public String formatMarketPrice(double price) { - if (price > 0) { - String str = String.valueOf(price); - int decPoint = str.indexOf("."); - if (decPoint > 0) { - while (str.length() < decPoint + 3) { - str += "0"; - } - return str.substring(0, decPoint + 3); - } else { - return str; - } - } else { - return "N/A"; - } + return formatMarketPrice(price, 3); + } + + public String formatMarketPrice(double price, int decimals) { + DecimalFormat df = new DecimalFormat("#.#"); + df.setMaximumFractionDigits(decimals); + return df.format(price); } ///////////////////////////////////////////////////////////////////////////////////////////