better path insertion to command line
This commit is contained in:
parent
31715240b6
commit
a06d421e84
@ -388,6 +388,12 @@ public class MainWindow extends JFrame {
|
|||||||
} else if (e.getKeyCode() == KeyEvent.VK_TAB) {
|
} else if (e.getKeyCode() == KeyEvent.VK_TAB) {
|
||||||
activePanel.getFileTable().requestFocusInWindow();
|
activePanel.getFileTable().requestFocusInWindow();
|
||||||
e.consume();
|
e.consume();
|
||||||
|
} else if (e.getKeyCode() == KeyEvent.VK_ENTER && e.isControlDown() && e.isShiftDown()) {
|
||||||
|
copyFocusedToCommandLineAtCaret(tf, true);
|
||||||
|
e.consume();
|
||||||
|
} else if (e.getKeyCode() == KeyEvent.VK_ENTER && e.isControlDown()) {
|
||||||
|
copyFocusedToCommandLineAtCaret(tf, false);
|
||||||
|
e.consume();
|
||||||
} else if (e.getKeyCode() == KeyEvent.VK_E && e.isControlDown()) {
|
} else if (e.getKeyCode() == KeyEvent.VK_E && e.isControlDown()) {
|
||||||
showCommandLineHistory();
|
showCommandLineHistory();
|
||||||
e.consume();
|
e.consume();
|
||||||
@ -1666,6 +1672,37 @@ public class MainWindow extends JFrame {
|
|||||||
commandLine.requestFocusInWindow();
|
commandLine.requestFocusInWindow();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void copyFocusedToCommandLineAtCaret(JTextField editor, boolean fullPath) {
|
||||||
|
if (editor == null || activePanel == null) return;
|
||||||
|
|
||||||
|
FileItem focused = activePanel.getFocusedItem();
|
||||||
|
if (focused == null || focused.getName().equals("..")) return;
|
||||||
|
|
||||||
|
String toAdd = fullPath ? focused.getFile().getAbsolutePath() : focused.getName();
|
||||||
|
if (toAdd.contains(" ")) {
|
||||||
|
toAdd = "\"" + toAdd + "\"";
|
||||||
|
}
|
||||||
|
|
||||||
|
String current = editor.getText();
|
||||||
|
int caret = editor.getCaretPosition();
|
||||||
|
if (caret < 0) caret = 0;
|
||||||
|
if (caret > current.length()) caret = current.length();
|
||||||
|
|
||||||
|
String before = current.substring(0, caret);
|
||||||
|
String after = current.substring(caret);
|
||||||
|
|
||||||
|
boolean addSpaceBefore = !before.isEmpty() && !Character.isWhitespace(before.charAt(before.length() - 1));
|
||||||
|
boolean addSpaceAfter = !after.isEmpty() && !Character.isWhitespace(after.charAt(0));
|
||||||
|
|
||||||
|
String insertion = (addSpaceBefore ? " " : "") + toAdd + (addSpaceAfter ? " " : "");
|
||||||
|
String newText = before + insertion + after;
|
||||||
|
|
||||||
|
editor.setText(newText);
|
||||||
|
int newCaret = before.length() + insertion.length();
|
||||||
|
editor.setCaretPosition(Math.min(newCaret, newText.length()));
|
||||||
|
commandLine.requestFocusInWindow();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Copy selected files to the opposite panel
|
* Copy selected files to the opposite panel
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user