}
public void openDirectory(File chosenFile) {
- executeCommand(configurationManager.getConfiguration().directoryOpenCommand, chosenFile.getAbsolutePath());
+ runOpeningApplication(configurationManager.getConfiguration().directoryOpenCommand, chosenFile);
}
- public void executeCommand(String... c) {
- try {
- Runtime.getRuntime().exec(c);
- exitProgram();
-
- } catch (final IOException e) {
- new ExceptionDialog(e);
- }
+ public void openDirectoryInTerminal(File chosenFile) {
+ runOpeningApplication(configurationManager.getConfiguration().directoryTerminalOpenCommand, chosenFile);
}
+
}
}
public static void runOpeningApplication(String commands, final File file) {
- runOpeningApplication(commands.split("\\s+"), file);
- }
+ try {
+ String[] commandsArray = commands.split("\\s+");
+ for (int i=0; i< commandsArray.length; i++)
+ commandsArray[i] = commandsArray[i].replaceAll("\\{file\\}", file.getAbsolutePath());
- private static void runOpeningApplication(final String[] commands, final File file) {
- for (int i = 0; i < commands.length; i++)
- if (commands[i].equals(FILE_INDICATOR))
- commands[i] = file.getAbsolutePath();
+ Runtime.getRuntime().exec(commandsArray);
+ } catch (final IOException e) {
+ new ExceptionDialog(e);
+ }
+ }
+ public static void executeCommand(String... c) {
try {
- Runtime.getRuntime().exec(commands);
+ Runtime.getRuntime().exec(c);
} catch (final IOException e) {
new ExceptionDialog(e);
}
}
+
}
public Set<FileAssociation> fileAssociations;
public String navigationRootPath;
public String directoryOpenCommand;
+ public String directoryTerminalOpenCommand;
public FileAssociation findFileAssociation(File file) {
for (FileAssociation association : fileAssociations)
configuration.navigationRootPath = System.getProperty("user.home") + "/";
configuration.directoryOpenCommand = "nautilus -w {file}";
+ configuration.directoryTerminalOpenCommand = "gnome-terminal --working-directory={file}";
registerFileAssociation(".*\\.jpeg$", "eog {file}");
registerFileAssociation(".*\\.jpg$", "eog {file}");
public void mouseClicked(final MouseEvent e) {
try {
- if (e.getButton() == 1)
+ if (e.getButton() == 1) // left mouse click
parentMenu.menuItemSelected(file);
- if (e.getButton() == 2)
+ if (e.getButton() == 2) // middle mouse click
parentMenu.menuItemSelectedAlternative2(file);
- if (e.getButton() == 3)
+ if (e.getButton() == 3) //right mouse click
parentMenu.menuItemSelectedAlternative(file);
} catch (final Exception ex) {
new ExceptionDialog(ex);
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;
public void menuItemSelected(final File chosenFile) {
if (chosenFile.isFile()) {
if (chosenFile.canExecute()) {
- instantLauncher.executeCommand(chosenFile.getAbsolutePath());
+ executeCommand(chosenFile.getAbsolutePath());
} else {
boolean fileOpened;
try {
if (chosenFile.isDirectory()) {
try {
instantLauncher.openDirectory(chosenFile.getCanonicalFile());
+ InstantLauncher.exitProgram();
} catch (IOException e) {
e.printStackTrace();
}
if (chosenFile.isFile())
chosenFile.setExecutable(!chosenFile.canExecute());
else {
- try {
- instantLauncher.executeCommand("gnome-terminal", "--working-directory="
- + chosenFile.getCanonicalFile().getAbsolutePath());
- } catch (IOException e) {
- e.printStackTrace();
- }
+ instantLauncher.openDirectoryInTerminal(chosenFile);
+ InstantLauncher.exitProgram();
}
}
@Override
public void menuItemSelectedAlternative2(File chosenFile) {
- if (chosenFile.isFile()) {
- try {
- instantLauncher.executeCommand("emacs", chosenFile.getCanonicalFile().getAbsolutePath());
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
+ // TODO: define some middle mouse click functions
}