summaryrefslogtreecommitdiffstats
path: root/src/de/fhswf/in/inf/se/notepadMinusMinus/Main.java
diff options
context:
space:
mode:
authorStefan Suhren <suhren.stefan@fh-swf.de>2015-11-23 23:13:23 +0100
committerStefan Suhren <suhren.stefan@fh-swf.de>2015-11-23 23:25:38 +0100
commit83f14ed743a7dc7de1c072195da58aa38fc12905 (patch)
tree457dd702bd5b3e98f6457295237fb29ea16ca2a9 /src/de/fhswf/in/inf/se/notepadMinusMinus/Main.java
parent90c302a97bdcafe71a1245f854bd4b6d36194a1d (diff)
downloadNotepad---83f14ed743a7dc7de1c072195da58aa38fc12905.tar.gz
Notepad---83f14ed743a7dc7de1c072195da58aa38fc12905.zip
Add xml saving and loading
Diffstat (limited to 'src/de/fhswf/in/inf/se/notepadMinusMinus/Main.java')
-rw-r--r--src/de/fhswf/in/inf/se/notepadMinusMinus/Main.java118
1 files changed, 116 insertions, 2 deletions
diff --git a/src/de/fhswf/in/inf/se/notepadMinusMinus/Main.java b/src/de/fhswf/in/inf/se/notepadMinusMinus/Main.java
index 9481abe..55e550a 100644
--- a/src/de/fhswf/in/inf/se/notepadMinusMinus/Main.java
+++ b/src/de/fhswf/in/inf/se/notepadMinusMinus/Main.java
@@ -1,11 +1,21 @@
package de.fhswf.in.inf.se.notepadMinusMinus;
+import java.io.File;
+import java.util.prefs.Preferences;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.Unmarshaller;
+
import de.fhswf.in.inf.se.notepadMinusMinus.model.Grade;
+import de.fhswf.in.inf.se.notepadMinusMinus.model.Grades;
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
+import javafx.scene.control.Alert;
+import javafx.scene.control.Alert.AlertType;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
@@ -14,13 +24,19 @@ public class Main extends Application
private ObservableList<Grade> gradeList = FXCollections
.observableArrayList();
+ private Stage primaryStage;
+
@Override
public void start(Stage primaryStage)
{
+ this.primaryStage = primaryStage;
+
try
{
- BorderPane root = (BorderPane) FXMLLoader
- .load(getClass().getResource("view/mainView.fxml"));
+ FXMLLoader loader = new FXMLLoader(
+ getClass().getResource("view/MainView.fxml"));
+ BorderPane root = (BorderPane) loader.load();
+
Scene scene = new Scene(root);
primaryStage.setScene(scene);
primaryStage.setMaximized(true);
@@ -41,4 +57,102 @@ public class Main extends Application
{
return gradeList;
}
+
+ public File getGradesFilePath()
+ {
+ Preferences prefs = Preferences.userNodeForPackage(Main.class);
+ String filePath = prefs.get("filePath", null);
+ if (filePath != null)
+ {
+ return new File(filePath);
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ public void setGradesFilePath(File file)
+ {
+ Preferences prefs = Preferences.userNodeForPackage(Main.class);
+ if (file != null)
+ {
+ prefs.put("filePath", file.getPath());
+
+ // Update the stage title.
+ primaryStage.setTitle("Notepad-- - " + file.getName());
+ }
+ else
+ {
+ prefs.remove("filePath");
+
+ // Update the stage title.
+ primaryStage.setTitle("Notepad--");
+ }
+ }
+
+ public void loadGradesFromFile(File file)
+ {
+ try
+ {
+ JAXBContext context = JAXBContext.newInstance(Grades.class);
+ Unmarshaller um = context.createUnmarshaller();
+
+ // Reading XML from the file and unmarshalling.
+ Grades wrapper = (Grades) um.unmarshal(file);
+
+ gradeList.clear();
+ gradeList.addAll(wrapper.getGrades());
+
+ // Save the file path to the registry.
+ setGradesFilePath(file);
+
+ }
+ catch (Exception e)
+ { // catches ANY exception
+ Alert alert = new Alert(AlertType.ERROR);
+ alert.initOwner(primaryStage);
+ alert.setTitle("Fehler");
+ alert.setHeaderText("Konnte Noten nicht laden.");
+ alert.setContentText(
+ "Konnte Noten nicht aus folgender Datei laden:\n"
+ + file.getPath());
+
+ alert.showAndWait();
+ }
+ }
+
+ public void saveGradesToFile(File file)
+ {
+ try
+ {
+ JAXBContext context = JAXBContext.newInstance(Grades.class);
+ Marshaller m = context.createMarshaller();
+ m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
+
+ // Wrapping our grades data.
+ Grades wrapper = new Grades();
+ wrapper.setGrades(gradeList);
+
+ // Marshalling and saving XML to the file.
+ m.marshal(wrapper, file);
+ }
+ catch (Exception e)
+ { // catches ANY exception
+ Alert alert = new Alert(AlertType.ERROR);
+ alert.initOwner(primaryStage);
+ alert.setTitle("Fehler");
+ alert.setHeaderText("Konnte Noten nicht speichern.");
+ alert.setContentText(
+ "Konnte Noten nicht in folgende Datei speichern:\n"
+ + file.getPath());
+
+ alert.showAndWait();
+ }
+ }
+
+ public void saveGradesToFile()
+ {
+ saveGradesToFile(getGradesFilePath());
+ }
}