diff --git a/CHANGELOG.md b/CHANGELOG.md index fd202107fd2..30870947c39 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -56,7 +56,7 @@ We refer to [GitHub issues](https://github.com/JabRef/jabref/issues) by using `# - We added the ability to execute default action in dialog by using with Ctrl + Enter combination [#4496](https://github.com/JabRef/jabref/issues/4496) - We grouped and reordered the Main Menu (File, Edit, Library, Quality, Tools, and View tabs & icons). [#4666](https://github.com/JabRef/jabref/issues/4666) [#4667](https://github.com/JabRef/jabref/issues/4667) [#4668](https://github.com/JabRef/jabref/issues/4668) [#4669](https://github.com/JabRef/jabref/issues/4669) [#4670](https://github.com/JabRef/jabref/issues/4670) [#4671](https://github.com/JabRef/jabref/issues/4671) [#4672](https://github.com/JabRef/jabref/issues/4672) [#4673](https://github.com/JabRef/jabref/issues/4673) - We added additional modifiers (capitalize, titlecase and sentencecase) to the Bibtex key generator. [#1506](https://github.com/JabRef/jabref/issues/1506) -- We grouped the toolbar icons and changed the Open Library and Copy icons. [#4584](https://github.com/JabRef/jabref/issues/4584) +- We grouped the toolbar icons and changed the Open Library and Copy icons. [#4584](https://github.com/JabRef/jabref/issues/4584) - We added a browse button next to the path text field for aux-based groups. [#4586](https://github.com/JabRef/jabref/issues/4586) - We changed the title of Group Dialog to "Add subgroup" from "Edit group" when we select Add subgroup option. - We enable import button only if entries are selected. [#4755](https://github.com/JabRef/jabref/issues/4755) @@ -64,6 +64,7 @@ We refer to [GitHub issues](https://github.com/JabRef/jabref/issues) by using `# - We added an option in the settings to set the default action in JabRef when right clicking on any entry in any database and selecting "Open folder". [#4763](https://github.com/JabRef/jabref/issues/4763) - The Medline fetcher now normalizes the author names according to the BibTeX-Standard [#4345](https://github.com/JabRef/jabref/issues/4345) - We added an option on the Linked File Viewer to rename the attached file of an entry directly on the JabRef. [#4844](https://github.com/JabRef/jabref/issues/4844) +- We added an option in the preference dialog box that allows user to enable helpful tooltips.[#3599](https://github.com/JabRef/jabref/issues/3599) ### Fixed @@ -116,6 +117,12 @@ We refer to [GitHub issues](https://github.com/JabRef/jabref/issues) by using `# - We fixed an issue where an NullPointer exception was thrown when a referenced entry in an Open/Libre Office document was no longer present in the library. Now an error message with the reference marker of the missing entry is shown. [#4932](https://github.com/JabRef/jabref/issues/4932) - We fixed an issue where a database exception related to a missing timezone was too big. [#4827](https://github.com/JabRef/jabref/issues/4827) - We fixed an issue where the IEEE fetcher returned an error if no keywords were present in the result from the IEEE website [#4997](https://github.com/JabRef/jabref/issues/4997) +- We fixed an issue where the command line help text had several errors, and arguments and descriptions have been rewritten to simplify and detail them better. [#4932](https://github.com/JabRef/jabref/issues/2016) +- We fixed an issue where the same menu for changing entry type had two different sizes and weights. [#4977](https://github.com/JabRef/jabref/issues/4977) +- We fixed an issue where the "Attach file" dialog, in the right-click menu for an entry, started on the working directory instead of the user's main directory. [#4995](https://github.com/JabRef/jabref/issues/4995) + + + ### Removed - The feature to "mark entries" was removed and merged with the groups functionality. For migration, a group is created for every value of the `__markedentry` field and the entry is added to this group. diff --git a/README.md b/README.md index d0a9efc35f7..ac2872cd8b4 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,14 @@ JabRef is an open-source, cross-platform citation and reference management tool Stay on top of your literature: JabRef helps you to collect and organize sources, find the paper you need and discover the latest research. ![main table](https://www.jabref.org/img/JabRef-4-0-MainTable.png) +## Table of Contents + +- [Features](#features) +- [Installation](#installation) +- [Bug Reports, Suggestions, Other Feedback](#bug-reports-suggestions-other-feedback) +- [Contributing](#contributing) +- [Acknowledgements](#acknowledgements) / [License](#license) + ## Features JabRef is a cross-platform application that works on Windows, Linux and Mac OS X. It is available free of charge and is actively developed. diff --git a/build.gradle b/build.gradle index fed3e3894da..32744323702 100644 --- a/build.gradle +++ b/build.gradle @@ -94,7 +94,7 @@ dependencies { compile 'org.apache.pdfbox:fontbox:2.0.15' compile 'org.apache.pdfbox:xmpbox:2.0.15' - compile group: 'org.apache.tika', name: 'tika-core', version: '1.20' + compile group: 'org.apache.tika', name: 'tika-core', version: '1.21' // required for reading write-protected PDFs - see https://github.com/JabRef/jabref/pull/942#issuecomment-209252635 compile 'org.bouncycastle:bcprov-jdk15on:1.61' @@ -130,7 +130,7 @@ dependencies { compile 'de.saxsys:mvvmfx:1.8.0' compile 'org.fxmisc.easybind:easybind:1.0.3' compile 'org.fxmisc.flowless:flowless:0.6.1' - compile 'org.fxmisc.richtext:richtextfx:0.10.0' + compile 'org.fxmisc.richtext:richtextfx:0.10.1' compile 'com.sibvisions.external.jvxfx:dndtabpane:0.1' compile 'javax.inject:javax.inject:1' compile 'com.jfoenix:jfoenix:8.0.8' diff --git a/src/main/java/org/jabref/cli/JabRefCLI.java b/src/main/java/org/jabref/cli/JabRefCLI.java index 83459c97e01..dc2edfe8984 100644 --- a/src/main/java/org/jabref/cli/JabRefCLI.java +++ b/src/main/java/org/jabref/cli/JabRefCLI.java @@ -4,7 +4,6 @@ import org.jabref.Globals; import org.jabref.logic.l10n.Localization; -import org.jabref.model.database.BibDatabaseMode; import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.DefaultParser; @@ -17,27 +16,25 @@ public class JabRefCLI { + private static final int WIDTH = 100; // Number of characters per line private static final Logger LOGGER = LoggerFactory.getLogger(JabRefCLI.class); private final CommandLine cl; private List leftOver; public JabRefCLI(String[] args) { - Options options = getOptions(); - try { this.cl = new DefaultParser().parse(options, args); this.leftOver = cl.getArgList(); } catch (ParseException e) { LOGGER.warn("Problem parsing arguments", e); - this.printUsage(); throw new RuntimeException(); } } public static String getExportMatchesSyntax() { - return String.format("[%s]searchTerm,outputFile: %s[,%s]", + return String.format("[%s]searchTerm,outputFile:%s[,%s]", Localization.lang("field"), Localization.lang("file"), Localization.lang("exportFormat")); @@ -147,104 +144,97 @@ public String getExportMatches() { return cl.getOptionValue("exportMatches"); } - public boolean isGenerateBibtexKeys() { return cl.hasOption("generateBibtexKeys"); } + public boolean isGenerateBibtexKeys() { + return cl.hasOption("generateBibtexKeys"); + } - public boolean isAutomaticallySetFileLinks() { return cl.hasOption("automaticallySetFileLinks"); } + public boolean isAutomaticallySetFileLinks() { + return cl.hasOption("automaticallySetFileLinks"); + } private Options getOptions() { Options options = new Options(); // boolean options - options.addOption("v", "version", false, Localization.lang("Display version")); - options.addOption("n", "nogui", false, Localization.lang("No GUI. Only process command line options.")); options.addOption("h", "help", false, Localization.lang("Display help on command line options")); + options.addOption("n", "nogui", false, Localization.lang("No GUI. Only process command line options")); + options.addOption("asfl", "automaticallySetFileLinks", false, Localization.lang("Automatically set file links")); + options.addOption("g", "generateBibtexKeys", false, Localization.lang("Regenerate all keys for the entries in a BibTeX file")); options.addOption("b", "blank", false, Localization.lang("Do not open any files at startup")); + options.addOption("v", "version", false, Localization.lang("Display version")); options.addOption(null, "debug", false, Localization.lang("Show debug level messages")); // The "-console" option is handled by the install4j launcher - options.addOption(null, "console", false, Localization.lang("Show console output (only necessary when the launcher is used)")); + options.addOption(null, "console", false, Localization.lang("Show console output (only when the launcher is used)")); options.addOption(Option.builder("i"). longOpt("import"). - desc(String.format("%s: %s[,import format]", Localization.lang("Import file"), - Localization.lang("filename"))). + desc(String.format("%s: '%s'", Localization.lang("Import file"), "-i library.bib")). hasArg(). - argName("FILE").build()); + argName("FILE[,FORMAT]"). + build()); - options.addOption( - Option.builder("ib") - .longOpt("importBibtex") - .desc(String.format("%s: %s[,importBibtex bibtexString]", Localization.lang("Import") + " " + BibDatabaseMode.BIBTEX.getFormattedName(), Localization.lang("filename"))) - .hasArg() - .argName("FILE") - .build()); + options.addOption(Option.builder(). + longOpt("importToOpen"). + desc(Localization.lang("Same as --import, but will be imported to the opened tab")). + hasArg(). + argName("FILE[,FORMAT]"). + build()); - options.addOption(Option.builder("o"). - longOpt("output"). - desc(String.format("%s: %s[,export format]", Localization.lang("Output or export file"), - Localization.lang("filename"))). + options.addOption(Option.builder("ib"). + longOpt("importBibtex"). + desc(String.format("%s: '%s'", Localization.lang("Import BibTeX"), "-ib @article{entry}")). hasArg(). - argName("FILE"). + argName("BIBTEXT_STRING"). build()); - options.addOption(Option.builder("x"). - longOpt("prexp"). - desc(Localization.lang("Export preferences to file")). + options.addOption(Option.builder("o"). + longOpt("output"). + desc(String.format("%s: '%s'", Localization.lang("Export an input to a file"), "-i db.bib -o db.htm,html")). hasArg(). - argName("FILE"). + argName("FILE[,FORMAT]"). build()); - options.addOption(Option.builder("p"). - longOpt("primp"). - desc(Localization.lang("Import preferences from file")). + options.addOption(Option.builder("m"). + longOpt("exportMatches"). + desc(String.format("%s: '%s'", Localization.lang("Matching"), "-i db.bib -m author=Newton,search.htm,html")). hasArg(). - argName("FILE"). + argName("QUERY,FILE[,FORMAT]"). build()); - options.addOption(Option.builder("d"). - longOpt("prdef"). - desc(Localization.lang("Reset preferences (key1,key2,... or 'all')")). + + options.addOption(Option.builder("f"). + longOpt("fetch"). + desc(String.format("%s: '%s'", Localization.lang("Run fetcher"), "-f Medline/PubMed:cancer")). hasArg(). - argName("FILE"). + argName("FETCHER:QUERY"). build()); options.addOption(Option.builder("a"). longOpt("aux"). - desc(String.format("%s: %s[.aux],%s[.bib]", Localization.lang("Sublibrary from AUX"), - Localization.lang("file"), - Localization.lang("new"))). + desc(String.format("%s: '%s'", Localization.lang("Sublibrary from AUX to BibTeX"), "-a thesis.aux,new.bib")). hasArg(). - argName("FILE"). + argName("FILE[.aux],FILE[.bib] FILE"). build()); - options.addOption(Option.builder(). - longOpt("importToOpen"). - desc(Localization.lang("Import to open tab")). + options.addOption(Option.builder("x"). + longOpt("prexp"). + desc(String.format("%s: '%s'", Localization.lang("Export preferences to a file"), "-x prefs.xml")). hasArg(). - argName("FILE"). + argName("[FILE]"). build()); - options.addOption(Option.builder("f"). - longOpt("fetch"). - desc(Localization.lang("Run fetcher, e.g. \"--fetch=Medline:cancer\"")). + options.addOption(Option.builder("p"). + longOpt("primp"). + desc(String.format("%s: '%s'", Localization.lang("Import preferences from a file"), "-p prefs.xml")). hasArg(). - argName("FILE"). + argName("[FILE]"). build()); - options.addOption(Option.builder("m"). - longOpt("exportMatches"). - desc(JabRefCLI.getExportMatchesSyntax()). + options.addOption(Option.builder("d"). + longOpt("prdef"). + desc(String.format("%s: '%s'", Localization.lang("Reset preferences"), "-d mainFontSize,newline' or '-d all")). hasArg(). - argName("FILE"). - build()); - - options.addOption(Option.builder("g"). - longOpt("generateBibtexKeys"). - desc(Localization.lang("Regenerate all keys for the entries in a BibTeX file")) - .build()); - - options.addOption(Option.builder("asfl"). - longOpt("automaticallySetFileLinks"). - desc(Localization.lang("Automatically set file links")). + argName("KEY1[,KEY2][,KEYn] | all"). build()); return options; @@ -266,7 +256,7 @@ public void printUsage() { String footer = '\n' + importFormatsList + outFormatsList + "\nPlease report issues at https://github.com/JabRef/jabref/issues."; HelpFormatter formatter = new HelpFormatter(); - formatter.printHelp("jabref [OPTIONS] [BIBTEX_FILE]\n\nOptions:", header, getOptions(), footer, true); + formatter.printHelp(WIDTH, "jabref [OPTIONS] [BIBTEX_FILE]\n\nOptions:", header, getOptions(), footer, true); } private String getVersionInfo() { diff --git a/src/main/java/org/jabref/gui/Base.css b/src/main/java/org/jabref/gui/Base.css index 642fe8dcf88..2db5a049c00 100644 --- a/src/main/java/org/jabref/gui/Base.css +++ b/src/main/java/org/jabref/gui/Base.css @@ -1032,3 +1032,7 @@ We want to have a look that matches our icons in the tool-bar */ -fx-font-size: 1.5em; -fx-padding: 1em 0em 1em 0em; } + +.dialog-pane { + -fx-background-color: -fx-control-inner-background; +} diff --git a/src/main/java/org/jabref/gui/actions/ActionFactory.java b/src/main/java/org/jabref/gui/actions/ActionFactory.java index 07a8ddb3f2f..60625d13a1a 100644 --- a/src/main/java/org/jabref/gui/actions/ActionFactory.java +++ b/src/main/java/org/jabref/gui/actions/ActionFactory.java @@ -4,7 +4,6 @@ import java.lang.reflect.Method; import java.util.Objects; -import javafx.scene.Node; import javafx.scene.control.Button; import javafx.scene.control.ButtonBase; import javafx.scene.control.CheckMenuItem; @@ -148,13 +147,9 @@ public ButtonBase configureIconButton(Action action, Command command, ButtonBase button.getStyleClass().add("icon-button"); // For some reason the graphic is not set correctly, so let's fix this + // ToDO: Find a way to reuse JabRefIconView button.graphicProperty().unbind(); - action.getIcon().ifPresent(icon -> { - // ToDO: Find a way to reuse JabRefIconView - Node graphicNode = icon.getGraphicNode(); - graphicNode.setStyle(String.format("-fx-font-family: %s; -fx-font-size: %s;", icon.fontFamily(), "1em")); - button.setGraphic(graphicNode); - }); + action.getIcon().ifPresent(icon -> button.setGraphic(icon.getGraphicNode())); return button; } diff --git a/src/main/java/org/jabref/gui/entryeditor/EntryEditor.css b/src/main/java/org/jabref/gui/entryeditor/EntryEditor.css index 313583ed222..1a1be9d2870 100644 --- a/src/main/java/org/jabref/gui/entryeditor/EntryEditor.css +++ b/src/main/java/org/jabref/gui/entryeditor/EntryEditor.css @@ -31,6 +31,16 @@ -fx-background-color: -jr-icon-background-active; } +#typeLabel .context-menu { + -fx-font-size: 0.92em; + -fx-font-weight: normal; +} + +#typeLabel .tooltip { + -fx-font-size: 1em; + -fx-font-weight: normal; +} + .icon-button.narrow { -fx-padding: 0.1em; } diff --git a/src/main/java/org/jabref/gui/entryeditor/EntryEditor.fxml b/src/main/java/org/jabref/gui/entryeditor/EntryEditor.fxml index d4cd990c09b..35fb41daa74 100644 --- a/src/main/java/org/jabref/gui/entryeditor/EntryEditor.fxml +++ b/src/main/java/org/jabref/gui/entryeditor/EntryEditor.fxml @@ -40,7 +40,14 @@ -