X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Finstantlauncher%2FFileAssociationManager.java;h=4d1ec061cfbf49e31ee05b4bf95a7dbe710b6960;hb=17197a4b5ebe72d0502ec12340b6dabaffdd7f87;hp=df40676e854513ecfff3d6c74df4749f829250f0;hpb=042dd1a2abe121507daf4afd64193c65c8a9dd7d;p=instantlauncher.git diff --git a/src/main/java/eu/svjatoslav/instantlauncher/FileAssociationManager.java b/src/main/java/eu/svjatoslav/instantlauncher/FileAssociationManager.java index df40676..4d1ec06 100755 --- a/src/main/java/eu/svjatoslav/instantlauncher/FileAssociationManager.java +++ b/src/main/java/eu/svjatoslav/instantlauncher/FileAssociationManager.java @@ -8,7 +8,7 @@ import eu.svjatoslav.commons.gui.dialog.ExceptionDialog; public class FileAssociationManager { - private static final String TEXT_EDITOR = "scribes"; + private static final String TEXT_EDITOR = "emacs"; private static final String DOCUMENT_EDITOR = "lowriter"; @@ -16,46 +16,67 @@ public class FileAssociationManager { private static final String FILE_INDICATOR = ""; + private static final String MUSIC_PLAYER = "clementine"; + public static HashMap extensionToApplication = new HashMap(); + /** + * @return true if file was opened. false if unknown file type. + */ public static boolean openFile(final File file) { + if (isLogFile(file.getName())){ + runOpeningApplication(file, new String[] { "glogg", FILE_INDICATOR }); + return true; + } + final String fileExtension = Utils.getFileExtension(file); - System.out.println("About to open file with extension: " + fileExtension); - if (extensionToApplication.containsKey(fileExtension)) { - - System.out.println("Commands found"); - final String[] commands = extensionToApplication.get(fileExtension); - - final String[] c = new String[commands.length]; - - for (int i = 0; i < commands.length; i++) - if (commands[i].equals(FILE_INDICATOR)) - c[i] = file.getAbsolutePath(); - else - c[i] = commands[i]; - - try { - Runtime.getRuntime().exec(c); - InstantLauncher.exitProgram(); - - } catch (final IOException e) { - new ExceptionDialog(e); - } - + runOpeningApplication(file, commands); return true; - } else - return false; + } else { + return false; + } } + private static void runOpeningApplication(final File file, final String[] commands) { + for (int i = 0; i < commands.length; i++) { + if (commands[i].equals(FILE_INDICATOR)) { + commands[i] = file.getAbsolutePath(); + } + } + + try { + Runtime.getRuntime().exec(commands); + InstantLauncher.exitProgram(); + + } catch (final IOException e) { + new ExceptionDialog(e); + } + } + + private static boolean isLogFile(String fileName) { + if (fileName.endsWith(".out")) { + return true; + } + if (fileName.endsWith(".log")) { + return true; + } + if (fileName.contains(".log.")) { + return true; + } + + return false; + } + public FileAssociationManager() { extensionToApplication.put("txt", new String[] { TEXT_EDITOR, FILE_INDICATOR }); extensionToApplication.put("xml", new String[] { TEXT_EDITOR, FILE_INDICATOR }); + extensionToApplication.put("org", new String[] { TEXT_EDITOR, FILE_INDICATOR }); extensionToApplication.put("properties", new String[] { TEXT_EDITOR, FILE_INDICATOR }); extensionToApplication.put("ini", new String[] { TEXT_EDITOR, FILE_INDICATOR }); extensionToApplication.put("", new String[] { TEXT_EDITOR, FILE_INDICATOR }); @@ -76,6 +97,11 @@ public class FileAssociationManager { extensionToApplication.put("flv", new String[] { "vlc", FILE_INDICATOR }); extensionToApplication.put("wmv", new String[] { "vlc", FILE_INDICATOR }); + extensionToApplication.put("flac", new String[] { MUSIC_PLAYER, FILE_INDICATOR }); + extensionToApplication.put("mp3", new String[] { MUSIC_PLAYER, FILE_INDICATOR }); + extensionToApplication.put("ogg", new String[] { MUSIC_PLAYER, FILE_INDICATOR }); + extensionToApplication.put("wav", new String[] { MUSIC_PLAYER, FILE_INDICATOR }); + extensionToApplication.put("ods", new String[] { SPREADSHEET_EDITOR, FILE_INDICATOR }); extensionToApplication.put("xls", new String[] { SPREADSHEET_EDITOR, FILE_INDICATOR }); extensionToApplication.put("xlsx", new String[] { SPREADSHEET_EDITOR, FILE_INDICATOR }); @@ -83,6 +109,11 @@ public class FileAssociationManager { extensionToApplication.put("docx", new String[] { DOCUMENT_EDITOR, FILE_INDICATOR }); extensionToApplication.put("doc", new String[] { DOCUMENT_EDITOR, FILE_INDICATOR }); + extensionToApplication.put("desktop", new String[] { "run-desktop", FILE_INDICATOR }); + + extensionToApplication.put("log", new String[] { "glogg", FILE_INDICATOR }); + extensionToApplication.put("out", new String[] { "glogg", FILE_INDICATOR }); + } }