Search code examples
javafxmvp

afterburner.fx get view from node


i've been trying to get the grasp of afterburner.fx for few days now but i cant figure out this problem. please help

there are three tabs in a tab pane

tabPane.getTabs().get(0).setContent(new FirstView().getView());
tabPane.getTabs().get(1).setContent(new SecondView().getView());
tabPane.getTabs().get(2).setContent(new ThirdView().getView());

these are not named firstview, secondview etc. it's for demonstration...

now each of these views have a reload method:

firstView.reload()
secondView.reload()
thirdView.reload()

and i have setup a listener for tab changes so that i can reload these views once they come into view

tabPane.getSelectionModel().selectedItemProperty().addListener((o, oldValue, newValue) -> {
    newValue.getView().reload(); // of course this cant be done like this
})

how to reload the view of the tab once it comes into view.?


Solution

  • You can add listeners to the individual tabs instead of to the tab pane:

    FirstView firstView = new FirstView();
    Tab tab0 = tabs.getTabs().get(0);
    tab0.selectedProperty().addListener((obs, wasSelected, isSelected) -> {
        if (isSelected) {
            firstView.reload();
        }
    });
    tab0.setContent(firstView.getView());
    
    // etc