Skip to content
Snippets Groups Projects
Commit 462b5025 authored by Trym Hamer Gudvangen's avatar Trym Hamer Gudvangen
Browse files

feat: start implementing saving of story

parent 48c342eb
No related branches found
No related tags found
2 merge requests!34Feat/create story gui,!7Feat/part three
package edu.ntnu.idatt2001.group_30.paths.controller; package edu.ntnu.idatt2001.group_30.paths.controller;
import edu.ntnu.idatt2001.group_30.paths.view.views.NewStoryView;
public class NewStoryController extends Controller{ public class NewStoryController extends Controller{
public NewStoryController() {
super(NewStoryView.class);
}
} }
...@@ -19,7 +19,6 @@ import javafx.scene.control.Button; ...@@ -19,7 +19,6 @@ import javafx.scene.control.Button;
import javafx.scene.control.TextField; import javafx.scene.control.TextField;
import javafx.scene.image.*; import javafx.scene.image.*;
import javafx.scene.layout.BorderPane; import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox; import javafx.scene.layout.VBox;
import javafx.scene.text.Font; import javafx.scene.text.Font;
import javafx.scene.text.FontWeight; import javafx.scene.text.FontWeight;
...@@ -73,9 +72,9 @@ public class CreatePlayerView extends View<BorderPane> { ...@@ -73,9 +72,9 @@ public class CreatePlayerView extends View<BorderPane> {
VBox leftVBox = new VBox(statsButton, goalsButton); VBox leftVBox = new VBox(statsButton, goalsButton);
leftVBox.setSpacing(20); leftVBox.setSpacing(20);
leftVBox.setPadding(new Insets(300, 20, 0, 20)); leftVBox.setPadding(new Insets(300, 20, 0, 20));
HBox leftHBox = new HBox(leftVBox); leftVBox.setAlignment(Pos.CENTER);
leftHBox.setAlignment(Pos.CENTER_LEFT); getParentPane().setLeft(leftVBox);
getParentPane().setLeft(leftHBox); getParentPane().getLeft().setTranslateY(-200);
statsButton.setOnAction(e -> new StatsPopUp()); statsButton.setOnAction(e -> new StatsPopUp());
......
...@@ -118,7 +118,7 @@ public class LoadGameView extends View<BorderPane> { ...@@ -118,7 +118,7 @@ public class LoadGameView extends View<BorderPane> {
Button xButton = createIconButton("/images/remove.png", 16, 16); Button xButton = createIconButton("/images/remove.png", 16, 16);
HBox buttonIcons = new HBox(10, pencilButton, xButton); HBox buttonIcons = new HBox(10, pencilButton, xButton);
buttonIcons.setAlignment(Pos.CENTER_LEFT); buttonIcons.setAlignment(Pos.CENTER);
VBox storyContainer = new VBox(storyVBox, buttonIcons); VBox storyContainer = new VBox(storyVBox, buttonIcons);
storyContainer.setAlignment(Pos.CENTER); storyContainer.setAlignment(Pos.CENTER);
......
...@@ -7,6 +7,8 @@ import edu.ntnu.idatt2001.group_30.paths.model.Story; ...@@ -7,6 +7,8 @@ import edu.ntnu.idatt2001.group_30.paths.model.Story;
import static edu.ntnu.idatt2001.group_30.paths.PathsSingleton.INSTANCE; import static edu.ntnu.idatt2001.group_30.paths.PathsSingleton.INSTANCE;
import edu.ntnu.idatt2001.group_30.paths.model.filehandling.StoryFileHandler;
import edu.ntnu.idatt2001.group_30.paths.view.components.pop_up.AlertDialog;
import edu.ntnu.idatt2001.group_30.paths.view.components.pop_up.PassagePopUp; import edu.ntnu.idatt2001.group_30.paths.view.components.pop_up.PassagePopUp;
import edu.ntnu.idatt2001.group_30.paths.view.components.table.PassageTable; import edu.ntnu.idatt2001.group_30.paths.view.components.table.PassageTable;
import edu.ntnu.idatt2001.group_30.paths.view.components.table.TableDisplay; import edu.ntnu.idatt2001.group_30.paths.view.components.table.TableDisplay;
...@@ -22,10 +24,14 @@ import javafx.scene.layout.BorderPane; ...@@ -22,10 +24,14 @@ import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox; import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox; import javafx.scene.layout.VBox;
import javafx.scene.text.Text; import javafx.scene.text.Text;
import javafx.stage.FileChooser;
import java.io.File;
import java.io.IOException;
import java.net.URL; import java.net.URL;
import java.util.stream.Collectors; import java.util.stream.Collectors;
//TODO: Add message that first passage will be opening passage
public class NewStoryView extends View<BorderPane> { public class NewStoryView extends View<BorderPane> {
...@@ -50,13 +56,17 @@ public class NewStoryView extends View<BorderPane> { ...@@ -50,13 +56,17 @@ public class NewStoryView extends View<BorderPane> {
Text labelText = new Text("Story Title: "); Text labelText = new Text("Story Title: ");
TextField textField = new TextField(story == null ? "" : story.getTitle()); TextField textField = new TextField(story == null ? "" : story.getTitle());
textField.setPromptText("Enter the name of the story"); textField.setPromptText("Enter story title");
HBox titleBox = new HBox(labelText, textField); HBox titleBox = new HBox(labelText, textField);
titleBox.setAlignment(Pos.CENTER);
textField.setOnAction(event -> { textField.setOnKeyTyped(event -> {
title = textField.getText(); title = textField.getText();
}); });
titleBox.setAlignment(Pos.CENTER);
PassageTable<Passage> passageTable = new PassageTable<>(new TableDisplay.Builder<Passage>() PassageTable<Passage> passageTable = new PassageTable<>(new TableDisplay.Builder<Passage>()
.addColumn("Name of Passage", "title") .addColumn("Name of Passage", "title")
...@@ -82,7 +92,40 @@ public class NewStoryView extends View<BorderPane> { ...@@ -82,7 +92,40 @@ public class NewStoryView extends View<BorderPane> {
addPassageButton.setOnAction(event -> new PassagePopUp()); addPassageButton.setOnAction(event -> new PassagePopUp());
VBox display = new VBox(titleText, titleBox, passageTable, addPassageButton); Button saveButton = new Button("Save");
saveButton.setOnAction(event -> {
try {
//TODO: add this logic to the controller instead of here
//TODO: if everything goes right, give a little feedback and
// then take back to load with story selected
// Add passage with links
story = new Story(title, passages.isEmpty() ? null: passages.get(0));
passages.forEach(story::addPassage);
INSTANCE.setStory(story);
FileChooser fileChooser = new FileChooser();
fileChooser.setInitialDirectory(new File("./src/main/resources/story-files"));
fileChooser.getExtensionFilters().add(
new FileChooser.ExtensionFilter("Paths files", "*.paths")
);
File selectedFile = fileChooser.showSaveDialog(null);
if (selectedFile != null) {
StoryFileHandler fileHandler = new StoryFileHandler();
try {
fileHandler.createStoryFile(story, selectedFile);
} catch (IOException ex) {
ex.printStackTrace();
AlertDialog.showWarning("An error occurred while saving the file.");
}
}
} catch (Exception ex) {
AlertDialog.showWarning(ex.getMessage());
}
});
VBox display = new VBox(titleText, titleBox, passageTable, addPassageButton, saveButton);
display.setAlignment(Pos.CENTER); display.setAlignment(Pos.CENTER);
display.setSpacing(10); display.setSpacing(10);
display.setPrefWidth(500); display.setPrefWidth(500);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment