From 17697afa24fb5f1773e5baebf0c2bd18b853646d Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Mon, 11 Aug 2014 13:40:16 +0200 Subject: [PATCH] improved startup, add splash screen, make it smoother --- src/main/java/io/bitsquare/BitSquare.java | 52 +-- .../java/io/bitsquare/gui/MainController.java | 400 +++++++++++++----- src/main/java/io/bitsquare/gui/MainView.fxml | 16 +- .../java/io/bitsquare/gui/NavigationItem.java | 16 +- src/main/java/io/bitsquare/gui/bitsquare.css | 13 +- .../market/orderbook/OrderBookController.java | 10 +- .../gui/orders/offer/OfferController.java | 4 +- .../pending/PendingTradeController.java | 8 +- .../gui/settings/SettingsController.java | 8 +- .../gui/util/{Icons.java => ImageUtil.java} | 9 +- .../io/bitsquare/gui/util/Transitions.java | 66 ++- src/main/java/io/bitsquare/gui/validation.css | 22 - .../java/io/bitsquare/msg/MessageFacade.java | 2 +- .../java/io/bitsquare/util/AWTSystemTray.java | 8 +- .../images/bitsquare_logo_label_300_69.png | Bin 0 -> 12858 bytes src/main/resources/images/logo.png | Bin 46625 -> 0 bytes src/main/resources/images/logo_200_270.png | Bin 0 -> 24285 bytes 17 files changed, 387 insertions(+), 247 deletions(-) rename src/main/java/io/bitsquare/gui/util/{Icons.java => ImageUtil.java} (82%) delete mode 100644 src/main/java/io/bitsquare/gui/validation.css create mode 100644 src/main/resources/images/bitsquare_logo_label_300_69.png delete mode 100644 src/main/resources/images/logo.png create mode 100644 src/main/resources/images/logo_200_270.png diff --git a/src/main/java/io/bitsquare/BitSquare.java b/src/main/java/io/bitsquare/BitSquare.java index a45505b3b3..bd4aa2cc2b 100644 --- a/src/main/java/io/bitsquare/BitSquare.java +++ b/src/main/java/io/bitsquare/BitSquare.java @@ -21,13 +21,9 @@ import java.util.Arrays; import javafx.application.Application; import javafx.scene.Parent; import javafx.scene.Scene; -import javafx.scene.control.Menu; -import javafx.scene.control.MenuBar; -import javafx.scene.control.MenuItem; import javafx.scene.input.KeyCode; import javafx.scene.input.KeyCodeCombination; import javafx.scene.input.KeyCombination; -import javafx.scene.layout.BorderPane; import javafx.stage.Stage; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -47,8 +43,7 @@ public class BitSquare extends Application public static void main(String[] args) { Profiler.init(); - Profiler.printMsgWithTime("main called"); - log.debug("Startup: main " + Arrays.asList(args).toString()); + Profiler.printMsgWithTime("BitSquare.main called with args " + Arrays.asList(args).toString()); if (args != null && args.length > 0) APP_NAME = args[0]; launch(args); @@ -67,7 +62,7 @@ public class BitSquare extends Application @Override public void start(Stage primaryStage) throws IOException { - Profiler.printMsgWithTime("start called"); + Profiler.printMsgWithTime("BitSquare.start called"); BitSquare.primaryStage = primaryStage; Thread.currentThread().setUncaughtExceptionHandler((thread, throwable) -> Popups.handleUncaughtExceptions(Throwables.getRootCause(throwable))); @@ -81,7 +76,7 @@ public class BitSquare extends Application walletFacade = injector.getInstance(WalletFacade.class); messageFacade = injector.getInstance(MessageFacade.class); - Profiler.printMsgWithTime("Startup: messageFacade, walletFacade inited"); + Profiler.printMsgWithTime("BitSquare: messageFacade, walletFacade created"); // apply stored data final User user = injector.getInstance(User.class); @@ -100,14 +95,9 @@ public class BitSquare extends Application GuiceFXMLLoader.setInjector(injector); final GuiceFXMLLoader loader = new GuiceFXMLLoader(getClass().getResource(NavigationItem.MAIN.getFxmlUrl())); - final Parent mainView = loader.load(); - BorderPane rootPane = new BorderPane(); - rootPane.setTop(getMenuBar()); - rootPane.setCenter(mainView); - - final Scene scene = new Scene(rootPane, 1000, 750); - scene.getStylesheets().setAll(getClass().getResource("/io/bitsquare/gui/bitsquare.css").toExternalForm(), - getClass().getResource("/io/bitsquare/gui/validation.css").toExternalForm()); + final Parent view = loader.load(); + final Scene scene = new Scene(view, 1000, 750); + scene.getStylesheets().setAll(getClass().getResource("/io/bitsquare/gui/bitsquare.css").toExternalForm()); setupCloseHandlers(primaryStage, scene); @@ -117,7 +107,7 @@ public class BitSquare extends Application primaryStage.show(); - Profiler.printMsgWithTime("Startup: primaryStage.show"); + Profiler.printMsgWithTime("BitSquare: start finished"); } private void setupCloseHandlers(Stage primaryStage, Scene scene) @@ -130,34 +120,6 @@ public class BitSquare extends Application }); } - private MenuBar getMenuBar() - { - MenuBar menuBar = new MenuBar(); - // on mac we could placemenu bar in the systems menu - // menuBar.setUseSystemMenuBar(true); - menuBar.setUseSystemMenuBar(false); - - Menu fileMenu = new Menu("_File"); - fileMenu.setMnemonicParsing(true); - MenuItem backupMenuItem = new MenuItem("Backup wallet"); - fileMenu.getItems().addAll(backupMenuItem); - - Menu settingsMenu = new Menu("_Settings"); - settingsMenu.setMnemonicParsing(true); - MenuItem changePwMenuItem = new MenuItem("Change password"); - settingsMenu.getItems().addAll(changePwMenuItem); - - Menu helpMenu = new Menu("_Help"); - helpMenu.setMnemonicParsing(true); - MenuItem faqMenuItem = new MenuItem("FAQ"); - MenuItem forumMenuItem = new MenuItem("Forum"); - helpMenu.getItems().addAll(faqMenuItem, forumMenuItem); - - menuBar.getMenus().setAll(fileMenu, settingsMenu, helpMenu); - return menuBar; - } - - @Override public void stop() throws Exception { diff --git a/src/main/java/io/bitsquare/gui/MainController.java b/src/main/java/io/bitsquare/gui/MainController.java index 7389842cec..f524b161b4 100644 --- a/src/main/java/io/bitsquare/gui/MainController.java +++ b/src/main/java/io/bitsquare/gui/MainController.java @@ -8,7 +8,8 @@ import io.bitsquare.di.GuiceFXMLLoader; import io.bitsquare.gui.components.NetworkSyncPane; import io.bitsquare.gui.market.MarketController; import io.bitsquare.gui.orders.OrdersController; -import io.bitsquare.gui.util.Icons; +import io.bitsquare.gui.util.ImageUtil; +import io.bitsquare.gui.util.Profiler; import io.bitsquare.gui.util.Transitions; import io.bitsquare.msg.BootstrapListener; import io.bitsquare.msg.MessageFacade; @@ -20,24 +21,29 @@ import io.bitsquare.util.AWTSystemTray; import java.io.IOException; import java.net.URL; import java.util.ResourceBundle; +import javafx.application.Platform; import javafx.collections.FXCollections; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.geometry.Insets; +import javafx.geometry.Pos; import javafx.scene.Node; import javafx.scene.control.*; import javafx.scene.image.Image; import javafx.scene.image.ImageView; -import javafx.scene.layout.AnchorPane; -import javafx.scene.layout.HBox; -import javafx.scene.layout.Pane; -import javafx.scene.layout.VBox; +import javafx.scene.layout.*; import javafx.util.StringConverter; import javax.inject.Inject; import net.tomp2p.peers.PeerAddress; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +/** + * Holds the splash screen and the application views. + * It builds up all the views and initializes the facades. + * We use a sequence of Platform.runLater cascaded calls to make the startup more smooth, otherwise the rendering is frozen for too long. + * Pre-loading of views is not implemented yet, and after a quick test it seemed that it does not give much improvements. + */ public class MainController implements Initializable, NavigationController { private static final Logger log = LoggerFactory.getLogger(MainController.class); @@ -49,7 +55,7 @@ public class MainController implements Initializable, NavigationController private final TradeManager tradeManager; private final Persistence persistence; private final ToggleGroup toggleGroup = new ToggleGroup(); - + private final ViewBuilder viewBuilder; private ChildController controller; private ToggleButton prevToggleButton; @@ -59,18 +65,7 @@ public class MainController implements Initializable, NavigationController private boolean messageFacadeInited; private boolean walletFacadeInited; - @FXML - private Pane contentPane; - @FXML - private HBox leftNavPane, rightNavPane; - @FXML - private ProgressBar loadingBar; - @FXML - private AnchorPane rootPane; - @FXML - private Label loadingLabel; - @FXML - private NetworkSyncPane networkSyncPane; + @FXML private BorderPane root; /////////////////////////////////////////////////////////////////////////////////////////// @@ -86,6 +81,8 @@ public class MainController implements Initializable, NavigationController this.tradeManager = tradeManager; this.persistence = persistence; + viewBuilder = new ViewBuilder(); + MainController.INSTANCE = this; } @@ -107,49 +104,14 @@ public class MainController implements Initializable, NavigationController @Override public void initialize(URL url, ResourceBundle rb) { - messageFacade.init(new BootstrapListener() - { - @Override - public void onCompleted() - { - messageFacadeInited = true; - if (walletFacadeInited) initialisationDone(); - } - - @Override - public void onFailed(Throwable throwable) - { - } - }); - - walletFacade.addDownloadListener(new WalletFacade.DownloadListener() - { - @Override - public void progress(double percent) - { - networkSyncPane.setProgress(percent); - } - - @Override - public void doneDownload() - { - networkSyncPane.doneDownload(); - } - }); - walletFacade.initialize(() -> { - walletFacadeInited = true; - if (messageFacadeInited) initialisationDone(); - }); - - tradeManager.addTakeOfferRequestListener(this::onTakeOfferRequested); + Profiler.printMsgWithTime("MainController.initialize"); + Platform.runLater(() -> viewBuilder.buildSplashScreen(root, this)); } - /////////////////////////////////////////////////////////////////////////////////////////// // Interface implementation: NavigationController /////////////////////////////////////////////////////////////////////////////////////////// - @Override public ChildController navigateToView(NavigationItem navigationItem) { @@ -181,57 +143,69 @@ public class MainController implements Initializable, NavigationController } - private ChildController loadView(NavigationItem navigationItem) - { - if (controller != null) - { - controller.cleanup(); - } - - final GuiceFXMLLoader loader = new GuiceFXMLLoader(getClass().getResource(navigationItem.getFxmlUrl())); - try - { - final Node view = loader.load(); - contentPane.getChildren().setAll(view); - controller = loader.getController(); - controller.setNavigationController(this); - } catch (IOException e) - { - e.printStackTrace(); - log.error("Loading view failed. " + navigationItem.getFxmlUrl()); - } - return controller; - } - - /////////////////////////////////////////////////////////////////////////////////////////// - // Private methods + // Startup Handlers /////////////////////////////////////////////////////////////////////////////////////////// - private void initialisationDone() + public void onViewInitialized() { - addNavigation(); - - Transitions.fadeOutAndRemove(loadingLabel); - Transitions.fadeOutAndRemove(loadingBar); - - Transitions.fadeIn(leftNavPane); - Transitions.fadeIn(rightNavPane); - Transitions.fadeIn(contentPane); - - NavigationItem selectedNavigationItem = (NavigationItem) persistence.read(this, "selectedNavigationItem"); - if (selectedNavigationItem == null) - { - selectedNavigationItem = NavigationItem.HOME; - } - - navigateToView(selectedNavigationItem); + Profiler.printMsgWithTime("MainController.onViewInitialized"); + Platform.runLater(this::initFacades); } + private void onFacadesInitialised() + { + Profiler.printMsgWithTime("MainController.onFacadesInitialised"); + // never called on regtest + walletFacade.addDownloadListener(new WalletFacade.DownloadListener() + { + @Override + public void progress(double percent) + { + viewBuilder.loadingLabel.setText("Synchronise with network..."); + } + + @Override + public void doneDownload() + { + viewBuilder.loadingLabel.setText("Synchronise with network done."); + } + }); + + tradeManager.addTakeOfferRequestListener(this::onTakeOfferRequested); + Platform.runLater(this::addNavigation); + } + + private void onNavigationAdded() + { + Profiler.printMsgWithTime("MainController.onNavigationAdded"); + Platform.runLater(this::loadContentView); + } + + private void onContentViewLoaded() + { + Profiler.printMsgWithTime("MainController.onContentViewLoaded"); + root.setId("main-view"); + Platform.runLater(this::fadeOutSplash); + } + + private void fadeOutSplash() + { + Profiler.printMsgWithTime("MainController.fadeOutSplash"); + Transitions.blurOutAndRemove(viewBuilder.splashVBox); + Transitions.fadeIn(viewBuilder.menuBar); + Transitions.fadeIn(viewBuilder.anchorPane); + } + + + /////////////////////////////////////////////////////////////////////////////////////////// + // Handlers + /////////////////////////////////////////////////////////////////////////////////////////// + //TODO make ordersButton also reacting to jump to pending tab private void onTakeOfferRequested(String offerId, PeerAddress sender) { - final Button alertButton = new Button("", Icons.getIconImageView(Icons.MSG_ALERT)); + final Button alertButton = new Button("", ImageUtil.getIconImageView(ImageUtil.MSG_ALERT)); alertButton.setId("nav-alert-button"); alertButton.relocate(36, 19); alertButton.setOnAction((e) -> { @@ -244,36 +218,103 @@ public class MainController implements Initializable, NavigationController AWTSystemTray.setAlert(); } + + /////////////////////////////////////////////////////////////////////////////////////////// + // Private startup methods + /////////////////////////////////////////////////////////////////////////////////////////// + + private void initFacades() + { + Profiler.printMsgWithTime("MainController.initFacades"); + messageFacade.init(new BootstrapListener() + { + @Override + public void onCompleted() + { + messageFacadeInited = true; + if (walletFacadeInited) onFacadesInitialised(); + } + + @Override + public void onFailed(Throwable throwable) + { + log.error(throwable.toString()); + } + }); + + walletFacade.initialize(() -> { + walletFacadeInited = true; + if (messageFacadeInited) onFacadesInitialised(); + }); + } + private void addNavigation() { - homeButton = addNavButton(leftNavPane, "Overview", NavigationItem.HOME); - - buyButton = addNavButton(leftNavPane, "Buy BTC", NavigationItem.BUY); - - sellButton = addNavButton(leftNavPane, "Sell BTC", NavigationItem.SELL); + Profiler.printMsgWithTime("MainController.addNavigation"); + homeButton = addNavButton(viewBuilder.leftNavPane, "Overview", NavigationItem.HOME); + buyButton = addNavButton(viewBuilder.leftNavPane, "Buy BTC", NavigationItem.BUY); + sellButton = addNavButton(viewBuilder.leftNavPane, "Sell BTC", NavigationItem.SELL); ordersButtonButtonHolder = new Pane(); ordersButton = addNavButton(ordersButtonButtonHolder, "Orders", NavigationItem.ORDERS); - leftNavPane.getChildren().add(ordersButtonButtonHolder); + viewBuilder.leftNavPane.getChildren().add(ordersButtonButtonHolder); - fundsButton = addNavButton(leftNavPane, "Funds", NavigationItem.FUNDS); + fundsButton = addNavButton(viewBuilder.leftNavPane, "Funds", NavigationItem.FUNDS); final Pane msgButtonHolder = new Pane(); msgButton = addNavButton(msgButtonHolder, "Message", NavigationItem.MSG); - leftNavPane.getChildren().add(msgButtonHolder); + viewBuilder.leftNavPane.getChildren().add(msgButtonHolder); - addBalanceInfo(rightNavPane); - addAccountComboBox(rightNavPane); + addBalanceInfo(viewBuilder.rightNavPane); + addAccountComboBox(viewBuilder.rightNavPane); - settingsButton = addNavButton(rightNavPane, "Settings", NavigationItem.SETTINGS); + settingsButton = addNavButton(viewBuilder.rightNavPane, "Settings", NavigationItem.SETTINGS); + + Platform.runLater(this::onNavigationAdded); } + private void loadContentView() + { + Profiler.printMsgWithTime("MainController.loadContentView"); + NavigationItem selectedNavigationItem = (NavigationItem) persistence.read(this, "selectedNavigationItem"); + if (selectedNavigationItem == null) + selectedNavigationItem = NavigationItem.BUY; + + navigateToView(selectedNavigationItem); + + Platform.runLater(this::onContentViewLoaded); + } + + + /////////////////////////////////////////////////////////////////////////////////////////// + // Private methods + /////////////////////////////////////////////////////////////////////////////////////////// + + private ChildController loadView(NavigationItem navigationItem) + { + if (controller != null) + controller.cleanup(); + + final GuiceFXMLLoader loader = new GuiceFXMLLoader(getClass().getResource(navigationItem.getFxmlUrl())); + try + { + final Node view = loader.load(); + viewBuilder.contentPane.getChildren().setAll(view); + controller = loader.getController(); + controller.setNavigationController(this); + } catch (IOException e) + { + e.printStackTrace(); + log.error("Loading view failed. " + navigationItem.getFxmlUrl()); + } + return controller; + } private ToggleButton addNavButton(Pane parent, String title, NavigationItem navigationItem) { final Pane pane = new Pane(); pane.setPrefSize(50, 50); - final ToggleButton toggleButton = new ToggleButton("", Icons.getIconImageView(navigationItem.getIcon())); + final ToggleButton toggleButton = new ToggleButton("", ImageUtil.getIconImageView(navigationItem.getIcon())); toggleButton.setToggleGroup(toggleGroup); toggleButton.setId("nav-button"); toggleButton.setPrefSize(50, 50); @@ -283,7 +324,7 @@ public class MainController implements Initializable, NavigationController ((ImageView) (prevToggleButton.getGraphic())).setImage(prevToggleButtonIcon); } prevToggleButtonIcon = ((ImageView) (toggleButton.getGraphic())).getImage(); - ((ImageView) (toggleButton.getGraphic())).setImage(Icons.getIconImage(navigationItem.getActiveIcon())); + ((ImageView) (toggleButton.getGraphic())).setImage(ImageUtil.getIconImage(navigationItem.getActiveIcon())); controller = loadView(navigationItem); @@ -313,7 +354,7 @@ public class MainController implements Initializable, NavigationController { final TextField balanceTextField = new TextField(); balanceTextField.setEditable(false); - balanceTextField.setPrefWidth(90); + balanceTextField.setPrefWidth(110); balanceTextField.setId("nav-balance-label"); balanceTextField.setText(walletFacade.getWalletBalance().toFriendlyString()); walletFacade.addBalanceListener(new BalanceListener() @@ -325,12 +366,9 @@ public class MainController implements Initializable, NavigationController } }); - final Label balanceCurrencyLabel = new Label("BTC"); - balanceCurrencyLabel.setPadding(new Insets(6, 0, 0, 0)); - final HBox hBox = new HBox(); hBox.setSpacing(2); - hBox.getChildren().setAll(balanceTextField, balanceCurrencyLabel); + hBox.getChildren().setAll(balanceTextField); final Label titleLabel = new Label("Balance"); titleLabel.setMouseTransparent(true); @@ -382,4 +420,134 @@ public class MainController implements Initializable, NavigationController parent.getChildren().add(vBox); } } -} \ No newline at end of file + +} + + +class ViewBuilder +{ + HBox leftNavPane, rightNavPane; + AnchorPane contentPane; + NetworkSyncPane networkSyncPane; + StackPane stackPane; + AnchorPane anchorPane; + VBox splashVBox; + MenuBar menuBar; + BorderPane root; + Label loadingLabel; + + void buildSplashScreen(BorderPane root, MainController controller) + { + Profiler.printMsgWithTime("MainController.ViewBuilder.buildSplashScreen"); + this.root = root; + + stackPane = new StackPane(); + splashVBox = getSplashScreen(); + stackPane.getChildren().add(splashVBox); + root.setCenter(stackPane); + + menuBar = getMenuBar(); + root.setTop(menuBar); + + Platform.runLater(() -> buildContentView(controller)); + } + + void buildContentView(MainController controller) + { + Profiler.printMsgWithTime("MainController.ViewBuilder.buildContentView"); + anchorPane = getContentScreen(); + stackPane.getChildren().add(anchorPane); + + Platform.runLater(controller::onViewInitialized); + } + + AnchorPane getContentScreen() + { + AnchorPane anchorPane = new AnchorPane(); + anchorPane.setId("content-pane"); + + leftNavPane = new HBox(); + leftNavPane.setAlignment(Pos.CENTER); + leftNavPane.setSpacing(10); + AnchorPane.setLeftAnchor(leftNavPane, 0d); + AnchorPane.setTopAnchor(leftNavPane, 0d); + + rightNavPane = new HBox(); + rightNavPane.setAlignment(Pos.CENTER); + rightNavPane.setSpacing(10); + 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); + + networkSyncPane = new NetworkSyncPane(); + networkSyncPane.setSpacing(10); + networkSyncPane.setPrefHeight(20); + AnchorPane.setLeftAnchor(networkSyncPane, 0d); + AnchorPane.setBottomAnchor(networkSyncPane, 0d); + + anchorPane.getChildren().addAll(leftNavPane, rightNavPane, contentPane, networkSyncPane); + anchorPane.setOpacity(0); + + return anchorPane; + } + + VBox getSplashScreen() + { + VBox splashVBox = new VBox(); + splashVBox.setAlignment(Pos.CENTER); + splashVBox.setSpacing(10); + + ImageView logo = ImageUtil.getIconImageView(ImageUtil.SPLASH_LOGO); + logo.setFitWidth(270); + logo.setFitHeight(200); + + ImageView titleLabel = ImageUtil.getIconImageView(ImageUtil.SPLASH_LABEL); + titleLabel.setFitWidth(300); + titleLabel.setFitHeight(79); + + Label subTitle = new Label("The P2P Fiat-Bitcoin Exchange"); + subTitle.setAlignment(Pos.CENTER); + subTitle.setId("logo-sub-title-label"); + + loadingLabel = new Label("Initializing..."); + loadingLabel.setAlignment(Pos.CENTER); + loadingLabel.setPadding(new Insets(80, 0, 0, 0)); + + splashVBox.getChildren().addAll(logo, titleLabel, subTitle, loadingLabel); + return splashVBox; + } + + MenuBar getMenuBar() + { + MenuBar menuBar = new MenuBar(); + // on mac we could place menu bar in the systems menu + // menuBar.setUseSystemMenuBar(true); + menuBar.setUseSystemMenuBar(false); + + Menu fileMenu = new Menu("_File"); + fileMenu.setMnemonicParsing(true); + MenuItem backupMenuItem = new MenuItem("Backup wallet"); + fileMenu.getItems().addAll(backupMenuItem); + + Menu settingsMenu = new Menu("_Settings"); + settingsMenu.setMnemonicParsing(true); + MenuItem changePwMenuItem = new MenuItem("Change password"); + settingsMenu.getItems().addAll(changePwMenuItem); + + Menu helpMenu = new Menu("_Help"); + helpMenu.setMnemonicParsing(true); + MenuItem faqMenuItem = new MenuItem("FAQ"); + MenuItem forumMenuItem = new MenuItem("Forum"); + helpMenu.getItems().addAll(faqMenuItem, forumMenuItem); + + menuBar.getMenus().setAll(fileMenu, settingsMenu, helpMenu); + menuBar.setOpacity(0); + return menuBar; + } +} diff --git a/src/main/java/io/bitsquare/gui/MainView.fxml b/src/main/java/io/bitsquare/gui/MainView.fxml index f68e1d896d..a5c871aa24 100644 --- a/src/main/java/io/bitsquare/gui/MainView.fxml +++ b/src/main/java/io/bitsquare/gui/MainView.fxml @@ -1,16 +1,6 @@ - - - - - + - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/src/main/java/io/bitsquare/gui/NavigationItem.java b/src/main/java/io/bitsquare/gui/NavigationItem.java index f17cf7257e..32f1424554 100644 --- a/src/main/java/io/bitsquare/gui/NavigationItem.java +++ b/src/main/java/io/bitsquare/gui/NavigationItem.java @@ -1,17 +1,17 @@ package io.bitsquare.gui; -import io.bitsquare.gui.util.Icons; +import io.bitsquare.gui.util.ImageUtil; public enum NavigationItem { MAIN("/io/bitsquare/gui/MainView.fxml"), - HOME("/io/bitsquare/gui/home/HomeView.fxml", Icons.HOME, Icons.HOME_ACTIVE), - BUY("/io/bitsquare/gui/market/MarketView.fxml", Icons.NAV_BUY, Icons.NAV_BUY_ACTIVE), - SELL("/io/bitsquare/gui/market/MarketView.fxml", Icons.NAV_SELL, Icons.NAV_SELL_ACTIVE), - ORDERS("/io/bitsquare/gui/orders/OrdersView.fxml", Icons.ORDERS, Icons.ORDERS_ACTIVE), - FUNDS("/io/bitsquare/gui/funds/FundsView.fxml", Icons.FUNDS, Icons.FUNDS_ACTIVE), - MSG("/io/bitsquare/gui/msg/MsgView.fxml", Icons.MSG, Icons.MSG_ACTIVE), - SETTINGS("/io/bitsquare/gui/settings/SettingsView.fxml", Icons.SETTINGS, Icons.SETTINGS_ACTIVE), + HOME("/io/bitsquare/gui/home/HomeView.fxml", ImageUtil.HOME, ImageUtil.HOME_ACTIVE), + BUY("/io/bitsquare/gui/market/MarketView.fxml", ImageUtil.NAV_BUY, ImageUtil.NAV_BUY_ACTIVE), + SELL("/io/bitsquare/gui/market/MarketView.fxml", ImageUtil.NAV_SELL, ImageUtil.NAV_SELL_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), ORDER_BOOK("/io/bitsquare/gui/market/orderbook/OrderBookView.fxml"), CREATE_OFFER("/io/bitsquare/gui/market/createOffer/CreateOfferView.fxml"), diff --git a/src/main/java/io/bitsquare/gui/bitsquare.css b/src/main/java/io/bitsquare/gui/bitsquare.css index e7870f3609..7e913b94b8 100644 --- a/src/main/java/io/bitsquare/gui/bitsquare.css +++ b/src/main/java/io/bitsquare/gui/bitsquare.css @@ -1,4 +1,13 @@ -#root-pane { +#splash { + -fx-background-color: #ffffff; +} + +#logo-sub-title-label{ + -fx-font-weight: bold; + -fx-font-size: 24; +} + +#main-view { -fx-background-color: #dddddd; } @@ -53,7 +62,7 @@ .text-field:readonly { -fx-text-fill: #000000; - -fx-background-color: #FAFAFA; + -fx-background-color: #FBFBFB; } #feedback-text { diff --git a/src/main/java/io/bitsquare/gui/market/orderbook/OrderBookController.java b/src/main/java/io/bitsquare/gui/market/orderbook/OrderBookController.java index 561f344df2..db0bdc986e 100644 --- a/src/main/java/io/bitsquare/gui/market/orderbook/OrderBookController.java +++ b/src/main/java/io/bitsquare/gui/market/orderbook/OrderBookController.java @@ -15,7 +15,7 @@ import io.bitsquare.gui.market.createOffer.CreateOfferController; import io.bitsquare.gui.market.trade.TakerOfferController; import io.bitsquare.gui.popups.Popups; import io.bitsquare.gui.util.BitSquareFormatter; -import io.bitsquare.gui.util.Icons; +import io.bitsquare.gui.util.ImageUtil; import io.bitsquare.locale.Country; import io.bitsquare.locale.CurrencyUtil; import io.bitsquare.locale.Localisation; @@ -65,8 +65,8 @@ public class OrderBookController implements Initializable, ChildController private final Settings settings; private final Persistence persistence; - private final Image buyIcon = Icons.getIconImage(Icons.BUY); - private final Image sellIcon = Icons.getIconImage(Icons.SELL); + private final Image buyIcon = ImageUtil.getIconImage(ImageUtil.BUY); + private final Image sellIcon = ImageUtil.getIconImage(ImageUtil.SELL); @FXML public AnchorPane holderPane; @FXML @@ -433,7 +433,7 @@ public class OrderBookController implements Initializable, ChildController if (offer.getMessagePublicKey().equals(user.getMessagePublicKey())) { - icon = Icons.getIconImage(Icons.REMOVE); + icon = ImageUtil.getIconImage(ImageUtil.REMOVE); title = "Remove"; button.setOnAction(event -> removeOffer(orderBookListItem.getOffer())); } @@ -499,7 +499,7 @@ public class OrderBookController implements Initializable, ChildController Country country = orderBookListItem.getOffer().getBankAccountCountry(); try { - hBox.getChildren().add(Icons.getIconImageView("/images/countries/" + country.getCode().toLowerCase() + ".png")); + hBox.getChildren().add(ImageUtil.getIconImageView("/images/countries/" + country.getCode().toLowerCase() + ".png")); } catch (Exception e) { diff --git a/src/main/java/io/bitsquare/gui/orders/offer/OfferController.java b/src/main/java/io/bitsquare/gui/orders/offer/OfferController.java index 1aec62e410..a1b0fd5ea5 100644 --- a/src/main/java/io/bitsquare/gui/orders/offer/OfferController.java +++ b/src/main/java/io/bitsquare/gui/orders/offer/OfferController.java @@ -3,7 +3,7 @@ package io.bitsquare.gui.orders.offer; import io.bitsquare.gui.ChildController; import io.bitsquare.gui.Hibernate; import io.bitsquare.gui.NavigationController; -import io.bitsquare.gui.util.Icons; +import io.bitsquare.gui.util.ImageUtil; import io.bitsquare.trade.Offer; import io.bitsquare.trade.TradeManager; import java.net.URL; @@ -172,7 +172,7 @@ public class OfferController implements Initializable, ChildController, Hibernat { return new TableCell() { - final ImageView iconView = Icons.getIconImageView(Icons.REMOVE); + final ImageView iconView = ImageUtil.getIconImageView(ImageUtil.REMOVE); final Button button = new Button(); { diff --git a/src/main/java/io/bitsquare/gui/orders/pending/PendingTradeController.java b/src/main/java/io/bitsquare/gui/orders/pending/PendingTradeController.java index 5aeeaebd43..80be476771 100644 --- a/src/main/java/io/bitsquare/gui/orders/pending/PendingTradeController.java +++ b/src/main/java/io/bitsquare/gui/orders/pending/PendingTradeController.java @@ -14,7 +14,7 @@ import io.bitsquare.gui.NavigationController; import io.bitsquare.gui.components.confidence.ConfidenceProgressIndicator; import io.bitsquare.gui.util.BitSquareFormatter; import io.bitsquare.gui.util.ConfidenceDisplay; -import io.bitsquare.gui.util.Icons; +import io.bitsquare.gui.util.ImageUtil; import io.bitsquare.locale.Country; import io.bitsquare.locale.Localisation; import io.bitsquare.trade.Direction; @@ -52,8 +52,8 @@ public class PendingTradeController implements Initializable, ChildController, H private Trade currentTrade; private NavigationController navigationController; - private Image buyIcon = Icons.getIconImage(Icons.BUY); - private Image sellIcon = Icons.getIconImage(Icons.SELL); + private Image buyIcon = ImageUtil.getIconImage(ImageUtil.BUY); + private Image sellIcon = ImageUtil.getIconImage(ImageUtil.SELL); private ConfidenceDisplay confidenceDisplay; @FXML @@ -390,7 +390,7 @@ public class PendingTradeController implements Initializable, ChildController, H Country country = tradesTableItem.getTrade().getOffer().getBankAccountCountry(); try { - hBox.getChildren().add(Icons.getIconImageView("/images/countries/" + country.getCode().toLowerCase() + ".png")); + hBox.getChildren().add(ImageUtil.getIconImageView("/images/countries/" + country.getCode().toLowerCase() + ".png")); } catch (Exception e) { diff --git a/src/main/java/io/bitsquare/gui/settings/SettingsController.java b/src/main/java/io/bitsquare/gui/settings/SettingsController.java index 992ae78dea..7bba3642dc 100644 --- a/src/main/java/io/bitsquare/gui/settings/SettingsController.java +++ b/src/main/java/io/bitsquare/gui/settings/SettingsController.java @@ -10,7 +10,7 @@ import io.bitsquare.gui.ChildController; import io.bitsquare.gui.NavigationController; import io.bitsquare.gui.NavigationItem; import io.bitsquare.gui.util.BitSquareValidator; -import io.bitsquare.gui.util.Icons; +import io.bitsquare.gui.util.ImageUtil; import io.bitsquare.locale.*; import io.bitsquare.msg.MessageFacade; import io.bitsquare.settings.Settings; @@ -358,7 +358,7 @@ public class SettingsController implements Initializable, ChildController, Navig final HBox hBox = new HBox(); final Label label = new Label(); final Button removeButton = new Button(); - final ImageView icon = Icons.getIconImageView(Icons.REMOVE); + final ImageView icon = ImageUtil.getIconImageView(ImageUtil.REMOVE); { label.setPrefWidth(565); @@ -443,7 +443,7 @@ public class SettingsController implements Initializable, ChildController, Navig final HBox hBox = new HBox(); final Label label = new Label(); final Button removeButton = new Button(); - final ImageView icon = Icons.getIconImageView(Icons.REMOVE); + final ImageView icon = ImageUtil.getIconImageView(ImageUtil.REMOVE); { label.setPrefWidth(565); @@ -513,7 +513,7 @@ public class SettingsController implements Initializable, ChildController, Navig final HBox hBox = new HBox(); final Label label = new Label(); final Button removeButton = new Button(); - final ImageView icon = Icons.getIconImageView(Icons.REMOVE); + final ImageView icon = ImageUtil.getIconImageView(ImageUtil.REMOVE); { label.setPrefWidth(565); diff --git a/src/main/java/io/bitsquare/gui/util/Icons.java b/src/main/java/io/bitsquare/gui/util/ImageUtil.java similarity index 82% rename from src/main/java/io/bitsquare/gui/util/Icons.java rename to src/main/java/io/bitsquare/gui/util/ImageUtil.java index 0cf614101b..ca516c26b9 100644 --- a/src/main/java/io/bitsquare/gui/util/Icons.java +++ b/src/main/java/io/bitsquare/gui/util/ImageUtil.java @@ -3,8 +3,11 @@ package io.bitsquare.gui.util; import javafx.scene.image.Image; import javafx.scene.image.ImageView; -public class Icons +public class ImageUtil { + public static final String SPLASH_LOGO = "/images/logo_200_270.png"; + public static final String SPLASH_LABEL = "/images/bitsquare_logo_label_300_69.png"; + public static final String SYS_TRAY = "/images/systemTrayIcon.png"; public static final String SYS_TRAY_ALERT = "/images/systemTrayAlertIcon.png"; @@ -32,12 +35,12 @@ public class Icons public static Image getIconImage(String iconName) { - return new Image(Icons.class.getResourceAsStream(iconName)); + return new Image(ImageUtil.class.getResourceAsStream(iconName)); } public static ImageView getIconImageView(String iconName) { - return new ImageView(new Image(Icons.class.getResourceAsStream(iconName))); + return new ImageView(new Image(ImageUtil.class.getResourceAsStream(iconName))); } } diff --git a/src/main/java/io/bitsquare/gui/util/Transitions.java b/src/main/java/io/bitsquare/gui/util/Transitions.java index 98ad331419..a203004478 100644 --- a/src/main/java/io/bitsquare/gui/util/Transitions.java +++ b/src/main/java/io/bitsquare/gui/util/Transitions.java @@ -6,74 +6,104 @@ import javafx.scene.Node; import javafx.scene.effect.GaussianBlur; import javafx.scene.layout.Pane; import javafx.util.Duration; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import static com.google.common.base.Preconditions.checkState; @SuppressWarnings("WeakerAccess") public class Transitions { + private static final Logger log = LoggerFactory.getLogger(Transitions.class); public static final int UI_ANIMATION_TIME = 800; - public static void fadeIn(Node ui) + public static void fadeIn(Node node) { - fadeIn(ui, UI_ANIMATION_TIME); + fadeIn(node, UI_ANIMATION_TIME); } @SuppressWarnings("SameParameterValue") - public static void fadeIn(Node ui, int time) + public static void fadeIn(Node node, int duration) { - FadeTransition ft = new FadeTransition(Duration.millis(time), ui); + FadeTransition ft = new FadeTransition(Duration.millis(duration), node); ft.setFromValue(0.0); ft.setToValue(1.0); ft.play(); } - - public static Animation fadeOut(Node ui) + public static Animation fadeOut(Node node) { - FadeTransition ft = new FadeTransition(Duration.millis(UI_ANIMATION_TIME), ui); - ft.setFromValue(ui.getOpacity()); + return fadeOut(node, UI_ANIMATION_TIME); + } + + public static Animation fadeOut(Node node, int duration) + { + FadeTransition ft = new FadeTransition(Duration.millis(duration), node); + ft.setFromValue(node.getOpacity()); ft.setToValue(0.0); ft.play(); return ft; } @SuppressWarnings("UnusedReturnValue") - - public static Animation fadeOutAndRemove(Node ui) + public static Animation fadeOutAndRemove(Node node) { - Animation animation = fadeOut(ui); - animation.setOnFinished(actionEvent -> ((Pane) (ui.getParent())).getChildren().remove(ui)); + return fadeOutAndRemove(node, UI_ANIMATION_TIME); + } + + public static Animation fadeOutAndRemove(Node node, int duration) + { + Animation animation = fadeOut(node, duration); + animation.setOnFinished(actionEvent -> { + ((Pane) (node.getParent())).getChildren().remove(node); + Profiler.printMsgWithTime("fadeOutAndRemove"); + }); return animation; } + public static Timeline blurOutAndRemove(Node node) + { + return blurOutAndRemove(node, UI_ANIMATION_TIME); + } + + public static Timeline blurOutAndRemove(Node node, int duration) + { + Timeline timeline = blurOut(node, duration); + timeline.setOnFinished(actionEvent -> { + ((Pane) (node.getParent())).getChildren().remove(node); + Profiler.printMsgWithTime("blurOutAndRemove"); + }); + return timeline; + } + public static void blurOut(Node node) { blurOut(node, UI_ANIMATION_TIME); } @SuppressWarnings("SameParameterValue") - public static void blurOut(Node node, int time) + public static Timeline blurOut(Node node, int duration) { GaussianBlur blur = new GaussianBlur(0.0); node.setEffect(blur); Timeline timeline = new Timeline(); KeyValue kv = new KeyValue(blur.radiusProperty(), 10.0); - KeyFrame kf = new KeyFrame(Duration.millis(time), kv); + KeyFrame kf = new KeyFrame(Duration.millis(duration), kv); timeline.getKeyFrames().add(kf); timeline.play(); + return timeline; } public static void blurIn(Node node) { GaussianBlur blur = (GaussianBlur) node.getEffect(); - Timeline timeline = new Timeline(); + Timeline durationline = new Timeline(); KeyValue kv = new KeyValue(blur.radiusProperty(), 0.0); KeyFrame kf = new KeyFrame(Duration.millis(UI_ANIMATION_TIME), kv); - timeline.getKeyFrames().add(kf); - timeline.setOnFinished(actionEvent -> node.setEffect(null)); - timeline.play(); + durationline.getKeyFrames().add(kf); + durationline.setOnFinished(actionEvent -> node.setEffect(null)); + durationline.play(); } public static void checkGuiThread() diff --git a/src/main/java/io/bitsquare/gui/validation.css b/src/main/java/io/bitsquare/gui/validation.css deleted file mode 100644 index c07d0ce106..0000000000 --- a/src/main/java/io/bitsquare/gui/validation.css +++ /dev/null @@ -1,22 +0,0 @@ -.text-field.validation_error, .text-area.validation_error .content, .date-picker.validation_error > .text-field { - -fx-effect: innershadow(three-pass-box, red, 12 , 0.5, 1, 1); -} - - -#error-msg-item .label { - -fx-text-fill: white; -} - -#error-msg-item:focused { - -fx-background-color: #B80000; -} - -#error-msg-item:focused .label { - -fx-text-fill: white; -} - -#error-msg { - -fx-background-color: #B80000; - -fx-padding: 0; - -fx-background-radius: 4 4 4 4; -} diff --git a/src/main/java/io/bitsquare/msg/MessageFacade.java b/src/main/java/io/bitsquare/msg/MessageFacade.java index 2a3d31c671..658659334e 100644 --- a/src/main/java/io/bitsquare/msg/MessageFacade.java +++ b/src/main/java/io/bitsquare/msg/MessageFacade.java @@ -258,7 +258,7 @@ public class MessageFacade implements MessageBroker Platform.runLater(() -> orderBookListeners.stream().forEach(orderBookListener -> orderBookListener.onOffersReceived(futureGet.dataMap(), baseFuture.isSuccess()))); if (baseFuture.isSuccess()) { - log.trace("Get offers from DHT was successful. Stored data: [key: " + locationKey + ", values: " + futureGet.dataMap() + "]"); + //log.trace("Get offers from DHT was successful. Stored data: [key: " + locationKey + ", values: " + futureGet.dataMap() + "]"); } else { diff --git a/src/main/java/io/bitsquare/util/AWTSystemTray.java b/src/main/java/io/bitsquare/util/AWTSystemTray.java index 7ada023d62..ad3835d395 100644 --- a/src/main/java/io/bitsquare/util/AWTSystemTray.java +++ b/src/main/java/io/bitsquare/util/AWTSystemTray.java @@ -2,7 +2,7 @@ package io.bitsquare.util; import io.bitsquare.BitSquare; -import io.bitsquare.gui.util.Icons; +import io.bitsquare.gui.util.ImageUtil; import java.awt.*; import javafx.application.Platform; import javafx.stage.Stage; @@ -27,7 +27,7 @@ public class AWTSystemTray Platform.setImplicitExit(false); SystemTray systemTray = SystemTray.getSystemTray(); - trayIcon = new TrayIcon(getImage(Icons.SYS_TRAY)); + trayIcon = new TrayIcon(getImage(ImageUtil.SYS_TRAY)); trayIcon.setToolTip("BitSquare P2P Fiat-Bitcoin exchange"); PopupMenu popupMenu = new PopupMenu(); @@ -78,12 +78,12 @@ public class AWTSystemTray public static void setAlert() { - trayIcon.setImage(getImage(Icons.SYS_TRAY_ALERT)); + trayIcon.setImage(getImage(ImageUtil.SYS_TRAY_ALERT)); } public static void unSetAlert() { - trayIcon.setImage(getImage(Icons.SYS_TRAY)); + trayIcon.setImage(getImage(ImageUtil.SYS_TRAY)); } public static void setStageHidden() diff --git a/src/main/resources/images/bitsquare_logo_label_300_69.png b/src/main/resources/images/bitsquare_logo_label_300_69.png new file mode 100644 index 0000000000000000000000000000000000000000..c2b83609f1b6ac58bfecef9f0c44b71849295681 GIT binary patch literal 12858 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/images/logo.png b/src/main/resources/images/logo.png deleted file mode 100644 index 67a24d97e4f3f5e1f44b393f82c20b9ad80cf04f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46625 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 literal 0 HcmV?d00001