From a2c98d9ea35ece32cd554aee7c1add444f5e2ff4 Mon Sep 17 00:00:00 2001 From: Chris Beams Date: Mon, 24 Nov 2014 08:15:20 +0100 Subject: [PATCH] Extract ViewLoader interface and introduce FxmlViewLoader --- .../io/bitsquare/app/gui/BitsquareApp.java | 4 ++-- src/main/java/io/bitsquare/gui/GuiModule.java | 5 +++-- .../java/io/bitsquare/gui/main/MainView.java | 2 +- .../gui/main/account/AccountView.java | 2 +- .../arbitrator/ArbitratorSettingsView.java | 6 ++--- .../browser/ArbitratorBrowserView.java | 2 +- .../restrictions/RestrictionsView.java | 6 ++--- .../account/settings/AccountSettingsView.java | 2 +- .../account/setup/AccountSetupWizard.java | 2 +- .../bitsquare/gui/main/funds/FundsView.java | 2 +- .../gui/main/portfolio/PortfolioView.java | 2 +- .../gui/main/settings/SettingsView.java | 2 +- .../io/bitsquare/gui/main/trade/BuyView.java | 4 ++-- .../io/bitsquare/gui/main/trade/SellView.java | 4 ++-- .../bitsquare/gui/main/trade/TradeView.java | 6 ++--- src/main/java/viewfx/view/ViewLoader.java | 22 +++++++++++++++++++ .../FxmlViewLoader.java} | 8 ++++--- .../io/bitsquare/app/gui/ViewLoaderTests.java | 6 ++--- 18 files changed, 56 insertions(+), 31 deletions(-) create mode 100644 src/main/java/viewfx/view/ViewLoader.java rename src/main/java/viewfx/view/{support/ViewLoader.java => fxml/FxmlViewLoader.java} (89%) diff --git a/src/main/java/io/bitsquare/app/gui/BitsquareApp.java b/src/main/java/io/bitsquare/app/gui/BitsquareApp.java index 066924b2b0..8335f05bc0 100644 --- a/src/main/java/io/bitsquare/app/gui/BitsquareApp.java +++ b/src/main/java/io/bitsquare/app/gui/BitsquareApp.java @@ -39,7 +39,7 @@ import java.nio.file.Path; import java.nio.file.Paths; import viewfx.view.View; -import viewfx.view.support.ViewLoader; +import viewfx.view.fxml.FxmlViewLoader; import viewfx.view.support.guice.GuiceViewFactory; import javafx.application.Application; @@ -95,7 +95,7 @@ public class BitsquareApp extends Application { // load the main view and create the main scene - ViewLoader viewLoader = injector.getInstance(ViewLoader.class); + FxmlViewLoader viewLoader = injector.getInstance(FxmlViewLoader.class); View view = viewLoader.load(Navigation.Item.MAIN.getFxmlUrl(), false); Scene scene = new Scene((Parent) view.getRoot(), 1000, 600); diff --git a/src/main/java/io/bitsquare/gui/GuiModule.java b/src/main/java/io/bitsquare/gui/GuiModule.java index 003fc35b4c..3cc9d9d4b8 100644 --- a/src/main/java/io/bitsquare/gui/GuiModule.java +++ b/src/main/java/io/bitsquare/gui/GuiModule.java @@ -36,7 +36,8 @@ import com.google.inject.name.Names; import java.util.ResourceBundle; import viewfx.view.ViewFactory; -import viewfx.view.support.ViewLoader; +import viewfx.view.ViewLoader; +import viewfx.view.fxml.FxmlViewLoader; import viewfx.view.support.guice.GuiceViewFactory; import javafx.stage.Stage; @@ -58,7 +59,7 @@ public class GuiModule extends BitsquareModule { bind(ViewFactory.class).to(GuiceViewFactory.class); bind(ResourceBundle.class).toInstance(BSResources.getResourceBundle()); - bind(ViewLoader.class).asEagerSingleton(); + bind(ViewLoader.class).to(FxmlViewLoader.class).asEagerSingleton(); bind(OfferBook.class).asEagerSingleton(); bind(Navigation.class).asEagerSingleton(); diff --git a/src/main/java/io/bitsquare/gui/main/MainView.java b/src/main/java/io/bitsquare/gui/main/MainView.java index 46d13f0166..e1b1332a1f 100644 --- a/src/main/java/io/bitsquare/gui/main/MainView.java +++ b/src/main/java/io/bitsquare/gui/main/MainView.java @@ -29,7 +29,7 @@ import javax.inject.Inject; import javax.inject.Named; import viewfx.view.View; -import viewfx.view.support.ViewLoader; +import viewfx.view.ViewLoader; import viewfx.view.support.ActivatableView; import javafx.application.Platform; diff --git a/src/main/java/io/bitsquare/gui/main/account/AccountView.java b/src/main/java/io/bitsquare/gui/main/account/AccountView.java index d6c20fc926..b05a4b309d 100644 --- a/src/main/java/io/bitsquare/gui/main/account/AccountView.java +++ b/src/main/java/io/bitsquare/gui/main/account/AccountView.java @@ -22,7 +22,7 @@ import io.bitsquare.gui.Navigation; import javax.inject.Inject; import viewfx.view.View; -import viewfx.view.support.ViewLoader; +import viewfx.view.ViewLoader; import viewfx.view.support.ActivatableView; import javafx.beans.value.ChangeListener; diff --git a/src/main/java/io/bitsquare/gui/main/account/arbitrator/ArbitratorSettingsView.java b/src/main/java/io/bitsquare/gui/main/account/arbitrator/ArbitratorSettingsView.java index 4c73869b19..c4302d252b 100644 --- a/src/main/java/io/bitsquare/gui/main/account/arbitrator/ArbitratorSettingsView.java +++ b/src/main/java/io/bitsquare/gui/main/account/arbitrator/ArbitratorSettingsView.java @@ -23,7 +23,7 @@ import io.bitsquare.gui.main.account.arbitrator.registration.ArbitratorRegistrat import javax.inject.Inject; import viewfx.view.View; -import viewfx.view.support.ViewLoader; +import viewfx.view.fxml.FxmlViewLoader; import viewfx.view.support.AbstractView; import javafx.fxml.FXML; @@ -36,12 +36,12 @@ class ArbitratorSettingsView extends AbstractView { private ArbitratorRegistrationView arbitratorRegistrationView; - private final ViewLoader viewLoader; + private final FxmlViewLoader viewLoader; private final Navigation navigation; private final Stage primaryStage; @Inject - private ArbitratorSettingsView(ViewLoader viewLoader, Navigation navigation, Stage primaryStage) { + private ArbitratorSettingsView(FxmlViewLoader viewLoader, Navigation navigation, Stage primaryStage) { this.viewLoader = viewLoader; this.navigation = navigation; this.primaryStage = primaryStage; diff --git a/src/main/java/io/bitsquare/gui/main/account/arbitrator/browser/ArbitratorBrowserView.java b/src/main/java/io/bitsquare/gui/main/account/arbitrator/browser/ArbitratorBrowserView.java index 83841af4e3..25c86daef5 100644 --- a/src/main/java/io/bitsquare/gui/main/account/arbitrator/browser/ArbitratorBrowserView.java +++ b/src/main/java/io/bitsquare/gui/main/account/arbitrator/browser/ArbitratorBrowserView.java @@ -32,7 +32,7 @@ import java.util.List; import javax.inject.Inject; import viewfx.view.View; -import viewfx.view.support.ViewLoader; +import viewfx.view.ViewLoader; import viewfx.view.support.ActivatableView; import javafx.fxml.FXML; diff --git a/src/main/java/io/bitsquare/gui/main/account/content/restrictions/RestrictionsView.java b/src/main/java/io/bitsquare/gui/main/account/content/restrictions/RestrictionsView.java index 0172d37ba0..0640727bb9 100644 --- a/src/main/java/io/bitsquare/gui/main/account/content/restrictions/RestrictionsView.java +++ b/src/main/java/io/bitsquare/gui/main/account/content/restrictions/RestrictionsView.java @@ -30,7 +30,7 @@ import java.util.Locale; import javax.inject.Inject; import viewfx.view.View; -import viewfx.view.support.ViewLoader; +import viewfx.view.fxml.FxmlViewLoader; import viewfx.view.Wizard; import viewfx.view.support.ActivatableViewAndModel; @@ -56,11 +56,11 @@ public class RestrictionsView extends ActivatableViewAndModel { private Fiat price; private Offer offer; - private final ViewLoader viewLoader; + private final FxmlViewLoader viewLoader; private final Navigation navigation; - protected TradeView(ViewLoader viewLoader, Navigation navigation) { + protected TradeView(FxmlViewLoader viewLoader, Navigation navigation) { this.viewLoader = viewLoader; this.navigation = navigation; } diff --git a/src/main/java/viewfx/view/ViewLoader.java b/src/main/java/viewfx/view/ViewLoader.java new file mode 100644 index 0000000000..d148af7a2e --- /dev/null +++ b/src/main/java/viewfx/view/ViewLoader.java @@ -0,0 +1,22 @@ +/* + * 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 viewfx.view; + +public interface ViewLoader { + View load(Location location); +} diff --git a/src/main/java/viewfx/view/support/ViewLoader.java b/src/main/java/viewfx/view/fxml/FxmlViewLoader.java similarity index 89% rename from src/main/java/viewfx/view/support/ViewLoader.java rename to src/main/java/viewfx/view/fxml/FxmlViewLoader.java index 5245cadde7..aab219ce6c 100644 --- a/src/main/java/viewfx/view/support/ViewLoader.java +++ b/src/main/java/viewfx/view/fxml/FxmlViewLoader.java @@ -15,7 +15,7 @@ * along with Bitsquare. If not, see . */ -package viewfx.view.support; +package viewfx.view.fxml; import java.io.IOException; @@ -29,21 +29,23 @@ import javax.inject.Inject; import viewfx.view.View; import viewfx.view.ViewFactory; +import viewfx.view.ViewLoader; import javafx.fxml.FXMLLoader; -public class ViewLoader { +public class FxmlViewLoader implements ViewLoader { private final Map cache = new HashMap<>(); private final ViewFactory viewFactory; private final ResourceBundle resourceBundle; @Inject - public ViewLoader(ViewFactory viewFactory, ResourceBundle resourceBundle) { + public FxmlViewLoader(ViewFactory viewFactory, ResourceBundle resourceBundle) { this.viewFactory = viewFactory; this.resourceBundle = resourceBundle; } + @Override public View load(URL url) { return load(url, true); } diff --git a/src/test/java/io/bitsquare/app/gui/ViewLoaderTests.java b/src/test/java/io/bitsquare/app/gui/ViewLoaderTests.java index 039911339d..94a3fa9084 100644 --- a/src/test/java/io/bitsquare/app/gui/ViewLoaderTests.java +++ b/src/test/java/io/bitsquare/app/gui/ViewLoaderTests.java @@ -29,7 +29,7 @@ import java.net.MalformedURLException; import java.util.ResourceBundle; -import viewfx.view.support.ViewLoader; +import viewfx.view.fxml.FxmlViewLoader; import viewfx.view.support.guice.GuiceViewFactory; import javafx.application.Application; @@ -81,11 +81,11 @@ public class ViewLoaderTests { @Test(expected = BitsquareException.class) public void loadingBogusFxmlResourceShouldThrow() throws MalformedURLException { - new ViewLoader(viewFactory, resourceBundle).load(Navigation.Item.BOGUS.getFxmlUrl(), false); + new FxmlViewLoader(viewFactory, resourceBundle).load(Navigation.Item.BOGUS.getFxmlUrl(), false); } @Test public void loadingValidFxmlResourceShouldNotThrow() { - new ViewLoader(viewFactory, resourceBundle).load(Navigation.Item.ACCOUNT.getFxmlUrl(), false); + new FxmlViewLoader(viewFactory, resourceBundle).load(Navigation.Item.ACCOUNT.getFxmlUrl(), false); } } \ No newline at end of file