package com.kodcu.component;
import javafx.beans.binding.BooleanBinding;
import javafx.beans.property.BooleanProperty;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.control.MenuItem;
import javafx.scene.control.RadioMenuItem;
import javafx.scene.control.ToggleGroup;
import javafx.scene.control.Tooltip;
/**
* Created by usta on 24.01.2015.
*/
public class CheckItemBuilt {
private RadioMenuItem menuItem;
public CheckItemBuilt(RadioMenuItem menuItem) {
this.menuItem = menuItem;
}
public CheckItemBuilt click(EventHandler<ActionEvent> event) {
menuItem.setOnAction(event);
return this;
}
public RadioMenuItem build() {
return menuItem;
}
public CheckItemBuilt tip(String tipText) {
Tooltip tooltip = new Tooltip(tipText);
Tooltip.install(menuItem.getGraphic(), tooltip);
return this;
}
public CheckItemBuilt clazz(String clazz) {
menuItem.getStyleClass().add(clazz);
return this;
}
public static CheckItemBuilt check(String name, boolean checked) {
RadioMenuItem item = new RadioMenuItem(){
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
MenuItem i = (MenuItem) o;
return !(getText() != null ? !getText().equals(i.getText()) : i.getText() != null);
}
@Override
public int hashCode() {
return getText() != null ? getText().hashCode() : 0;
}
};
item.setMnemonicParsing(false);
item.setSelected(checked);
item.setText(name);
final CheckItemBuilt checkItemBuilt = new CheckItemBuilt(item);
return checkItemBuilt;
}
public CheckItemBuilt bindBi(BooleanProperty property) {
menuItem.selectedProperty().bindBidirectional(property);
return this;
}
public CheckItemBuilt bind(BooleanBinding binding) {
menuItem.selectedProperty().bind(binding);
return this;
}
public CheckItemBuilt visible(BooleanBinding binding) {
menuItem.visibleProperty().bind(binding);
return this;
}
public CheckItemBuilt group(ToggleGroup toggleGroup) {
menuItem.setToggleGroup(toggleGroup);
return this;
}
}