f6741b514e8dac4b592368418ef6bc0e0f70bf4c
[instantlauncher.git] / src / main / java / eu / svjatoslav / instantlauncher / FileAssociationManager.java
1 package eu.svjatoslav.instantlauncher;
2
3 import java.io.File;
4 import java.io.IOException;
5 import java.util.HashMap;
6
7 import eu.svjatoslav.commons.gui.dialog.ExceptionDialog;
8
9 public class FileAssociationManager {
10
11     private static final String TEXT_EDITOR = "gd";
12
13     private static final String FILE_INDICATOR = "<FILE>";
14
15     public static HashMap<String, String[]> extensionToApplication = new HashMap<String, String[]>();
16
17     public static boolean openFile(final File file) {
18
19         final String fileExtension = Utils.getFileExtension(file);
20
21         System.out.println("About to open file with extension: " + fileExtension);
22
23         if (extensionToApplication.containsKey(fileExtension)) {
24
25             System.out.println("Commands found");
26
27             final String[] commands = extensionToApplication.get(fileExtension);
28
29             final String[] c = new String[commands.length];
30
31             for (int i = 0; i < commands.length; i++)
32                 if (commands[i].equals(FILE_INDICATOR))
33                     c[i] = file.getAbsolutePath();
34                 else
35                     c[i] = commands[i];
36
37             try {
38                 Runtime.getRuntime().exec(c);
39                 InstantLauncher.exitProgram();
40
41             } catch (final IOException e) {
42                 new ExceptionDialog(e);
43             }
44
45             return true;
46         } else
47             return false;
48
49     }
50
51     public FileAssociationManager() {
52
53         extensionToApplication.put("txt", new String[] { TEXT_EDITOR, FILE_INDICATOR });
54         extensionToApplication.put("xml", new String[] { TEXT_EDITOR, FILE_INDICATOR });
55         extensionToApplication.put("properties", new String[] { TEXT_EDITOR, FILE_INDICATOR });
56         extensionToApplication.put("ini", new String[] { TEXT_EDITOR, FILE_INDICATOR });
57         extensionToApplication.put("", new String[] { TEXT_EDITOR, FILE_INDICATOR });
58
59         extensionToApplication.put("jpg", new String[] { "eog", FILE_INDICATOR });
60         extensionToApplication.put("jpeg", new String[] { "eog", FILE_INDICATOR });
61         extensionToApplication.put("png", new String[] { "eog", FILE_INDICATOR });
62
63         extensionToApplication.put("pdf", new String[] { "evince", FILE_INDICATOR });
64
65         extensionToApplication.put("mp3", new String[] { "banshee", FILE_INDICATOR });
66         extensionToApplication.put("ogg", new String[] { "banshee", FILE_INDICATOR });
67
68         extensionToApplication.put("avi", new String[] { "vlc", FILE_INDICATOR });
69         extensionToApplication.put("mkv", new String[] { "vlc", FILE_INDICATOR });
70         extensionToApplication.put("ogv", new String[] { "vlc", FILE_INDICATOR });
71         extensionToApplication.put("mp4", new String[] { "vlc", FILE_INDICATOR });
72         extensionToApplication.put("flv", new String[] { "vlc", FILE_INDICATOR });
73         extensionToApplication.put("wmv", new String[] { "vlc", FILE_INDICATOR });
74
75         extensionToApplication.put("ods", new String[] { "localc", FILE_INDICATOR });
76         extensionToApplication.put("docx", new String[] { "lowriter", FILE_INDICATOR });
77
78     }
79
80 }