Add popup on offer cancel

This commit is contained in:
Manfred Karrer 2015-04-05 02:25:32 +02:00
parent bcb22ddaa3
commit 1ab7ee5a94
7 changed files with 50 additions and 33 deletions

View file

@ -65,8 +65,8 @@ class OffersDataModel implements Activatable, DataModel {
tradeManager.getOpenOfferTrades().removeListener(tradesListChangeListener); tradeManager.getOpenOfferTrades().removeListener(tradesListChangeListener);
} }
void cancelOpenOffer(Offer offer, ResultHandler resultHandler, ErrorMessageHandler errorMessageHandler) { void onCancelOpenOffer(Offer offer, ResultHandler resultHandler, ErrorMessageHandler errorMessageHandler) {
tradeManager.cancelOpenOffer(offer, resultHandler, errorMessageHandler); tradeManager.onCancelOpenOffer(offer, resultHandler, errorMessageHandler);
} }

View file

@ -19,7 +19,11 @@ package io.bitsquare.gui.main.portfolio.offer;
import io.bitsquare.common.viewfx.view.ActivatableViewAndModel; import io.bitsquare.common.viewfx.view.ActivatableViewAndModel;
import io.bitsquare.common.viewfx.view.FxmlView; import io.bitsquare.common.viewfx.view.FxmlView;
import io.bitsquare.gui.Navigation;
import io.bitsquare.gui.components.Popups; import io.bitsquare.gui.components.Popups;
import io.bitsquare.gui.main.MainView;
import io.bitsquare.gui.main.funds.FundsView;
import io.bitsquare.gui.main.funds.withdrawal.WithdrawalView;
import io.bitsquare.offer.Offer; import io.bitsquare.offer.Offer;
import io.bitsquare.util.Utilities; import io.bitsquare.util.Utilities;
@ -38,10 +42,12 @@ public class OffersView extends ActivatableViewAndModel<GridPane, OffersViewMode
@FXML TableView<OfferListItem> table; @FXML TableView<OfferListItem> table;
@FXML TableColumn<OfferListItem, OfferListItem> priceColumn, amountColumn, volumeColumn, @FXML TableColumn<OfferListItem, OfferListItem> priceColumn, amountColumn, volumeColumn,
directionColumn, dateColumn, offerIdColumn, removeItemColumn; directionColumn, dateColumn, offerIdColumn, removeItemColumn;
private Navigation navigation;
@Inject @Inject
public OffersView(OffersViewModel model) { public OffersView(OffersViewModel model, Navigation navigation) {
super(model); super(model);
this.navigation = navigation;
} }
@Override @Override
@ -63,8 +69,18 @@ public class OffersView extends ActivatableViewAndModel<GridPane, OffersViewMode
table.setItems(model.getList()); table.setItems(model.getList());
} }
private void cancelOpenOffer(Offer offer) { private void onCancelOpenOffer(Offer offer) {
model.cancelOpenOffer(offer); model.onCancelOpenOffer(offer,
() -> {
log.debug("Remove offer was successful");
Popups.openInfoPopup("You can withdraw the funds you paid in from the funds screens.");
navigation.navigateTo(MainView.class, FundsView.class, WithdrawalView.class);
},
(message) -> {
log.error(message);
Popups.openWarningPopup("Remove offer failed", message);
});
} }
private void openOfferDetails(OfferListItem item) { private void openOfferDetails(OfferListItem item) {
@ -233,7 +249,7 @@ public class OffersView extends ActivatableViewAndModel<GridPane, OffersViewMode
super.updateItem(item, empty); super.updateItem(item, empty);
if (item != null) { if (item != null) {
button.setOnAction(event -> cancelOpenOffer(item.getOffer())); button.setOnAction(event -> onCancelOpenOffer(item.getOffer()));
setGraphic(button); setGraphic(button);
} }
else { else {

View file

@ -17,9 +17,10 @@
package io.bitsquare.gui.main.portfolio.offer; package io.bitsquare.gui.main.portfolio.offer;
import io.bitsquare.common.handlers.ErrorMessageHandler;
import io.bitsquare.common.handlers.ResultHandler;
import io.bitsquare.common.viewfx.model.ActivatableWithDataModel; import io.bitsquare.common.viewfx.model.ActivatableWithDataModel;
import io.bitsquare.common.viewfx.model.ViewModel; import io.bitsquare.common.viewfx.model.ViewModel;
import io.bitsquare.gui.components.Popups;
import io.bitsquare.gui.util.BSFormatter; import io.bitsquare.gui.util.BSFormatter;
import io.bitsquare.offer.Offer; import io.bitsquare.offer.Offer;
@ -44,16 +45,8 @@ class OffersViewModel extends ActivatableWithDataModel<OffersDataModel> implemen
} }
void cancelOpenOffer(Offer offer) { void onCancelOpenOffer(Offer offer, ResultHandler resultHandler, ErrorMessageHandler errorMessageHandler) {
dataModel.cancelOpenOffer(offer, dataModel.onCancelOpenOffer(offer, resultHandler, errorMessageHandler);
() -> {
// visual feedback?
log.debug("Remove offer was successful");
},
(message) -> {
log.error(message);
Popups.openWarningPopup("Remove offer failed", message);
});
} }
public ObservableList<OfferListItem> getList() { public ObservableList<OfferListItem> getList() {

View file

@ -112,8 +112,8 @@ class OfferBookDataModel implements Activatable, DataModel {
btcCode.unbind(); btcCode.unbind();
} }
void cancelOpenOffer(Offer offer, ResultHandler resultHandler, ErrorMessageHandler errorMessageHandler) { void onCancelOpenOffer(Offer offer, ResultHandler resultHandler, ErrorMessageHandler errorMessageHandler) {
tradeManager.cancelOpenOffer(offer, resultHandler, errorMessageHandler); tradeManager.onCancelOpenOffer(offer, resultHandler, errorMessageHandler);
} }
void calculateVolume() { void calculateVolume() {

View file

@ -28,6 +28,8 @@ import io.bitsquare.gui.main.account.AccountView;
import io.bitsquare.gui.main.account.content.restrictions.RestrictionsView; import io.bitsquare.gui.main.account.content.restrictions.RestrictionsView;
import io.bitsquare.gui.main.account.settings.AccountSettingsView; import io.bitsquare.gui.main.account.settings.AccountSettingsView;
import io.bitsquare.gui.main.account.setup.AccountSetupWizard; import io.bitsquare.gui.main.account.setup.AccountSetupWizard;
import io.bitsquare.gui.main.funds.FundsView;
import io.bitsquare.gui.main.funds.withdrawal.WithdrawalView;
import io.bitsquare.gui.main.trade.TradeView; import io.bitsquare.gui.main.trade.TradeView;
import io.bitsquare.gui.util.ImageUtil; import io.bitsquare.gui.util.ImageUtil;
import io.bitsquare.gui.util.validation.OptionalBtcValidator; import io.bitsquare.gui.util.validation.OptionalBtcValidator;
@ -235,6 +237,20 @@ public class OfferBookView extends ActivatableViewAndModel<GridPane, OfferBookVi
} }
} }
private void onCancelOpenOffer(Offer offer) {
model.onCancelOpenOffer(offer,
() -> {
log.debug("Remove offer was successful");
Popups.openInfoPopup("You can withdraw the funds you paid in from the funds screens.");
navigation.navigateTo(MainView.class, FundsView.class, WithdrawalView.class);
},
(message) -> {
log.error(message);
Popups.openWarningPopup("Remove offer failed", message);
});
}
private void openRestrictionsWarning(String restrictionsInfo) { private void openRestrictionsWarning(String restrictionsInfo) {
overlayManager.blurContent(); overlayManager.blurContent();
List<Action> actions = new ArrayList<>(); List<Action> actions = new ArrayList<>();
@ -469,7 +485,7 @@ public class OfferBookView extends ActivatableViewAndModel<GridPane, OfferBookVi
if (model.isMyOffer(offer)) { if (model.isMyOffer(offer)) {
iconView.setId("image-remove"); iconView.setId("image-remove");
title = "Remove"; title = "Remove";
button.setOnAction(event -> model.cancelOpenOffer(item.getOffer())); button.setOnAction(event -> onCancelOpenOffer(item.getOffer()));
} }
else { else {
if (offer.getDirection() == Offer.Direction.SELL) if (offer.getDirection() == Offer.Direction.SELL)

View file

@ -17,9 +17,10 @@
package io.bitsquare.gui.main.trade.offerbook; package io.bitsquare.gui.main.trade.offerbook;
import io.bitsquare.common.handlers.ErrorMessageHandler;
import io.bitsquare.common.handlers.ResultHandler;
import io.bitsquare.common.viewfx.model.ActivatableWithDataModel; import io.bitsquare.common.viewfx.model.ActivatableWithDataModel;
import io.bitsquare.common.viewfx.model.ViewModel; import io.bitsquare.common.viewfx.model.ViewModel;
import io.bitsquare.gui.components.Popups;
import io.bitsquare.gui.util.BSFormatter; import io.bitsquare.gui.util.BSFormatter;
import io.bitsquare.gui.util.validation.InputValidator; import io.bitsquare.gui.util.validation.InputValidator;
import io.bitsquare.gui.util.validation.OptionalBtcValidator; import io.bitsquare.gui.util.validation.OptionalBtcValidator;
@ -101,17 +102,8 @@ class OfferBookViewModel extends ActivatableWithDataModel<OfferBookDataModel> im
(newValue))); (newValue)));
} }
void cancelOpenOffer(Offer offer) { void onCancelOpenOffer(Offer offer, ResultHandler resultHandler, ErrorMessageHandler errorMessageHandler) {
dataModel.cancelOpenOffer(offer, dataModel.onCancelOpenOffer(offer, resultHandler, errorMessageHandler);
() -> {
// visual feedback?
log.debug("Remove offer was successful");
},
(message) -> {
log.error(message);
Popups.openWarningPopup("Remove offer failed", message);
}
);
} }
boolean isTradable(Offer offer) { boolean isTradable(Offer offer) {

View file

@ -313,7 +313,7 @@ public class TradeManager {
}); });
} }
public void cancelOpenOffer(Offer offer, ResultHandler resultHandler, ErrorMessageHandler errorMessageHandler) { public void onCancelOpenOffer(Offer offer, ResultHandler resultHandler, ErrorMessageHandler errorMessageHandler) {
removeOpenOffer(offer, resultHandler, errorMessageHandler, true); removeOpenOffer(offer, resultHandler, errorMessageHandler, true);
} }