fixed text editor
[instantlauncher.git] / src / main / java / eu / svjatoslav / instantlauncher / FileAssociationManager.java
index e9ffd0f..6752594 100755 (executable)
@@ -8,12 +8,61 @@ 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";
+
+    private static final String SPREADSHEET_EDITOR = "localc";
 
     private static final String FILE_INDICATOR = "<FILE>";
 
+    private static final String MUSIC_PLAYER = "clementine";
+
     public static HashMap<String, String[]> extensionToApplication = new HashMap<String, String[]>();
 
+    /**
+     * @return <code>true</code> if file was opened. <code>false</code> 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);
+
+        if (extensionToApplication.containsKey(fileExtension)) {
+            final String[] commands = extensionToApplication.get(fileExtension);
+            runOpeningApplication(file, commands);
+            return true;
+        } 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 });
@@ -38,46 +87,22 @@ public class FileAssociationManager {
         extensionToApplication.put("flv", new String[] { "vlc", FILE_INDICATOR });
         extensionToApplication.put("wmv", new String[] { "vlc", FILE_INDICATOR });
 
-        extensionToApplication.put("ods", new String[] { "localc", FILE_INDICATOR });
-        extensionToApplication.put("docx", new String[] { "lowriter", 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 });
 
-    public static boolean openFile(final File file) {
-
-        final String fileExtension = Utils.getFileExtension(file);
+        extensionToApplication.put("docx", new String[] { DOCUMENT_EDITOR, FILE_INDICATOR });
+        extensionToApplication.put("doc", new String[] { DOCUMENT_EDITOR, FILE_INDICATOR });
 
-        System.out.println("About to open file with extension: " + fileExtension);
+        extensionToApplication.put("desktop", new String[] { "run-desktop", FILE_INDICATOR });
 
-        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);
-            }
-
-            return true;
-        } else {
-            return false;
-        }
+        extensionToApplication.put("log", new String[] { "glogg", FILE_INDICATOR });
+        extensionToApplication.put("out", new String[] { "glogg", FILE_INDICATOR });
 
     }