Skip to content

Commit

Permalink
[feat] Add new class for returning both caret postion and result text
Browse files Browse the repository at this point in the history
This commit adds a new class to handle borth caret postion and result text for the emacs comands.

[issue: #9]
  • Loading branch information
Zodbigt committed Feb 27, 2020
1 parent de8b942 commit 512641a
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 25 deletions.
31 changes: 16 additions & 15 deletions src/main/java/org/jabref/gui/keyboard/EmacsKeyBindings.java
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down Expand Up @@ -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();
Expand All @@ -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();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
package org.jabref.logic.util.strings;
import org.jabref.model.util.CaretPostionResultText;

public class StringChangeNextWord {
private enum LetterCase {
Expand Down Expand Up @@ -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);
}

/**
Expand All @@ -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);
}

/**
Expand All @@ -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);
}

/**
Expand All @@ -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);
}

/**
Expand All @@ -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());
}
}
12 changes: 12 additions & 0 deletions src/main/java/org/jabref/model/util/CaretPostionResultText.java
Original file line number Diff line number Diff line change
@@ -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;
}
}

0 comments on commit 512641a

Please sign in to comment.