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