diff --git a/src/main/java/io/bitsquare/gui/main/trade/TradeViewCB.java b/src/main/java/io/bitsquare/gui/main/trade/TradeViewCB.java index 910ce9a3a8..84ceb03e55 100644 --- a/src/main/java/io/bitsquare/gui/main/trade/TradeViewCB.java +++ b/src/main/java/io/bitsquare/gui/main/trade/TradeViewCB.java @@ -188,8 +188,8 @@ public class TradeViewCB extends CachedViewCB implements TradeNavigator { createOfferViewCB = loader.getController(); createOfferViewCB.setParent(this); createOfferViewCB.initWithData(direction, amount, price); - createOfferViewCB.setCloseListener(this::onCreateOfferViewRemoved); final Tab tab = new Tab("Create offer"); + createOfferViewCB.configCloseHandlers(this::onCreateOfferViewRemoved, tab.closableProperty()); tab.setContent(createOfferView); tabPane.getTabs().add(tab); tabPane.getSelectionModel().select(tab); @@ -204,8 +204,8 @@ public class TradeViewCB extends CachedViewCB implements TradeNavigator { takeOfferViewCB = loader.getController(); takeOfferViewCB.setParent(this); takeOfferViewCB.initWithData(direction, amount, offer); - takeOfferViewCB.setCloseListener(this::onCreateOfferViewRemoved); final Tab tab = new Tab("Take offer"); + takeOfferViewCB.setCloseListener(this::onCreateOfferViewRemoved, tab.closableProperty()); tab.setContent(takeOfferView); tabPane.getTabs().add(tab); tabPane.getSelectionModel().select(tab); diff --git a/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferPM.java b/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferPM.java index a70336bc51..fe41d5e22f 100644 --- a/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferPM.java +++ b/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferPM.java @@ -81,6 +81,7 @@ class CreateOfferPM extends PresentationModel { final BooleanProperty showWarningInvalidFiatDecimalPlaces = new SimpleBooleanProperty(); final BooleanProperty showWarningInvalidBtcDecimalPlaces = new SimpleBooleanProperty(); final BooleanProperty showTransactionPublishedScreen = new SimpleBooleanProperty(); + final BooleanProperty tabIsClosable = new SimpleBooleanProperty(true); final ObjectProperty amountValidationResult = new SimpleObjectProperty<>(); final ObjectProperty minAmountValidationResult = new @@ -347,8 +348,10 @@ class CreateOfferPM extends PresentationModel { updateButtonDisableState(); }); model.isWalletFunded.addListener((ov, oldValue, newValue) -> { - if (newValue) + if (newValue) { updateButtonDisableState(); + tabIsClosable.set(false); + } }); // Binding with Bindings.createObjectBinding does not work because of bi-directional binding diff --git a/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferViewCB.java b/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferViewCB.java index afd5719baf..d4be26e181 100644 --- a/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferViewCB.java +++ b/src/main/java/io/bitsquare/gui/main/trade/createoffer/CreateOfferViewCB.java @@ -44,6 +44,7 @@ import java.util.ResourceBundle; import javax.inject.Inject; +import javafx.beans.property.BooleanProperty; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.geometry.HPos; @@ -79,6 +80,7 @@ public class CreateOfferViewCB extends CachedViewCB { private final Navigation navigation; private final OverlayManager overlayManager; private CloseListener closeListener; + private BooleanProperty tabIsClosable; private boolean detailsVisible; private boolean advancedScreenInited; @@ -143,6 +145,8 @@ public class CreateOfferViewCB extends CachedViewCB { @SuppressWarnings("EmptyMethod") public void deactivate() { super.deactivate(); + + tabIsClosable.unbind(); } @Override @@ -169,10 +173,13 @@ public class CreateOfferViewCB extends CachedViewCB { imageView.setId("image-sell-large"); } - public void setCloseListener(CloseListener closeListener) { + public void configCloseHandlers(CloseListener closeListener, BooleanProperty tabIsClosable) { this.closeListener = closeListener; + this.tabIsClosable = tabIsClosable; + tabIsClosable.bind(presentationModel.tabIsClosable); } + /////////////////////////////////////////////////////////////////////////////////////////// // UI Handlers /////////////////////////////////////////////////////////////////////////////////////////// diff --git a/src/main/java/io/bitsquare/gui/main/trade/takeoffer/TakeOfferPM.java b/src/main/java/io/bitsquare/gui/main/trade/takeoffer/TakeOfferPM.java index 1fe0665647..9e8c75aa97 100644 --- a/src/main/java/io/bitsquare/gui/main/trade/takeoffer/TakeOfferPM.java +++ b/src/main/java/io/bitsquare/gui/main/trade/takeoffer/TakeOfferPM.java @@ -80,6 +80,7 @@ class TakeOfferPM extends PresentationModel { final BooleanProperty isTakeOfferButtonDisabled = new SimpleBooleanProperty(true); final BooleanProperty showWarningInvalidBtcDecimalPlaces = new SimpleBooleanProperty(); final BooleanProperty showTransactionPublishedScreen = new SimpleBooleanProperty(); + final BooleanProperty tabIsClosable = new SimpleBooleanProperty(true); final ObjectProperty amountValidationResult = new SimpleObjectProperty<>(); @@ -322,8 +323,10 @@ class TakeOfferPM extends PresentationModel { }); model.isWalletFunded.addListener((ov, oldValue, newValue) -> { - if (newValue) + if (newValue) { updateButtonDisableState(); + tabIsClosable.set(false); + } }); // Binding with Bindings.createObjectBinding does not work because of bi-directional binding diff --git a/src/main/java/io/bitsquare/gui/main/trade/takeoffer/TakeOfferViewCB.java b/src/main/java/io/bitsquare/gui/main/trade/takeoffer/TakeOfferViewCB.java index c1f01980c3..331713f421 100644 --- a/src/main/java/io/bitsquare/gui/main/trade/takeoffer/TakeOfferViewCB.java +++ b/src/main/java/io/bitsquare/gui/main/trade/takeoffer/TakeOfferViewCB.java @@ -45,6 +45,7 @@ import java.util.ResourceBundle; import javax.inject.Inject; +import javafx.beans.property.BooleanProperty; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.geometry.HPos; @@ -74,6 +75,7 @@ public class TakeOfferViewCB extends CachedViewCB { private final Navigation navigation; private final OverlayManager overlayManager; private CloseListener closeListener; + private BooleanProperty tabIsClosable; private boolean detailsVisible; private boolean advancedScreenInited; @@ -184,8 +186,10 @@ public class TakeOfferViewCB extends CachedViewCB { acceptedArbitratorsTextField.setText(presentationModel.getAcceptedArbitrators()); } - public void setCloseListener(CloseListener closeListener) { + public void setCloseListener(CloseListener closeListener, BooleanProperty tabIsClosable) { this.closeListener = closeListener; + this.tabIsClosable = tabIsClosable; + tabIsClosable.bind(presentationModel.tabIsClosable); }