Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -81,39 +81,42 @@ default void nextChar(SelectionPolicy selectionPolicy) {
}
}


/**
* Skips two word boundaries backwards.
* Skips n number of word boundaries backwards.
* Based on the given selection policy, anchor either moves with
* the caret, stays put, or moves to the former caret position.
*/
default void previousWord(SelectionPolicy selectionPolicy) {
default void wordBreaksBackwards(int n, SelectionPolicy selectionPolicy) {
if(getLength() == 0) {
return;
}

BreakIterator wordBreakIterator = BreakIterator.getWordInstance();
wordBreakIterator.setText(getText());
wordBreakIterator.preceding(getCaretPosition());
wordBreakIterator.previous();
for (int i = 1; i < n; i++) {
wordBreakIterator.previous();
}

moveTo(wordBreakIterator.current(), selectionPolicy);
}

/**
* Skips two word boundaries forward.
* Skips n number of word boundaries forward.
* Based on the given selection policy, anchor either moves with
* the caret, stays put, or moves to the former caret position.
*/
default void nextWord(SelectionPolicy selectionPolicy) {
default void wordBreaksForwards(int n, SelectionPolicy selectionPolicy) {
if(getLength() == 0) {
return;
}

BreakIterator wordBreakIterator = BreakIterator.getWordInstance();
wordBreakIterator.setText(getText());
wordBreakIterator.following(getCaretPosition());
wordBreakIterator.next();
for (int i = 1; i < n; i++) {
wordBreakIterator.next();
}

moveTo(wordBreakIterator.current(), selectionPolicy);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -102,10 +102,10 @@ public class StyledTextAreaBehavior implements Behavior {
.on(keyPressed(KP_LEFT)) .act(StyledTextAreaBehavior::left)
.on(keyPressed(HOME)) .act((b, e) -> b.area.lineStart(SelectionPolicy.CLEAR))
.on(keyPressed(END)) .act((b, e) -> b.area.lineEnd(SelectionPolicy.CLEAR))
.on(keyPressed(RIGHT, SHORTCUT_DOWN)).act((b, e) -> b.area.nextWord(SelectionPolicy.CLEAR))
.on(keyPressed(KP_RIGHT, SHORTCUT_DOWN)).act((b, e) -> b.area.nextWord(SelectionPolicy.CLEAR))
.on(keyPressed(LEFT, SHORTCUT_DOWN)).act((b, e) -> b.area.previousWord(SelectionPolicy.CLEAR))
.on(keyPressed(KP_LEFT, SHORTCUT_DOWN)).act((b, e) -> b.area.previousWord(SelectionPolicy.CLEAR))
.on(keyPressed(RIGHT, SHORTCUT_DOWN)).act((b, e) -> b.area.wordBreaksForwards(2, SelectionPolicy.CLEAR))
.on(keyPressed(KP_RIGHT, SHORTCUT_DOWN)).act((b, e) -> b.area.wordBreaksForwards(2, SelectionPolicy.CLEAR))
.on(keyPressed(LEFT, SHORTCUT_DOWN)).act((b, e) -> b.area.wordBreaksBackwards(2, SelectionPolicy.CLEAR))
.on(keyPressed(KP_LEFT, SHORTCUT_DOWN)).act((b, e) -> b.area.wordBreaksBackwards(2, SelectionPolicy.CLEAR))
.on(keyPressed(HOME, SHORTCUT_DOWN)).act((b, e) -> b.area.start(SelectionPolicy.CLEAR))
.on(keyPressed(END, SHORTCUT_DOWN)).act((b, e) -> b.area.end(SelectionPolicy.CLEAR))
// selection
Expand All @@ -117,10 +117,10 @@ public class StyledTextAreaBehavior implements Behavior {
.on(keyPressed(END, SHIFT_DOWN)).act((b, e) -> b.area.lineEnd(selPolicy))
.on(keyPressed(HOME, SHIFT_DOWN, SHORTCUT_DOWN)).act((b, e) -> b.area.start(selPolicy))
.on(keyPressed(END, SHIFT_DOWN, SHORTCUT_DOWN)).act((b, e) -> b.area.end(selPolicy))
.on(keyPressed(LEFT, SHIFT_DOWN, SHORTCUT_DOWN)).act((b, e) -> b.area.previousWord(selPolicy))
.on(keyPressed(KP_LEFT, SHIFT_DOWN, SHORTCUT_DOWN)).act((b, e) -> b.area.previousWord(selPolicy))
.on(keyPressed(RIGHT, SHIFT_DOWN, SHORTCUT_DOWN)).act((b, e) -> b.area.nextWord(selPolicy))
.on(keyPressed(KP_RIGHT, SHIFT_DOWN, SHORTCUT_DOWN)).act((b, e) -> b.area.nextWord(selPolicy))
.on(keyPressed(LEFT, SHIFT_DOWN, SHORTCUT_DOWN)).act((b, e) -> b.area.wordBreaksBackwards(2, selPolicy))
.on(keyPressed(KP_LEFT, SHIFT_DOWN, SHORTCUT_DOWN)).act((b, e) -> b.area.wordBreaksBackwards(2, selPolicy))
.on(keyPressed(RIGHT, SHIFT_DOWN, SHORTCUT_DOWN)).act((b, e) -> b.area.wordBreaksForwards(2, selPolicy))
.on(keyPressed(KP_RIGHT, SHIFT_DOWN, SHORTCUT_DOWN)).act((b, e) -> b.area.wordBreaksForwards(2, selPolicy))
.on(keyPressed(A, SHORTCUT_DOWN)).act((b, e) -> b.area.selectAll())

.create();
Expand Down Expand Up @@ -336,15 +336,15 @@ private void selectRight(KeyEvent ignore) {
}

private void selectWord() {
area.previousWord(SelectionPolicy.CLEAR);
area.nextWord(SelectionPolicy.ADJUST);
area.wordBreaksBackwards(1, SelectionPolicy.CLEAR);
area.wordBreaksForwards(1, SelectionPolicy.ADJUST);
}

private void deletePrevWord(KeyEvent ignore) {
int end = area.getCaretPosition();

if (end > 0) {
area.previousWord(SelectionPolicy.CLEAR);
area.wordBreaksBackwards(2, SelectionPolicy.CLEAR);
int start = area.getCaretPosition();
area.replaceText(start, end, "");
}
Expand All @@ -354,7 +354,7 @@ private void deleteNextWord(KeyEvent ignore) {
int start = area.getCaretPosition();

if (start < area.getLength()) {
area.nextWord(SelectionPolicy.CLEAR);
area.wordBreaksForwards(2, SelectionPolicy.CLEAR);
int end = area.getCaretPosition();
area.replaceText(start, end, "");
}
Expand Down