sync notifications to FX thread only in desktop app (#60)

daemon starting and stopping without exceptions
This commit is contained in:
woodser 2021-05-09 11:14:58 -04:00 committed by GitHub
parent fcdc627d00
commit 55f62f92dd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 94 additions and 100 deletions

View file

@ -29,6 +29,8 @@ import org.fxmisc.easybind.EasyBind;
import lombok.extern.slf4j.Slf4j;
import javafx.application.Platform;
@Slf4j
public class BuyerSubView extends TradeSubView {
private TradeWizardItem step1;
@ -74,40 +76,44 @@ public class BuyerSubView extends TradeSubView {
protected void onViewStateChanged(PendingTradesViewModel.State viewState) {
super.onViewStateChanged(viewState);
if (viewState != null) {
PendingTradesViewModel.BuyerState buyerState = (PendingTradesViewModel.BuyerState) viewState;
Platform.runLater(new Runnable() {
@Override public void run() {
if (viewState != null) {
PendingTradesViewModel.BuyerState buyerState = (PendingTradesViewModel.BuyerState) viewState;
step1.setDisabled();
step2.setDisabled();
step3.setDisabled();
step4.setDisabled();
step1.setDisabled();
step2.setDisabled();
step3.setDisabled();
step4.setDisabled();
switch (buyerState) {
case UNDEFINED:
break;
case STEP1:
showItem(step1);
break;
case STEP2:
step1.setCompleted();
showItem(step2);
break;
case STEP3:
step1.setCompleted();
step2.setCompleted();
showItem(step3);
break;
case STEP4:
step1.setCompleted();
step2.setCompleted();
step3.setCompleted();
showItem(step4);
break;
default:
log.warn("unhandled buyerState " + buyerState);
break;
switch (buyerState) {
case UNDEFINED:
break;
case STEP1:
showItem(step1);
break;
case STEP2:
step1.setCompleted();
showItem(step2);
break;
case STEP3:
step1.setCompleted();
step2.setCompleted();
showItem(step3);
break;
case STEP4:
step1.setCompleted();
step2.setCompleted();
step3.setCompleted();
showItem(step4);
break;
default:
log.warn("unhandled buyerState " + buyerState);
break;
}
}
}
}
});
}
}

View file

@ -93,7 +93,7 @@ import javafx.geometry.Pos;
import org.fxmisc.easybind.EasyBind;
import org.fxmisc.easybind.Subscription;
import javafx.application.Platform;
import javafx.beans.binding.Bindings;
import javafx.beans.property.ReadOnlyObjectWrapper;
import javafx.beans.value.ChangeListener;
@ -618,7 +618,11 @@ public class PendingTradesView extends ActivatableViewAndModel<VBox, PendingTrad
if (item != null && !empty) {
trade = item.getTrade();
listener = (observable, oldValue, newValue) -> update();
listener = (observable, oldValue, newValue) -> Platform.runLater(new Runnable() {
@Override public void run() {
update();
}
});
trade.stateProperty().addListener(listener);
update();
} else {
@ -932,7 +936,11 @@ public class PendingTradesView extends ActivatableViewAndModel<VBox, PendingTrad
super.updateItem(newItem, empty);
if (!empty && newItem != null) {
trade = newItem.getTrade();
listener = (observable, oldValue, newValue) -> update();
listener = (observable, oldValue, newValue) -> Platform.runLater(new Runnable() {
@Override public void run() {
update();
}
});
trade.stateProperty().addListener(listener);
update();
} else {

View file

@ -29,6 +29,8 @@ import org.fxmisc.easybind.EasyBind;
import lombok.extern.slf4j.Slf4j;
import javafx.application.Platform;
@Slf4j
public class SellerSubView extends TradeSubView {
private TradeWizardItem step1;
@ -74,40 +76,44 @@ public class SellerSubView extends TradeSubView {
protected void onViewStateChanged(PendingTradesViewModel.State viewState) {
super.onViewStateChanged(viewState);
if (viewState != null) {
PendingTradesViewModel.SellerState sellerState = (PendingTradesViewModel.SellerState) viewState;
Platform.runLater(new Runnable() {
@Override public void run() {
if (viewState != null) {
PendingTradesViewModel.SellerState sellerState = (PendingTradesViewModel.SellerState) viewState;
step1.setDisabled();
step2.setDisabled();
step3.setDisabled();
step4.setDisabled();
step1.setDisabled();
step2.setDisabled();
step3.setDisabled();
step4.setDisabled();
switch (sellerState) {
case UNDEFINED:
break;
case STEP1:
showItem(step1);
break;
case STEP2:
step1.setCompleted();
showItem(step2);
break;
case STEP3:
step1.setCompleted();
step2.setCompleted();
showItem(step3);
break;
case STEP4:
step1.setCompleted();
step2.setCompleted();
step3.setCompleted();
showItem(step4);
break;
default:
log.warn("unhandled viewState " + sellerState);
break;
switch (sellerState) {
case UNDEFINED:
break;
case STEP1:
showItem(step1);
break;
case STEP2:
step1.setCompleted();
showItem(step2);
break;
case STEP3:
step1.setCompleted();
step2.setCompleted();
showItem(step3);
break;
case STEP4:
step1.setCompleted();
step2.setCompleted();
step3.setCompleted();
showItem(step4);
break;
default:
log.warn("unhandled viewState " + sellerState);
break;
}
}
}
}
});
}
}