User second method in navigationListener

This commit is contained in:
Manfred Karrer 2019-02-04 00:47:08 +01:00
parent 16b766b91f
commit 3dd8f20b79
No known key found for this signature in database
GPG key ID: 401250966A6B2C46
17 changed files with 50 additions and 34 deletions

View file

@ -45,7 +45,10 @@ public final class Navigation implements PersistedDataHost {
private static final ViewPath DEFAULT_VIEW_PATH = ViewPath.to(MainView.class, MarketView.class);
public interface Listener {
void onNavigationRequested(ViewPath path, @Nullable Object data);
void onNavigationRequested(ViewPath path);
default void onNavigationRequested(ViewPath path, @Nullable Object data) {
}
}
// New listeners can be added during iteration so we use CopyOnWriteArrayList to
@ -103,7 +106,7 @@ public final class Navigation implements PersistedDataHost {
navigateTo(ViewPath.to(viewClasses), data);
}
public void navigateTo(ViewPath newPath, Object data) {
public void navigateTo(ViewPath newPath, @Nullable Object data) {
if (newPath == null)
return;
@ -131,6 +134,7 @@ public final class Navigation implements PersistedDataHost {
currentPath = newPath;
previousPath = currentPath;
queueUpForSave();
listeners.forEach((e) -> e.onNavigationRequested(currentPath));
listeners.forEach((e) -> e.onNavigationRequested(currentPath, data));
}

View file

@ -290,7 +290,7 @@ public class MainView extends InitializableView<StackPane, MainViewModel> {
setupBadge(portfolioButtonWithBadge, model.getNumPendingTrades(), model.getShowPendingTradesNotification());
setupBadge(disputesButtonWithBadge, model.getNumOpenDisputes(), model.getShowOpenDisputesNotification());
navigation.addListener((viewPath, data) -> {
navigation.addListener(viewPath -> {
if (viewPath.size() != 2 || viewPath.indexOf(MainView.class) != 0)
return;

View file

@ -94,7 +94,7 @@ public class AccountView extends ActivatableView<TabPane, Void> {
seedwordsTab.setText(Res.get("account.menu.seedWords").toUpperCase());
backupTab.setText(Res.get("account.menu.backup").toUpperCase());
navigationListener = (viewPath, data) -> {
navigationListener = viewPath -> {
if (viewPath.size() == 3 && viewPath.indexOf(AccountView.class) == 1) {
if (arbitratorRegistrationTab == null && viewPath.get(2).equals(ArbitratorRegistrationView.class))
navigation.navigateTo(MainView.class, AccountView.class, FiatAccountsView.class);

View file

@ -93,7 +93,7 @@ public class DaoView extends ActivatableViewAndModel<TabPane, Activatable> {
root.getTabs().addAll(bsqWalletTab, proposalsTab, bondingTab, burnBsqTab);
}
navigationListener = (viewPath, data) -> {
navigationListener = viewPath -> {
if (viewPath.size() == 3 && viewPath.indexOf(DaoView.class) == 1) {
if (proposalsTab == null && viewPath.get(2).equals(BsqWalletView.class))
navigation.navigateTo(MainView.class, DaoView.class, BsqWalletView.class);

View file

@ -73,12 +73,19 @@ public class BondingView extends ActivatableViewAndModel {
@Override
public void initialize() {
listener = (viewPath, data) -> {
if (viewPath.size() != 4 || viewPath.indexOf(bisq.desktop.main.dao.bonding.BondingView.class) != 2)
return;
listener = new Navigation.Listener() {
@Override
public void onNavigationRequested(ViewPath path) {
}
selectedViewClass = viewPath.tip();
loadView(selectedViewClass, data);
@Override
public void onNavigationRequested(ViewPath viewPath, @Nullable Object data) {
if (viewPath.size() != 4 || viewPath.indexOf(bisq.desktop.main.dao.bonding.BondingView.class) != 2)
return;
selectedViewClass = viewPath.tip();
loadView(selectedViewClass, data);
}
};
toggleGroup = new ToggleGroup();

View file

@ -117,6 +117,22 @@ public class BondsView extends ActivatableView<GridPane, Void> {
}
///////////////////////////////////////////////////////////////////////////////////////////
// API
///////////////////////////////////////////////////////////////////////////////////////////
public void setSelectedBond(Bond bond) {
// Set the selected bond if it's found in the tableView, which listens to sortedList.
// If this is called before the sortedList has been populated the selected bond is stored and
// we try to apply again after the next update.
tableView.getItems().stream()
.filter(item -> item.getBond() == bond)
.findFirst()
.ifPresentOrElse(item -> tableView.getSelectionModel().select(item),
() -> this.selectedBond = bond);
}
///////////////////////////////////////////////////////////////////////////////////////////
// Private
///////////////////////////////////////////////////////////////////////////////////////////
@ -303,15 +319,4 @@ public class BondsView extends ActivatableView<GridPane, Void> {
});
tableView.getColumns().add(column);
}
public void setSelectedBond(Bond bond) {
// Set the selected bond if it's found in the tableView, which listens to sortedList.
// If this is called before the sortedList has been populated the selected bond is stored and
// we try to apply again after the next update.
tableView.getItems().stream()
.filter(item -> item.getBond() == bond)
.findFirst()
.ifPresentOrElse(item -> tableView.getSelectionModel().select(item),
() -> this.selectedBond = bond);
}
}

View file

@ -68,7 +68,7 @@ public class BurnBsqView extends ActivatableViewAndModel {
@Override
public void initialize() {
listener = (viewPath, data) -> {
listener = viewPath -> {
if (viewPath.size() != 4 || viewPath.indexOf(BurnBsqView.class) != 2)
return;

View file

@ -77,7 +77,7 @@ public class GovernanceView extends ActivatableViewAndModel {
@Override
public void initialize() {
navigationListener = (viewPath, data) -> {
navigationListener = viewPath -> {
if (viewPath.size() != 4 || viewPath.indexOf(GovernanceView.class) != 2)
return;

View file

@ -680,8 +680,8 @@ public class ProposalsView extends ActivatableView<GridPane, Void> implements Bs
}
private void createEmptyProposalDisplay() {
proposalDisplay = new ProposalDisplay(proposalDisplayGridPane, bsqFormatter, daoFacade, changeParamValidator,
navigation);
proposalDisplay = new ProposalDisplay(proposalDisplayGridPane, bsqFormatter, daoFacade,
changeParamValidator, navigation);
proposalDisplayView = proposalDisplay.getView();
GridPane.setMargin(proposalDisplayView, new Insets(0, -10, 0, -10));
GridPane.setRowIndex(proposalDisplayView, ++gridRow);

View file

@ -385,8 +385,8 @@ public class VoteResultView extends ActivatableView<GridPane, Void> implements D
private ProposalDisplay createProposalDisplay(EvaluatedProposal evaluatedProposal, Ballot ballot) {
Proposal proposal = evaluatedProposal.getProposal();
ProposalDisplay proposalDisplay = new ProposalDisplay(new GridPane(), bsqFormatter, daoFacade, null,
navigation);
ProposalDisplay proposalDisplay = new ProposalDisplay(new GridPane(), bsqFormatter,
daoFacade, null, navigation);
ScrollPane proposalDisplayView = proposalDisplay.getView();
GridPane.setMargin(proposalDisplayView, new Insets(0, -10, -15, -10));

View file

@ -71,7 +71,7 @@ public class BsqWalletView extends ActivatableViewAndModel {
@Override
public void initialize() {
listener = (viewPath, data) -> {
listener = viewPath -> {
if (viewPath.size() != 4 || viewPath.indexOf(BsqWalletView.class) != 2)
return;

View file

@ -85,7 +85,7 @@ public class DisputesView extends ActivatableViewAndModel<TabPane, Activatable>
public void initialize() {
log.debug("initialize ");
tradersDisputesTab.setText(Res.get("support.tab.support").toUpperCase());
navigationListener = (viewPath, data) -> {
navigationListener = viewPath -> {
if (viewPath.size() == 3 && viewPath.indexOf(DisputesView.class) == 1)
loadView(viewPath.tip());
};

View file

@ -69,7 +69,7 @@ public class FundsView extends ActivatableViewAndModel<TabPane, Activatable> {
lockedTab.setText(Res.get("funds.tab.locked").toUpperCase());
transactionsTab.setText(Res.get("funds.tab.transactions").toUpperCase());
navigationListener = (viewPath, data) -> {
navigationListener = viewPath -> {
if (viewPath.size() == 3 && viewPath.indexOf(FundsView.class) == 1)
loadView(viewPath.tip());
};

View file

@ -94,7 +94,7 @@ public class MarketView extends ActivatableViewAndModel<TabPane, Activatable> {
spreadTab.setText(Res.get("market.tabs.spread").toUpperCase());
tradesTab.setText(Res.get("market.tabs.trades").toUpperCase());
navigationListener = (viewPath, data) -> {
navigationListener = viewPath -> {
if (viewPath.size() == 3 && viewPath.indexOf(MarketView.class) == 1)
loadView(viewPath.tip());
};

View file

@ -82,7 +82,7 @@ public abstract class OfferView extends ActivatableView<TabPane, Void> {
@Override
protected void initialize() {
navigationListener = (viewPath, data) -> {
navigationListener = viewPath -> {
if (viewPath.size() == 3 && viewPath.indexOf(this.getClass()) == 1)
loadView(viewPath.tip());
};

View file

@ -85,7 +85,7 @@ public class PortfolioView extends ActivatableViewAndModel<TabPane, Activatable>
pendingTradesTab.setText(Res.get("portfolio.tab.pendingTrades").toUpperCase());
closedTradesTab.setText(Res.get("portfolio.tab.history").toUpperCase());
navigationListener = (viewPath, data) -> {
navigationListener = viewPath -> {
if (viewPath.size() == 3 && viewPath.indexOf(PortfolioView.class) == 1)
loadView(viewPath.tip());
};

View file

@ -62,7 +62,7 @@ public class SettingsView extends ActivatableViewAndModel<TabPane, Activatable>
networkTab.setText(Res.get("settings.tab.network").toUpperCase());
aboutTab.setText(Res.get("settings.tab.about").toUpperCase());
navigationListener = (viewPath, data) -> {
navigationListener = viewPath -> {
if (viewPath.size() == 3 && viewPath.indexOf(SettingsView.class) == 1)
loadView(viewPath.tip());
};