Updated documentation. Made configuration file more readable.
[instantlauncher.git] / src / main / java / eu / svjatoslav / instantlauncher / configuration / ConfigurationManager.java
index 4a06d06..aef82f2 100755 (executable)
@@ -28,22 +28,21 @@ public class ConfigurationManager {
         final File propertiesFile = getPropertiesFile();
         if (!propertiesFile.exists()) {
             initDefaultConfiguration();
-            saveConfigFile();
         } else
             loadConfigFile(propertiesFile);
     }
 
-    private void loadConfigFile(File propertiesFile) throws FileNotFoundException, com.esotericsoftware.yamlbeans.YamlException {
+    private void loadConfigFile(File propertiesFile) throws IOException {
         YamlReader reader = new YamlReader(new FileReader(propertiesFile));
         configuration = reader.read(Configuration.class);
-        if (configuration == null) {
-            configuration = new Configuration();
-            configuration.fileAssociations = new HashSet<>();
-        }
+        if (configuration == null)
+            initDefaultConfiguration();
     }
 
     private void saveConfigFile() throws IOException {
         YamlWriter writer = new YamlWriter(new FileWriter(getPropertiesFile()));
+        writer.getConfig().setClassTag("configuration",  Configuration.class);
+        writer.getConfig().setPropertyElementType(Configuration.class, "fileAssociations", FileAssociation.class);
         writer.write(configuration);
         writer.close();
     }
@@ -53,9 +52,13 @@ public class ConfigurationManager {
         configuration.fileAssociations.add(association);
     }
 
-    private void initDefaultConfiguration() {
+    private void initDefaultConfiguration() throws IOException {
+        configuration = new Configuration();
+        configuration.fileAssociations = new HashSet<>();
+
         configuration.navigationRootPath = System.getProperty("user.home") + "/";
         configuration.directoryOpenCommand = "nautilus -w {file}";
+        configuration.directoryTerminalOpenCommand = "gnome-terminal --working-directory={file}";
 
         registerFileAssociation(".*\\.jpeg$", "eog {file}");
         registerFileAssociation(".*\\.jpg$", "eog {file}");
@@ -65,5 +68,7 @@ public class ConfigurationManager {
         registerFileAssociation(".*\\.avi$", "vlc {file}");
         registerFileAssociation(".*\\.mp4$", "vlc {file}");
         registerFileAssociation(".*\\.mkv$", "vlc {file}");
+
+        saveConfigFile();
     }
 }