Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/master' into fixAutocompleteTh…
Browse files Browse the repository at this point in the history
…read

* upstream/master:
  Fix label name
  Add support for jumping in ordered author list by typing letters (#6440)
  Bump flexmark-ext-gfm-strikethrough from 0.61.24 to 0.61.26
  Bump org.beryx.jlink from 2.18.0 to 2.19.0
  Bump flexmark from 0.61.24 to 0.61.26
  Bump flexmark-ext-gfm-tasklist from 0.61.24 to 0.61.26
  • Loading branch information
Siedlerchr committed May 11, 2020
2 parents 174eeb0 + dd1d3a9 commit d01665d
Show file tree
Hide file tree
Showing 4 changed files with 51 additions and 5 deletions.
2 changes: 1 addition & 1 deletion .github/outdatedDependencies.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: Outdated dependencies
labels: t: dependencies
labels: type: dependencies
---
[There are outdated dependencies!](https://github.com/JabRef/jabref/actions?query=is%3Afailure+workflow%3A%22Check+dependencies%22)
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ Note that this project **does not** adhere to [Semantic Versioning](http://semve
- We created a new install screen for macOS. [#5759](https://github.com/JabRef/jabref/issues/5759)
- We implemented an option to download fulltext files while importing. [#6381](https://github.com/JabRef/jabref/pull/6381)
- We fixed the bug when strike the delete key in the text field. [#6421](https://github.com/JabRef/jabref/issues/6421)
- We added support for jumping to target entry when typing letter/digit after sorting a column in maintable [#6146](https://github.com/JabRef/jabref/issues/6146)

### Changed

Expand Down
8 changes: 4 additions & 4 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ plugins {
id 'com.github.ben-manes.versions' version '0.28.0'
id 'org.javamodularity.moduleplugin' version '1.5.0'
id 'org.openjfx.javafxplugin' version '0.0.8'
id 'org.beryx.jlink' version '2.18.0'
id 'org.beryx.jlink' version '2.19.0'

// nicer test outputs during running and completion
id 'com.adarshr.test-logger' version '2.0.0'
Expand Down Expand Up @@ -191,9 +191,9 @@ dependencies {
exclude module: "log4j-core"
}

implementation 'com.vladsch.flexmark:flexmark:0.61.24'
implementation 'com.vladsch.flexmark:flexmark-ext-gfm-strikethrough:0.61.24'
implementation 'com.vladsch.flexmark:flexmark-ext-gfm-tasklist:0.61.24'
implementation 'com.vladsch.flexmark:flexmark:0.61.26'
implementation 'com.vladsch.flexmark:flexmark-ext-gfm-strikethrough:0.61.26'
implementation 'com.vladsch.flexmark:flexmark-ext-gfm-tasklist:0.61.26'

testImplementation 'io.github.classgraph:classgraph:4.8.78'
testImplementation 'org.junit.jupiter:junit-jupiter:5.6.2'
Expand Down
45 changes: 45 additions & 0 deletions src/main/java/org/jabref/gui/maintable/MainTable.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@

import javafx.collections.ListChangeListener;
import javafx.scene.control.SelectionMode;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableRow;
import javafx.scene.control.TableView;
import javafx.scene.input.ClipboardContent;
Expand Down Expand Up @@ -57,11 +58,21 @@ public class MainTable extends TableView<BibEntryTableViewModel> {
private final ImportHandler importHandler;
private final CustomLocalDragboard localDragboard;

private long lastKeyPressTime;
private String columnSearchTerm;

public MainTable(MainTableDataModel model, JabRefFrame frame,
BasePanel panel, BibDatabaseContext database,
MainTablePreferences preferences, ExternalFileTypes externalFileTypes, KeyBindingRepository keyBindingRepository) {
super();

this.setOnKeyTyped(key -> {
if (this.getSortOrder().isEmpty()) {
return;
}
this.jumpToSearchKey(getSortOrder().get(0), key);
});

this.model = model;
this.database = Objects.requireNonNull(database);

Expand Down Expand Up @@ -123,6 +134,40 @@ public MainTable(MainTableDataModel model, JabRefFrame frame,
database.getDatabase().registerListener(this);
}

/**
* This is called, if a user starts typing some characters into the keyboard with focus on main table.
* The {@link MainTable} will scroll to the cell with the same starting column value and typed string
*
* @param sortedColumn The sorted column in {@link MainTable}
* @param keyEvent The pressed character
*/

private void jumpToSearchKey(TableColumn<BibEntryTableViewModel, ?> sortedColumn, KeyEvent keyEvent) {
if (keyEvent.getCharacter() == null || sortedColumn == null) {
return;
}

if (System.currentTimeMillis() - lastKeyPressTime < 700) {
columnSearchTerm += keyEvent.getCharacter().toLowerCase();
} else {
columnSearchTerm = keyEvent.getCharacter().toLowerCase();
}

lastKeyPressTime = System.currentTimeMillis();

this.getItems().stream()
.filter(item -> Optional.ofNullable(sortedColumn.getCellObservableValue(item).getValue())
.map(Object::toString)
.orElse("")
.toLowerCase()
.startsWith(columnSearchTerm))
.findFirst()
.ifPresent(item -> {
this.scrollTo(item);
this.clearAndSelect(item.getEntry());
});
}

@Subscribe
public void listen(EntriesAddedEvent event) {
DefaultTaskExecutor.runInJavaFXThread(() -> clearAndSelect(event.getFirstEntry()));
Expand Down

0 comments on commit d01665d

Please sign in to comment.