diff --git a/src/main/java/org/jabref/gui/keyboard/EmacsKeyBindings.java b/src/main/java/org/jabref/gui/keyboard/EmacsKeyBindings.java index f2b6b74b0b5..d4433777211 100755 --- a/src/main/java/org/jabref/gui/keyboard/EmacsKeyBindings.java +++ b/src/main/java/org/jabref/gui/keyboard/EmacsKeyBindings.java @@ -7,6 +7,7 @@ import javafx.scene.input.KeyEvent; import org.jabref.logic.util.strings.StringChangeNextWord; +import org.jabref.model.util.CaretPostionResultText; public class EmacsKeyBindings { public static void executeEmac(Scene scene, KeyEvent event, boolean EmacsFlag, boolean CAFlag, boolean CFFlag, boolean CNFlag, boolean AUFlag, KeyBindingRepository keyBindingRepository) { @@ -44,23 +45,23 @@ else if (CNFlag && keyBinding.get().equals(KeyBinding.EMACS_DOWN)) { else if (keyBinding.get().equals(KeyBinding.EMACS_CAPITALIZE)) { int pos = focusedTextField.getCaretPosition(); String text = focusedTextField.getText(0, focusedTextField.getText().length()); - String res = StringChangeNextWord.editNextWordCapitalize(pos, text); - focusedTextField.setText(res); - focusedTextField.positionCaret(pos); + CaretPostionResultText res = StringChangeNextWord.editNextWordCapitalize(pos, text); + focusedTextField.setText(res.resText); + focusedTextField.positionCaret(res.caretPos); } else if (keyBinding.get().equals(KeyBinding.EMACS_LOWERCASE)) { int pos = focusedTextField.getCaretPosition(); String text = focusedTextField.getText(0, focusedTextField.getText().length()); - String res = StringChangeNextWord.editNextWordLowerCase(pos, text); - focusedTextField.setText(res); - focusedTextField.positionCaret(pos); + CaretPostionResultText res = StringChangeNextWord.editNextWordLowerCase(pos, text); + focusedTextField.setText(res.resText); + focusedTextField.positionCaret(res.caretPos); } else if (AUFlag && keyBinding.get().equals(KeyBinding.EMACS_UPPERCASE)) { int pos = focusedTextField.getCaretPosition(); String text = focusedTextField.getText(0, focusedTextField.getText().length()); - String res = StringChangeNextWord.editNextWordUpperCase(pos, text); - focusedTextField.setText(res); - focusedTextField.positionCaret(pos); + CaretPostionResultText res = StringChangeNextWord.editNextWordUpperCase(pos, text); + focusedTextField.setText(res.resText); + focusedTextField.positionCaret(res.caretPos); } else if (keyBinding.get().equals(KeyBinding.EMACS_KILLLINE)) { int pos = focusedTextField.getCaretPosition(); @@ -70,16 +71,16 @@ else if (keyBinding.get().equals(KeyBinding.EMACS_KILLLINE)) { else if (keyBinding.get().equals(KeyBinding.EMACS_KILLWORD)) { int pos = focusedTextField.getCaretPosition(); String text = focusedTextField.getText(0, focusedTextField.getText().length()); - String res = StringChangeNextWord.editNextWordToEmpty(pos, text); - focusedTextField.setText(res); - focusedTextField.positionCaret(pos); + CaretPostionResultText res = StringChangeNextWord.editNextWordToEmpty(pos, text); + focusedTextField.setText(res.resText); + focusedTextField.positionCaret(res.caretPos); } else if (keyBinding.get().equals(KeyBinding.EMACS_BACKWARDKILLWORD)) { int pos = focusedTextField.getCaretPosition(); String text = focusedTextField.getText(0, focusedTextField.getText().length()); - String res = StringChangeNextWord.editPreviousWordToEmpty(pos, text); - focusedTextField.setText(res); - focusedTextField.positionCaret(pos); + CaretPostionResultText res = StringChangeNextWord.editPreviousWordToEmpty(pos, text); + focusedTextField.setText(res.resText); + focusedTextField.positionCaret(res.caretPos); } event.consume(); } diff --git a/src/main/java/org/jabref/logic/util/strings/StringChangeNextWord.java b/src/main/java/org/jabref/logic/util/strings/StringChangeNextWord.java index ddaf8e80d08..bbed940f958 100644 --- a/src/main/java/org/jabref/logic/util/strings/StringChangeNextWord.java +++ b/src/main/java/org/jabref/logic/util/strings/StringChangeNextWord.java @@ -1,4 +1,5 @@ package org.jabref.logic.util.strings; +import org.jabref.model.util.CaretPostionResultText; public class StringChangeNextWord { private enum LetterCase { @@ -141,11 +142,11 @@ public static String getPreviousWordEmpty(int numOfSpace, String[] splitText) { * @param text String to analyze * @return String the result text */ - public static String editNextWordCapitalize(int pos, String text) { + public static CaretPostionResultText editNextWordCapitalize(int pos, String text) { int numOfSpace = getNumOfSpace(pos, text); String[] splitText = text.split("\\s+"); String res = setNextWordsCase(numOfSpace, splitText, LetterCase.CAPITALIZED); - return res; + return new CaretPostionResultText(pos, res); } /** @@ -155,11 +156,11 @@ public static String editNextWordCapitalize(int pos, String text) { * @param text String to analyze * @return String the result text */ - public static String editNextWordUpperCase(int pos, String text) { + public static CaretPostionResultText editNextWordUpperCase(int pos, String text) { int numOfSpace = getNumOfSpace(pos, text); String[] splitText = text.split("\\s+"); String res = setNextWordsCase(numOfSpace, splitText, LetterCase.UPPER); - return res; + return new CaretPostionResultText(pos, res); } /** @@ -169,11 +170,11 @@ public static String editNextWordUpperCase(int pos, String text) { * @param text String to analyze * @return String the result text */ - public static String editNextWordLowerCase(int pos, String text) { + public static CaretPostionResultText editNextWordLowerCase(int pos, String text) { int numOfSpace = getNumOfSpace(pos, text); String[] splitText = text.split("\\s+"); String res = setNextWordsCase(numOfSpace, splitText, LetterCase.LOWER); - return res; + return new CaretPostionResultText(pos, res); } /** @@ -183,9 +184,9 @@ public static String editNextWordLowerCase(int pos, String text) { * @param text String to analyze * @return String the result text */ - public static String editNextWordToEmpty(int pos, String text) { + public static CaretPostionResultText editNextWordToEmpty(int pos, String text) { String res = getNextWordEmpty(pos, text); - return res; + return new CaretPostionResultText(pos, res); } /** @@ -195,12 +196,12 @@ public static String editNextWordToEmpty(int pos, String text) { * @param text String to analyze * @return String the result text */ - public static String editPreviousWordToEmpty(int pos, String text) { + public static CaretPostionResultText editPreviousWordToEmpty(int pos, String text) { StringBuilder reverseText = new StringBuilder(text); reverseText.reverse(); String res = getNextWordEmpty(pos, reverseText.toString()); StringBuilder resText = new StringBuilder(res); resText.reverse(); - return resText.toString(); + return new CaretPostionResultText(pos, resText.toString()); } } diff --git a/src/main/java/org/jabref/model/util/CaretPostionResultText.java b/src/main/java/org/jabref/model/util/CaretPostionResultText.java new file mode 100644 index 00000000000..0a11e4e3f4d --- /dev/null +++ b/src/main/java/org/jabref/model/util/CaretPostionResultText.java @@ -0,0 +1,12 @@ +package org.jabref.model.util; + +public class CaretPostionResultText { + public final int caretPos; + public final String resText; + + + public CaretPostionResultText(int pos, String text) { + this.caretPos = pos; + this.resText = text; + } +} \ No newline at end of file