package ru.khasang.cachoeira.viewcontroller.mainwindowcontrollers.buttonsbar; import javafx.beans.value.ObservableValue; import javafx.event.ActionEvent; import ru.khasang.cachoeira.viewcontroller.MainWindowController; import ru.khasang.cachoeira.view.mainwindow.diagram.buttonbox.AbstractButtonsBox; public abstract class ButtonsBoxController { protected final AbstractButtonsBox buttonsBox; protected final MainWindowController controller; public ButtonsBoxController(AbstractButtonsBox buttonsBox, MainWindowController controller) { this.buttonsBox = buttonsBox; this.controller = controller; } public void attachButtonsEvents() { buttonsBox.getAddButton().setOnAction(this::addHandler); buttonsBox.getRemoveButton().setOnAction(this::removeHandler); buttonsBox.getRemoveButton().disableProperty().bind(bindToSelectedItem()); buttonsBox.getZoomSlider().valueProperty().bindBidirectional(controller.zoomMultiplierProperty()); } protected abstract void addHandler(ActionEvent event); protected abstract void removeHandler(ActionEvent event); protected abstract ObservableValue<? extends Boolean> bindToSelectedItem(); }