Skip to content

Commit 6392f5b

Browse files
committed
Merge remote-tracking branch 'upstream/master'
* upstream/master: (21 commits) Update module description (#5999) New Crowdin translations (#5990) Fix NPE in OpenAccessDoi (#5994) Move generate BibTeX keys to Edit menu (#5987) Fixed display of groups and links column in MainTable (#5985) Fixed loosing group if the most bottom one in list is dragged on itself (#5983) Dividers (#5975) Add initial section on code quality (#5991) Create .sonarcloud.properties Add new IntelliJ video tutorial to docs. (#5984) Fix checkstyle Optimize stream() code Use application/x-bibtex for Grobid instance New Crowdin translations (#5971) Set BibEntry to "changed" state before setting a new entry type (#5966) Rework tools menu (#5979) Help menu (#5976) Fixed formatting Refactored subtile changes to optics of library properties (#5969) Change grobid URL to jabref subdomain (#5972) ...
2 parents f22a640 + d2de477 commit 6392f5b

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+1608
-945
lines changed

.sonarcloud.properties

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+

CHANGELOG.md

+7-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ We refer to [GitHub issues](https://github.com/JabRef/jabref/issues) by using `#
1313

1414
### Changed
1515

16-
- We reintroduced the possibility to extract references from plain text (using GROBID) [#5614](https://github.com/JabRef/jabref/pull/5614)
16+
- We reintroduced the possibility to extract references from plain text (using GROBID) [#5614](https://github.com/JabRef/jabref/pull/5614)
1717
- We changed the open office panel to show buttons in rows of three instead of going straight down to save space as the button expanded out to take up unnecessary horizontal space. [#5479](https://github.com/JabRef/jabref/issues/5479)
1818
- We cleaned up the group add/edit dialog. [#5826](https://github.com/JabRef/jabref/pull/5826)
1919
- We reintroduced the index column. [#5844](https://github.com/JabRef/jabref/pull/5844)
@@ -37,8 +37,14 @@ We refer to [GitHub issues](https://github.com/JabRef/jabref/issues) by using `#
3737
- We fixed several issues concerning managing external file types: Now everything is usable and fully functional. Previously, there were problems with the radio buttons, with saving the settings and with loading an input field value. Furthermore, different behavior for Windows and other operating systems was given, which was unified as well. [#5846](https://github.com/JabRef/jabref/issues/5846)
3838
- We fixed an issue where entries containing Unicode charaters were not parsed correctly [#5899](https://github.com/JabRef/jabref/issues/5899)
3939
- We fixed an issue where an entry containing an external filename with curly braces could not be saved. Curly braces are now longer allowed in filenames. [#5899](https://github.com/JabRef/jabref/issues/5899)
40+
- We fixed an issue where changing the type of an entry did not update the main table [#5906](https://github.com/JabRef/jabref/issues/5906)
41+
- We fixed an issue where opening a library from the recent libraries menu was not possible [#5939](https://github.com/JabRef/jabref/issues/5939)
42+
- We fixed an issue in the optics of the library properties, that cropped the dialog on scaled displays. [#5969](https://github.com/JabRef/jabref/issues/5969)
4043
- We fixed an issue where changing the type of an entry did not update the main table. [#5906](https://github.com/JabRef/jabref/issues/5906)
4144
- We fixed an issue where opening a library from the recent libraries menu was not possible. [#5939](https://github.com/JabRef/jabref/issues/5939)
45+
- We fixed an issue where the most bottom group in the list got lost, if it was dragged on itself. [#5983](https://github.com/JabRef/jabref/issues/5983)
46+
- We fixed an issue where changing entry type doesn't always work when biblatex source is shown. [#5905](https://github.com/JabRef/jabref/issues/5905)
47+
- We fixed an issue where the group and the link column were not updated after changing the entry in the main table. [#5985](https://github.com/JabRef/jabref/issues/5985)
4248

4349
### Removed
4450

build.gradle

+55-15
Original file line numberDiff line numberDiff line change
@@ -582,41 +582,81 @@ jlink {
582582

583583
// TODO: Remove the following correction to the merged module
584584
// The module descriptor automatically generated by the plugin for the merged module contained some invalid entries.
585-
// Execute ./gradlew suggestMergedModuleInfo and include the incorrect directives here.
585+
// Execute ./gradlew suggestMergedModuleInfo and include the suggested directives here.
586586
mergedModule {
587-
requires 'java.logging'
588-
requires 'jdk.xml.dom'
589-
requires 'java.sql'
590-
requires 'java.rmi'
591587
requires 'java.xml'
592588
requires 'com.sun.xml.txw2'
593-
requires 'com.google.gson'
594589
requires 'java.desktop'
595-
requires 'java.security.jgss'
596-
requires 'jdk.jsobject'
590+
requires 'org.objectweb.asm'
591+
requires 'jdk.jfr'
597592
requires 'jdk.unsupported'
593+
requires 'com.google.gson'
598594
requires 'java.management'
599595
requires 'java.naming'
600-
requires 'jdk.unsupported.desktop'
601596
requires 'java.security.sasl'
597+
requires 'com.sun.xml.fastinfoset'
598+
requires 'jdk.security.jgss'
599+
requires 'java.logging'
600+
requires 'jdk.xml.dom'
601+
requires 'java.sql'
602+
requires 'java.rmi'
603+
requires 'java.security.jgss'
604+
requires 'com.oracle.truffle.regex'
605+
requires 'jdk.jsobject'
606+
requires 'jdk.management'
607+
requires 'jdk.unsupported.desktop'
608+
requires 'org.objectweb.asm.util'
602609
requires 'java.scripting'
610+
requires 'org.objectweb.asm.commons'
611+
requires 'org.graalvm.truffle'
603612
requires 'java.datatransfer'
604613
requires 'java.compiler'
614+
requires 'java.sql.rowset'
605615
requires 'java.transaction.xa'
606-
requires 'com.sun.xml.fastinfoset'
616+
requires 'org.graalvm.sdk'
607617
requires 'org.slf4j'
608-
uses 'com.airhacks.afterburner.injection.PresenterFactory'
618+
uses 'org.apache.logging.log4j.util.PropertySource'
619+
uses 'org.apache.logging.log4j.core.util.WatchEventService'
620+
uses 'org.apache.logging.log4j.plugins.processor.PluginService'
609621
uses 'org.controlsfx.glyphfont.GlyphFont'
610622
uses 'com.airhacks.afterburner.views.ResourceLocator'
623+
uses 'com.oracle.truffle.js.runtime.Evaluator'
624+
uses 'org.apache.logging.log4j.message.ThreadDumpMessage.ThreadInfoFactory'
625+
uses 'com.airhacks.afterburner.injection.PresenterFactory'
626+
uses 'com.oracle.truffle.js.runtime.builtins.JSFunctionLookup'
627+
uses 'org.apache.logging.log4j.spi.Provider'
628+
uses 'org.mariadb.jdbc.tls.TlsSocketPlugin'
629+
uses 'org.mariadb.jdbc.LocalInfileInterceptor'
611630
uses 'javax.xml.bind.JAXBContextFactory'
612-
provides 'java.sql.Driver' with 'org.postgresql.Driver'
631+
provides 'javax.annotation.processing.Processor' with 'org.apache.logging.log4j.plugins.processor.PluginProcessor'
613632
provides 'org.controlsfx.glyphfont.GlyphFont' with 'org.controlsfx.glyphfont.FontAwesome'
614-
provides 'org.apache.commons.logging.LogFactory' with 'org.apache.logging.log4j.jcl.LogFactoryImpl'
615-
provides 'org.slf4j.spi.SLF4JServiceProvider' with 'org.apache.logging.slf4j.SLF4JServiceProvider'
633+
provides 'org.apache.logging.log4j.message.ThreadDumpMessage.ThreadInfoFactory' with 'org.apache.logging.log4j.core.message.ExtendedThreadInfoFactory'
634+
provides 'org.mariadb.jdbc.tls.TlsSocketPlugin' with 'org.mariadb.jdbc.internal.protocol.tls.DefaultTlsSocketPlugin'
616635
provides 'com.microsoft.applicationinsights.core.dependencies.io.grpc.ServerProvider' with 'com.microsoft.applicationinsights.core.dependencies.io.grpc.netty.shaded.io.grpc.netty.NettyServerProvider'
636+
provides 'com.oracle.truffle.js.runtime.Evaluator' with 'com.oracle.truffle.js.parser.GraalJSEvaluator'
617637
provides 'com.microsoft.applicationinsights.core.dependencies.io.grpc.NameResolverProvider' with 'com.microsoft.applicationinsights.core.dependencies.io.grpc.internal.DnsNameResolverProvider'
618-
provides 'java.security.Provider' with 'org.bouncycastle.jce.provider.BouncyCastleProvider', 'org.bouncycastle.pqc.jcajce.provider.BouncyCastlePQCProvider'
638+
provides 'org.apache.logging.log4j.util.PropertySource' with 'org.apache.logging.log4j.util.EnvironmentPropertySource',
639+
'org.apache.logging.log4j.util.SystemPropertiesPropertySource'
640+
provides 'java.sql.Driver' with 'org.postgresql.Driver'
641+
provides 'org.apache.logging.log4j.plugins.processor.PluginService' with 'org.apache.logging.log4j.plugins.convert.plugins.Log4jPlugins'
642+
provides 'org.mariadb.jdbc.authentication.AuthenticationPlugin' with 'org.mariadb.jdbc.internal.com.send.authentication.CachingSha2PasswordPlugin',
643+
'org.mariadb.jdbc.internal.com.send.authentication.ClearPasswordPlugin',
644+
'org.mariadb.jdbc.internal.com.send.authentication.Ed25519PasswordPlugin',
645+
'org.mariadb.jdbc.internal.com.send.authentication.NativePasswordPlugin',
646+
'org.mariadb.jdbc.internal.com.send.authentication.OldPasswordPlugin',
647+
'org.mariadb.jdbc.internal.com.send.authentication.SendGssApiAuthPacket',
648+
'org.mariadb.jdbc.internal.com.send.authentication.SendPamAuthPacket',
649+
'org.mariadb.jdbc.internal.com.send.authentication.Sha256PasswordPlugin'
650+
provides 'org.mariadb.jdbc.credential.CredentialPlugin' with 'org.mariadb.jdbc.credential.aws.AwsIamCredentialPlugin',
651+
'org.mariadb.jdbc.credential.env.EnvCredentialPlugin',
652+
'org.mariadb.jdbc.credential.system.PropertiesCredentialPlugin'
653+
provides 'org.apache.commons.logging.LogFactory' with 'org.apache.logging.log4j.jcl.LogFactoryImpl'
654+
provides 'org.slf4j.spi.SLF4JServiceProvider' with 'org.apache.logging.slf4j.SLF4JServiceProvider'
655+
provides 'org.apache.logging.log4j.spi.Provider' with 'org.apache.logging.log4j.core.impl.Log4jProvider'
656+
provides 'java.security.Provider' with 'org.bouncycastle.jce.provider.BouncyCastleProvider',
657+
'org.bouncycastle.pqc.jcajce.provider.BouncyCastlePQCProvider'
619658
provides 'com.microsoft.applicationinsights.core.dependencies.io.grpc.ManagedChannelProvider' with 'com.microsoft.applicationinsights.core.dependencies.io.grpc.netty.shaded.io.grpc.netty.NettyChannelProvider'
659+
provides 'com.oracle.truffle.js.runtime.builtins.JSFunctionLookup' with 'com.oracle.truffle.js.builtins.JSDefaultBuiltinLookup'
620660
}
621661

622662
jpackage {

buildres/windows/JabRefHost.ps1

+5-4
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ function Respond($response) {
1111
}
1212
}
1313

14-
$jabRefExe = [System.IO.Path]::Combine($PSScriptRoot, "JabRef.exe")
14+
$jabRefExe = [System.IO.Path]::Combine($PSScriptRoot, "runtime\\bin\\JabRef.bat")
1515

1616
try {
1717
$reader = New-Object System.IO.BinaryReader([System.Console]::OpenStandardInput())
@@ -37,9 +37,10 @@ try {
3737
#$wshell = New-Object -ComObject Wscript.Shell
3838
#$wshell.Popup($message.Text,0,"JabRef", 0x0 + 0x30)
3939

40-
$messageText = $message.Text
41-
$output = & $jabRefExe -importBibtex "$messageText" 2>&1
42-
#$output = & echoargs -importBibtex $messageText 2>&1
40+
$messageText = $message.Text.replace("`n"," ").replace("`r"," ")
41+
$output = & $jabRefExe -importBibtex "$messageText" *>&1
42+
#$output = "$messageText"
43+
#$wshell = New-Object -ComObject Wscript.Shell
4344
#$wshell.Popup($output,0,"JabRef", 0x0 + 0x30)
4445
return Respond @{message="ok";output="$output"}
4546
} finally {

docs/code-quality.md

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# Code Quality
2+
3+
We monitor the general source code quality at three places:
4+
5+
* [Teamscale](https://www.cqse.eu/de/produkte/teamscale/landing/) is a popular German product analyzing code quality. The analysis results are available at <https://demo.teamscale.com/dashboard.html#show//?id=kinnen%2FJabref%20Overview>.
6+
* [codacy](https://www.codacy.com/) is a hosted service to monitor code quality. The code quality analysis for JabRef is available at <https://www.codacy.com/app/simonharrer/jabref/dashboard>.
7+
* [codecov](https://codecov.io/) is a solution to check code coverage of test cases. The code coverage metrics for JabRef are available at <https://codecov.io/github/JabRef/jabref>.
8+
9+
We strongly recommend to read following two books on code quality:
10+
11+
* [Java by Comparison](java.by-comparison.com/) is a book by three JabRef developers which focuses on code improvements close to single statements. It is fast to read and one gains much information from each recommendation discussed in the book.
12+
* [Effective Java](https://www.oreilly.com/library/view/effective-java-3rd/9780134686097/) is the standard book for advanced Java programming. Did you know that `enum` is the [recommended way to enforce a singleton instance of a class](https://learning.oreilly.com/library/view/effective-java-3rd/9780134686097/ch2.xhtml#lev3)? Did you know that one should [refer to objects by their interfaces](https://learning.oreilly.com/library/view/effective-java-3rd/9780134686097/ch9.xhtml#lev64)?

docs/guidelines-for-setting-up-a-local-workspace.md

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
# Setup a local workspace
1+
# Set up a local workspace
22

33
This guide explains how to set up your environment for development of JabRef. It includes information about prerequisites, configuring your IDE, and running JabRef locally to verify your setup.
44

5-
For a complete step-by-step guide (using IntellJ as the IDE), have a look at the following video instructions:
5+
For a complete step-by-step guide for Linux using IntellJ IDEA as the IDE, have a look at the following video instructions:
66

7-
<p align="center">
8-
<a href="http://www.youtube.com/watch?v=FeQpygT0314"><img src="http://img.youtube.com/vi/FeQpygT0314/0.jpg" /></a>
9-
</p>
7+
<a href="https://youtu.be/JkFVJ6p0urw">
8+
<img src="https://img.youtube.com/vi/JkFVJ6p0urw/mqdefault.jpg" alt="JabRef development video tutorial"/>
9+
</a>
1010

1111
## Prerequisites
1212

src/main/java/module-info.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
requires java.sql;
77

88
// JavaFX
9+
requires javafx.base;
910
requires javafx.graphics;
1011
requires javafx.swing;
1112
requires javafx.controls;
@@ -72,9 +73,10 @@
7273
requires java.string.similarity;
7374
requires ojdbc10;
7475
requires org.postgresql.jdbc;
76+
requires org.mariadb.jdbc;
77+
uses org.mariadb.jdbc.credential.CredentialPlugin;
7578
requires org.apache.commons.lang3;
7679
requires org.antlr.antlr4.runtime;
7780
requires flowless;
7881
requires org.apache.tika.core;
79-
requires javafx.base;
8082
}

src/main/java/org/jabref/gui/JabRefFrame.java

+14-12
Original file line numberDiff line numberDiff line change
@@ -494,7 +494,7 @@ private Node createToolbar() {
494494
factory.createIconButton(StandardActions.GENERATE_CITE_KEYS, new OldDatabaseCommandWrapper(Actions.MAKE_KEY, this, stateManager)),
495495
factory.createIconButton(StandardActions.CLEANUP_ENTRIES, new OldDatabaseCommandWrapper(Actions.CLEANUP, this, stateManager)),
496496
new Separator(Orientation.VERTICAL),
497-
factory.createIconButton(StandardActions.FORK_ME, new OpenBrowserAction("https://github.com/JabRef/jabref")),
497+
factory.createIconButton(StandardActions.OPEN_GITHUB, new OpenBrowserAction("https://github.com/JabRef/jabref")),
498498
factory.createIconButton(StandardActions.OPEN_FACEBOOK, new OpenBrowserAction("https://www.facebook.com/JabRef/")),
499499
factory.createIconButton(StandardActions.OPEN_TWITTER, new OpenBrowserAction("https://twitter.com/jabref_org"))
500500
);
@@ -712,18 +712,23 @@ private MenuBar createMenu() {
712712

713713
new SeparatorMenuItem(),
714714

715+
factory.createMenuItem(StandardActions.REPLACE_ALL, new OldDatabaseCommandWrapper(Actions.REPLACE_ALL, this, stateManager)),
716+
factory.createMenuItem(StandardActions.GENERATE_CITE_KEYS, new OldDatabaseCommandWrapper(Actions.MAKE_KEY, this, stateManager)),
717+
718+
new SeparatorMenuItem(),
719+
715720
factory.createMenuItem(StandardActions.MANAGE_KEYWORDS, new ManageKeywordsAction(stateManager))
716721
);
717722

718723
if (Globals.prefs.getBoolean(JabRefPreferences.SPECIALFIELDSENABLED)) {
719724
edit.getItems().addAll(
725+
new SeparatorMenuItem(),
720726
SpecialFieldMenuItemFactory.createSpecialFieldMenuForActiveDatabase(SpecialField.RANKING, factory, undoManager),
721727
SpecialFieldMenuItemFactory.getSpecialFieldSingleItemForActiveDatabase(SpecialField.RELEVANCE, factory),
722728
SpecialFieldMenuItemFactory.getSpecialFieldSingleItemForActiveDatabase(SpecialField.QUALITY, factory),
723729
SpecialFieldMenuItemFactory.getSpecialFieldSingleItemForActiveDatabase(SpecialField.PRINTED, factory),
724730
SpecialFieldMenuItemFactory.createSpecialFieldMenuForActiveDatabase(SpecialField.PRIORITY, factory, undoManager),
725-
SpecialFieldMenuItemFactory.createSpecialFieldMenuForActiveDatabase(SpecialField.READ_STATUS, factory, undoManager),
726-
new SeparatorMenuItem()
731+
SpecialFieldMenuItemFactory.createSpecialFieldMenuForActiveDatabase(SpecialField.READ_STATUS, factory, undoManager)
727732
);
728733
}
729734

@@ -767,6 +772,9 @@ private MenuBar createMenu() {
767772
tools.getItems().addAll(
768773
factory.createMenuItem(StandardActions.PARSE_TEX, new ParseTexAction(stateManager)),
769774
factory.createMenuItem(StandardActions.NEW_SUB_LIBRARY_FROM_AUX, new NewSubLibraryAction(this, stateManager)),
775+
776+
new SeparatorMenuItem(),
777+
770778
factory.createMenuItem(StandardActions.FIND_UNLINKED_FILES, new FindUnlinkedFilesAction(this, stateManager)),
771779
factory.createMenuItem(StandardActions.WRITE_XMP, new OldDatabaseCommandWrapper(Actions.WRITE_XMP, this, stateManager)),
772780
factory.createMenuItem(StandardActions.COPY_LINKED_FILES, new CopyFilesAction(stateManager, this.getDialogService())),
@@ -778,8 +786,6 @@ private MenuBar createMenu() {
778786

779787
new SeparatorMenuItem(),
780788

781-
factory.createMenuItem(StandardActions.GENERATE_CITE_KEYS, new OldDatabaseCommandWrapper(Actions.MAKE_KEY, this, stateManager)),
782-
factory.createMenuItem(StandardActions.REPLACE_ALL, new OldDatabaseCommandWrapper(Actions.REPLACE_ALL, this, stateManager)),
783789
factory.createMenuItem(StandardActions.SEND_AS_EMAIL, new OldDatabaseCommandWrapper(Actions.SEND_AS_EMAIL, this, stateManager)),
784790
pushToApplicationMenuItem,
785791

@@ -845,23 +851,19 @@ private MenuBar createMenu() {
845851

846852
new SeparatorMenuItem(),
847853

854+
factory.createMenuItem(StandardActions.DONATE, new OpenBrowserAction("https://donations.jabref.org")),
848855
factory.createMenuItem(StandardActions.SEARCH_FOR_UPDATES, new SearchForUpdateAction(Globals.BUILD_INFO, prefs.getVersionPreferences(), dialogService, Globals.TASK_EXECUTOR)),
849856
factory.createSubMenu(StandardActions.WEB_MENU,
850857
factory.createMenuItem(StandardActions.OPEN_WEBPAGE, new OpenBrowserAction("https://jabref.org/")),
851858
factory.createMenuItem(StandardActions.OPEN_BLOG, new OpenBrowserAction("https://blog.jabref.org/")),
852859
factory.createMenuItem(StandardActions.OPEN_FACEBOOK, new OpenBrowserAction("https://www.facebook.com/JabRef/")),
853860
factory.createMenuItem(StandardActions.OPEN_TWITTER, new OpenBrowserAction("https://twitter.com/jabref_org")),
861+
factory.createMenuItem(StandardActions.OPEN_GITHUB, new OpenBrowserAction("https://github.com/JabRef/jabref")),
854862

855863
new SeparatorMenuItem(),
856864

857-
factory.createMenuItem(StandardActions.FORK_ME, new OpenBrowserAction("https://github.com/JabRef/jabref")),
858865
factory.createMenuItem(StandardActions.OPEN_DEV_VERSION_LINK, new OpenBrowserAction("https://builds.jabref.org/master/")),
859-
factory.createMenuItem(StandardActions.OPEN_CHANGELOG, new OpenBrowserAction("https://github.com/JabRef/jabref/blob/master/CHANGELOG.md")),
860-
861-
new SeparatorMenuItem(),
862-
863-
factory.createMenuItem(StandardActions.DONATE, new OpenBrowserAction("https://donations.jabref.org"))
864-
866+
factory.createMenuItem(StandardActions.OPEN_CHANGELOG, new OpenBrowserAction("https://github.com/JabRef/jabref/blob/master/CHANGELOG.md"))
865867
),
866868
factory.createMenuItem(StandardActions.ABOUT, new AboutAction())
867869
);

0 commit comments

Comments
 (0)