package com.kodcu.config.factory;
import com.dooapp.fxform.view.FXFormNode;
import com.dooapp.fxform.view.FXFormNodeWrapper;
import com.kodcu.config.SpellcheckConfigBean;
import com.kodcu.other.IOHelper;
import javafx.beans.property.ObjectProperty;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.scene.control.*;
import javafx.scene.control.cell.TextFieldListCell;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority;
import javafx.scene.layout.VBox;
import javafx.util.Callback;
import javafx.util.StringConverter;
import java.nio.file.Path;
import java.nio.file.Paths;
/**
* Created by usta on 08.12.2015.
*/
public class DefaultSpellCheckLanguageFactory implements Callback<Void, FXFormNode> {
final Button setDefaultButton = new Button("Set default");
final Button addNewLanguageButton = new Button("Add new language");
final Label languageLabel = new Label();
private final SpellcheckConfigBean spellcheckConfigBean;
public DefaultSpellCheckLanguageFactory(SpellcheckConfigBean spellcheckConfigBean) {
this.spellcheckConfigBean = spellcheckConfigBean;
}
@Override
public FXFormNode call(Void param) {
final ListView<Path> listView = spellcheckConfigBean.getLanguagePathList();
listView.setCellFactory(li -> new TextFieldListCell<>(new StringConverter<Path>() {
@Override
public String toString(Path object) {
return IOHelper.getPathCleanName(object);
}
@Override
public Path fromString(String string) {
return Paths.get(string);
}
}));
HBox hBox = new HBox(5);
hBox.getChildren().add(listView);
hBox.getChildren().add(new VBox(10, languageLabel, setDefaultButton, addNewLanguageButton));
HBox.setHgrow(listView, Priority.ALWAYS);
listView.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);
setDefaultButton.setOnAction(this::setDefaultLanguage);
return new FXFormNodeWrapper(hBox, listView.itemsProperty());
}
private void setDefaultLanguage(ActionEvent actionEvent) {
final ListView<Path> listView = spellcheckConfigBean.getLanguagePathList();
final MultipleSelectionModel<Path> selectionModel = listView.getSelectionModel();
final Path selectedItem = selectionModel.getSelectedItem();
spellcheckConfigBean.setDefaultLanguage(selectedItem);
languageLabel.setText(IOHelper.getPathCleanName(selectedItem));
}
}