* Time: 23:57
*/
public class BooleanPropertyDelegate implements NodeFactory<PropertyElementController<Boolean>> {
public DisposableNode createNode(final PropertyElementController<Boolean> controller) {
final CheckBox checkBox = new CheckBox();
checkBox.setSelected(controller.getValue());
final ChangeListener<Boolean> controllerListener = new ChangeListener<Boolean>() {
public void changed(ObservableValue<? extends Boolean> observableValue, Boolean aBoolean, Boolean aBoolean1) {
checkBox.setSelected(aBoolean1);
}
};
controller.addListener(controllerListener);
final ChangeListener<Boolean> checkBoxListener = new ChangeListener<Boolean>() {
public void changed(ObservableValue<? extends Boolean> observableValue, Boolean aBoolean, Boolean aBoolean1) {
controller.setValue(aBoolean1);
}
};
checkBox.selectedProperty().addListener(controllerListener);
return new DisposableNodeWrapper(checkBox, new Callback<Node, Void>() {
public Void call(Node node) {
checkBox.selectedProperty().removeListener(checkBoxListener);
controller.removeListener(controllerListener);
return null;
}
});
}