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