Моя архитектура выглядит следующим образом: у меня есть MainPresenter, который находится на вершине иерархии
Код: Выделить всё
public class MainPresenter {
@FXML private TreeView navigation;
@FXML private AnchorPane contentView;
@Autowired private MainView mainView;
@Autowired private DetailView detailView;
@FXML
public void initialize() {
// register a handler for selection of treeview items
navigation.getSelectionModel().selectedItemProperty().addListener(
new ChangeListener() {
// ...
contentView.getChildren().clear();
contentView.getChildren().add(detailView);
contentView.fireEvent(new ResourceEvent(ResourceEvent.SELECTED, model));
// ...
}
);
}
}
Код: Выделить всё
public class DetailPresenter {
@Autowired private DetailView view;
@PostConstruct
public void postInit() {
// is being executed
view.getView().addEventHandler(ResourceEvent.SELECTED, (event) -> {
// not being invoked
});
}
}
Одним из решений этой проблемы было бы просто автоматически подключить DetailPresenter в MainPresenter, а это не то, что я хочу. Я хочу иметь свободную связь. Как я предположил из документации по обработке событий, событие рассылается по всем узлам графа сцены, а затем возвращается обратно в корень сцены. Поскольку EventHandler в моем DetailPresenter не вызывается, я полагаю, что событие не передается.
Мой вопрос: как этого добиться?