From 2f113a1e72816f45ad0f4bf3bf253e0d0be946fa Mon Sep 17 00:00:00 2001 From: li-kai Date: Mon, 7 Nov 2016 20:43:12 +0800 Subject: [PATCH] Move initiation into UserPrefs --- src/main/java/seedu/todo/MainApp.java | 41 +------------- src/main/java/seedu/todo/model/UserPrefs.java | 53 +++++++++++++++++-- src/test/java/seedu/todo/TestApp.java | 12 ----- 3 files changed, 51 insertions(+), 55 deletions(-) diff --git a/src/main/java/seedu/todo/MainApp.java b/src/main/java/seedu/todo/MainApp.java index 4223dfe170b5..bc8ab58f060c 100644 --- a/src/main/java/seedu/todo/MainApp.java +++ b/src/main/java/seedu/todo/MainApp.java @@ -21,8 +21,6 @@ import seedu.todo.model.Model; import seedu.todo.model.TodoModel; import seedu.todo.model.UserPrefs; -import seedu.todo.storage.FixedStorage; -import seedu.todo.storage.UserPrefsStorage; import seedu.todo.ui.Ui; import seedu.todo.ui.UiManager; @@ -41,7 +39,6 @@ public class MainApp extends Application { protected Ui ui; protected Logic logic; - protected FixedStorage storage; protected Model model; protected Dispatcher dispatcher; protected Parser parser; @@ -56,9 +53,7 @@ public void init() throws Exception { super.init(); config = initConfig(getApplicationParameter("config")); - storage = new UserPrefsStorage(config.getUserPrefsFilePath()); - - userPrefs = initPrefs(config); + userPrefs = new UserPrefs(config); initLogging(config); @@ -114,34 +109,6 @@ protected Config initConfig(String configFilePath) { return initializedConfig; } - protected UserPrefs initPrefs(Config config) { - assert config != null; - - String prefsFilePath = config.getUserPrefsFilePath(); - logger.info("Using prefs file : " + prefsFilePath); - - UserPrefs initializedPrefs; - try { - initializedPrefs = storage.read(); - } catch (DataConversionException e) { - logger.warning("UserPrefs file at " + prefsFilePath + " is not in the correct format. " + - "Using default user prefs"); - initializedPrefs = new UserPrefs(); - } catch (IOException e) { - logger.warning("Problem while reading from the file. . Will be starting with an empty Todo-List"); - initializedPrefs = new UserPrefs(); - } - - //Update prefs file in case it was missing to begin with or there are new/unused fields - try { - storage.save(initializedPrefs); - } catch (IOException e) { - logger.warning("Failed to save config file : " + StringUtil.getDetails(e)); - } - - return initializedPrefs; - } - private void initEventsCenter() { EventsCenter.getInstance().registerHandler(this); } @@ -156,11 +123,7 @@ public void start(Stage primaryStage) { public void stop() { logger.info("============================ [ Stopping Uncle Jim's Discount To-do List ] ============================="); ui.stop(); - try { - storage.save(userPrefs); - } catch (IOException e) { - logger.severe("Failed to save preferences " + StringUtil.getDetails(e)); - } + Platform.exit(); System.exit(0); } diff --git a/src/main/java/seedu/todo/model/UserPrefs.java b/src/main/java/seedu/todo/model/UserPrefs.java index d58a421d0179..2e29dce10979 100644 --- a/src/main/java/seedu/todo/model/UserPrefs.java +++ b/src/main/java/seedu/todo/model/UserPrefs.java @@ -1,15 +1,26 @@ package seedu.todo.model; -import java.util.Objects; - +import seedu.todo.commons.core.Config; import seedu.todo.commons.core.GuiSettings; +import seedu.todo.commons.core.LogsCenter; +import seedu.todo.commons.exceptions.DataConversionException; +import seedu.todo.commons.util.StringUtil; +import seedu.todo.storage.FixedStorage; +import seedu.todo.storage.UserPrefsStorage; + +import java.io.IOException; +import java.util.Objects; +import java.util.logging.Logger; +//@@author A0139021U-reused /** * Represents User's preferences. */ public class UserPrefs { - public GuiSettings guiSettings; + private GuiSettings guiSettings; + private static final Logger logger = LogsCenter.getLogger(UserPrefs.class); + private FixedStorage storage; public GuiSettings getGuiSettings() { return guiSettings == null ? new GuiSettings() : guiSettings; @@ -20,13 +31,47 @@ public void updateLastUsedGuiSetting(GuiSettings guiSettings) { } public UserPrefs(){ - this.setGuiSettings(500, 500, 0, 0); + this.setDefaultGuiSettings(); + } + + public UserPrefs(Config config) { + assert config != null; + + String prefsFilePath = config.getUserPrefsFilePath(); + logger.info("Using prefs file : " + prefsFilePath); + + this.storage = new UserPrefsStorage(prefsFilePath); + try { + this.updateLastUsedGuiSetting(storage.read().getGuiSettings()); + } catch (DataConversionException e) { + logger.warning("UserPrefs file at " + prefsFilePath + " is not in the correct format. " + + "Using default user prefs"); + this.setDefaultGuiSettings(); + } catch (IOException e) { + logger.warning("Problem while reading from the file. . Will be starting with an empty Todo-List"); + this.setDefaultGuiSettings(); + } + + //Update prefs file in case it was missing to begin with or there are new/unused fields + this.save(); + } + + private void setDefaultGuiSettings() { + this.setGuiSettings(680, 780, 0, 0); } public void setGuiSettings(double width, double height, int x, int y) { guiSettings = new GuiSettings(width, height, x, y); } + public void save() { + try { + storage.save(this); + } catch (IOException e) { + logger.severe("Failed to save preferences " + StringUtil.getDetails(e)); + } + } + @Override public boolean equals(Object other) { if (other == this){ diff --git a/src/test/java/seedu/todo/TestApp.java b/src/test/java/seedu/todo/TestApp.java index 4650c4195172..04219ea09274 100644 --- a/src/test/java/seedu/todo/TestApp.java +++ b/src/test/java/seedu/todo/TestApp.java @@ -1,11 +1,8 @@ package seedu.todo; -import javafx.stage.Screen; import javafx.stage.Stage; import seedu.todo.commons.core.Config; -import seedu.todo.commons.core.GuiSettings; import seedu.todo.model.ImmutableTodoList; -import seedu.todo.model.UserPrefs; import seedu.todo.storage.XmlSerializableTodoList; import seedu.todo.testutil.TestUtil; @@ -61,15 +58,6 @@ protected Config initConfig(String configFilePath) { return config; } - @Override - protected UserPrefs initPrefs(Config config) { - UserPrefs userPrefs = super.initPrefs(config); - double x = Screen.getPrimary().getVisualBounds().getMinX(); - double y = Screen.getPrimary().getVisualBounds().getMinY(); - userPrefs.updateLastUsedGuiSetting(new GuiSettings(600.0, 600.0, (int) x, (int) y)); - return userPrefs; - } - @Override public void start(Stage primaryStage) { ui.start(primaryStage);