package com.digiarea.closure.model.controller.dialogs; import java.net.URL; import java.nio.charset.Charset; import java.util.List; import java.util.ResourceBundle; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.control.Label; import javafx.scene.control.ListCell; import javafx.scene.control.ListView; import javafx.scene.control.TextArea; import javafx.stage.Stage; import javafx.util.Callback; /** * FXML Controller class * * @author daginno */ public class CharsetDialogController implements Initializable { @FXML private ListView<Charset> listView; @FXML private TextArea txtDescription; @FXML private Label labelTitle; @FXML private Label labelDesc; private Stage stage; /** * Selected placeholder. */ private Charset charset; /** * Initializes the controller class. */ @Override public void initialize(URL url, ResourceBundle rb) { listView.setCellFactory(new Callback<ListView<Charset>, ListCell<Charset>>() { @Override public ListCell<Charset> call(ListView<Charset> list) { return new CharsetDialogController.CharsetCell(); } }); listView.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<Charset>() { @Override public void changed(ObservableValue<? extends Charset> arg0, Charset arg1, Charset arg2) { txtDescription.setText(arg2.displayName()); } }); } @FXML private void handleOkButtonAction(ActionEvent event) { charset = listView.getSelectionModel().getSelectedItem(); stage.close(); } @FXML private void handleCancelButtonAction(ActionEvent event) { stage.close(); } public void setLabelDesc(String labelDesc) { this.labelDesc.setText(labelDesc); } public void setLabelTitle(String labelTitle) { this.labelTitle.setText(labelTitle); } public void setCharsets(List<? extends Charset> charsets) { ObservableList<Charset> items = FXCollections.observableArrayList(charsets); listView.setItems(items); } public void setStage(Stage stage) { this.stage = stage; } public Charset getCharset() { return charset; } static class CharsetCell extends ListCell<Charset> { public void updateItem(Charset item, boolean empty) { super.updateItem(item, empty); if (empty) { setText(null); } if (item != null) { setText(item.displayName()); } } } public ListView<Charset> getListView() { return listView; } public TextArea getTxtDescription() { return txtDescription; } public Label getLabelTitle() { return labelTitle; } public Label getLabelDesc() { return labelDesc; } }