X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Finstantlauncher%2Fconfiguration%2FConfigurationManager.java;h=3d2988b213077cbc5ea31d85b6da7543c6a1d43d;hb=617c93e31fc6f020323b503fe0028a8e10c746b6;hp=4bf00c92066d6c411db4972608bcb8643d736f24;hpb=dcc5f6b34d80ffcebd604993305e9924bcdffbd3;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 4bf00c9..3d2988b 100755 --- a/src/main/java/eu/svjatoslav/instantlauncher/configuration/ConfigurationManager.java +++ b/src/main/java/eu/svjatoslav/instantlauncher/configuration/ConfigurationManager.java @@ -5,75 +5,68 @@ import com.esotericsoftware.yamlbeans.YamlWriter; import java.io.*; import java.util.HashSet; -import java.util.Map; public class ConfigurationManager { private static final String CONFIG_FILE_NAME = ".instantlauncher"; - - private boolean propertiesChanged = false; - - Configuration configuration; + private Configuration configuration; public ConfigurationManager() throws IOException { - initialize(); + initConfig(); } - private File getPropertiesFile() { - return new File(System.getProperty("user.home") + "/" + CONFIG_FILE_NAME); + public Configuration getConfiguration() { + return configuration; } - public File getNavigationRootDirectory() { - if (configuration.navigationRootPath == null){ - configuration.navigationRootPath = System.getProperty("user.home") + "/"; - propertiesChanged = true; - registerDefaultAssociations(); - } - - return new File(configuration.navigationRootPath); + private File getPropertiesFile() { + return new File(System.getProperty("user.home") + "/" + CONFIG_FILE_NAME); } - private void initialize() throws IOException { - - loadIfFileExists(); - - validatePropertiesFile(); - if (propertiesChanged) { - saveFile(); - } - } - - private void loadIfFileExists() throws IOException { + private void initConfig() throws IOException { final File propertiesFile = getPropertiesFile(); - if (!propertiesFile.exists()) - return; + if (!propertiesFile.exists()) { + initDefaultConfiguration(); + } else + loadConfigFile(propertiesFile); + } + 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 saveFile() throws IOException { + private void saveConfigFile() throws IOException { YamlWriter writer = new YamlWriter(new FileWriter(getPropertiesFile())); writer.write(configuration); writer.close(); } - private void validatePropertiesFile() { - getNavigationRootDirectory(); - } - - private void registerFileAssociation(String fileRegex, String command){ + private void registerFileAssociation(String fileRegex, String command) { FileAssociation association = new FileAssociation(fileRegex, command); configuration.fileAssociations.add(association); - propertiesChanged = true; } - private void registerDefaultAssociations(){ - registerFileAssociation(".jpeg$", "eog {file}"); + 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}"); + registerFileAssociation(".*\\.png$", "eog {file}"); + registerFileAssociation(".*\\.txt$", "emacs {file}"); + registerFileAssociation(".*\\.org$", "emacs {file}"); + registerFileAssociation(".*\\.avi$", "vlc {file}"); + registerFileAssociation(".*\\.mp4$", "vlc {file}"); + registerFileAssociation(".*\\.mkv$", "vlc {file}"); + + saveConfigFile(); } }