From 1db44639bfefd9d0a4620fca82363552bca65fb4 Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Tue, 9 Sep 2014 18:11:20 +0200 Subject: [PATCH] Refactor navigation --- .../java/io/bitsquare/di/BitSquareModule.java | 6 +- .../bitsquare/gui/NavigationController.java | 90 ++++++++++ .../java/io/bitsquare/gui/NavigationItem.java | 105 ++++++++---- .../io/bitsquare/gui/OverlayController.java | 63 +++++++ .../java/io/bitsquare/gui/ViewController.java | 2 + .../io/bitsquare/gui/components/Popups.java | 13 +- .../gui/components/btc/AddressTextField.java | 17 +- .../io/bitsquare/gui/model/AccountModel.java | 1 - .../io/bitsquare/gui/model/MainModel.java | 13 +- .../io/bitsquare/gui/{ => model}/UIModel.java | 2 +- .../model/account/AccountSettingsModel.java | 2 +- .../gui/model/account/AccountSetupModel.java | 2 +- .../account/content/ChangePasswordModel.java | 2 +- .../account/content/FiatAccountModel.java | 2 +- .../model/account/content/PasswordModel.java | 2 +- .../account/content/RegistrationModel.java | 2 +- .../account/content/RestrictionsModel.java | 2 +- .../model/account/content/SeedWordsModel.java | 2 +- .../gui/model/trade/CreateOfferModel.java | 2 +- .../java/io/bitsquare/gui/pm/AccountPM.java | 1 - src/main/java/io/bitsquare/gui/pm/MainPM.java | 5 +- .../gui/{ => pm}/PresentationModel.java | 4 +- .../gui/pm/account/AccountSettingsPM.java | 2 +- .../gui/pm/account/AccountSetupPM.java | 2 +- .../pm/account/content/ChangePasswordPM.java | 2 +- .../gui/pm/account/content/FiatAccountPm.java | 2 +- .../gui/pm/account/content/PasswordPM.java | 2 +- .../pm/account/content/RegistrationPM.java | 2 +- .../pm/account/content/RestrictionsPM.java | 2 +- .../gui/pm/account/content/SeedWordsPM.java | 2 +- .../bitsquare/gui/pm/trade/CreateOfferPM.java | 2 +- .../trade/orderbook/OrderBookController.java | 25 +-- .../io/bitsquare/gui/util/Transitions.java | 32 ++-- .../io/bitsquare/gui/view/AccountViewCB.java | 13 +- .../gui/{ => view}/CachedCodeBehind.java | 4 +- .../bitsquare/gui/{ => view}/CodeBehind.java | 5 +- .../io/bitsquare/gui/view/MainViewCB.java | 156 +++++++++--------- .../view/account/AccountSettingsViewCB.java | 47 +++++- .../gui/view/account/AccountSetupViewCB.java | 8 +- .../account/content/ChangePasswordViewCB.java | 2 +- .../account/content/FiatAccountViewCB.java | 2 +- .../view/account/content/PasswordViewCB.java | 2 +- .../account/content/RegistrationViewCB.java | 16 +- .../account/content/RestrictionsViewCB.java | 2 +- .../view/account/content/SeedWordsViewCB.java | 2 +- .../gui/view/trade/CreateOfferViewCB.java | 22 ++- 46 files changed, 477 insertions(+), 219 deletions(-) create mode 100644 src/main/java/io/bitsquare/gui/NavigationController.java create mode 100644 src/main/java/io/bitsquare/gui/OverlayController.java rename src/main/java/io/bitsquare/gui/{ => model}/UIModel.java (91%) rename src/main/java/io/bitsquare/gui/{ => pm}/PresentationModel.java (87%) rename src/main/java/io/bitsquare/gui/{ => view}/CachedCodeBehind.java (97%) rename src/main/java/io/bitsquare/gui/{ => view}/CodeBehind.java (96%) diff --git a/src/main/java/io/bitsquare/di/BitSquareModule.java b/src/main/java/io/bitsquare/di/BitSquareModule.java index 0a35b1c04d..a6973e990d 100644 --- a/src/main/java/io/bitsquare/di/BitSquareModule.java +++ b/src/main/java/io/bitsquare/di/BitSquareModule.java @@ -22,7 +22,8 @@ import io.bitsquare.btc.BlockChainFacade; import io.bitsquare.btc.FeePolicy; import io.bitsquare.btc.WalletFacade; import io.bitsquare.crypto.CryptoFacade; -import io.bitsquare.gui.view.MainViewCB; +import io.bitsquare.gui.NavigationController; +import io.bitsquare.gui.OverlayController; import io.bitsquare.msg.BootstrappedPeerFactory; import io.bitsquare.msg.MessageFacade; import io.bitsquare.msg.P2PNode; @@ -64,7 +65,8 @@ public class BitSquareModule extends AbstractModule { bind(BootstrappedPeerFactory.class).asEagerSingleton(); bind(TradeManager.class).asEagerSingleton(); - bind(MainViewCB.class).asEagerSingleton(); + bind(NavigationController.class).asEagerSingleton(); + bind(OverlayController.class).asEagerSingleton(); //bind(String.class).annotatedWith(Names.named("networkType")).toInstance(WalletFacade.MAIN_NET); diff --git a/src/main/java/io/bitsquare/gui/NavigationController.java b/src/main/java/io/bitsquare/gui/NavigationController.java new file mode 100644 index 0000000000..256334271a --- /dev/null +++ b/src/main/java/io/bitsquare/gui/NavigationController.java @@ -0,0 +1,90 @@ +/* + * This file is part of Bitsquare. + * + * Bitsquare is free software: you can redistribute it and/or modify it + * under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or (at + * your option) any later version. + * + * Bitsquare is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public + * License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Bitsquare. If not, see . + */ + +package io.bitsquare.gui; + +import com.google.inject.Inject; + +import java.util.ArrayList; +import java.util.List; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class NavigationController { + private static final Logger log = LoggerFactory.getLogger(NavigationController.class); + + /////////////////////////////////////////////////////////////////////////////////////////// + // Interface + /////////////////////////////////////////////////////////////////////////////////////////// + + public interface NavigationListener { + void onNavigationRequested(NavigationItem... navigationItems); + } + + + private List listeners = new ArrayList<>(); + private NavigationItem[] previousMainNavigationItems; + private NavigationItem[] currentNavigationItems; + + + /////////////////////////////////////////////////////////////////////////////////////////// + // Constructor + /////////////////////////////////////////////////////////////////////////////////////////// + + @Inject + public NavigationController() { + } + + /////////////////////////////////////////////////////////////////////////////////////////// + // Public methods + /////////////////////////////////////////////////////////////////////////////////////////// + + public void navigationTo(NavigationItem... navigationItems) { + previousMainNavigationItems = currentNavigationItems; + currentNavigationItems = navigationItems; + + listeners.stream().forEach((e) -> e.onNavigationRequested(currentNavigationItems)); + } + + + /////////////////////////////////////////////////////////////////////////////////////////// + // Listeners + /////////////////////////////////////////////////////////////////////////////////////////// + + public void addListener(NavigationListener listener) { + listeners.add(listener); + } + + public void removeListener(NavigationListener listener) { + listeners.remove(listener); + } + + + /////////////////////////////////////////////////////////////////////////////////////////// + // Getters + /////////////////////////////////////////////////////////////////////////////////////////// + + public NavigationItem[] getPreviousMainNavigationItems() { + return previousMainNavigationItems; + } + + public NavigationItem[] getCurrentNavigationItems() { + return currentNavigationItems; + } + +} diff --git a/src/main/java/io/bitsquare/gui/NavigationItem.java b/src/main/java/io/bitsquare/gui/NavigationItem.java index 43c6dba532..e7d60232a1 100644 --- a/src/main/java/io/bitsquare/gui/NavigationItem.java +++ b/src/main/java/io/bitsquare/gui/NavigationItem.java @@ -21,65 +21,102 @@ import io.bitsquare.gui.util.ImageUtil; public enum NavigationItem { - // app - MAIN("/io/bitsquare/gui/view/MainView.fxml"), + /////////////////////////////////////////////////////////////////////////////////////////// + // Application + /////////////////////////////////////////////////////////////////////////////////////////// - // main menu screens - HOME("/io/bitsquare/gui/home/HomeView.fxml", ImageUtil.HOME, ImageUtil.HOME_ACTIVE), - ORDERS("/io/bitsquare/gui/orders/OrdersView.fxml", ImageUtil.ORDERS, ImageUtil.ORDERS_ACTIVE), - FUNDS("/io/bitsquare/gui/funds/FundsView.fxml", ImageUtil.FUNDS, ImageUtil.FUNDS_ACTIVE), - MSG("/io/bitsquare/gui/msg/MsgView.fxml", ImageUtil.MSG, ImageUtil.MSG_ACTIVE), - SETTINGS("/io/bitsquare/gui/settings/SettingsView.fxml", ImageUtil.SETTINGS, ImageUtil.SETTINGS_ACTIVE), - ACCOUNT("/io/bitsquare/gui/view/AccountView.fxml", ImageUtil.ACCOUNT, ImageUtil.ACCOUNT_ACTIVE), + MAIN(0, "/io/bitsquare/gui/view/MainView.fxml"), - // trade - ORDER_BOOK("/io/bitsquare/gui/trade/orderbook/OrderBookView.fxml"), - BUY("/io/bitsquare/gui/trade/BuyView.fxml", ImageUtil.NAV_BUY, ImageUtil.NAV_BUY_ACTIVE), - SELL("/io/bitsquare/gui/trade/SellView.fxml", ImageUtil.NAV_SELL, ImageUtil.NAV_SELL_ACTIVE), - CREATE_OFFER("/io/bitsquare/gui/view/trade/CreateOfferView.fxml"), - TAKE_OFFER("/io/bitsquare/gui/trade/takeoffer/TakeOfferView.fxml"), + + /////////////////////////////////////////////////////////////////////////////////////////// + // Main menu screens + /////////////////////////////////////////////////////////////////////////////////////////// + + HOME(1, "/io/bitsquare/gui/home/HomeView.fxml", ImageUtil.HOME, ImageUtil.HOME_ACTIVE), + BUY(1, "/io/bitsquare/gui/trade/BuyView.fxml", ImageUtil.NAV_BUY, ImageUtil.NAV_BUY_ACTIVE), + SELL(1, "/io/bitsquare/gui/trade/SellView.fxml", ImageUtil.NAV_SELL, ImageUtil.NAV_SELL_ACTIVE), + ORDERS(1, "/io/bitsquare/gui/orders/OrdersView.fxml", ImageUtil.ORDERS, ImageUtil.ORDERS_ACTIVE), + FUNDS(1, "/io/bitsquare/gui/funds/FundsView.fxml", ImageUtil.FUNDS, ImageUtil.FUNDS_ACTIVE), + MSG(1, "/io/bitsquare/gui/msg/MsgView.fxml", ImageUtil.MSG, ImageUtil.MSG_ACTIVE), + SETTINGS(1, "/io/bitsquare/gui/settings/SettingsView.fxml", ImageUtil.SETTINGS, ImageUtil.SETTINGS_ACTIVE), + ACCOUNT(1, "/io/bitsquare/gui/view/AccountView.fxml", ImageUtil.ACCOUNT, ImageUtil.ACCOUNT_ACTIVE), + + + /////////////////////////////////////////////////////////////////////////////////////////// + // Sub menus + /////////////////////////////////////////////////////////////////////////////////////////// + + // buy/sell (trade) + ORDER_BOOK(2, "/io/bitsquare/gui/trade/orderbook/OrderBookView.fxml"), + CREATE_OFFER(2, "/io/bitsquare/gui/view/trade/CreateOfferView.fxml"), + TAKE_OFFER(2, "/io/bitsquare/gui/trade/takeoffer/TakeOfferView.fxml"), // orders - OFFER("/io/bitsquare/gui/orders/offer/OfferView.fxml"), - PENDING_TRADE("/io/bitsquare/gui/orders/pending/PendingTradeView.fxml"), - CLOSED_TRADE("/io/bitsquare/gui/orders/closed/ClosedTradeView.fxml"), + OFFER(2, "/io/bitsquare/gui/orders/offer/OfferView.fxml"), + PENDING_TRADE(2, "/io/bitsquare/gui/orders/pending/PendingTradeView.fxml"), + CLOSED_TRADE(2, "/io/bitsquare/gui/orders/closed/ClosedTradeView.fxml"), // funds - DEPOSIT("/io/bitsquare/gui/funds/deposit/DepositView.fxml"), - WITHDRAWAL("/io/bitsquare/gui/funds/withdrawal/WithdrawalView.fxml"), - TRANSACTIONS("/io/bitsquare/gui/funds/transactions/TransactionsView.fxml"), + DEPOSIT(2, "/io/bitsquare/gui/funds/deposit/DepositView.fxml"), + WITHDRAWAL(2, "/io/bitsquare/gui/funds/withdrawal/WithdrawalView.fxml"), + TRANSACTIONS(2, "/io/bitsquare/gui/funds/transactions/TransactionsView.fxml"), // account - ACCOUNT_SETUP("/io/bitsquare/gui/view/account/AccountSetupView.fxml"), - ACCOUNT_SETTINGS("/io/bitsquare/gui/view/account/AccountSettingsView.fxml"), + ACCOUNT_SETUP(2, "/io/bitsquare/gui/view/account/AccountSetupView.fxml"), + ACCOUNT_SETTINGS(2, "/io/bitsquare/gui/view/account/AccountSettingsView.fxml"), + + + /////////////////////////////////////////////////////////////////////////////////////////// + // Content in sub menus + /////////////////////////////////////////////////////////////////////////////////////////// // account content - SEED_WORDS("/io/bitsquare/gui/view/account/content/SeedWordsView.fxml"), - ADD_PASSWORD("/io/bitsquare/gui/view/account/content/PasswordView.fxml"), - CHANGE_PASSWORD("/io/bitsquare/gui/view/account/content/PasswordView.fxml"), - RESTRICTIONS("/io/bitsquare/gui/view/account/content/RestrictionsView.fxml"), - REGISTRATION("/io/bitsquare/gui/view/account/content/RegistrationView.fxml"), - FIAT_ACCOUNT("/io/bitsquare/gui/view/account/content/FiatAccountView.fxml"), + SEED_WORDS(3, "/io/bitsquare/gui/view/account/content/SeedWordsView.fxml"), + ADD_PASSWORD(3, "/io/bitsquare/gui/view/account/content/PasswordView.fxml"), + CHANGE_PASSWORD(3, "/io/bitsquare/gui/view/account/content/PasswordView.fxml"), + RESTRICTIONS(3, "/io/bitsquare/gui/view/account/content/RestrictionsView.fxml"), + REGISTRATION(3, "/io/bitsquare/gui/view/account/content/RegistrationView.fxml"), + FIAT_ACCOUNT(3, "/io/bitsquare/gui/view/account/content/FiatAccountView.fxml"), + + + /////////////////////////////////////////////////////////////////////////////////////////// + // Popups + /////////////////////////////////////////////////////////////////////////////////////////// // arbitrator - ARBITRATOR_PROFILE("/io/bitsquare/gui/arbitrators/profile/ArbitratorProfileView.fxml"), - ARBITRATOR_BROWSER("/io/bitsquare/gui/arbitrators/browser/ArbitratorBrowserView.fxml"), - ARBITRATOR_REGISTRATION("/io/bitsquare/gui/arbitrators/registration/ArbitratorRegistrationView.fxml"); + ARBITRATOR_PROFILE(2, "/io/bitsquare/gui/arbitrators/profile/ArbitratorProfileView.fxml"), + ARBITRATOR_BROWSER(-1, "/io/bitsquare/gui/arbitrators/browser/ArbitratorBrowserView.fxml"), + ARBITRATOR_REGISTRATION(-1, "/io/bitsquare/gui/arbitrators/registration/ArbitratorRegistrationView.fxml"); + + private int level; private final String fxmlUrl; private String icon; private String activeIcon; - NavigationItem(String fxmlUrl, String icon, String activeIcon) { + /** + * @param level The navigation hierarchy depth. 0 is main app level, 1 is main menu items, 2 is sub-menus, + * 3 content in sub-menus, -1 is popup window + * @param fxmlUrl + * @param icon + * @param activeIcon + */ + NavigationItem(int level, String fxmlUrl, String icon, String activeIcon) { + this.level = level; this.fxmlUrl = fxmlUrl; this.icon = icon; this.activeIcon = activeIcon; } - NavigationItem(String fxmlUrl) { + NavigationItem(int level, String fxmlUrl) { + this.level = level; this.fxmlUrl = fxmlUrl; } + public int getLevel() { + return level; + } + public String getFxmlUrl() { return fxmlUrl; } diff --git a/src/main/java/io/bitsquare/gui/OverlayController.java b/src/main/java/io/bitsquare/gui/OverlayController.java new file mode 100644 index 0000000000..97a02c7ef0 --- /dev/null +++ b/src/main/java/io/bitsquare/gui/OverlayController.java @@ -0,0 +1,63 @@ +/* + * This file is part of Bitsquare. + * + * Bitsquare is free software: you can redistribute it and/or modify it + * under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or (at + * your option) any later version. + * + * Bitsquare is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public + * License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Bitsquare. If not, see . + */ + +package io.bitsquare.gui; + +import com.google.inject.Inject; + +import java.util.ArrayList; +import java.util.List; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class OverlayController { + private static final Logger log = LoggerFactory.getLogger(OverlayController.class); + + private List listeners = new ArrayList<>(); + + + /////////////////////////////////////////////////////////////////////////////////////////// + // Constructor + /////////////////////////////////////////////////////////////////////////////////////////// + + @Inject + public OverlayController() { + } + + public void blurContent() { + listeners.stream().forEach((e) -> e.onBlurContentRequested()); + } + + public void removeBlurContent() { + listeners.stream().forEach((e) -> e.onRemoveBlurContentRequested()); + } + + public void addListener(OverlayListener listener) { + listeners.add(listener); + } + + public void removeListener(OverlayListener listener) { + listeners.remove(listener); + } + + public interface OverlayListener { + void onBlurContentRequested(); + + void onRemoveBlurContentRequested(); + } +} diff --git a/src/main/java/io/bitsquare/gui/ViewController.java b/src/main/java/io/bitsquare/gui/ViewController.java index 27ed4d019c..eebd3fdc64 100644 --- a/src/main/java/io/bitsquare/gui/ViewController.java +++ b/src/main/java/io/bitsquare/gui/ViewController.java @@ -17,6 +17,8 @@ package io.bitsquare.gui; +import io.bitsquare.gui.view.CodeBehind; + import java.net.URL; import java.util.ResourceBundle; diff --git a/src/main/java/io/bitsquare/gui/components/Popups.java b/src/main/java/io/bitsquare/gui/components/Popups.java index c2e0ce639f..1c71971c93 100644 --- a/src/main/java/io/bitsquare/gui/components/Popups.java +++ b/src/main/java/io/bitsquare/gui/components/Popups.java @@ -18,7 +18,7 @@ package io.bitsquare.gui.components; import io.bitsquare.BitSquare; -import io.bitsquare.gui.view.MainViewCB; +import io.bitsquare.gui.OverlayController; import io.bitsquare.locale.BSResources; import com.google.bitcoin.store.BlockStoreException; @@ -49,6 +49,13 @@ import org.slf4j.LoggerFactory; public class Popups { private static final Logger log = LoggerFactory.getLogger(Popups.class); + // TODO just temporary, class will be removed completely + public static void setOverlayController(OverlayController overlayController) { + Popups.overlayController = overlayController; + } + + private static OverlayController overlayController; + // Information public static void openInfo(String message) { openInfo(message, null, null); @@ -56,7 +63,7 @@ public class Popups { // Supports blurring the content background public static void openInfo(String message, String masthead) { - MainViewCB.getInstance().blurContentScreen(); + overlayController.blurContent(); List actions = new ArrayList<>(); // Dialogs are a bit limited. There is no callback for the InformationDialog button click, so we added @@ -65,7 +72,7 @@ public class Popups { @Override public void handle(ActionEvent actionEvent) { Dialog.Actions.CLOSE.handle(actionEvent); - MainViewCB.getInstance().removeContentScreenBlur(); + overlayController.removeBlurContent(); } }); openInfo(message, masthead, actions); diff --git a/src/main/java/io/bitsquare/gui/components/btc/AddressTextField.java b/src/main/java/io/bitsquare/gui/components/btc/AddressTextField.java index 72ac783730..fb3f0a7183 100644 --- a/src/main/java/io/bitsquare/gui/components/btc/AddressTextField.java +++ b/src/main/java/io/bitsquare/gui/components/btc/AddressTextField.java @@ -17,8 +17,8 @@ package io.bitsquare.gui.components.btc; +import io.bitsquare.gui.OverlayController; import io.bitsquare.gui.components.Popups; -import io.bitsquare.gui.view.MainViewCB; import com.google.bitcoin.core.Coin; import com.google.bitcoin.uri.BitcoinURI; @@ -60,6 +60,7 @@ public class AddressTextField extends AnchorPane { private final StringProperty address = new SimpleStringProperty(); private final StringProperty paymentLabel = new SimpleStringProperty(); public final ObjectProperty amountAsCoin = new SimpleObjectProperty<>(); + private OverlayController overlayController; /////////////////////////////////////////////////////////////////////////////////////////// @@ -67,7 +68,6 @@ public class AddressTextField extends AnchorPane { /////////////////////////////////////////////////////////////////////////////////////////// public AddressTextField() { - TextField addressLabel = new TextField(); addressLabel.setId("address-text-field"); addressLabel.setEditable(false); @@ -124,13 +124,17 @@ public class AddressTextField extends AnchorPane { PopOver popOver = new PopOver(pane); popOver.setDetachedTitle("Scan QR code for this address"); popOver.setDetached(true); - popOver.setOnHiding(windowEvent -> MainViewCB.getInstance().removeContentScreenBlur()); + popOver.setOnHiding(windowEvent -> { + if (overlayController != null) + overlayController.removeBlurContent(); + }); Window window = getScene().getWindow(); double x = Math.round(window.getX() + (window.getWidth() - 320) / 2); double y = Math.round(window.getY() + (window.getHeight() - 240) / 2); popOver.show(getScene().getWindow(), x, y); - MainViewCB.getInstance().blurContentScreen(); + if (overlayController != null) + overlayController.blurContent(); } }); @@ -183,6 +187,11 @@ public class AddressTextField extends AnchorPane { this.paymentLabel.set(paymentLabel); } + // TODO find better solution + public void setOverlayController(OverlayController overlayController) { + this.overlayController = overlayController; + } + /////////////////////////////////////////////////////////////////////////////////////////// // Private diff --git a/src/main/java/io/bitsquare/gui/model/AccountModel.java b/src/main/java/io/bitsquare/gui/model/AccountModel.java index 5bc42cfbcd..3469801385 100644 --- a/src/main/java/io/bitsquare/gui/model/AccountModel.java +++ b/src/main/java/io/bitsquare/gui/model/AccountModel.java @@ -17,7 +17,6 @@ package io.bitsquare.gui.model; -import io.bitsquare.gui.UIModel; import io.bitsquare.user.User; import com.google.inject.Inject; diff --git a/src/main/java/io/bitsquare/gui/model/MainModel.java b/src/main/java/io/bitsquare/gui/model/MainModel.java index 17901192d3..9fa24ca531 100644 --- a/src/main/java/io/bitsquare/gui/model/MainModel.java +++ b/src/main/java/io/bitsquare/gui/model/MainModel.java @@ -21,7 +21,6 @@ import io.bitsquare.bank.BankAccount; import io.bitsquare.btc.WalletFacade; import io.bitsquare.btc.listeners.BalanceListener; import io.bitsquare.gui.NavigationItem; -import io.bitsquare.gui.UIModel; import io.bitsquare.gui.util.Profiler; import io.bitsquare.msg.MessageFacade; import io.bitsquare.msg.listeners.BootstrapListener; @@ -166,14 +165,12 @@ public class MainModel extends UIModel { return user.currentBankAccountProperty(); } - public NavigationItem getSelectedNavigationItem() { - NavigationItem selectedNavigationItem = (NavigationItem) persistence.read(this, "selectedNavigationItem"); - // Set default - // TODO set HOME later - if (selectedNavigationItem == null) - selectedNavigationItem = NavigationItem.BUY; + public NavigationItem[] getSelectedNavigationItems() { + NavigationItem[] selectedNavigationItems = (NavigationItem[]) persistence.read(this, "selectedNavigationItems"); + if (selectedNavigationItems == null || selectedNavigationItems.length == 0) + selectedNavigationItems = new NavigationItem[]{NavigationItem.BUY}; - return selectedNavigationItem; + return selectedNavigationItems; } diff --git a/src/main/java/io/bitsquare/gui/UIModel.java b/src/main/java/io/bitsquare/gui/model/UIModel.java similarity index 91% rename from src/main/java/io/bitsquare/gui/UIModel.java rename to src/main/java/io/bitsquare/gui/model/UIModel.java index 43143b39b9..31f80234c0 100644 --- a/src/main/java/io/bitsquare/gui/UIModel.java +++ b/src/main/java/io/bitsquare/gui/model/UIModel.java @@ -1,4 +1,4 @@ -package io.bitsquare.gui; +package io.bitsquare.gui.model; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/main/java/io/bitsquare/gui/model/account/AccountSettingsModel.java b/src/main/java/io/bitsquare/gui/model/account/AccountSettingsModel.java index 879f93e38f..62b0c0f7b9 100644 --- a/src/main/java/io/bitsquare/gui/model/account/AccountSettingsModel.java +++ b/src/main/java/io/bitsquare/gui/model/account/AccountSettingsModel.java @@ -17,7 +17,7 @@ package io.bitsquare.gui.model.account; -import io.bitsquare.gui.UIModel; +import io.bitsquare.gui.model.UIModel; import com.google.inject.Inject; diff --git a/src/main/java/io/bitsquare/gui/model/account/AccountSetupModel.java b/src/main/java/io/bitsquare/gui/model/account/AccountSetupModel.java index 6cdfa2ccab..9db73d1593 100644 --- a/src/main/java/io/bitsquare/gui/model/account/AccountSetupModel.java +++ b/src/main/java/io/bitsquare/gui/model/account/AccountSetupModel.java @@ -17,7 +17,7 @@ package io.bitsquare.gui.model.account; -import io.bitsquare.gui.UIModel; +import io.bitsquare.gui.model.UIModel; import com.google.inject.Inject; diff --git a/src/main/java/io/bitsquare/gui/model/account/content/ChangePasswordModel.java b/src/main/java/io/bitsquare/gui/model/account/content/ChangePasswordModel.java index a08ee94652..90d57e5d04 100644 --- a/src/main/java/io/bitsquare/gui/model/account/content/ChangePasswordModel.java +++ b/src/main/java/io/bitsquare/gui/model/account/content/ChangePasswordModel.java @@ -17,7 +17,7 @@ package io.bitsquare.gui.model.account.content; -import io.bitsquare.gui.UIModel; +import io.bitsquare.gui.model.UIModel; import com.google.inject.Inject; diff --git a/src/main/java/io/bitsquare/gui/model/account/content/FiatAccountModel.java b/src/main/java/io/bitsquare/gui/model/account/content/FiatAccountModel.java index 2301d21cbf..70781856bc 100644 --- a/src/main/java/io/bitsquare/gui/model/account/content/FiatAccountModel.java +++ b/src/main/java/io/bitsquare/gui/model/account/content/FiatAccountModel.java @@ -19,7 +19,7 @@ package io.bitsquare.gui.model.account.content; import io.bitsquare.bank.BankAccount; import io.bitsquare.bank.BankAccountType; -import io.bitsquare.gui.UIModel; +import io.bitsquare.gui.model.UIModel; import io.bitsquare.locale.Country; import io.bitsquare.locale.CountryUtil; import io.bitsquare.locale.CurrencyUtil; diff --git a/src/main/java/io/bitsquare/gui/model/account/content/PasswordModel.java b/src/main/java/io/bitsquare/gui/model/account/content/PasswordModel.java index efb28605c5..c7c7d0ca3a 100644 --- a/src/main/java/io/bitsquare/gui/model/account/content/PasswordModel.java +++ b/src/main/java/io/bitsquare/gui/model/account/content/PasswordModel.java @@ -17,7 +17,7 @@ package io.bitsquare.gui.model.account.content; -import io.bitsquare.gui.UIModel; +import io.bitsquare.gui.model.UIModel; import com.google.inject.Inject; diff --git a/src/main/java/io/bitsquare/gui/model/account/content/RegistrationModel.java b/src/main/java/io/bitsquare/gui/model/account/content/RegistrationModel.java index 41400df9d8..deba7573c1 100644 --- a/src/main/java/io/bitsquare/gui/model/account/content/RegistrationModel.java +++ b/src/main/java/io/bitsquare/gui/model/account/content/RegistrationModel.java @@ -21,7 +21,7 @@ import io.bitsquare.btc.AddressEntry; import io.bitsquare.btc.FeePolicy; import io.bitsquare.btc.WalletFacade; import io.bitsquare.btc.listeners.BalanceListener; -import io.bitsquare.gui.UIModel; +import io.bitsquare.gui.model.UIModel; import io.bitsquare.persistence.Persistence; import io.bitsquare.user.User; diff --git a/src/main/java/io/bitsquare/gui/model/account/content/RestrictionsModel.java b/src/main/java/io/bitsquare/gui/model/account/content/RestrictionsModel.java index 9cbe7ffbda..5cc56ac285 100644 --- a/src/main/java/io/bitsquare/gui/model/account/content/RestrictionsModel.java +++ b/src/main/java/io/bitsquare/gui/model/account/content/RestrictionsModel.java @@ -19,7 +19,7 @@ package io.bitsquare.gui.model.account.content; import io.bitsquare.arbitrator.Arbitrator; import io.bitsquare.arbitrator.Reputation; -import io.bitsquare.gui.UIModel; +import io.bitsquare.gui.model.UIModel; import io.bitsquare.locale.Country; import io.bitsquare.locale.CountryUtil; import io.bitsquare.locale.LanguageUtil; diff --git a/src/main/java/io/bitsquare/gui/model/account/content/SeedWordsModel.java b/src/main/java/io/bitsquare/gui/model/account/content/SeedWordsModel.java index 031046affd..71a8625729 100644 --- a/src/main/java/io/bitsquare/gui/model/account/content/SeedWordsModel.java +++ b/src/main/java/io/bitsquare/gui/model/account/content/SeedWordsModel.java @@ -18,7 +18,7 @@ package io.bitsquare.gui.model.account.content; import io.bitsquare.btc.WalletFacade; -import io.bitsquare.gui.UIModel; +import io.bitsquare.gui.model.UIModel; import com.google.inject.Inject; diff --git a/src/main/java/io/bitsquare/gui/model/trade/CreateOfferModel.java b/src/main/java/io/bitsquare/gui/model/trade/CreateOfferModel.java index 74a9139aab..fed5378149 100644 --- a/src/main/java/io/bitsquare/gui/model/trade/CreateOfferModel.java +++ b/src/main/java/io/bitsquare/gui/model/trade/CreateOfferModel.java @@ -23,7 +23,7 @@ import io.bitsquare.btc.AddressEntry; import io.bitsquare.btc.FeePolicy; import io.bitsquare.btc.WalletFacade; import io.bitsquare.btc.listeners.BalanceListener; -import io.bitsquare.gui.UIModel; +import io.bitsquare.gui.model.UIModel; import io.bitsquare.locale.Country; import io.bitsquare.settings.Settings; import io.bitsquare.trade.Direction; diff --git a/src/main/java/io/bitsquare/gui/pm/AccountPM.java b/src/main/java/io/bitsquare/gui/pm/AccountPM.java index bd4d745add..5a96c2b708 100644 --- a/src/main/java/io/bitsquare/gui/pm/AccountPM.java +++ b/src/main/java/io/bitsquare/gui/pm/AccountPM.java @@ -17,7 +17,6 @@ package io.bitsquare.gui.pm; -import io.bitsquare.gui.PresentationModel; import io.bitsquare.gui.model.AccountModel; import com.google.inject.Inject; diff --git a/src/main/java/io/bitsquare/gui/pm/MainPM.java b/src/main/java/io/bitsquare/gui/pm/MainPM.java index 50c5aa7931..e74627ba47 100644 --- a/src/main/java/io/bitsquare/gui/pm/MainPM.java +++ b/src/main/java/io/bitsquare/gui/pm/MainPM.java @@ -19,7 +19,6 @@ package io.bitsquare.gui.pm; import io.bitsquare.bank.BankAccount; import io.bitsquare.gui.NavigationItem; -import io.bitsquare.gui.PresentationModel; import io.bitsquare.gui.model.MainModel; import io.bitsquare.gui.util.BSFormatter; @@ -137,8 +136,8 @@ public class MainPM extends PresentationModel { // Getters /////////////////////////////////////////////////////////////////////////////////////////// - public NavigationItem getSelectedNavigationItem() { - return model.getSelectedNavigationItem(); + public NavigationItem[] getSelectedNavigationItems() { + return model.getSelectedNavigationItems(); } public ObservableList getBankAccounts() { diff --git a/src/main/java/io/bitsquare/gui/PresentationModel.java b/src/main/java/io/bitsquare/gui/pm/PresentationModel.java similarity index 87% rename from src/main/java/io/bitsquare/gui/PresentationModel.java rename to src/main/java/io/bitsquare/gui/pm/PresentationModel.java index 75c2bf2db7..a81e0eb26a 100644 --- a/src/main/java/io/bitsquare/gui/PresentationModel.java +++ b/src/main/java/io/bitsquare/gui/pm/PresentationModel.java @@ -1,4 +1,6 @@ -package io.bitsquare.gui; +package io.bitsquare.gui.pm; + +import io.bitsquare.gui.model.UIModel; public class PresentationModel { diff --git a/src/main/java/io/bitsquare/gui/pm/account/AccountSettingsPM.java b/src/main/java/io/bitsquare/gui/pm/account/AccountSettingsPM.java index 2d1144f097..8f6d2e05f4 100644 --- a/src/main/java/io/bitsquare/gui/pm/account/AccountSettingsPM.java +++ b/src/main/java/io/bitsquare/gui/pm/account/AccountSettingsPM.java @@ -17,8 +17,8 @@ package io.bitsquare.gui.pm.account; -import io.bitsquare.gui.PresentationModel; import io.bitsquare.gui.model.account.AccountSettingsModel; +import io.bitsquare.gui.pm.PresentationModel; import com.google.inject.Inject; diff --git a/src/main/java/io/bitsquare/gui/pm/account/AccountSetupPM.java b/src/main/java/io/bitsquare/gui/pm/account/AccountSetupPM.java index 146d9d58ba..4c39c9b262 100644 --- a/src/main/java/io/bitsquare/gui/pm/account/AccountSetupPM.java +++ b/src/main/java/io/bitsquare/gui/pm/account/AccountSetupPM.java @@ -17,8 +17,8 @@ package io.bitsquare.gui.pm.account; -import io.bitsquare.gui.PresentationModel; import io.bitsquare.gui.model.account.AccountSetupModel; +import io.bitsquare.gui.pm.PresentationModel; import com.google.inject.Inject; diff --git a/src/main/java/io/bitsquare/gui/pm/account/content/ChangePasswordPM.java b/src/main/java/io/bitsquare/gui/pm/account/content/ChangePasswordPM.java index 1579f23404..0c8517dbc5 100644 --- a/src/main/java/io/bitsquare/gui/pm/account/content/ChangePasswordPM.java +++ b/src/main/java/io/bitsquare/gui/pm/account/content/ChangePasswordPM.java @@ -17,8 +17,8 @@ package io.bitsquare.gui.pm.account.content; -import io.bitsquare.gui.PresentationModel; import io.bitsquare.gui.model.account.content.ChangePasswordModel; +import io.bitsquare.gui.pm.PresentationModel; import io.bitsquare.gui.util.validation.InputValidator; import io.bitsquare.gui.util.validation.PasswordValidator; diff --git a/src/main/java/io/bitsquare/gui/pm/account/content/FiatAccountPm.java b/src/main/java/io/bitsquare/gui/pm/account/content/FiatAccountPm.java index 7833bd4306..2bda8af514 100644 --- a/src/main/java/io/bitsquare/gui/pm/account/content/FiatAccountPm.java +++ b/src/main/java/io/bitsquare/gui/pm/account/content/FiatAccountPm.java @@ -19,8 +19,8 @@ package io.bitsquare.gui.pm.account.content; import io.bitsquare.bank.BankAccount; import io.bitsquare.bank.BankAccountType; -import io.bitsquare.gui.PresentationModel; import io.bitsquare.gui.model.account.content.FiatAccountModel; +import io.bitsquare.gui.pm.PresentationModel; import io.bitsquare.gui.util.validation.BankAccountNumberValidator; import io.bitsquare.gui.util.validation.InputValidator; import io.bitsquare.locale.BSResources; diff --git a/src/main/java/io/bitsquare/gui/pm/account/content/PasswordPM.java b/src/main/java/io/bitsquare/gui/pm/account/content/PasswordPM.java index 2f8b5f0acd..c183e3999a 100644 --- a/src/main/java/io/bitsquare/gui/pm/account/content/PasswordPM.java +++ b/src/main/java/io/bitsquare/gui/pm/account/content/PasswordPM.java @@ -17,8 +17,8 @@ package io.bitsquare.gui.pm.account.content; -import io.bitsquare.gui.PresentationModel; import io.bitsquare.gui.model.account.content.PasswordModel; +import io.bitsquare.gui.pm.PresentationModel; import io.bitsquare.gui.util.validation.InputValidator; import io.bitsquare.gui.util.validation.PasswordValidator; diff --git a/src/main/java/io/bitsquare/gui/pm/account/content/RegistrationPM.java b/src/main/java/io/bitsquare/gui/pm/account/content/RegistrationPM.java index db4fe4164f..8aad7ccc25 100644 --- a/src/main/java/io/bitsquare/gui/pm/account/content/RegistrationPM.java +++ b/src/main/java/io/bitsquare/gui/pm/account/content/RegistrationPM.java @@ -18,8 +18,8 @@ package io.bitsquare.gui.pm.account.content; import io.bitsquare.btc.WalletFacade; -import io.bitsquare.gui.PresentationModel; import io.bitsquare.gui.model.account.content.RegistrationModel; +import io.bitsquare.gui.pm.PresentationModel; import io.bitsquare.locale.BSResources; import com.google.bitcoin.core.Address; diff --git a/src/main/java/io/bitsquare/gui/pm/account/content/RestrictionsPM.java b/src/main/java/io/bitsquare/gui/pm/account/content/RestrictionsPM.java index cf950bd5c2..60f84698e9 100644 --- a/src/main/java/io/bitsquare/gui/pm/account/content/RestrictionsPM.java +++ b/src/main/java/io/bitsquare/gui/pm/account/content/RestrictionsPM.java @@ -18,8 +18,8 @@ package io.bitsquare.gui.pm.account.content; import io.bitsquare.arbitrator.Arbitrator; -import io.bitsquare.gui.PresentationModel; import io.bitsquare.gui.model.account.content.RestrictionsModel; +import io.bitsquare.gui.pm.PresentationModel; import io.bitsquare.locale.Country; import io.bitsquare.locale.Region; diff --git a/src/main/java/io/bitsquare/gui/pm/account/content/SeedWordsPM.java b/src/main/java/io/bitsquare/gui/pm/account/content/SeedWordsPM.java index adf7d3e336..660effba06 100644 --- a/src/main/java/io/bitsquare/gui/pm/account/content/SeedWordsPM.java +++ b/src/main/java/io/bitsquare/gui/pm/account/content/SeedWordsPM.java @@ -17,8 +17,8 @@ package io.bitsquare.gui.pm.account.content; -import io.bitsquare.gui.PresentationModel; import io.bitsquare.gui.model.account.content.SeedWordsModel; +import io.bitsquare.gui.pm.PresentationModel; import io.bitsquare.gui.util.BSFormatter; import com.google.inject.Inject; diff --git a/src/main/java/io/bitsquare/gui/pm/trade/CreateOfferPM.java b/src/main/java/io/bitsquare/gui/pm/trade/CreateOfferPM.java index 22ec87409d..d346abdd6b 100644 --- a/src/main/java/io/bitsquare/gui/pm/trade/CreateOfferPM.java +++ b/src/main/java/io/bitsquare/gui/pm/trade/CreateOfferPM.java @@ -18,8 +18,8 @@ package io.bitsquare.gui.pm.trade; import io.bitsquare.btc.WalletFacade; -import io.bitsquare.gui.PresentationModel; import io.bitsquare.gui.model.trade.CreateOfferModel; +import io.bitsquare.gui.pm.PresentationModel; import io.bitsquare.gui.util.BSFormatter; import io.bitsquare.gui.util.validation.BtcValidator; import io.bitsquare.gui.util.validation.FiatValidator; diff --git a/src/main/java/io/bitsquare/gui/trade/orderbook/OrderBookController.java b/src/main/java/io/bitsquare/gui/trade/orderbook/OrderBookController.java index 3e8972c247..963d4569b8 100644 --- a/src/main/java/io/bitsquare/gui/trade/orderbook/OrderBookController.java +++ b/src/main/java/io/bitsquare/gui/trade/orderbook/OrderBookController.java @@ -20,14 +20,15 @@ package io.bitsquare.gui.trade.orderbook; import io.bitsquare.bank.BankAccountType; import io.bitsquare.btc.WalletFacade; import io.bitsquare.gui.CachedViewController; -import io.bitsquare.gui.CodeBehind; +import io.bitsquare.gui.NavigationController; import io.bitsquare.gui.NavigationItem; +import io.bitsquare.gui.OverlayController; import io.bitsquare.gui.ViewController; import io.bitsquare.gui.components.Popups; import io.bitsquare.gui.trade.takeoffer.TakeOfferController; import io.bitsquare.gui.util.BSFormatter; import io.bitsquare.gui.util.ImageUtil; -import io.bitsquare.gui.view.MainViewCB; +import io.bitsquare.gui.view.CodeBehind; import io.bitsquare.gui.view.trade.CreateOfferViewCB; import io.bitsquare.locale.BSResources; import io.bitsquare.locale.Country; @@ -85,6 +86,8 @@ import org.slf4j.LoggerFactory; public class OrderBookController extends CachedViewController { private static final Logger log = LoggerFactory.getLogger(OrderBookController.class); + private NavigationController navigationController; + private OverlayController overlayController; private final OrderBook orderBook; private final OrderBookFilter orderBookFilter; private final User user; @@ -112,8 +115,13 @@ public class OrderBookController extends CachedViewController { /////////////////////////////////////////////////////////////////////////////////////////// @Inject - private OrderBookController(OrderBook orderBook, User user, MessageFacade messageFacade, + private OrderBookController(NavigationController navigationController, + OverlayController overlayController, + OrderBook orderBook, User user, + MessageFacade messageFacade, WalletFacade walletFacade, Settings settings, Persistence persistence) { + this.navigationController = navigationController; + this.overlayController = overlayController; this.orderBook = orderBook; this.user = user; this.messageFacade = messageFacade; @@ -269,19 +277,14 @@ public class OrderBookController extends CachedViewController { private void openSetupScreen() { - - MainViewCB.getInstance().blurContentScreen(); + overlayController.blurContent(); List actions = new ArrayList<>(); actions.add(new AbstractAction(BSResources.get("shared.ok")) { @Override public void handle(ActionEvent actionEvent) { Dialog.Actions.OK.handle(actionEvent); - MainViewCB.getInstance().removeContentScreenBlur(); - - MainViewCB.getInstance().triggerMainMenuButton(NavigationItem.ACCOUNT); - MainViewCB.getInstance() - .setPreviousNavigationItem((orderBookFilter.getDirection() == Direction.BUY) ? - NavigationItem.BUY : NavigationItem.SELL); + overlayController.removeBlurContent(); + navigationController.navigationTo(NavigationItem.ACCOUNT, NavigationItem.ACCOUNT_SETUP); } }); Popups.openInfo("You need to setup your trading account before you can trade.", diff --git a/src/main/java/io/bitsquare/gui/util/Transitions.java b/src/main/java/io/bitsquare/gui/util/Transitions.java index 456dd0057c..c91dcc04c3 100644 --- a/src/main/java/io/bitsquare/gui/util/Transitions.java +++ b/src/main/java/io/bitsquare/gui/util/Transitions.java @@ -106,25 +106,27 @@ public class Transitions { } public static void removeBlur(Node node, int duration, boolean useDarken) { - GaussianBlur blur = (GaussianBlur) node.getEffect(); - Timeline timeline = new Timeline(); + if (node != null) { + GaussianBlur blur = (GaussianBlur) node.getEffect(); + Timeline timeline = new Timeline(); - KeyValue kv1 = new KeyValue(blur.radiusProperty(), 0.0); - KeyFrame kf1 = new KeyFrame(Duration.millis(DURATION), kv1); + KeyValue kv1 = new KeyValue(blur.radiusProperty(), 0.0); + KeyFrame kf1 = new KeyFrame(Duration.millis(DURATION), kv1); - if (useDarken) { - ColorAdjust darken = (ColorAdjust) blur.getInput(); + if (useDarken) { + ColorAdjust darken = (ColorAdjust) blur.getInput(); - KeyValue kv2 = new KeyValue(darken.brightnessProperty(), 0.0); - KeyFrame kf2 = new KeyFrame(Duration.millis(duration), kv2); - timeline.getKeyFrames().addAll(kf1, kf2); + KeyValue kv2 = new KeyValue(darken.brightnessProperty(), 0.0); + KeyFrame kf2 = new KeyFrame(Duration.millis(duration), kv2); + timeline.getKeyFrames().addAll(kf1, kf2); + } + else { + timeline.getKeyFrames().addAll(kf1); + } + + timeline.setOnFinished(actionEvent -> node.setEffect(null)); + timeline.play(); } - else { - timeline.getKeyFrames().addAll(kf1); - } - - timeline.setOnFinished(actionEvent -> node.setEffect(null)); - timeline.play(); } } diff --git a/src/main/java/io/bitsquare/gui/view/AccountViewCB.java b/src/main/java/io/bitsquare/gui/view/AccountViewCB.java index a85941dd72..cec865ccbc 100644 --- a/src/main/java/io/bitsquare/gui/view/AccountViewCB.java +++ b/src/main/java/io/bitsquare/gui/view/AccountViewCB.java @@ -17,8 +17,7 @@ package io.bitsquare.gui.view; -import io.bitsquare.gui.CachedCodeBehind; -import io.bitsquare.gui.CodeBehind; +import io.bitsquare.gui.NavigationController; import io.bitsquare.gui.NavigationItem; import io.bitsquare.gui.pm.AccountPM; import io.bitsquare.gui.view.account.AccountSetupViewCB; @@ -44,6 +43,7 @@ public class AccountViewCB extends CachedCodeBehind { private static final Logger log = LoggerFactory.getLogger(AccountViewCB.class); public Tab tab; + private NavigationController navigationController; /////////////////////////////////////////////////////////////////////////////////////////// @@ -51,8 +51,9 @@ public class AccountViewCB extends CachedCodeBehind { /////////////////////////////////////////////////////////////////////////////////////////// @Inject - private AccountViewCB(AccountPM presentationModel) { + private AccountViewCB(AccountPM presentationModel, NavigationController navigationController) { super(presentationModel); + this.navigationController = navigationController; } @@ -131,11 +132,7 @@ public class AccountViewCB extends CachedCodeBehind { private void removeSetup() { childController = null; - NavigationItem previousItem = MainViewCB.getInstance().getPreviousNavigationItem(); - if (previousItem == null) - previousItem = NavigationItem.HOME; - - MainViewCB.getInstance().triggerMainMenuButton(previousItem); + navigationController.navigationTo(navigationController.getPreviousMainNavigationItems()); } } diff --git a/src/main/java/io/bitsquare/gui/CachedCodeBehind.java b/src/main/java/io/bitsquare/gui/view/CachedCodeBehind.java similarity index 97% rename from src/main/java/io/bitsquare/gui/CachedCodeBehind.java rename to src/main/java/io/bitsquare/gui/view/CachedCodeBehind.java index 6538388f4a..e84b80e695 100644 --- a/src/main/java/io/bitsquare/gui/CachedCodeBehind.java +++ b/src/main/java/io/bitsquare/gui/view/CachedCodeBehind.java @@ -1,4 +1,6 @@ -package io.bitsquare.gui; +package io.bitsquare.gui.view; + +import io.bitsquare.gui.pm.PresentationModel; import java.net.URL; diff --git a/src/main/java/io/bitsquare/gui/CodeBehind.java b/src/main/java/io/bitsquare/gui/view/CodeBehind.java similarity index 96% rename from src/main/java/io/bitsquare/gui/CodeBehind.java rename to src/main/java/io/bitsquare/gui/view/CodeBehind.java index 74330f994c..a8e919a245 100644 --- a/src/main/java/io/bitsquare/gui/CodeBehind.java +++ b/src/main/java/io/bitsquare/gui/view/CodeBehind.java @@ -1,4 +1,7 @@ -package io.bitsquare.gui; +package io.bitsquare.gui.view; + +import io.bitsquare.gui.NavigationItem; +import io.bitsquare.gui.pm.PresentationModel; import java.net.URL; diff --git a/src/main/java/io/bitsquare/gui/view/MainViewCB.java b/src/main/java/io/bitsquare/gui/view/MainViewCB.java index 5c171c0c9d..7aab5672cb 100644 --- a/src/main/java/io/bitsquare/gui/view/MainViewCB.java +++ b/src/main/java/io/bitsquare/gui/view/MainViewCB.java @@ -18,11 +18,11 @@ package io.bitsquare.gui.view; import io.bitsquare.bank.BankAccount; -import io.bitsquare.gui.CachedCodeBehind; -import io.bitsquare.gui.CodeBehind; +import io.bitsquare.gui.NavigationController; import io.bitsquare.gui.NavigationItem; +import io.bitsquare.gui.OverlayController; import io.bitsquare.gui.components.NetworkSyncPane; -import io.bitsquare.gui.orders.OrdersController; +import io.bitsquare.gui.components.Popups; import io.bitsquare.gui.pm.MainPM; import io.bitsquare.gui.util.ImageUtil; import io.bitsquare.gui.util.Profiler; @@ -53,33 +53,23 @@ import org.slf4j.LoggerFactory; public class MainViewCB extends CachedCodeBehind { private static final Logger log = LoggerFactory.getLogger(MainViewCB.class); - //TODO - private static MainViewCB instance; - private VBox baseOverlayContainer; private final ToggleGroup navButtonsGroup = new ToggleGroup(); - private NavigationItem previousNavigationItem; + private NavigationItem mainNavigationItem; - private AnchorPane contentPane; + private BorderPane baseApplicationContainer; + private VBox baseOverlayContainer; + private AnchorPane applicationContainer; + private AnchorPane contentContainer; private HBox leftNavPane, rightNavPane; private NetworkSyncPane networkSyncPane; - private BorderPane baseContentContainer; - private AnchorPane contentScreen; private MenuBar menuBar; private Label loadingLabel; private ToggleButton buyButton, sellButton, homeButton, msgButton, ordersButton, fundsButton, settingsButton, accountButton; private Pane ordersButtonButtonPane; - - - /////////////////////////////////////////////////////////////////////////////////////////// - // Static - /////////////////////////////////////////////////////////////////////////////////////////// - - //TODO - public static MainViewCB getInstance() { - return instance; - } + private NavigationController navigationController; + private OverlayController overlayController; /////////////////////////////////////////////////////////////////////////////////////////// @@ -87,11 +77,41 @@ public class MainViewCB extends CachedCodeBehind { /////////////////////////////////////////////////////////////////////////////////////////// @Inject - private MainViewCB(MainPM presentationModel) { + private MainViewCB(MainPM presentationModel, NavigationController navigationController, + OverlayController overlayController) { super(presentationModel); + this.navigationController = navigationController; + this.overlayController = overlayController; - //TODO - MainViewCB.instance = this; + // just temp. ugly hack... Popups will be removed + Popups.setOverlayController(overlayController); + + navigationController.addListener(navigationItems -> { + if (navigationItems != null && navigationItems.length > 0) { + NavigationItem navigationItem = navigationItems[0]; + if (navigationItem.getLevel() == 1) { + mainNavigationItem = navigationItem; + loadView(mainNavigationItem); + selectMainMenuButton(mainNavigationItem); + } + } + else { + mainNavigationItem = NavigationItem.HOME; + loadView(mainNavigationItem); + selectMainMenuButton(mainNavigationItem); + } + }); + overlayController.addListener(new OverlayController.OverlayListener() { + @Override + public void onBlurContentRequested() { + Transitions.blur(baseApplicationContainer); + } + + @Override + public void onRemoveBlurContentRequested() { + Transitions.removeBlur(baseApplicationContainer); + } + }); } @@ -130,34 +150,36 @@ public class MainViewCB extends CachedCodeBehind { // Navigation /////////////////////////////////////////////////////////////////////////////////////////// - public Initializable triggerMainMenuButton(NavigationItem navigationItem) { + public void selectMainMenuButton(NavigationItem navigationItem) { switch (navigationItem) { case HOME: - homeButton.fire(); + homeButton.setSelected(true); break; case FUNDS: - fundsButton.fire(); + fundsButton.setSelected(true); break; case MSG: - msgButton.fire(); + msgButton.setSelected(true); break; case ORDERS: - ordersButton.fire(); + ordersButton.setSelected(true); break; case SETTINGS: - settingsButton.fire(); + settingsButton.setSelected(true); break; case SELL: - sellButton.fire(); + sellButton.setSelected(true); break; case BUY: - buyButton.fire(); + buyButton.setSelected(true); break; case ACCOUNT: - accountButton.fire(); + accountButton.setSelected(true); + break; + default: + log.error(navigationItem.getFxmlUrl() + " is no main navigation item"); break; } - return childController; } @Override @@ -167,7 +189,7 @@ public class MainViewCB extends CachedCodeBehind { final BSFXMLLoader loader = new BSFXMLLoader(getClass().getResource(navigationItem.getFxmlUrl())); try { final Node view = loader.load(); - contentPane.getChildren().setAll(view); + contentContainer.getChildren().setAll(view); childController = loader.getController(); if (childController instanceof CodeBehind) @@ -182,36 +204,15 @@ public class MainViewCB extends CachedCodeBehind { return null; } - public void setPreviousNavigationItem(NavigationItem previousNavigationItem) { - this.previousNavigationItem = previousNavigationItem; - } - - public NavigationItem getPreviousNavigationItem() { - return previousNavigationItem; - } - - - /////////////////////////////////////////////////////////////////////////////////////////// - // Blur - /////////////////////////////////////////////////////////////////////////////////////////// - - public void removeContentScreenBlur() { - Transitions.removeBlur(baseContentContainer); - } - - public void blurContentScreen() { - Transitions.blur(baseContentContainer); - } - /////////////////////////////////////////////////////////////////////////////////////////// // Private Methods: Startup /////////////////////////////////////////////////////////////////////////////////////////// private void startup() { - baseContentContainer = getBaseContentContainer(); + baseApplicationContainer = getBaseApplicationContainer(); baseOverlayContainer = getSplashScreen(); - ((StackPane) root).getChildren().addAll(baseContentContainer, baseOverlayContainer); + ((StackPane) root).getChildren().addAll(baseApplicationContainer, baseOverlayContainer); onBaseContainersCreated(); } @@ -220,12 +221,10 @@ public class MainViewCB extends CachedCodeBehind { Profiler.printMsgWithTime("MainController.onBaseContainersCreated"); menuBar = getMenuBar(); - contentScreen = getContentScreen(); + applicationContainer = getApplicationContainer(); - addNetworkSyncPane(); - - baseContentContainer.setTop(menuBar); - baseContentContainer.setCenter(contentScreen); + baseApplicationContainer.setTop(menuBar); + baseApplicationContainer.setCenter(applicationContainer); presentationModel.backendInited.addListener((ov, oldValue, newValue) -> { if (newValue) @@ -247,18 +246,15 @@ public class MainViewCB extends CachedCodeBehind { final Button alertButton = new Button("", ImageUtil.getIconImageView(ImageUtil.MSG_ALERT)); alertButton.setId("nav-alert-button"); alertButton.relocate(36, 19); - alertButton.setOnAction((e) -> { - ordersButton.fire(); - //TODO - OrdersController.GET_INSTANCE().setSelectedTabIndex(1); - }); + alertButton.setOnAction((e) -> + navigationController.navigationTo(NavigationItem.ORDERS, NavigationItem.PENDING_TRADE)); Tooltip.install(alertButton, new Tooltip("Your offer has been accepted")); ordersButtonButtonPane.getChildren().add(alertButton); AWTSystemTray.setAlert(); }); - triggerMainMenuButton(presentationModel.getSelectedNavigationItem()); + navigationController.navigationTo(presentationModel.getSelectedNavigationItems()); onContentAdded(); } @@ -272,7 +268,7 @@ public class MainViewCB extends CachedCodeBehind { // Private /////////////////////////////////////////////////////////////////////////////////////////// - private BorderPane getBaseContentContainer() { + private BorderPane getBaseApplicationContainer() { BorderPane borderPane = new BorderPane(); borderPane.setId("base-content-container"); return borderPane; @@ -325,7 +321,7 @@ public class MainViewCB extends CachedCodeBehind { return menuBar; } - private AnchorPane getContentScreen() { + private AnchorPane getApplicationContainer() { AnchorPane anchorPane = new AnchorPane(); anchorPane.setId("content-pane"); @@ -339,18 +335,13 @@ public class MainViewCB extends CachedCodeBehind { AnchorPane.setRightAnchor(rightNavPane, 10d); AnchorPane.setTopAnchor(rightNavPane, 0d); - contentPane = new AnchorPane(); - contentPane.setId("content-pane"); - AnchorPane.setLeftAnchor(contentPane, 0d); - AnchorPane.setRightAnchor(contentPane, 0d); - AnchorPane.setTopAnchor(contentPane, 60d); - AnchorPane.setBottomAnchor(contentPane, 20d); + contentContainer = new AnchorPane(); + contentContainer.setId("content-pane"); + AnchorPane.setLeftAnchor(contentContainer, 0d); + AnchorPane.setRightAnchor(contentContainer, 0d); + AnchorPane.setTopAnchor(contentContainer, 60d); + AnchorPane.setBottomAnchor(contentContainer, 25d); - anchorPane.getChildren().addAll(leftNavPane, rightNavPane, contentPane); - return anchorPane; - } - - private void addNetworkSyncPane() { networkSyncPane = new NetworkSyncPane(); networkSyncPane.setSpacing(10); networkSyncPane.setPrefHeight(20); @@ -362,7 +353,8 @@ public class MainViewCB extends CachedCodeBehind { networkSyncPane.downloadComplete(); }); - contentScreen.getChildren().addAll(networkSyncPane); + anchorPane.getChildren().addAll(leftNavPane, rightNavPane, contentContainer, networkSyncPane); + return anchorPane; } private void addMainNavigation() { diff --git a/src/main/java/io/bitsquare/gui/view/account/AccountSettingsViewCB.java b/src/main/java/io/bitsquare/gui/view/account/AccountSettingsViewCB.java index 58673aed35..947206ce96 100644 --- a/src/main/java/io/bitsquare/gui/view/account/AccountSettingsViewCB.java +++ b/src/main/java/io/bitsquare/gui/view/account/AccountSettingsViewCB.java @@ -17,11 +17,12 @@ package io.bitsquare.gui.view.account; -import io.bitsquare.gui.CachedCodeBehind; -import io.bitsquare.gui.CodeBehind; +import io.bitsquare.gui.NavigationController; import io.bitsquare.gui.NavigationItem; -import io.bitsquare.gui.PresentationModel; +import io.bitsquare.gui.pm.PresentationModel; import io.bitsquare.gui.pm.account.AccountSettingsPM; +import io.bitsquare.gui.view.CachedCodeBehind; +import io.bitsquare.gui.view.CodeBehind; import io.bitsquare.gui.view.account.content.ContextAware; import io.bitsquare.util.BSFXMLLoader; @@ -48,6 +49,9 @@ import org.slf4j.LoggerFactory; public class AccountSettingsViewCB extends CachedCodeBehind { private static final Logger log = LoggerFactory.getLogger(AccountSettingsViewCB.class); + + public NavigationItem subMenuNavigationItem; + public VBox leftVBox; public AnchorPane content; @@ -56,8 +60,17 @@ public class AccountSettingsViewCB extends CachedCodeBehind { /////////////////////////////////////////////////////////////////////////////////////////// @Inject - private AccountSettingsViewCB(AccountSettingsPM presentationModel) { + private AccountSettingsViewCB(AccountSettingsPM presentationModel, NavigationController navigationController) { super(presentationModel); + + navigationController.addListener(navigationItem -> { + if (navigationItem.length > 1) { + NavigationItem subMenuNavigationItem1 = navigationItem[1]; + if (subMenuNavigationItem1.getLevel() == 2) { + AccountSettingsViewCB.this.subMenuNavigationItem = subMenuNavigationItem1; + } + } + }); } @@ -86,7 +99,31 @@ public class AccountSettingsViewCB extends CachedCodeBehind { leftVBox.getChildren().addAll(seedWords, password, restrictions, fiatAccount, registration); - seedWords.fire(); + if (subMenuNavigationItem == null) + subMenuNavigationItem = NavigationItem.SEED_WORDS; + + loadView(subMenuNavigationItem); + + switch (subMenuNavigationItem) { + case SEED_WORDS: + seedWords.setSelected(true); + break; + case CHANGE_PASSWORD: + password.setSelected(true); + break; + case RESTRICTIONS: + restrictions.setSelected(true); + break; + case FIAT_ACCOUNT: + fiatAccount.setSelected(true); + break; + case REGISTRATION: + registration.setSelected(true); + break; + default: + log.error(subMenuNavigationItem.getFxmlUrl() + " is no subMenuNavigationItem"); + break; + } } @SuppressWarnings("EmptyMethod") diff --git a/src/main/java/io/bitsquare/gui/view/account/AccountSetupViewCB.java b/src/main/java/io/bitsquare/gui/view/account/AccountSetupViewCB.java index 610aec1c73..b265d794d9 100644 --- a/src/main/java/io/bitsquare/gui/view/account/AccountSetupViewCB.java +++ b/src/main/java/io/bitsquare/gui/view/account/AccountSetupViewCB.java @@ -17,12 +17,12 @@ package io.bitsquare.gui.view.account; -import io.bitsquare.gui.CachedCodeBehind; -import io.bitsquare.gui.CodeBehind; import io.bitsquare.gui.NavigationItem; -import io.bitsquare.gui.PresentationModel; +import io.bitsquare.gui.pm.PresentationModel; import io.bitsquare.gui.pm.account.AccountSetupPM; import io.bitsquare.gui.util.ImageUtil; +import io.bitsquare.gui.view.CachedCodeBehind; +import io.bitsquare.gui.view.CodeBehind; import io.bitsquare.gui.view.account.content.ContextAware; import io.bitsquare.gui.view.account.content.FiatAccountViewCB; import io.bitsquare.gui.view.account.content.PasswordViewCB; @@ -175,7 +175,7 @@ class WizardItem extends HBox { private final Parent content; private final NavigationItem navigationItem; - WizardItem(AccountSetupViewCB parentCB, Parent content, String title, String subTitle, + WizardItem(AccountSetupViewCB parentCB, Parent content, String title, String subTitle, NavigationItem navigationItem) { this.parentCB = parentCB; this.content = content; diff --git a/src/main/java/io/bitsquare/gui/view/account/content/ChangePasswordViewCB.java b/src/main/java/io/bitsquare/gui/view/account/content/ChangePasswordViewCB.java index 7ec4fd62d0..8aaf7f74ca 100644 --- a/src/main/java/io/bitsquare/gui/view/account/content/ChangePasswordViewCB.java +++ b/src/main/java/io/bitsquare/gui/view/account/content/ChangePasswordViewCB.java @@ -17,10 +17,10 @@ package io.bitsquare.gui.view.account.content; -import io.bitsquare.gui.CachedCodeBehind; import io.bitsquare.gui.help.Help; import io.bitsquare.gui.help.HelpId; import io.bitsquare.gui.pm.account.content.ChangePasswordPM; +import io.bitsquare.gui.view.CachedCodeBehind; import io.bitsquare.gui.view.account.AccountSetupViewCB; import java.net.URL; diff --git a/src/main/java/io/bitsquare/gui/view/account/content/FiatAccountViewCB.java b/src/main/java/io/bitsquare/gui/view/account/content/FiatAccountViewCB.java index eb1e816fee..300e65061b 100644 --- a/src/main/java/io/bitsquare/gui/view/account/content/FiatAccountViewCB.java +++ b/src/main/java/io/bitsquare/gui/view/account/content/FiatAccountViewCB.java @@ -19,13 +19,13 @@ package io.bitsquare.gui.view.account.content; import io.bitsquare.bank.BankAccount; import io.bitsquare.bank.BankAccountType; -import io.bitsquare.gui.CachedCodeBehind; import io.bitsquare.gui.components.InputTextField; import io.bitsquare.gui.components.Popups; import io.bitsquare.gui.help.Help; import io.bitsquare.gui.help.HelpId; import io.bitsquare.gui.pm.account.content.FiatAccountPm; import io.bitsquare.gui.util.validation.InputValidator; +import io.bitsquare.gui.view.CachedCodeBehind; import io.bitsquare.gui.view.account.AccountSetupViewCB; import io.bitsquare.locale.Country; import io.bitsquare.locale.Region; diff --git a/src/main/java/io/bitsquare/gui/view/account/content/PasswordViewCB.java b/src/main/java/io/bitsquare/gui/view/account/content/PasswordViewCB.java index de5f373493..b1bb864090 100644 --- a/src/main/java/io/bitsquare/gui/view/account/content/PasswordViewCB.java +++ b/src/main/java/io/bitsquare/gui/view/account/content/PasswordViewCB.java @@ -17,10 +17,10 @@ package io.bitsquare.gui.view.account.content; -import io.bitsquare.gui.CachedCodeBehind; import io.bitsquare.gui.help.Help; import io.bitsquare.gui.help.HelpId; import io.bitsquare.gui.pm.account.content.PasswordPM; +import io.bitsquare.gui.view.CachedCodeBehind; import io.bitsquare.gui.view.account.AccountSetupViewCB; import java.net.URL; diff --git a/src/main/java/io/bitsquare/gui/view/account/content/RegistrationViewCB.java b/src/main/java/io/bitsquare/gui/view/account/content/RegistrationViewCB.java index 96f95314af..d136f2fb35 100644 --- a/src/main/java/io/bitsquare/gui/view/account/content/RegistrationViewCB.java +++ b/src/main/java/io/bitsquare/gui/view/account/content/RegistrationViewCB.java @@ -17,14 +17,14 @@ package io.bitsquare.gui.view.account.content; -import io.bitsquare.gui.CachedCodeBehind; +import io.bitsquare.gui.OverlayController; import io.bitsquare.gui.components.Popups; import io.bitsquare.gui.components.btc.AddressTextField; import io.bitsquare.gui.components.btc.BalanceTextField; import io.bitsquare.gui.help.Help; import io.bitsquare.gui.help.HelpId; import io.bitsquare.gui.pm.account.content.RegistrationPM; -import io.bitsquare.gui.view.MainViewCB; +import io.bitsquare.gui.view.CachedCodeBehind; import io.bitsquare.gui.view.account.AccountSetupViewCB; import io.bitsquare.locale.BSResources; @@ -52,6 +52,7 @@ public class RegistrationViewCB extends CachedCodeBehind impleme private static final Logger log = LoggerFactory.getLogger(RegistrationViewCB.class); + private OverlayController overlayController; @FXML private TextField feeTextField; @FXML private AddressTextField addressTextField; @@ -64,8 +65,9 @@ public class RegistrationViewCB extends CachedCodeBehind impleme /////////////////////////////////////////////////////////////////////////////////////////// @Inject - private RegistrationViewCB(RegistrationPM presentationModel) { + private RegistrationViewCB(RegistrationPM presentationModel, OverlayController overlayController) { super(presentationModel); + this.overlayController = overlayController; } @@ -81,6 +83,10 @@ public class RegistrationViewCB extends CachedCodeBehind impleme addressTextField.setAmountAsCoin(presentationModel.getFeeAsCoin()); addressTextField.setPaymentLabel(presentationModel.getPaymentLabel()); addressTextField.setAddress(presentationModel.getAddressAsString()); + + // TODO find better solution + addressTextField.setOverlayController(overlayController); + balanceTextField.setup(presentationModel.getWalletFacade(), presentationModel.address.get()); payButton.disableProperty().bind(presentationModel.isPayButtonDisabled); @@ -95,7 +101,7 @@ public class RegistrationViewCB extends CachedCodeBehind impleme presentationModel.showTransactionPublishedScreen.addListener((o, oldValue, newValue) -> { if (newValue) { - MainViewCB.getInstance().blurContentScreen(); + overlayController.blurContent(); List actions = new ArrayList<>(); actions.add(new AbstractAction(BSResources.get("shared.copyTxId")) { @@ -117,7 +123,7 @@ public class RegistrationViewCB extends CachedCodeBehind impleme e.printStackTrace(); } Dialog.Actions.CLOSE.handle(actionEvent); - MainViewCB.getInstance().removeContentScreenBlur(); + overlayController.removeBlurContent(); } }); diff --git a/src/main/java/io/bitsquare/gui/view/account/content/RestrictionsViewCB.java b/src/main/java/io/bitsquare/gui/view/account/content/RestrictionsViewCB.java index 95351e451a..1249580ab7 100644 --- a/src/main/java/io/bitsquare/gui/view/account/content/RestrictionsViewCB.java +++ b/src/main/java/io/bitsquare/gui/view/account/content/RestrictionsViewCB.java @@ -19,12 +19,12 @@ package io.bitsquare.gui.view.account.content; import io.bitsquare.BitSquare; import io.bitsquare.arbitrator.Arbitrator; -import io.bitsquare.gui.CachedCodeBehind; import io.bitsquare.gui.NavigationItem; import io.bitsquare.gui.help.Help; import io.bitsquare.gui.help.HelpId; import io.bitsquare.gui.pm.account.content.RestrictionsPM; import io.bitsquare.gui.util.ImageUtil; +import io.bitsquare.gui.view.CachedCodeBehind; import io.bitsquare.gui.view.account.AccountSetupViewCB; import io.bitsquare.locale.Country; import io.bitsquare.locale.Region; diff --git a/src/main/java/io/bitsquare/gui/view/account/content/SeedWordsViewCB.java b/src/main/java/io/bitsquare/gui/view/account/content/SeedWordsViewCB.java index 800bca6e0c..eb9b5e1867 100644 --- a/src/main/java/io/bitsquare/gui/view/account/content/SeedWordsViewCB.java +++ b/src/main/java/io/bitsquare/gui/view/account/content/SeedWordsViewCB.java @@ -17,10 +17,10 @@ package io.bitsquare.gui.view.account.content; -import io.bitsquare.gui.CachedCodeBehind; import io.bitsquare.gui.help.Help; import io.bitsquare.gui.help.HelpId; import io.bitsquare.gui.pm.account.content.SeedWordsPM; +import io.bitsquare.gui.view.CachedCodeBehind; import io.bitsquare.gui.view.account.AccountSetupViewCB; import java.net.URL; diff --git a/src/main/java/io/bitsquare/gui/view/trade/CreateOfferViewCB.java b/src/main/java/io/bitsquare/gui/view/trade/CreateOfferViewCB.java index 9af531cbd7..f2cd6abd17 100644 --- a/src/main/java/io/bitsquare/gui/view/trade/CreateOfferViewCB.java +++ b/src/main/java/io/bitsquare/gui/view/trade/CreateOfferViewCB.java @@ -17,8 +17,9 @@ package io.bitsquare.gui.view.trade; -import io.bitsquare.gui.CachedCodeBehind; +import io.bitsquare.gui.NavigationController; import io.bitsquare.gui.NavigationItem; +import io.bitsquare.gui.OverlayController; import io.bitsquare.gui.components.InfoDisplay; import io.bitsquare.gui.components.InputTextField; import io.bitsquare.gui.components.Popups; @@ -28,7 +29,7 @@ import io.bitsquare.gui.help.Help; import io.bitsquare.gui.help.HelpId; import io.bitsquare.gui.pm.trade.CreateOfferPM; import io.bitsquare.gui.util.ImageUtil; -import io.bitsquare.gui.view.MainViewCB; +import io.bitsquare.gui.view.CachedCodeBehind; import io.bitsquare.locale.BSResources; import io.bitsquare.trade.orderbook.OrderBookFilter; @@ -73,6 +74,9 @@ import static javafx.beans.binding.Bindings.createStringBinding; public class CreateOfferViewCB extends CachedCodeBehind { private static final Logger log = LoggerFactory.getLogger(CreateOfferViewCB.class); + private NavigationController navigationController; + private OverlayController overlayController; + private boolean detailsVisible; private boolean advancedScreenInited; private Callable onCloseCallable; @@ -105,8 +109,11 @@ public class CreateOfferViewCB extends CachedCodeBehind { /////////////////////////////////////////////////////////////////////////////////////////// @Inject - private CreateOfferViewCB(CreateOfferPM presentationModel) { + private CreateOfferViewCB(CreateOfferPM presentationModel, NavigationController navigationController, + OverlayController overlayController) { super(presentationModel); + this.navigationController = navigationController; + this.overlayController = overlayController; } @@ -234,7 +241,9 @@ public class CreateOfferViewCB extends CachedCodeBehind { /////////////////////////////////////////////////////////////////////////////////////////// private void openAccountSettings() { - MainViewCB.getInstance().triggerMainMenuButton(NavigationItem.ACCOUNT); + navigationController.navigationTo(NavigationItem.ACCOUNT, + NavigationItem.ACCOUNT_SETTINGS, + NavigationItem.RESTRICTIONS); } private void close() { @@ -242,6 +251,7 @@ public class CreateOfferViewCB extends CachedCodeBehind { tabPane.getTabs().remove(tabPane.getSelectionModel().getSelectedItem()); } + /////////////////////////////////////////////////////////////////////////////////////////// // Private Methods /////////////////////////////////////////////////////////////////////////////////////////// @@ -306,7 +316,7 @@ public class CreateOfferViewCB extends CachedCodeBehind { presentationModel.showTransactionPublishedScreen.addListener((o, oldValue, newValue) -> { if (newValue) { - MainViewCB.getInstance().blurContentScreen(); + overlayController.blurContent(); // Dialogs are a bit limited. There is no callback for the InformationDialog button click, so we added // our own actions. @@ -329,7 +339,7 @@ public class CreateOfferViewCB extends CachedCodeBehind { e.printStackTrace(); } Dialog.Actions.CLOSE.handle(actionEvent); - MainViewCB.getInstance().removeContentScreenBlur(); + overlayController.removeBlurContent(); } });