1 package eu.svjatoslav.instantlauncher;
4 import java.io.IOException;
5 import java.util.HashMap;
7 import eu.svjatoslav.commons.gui.dialog.ExceptionDialog;
9 public class FileAssociationManager {
11 private static final String FILE_INDICATOR = "<FILE>";
13 private static final String[] TEXT_EDITOR_PATTERN = new String[] { "emc", FILE_INDICATOR };
15 private static final String DOCUMENT_EDITOR = "lowriter";
17 private static final String SPREADSHEET_EDITOR = "localc";
19 private static final String MUSIC_PLAYER = "clementine";
21 public static HashMap<String, String[]> extensionToApplication = new HashMap<String, String[]>();
23 private static boolean isLogFile(final String fileName) {
24 if (fileName.endsWith(".out"))
26 if (fileName.endsWith(".log"))
28 if (fileName.contains(".log."))
35 * @return <code>true</code> if file was opened. <code>false</code> if
38 public static boolean openFile(final File file) {
40 if (isLogFile(file.getName())) {
41 runOpeningApplication(file, new String[] { "glogg", FILE_INDICATOR });
45 final String fileExtension = Utils.getFileExtension(file);
47 if (extensionToApplication.containsKey(fileExtension)) {
48 final String[] commands = extensionToApplication.get(fileExtension);
49 runOpeningApplication(file, commands);
56 private static void runOpeningApplication(final File file, final String[] commands) {
57 for (int i = 0; i < commands.length; i++)
58 if (commands[i].equals(FILE_INDICATOR))
59 commands[i] = file.getAbsolutePath();
62 Runtime.getRuntime().exec(commands);
63 InstantLauncher.exitProgram();
65 } catch (final IOException e) {
66 new ExceptionDialog(e);
70 public FileAssociationManager() {
72 extensionToApplication.put("txt", TEXT_EDITOR_PATTERN);
73 extensionToApplication.put("xml", TEXT_EDITOR_PATTERN);
74 extensionToApplication.put("org", TEXT_EDITOR_PATTERN);
75 extensionToApplication.put("properties", TEXT_EDITOR_PATTERN);
76 extensionToApplication.put("ini", TEXT_EDITOR_PATTERN);
77 extensionToApplication.put("", TEXT_EDITOR_PATTERN);
79 extensionToApplication.put("jpg", new String[] { "eog", FILE_INDICATOR });
80 extensionToApplication.put("jpeg", new String[] { "eog", FILE_INDICATOR });
81 extensionToApplication.put("png", new String[] { "eog", FILE_INDICATOR });
83 extensionToApplication.put("pdf", new String[] { "evince", FILE_INDICATOR });
85 extensionToApplication.put("mp3", new String[] { "banshee", FILE_INDICATOR });
86 extensionToApplication.put("ogg", new String[] { "banshee", FILE_INDICATOR });
88 extensionToApplication.put("avi", new String[] { "vlc", FILE_INDICATOR });
89 extensionToApplication.put("mkv", new String[] { "vlc", FILE_INDICATOR });
90 extensionToApplication.put("ogv", new String[] { "vlc", FILE_INDICATOR });
91 extensionToApplication.put("mp4", new String[] { "vlc", FILE_INDICATOR });
92 extensionToApplication.put("flv", new String[] { "vlc", FILE_INDICATOR });
93 extensionToApplication.put("wmv", new String[] { "vlc", FILE_INDICATOR });
95 extensionToApplication.put("flac", new String[] { MUSIC_PLAYER, FILE_INDICATOR });
96 extensionToApplication.put("mp3", new String[] { MUSIC_PLAYER, FILE_INDICATOR });
97 extensionToApplication.put("ogg", new String[] { MUSIC_PLAYER, FILE_INDICATOR });
98 extensionToApplication.put("wav", new String[] { MUSIC_PLAYER, FILE_INDICATOR });
100 extensionToApplication.put("ods", new String[] { SPREADSHEET_EDITOR, FILE_INDICATOR });
101 extensionToApplication.put("xls", new String[] { SPREADSHEET_EDITOR, FILE_INDICATOR });
102 extensionToApplication.put("xlsx", new String[] { SPREADSHEET_EDITOR, FILE_INDICATOR });
104 extensionToApplication.put("docx", new String[] { DOCUMENT_EDITOR, FILE_INDICATOR });
105 extensionToApplication.put("doc", new String[] { DOCUMENT_EDITOR, FILE_INDICATOR });
107 extensionToApplication.put("desktop", new String[] { "run-desktop", FILE_INDICATOR });
109 extensionToApplication.put("log", new String[] { "glogg", FILE_INDICATOR });
110 extensionToApplication.put("out", new String[] { "glogg", FILE_INDICATOR });
112 extensionToApplication.put("html", new String[] { "firefox", FILE_INDICATOR });
114 extensionToApplication.put("htm", new String[] { "firefox", FILE_INDICATOR });