diff --git a/.classpath b/.classpath index 1eab1ce9b2dd0933f8b9fd93cba50029f679d079..fff3d8eecea29a77a735c994290a8cfaaf1b1674 100644 --- a/.classpath +++ b/.classpath @@ -6,5 +6,6 @@ <classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/SQLite"/> <classpathentry combineaccessrules="false" kind="src" path="/JSON"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> + <classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/GSON"/> <classpathentry kind="output" path="class"/> </classpath> diff --git a/src/core/Settings.java b/src/core/Settings.java new file mode 100644 index 0000000000000000000000000000000000000000..91f8fe04c6b682a43e04b24dc2e021c0e686ccf3 --- /dev/null +++ b/src/core/Settings.java @@ -0,0 +1,44 @@ +package core; + +public class Settings +{ + private String lastProject; + private String lastTask; + + public Settings() + { + + } + + public Settings(String lastProject, String lastTask) + { + this.lastProject = lastProject; + this.lastTask = lastTask; + } + + public String getLastProject() + { + return lastProject; + } + + public void setLastProject(String lastProject) + { + this.lastProject = lastProject; + } + + public String getLastTask() + { + return lastTask; + } + + public void setLastTask(String lastTask) + { + this.lastTask = lastTask; + } + + @Override + public String toString() + { + return "Settings [lastProject=" + lastProject + ", lastTask=" + lastTask + "]"; + } +} \ No newline at end of file diff --git a/src/core/Utils.java b/src/core/Utils.java index 08da47c52988d64c7889a406e08647d8e541901a..9b3570581aa1f0bae1dac36b2c2acff319b09c7c 100644 --- a/src/core/Utils.java +++ b/src/core/Utils.java @@ -1,9 +1,24 @@ package core; +import java.io.File; +import java.io.IOException; +import java.io.Reader; +import java.io.Writer; +import java.nio.charset.Charset; +import java.nio.file.Files; +import java.nio.file.Paths; import java.util.Arrays; +import java.util.Locale; +import java.util.ResourceBundle; + +import com.google.gson.Gson; + +import tools.PathUtils; public class Utils { + private static final ResourceBundle bundle = ResourceBundle.getBundle("userInterface/", Locale.GERMANY); + private static final String[] AVAILABLE_MONTH_NAMES = {"Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"}; public static String getMonthName(int monthNumberOneIndexed) @@ -14,5 +29,32 @@ public class Utils public static int getMonthNumber(String monthName) { return Arrays.asList(AVAILABLE_MONTH_NAMES).indexOf(monthName) + 1; - } + } + + public static Settings loadSettings() + { + Settings settings; + try + { + Gson gson = new Gson(); + Reader reader = Files.newBufferedReader(Paths.get(PathUtils.getOSindependentPath() + bundle.getString("folder") + "/settings.json"), Charset.forName("UTF-8")); + settings = gson.fromJson(reader, Settings.class); + reader.close(); + return settings; + } + catch(IOException e) + { + return null; + } + } + + public static void saveSettings(Settings settings) throws IOException + { + Gson gson = new Gson(); + String jsonString = gson.toJson(settings); + PathUtils.checkFolder(new File(PathUtils.getOSindependentPath() + bundle.getString("folder"))); + Writer writer = Files.newBufferedWriter(Paths.get(PathUtils.getOSindependentPath() + bundle.getString("folder") + "/settings.json"), Charset.forName("UTF-8")); + writer.write(jsonString); + writer.close(); + } } \ No newline at end of file diff --git a/src/userInterface/UserInterfaceController.java b/src/userInterface/UserInterfaceController.java index c121a59b6315ceaa9060a5842e776bd4f0e085e4..ae1a027dcc5f416ed80cb67f5bda832d7deb6384 100644 --- a/src/userInterface/UserInterfaceController.java +++ b/src/userInterface/UserInterfaceController.java @@ -17,6 +17,8 @@ import core.Exporter; import core.Importer; import core.LogObject; import core.SQL; +import core.Settings; +import core.Utils; import javafx.application.Platform; import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.StringProperty; @@ -93,13 +95,13 @@ public class UserInterfaceController private Stage waitingStage = new Stage(); private Image icon; private final ResourceBundle bundle = ResourceBundle.getBundle("userInterface/", Locale.GERMANY); + private Settings settings; public void init(Stage stage) { this.stage = stage; labelSeparator.setStyle("-fx-background-color: #cdc6c6; -fx-font-size: 0.7"); -// labelSeparator.setMaxHeight(1.5); PathUtils.checkFolder(new File(new File(savePath).getParent())); icon = new Image("/userInterface/icon.png"); @@ -151,6 +153,8 @@ public class UserInterfaceController startButton.setSelected(false); } }); + + loadSettings(); } /** @@ -192,7 +196,7 @@ public class UserInterfaceController newStage.getIcons().add(icon); ProjektFensterController pfc = (ProjektFensterController)fxmlLoader.getController(); - pfc.init(this, stage, savePath, icon); + pfc.init(this, newStage, savePath, icon); newStage.setResizable(false); newStage.initModality(Modality.APPLICATION_MODAL); @@ -439,7 +443,7 @@ public class UserInterfaceController newStage.setScene(scene); newStage.setTitle("Diagramme"); ChartGUIController controller = (ChartGUIController)fxmlLoader.getController(); - controller.init(savePath, stage, icon); + controller.init(savePath, newStage, icon); newStage.getIcons().add(icon); newStage.initOwner(stage); @@ -467,6 +471,9 @@ public class UserInterfaceController log = new LogObject(); log.setProject(project); log.setTask(task); + settings.setLastProject(project); + settings.setLastTask(task); + saveSettings(); } private void startClock() @@ -520,7 +527,7 @@ public class UserInterfaceController newStage.setTitle("Zeit nachträglich einfügen"); InsertTimeController controller = (InsertTimeController)fxmlLoader.getController(); - controller.init(stage, this, savePath, icon); + controller.init(newStage, this, savePath, icon); newStage.getIcons().add(icon); newStage.initOwner(stage); @@ -719,7 +726,7 @@ public class UserInterfaceController newStage.initOwner(stage); EditController pfc = (EditController)fxmlLoader.getController(); - pfc.init(this, stage, savePath, icon, object); + pfc.init(this, newStage, savePath, icon, object); newStage.setResizable(false); newStage.initModality(Modality.APPLICATION_MODAL); @@ -784,7 +791,34 @@ public class UserInterfaceController } } } - + + public void saveSettings() + { + try + { + Utils.saveSettings(settings); + } + catch(IOException e) + { + Logger.error(e); + } + } + + public void loadSettings() + { + settings = Utils.loadSettings(); + if(settings != null) + { + setLabels(settings.getLastProject(), settings.getLastTask()); + projektExistiertFlag = true; + newProject(settings.getLastProject(), settings.getLastTask()); + } + else + { + settings = new Settings(); + } + } + public void about() { AlertGenerator.showAboutAlert(bundle.getString("app.name"), bundle.getString("version.name"), bundle.getString("version.code"), bundle.getString("version.date"), "Robert Goldmann", icon, stage, null, false); diff --git a/src/userInterface/_de.properties b/src/userInterface/_de.properties index a3e72481213f74aaf179af72c3e48cdb62bcc72d..f9bf1ec8d8b36e621257eeec65ee4da8b40a0b39 100644 --- a/src/userInterface/_de.properties +++ b/src/userInterface/_de.properties @@ -1,4 +1,6 @@ app.name=SmartTime version.code=29 version.name=5.0.3 -version.date=10.07.16 \ No newline at end of file +version.date=10.07.16 + +folder=Deadlocker/SmartTime \ No newline at end of file