package ru.khasang.cachoeira.viewcontroller;
import javafx.event.ActionEvent;
import javafx.scene.control.TableView;
import javafx.stage.FileChooser;
import ru.khasang.cachoeira.data.DataService;
import ru.khasang.cachoeira.properties.RecentProjectsController;
import ru.khasang.cachoeira.viewcontroller.rowfactories.RecentProjectsRowFactory;
import ru.khasang.cachoeira.view.IView;
import ru.khasang.cachoeira.view.startwindow.ButtonsBox;
import ru.khasang.cachoeira.view.startwindow.IButtonsBox;
import ru.khasang.cachoeira.view.startwindow.StartWindowView;
import java.io.File;
public class StartWindowController {
private final IView view;
private TableView<File> recentProjectTable;
private IButtonsBox buttonsBox;
public StartWindowController() {
recentProjectTable = new TableView<>();
buttonsBox = new ButtonsBox();
view = new StartWindowView(this, recentProjectTable, buttonsBox);
}
public void launch() {
view.createView();
this.setTableItemsAndRowFactory();
this.attachButtonsEvents();
}
private void setTableItemsAndRowFactory() {
recentProjectTable.setItems(RecentProjectsController.getInstance().getRecentProjects());
recentProjectTable.setRowFactory(new RecentProjectsRowFactory(this));
}
private void attachButtonsEvents() {
buttonsBox.getCreateProjectButton().setOnAction(this::createProjectHandler);
buttonsBox.getOpenProjectButton().setOnAction(this::openProjectHandler);
}
private void createProjectHandler(ActionEvent event) {
CreateNewProjectWindowController newProjectWindowController = new CreateNewProjectWindowController(view);
newProjectWindowController.launch();
}
private void openProjectHandler(ActionEvent event) {
FileChooser fileChooser = new FileChooser();
fileChooser.setInitialDirectory(new File(System.getProperty("user.home") + "/Documents/Cachoeira"));
fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("CACH", "*.cach"));
File file = fileChooser.showOpenDialog(view.getStage());
if (file != null) {
DataService.getInstance().loadProject(file);
view.getStage().close();
}
}
public IView getView() {
return view;
}
}