bb8681e33e22f67a1d8dbc58d71f8f9eb5157d8b
[instantlauncher.git] / src / main / java / eu / svjatoslav / instantlauncher / InstantLauncher.java
1 package eu.svjatoslav.instantlauncher;
2
3 import eu.svjatoslav.commons.gui.dialog.ExceptionDialog;
4 import eu.svjatoslav.instantlauncher.configuration.ConfigurationManager;
5 import eu.svjatoslav.instantlauncher.configuration.FileAssociation;
6
7 import java.io.File;
8 import java.io.IOException;
9
10 import static eu.svjatoslav.instantlauncher.Utils.runOpeningApplication;
11
12 public class InstantLauncher {
13
14     private final MainFrame mainFrame;
15     public ConfigurationManager configurationManager;
16
17     public InstantLauncher() throws IOException {
18         configurationManager = new ConfigurationManager();
19         mainFrame = new MainFrame(this);
20     }
21
22     public static void exitProgram() {
23         System.exit(0);
24     }
25
26     /**
27      * @return <code>true</code> if file was opened. <code>false</code> if
28      * unknown file type.
29      */
30     public boolean openFile(final File file) {
31         FileAssociation fileAssociation = configurationManager.getConfiguration().findFileAssociation(file);
32         if (fileAssociation == null) return false;
33
34         runOpeningApplication(fileAssociation.command, file);
35         return true;
36     }
37
38     public void run() {
39         mainFrame.show();
40     }
41
42     public void openDirectory(File chosenFile) {
43         executeCommand(configurationManager.getConfiguration().directoryOpenCommand, chosenFile.getAbsolutePath());
44     }
45
46     public void executeCommand(String... c) {
47         try {
48             Runtime.getRuntime().exec(c);
49             exitProgram();
50
51         } catch (final IOException e) {
52             new ExceptionDialog(e);
53         }
54     }
55 }