Search in sources :

Example 1 with Navigation

use of bisq.desktop.Navigation in project bisq-desktop by bisq-network.

the class MainView method initialize.

@Override
protected void initialize() {
    MainView.rootContainer = root;
    ToggleButton marketButton = new NavButton(MarketView.class, Res.get("mainView.menu.market"));
    ToggleButton buyButton = new NavButton(BuyOfferView.class, Res.get("mainView.menu.buyBtc"));
    ToggleButton sellButton = new NavButton(SellOfferView.class, Res.get("mainView.menu.sellBtc"));
    ToggleButton portfolioButton = new NavButton(PortfolioView.class, Res.get("mainView.menu.portfolio"));
    ToggleButton fundsButton = new NavButton(FundsView.class, Res.get("mainView.menu.funds"));
    ToggleButton disputesButton = new NavButton(DisputesView.class, Res.get("mainView.menu.support"));
    ToggleButton settingsButton = new NavButton(SettingsView.class, Res.get("mainView.menu.settings"));
    ToggleButton accountButton = new NavButton(AccountView.class, Res.get("mainView.menu.account"));
    ToggleButton daoButton = new NavButton(DaoView.class, Res.get("mainView.menu.dao"));
    Pane portfolioButtonHolder = new Pane(portfolioButton);
    Pane disputesButtonHolder = new Pane(disputesButton);
    if (!BisqEnvironment.isDAOActivatedAndBaseCurrencySupportingBsq()) {
        daoButton.setVisible(false);
        daoButton.setManaged(false);
    }
    root.sceneProperty().addListener((observable, oldValue, newValue) -> {
        if (newValue != null) {
            newValue.addEventHandler(KeyEvent.KEY_RELEASED, keyEvent -> {
                // TODO can be removed once DAO is released
                if (Utilities.isAltOrCtrlPressed(KeyCode.D, keyEvent)) {
                    if (BisqEnvironment.getBaseCurrencyNetwork().isBitcoin()) {
                        daoButton.setVisible(true);
                        daoButton.setManaged(true);
                    }
                } else if (Utilities.isAltOrCtrlPressed(KeyCode.DIGIT1, keyEvent)) {
                    marketButton.fire();
                } else if (Utilities.isAltOrCtrlPressed(KeyCode.DIGIT2, keyEvent)) {
                    buyButton.fire();
                } else if (Utilities.isAltOrCtrlPressed(KeyCode.DIGIT3, keyEvent)) {
                    sellButton.fire();
                } else if (Utilities.isAltOrCtrlPressed(KeyCode.DIGIT4, keyEvent)) {
                    portfolioButton.fire();
                } else if (Utilities.isAltOrCtrlPressed(KeyCode.DIGIT5, keyEvent)) {
                    fundsButton.fire();
                } else if (Utilities.isAltOrCtrlPressed(KeyCode.DIGIT6, keyEvent)) {
                    disputesButton.fire();
                } else if (Utilities.isAltOrCtrlPressed(KeyCode.DIGIT7, keyEvent)) {
                    settingsButton.fire();
                } else if (Utilities.isAltOrCtrlPressed(KeyCode.DIGIT8, keyEvent)) {
                    accountButton.fire();
                } else if (Utilities.isAltOrCtrlPressed(KeyCode.DIGIT9, keyEvent)) {
                    if (daoButton.isVisible())
                        daoButton.fire();
                }
            });
        }
    });
    HBox leftNavPane = new HBox(marketButton, buyButton, sellButton, portfolioButtonHolder, fundsButton, disputesButtonHolder) {

        {
            setLeftAnchor(this, 10d);
            setTopAnchor(this, 0d);
        }
    };
    Tuple2<ComboBox<PriceFeedComboBoxItem>, VBox> marketPriceBox = getMarketPriceBox();
    ComboBox<PriceFeedComboBoxItem> priceComboBox = marketPriceBox.first;
    priceComboBox.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> {
        model.setPriceFeedComboBoxItem(newValue);
    });
    ChangeListener<PriceFeedComboBoxItem> selectedPriceFeedItemListener = (observable, oldValue, newValue) -> {
        if (newValue != null)
            priceComboBox.getSelectionModel().select(newValue);
    };
    model.selectedPriceFeedComboBoxItemProperty.addListener(selectedPriceFeedItemListener);
    priceComboBox.setItems(model.priceFeedComboBoxItems);
    HBox.setMargin(marketPriceBox.second, new Insets(0, 0, 0, 0));
    Tuple2<TextField, VBox> availableBalanceBox = getBalanceBox(Res.get("mainView.balance.available"));
    availableBalanceBox.first.textProperty().bind(model.availableBalance);
    Tuple2<TextField, VBox> reservedBalanceBox = getBalanceBox(Res.get("mainView.balance.reserved"));
    reservedBalanceBox.first.textProperty().bind(model.reservedBalance);
    Tuple2<TextField, VBox> lockedBalanceBox = getBalanceBox(Res.get("mainView.balance.locked"));
    lockedBalanceBox.first.textProperty().bind(model.lockedBalance);
    HBox rightNavPane = new HBox(marketPriceBox.second, availableBalanceBox.second, reservedBalanceBox.second, lockedBalanceBox.second, settingsButton, accountButton, daoButton) {

        {
            setRightAnchor(this, 10d);
            setTopAnchor(this, 0d);
        }
    };
    root.widthProperty().addListener((observable, oldValue, newValue) -> {
        double w = (double) newValue;
        if (w > 0) {
            leftNavPane.setSpacing(w >= 1080 ? 12 : 6);
            rightNavPane.setSpacing(w >= 1080 ? 12 : 6);
        }
    });
    AnchorPane contentContainer = new AnchorPane() {

        {
            setId("content-pane");
            setLeftAnchor(this, 0d);
            setRightAnchor(this, 0d);
            setTopAnchor(this, 60d);
            setBottomAnchor(this, 10d);
        }
    };
    AnchorPane applicationContainer = new AnchorPane(leftNavPane, rightNavPane, contentContainer) {

        {
            setId("content-pane");
        }
    };
    BorderPane baseApplicationContainer = new BorderPane(applicationContainer) {

        {
            setId("base-content-container");
        }
    };
    baseApplicationContainer.setBottom(createFooter());
    setupNotificationIcon(portfolioButtonHolder);
    setupDisputesIcon(disputesButtonHolder);
    navigation.addListener(viewPath -> {
        if (viewPath.size() != 2 || viewPath.indexOf(MainView.class) != 0)
            return;
        Class<? extends View> viewClass = viewPath.tip();
        View view = viewLoader.load(viewClass);
        contentContainer.getChildren().setAll(view.getRoot());
        navButtons.getToggles().stream().filter(toggle -> toggle instanceof NavButton).filter(button -> viewClass == ((NavButton) button).viewClass).findFirst().orElseThrow(() -> new BisqException("No button matching %s found", viewClass)).setSelected(true);
    });
    VBox splashScreen = createSplashScreen();
    root.getChildren().addAll(baseApplicationContainer, splashScreen);
    model.showAppScreen.addListener((ov, oldValue, newValue) -> {
        if (newValue) {
            navigation.navigateToPreviousVisitedView();
            if (!persistedFilesCorrupted.isEmpty()) {
                if (persistedFilesCorrupted.size() > 1 || !persistedFilesCorrupted.get(0).equals("ViewPathAsString")) {
                    // show warning that some files has been corrupted
                    new Popup<>().warning(Res.get("popup.warning.incompatibleDB", persistedFilesCorrupted.toString(), model.getAppDateDir())).useShutDownButton().show();
                } else {
                    log.debug("We detected incompatible data base file for Navigation. That is a minor issue happening with refactoring of UI classes " + "and we don't display a warning popup to the user.");
                }
            }
            transitions.fadeOutAndRemove(splashScreen, 1500, actionEvent -> disposeSplashScreen());
        }
    });
    // Delay a bit to give time for rendering the splash screen
    UserThread.execute(model::start);
}
Also used : Button(javafx.scene.control.Button) Pos(javafx.geometry.Pos) BusyAnimation(bisq.desktop.components.BusyAnimation) Utilities(bisq.common.util.Utilities) ListCell(javafx.scene.control.ListCell) StackPane(javafx.scene.layout.StackPane) VBox(javafx.scene.layout.VBox) BSFormatter(bisq.desktop.util.BSFormatter) DisputesView(bisq.desktop.main.disputes.DisputesView) ComboBox(javafx.scene.control.ComboBox) ViewLoader(bisq.desktop.common.view.ViewLoader) Res(bisq.core.locale.Res) Pane(javafx.scene.layout.Pane) Navigation(bisq.desktop.Navigation) HBox(javafx.scene.layout.HBox) Popup(bisq.desktop.main.overlays.popups.Popup) TextField(javafx.scene.control.TextField) CachingViewLoader(bisq.desktop.common.view.CachingViewLoader) AutoTooltipLabel(bisq.desktop.components.AutoTooltipLabel) KeyEvent(javafx.scene.input.KeyEvent) Separator(javafx.scene.control.Separator) AnchorPane.setTopAnchor(javafx.scene.layout.AnchorPane.setTopAnchor) List(java.util.List) Slf4j(lombok.extern.slf4j.Slf4j) DevEnv(bisq.common.app.DevEnv) ToggleButton(javafx.scene.control.ToggleButton) AnchorPane(javafx.scene.layout.AnchorPane) AutoTooltipButton(bisq.desktop.components.AutoTooltipButton) UserThread(bisq.common.UserThread) BorderPane(javafx.scene.layout.BorderPane) PortfolioView(bisq.desktop.main.portfolio.PortfolioView) BisqException(bisq.core.exceptions.BisqException) SettingsView(bisq.desktop.main.settings.SettingsView) GUIUtil(bisq.desktop.util.GUIUtil) InitializableView(bisq.desktop.common.view.InitializableView) Timer(bisq.common.Timer) AnchorPane.setRightAnchor(javafx.scene.layout.AnchorPane.setRightAnchor) AnchorPane.setLeftAnchor(javafx.scene.layout.AnchorPane.setLeftAnchor) FxmlView(bisq.desktop.common.view.FxmlView) AutoTooltipToggleButton(bisq.desktop.components.AutoTooltipToggleButton) Inject(javax.inject.Inject) Tuple2(bisq.common.util.Tuple2) ProgressBar(javafx.scene.control.ProgressBar) Insets(javafx.geometry.Insets) BuyOfferView(bisq.desktop.main.offer.BuyOfferView) TextAlignment(javafx.scene.text.TextAlignment) AnchorPane.setBottomAnchor(javafx.scene.layout.AnchorPane.setBottomAnchor) Transitions(bisq.desktop.util.Transitions) FundsView(bisq.desktop.main.funds.FundsView) Tooltip(javafx.scene.control.Tooltip) AccountView(bisq.desktop.main.account.AccountView) KeyCode(javafx.scene.input.KeyCode) Color(javafx.scene.paint.Color) Version(bisq.common.app.Version) DaoView(bisq.desktop.main.dao.DaoView) Label(javafx.scene.control.Label) SellOfferView(bisq.desktop.main.offer.SellOfferView) BisqEnvironment(bisq.core.app.BisqEnvironment) MarketView(bisq.desktop.main.market.MarketView) DropShadow(javafx.scene.effect.DropShadow) View(bisq.desktop.common.view.View) ToggleGroup(javafx.scene.control.ToggleGroup) ImageView(javafx.scene.image.ImageView) ChangeListener(javafx.beans.value.ChangeListener) ContentDisplay(javafx.scene.control.ContentDisplay) ToggleButton(javafx.scene.control.ToggleButton) AutoTooltipToggleButton(bisq.desktop.components.AutoTooltipToggleButton) HBox(javafx.scene.layout.HBox) BorderPane(javafx.scene.layout.BorderPane) Insets(javafx.geometry.Insets) ComboBox(javafx.scene.control.ComboBox) BisqException(bisq.core.exceptions.BisqException) StackPane(javafx.scene.layout.StackPane) Pane(javafx.scene.layout.Pane) AnchorPane(javafx.scene.layout.AnchorPane) BorderPane(javafx.scene.layout.BorderPane) DisputesView(bisq.desktop.main.disputes.DisputesView) PortfolioView(bisq.desktop.main.portfolio.PortfolioView) SettingsView(bisq.desktop.main.settings.SettingsView) InitializableView(bisq.desktop.common.view.InitializableView) FxmlView(bisq.desktop.common.view.FxmlView) BuyOfferView(bisq.desktop.main.offer.BuyOfferView) FundsView(bisq.desktop.main.funds.FundsView) AccountView(bisq.desktop.main.account.AccountView) DaoView(bisq.desktop.main.dao.DaoView) SellOfferView(bisq.desktop.main.offer.SellOfferView) MarketView(bisq.desktop.main.market.MarketView) View(bisq.desktop.common.view.View) ImageView(javafx.scene.image.ImageView) TextField(javafx.scene.control.TextField) VBox(javafx.scene.layout.VBox) AnchorPane(javafx.scene.layout.AnchorPane)

Aggregations

Timer (bisq.common.Timer)1 UserThread (bisq.common.UserThread)1 DevEnv (bisq.common.app.DevEnv)1 Version (bisq.common.app.Version)1 Tuple2 (bisq.common.util.Tuple2)1 Utilities (bisq.common.util.Utilities)1 BisqEnvironment (bisq.core.app.BisqEnvironment)1 BisqException (bisq.core.exceptions.BisqException)1 Res (bisq.core.locale.Res)1 Navigation (bisq.desktop.Navigation)1 CachingViewLoader (bisq.desktop.common.view.CachingViewLoader)1 FxmlView (bisq.desktop.common.view.FxmlView)1 InitializableView (bisq.desktop.common.view.InitializableView)1 View (bisq.desktop.common.view.View)1 ViewLoader (bisq.desktop.common.view.ViewLoader)1 AutoTooltipButton (bisq.desktop.components.AutoTooltipButton)1 AutoTooltipLabel (bisq.desktop.components.AutoTooltipLabel)1 AutoTooltipToggleButton (bisq.desktop.components.AutoTooltipToggleButton)1 BusyAnimation (bisq.desktop.components.BusyAnimation)1 AccountView (bisq.desktop.main.account.AccountView)1