diff --git a/src/main/java/io/bitsquare/gui/ViewController.java b/src/main/java/io/bitsquare/gui/ViewController.java
index 1ecac09ab8..abe6f07838 100644
--- a/src/main/java/io/bitsquare/gui/ViewController.java
+++ b/src/main/java/io/bitsquare/gui/ViewController.java
@@ -77,7 +77,7 @@ public abstract class ViewController implements Initializable {
* @param parentController Controller who has created this.getClass().getSimpleName() instance (via
* navigateToView/FXMLLoader).
*/
- public void setParentController(ViewController parentController) {
+ public void setParentController(Initializable parentController) {
log.trace("Lifecycle: setParentController " + this.getClass().getSimpleName() + " / parent = " +
parentController);
this.parentController = parentController;
diff --git a/src/main/java/io/bitsquare/gui/main/arbitrators/browser/ArbitratorBrowserController.java b/src/main/java/io/bitsquare/gui/main/arbitrators/browser/ArbitratorBrowserController.java
index 7bbde97e15..5543f0c915 100644
--- a/src/main/java/io/bitsquare/gui/main/arbitrators/browser/ArbitratorBrowserController.java
+++ b/src/main/java/io/bitsquare/gui/main/arbitrators/browser/ArbitratorBrowserController.java
@@ -20,7 +20,6 @@ package io.bitsquare.gui.main.arbitrators.browser;
import io.bitsquare.arbitrator.Arbitrator;
import io.bitsquare.gui.CachedViewController;
import io.bitsquare.gui.NavigationItem;
-import io.bitsquare.gui.ViewController;
import io.bitsquare.gui.main.arbitrators.profile.ArbitratorProfileController;
import io.bitsquare.locale.LanguageUtil;
import io.bitsquare.msg.MessageFacade;
@@ -117,7 +116,7 @@ public class ArbitratorBrowserController extends CachedViewController implements
///////////////////////////////////////////////////////////////////////////////////////////
@Override
- public void setParentController(ViewController parentController) {
+ public void setParentController(Initializable parentController) {
super.setParentController(parentController);
}
diff --git a/src/main/java/io/bitsquare/gui/main/arbitrators/profile/ArbitratorProfileController.java b/src/main/java/io/bitsquare/gui/main/arbitrators/profile/ArbitratorProfileController.java
index 403da21583..cb88c8fcea 100644
--- a/src/main/java/io/bitsquare/gui/main/arbitrators/profile/ArbitratorProfileController.java
+++ b/src/main/java/io/bitsquare/gui/main/arbitrators/profile/ArbitratorProfileController.java
@@ -20,7 +20,6 @@ package io.bitsquare.gui.main.arbitrators.profile;
import io.bitsquare.arbitrator.Arbitrator;
import io.bitsquare.gui.CachedViewController;
import io.bitsquare.gui.NavigationItem;
-import io.bitsquare.gui.ViewController;
import io.bitsquare.gui.util.BSFormatter;
import io.bitsquare.persistence.Persistence;
import io.bitsquare.settings.Settings;
@@ -95,7 +94,7 @@ public class ArbitratorProfileController extends CachedViewController {
///////////////////////////////////////////////////////////////////////////////////////////
@Override
- public void setParentController(ViewController parentController) {
+ public void setParentController(Initializable parentController) {
super.setParentController(parentController);
}
diff --git a/src/main/java/io/bitsquare/gui/main/arbitrators/registration/ArbitratorRegistrationController.java b/src/main/java/io/bitsquare/gui/main/arbitrators/registration/ArbitratorRegistrationController.java
index 079c80809a..a1323493d1 100644
--- a/src/main/java/io/bitsquare/gui/main/arbitrators/registration/ArbitratorRegistrationController.java
+++ b/src/main/java/io/bitsquare/gui/main/arbitrators/registration/ArbitratorRegistrationController.java
@@ -22,7 +22,6 @@ import io.bitsquare.arbitrator.Reputation;
import io.bitsquare.btc.WalletFacade;
import io.bitsquare.gui.CachedViewController;
import io.bitsquare.gui.NavigationItem;
-import io.bitsquare.gui.ViewController;
import io.bitsquare.gui.components.ConfidenceDisplay;
import io.bitsquare.gui.components.confidence.ConfidenceProgressIndicator;
import io.bitsquare.gui.main.arbitrators.profile.ArbitratorProfileController;
@@ -220,7 +219,7 @@ public class ArbitratorRegistrationController extends CachedViewController {
///////////////////////////////////////////////////////////////////////////////////////////
@Override
- public void setParentController(ViewController parentController) {
+ public void setParentController(Initializable parentController) {
super.setParentController(parentController);
}
diff --git a/src/main/java/io/bitsquare/gui/main/trade/BuyView.fxml b/src/main/java/io/bitsquare/gui/main/trade/BuyView.fxml
index 5f95619822..21f0ac1778 100644
--- a/src/main/java/io/bitsquare/gui/main/trade/BuyView.fxml
+++ b/src/main/java/io/bitsquare/gui/main/trade/BuyView.fxml
@@ -19,7 +19,7 @@
-
diff --git a/src/main/java/io/bitsquare/gui/main/trade/BuyController.java b/src/main/java/io/bitsquare/gui/main/trade/BuyViewCB.java
similarity index 77%
rename from src/main/java/io/bitsquare/gui/main/trade/BuyController.java
rename to src/main/java/io/bitsquare/gui/main/trade/BuyViewCB.java
index 3c07746a4c..0aed8e74e6 100644
--- a/src/main/java/io/bitsquare/gui/main/trade/BuyController.java
+++ b/src/main/java/io/bitsquare/gui/main/trade/BuyViewCB.java
@@ -21,17 +21,16 @@ import io.bitsquare.trade.Direction;
import javax.inject.Inject;
-public class BuyController extends TradeController {
+public class BuyViewCB extends TradeViewCB {
@Inject
- public BuyController(TradePM presentationModel) {
+ public BuyViewCB(TradePM presentationModel) {
super(presentationModel);
}
@Override
- protected void applyDirection() {
- //tabPane.getSelectionModel().select(0);
- orderBookController.applyDirection(Direction.BUY);
+ protected void initOrderBook() {
+ orderBookViewCB.initOrderBook(Direction.BUY);
}
}
diff --git a/src/main/java/io/bitsquare/gui/main/trade/SellView.fxml b/src/main/java/io/bitsquare/gui/main/trade/SellView.fxml
index 61b2a99035..1fda938055 100644
--- a/src/main/java/io/bitsquare/gui/main/trade/SellView.fxml
+++ b/src/main/java/io/bitsquare/gui/main/trade/SellView.fxml
@@ -19,7 +19,7 @@
-
diff --git a/src/main/java/io/bitsquare/gui/main/trade/SellController.java b/src/main/java/io/bitsquare/gui/main/trade/SellViewCB.java
similarity index 81%
rename from src/main/java/io/bitsquare/gui/main/trade/SellController.java
rename to src/main/java/io/bitsquare/gui/main/trade/SellViewCB.java
index 0f1e50a6af..6a0423f60a 100644
--- a/src/main/java/io/bitsquare/gui/main/trade/SellController.java
+++ b/src/main/java/io/bitsquare/gui/main/trade/SellViewCB.java
@@ -21,16 +21,16 @@ import io.bitsquare.trade.Direction;
import javax.inject.Inject;
-public class SellController extends TradeController {
+public class SellViewCB extends TradeViewCB {
@Inject
- public SellController(TradePM presentationModel) {
+ public SellViewCB(TradePM presentationModel) {
super(presentationModel);
}
@Override
- protected void applyDirection() {
- orderBookController.applyDirection(Direction.SELL);
+ protected void initOrderBook() {
+ orderBookViewCB.initOrderBook(Direction.SELL);
}
diff --git a/src/main/java/io/bitsquare/gui/main/trade/TradeController.java b/src/main/java/io/bitsquare/gui/main/trade/TradeViewCB.java
similarity index 71%
rename from src/main/java/io/bitsquare/gui/main/trade/TradeController.java
rename to src/main/java/io/bitsquare/gui/main/trade/TradeViewCB.java
index 802e80810d..08c33bc8d2 100644
--- a/src/main/java/io/bitsquare/gui/main/trade/TradeController.java
+++ b/src/main/java/io/bitsquare/gui/main/trade/TradeViewCB.java
@@ -21,9 +21,8 @@ import io.bitsquare.gui.CachedViewCB;
import io.bitsquare.gui.NavigationItem;
import io.bitsquare.gui.components.InputTextField;
import io.bitsquare.gui.main.trade.createoffer.CreateOfferViewCB;
-import io.bitsquare.gui.main.trade.orderbook.OrderBookController;
+import io.bitsquare.gui.main.trade.orderbook.OrderBookViewCB;
import io.bitsquare.gui.main.trade.takeoffer.TakeOfferController;
-import io.bitsquare.trade.Direction;
import io.bitsquare.util.BSFXMLLoader;
import java.io.IOException;
@@ -33,6 +32,7 @@ import java.net.URL;
import java.util.List;
import java.util.ResourceBundle;
+import javafx.application.Platform;
import javafx.collections.ListChangeListener;
import javafx.fxml.Initializable;
import javafx.scene.*;
@@ -43,13 +43,12 @@ import org.slf4j.LoggerFactory;
import static com.google.common.base.Preconditions.checkArgument;
-public class TradeController extends CachedViewCB {
- private static final Logger log = LoggerFactory.getLogger(TradeController.class);
+public abstract class TradeViewCB extends CachedViewCB {
+ private static final Logger log = LoggerFactory.getLogger(TradeViewCB.class);
- protected OrderBookController orderBookController;
- protected CreateOfferViewCB createOfferCodeBehind;
+ protected OrderBookViewCB orderBookViewCB;
+ protected CreateOfferViewCB createOfferViewCB;
protected TakeOfferController takeOfferController;
- protected BSFXMLLoader orderBookLoader;
private Node createOfferView;
@@ -57,7 +56,7 @@ public class TradeController extends CachedViewCB {
// Constructor
///////////////////////////////////////////////////////////////////////////////////////////
- protected TradeController(TradePM presentationModel) {
+ protected TradeViewCB(TradePM presentationModel) {
super(presentationModel);
}
@@ -72,33 +71,29 @@ public class TradeController extends CachedViewCB {
super.initialize(url, rb);
loadView(NavigationItem.ORDER_BOOK);
+ initOrderBook();
}
@Override
public void activate() {
super.activate();
- applyDirection();
-
- // TODO find better solution
- // Textfield focus out triggers validation, use runLater as quick fix...
-
- //TODO update to new verison
- ((TabPane) root).getSelectionModel().selectedIndexProperty().addListener((observableValue, oldValue,
- newValue) ->
- {
- InputTextField.hideErrorMessageDisplay();
- }
- );
+ // We need to remove open validation error popups
+ // TODO Find a way to do that in the InputTextField directly, but a tab change does not trigger any event there
+ // Platform.runLater needed as focusout evetn is called after selectedIndexProperty changed
+ TabPane tabPane = (TabPane) root;
+ tabPane.getSelectionModel().selectedIndexProperty()
+ .addListener((observableValue, oldValue, newValue) ->
+ Platform.runLater(InputTextField::hideErrorMessageDisplay));
// We want to get informed when a tab get closed
- ((TabPane) root).getTabs().addListener((ListChangeListener) change -> {
+ tabPane.getTabs().addListener((ListChangeListener) change -> {
change.next();
List extends Tab> removedTabs = change.getRemoved();
if (removedTabs.size() == 1 && removedTabs.get(0).getContent().equals(createOfferView)) {
- if (createOfferCodeBehind != null) {
- createOfferCodeBehind.terminate();
- createOfferCodeBehind = null;
+ if (createOfferViewCB != null) {
+ createOfferViewCB.terminate();
+ createOfferViewCB = null;
}
}
});
@@ -127,47 +122,46 @@ public class TradeController extends CachedViewCB {
TabPane tabPane = (TabPane) root;
if (navigationItem == NavigationItem.ORDER_BOOK) {
- checkArgument(orderBookLoader == null);
+ checkArgument(orderBookViewCB == null);
// Orderbook must not be cached by GuiceFXMLLoader as we use 2 instances for sell and buy screens.
- orderBookLoader =
- new BSFXMLLoader(getClass().getResource(NavigationItem.ORDER_BOOK.getFxmlUrl()), false);
+ BSFXMLLoader orderBookLoader =
+ new BSFXMLLoader(getClass().getResource(navigationItem.getFxmlUrl()), false);
try {
final Parent view = orderBookLoader.load();
final Tab tab = new Tab("Orderbook");
tab.setClosable(false);
tab.setContent(view);
tabPane.getTabs().add(tab);
+ orderBookViewCB = orderBookLoader.getController();
+ orderBookViewCB.setParent(this);
+ return orderBookViewCB;
} catch (IOException e) {
log.error(e.getMessage());
}
- orderBookController = orderBookLoader.getController();
- orderBookController.setParent(this);
- return orderBookController;
}
else if (navigationItem == NavigationItem.CREATE_OFFER) {
- checkArgument(createOfferCodeBehind == null);
+ checkArgument(createOfferViewCB == null);
// CreateOffer and TakeOffer must not be cached by GuiceFXMLLoader as we cannot use a view multiple times
// in different graphs
BSFXMLLoader loader = new BSFXMLLoader(getClass().getResource(navigationItem.getFxmlUrl()), false);
try {
createOfferView = loader.load();
- createOfferCodeBehind = loader.getController();
- createOfferCodeBehind.setParent(this);
- createOfferCodeBehind.setOnClose(() -> {
- orderBookController.onCreateOfferViewRemoved();
+ createOfferViewCB = loader.getController();
+ createOfferViewCB.setParent(this);
+ createOfferViewCB.setOnClose(() -> {
+ orderBookViewCB.enableCreateOfferButton();
return null;
});
final Tab tab = new Tab("Create offer");
tab.setContent(createOfferView);
tabPane.getTabs().add(tab);
- tabPane.getSelectionModel().select(tabPane.getTabs().size() - 1);
- return createOfferCodeBehind;
+ tabPane.getSelectionModel().select(tab);
+ return createOfferViewCB;
} catch (IOException e) {
log.error(e.getMessage());
}
- return null;
}
else if (navigationItem == NavigationItem.TAKE_OFFER) {
checkArgument(takeOfferController == null);
@@ -178,22 +172,20 @@ public class TradeController extends CachedViewCB {
try {
final Parent view = loader.load();
takeOfferController = loader.getController();
- //TODO
- //takeOfferController.setParentController(this);
+ takeOfferController.setParentController(this);
final Tab tab = new Tab("Take offer");
tab.setContent(view);
tabPane.getTabs().add(tab);
- tabPane.getSelectionModel().select(tabPane.getTabs().size() - 1);
+ tabPane.getSelectionModel().select(tab);
return takeOfferController;
} catch (IOException e) {
log.error(e.getMessage());
}
- return null;
}
else {
log.error("navigationItem not supported: " + navigationItem);
- return null;
}
+ return null;
}
@@ -202,7 +194,8 @@ public class TradeController extends CachedViewCB {
///////////////////////////////////////////////////////////////////////////////////////////
public void onCreateOfferViewRemoved() {
- orderBookController.onCreateOfferViewRemoved();
+ createOfferViewCB = null;
+ orderBookViewCB.enableCreateOfferButton();
}
public void onTakeOfferViewRemoved() {
@@ -211,13 +204,10 @@ public class TradeController extends CachedViewCB {
///////////////////////////////////////////////////////////////////////////////////////////
- // Protected
+ // Abstract methods
///////////////////////////////////////////////////////////////////////////////////////////
- // Template method to be overwritten by sub class.
- protected void applyDirection() {
- orderBookController.applyDirection(Direction.SELL);
- }
+ abstract protected void initOrderBook();
}
diff --git a/src/main/java/io/bitsquare/gui/main/trade/orderbook/OrderBookView.fxml b/src/main/java/io/bitsquare/gui/main/trade/orderbook/OrderBookView.fxml
index d55df7770a..b3ad24c499 100644
--- a/src/main/java/io/bitsquare/gui/main/trade/orderbook/OrderBookView.fxml
+++ b/src/main/java/io/bitsquare/gui/main/trade/orderbook/OrderBookView.fxml
@@ -21,7 +21,7 @@
-
diff --git a/src/main/java/io/bitsquare/gui/main/trade/orderbook/OrderBookController.java b/src/main/java/io/bitsquare/gui/main/trade/orderbook/OrderBookViewCB.java
similarity index 97%
rename from src/main/java/io/bitsquare/gui/main/trade/orderbook/OrderBookController.java
rename to src/main/java/io/bitsquare/gui/main/trade/orderbook/OrderBookViewCB.java
index a585345005..d8b5ff47af 100644
--- a/src/main/java/io/bitsquare/gui/main/trade/orderbook/OrderBookController.java
+++ b/src/main/java/io/bitsquare/gui/main/trade/orderbook/OrderBookViewCB.java
@@ -82,8 +82,8 @@ import org.jetbrains.annotations.NotNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class OrderBookController extends CachedViewCB {
- private static final Logger log = LoggerFactory.getLogger(OrderBookController.class);
+public class OrderBookViewCB extends CachedViewCB {
+ private static final Logger log = LoggerFactory.getLogger(OrderBookViewCB.class);
private NavigationController navigationController;
private OverlayController overlayController;
@@ -114,12 +114,12 @@ public class OrderBookController extends CachedViewCB {
///////////////////////////////////////////////////////////////////////////////////////////
@Inject
- private OrderBookController(OrderBookPM presentationModel,
- NavigationController navigationController,
- OverlayController overlayController,
- OrderBook orderBook, User user,
- MessageFacade messageFacade,
- WalletFacade walletFacade, Settings settings, Persistence persistence) {
+ private OrderBookViewCB(OrderBookPM presentationModel,
+ NavigationController navigationController,
+ OverlayController overlayController,
+ OrderBook orderBook, User user,
+ MessageFacade messageFacade,
+ WalletFacade walletFacade, Settings settings, Persistence persistence) {
super(presentationModel);
this.navigationController = navigationController;
@@ -226,7 +226,7 @@ public class OrderBookController extends CachedViewCB {
// Public methods
///////////////////////////////////////////////////////////////////////////////////////////
- public void applyDirection(Direction direction) {
+ public void initOrderBook(Direction direction) {
init();
orderBookTable.getSelectionModel().clearSelection();
price.setText("");
@@ -542,7 +542,7 @@ public class OrderBookController extends CachedViewCB {
volume.setText(BSFormatter.formatFiat(Fiat.valueOf("EUR", (long) (a * p))));
}
- public void onCreateOfferViewRemoved() {
+ public void enableCreateOfferButton() {
createOfferButton.setDisable(false);
}
diff --git a/src/main/java/io/bitsquare/gui/main/trade/takeoffer/TakeOfferController.java b/src/main/java/io/bitsquare/gui/main/trade/takeoffer/TakeOfferController.java
index e2c36a7d4f..fc4067f487 100644
--- a/src/main/java/io/bitsquare/gui/main/trade/takeoffer/TakeOfferController.java
+++ b/src/main/java/io/bitsquare/gui/main/trade/takeoffer/TakeOfferController.java
@@ -23,7 +23,7 @@ import io.bitsquare.btc.WalletFacade;
import io.bitsquare.gui.CachedViewController;
import io.bitsquare.gui.components.Popups;
import io.bitsquare.gui.components.ValidatedTextField;
-import io.bitsquare.gui.main.trade.TradeController;
+import io.bitsquare.gui.main.trade.TradeViewCB;
import io.bitsquare.gui.util.BSFormatter;
import io.bitsquare.gui.util.BitSquareValidator;
import io.bitsquare.trade.Offer;
@@ -95,7 +95,7 @@ public class TakeOfferController extends CachedViewController {
@Override
public void deactivate() {
super.deactivate();
- ((TradeController) parentController).onTakeOfferViewRemoved();
+ ((TradeViewCB) parentController).onTakeOfferViewRemoved();
}
@Override