package ru.khasang.cachoeira.viewcontroller.rowfactories;
import javafx.scene.control.Alert;
import javafx.scene.control.TableRow;
import javafx.scene.control.TableView;
import javafx.util.Callback;
import ru.khasang.cachoeira.data.DataService;
import ru.khasang.cachoeira.properties.RecentProjectsController;
import ru.khasang.cachoeira.properties.SettingsManager;
import ru.khasang.cachoeira.viewcontroller.StartWindowController;
import java.io.File;
public class RecentProjectsRowFactory implements Callback<TableView<File>, TableRow<File>> {
private StartWindowController controller;
public RecentProjectsRowFactory(StartWindowController controller) {
this.controller = controller;
}
@Override
public TableRow<File> call(TableView<File> param) {
TableRow<File> row = new TableRow<>();
row.setOnMousePressed(event -> {
if (event.isPrimaryButtonDown() && event.getClickCount() == 2 && !row.isEmpty()) {
File recentProject = row.getItem();
if (recentProject.exists()) {
DataService.getInstance().loadProject(recentProject);
if (controller.getView().getStage().isShowing()) {
controller.getView().getStage().close(); //закрываем стартовое окно
}
} else {
Alert alert = new Alert(Alert.AlertType.ERROR, "File does not exist");
alert.showAndWait();
RecentProjectsController.getInstance().removeRecentProject(recentProject);
SettingsManager.getInstance().writeRecentProjects(RecentProjectsController.getInstance().getRecentProjects());
}
}
});
return row;
}
}