X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Finstantlauncher%2Fconfiguration%2FConfigurationManager.java;h=2d7959e2cba72958bdb724c47542bb5095a26651;hb=155895d0ed0f436753bf862287341830653a9c9f;hp=4a06d067cbd001f68162c4ad2537ab5dc1cb6b01;hpb=6f3b6383805ab24b835adaa7845e9306880ff7a3;p=instantlauncher.git diff --git a/src/main/java/eu/svjatoslav/instantlauncher/configuration/ConfigurationManager.java b/src/main/java/eu/svjatoslav/instantlauncher/configuration/ConfigurationManager.java index 4a06d06..2d7959e 100755 --- a/src/main/java/eu/svjatoslav/instantlauncher/configuration/ConfigurationManager.java +++ b/src/main/java/eu/svjatoslav/instantlauncher/configuration/ConfigurationManager.java @@ -1,5 +1,14 @@ +/* + * Instantlauncher. Copyright ©2012-2019, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 3 of the GNU Lesser General Public License + * or later as published by the Free Software Foundation. + */ + package eu.svjatoslav.instantlauncher.configuration; +import com.esotericsoftware.yamlbeans.YamlConfig; import com.esotericsoftware.yamlbeans.YamlReader; import com.esotericsoftware.yamlbeans.YamlWriter; @@ -28,34 +37,42 @@ 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)); + configureYaml(reader.getConfig()); 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())); + configureYaml(writer.getConfig()); writer.write(configuration); writer.close(); } + private void configureYaml(YamlConfig config) { + config.setClassTag("configuration", Configuration.class); + config.setPropertyElementType(Configuration.class, "fileAssociations", FileAssociation.class); + } + private void registerFileAssociation(String fileRegex, String command) { FileAssociation association = new FileAssociation(fileRegex, command); 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 +82,7 @@ public class ConfigurationManager { registerFileAssociation(".*\\.avi$", "vlc {file}"); registerFileAssociation(".*\\.mp4$", "vlc {file}"); registerFileAssociation(".*\\.mkv$", "vlc {file}"); + + saveConfigFile(); } }