Exit program when running external application.
[instantlauncher.git] / src / main / java / eu / svjatoslav / instantlauncher / menu / MultiLevelMenu.java
index bc37046..0134ce4 100755 (executable)
@@ -1,6 +1,5 @@
 package eu.svjatoslav.instantlauncher.menu;
 
-import eu.svjatoslav.commons.gui.dialog.ExceptionDialog;
 import eu.svjatoslav.instantlauncher.InstantLauncher;
 import eu.svjatoslav.instantlauncher.Utils;
 
@@ -10,6 +9,8 @@ import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
 
+import static eu.svjatoslav.instantlauncher.Utils.executeCommand;
+
 public class MultiLevelMenu implements MenuListener {
 
     private static final int VERTICAL_MENUS_COUNT = 7;
@@ -68,7 +69,7 @@ public class MultiLevelMenu implements MenuListener {
             contentPane.add(panel);
         }
 
-        final File directory = instantLauncher.configurationManager.getNavigationRootDirectory();
+        final File directory = instantLauncher.configurationManager.getConfiguration().getNavigationRootDirectory();
         addMenu(directory);
 
         return contentPane;
@@ -103,17 +104,18 @@ public class MultiLevelMenu implements MenuListener {
     }
 
     @Override
-    public void menuItemSelected(final Menu menu, final File chosenFile) {
+    public void menuItemSelected(final File chosenFile) {
         if (chosenFile.isFile()) {
             if (chosenFile.canExecute()) {
                 executeCommand(chosenFile.getAbsolutePath());
+                InstantLauncher.exitProgram();
             } else {
                 boolean fileOpened;
                 try {
                     fileOpened = instantLauncher.openFile(chosenFile.getCanonicalFile());
-                    if (fileOpened) {
+                    if (fileOpened)
                         InstantLauncher.exitProgram();
-                    }
+
                 } catch (IOException e) {
                     e.printStackTrace();
                 }
@@ -122,34 +124,21 @@ public class MultiLevelMenu implements MenuListener {
 
         if (chosenFile.isDirectory()) {
             try {
-                executeCommand("nautilus", "-w", chosenFile.getCanonicalFile().getAbsolutePath());
+                instantLauncher.openDirectory(chosenFile.getCanonicalFile());
+                InstantLauncher.exitProgram();
             } catch (IOException e) {
                 e.printStackTrace();
             }
         }
     }
 
-    private void executeCommand(String... c) {
-        try {
-            Runtime.getRuntime().exec(c);
-            InstantLauncher.exitProgram();
-
-        } catch (final IOException e) {
-            new ExceptionDialog(e);
-        }
-    }
-
     @Override
-    public void menuItemSelectedAlternative(final Menu menu, final File chosenFile) {
-        if (chosenFile.isFile()) {
+    public void menuItemSelectedAlternative(final File chosenFile) {
+        if (chosenFile.isFile())
             chosenFile.setExecutable(!chosenFile.canExecute());
-        } else {
-            try {
-                executeCommand("gnome-terminal", "--working-directory="
-                        + chosenFile.getCanonicalFile().getAbsolutePath());
-            } catch (IOException e) {
-                e.printStackTrace();
-            }
+        else {
+            instantLauncher.openDirectoryInTerminal(chosenFile);
+            InstantLauncher.exitProgram();
         }
     }
 
@@ -166,14 +155,8 @@ public class MultiLevelMenu implements MenuListener {
     }
 
     @Override
-    public void menuItemSelectedAlternative2(Menu menu, File chosenFile) {
-        if (chosenFile.isFile()) {
-            try {
-                executeCommand("emacs", chosenFile.getCanonicalFile().getAbsolutePath());
-            } catch (IOException e) {
-                e.printStackTrace();
-            }
-        }
+    public void menuItemSelectedAlternative2(File chosenFile) {
+        // TODO: define some middle mouse click functions
     }