package com.digiarea.closure.model.controller.dialogs; import java.net.URL; import java.util.List; import java.util.ResourceBundle; 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.image.ImageView; import javafx.stage.Stage; import javafx.util.Callback; import com.digiarea.closurefx.ResourceUtils; import com.digiarea.closurefx.build.validation.IStatus; /** * FXML Controller class * * @author daginno */ public class StatusesDialogController implements Initializable { private Stage stage; @FXML private ListView<IStatus> controlList; @FXML private Label controlDesc; private ObservableList<IStatus> statuses; /** * Initializes the controller class. */ @Override public void initialize(URL url, ResourceBundle rb) { this.statuses = FXCollections.observableArrayList(); controlList.setItems(statuses); controlList .setCellFactory(new Callback<ListView<IStatus>, ListCell<IStatus>>() { @Override public ListCell<IStatus> call(ListView<IStatus> list) { return new StatusesDialogController.StatusCell(); } }); } @FXML private void handleOkButtonAction(ActionEvent event) { stage.close(); } public void setDescription(String desc) { this.controlDesc.setText(desc); } public void setStatuses(List<IStatus> statuses) { this.statuses.addAll(statuses); } static class StatusCell extends ListCell<IStatus> { public void updateItem(IStatus item, boolean empty) { super.updateItem(item, empty); if (empty) { setText(null); } if (item != null) { switch (item.getSeverity()) { case ERROR: setGraphic(new ImageView(ResourceUtils.MARK_ERROR)); break; case WARNING: setGraphic(new ImageView(ResourceUtils.MARK_WARNING)); break; default: setGraphic(new ImageView(ResourceUtils.MARK_OFF)); break; } setText(item.getMessage()); } } } public void setStage(Stage stage) { this.stage = stage; } }