public class FileAssociationManager {
- private static final String TEXT_EDITOR = "scribes";
+ private static final String FILE_INDICATOR = "<FILE>";
- private static final String DOCUMENT_EDITOR = "lowriter";
+ private static final String[] TEXT_EDITOR_PATTERN = new String[] { "emc", FILE_INDICATOR };
- private static final String SPREADSHEET_EDITOR = "localc";
+ private static final String DOCUMENT_EDITOR = "lowriter";
- private static final String FILE_INDICATOR = "<FILE>";
+ private static final String SPREADSHEET_EDITOR = "localc";
- public static HashMap<String, String[]> extensionToApplication = new HashMap<String, String[]>();
+ private static final String MUSIC_PLAYER = "clementine";
- public static boolean openFile(final File file) {
+ public static HashMap<String, String[]> extensionToApplication = new HashMap<String, String[]>();
- final String fileExtension = Utils.getFileExtension(file);
+ private static boolean isLogFile(final String fileName) {
+ if (fileName.endsWith(".out"))
+ return true;
+ if (fileName.endsWith(".log"))
+ return true;
+ if (fileName.contains(".log."))
+ return true;
- System.out.println("About to open file with extension: " + fileExtension);
+ return false;
+ }
- if (extensionToApplication.containsKey(fileExtension)) {
+ /**
+ * @return <code>true</code> if file was opened. <code>false</code> if
+ * unknown file type.
+ */
+ public static boolean openFile(final File file) {
- System.out.println("Commands found");
+ if (isLogFile(file.getName())) {
+ runOpeningApplication(file, new String[] { "glogg", FILE_INDICATOR });
+ return true;
+ }
- final String[] commands = extensionToApplication.get(fileExtension);
+ final String fileExtension = Utils.getFileExtension(file);
- final String[] c = new String[commands.length];
+ if (extensionToApplication.containsKey(fileExtension)) {
+ final String[] commands = extensionToApplication.get(fileExtension);
+ runOpeningApplication(file, commands);
+ return true;
+ } else
+ return false;
- 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();
+ 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();
- } catch (final IOException e) {
- new ExceptionDialog(e);
- }
+ try {
+ Runtime.getRuntime().exec(commands);
+ InstantLauncher.exitProgram();
- return true;
- } else
- return false;
+ } catch (final IOException e) {
+ new ExceptionDialog(e);
+ }
+ }
- }
+ public FileAssociationManager() {
- public FileAssociationManager() {
+ extensionToApplication.put("txt", TEXT_EDITOR_PATTERN);
+ extensionToApplication.put("xml", TEXT_EDITOR_PATTERN);
+ extensionToApplication.put("org", TEXT_EDITOR_PATTERN);
+ extensionToApplication.put("properties", TEXT_EDITOR_PATTERN);
+ extensionToApplication.put("ini", TEXT_EDITOR_PATTERN);
+ extensionToApplication.put("", TEXT_EDITOR_PATTERN);
- extensionToApplication.put("txt", new String[] { TEXT_EDITOR, FILE_INDICATOR });
- extensionToApplication.put("xml", new String[] { TEXT_EDITOR, FILE_INDICATOR });
- extensionToApplication.put("properties", new String[] { TEXT_EDITOR, FILE_INDICATOR });
- extensionToApplication.put("ini", new String[] { TEXT_EDITOR, FILE_INDICATOR });
- extensionToApplication.put("", new String[] { TEXT_EDITOR, FILE_INDICATOR });
+ extensionToApplication.put("jpg", new String[] { "eog", FILE_INDICATOR });
+ extensionToApplication.put("jpeg", new String[] { "eog", FILE_INDICATOR });
+ extensionToApplication.put("png", new String[] { "eog", FILE_INDICATOR });
- extensionToApplication.put("jpg", new String[] { "eog", FILE_INDICATOR });
- extensionToApplication.put("jpeg", new String[] { "eog", FILE_INDICATOR });
- extensionToApplication.put("png", new String[] { "eog", FILE_INDICATOR });
+ extensionToApplication.put("pdf", new String[] { "evince", FILE_INDICATOR });
- extensionToApplication.put("pdf", new String[] { "evince", FILE_INDICATOR });
+ extensionToApplication.put("mp3", new String[] { "banshee", FILE_INDICATOR });
+ extensionToApplication.put("ogg", new String[] { "banshee", FILE_INDICATOR });
- extensionToApplication.put("mp3", new String[] { "banshee", FILE_INDICATOR });
- extensionToApplication.put("ogg", new String[] { "banshee", FILE_INDICATOR });
+ extensionToApplication.put("avi", new String[] { "vlc", FILE_INDICATOR });
+ extensionToApplication.put("mkv", new String[] { "vlc", FILE_INDICATOR });
+ extensionToApplication.put("ogv", new String[] { "vlc", FILE_INDICATOR });
+ extensionToApplication.put("mp4", new String[] { "vlc", FILE_INDICATOR });
+ extensionToApplication.put("flv", new String[] { "vlc", FILE_INDICATOR });
+ extensionToApplication.put("wmv", new String[] { "vlc", FILE_INDICATOR });
- extensionToApplication.put("avi", new String[] { "vlc", FILE_INDICATOR });
- extensionToApplication.put("mkv", new String[] { "vlc", FILE_INDICATOR });
- extensionToApplication.put("ogv", new String[] { "vlc", FILE_INDICATOR });
- extensionToApplication.put("mp4", new String[] { "vlc", FILE_INDICATOR });
- extensionToApplication.put("flv", new String[] { "vlc", FILE_INDICATOR });
- extensionToApplication.put("wmv", new String[] { "vlc", 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 });
+ 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 });
- extensionToApplication.put("docx", new String[] { DOCUMENT_EDITOR, FILE_INDICATOR });
- extensionToApplication.put("doc", new String[] { DOCUMENT_EDITOR, FILE_INDICATOR });
+ extensionToApplication.put("docx", new String[] { DOCUMENT_EDITOR, FILE_INDICATOR });
+ extensionToApplication.put("doc", new String[] { DOCUMENT_EDITOR, FILE_INDICATOR });
- }
+ extensionToApplication.put("desktop", new String[] { "run-desktop", FILE_INDICATOR });
+
+ extensionToApplication.put("log", new String[] { "glogg", FILE_INDICATOR });
+ extensionToApplication.put("out", new String[] { "glogg", FILE_INDICATOR });
+
+ extensionToApplication.put("html", new String[] { "firefox", FILE_INDICATOR });
+
+ extensionToApplication.put("htm", new String[] { "firefox", FILE_INDICATOR });
+
+ }
}