Add spinner, status info and blocking popup at take offer

This commit is contained in:
Manfred Karrer 2016-03-03 02:05:04 +01:00
parent ba727ebb16
commit de569b4700
5 changed files with 21 additions and 17 deletions

View file

@ -529,7 +529,7 @@ public class CreateOfferView extends ActivatableViewAndModel<AnchorPane, CreateO
})
.onClose(this::close)
.show(),
100, TimeUnit.MILLISECONDS);
500, TimeUnit.MILLISECONDS);
}
};
}

View file

@ -342,8 +342,8 @@ class CreateOfferViewModel extends ActivatableWithDataModel<CreateOfferDataModel
offer.errorMessageProperty().addListener(errorMessageListener);
dataModel.onPlaceOffer(offer, transaction -> {
stopTimeoutTimer();
placeOfferCompleted.set(true);
resultHandler.run();
placeOfferCompleted.set(true);
errorMessage.set(null);
});
}

View file

@ -217,12 +217,9 @@ public class TakeOfferView extends ActivatableViewAndModel<AnchorPane, TakeOffer
});
showTransactionPublishedScreenSubscription = EasyBind.subscribe(model.showTransactionPublishedScreen, newValue -> {
if (newValue && BitsquareApp.DEV_MODE) {
newValue = false;
close();
navigation.navigateTo(MainView.class, PortfolioView.class, PendingTradesView.class);
}
if (newValue && model.getTrade() != null && model.getTrade().errorMessageProperty().get() == null) {
} else if (newValue && model.getTrade() != null && model.getTrade().errorMessageProperty().get() == null) {
UserThread.runAfter(
() -> new Popup().headLine(BSResources.get("takeOffer.success.headline"))
.feedback(BSResources.get("takeOffer.success.info"))
@ -234,7 +231,7 @@ public class TakeOfferView extends ActivatableViewAndModel<AnchorPane, TakeOffer
, 100, TimeUnit.MILLISECONDS);
})
.onClose(this::close)
.show(), 100, TimeUnit.MILLISECONDS);
.show(), 500, TimeUnit.MILLISECONDS);
}
});
@ -373,9 +370,10 @@ public class TakeOfferView extends ActivatableViewAndModel<AnchorPane, TakeOffer
private void onTakeOffer() {
if (model.hasAcceptedArbitrators()) {
offerDetailsWindow.onTakeOffer(() -> model.onTakeOffer())
offerDetailsWindow.onTakeOffer(() ->
model.onTakeOffer(() ->
offerDetailsWindow.hide()))
.show(model.getOffer(), model.dataModel.amountAsCoin.get());
} else {
new Popup().warning("You have no arbitrator selected.\n" +
"You need to select at least one arbitrator.")

View file

@ -91,6 +91,7 @@ class TakeOfferViewModel extends ActivatableWithDataModel<TakeOfferDataModel> im
private ChangeListener<String> offerErrorListener;
private ConnectionListener connectionListener;
private ChangeListener<Coin> feeFromFundingTxListener;
private Runnable takeOfferSucceededHandler;
///////////////////////////////////////////////////////////////////////////////////////////
@ -177,11 +178,12 @@ class TakeOfferViewModel extends ActivatableWithDataModel<TakeOfferDataModel> im
// UI actions
///////////////////////////////////////////////////////////////////////////////////////////
void onTakeOffer() {
void onTakeOffer(Runnable resultHandler) {
takeOfferSucceededHandler = resultHandler;
takeOfferRequested = true;
showTransactionPublishedScreen.set(false);
isTakeOfferSpinnerVisible.set(true);
takeOfferSpinnerInfoText.set(BSResources.get("takeOffer.fundsBox.takeOfferSpinnerInfo"));
//isTakeOfferSpinnerVisible.set(true);
//takeOfferSpinnerInfoText.set(BSResources.get("takeOffer.fundsBox.takeOfferSpinnerInfo"));
dataModel.onTakeOffer(trade -> {
this.trade = trade;
trade.stateProperty().addListener(tradeStateListener);
@ -329,10 +331,14 @@ class TakeOfferViewModel extends ActivatableWithDataModel<TakeOfferDataModel> im
|| trade.getState() == Trade.State.DEPOSIT_SEEN_IN_NETWORK
|| trade.getState() == Trade.State.DEPOSIT_PUBLISHED_MSG_SENT
|| trade.getState() == Trade.State.DEPOSIT_PUBLISHED_MSG_RECEIVED) {
if (trade.getDepositTx() != null)
if (trade.getDepositTx() != null) {
if (takeOfferSucceededHandler != null)
takeOfferSucceededHandler.run();
showTransactionPublishedScreen.set(true);
else
} else {
log.error("trade.getDepositTx() == null. That must not happen");
}
}
takeOfferSpinnerInfoText.set("");

View file

@ -237,13 +237,13 @@ public class OfferDetailsWindow extends Overlay<OfferDetailsWindow> {
String takeOfferButtonText = isBuyerRole ? "Confirm take offer for buying bitcoin" : "Confirm take offer for selling bitcoin";
ImageView iconView = new ImageView();
iconView.setId(isBuyOffer ? "image-buy-white" : "image-sell-white");
iconView.setId(isBuyerRole ? "image-buy-white" : "image-sell-white");
Tuple3<Button, ProgressIndicator, Label> placeOfferTuple = addButtonWithStatusAfterGroup(gridPane, ++rowIndex, isPlaceOffer ? placeOfferButtonText : takeOfferButtonText);
Button button = placeOfferTuple.first;
button.setGraphic(iconView);
button.setId(isBuyOffer ? "buy-button" : "sell-button");
button.setId(isBuyerRole ? "buy-button" : "sell-button");
button.setText(isPlaceOffer ? placeOfferButtonText : takeOfferButtonText);
spinner = placeOfferTuple.second;
@ -269,7 +269,7 @@ public class OfferDetailsWindow extends Overlay<OfferDetailsWindow> {
spinnerInfoLabel.setText(BSResources.get("createOffer.fundsBox.placeOfferSpinnerInfo"));
placeOfferHandlerOptional.get().run();
} else {
spinnerInfoLabel.setText("Take offer in progress...");
spinnerInfoLabel.setText(BSResources.get("takeOffer.fundsBox.takeOfferSpinnerInfo"));
takeOfferHandlerOptional.get().run();
}
} else {