package com.digiarea.closure.model.controller.dialogs;
import java.net.URL;
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;
import com.digiarea.closure.model.entity.IPlaceholder;
/**
* FXML Controller class
*
* @author daginno
*/
public class PlaceholderDialogController implements Initializable {
@FXML
private ListView<IPlaceholder> listView;
@FXML
private TextArea txtDescription;
@FXML
private Label labelTitle;
@FXML
private Label labelDesc;
private Stage stage;
/**
* Selected placeholder.
*/
private IPlaceholder placeholder;
/**
* Initializes the controller class.
*/
@Override
public void initialize(URL url, ResourceBundle rb) {
listView.setCellFactory(new Callback<ListView<IPlaceholder>, ListCell<IPlaceholder>>() {
@Override
public ListCell<IPlaceholder> call(ListView<IPlaceholder> list) {
return new PlaceholderDialogController.PlaceholderCell();
}
});
listView.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<IPlaceholder>() {
@Override
public void changed(ObservableValue<? extends IPlaceholder> arg0, IPlaceholder arg1, IPlaceholder arg2) {
txtDescription.setText(arg2.getDescription());
}
});
}
@FXML
private void handleOkButtonAction(ActionEvent event) {
placeholder = 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 setPlaceholders(List<? extends IPlaceholder> placeholders) {
ObservableList<IPlaceholder> items = FXCollections.observableArrayList(placeholders);
listView.setItems(items);
}
public void setStage(Stage stage) {
this.stage = stage;
}
public IPlaceholder getPlaceholder() {
return placeholder;
}
static class PlaceholderCell extends ListCell<IPlaceholder> {
public void updateItem(IPlaceholder item, boolean empty) {
super.updateItem(item, empty);
if (empty) {
setText(null);
}
if (item != null) {
setText(item.getValue());
}
}
}
public ListView<IPlaceholder> getListView() {
return listView;
}
public TextArea getTxtDescription() {
return txtDescription;
}
public Label getLabelTitle() {
return labelTitle;
}
public Label getLabelDesc() {
return labelDesc;
}
}