From 2316530a9d41346ed730d23e5fcf25f193ed7af5 Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Sat, 9 May 2020 01:22:09 +0200 Subject: [PATCH 01/13] Enforce LeftCurly rule --- config/checkstyle/checkstyle.xml | 16 +++- .../org/jabref/gui/EntryTypeViewModel.java | 9 +- .../java/org/jabref/gui/StateManager.java | 21 +++-- .../AutoCompletePreferences.java | 4 +- .../FieldFormatterCleanupsPanel.java | 30 ++++--- .../FieldFormatterCleanupsPanelViewModel.java | 28 +++++-- .../jabref/gui/edit/ReplaceStringAction.java | 3 +- .../jabref/gui/edit/ReplaceStringView.java | 6 +- .../gui/fieldeditors/FieldEditorFX.java | 10 ++- .../gui/fieldeditors/LinkedFileViewModel.java | 4 +- .../LibraryPropertiesDialogViewModel.java | 12 ++- .../jabref/gui/maintable/MainTableColumn.java | 8 +- .../gui/maintable/MainTableColumnModel.java | 42 ++++++---- .../gui/maintable/MainTablePreferences.java | 4 +- .../preferences/BibtexKeyPatternTabView.java | 4 +- .../BibtexKeyPatternTabViewModel.java | 52 +++++++++--- .../preferences/EntryEditorTabViewModel.java | 56 +++++++++---- .../gui/preferences/ExportSortingTabView.java | 4 +- .../gui/preferences/ExternalTabView.java | 28 +++++-- .../gui/preferences/ExternalTabViewModel.java | 64 ++++++++++---- .../jabref/gui/preferences/FileTabView.java | 8 +- .../gui/preferences/FileTabViewModel.java | 74 +++++++++++----- .../gui/preferences/GeneralTabView.java | 4 +- .../gui/preferences/GeneralTabViewModel.java | 84 ++++++++++++++----- .../jabref/gui/preferences/GroupsTabView.java | 4 +- .../gui/preferences/GroupsTabViewModel.java | 36 ++++++-- .../jabref/gui/preferences/ImportTabView.java | 8 +- .../gui/preferences/ImportTabViewModel.java | 16 +++- .../preferences/NameFormatterItemModel.java | 16 +++- .../gui/preferences/NameFormatterTabView.java | 15 ++-- .../NameFormatterTabViewModel.java | 24 ++++-- .../preferences/PreferencesDialogView.java | 23 +++-- .../gui/preferences/PreviewTabView.java | 35 +++++--- .../gui/preferences/PreviewTabViewModel.java | 44 ++++++---- .../gui/preferences/TableColumnsTabView.java | 21 +++-- .../preferences/TableColumnsTabViewModel.java | 33 ++++++-- .../jabref/gui/preferences/TableTabView.java | 8 +- .../gui/preferences/TableTabViewModel.java | 32 +++++-- .../gui/preferences/XmpPrivacyTabView.java | 12 ++- .../preferences/XmpPrivacyTabViewModel.java | 27 ++++-- .../jabref/gui/search/GlobalSearchBar.java | 6 +- .../SpecialFieldsPreferences.java | 12 ++- .../org/jabref/logic/importer/Importer.java | 54 ++++++------ .../org/jabref/logic/layout/LayoutEntry.java | 7 +- .../org/jabref/logic/layout/LayoutHelper.java | 3 +- .../org/jabref/logic/net/URLDownload.java | 18 ++-- .../org/jabref/logic/util/io/FileUtil.java | 21 ++--- .../model/metadata/FilePreferences.java | 4 +- 48 files changed, 728 insertions(+), 326 deletions(-) diff --git a/config/checkstyle/checkstyle.xml b/config/checkstyle/checkstyle.xml index 2de4703981a..d365ca4578d 100644 --- a/config/checkstyle/checkstyle.xml +++ b/config/checkstyle/checkstyle.xml @@ -85,6 +85,9 @@ + + + @@ -99,16 +102,25 @@ public String getTabName() { return Localization.lang("XMP metadata"); } - Since it is too much effort to reformat all code, it is currently not enabled --> - + --> + + + + + + + + + + diff --git a/src/main/java/org/jabref/gui/EntryTypeViewModel.java b/src/main/java/org/jabref/gui/EntryTypeViewModel.java index c3284a74a90..5d24dde230a 100644 --- a/src/main/java/org/jabref/gui/EntryTypeViewModel.java +++ b/src/main/java/org/jabref/gui/EntryTypeViewModel.java @@ -71,7 +71,9 @@ public ObjectProperty selectedItemProperty() { return selectedItemProperty; } - public ValidationStatus idFieldValidationStatus() { return idFieldValidator.getValidationStatus(); } + public ValidationStatus idFieldValidationStatus() { + return idFieldValidator.getValidationStatus(); + } public StringProperty idTextProperty() { return idText; @@ -101,7 +103,6 @@ public void stopFetching() { } private class FetcherWorker extends Task> { - private IdBasedFetcher fetcher = null; private String searchID = ""; @@ -118,7 +119,6 @@ protected Optional call() throws InterruptedException, FetcherExceptio } return bibEntry; } - } public void runFetcherWorker() { @@ -139,7 +139,6 @@ public void runFetcherWorker() { searchingProperty.set(false); fetcherWorker = new FetcherWorker(); - }); fetcherWorker.setOnSucceeded(evt -> { @@ -171,7 +170,6 @@ public void runFetcherWorker() { basePanel.insertEntry(entry); } searchSuccesfulProperty.set(true); - } else if (StringUtil.isBlank(idText.getValue())) { dialogService.showWarningDialogAndWait(Localization.lang("Empty search ID"), Localization.lang("The given search ID was empty.")); } @@ -179,7 +177,6 @@ public void runFetcherWorker() { focusAndSelectAllProperty.set(true); searchingProperty().setValue(false); - }); } } diff --git a/src/main/java/org/jabref/gui/StateManager.java b/src/main/java/org/jabref/gui/StateManager.java index 05a9364f65d..f319c6d7be3 100644 --- a/src/main/java/org/jabref/gui/StateManager.java +++ b/src/main/java/org/jabref/gui/StateManager.java @@ -25,11 +25,14 @@ /** * This class manages the GUI-state of JabRef, including: - * - currently selected database - * - currently selected group - * - active search - * - active number of search results - * - focus owner + * + *
    + *
  • currently selected database
  • + *
  • currently selected group + *
  • active search
  • + *
  • active number of search results
  • + *
  • focus owner
  • + *
*/ public class StateManager { @@ -109,7 +112,11 @@ public void setSearchQuery(SearchQuery searchQuery) { activeSearchQuery.setValue(Optional.of(searchQuery)); } - public OptionalObjectProperty focusOwnerProperty() { return focusOwner; } + public OptionalObjectProperty focusOwnerProperty() { + return focusOwner; + } - public Optional getFocusOwner() { return focusOwner.get(); } + public Optional getFocusOwner() { + return focusOwner.get(); + } } diff --git a/src/main/java/org/jabref/gui/autocompleter/AutoCompletePreferences.java b/src/main/java/org/jabref/gui/autocompleter/AutoCompletePreferences.java index 99ba956eb46..6edd5d3a223 100644 --- a/src/main/java/org/jabref/gui/autocompleter/AutoCompletePreferences.java +++ b/src/main/java/org/jabref/gui/autocompleter/AutoCompletePreferences.java @@ -37,7 +37,9 @@ public AutoCompleteFirstNameMode getFirstNameMode() { return firstNameMode; } - public NameFormat getNameFormat() { return nameFormat; } + public NameFormat getNameFormat() { + return nameFormat; + } /** * Returns the list of fields for which autocomplete is enabled diff --git a/src/main/java/org/jabref/gui/commonfxcontrols/FieldFormatterCleanupsPanel.java b/src/main/java/org/jabref/gui/commonfxcontrols/FieldFormatterCleanupsPanel.java index 5f6e1e064b1..2c2762fc5d8 100644 --- a/src/main/java/org/jabref/gui/commonfxcontrols/FieldFormatterCleanupsPanel.java +++ b/src/main/java/org/jabref/gui/commonfxcontrols/FieldFormatterCleanupsPanel.java @@ -75,9 +75,9 @@ private void setupTable() { viewModel.selectedCleanupProperty().setValue(cleanupsList.getSelectionModel()); cleanupsList.setOnKeyPressed(event -> { - if (event.getCode() == KeyCode.DELETE) { - viewModel.removeCleanup(cleanupsList.getSelectionModel().getSelectedItem()); - } + if (event.getCode() == KeyCode.DELETE) { + viewModel.removeCleanup(cleanupsList.getSelectionModel().getSelectedItem()); + } }); } @@ -87,10 +87,10 @@ private void setupCombos() { .install(addableFields); addableFields.setConverter(FieldsUtil.fieldStringConverter); addableFields.setOnKeyPressed(event -> { - if (event.getCode() == KeyCode.TAB || event.getCode() == KeyCode.ENTER) { - addableFormatters.requestFocus(); - event.consume(); - } + if (event.getCode() == KeyCode.TAB || event.getCode() == KeyCode.ENTER) { + addableFormatters.requestFocus(); + event.consume(); + } }); new ViewModelListCellFactory() @@ -98,10 +98,10 @@ private void setupCombos() { .withStringTooltip(Formatter::getDescription) .install(addableFormatters); addableFormatters.setOnKeyPressed(event -> { - if (event.getCode() == KeyCode.ENTER) { - viewModel.addCleanup(); - event.consume(); - } + if (event.getCode() == KeyCode.ENTER) { + viewModel.addCleanup(); + event.consume(); + } }); } @@ -129,7 +129,11 @@ private void addCleanup() { viewModel.addCleanup(); } - public BooleanProperty cleanupsDisableProperty() { return viewModel.cleanupsDisableProperty(); } + public BooleanProperty cleanupsDisableProperty() { + return viewModel.cleanupsDisableProperty(); + } - public ListProperty cleanupsProperty() { return viewModel.cleanupsListProperty(); } + public ListProperty cleanupsProperty() { + return viewModel.cleanupsListProperty(); + } } diff --git a/src/main/java/org/jabref/gui/commonfxcontrols/FieldFormatterCleanupsPanelViewModel.java b/src/main/java/org/jabref/gui/commonfxcontrols/FieldFormatterCleanupsPanelViewModel.java index 86705892e2e..24258baa7ac 100644 --- a/src/main/java/org/jabref/gui/commonfxcontrols/FieldFormatterCleanupsPanelViewModel.java +++ b/src/main/java/org/jabref/gui/commonfxcontrols/FieldFormatterCleanupsPanelViewModel.java @@ -62,17 +62,31 @@ public void removeCleanup(FieldFormatterCleanup cleanup) { cleanupsListProperty.remove(cleanup); } - public BooleanProperty cleanupsDisableProperty() { return cleanupsDisableProperty; } + public BooleanProperty cleanupsDisableProperty() { + return cleanupsDisableProperty; + } - public ListProperty cleanupsListProperty() { return cleanupsListProperty; } + public ListProperty cleanupsListProperty() { + return cleanupsListProperty; + } - public ObjectProperty> selectedCleanupProperty() { return selectedCleanupProperty; } + public ObjectProperty> selectedCleanupProperty() { + return selectedCleanupProperty; + } - public ListProperty availableFieldsProperty() { return availableFieldsProperty; } + public ListProperty availableFieldsProperty() { + return availableFieldsProperty; + } - public ObjectProperty selectedFieldProperty() { return selectedFieldProperty; } + public ObjectProperty selectedFieldProperty() { + return selectedFieldProperty; + } - public ListProperty availableFormattersProperty() { return availableFormattersProperty; } + public ListProperty availableFormattersProperty() { + return availableFormattersProperty; + } - public ObjectProperty selectedFormatterProperty() { return selectedFormatterProperty; } + public ObjectProperty selectedFormatterProperty() { + return selectedFormatterProperty; + } } diff --git a/src/main/java/org/jabref/gui/edit/ReplaceStringAction.java b/src/main/java/org/jabref/gui/edit/ReplaceStringAction.java index a903d812514..33b016ce9e7 100644 --- a/src/main/java/org/jabref/gui/edit/ReplaceStringAction.java +++ b/src/main/java/org/jabref/gui/edit/ReplaceStringAction.java @@ -5,8 +5,7 @@ import org.jabref.gui.actions.ActionHelper; import org.jabref.gui.actions.SimpleCommand; -public class ReplaceStringAction extends SimpleCommand -{ +public class ReplaceStringAction extends SimpleCommand { private final JabRefFrame frame; public ReplaceStringAction(JabRefFrame frame, StateManager stateManager) { diff --git a/src/main/java/org/jabref/gui/edit/ReplaceStringView.java b/src/main/java/org/jabref/gui/edit/ReplaceStringView.java index f5fdbe64d41..deb4c15c3d9 100644 --- a/src/main/java/org/jabref/gui/edit/ReplaceStringView.java +++ b/src/main/java/org/jabref/gui/edit/ReplaceStringView.java @@ -15,8 +15,7 @@ import com.airhacks.afterburner.views.ViewLoader; import de.saxsys.mvvmfx.utils.validation.visualization.ControlsFxVisualizer; -public class ReplaceStringView extends BaseDialog -{ +public class ReplaceStringView extends BaseDialog { @FXML private RadioButton allReplace; @FXML private CheckBox selectFieldOnly; @@ -55,8 +54,7 @@ public void initialize() { @FXML private void buttonReplace() { String findString = findField.getText(); - if ("".equals(findString)) - { + if ("".equals(findString)) { this.close(); return; } diff --git a/src/main/java/org/jabref/gui/fieldeditors/FieldEditorFX.java b/src/main/java/org/jabref/gui/fieldeditors/FieldEditorFX.java index fea5b0432d8..0c7debc699a 100644 --- a/src/main/java/org/jabref/gui/fieldeditors/FieldEditorFX.java +++ b/src/main/java/org/jabref/gui/fieldeditors/FieldEditorFX.java @@ -25,11 +25,13 @@ default boolean childIsFocused() { /** * Returns relative size of the field editor in terms of display space. - * - * A value of 1 means that the editor gets exactly as much space as all other regular editors. - * A value of 2 means that the editor gets twice as much space as regular editors. + *

+ * A value of 1 means that the editor gets exactly as much space as all other regular editors. A value of 2 means + * that the editor gets twice as much space as regular editors. * * @return the relative weight of the editor in terms of display space */ - default double getWeight() { return 1; } + default double getWeight() { + return 1; + } } diff --git a/src/main/java/org/jabref/gui/fieldeditors/LinkedFileViewModel.java b/src/main/java/org/jabref/gui/fieldeditors/LinkedFileViewModel.java index 352cff0eaa3..7caa3a1d69e 100644 --- a/src/main/java/org/jabref/gui/fieldeditors/LinkedFileViewModel.java +++ b/src/main/java/org/jabref/gui/fieldeditors/LinkedFileViewModel.java @@ -470,5 +470,7 @@ public LinkedFile getFile() { return linkedFile; } - public ValidationStatus fileExistsValidationStatus() { return fileExistsValidator.getValidationStatus(); } + public ValidationStatus fileExistsValidationStatus() { + return fileExistsValidator.getValidationStatus(); + } } diff --git a/src/main/java/org/jabref/gui/libraryproperties/LibraryPropertiesDialogViewModel.java b/src/main/java/org/jabref/gui/libraryproperties/LibraryPropertiesDialogViewModel.java index 555c70aede9..9d41d1b8341 100644 --- a/src/main/java/org/jabref/gui/libraryproperties/LibraryPropertiesDialogViewModel.java +++ b/src/main/java/org/jabref/gui/libraryproperties/LibraryPropertiesDialogViewModel.java @@ -126,8 +126,8 @@ void setValues() { cleanupsProperty().setValue(FXCollections.observableArrayList(value.getConfiguredActions())); }, () -> { initialMetaData.setSaveActions(Cleanups.DEFAULT_SAVE_ACTIONS); - cleanupsDisableProperty().setValue(!Cleanups.DEFAULT_SAVE_ACTIONS.isEnabled()); - cleanupsProperty().setValue(FXCollections.observableArrayList(Cleanups.DEFAULT_SAVE_ACTIONS.getConfiguredActions())); + cleanupsDisableProperty().setValue(!Cleanups.DEFAULT_SAVE_ACTIONS.isEnabled()); + cleanupsProperty().setValue(FXCollections.observableArrayList(Cleanups.DEFAULT_SAVE_ACTIONS.getConfiguredActions())); }); } @@ -314,7 +314,11 @@ public BooleanProperty saveTertiaryDescPropertySelected() { // FieldFormatterCleanupsPanel - public BooleanProperty cleanupsDisableProperty() { return cleanupsDisableProperty; } + public BooleanProperty cleanupsDisableProperty() { + return cleanupsDisableProperty; + } - public ListProperty cleanupsProperty() { return cleanupsProperty; } + public ListProperty cleanupsProperty() { + return cleanupsProperty; + } } diff --git a/src/main/java/org/jabref/gui/maintable/MainTableColumn.java b/src/main/java/org/jabref/gui/maintable/MainTableColumn.java index 2c205a6773c..7333e1a8b17 100644 --- a/src/main/java/org/jabref/gui/maintable/MainTableColumn.java +++ b/src/main/java/org/jabref/gui/maintable/MainTableColumn.java @@ -25,7 +25,11 @@ public MainTableColumn(MainTableColumnModel model) { value -> model.sortTypeProperty().setValue(this.getSortType())); } - public MainTableColumnModel getModel() { return model; } + public MainTableColumnModel getModel() { + return model; + } - public String getDisplayName() { return model.getDisplayName(); } + public String getDisplayName() { + return model.getDisplayName(); + } } diff --git a/src/main/java/org/jabref/gui/maintable/MainTableColumnModel.java b/src/main/java/org/jabref/gui/maintable/MainTableColumnModel.java index 708d9cdfac1..d344e8f1481 100644 --- a/src/main/java/org/jabref/gui/maintable/MainTableColumnModel.java +++ b/src/main/java/org/jabref/gui/maintable/MainTableColumnModel.java @@ -20,8 +20,8 @@ import org.slf4j.LoggerFactory; /** - * Represents the full internal name of a column in the main table. Consists of two parts: - * The type of the column and a qualifier, like the field name to be displayed in the column. + * Represents the full internal name of a column in the main table. Consists of two parts: The type of the column and a + * qualifier, like the field name to be displayed in the column. */ public class MainTableColumnModel { @@ -80,7 +80,7 @@ public static Type fromString(String text) { /** * This is used by the preferences dialog, to initialize available columns the user can add to the table. * - * @param type the {@code MainTableColumnModel.Type} of the column, e.g. "NORMALFIELD" or "EXTRAFILE" + * @param type the {@code MainTableColumnModel.Type} of the column, e.g. "NORMALFIELD" or "EXTRAFILE" * @param qualifier the stored qualifier of the column, e.g. "author/editor" */ public MainTableColumnModel(Type type, String qualifier) { @@ -99,7 +99,8 @@ public MainTableColumnModel(Type type, String qualifier) { } /** - * This is used by the preferences dialog, to initialize available basic icon columns, the user can add to the table. + * This is used by the preferences dialog, to initialize available basic icon columns, the user can add to the + * table. * * @param type the {@code MainTableColumnModel.Type} of the column, e.g. "GROUPS" or "LINKED_IDENTIFIER" */ @@ -110,9 +111,9 @@ public MainTableColumnModel(Type type) { /** * This is used by the preference migrations. * - * @param type the {@code MainTableColumnModel.Type} of the column, e.g. "NORMALFIELD" or "GROUPS" + * @param type the {@code MainTableColumnModel.Type} of the column, e.g. "NORMALFIELD" or "GROUPS" * @param qualifier the stored qualifier of the column, e.g. "author/editor" - * @param width the stored width of the column + * @param width the stored width of the column */ public MainTableColumnModel(Type type, String qualifier, double width) { this(type, qualifier); @@ -120,9 +121,13 @@ public MainTableColumnModel(Type type, String qualifier, double width) { this.widthProperty.setValue(width); } - public Type getType() { return typeProperty.getValue(); } + public Type getType() { + return typeProperty.getValue(); + } - public String getQualifier() { return qualifierProperty.getValue(); } + public String getQualifier() { + return qualifierProperty.getValue(); + } public String getName() { if (qualifierProperty.getValue().isBlank()) { @@ -141,15 +146,25 @@ public String getDisplayName() { } } - public StringProperty nameProperty() { return new ReadOnlyStringWrapper(getDisplayName()); } + public StringProperty nameProperty() { + return new ReadOnlyStringWrapper(getDisplayName()); + } - public double getWidth() { return widthProperty.getValue(); } + public double getWidth() { + return widthProperty.getValue(); + } - public DoubleProperty widthProperty() { return widthProperty; } + public DoubleProperty widthProperty() { + return widthProperty; + } - public TableColumn.SortType getSortType() { return sortTypeProperty.getValue(); } + public TableColumn.SortType getSortType() { + return sortTypeProperty.getValue(); + } - public ObjectProperty sortTypeProperty() { return sortTypeProperty; } + public ObjectProperty sortTypeProperty() { + return sortTypeProperty; + } public boolean equals(Object o) { if (this == o) { @@ -176,7 +191,6 @@ public int hashCode() { * This creates a new {@code MainTableColumnModel} out of a given string * * @param rawColumnName the name of the column, e.g. "field:author", or "author" - * * @return A new {@code MainTableColumnModel} */ public static MainTableColumnModel parse(String rawColumnName) { diff --git a/src/main/java/org/jabref/gui/maintable/MainTablePreferences.java b/src/main/java/org/jabref/gui/maintable/MainTablePreferences.java index 6bd58ce495b..7698893b9dd 100644 --- a/src/main/java/org/jabref/gui/maintable/MainTablePreferences.java +++ b/src/main/java/org/jabref/gui/maintable/MainTablePreferences.java @@ -19,5 +19,7 @@ public boolean getResizeColumnsToFit() { return resizeColumnsToFit; } - public boolean getExtraFileColumnsEnabled() { return extraFileColumnsEnabled; } + public boolean getExtraFileColumnsEnabled() { + return extraFileColumnsEnabled; + } } diff --git a/src/main/java/org/jabref/gui/preferences/BibtexKeyPatternTabView.java b/src/main/java/org/jabref/gui/preferences/BibtexKeyPatternTabView.java index 7d179f527ee..a3f24f006ed 100644 --- a/src/main/java/org/jabref/gui/preferences/BibtexKeyPatternTabView.java +++ b/src/main/java/org/jabref/gui/preferences/BibtexKeyPatternTabView.java @@ -85,5 +85,7 @@ public void storeSettings() { } @FXML - public void resetAllKeyPatterns() { bibtexKeyPatternTable.resetAll(); } + public void resetAllKeyPatterns() { + bibtexKeyPatternTable.resetAll(); + } } diff --git a/src/main/java/org/jabref/gui/preferences/BibtexKeyPatternTabViewModel.java b/src/main/java/org/jabref/gui/preferences/BibtexKeyPatternTabViewModel.java index f7a365a1a7b..515bcb256aa 100644 --- a/src/main/java/org/jabref/gui/preferences/BibtexKeyPatternTabViewModel.java +++ b/src/main/java/org/jabref/gui/preferences/BibtexKeyPatternTabViewModel.java @@ -115,30 +115,56 @@ public void storeSettings() { } @Override - public boolean validateSettings() { return true; } + public boolean validateSettings() { + return true; + } @Override - public List getRestartWarnings() { return new ArrayList<>(); } + public List getRestartWarnings() { + return new ArrayList<>(); + } - public BooleanProperty overwriteAllowProperty() { return overwriteAllowProperty; } + public BooleanProperty overwriteAllowProperty() { + return overwriteAllowProperty; + } - public BooleanProperty overwriteWarningProperty() { return overwriteWarningProperty; } + public BooleanProperty overwriteWarningProperty() { + return overwriteWarningProperty; + } - public BooleanProperty generateOnSaveProperty() { return generateOnSaveProperty; } + public BooleanProperty generateOnSaveProperty() { + return generateOnSaveProperty; + } - public BooleanProperty letterStartAProperty() { return letterStartAProperty; } + public BooleanProperty letterStartAProperty() { + return letterStartAProperty; + } - public BooleanProperty letterStartBProperty() { return letterStartBProperty; } + public BooleanProperty letterStartBProperty() { + return letterStartBProperty; + } - public BooleanProperty letterAlwaysAddProperty() { return letterAlwaysAddProperty; } + public BooleanProperty letterAlwaysAddProperty() { + return letterAlwaysAddProperty; + } - public StringProperty keyPatternRegexProperty() { return keyPatternRegexProperty; } + public StringProperty keyPatternRegexProperty() { + return keyPatternRegexProperty; + } - public StringProperty keyPatternReplacementProperty() { return keyPatternReplacementProperty; } + public StringProperty keyPatternReplacementProperty() { + return keyPatternReplacementProperty; + } - public ListProperty patternListProperty() { return patternListProperty; } + public ListProperty patternListProperty() { + return patternListProperty; + } - public ObjectProperty defaultKeyPatternProperty() { return defaultKeyPatternProperty; } + public ObjectProperty defaultKeyPatternProperty() { + return defaultKeyPatternProperty; + } - public StringProperty unwantedCharactersProperty() { return unwantedCharactersProperty; } + public StringProperty unwantedCharactersProperty() { + return unwantedCharactersProperty; + } } diff --git a/src/main/java/org/jabref/gui/preferences/EntryEditorTabViewModel.java b/src/main/java/org/jabref/gui/preferences/EntryEditorTabViewModel.java index 52adaabd610..eee3f3e4daf 100644 --- a/src/main/java/org/jabref/gui/preferences/EntryEditorTabViewModel.java +++ b/src/main/java/org/jabref/gui/preferences/EntryEditorTabViewModel.java @@ -125,31 +125,59 @@ public List getRestartWarnings() { return new ArrayList<>(); } - public BooleanProperty openOnNewEntryProperty() { return openOnNewEntryProperty; } + public BooleanProperty openOnNewEntryProperty() { + return openOnNewEntryProperty; + } - public BooleanProperty defaultSourceProperty() { return defaultSourceProperty; } + public BooleanProperty defaultSourceProperty() { + return defaultSourceProperty; + } - public BooleanProperty enableRelatedArticlesTabProperty() { return enableRelatedArticlesTabProperty; } + public BooleanProperty enableRelatedArticlesTabProperty() { + return enableRelatedArticlesTabProperty; + } - public BooleanProperty acceptRecommendationsProperty() { return acceptRecommendationsProperty; } + public BooleanProperty acceptRecommendationsProperty() { + return acceptRecommendationsProperty; + } - public BooleanProperty enableLatexCitationsTabProperty() { return enableLatexCitationsTabProperty; } + public BooleanProperty enableLatexCitationsTabProperty() { + return enableLatexCitationsTabProperty; + } - public BooleanProperty enableValidationProperty() { return enableValidationProperty; } + public BooleanProperty enableValidationProperty() { + return enableValidationProperty; + } - public BooleanProperty enableAutoCompleteProperty() { return enableAutoCompleteProperty; } + public BooleanProperty enableAutoCompleteProperty() { + return enableAutoCompleteProperty; + } - public StringProperty autoCompleteFieldsProperty() { return autoCompleteFieldsProperty; } + public StringProperty autoCompleteFieldsProperty() { + return autoCompleteFieldsProperty; + } - public BooleanProperty autoCompleteFirstLastProperty() { return autoCompleteFirstLastProperty; } + public BooleanProperty autoCompleteFirstLastProperty() { + return autoCompleteFirstLastProperty; + } - public BooleanProperty autoCompleteLastFirstProperty() { return autoCompleteLastFirstProperty; } + public BooleanProperty autoCompleteLastFirstProperty() { + return autoCompleteLastFirstProperty; + } - public BooleanProperty autoCompleteBothProperty() { return autoCompleteBothProperty; } + public BooleanProperty autoCompleteBothProperty() { + return autoCompleteBothProperty; + } - public BooleanProperty firstNameModeAbbreviatedProperty() { return firstNameModeAbbreviatedProperty; } + public BooleanProperty firstNameModeAbbreviatedProperty() { + return firstNameModeAbbreviatedProperty; + } - public BooleanProperty firstNameModeFullProperty() { return firstNameModeFullProperty; } + public BooleanProperty firstNameModeFullProperty() { + return firstNameModeFullProperty; + } - public BooleanProperty firstNameModeBothProperty() { return firstNameModeBothProperty; } + public BooleanProperty firstNameModeBothProperty() { + return firstNameModeBothProperty; + } } diff --git a/src/main/java/org/jabref/gui/preferences/ExportSortingTabView.java b/src/main/java/org/jabref/gui/preferences/ExportSortingTabView.java index dc3529ef7d9..1535b937809 100644 --- a/src/main/java/org/jabref/gui/preferences/ExportSortingTabView.java +++ b/src/main/java/org/jabref/gui/preferences/ExportSortingTabView.java @@ -41,7 +41,9 @@ public void initialize() { } @Override - public String getTabName() { return Localization.lang("Export sorting"); } + public String getTabName() { + return Localization.lang("Export sorting"); + } @Override public boolean validateSettings() { diff --git a/src/main/java/org/jabref/gui/preferences/ExternalTabView.java b/src/main/java/org/jabref/gui/preferences/ExternalTabView.java index 10470f9dfd0..267d1051035 100644 --- a/src/main/java/org/jabref/gui/preferences/ExternalTabView.java +++ b/src/main/java/org/jabref/gui/preferences/ExternalTabView.java @@ -45,7 +45,9 @@ public ExternalTabView(JabRefPreferences preferences, JabRefFrame frame) { } @Override - public String getTabName() { return Localization.lang("External programs"); } + public String getTabName() { + return Localization.lang("External programs"); + } public void initialize() { this.viewModel = new ExternalTabViewModel(dialogService, preferences, frame); @@ -76,20 +78,32 @@ public void initialize() { } @FXML - void pushToApplicationSettings() { viewModel.pushToApplicationSettings(); } + void pushToApplicationSettings() { + viewModel.pushToApplicationSettings(); + } @FXML - void manageExternalFileTypes() { viewModel.manageExternalFileTypes(); } + void manageExternalFileTypes() { + viewModel.manageExternalFileTypes(); + } @FXML - void useTerminalCommandBrowse() { viewModel.useTerminalCommandBrowse(); } + void useTerminalCommandBrowse() { + viewModel.useTerminalCommandBrowse(); + } @FXML - void usePDFAcrobatCommandBrowse() { viewModel.usePDFAcrobatCommandBrowse(); } + void usePDFAcrobatCommandBrowse() { + viewModel.usePDFAcrobatCommandBrowse(); + } @FXML - void usePDFSumatraCommandBrowse() { viewModel.usePDFSumatraCommandBrowse(); } + void usePDFSumatraCommandBrowse() { + viewModel.usePDFSumatraCommandBrowse(); + } @FXML - void useFileBrowserSpecialCommandBrowse() { viewModel.useFileBrowserSpecialCommandBrowse(); } + void useFileBrowserSpecialCommandBrowse() { + viewModel.useFileBrowserSpecialCommandBrowse(); + } } diff --git a/src/main/java/org/jabref/gui/preferences/ExternalTabViewModel.java b/src/main/java/org/jabref/gui/preferences/ExternalTabViewModel.java index c976f56ac65..720ac49a21a 100644 --- a/src/main/java/org/jabref/gui/preferences/ExternalTabViewModel.java +++ b/src/main/java/org/jabref/gui/preferences/ExternalTabViewModel.java @@ -101,7 +101,9 @@ public boolean validateSettings() { } @Override - public List getRestartWarnings() { return new ArrayList<>(); } + public List getRestartWarnings() { + return new ArrayList<>(); + } public void pushToApplicationSettings() { PushToApplicationsManager manager = frame.getPushToApplicationsManager(); @@ -145,41 +147,71 @@ public void useFileBrowserSpecialCommandBrowse() { // EMail - public StringProperty eMailReferenceSubjectProperty() { return this.eMailReferenceSubjectProperty; } + public StringProperty eMailReferenceSubjectProperty() { + return this.eMailReferenceSubjectProperty; + } - public BooleanProperty autoOpenAttachedFoldersProperty() { return this.autoOpenAttachedFoldersProperty; } + public BooleanProperty autoOpenAttachedFoldersProperty() { + return this.autoOpenAttachedFoldersProperty; + } // Push-To-Application - public ListProperty pushToApplicationsListProperty() { return this.pushToApplicationsListProperty; } + public ListProperty pushToApplicationsListProperty() { + return this.pushToApplicationsListProperty; + } - public ObjectProperty selectedPushToApplication() { return this.selectedPushToApplicationProperty; } + public ObjectProperty selectedPushToApplication() { + return this.selectedPushToApplicationProperty; + } - public StringProperty citeCommandProperty() { return this.citeCommandProperty; } + public StringProperty citeCommandProperty() { + return this.citeCommandProperty; + } // Open console - public BooleanProperty useTerminalDefaultProperty() { return this.useTerminalDefaultProperty; } + public BooleanProperty useTerminalDefaultProperty() { + return this.useTerminalDefaultProperty; + } - public BooleanProperty useTerminalSpecialProperty() { return this.useTerminalSpecialProperty; } + public BooleanProperty useTerminalSpecialProperty() { + return this.useTerminalSpecialProperty; + } - public StringProperty useTerminalCommandProperty() { return this.useTerminalCommandProperty; } + public StringProperty useTerminalCommandProperty() { + return this.useTerminalCommandProperty; + } // Open PDF - public BooleanProperty usePDFAcrobatProperty() { return this.usePDFAcrobatProperty; } + public BooleanProperty usePDFAcrobatProperty() { + return this.usePDFAcrobatProperty; + } - public StringProperty usePDFAcrobatCommandProperty() { return this.usePDFAcrobatCommandProperty; } + public StringProperty usePDFAcrobatCommandProperty() { + return this.usePDFAcrobatCommandProperty; + } - public BooleanProperty usePDFSumatraProperty() { return this.usePDFSumatraProperty; } + public BooleanProperty usePDFSumatraProperty() { + return this.usePDFSumatraProperty; + } - public StringProperty usePDFSumatraCommandProperty() { return this.usePDFSumatraCommandProperty; } + public StringProperty usePDFSumatraCommandProperty() { + return this.usePDFSumatraCommandProperty; + } // Open File Browser - public BooleanProperty useFileBrowserDefaultProperty() { return this.useFileBrowserDefaultProperty; } + public BooleanProperty useFileBrowserDefaultProperty() { + return this.useFileBrowserDefaultProperty; + } - public BooleanProperty useFileBrowserSpecialProperty() { return this.useFileBrowserSpecialProperty; } + public BooleanProperty useFileBrowserSpecialProperty() { + return this.useFileBrowserSpecialProperty; + } - public StringProperty useFileBrowserSpecialCommandProperty() { return this.useFileBrowserSpecialCommandProperty; } + public StringProperty useFileBrowserSpecialCommandProperty() { + return this.useFileBrowserSpecialCommandProperty; + } } diff --git a/src/main/java/org/jabref/gui/preferences/FileTabView.java b/src/main/java/org/jabref/gui/preferences/FileTabView.java index bed998701e2..173ef8fe426 100644 --- a/src/main/java/org/jabref/gui/preferences/FileTabView.java +++ b/src/main/java/org/jabref/gui/preferences/FileTabView.java @@ -56,7 +56,9 @@ public FileTabView(JabRefPreferences preferences) { } @Override - public String getTabName() { return Localization.lang("File"); } + public String getTabName() { + return Localization.lang("File"); + } public void initialize() { this.viewModel = new FileTabViewModel(dialogService, preferences); @@ -94,5 +96,7 @@ public void initialize() { Platform.runLater(() -> validationVisualizer.initVisualization(viewModel.mainFileDirValidationStatus(), mainFileDir)); } - public void mainFileDirBrowse() { viewModel.mainFileDirBrowse(); } + public void mainFileDirBrowse() { + viewModel.mainFileDirBrowse(); + } } diff --git a/src/main/java/org/jabref/gui/preferences/FileTabViewModel.java b/src/main/java/org/jabref/gui/preferences/FileTabViewModel.java index 1da2e313031..ad26e3d1966 100644 --- a/src/main/java/org/jabref/gui/preferences/FileTabViewModel.java +++ b/src/main/java/org/jabref/gui/preferences/FileTabViewModel.java @@ -141,53 +141,89 @@ public boolean validateSettings() { } @Override - public List getRestartWarnings() { return new ArrayList<>(); } + public List getRestartWarnings() { + return new ArrayList<>(); + } public void mainFileDirBrowse() { DirectoryDialogConfiguration dirDialogConfiguration = new DirectoryDialogConfiguration.Builder().withInitialDirectory(Path.of(mainFileDirProperty.getValue())).build(); dialogService.showDirectorySelectionDialog(dirDialogConfiguration) - .ifPresent(f -> mainFileDirProperty.setValue(f.toString())); + .ifPresent(f -> mainFileDirProperty.setValue(f.toString())); } // General - public BooleanProperty openLastStartupProperty() { return openLastStartupProperty; } + public BooleanProperty openLastStartupProperty() { + return openLastStartupProperty; + } - public StringProperty noWrapFilesProperty() { return noWrapFilesProperty; } + public StringProperty noWrapFilesProperty() { + return noWrapFilesProperty; + } - public BooleanProperty resolveStringsBibTexProperty() { return resolveStringsBibTexProperty; } + public BooleanProperty resolveStringsBibTexProperty() { + return resolveStringsBibTexProperty; + } - public BooleanProperty resolveStringsAllProperty() { return resolveStringsAllProperty; } + public BooleanProperty resolveStringsAllProperty() { + return resolveStringsAllProperty; + } - public StringProperty resolvStringsExceptProperty() { return resolveStringsExceptProperty; } + public StringProperty resolvStringsExceptProperty() { + return resolveStringsExceptProperty; + } - public ListProperty newLineSeparatorListProperty() { return newLineSeparatorListProperty; } + public ListProperty newLineSeparatorListProperty() { + return newLineSeparatorListProperty; + } - public ObjectProperty selectedNewLineSeparatorProperty() { return selectedNewLineSeparatorProperty; } + public ObjectProperty selectedNewLineSeparatorProperty() { + return selectedNewLineSeparatorProperty; + } - public BooleanProperty alwaysReformatBibProperty() { return alwaysReformatBibProperty; } + public BooleanProperty alwaysReformatBibProperty() { + return alwaysReformatBibProperty; + } // External file links - public StringProperty mainFileDirProperty() { return mainFileDirProperty; } + public StringProperty mainFileDirProperty() { + return mainFileDirProperty; + } - public BooleanProperty useBibLocationAsPrimaryProperty() { return useBibLocationAsPrimaryProperty; } + public BooleanProperty useBibLocationAsPrimaryProperty() { + return useBibLocationAsPrimaryProperty; + } - public BooleanProperty autolinkFileStartsBibtexProperty() { return autolinkFileStartsBibtexProperty; } + public BooleanProperty autolinkFileStartsBibtexProperty() { + return autolinkFileStartsBibtexProperty; + } - public BooleanProperty autolinkFileExactBibtexProperty() { return autolinkFileExactBibtexProperty; } + public BooleanProperty autolinkFileExactBibtexProperty() { + return autolinkFileExactBibtexProperty; + } - public BooleanProperty autolinkUseRegexProperty() { return autolinkUseRegexProperty; } + public BooleanProperty autolinkUseRegexProperty() { + return autolinkUseRegexProperty; + } - public StringProperty autolinkRegexKeyProperty() { return autolinkRegexKeyProperty; } + public StringProperty autolinkRegexKeyProperty() { + return autolinkRegexKeyProperty; + } - public BooleanProperty searchFilesOnOpenProperty() { return searchFilesOnOpenProperty; } + public BooleanProperty searchFilesOnOpenProperty() { + return searchFilesOnOpenProperty; + } - public BooleanProperty openBrowseOnCreateProperty() { return openBrowseOnCreateProperty; } + public BooleanProperty openBrowseOnCreateProperty() { + return openBrowseOnCreateProperty; + } // Autosave - public BooleanProperty autosaveLocalLibrariesProperty() { return autosaveLocalLibraries; } + public BooleanProperty autosaveLocalLibrariesProperty() { + return autosaveLocalLibraries; + } } diff --git a/src/main/java/org/jabref/gui/preferences/GeneralTabView.java b/src/main/java/org/jabref/gui/preferences/GeneralTabView.java index dab611209e3..3d0fdf2cffa 100644 --- a/src/main/java/org/jabref/gui/preferences/GeneralTabView.java +++ b/src/main/java/org/jabref/gui/preferences/GeneralTabView.java @@ -60,7 +60,9 @@ public GeneralTabView(JabRefPreferences preferences) { } @Override - public String getTabName() { return Localization.lang("General"); } + public String getTabName() { + return Localization.lang("General"); + } public void initialize() { this.viewModel = new GeneralTabViewModel(dialogService, preferences); diff --git a/src/main/java/org/jabref/gui/preferences/GeneralTabViewModel.java b/src/main/java/org/jabref/gui/preferences/GeneralTabViewModel.java index 2bdb877c4bb..c5f166f66e1 100644 --- a/src/main/java/org/jabref/gui/preferences/GeneralTabViewModel.java +++ b/src/main/java/org/jabref/gui/preferences/GeneralTabViewModel.java @@ -172,51 +172,93 @@ public boolean validateSettings() { } @Override - public List getRestartWarnings() { return restartWarning; } + public List getRestartWarnings() { + return restartWarning; + } // General - public ListProperty languagesListProperty() { return this.languagesListProperty; } + public ListProperty languagesListProperty() { + return this.languagesListProperty; + } - public ObjectProperty selectedLanguageProperty() { return this.selectedLanguageProperty; } + public ObjectProperty selectedLanguageProperty() { + return this.selectedLanguageProperty; + } - public ListProperty encodingsListProperty() { return this.encodingsListProperty; } + public ListProperty encodingsListProperty() { + return this.encodingsListProperty; + } - public ObjectProperty selectedEncodingProperty() { return this.selectedEncodingProperty; } + public ObjectProperty selectedEncodingProperty() { + return this.selectedEncodingProperty; + } - public ListProperty biblatexModeListProperty() { return this.bibliographyModeListProperty; } + public ListProperty biblatexModeListProperty() { + return this.bibliographyModeListProperty; + } - public ObjectProperty selectedBiblatexModeProperty() { return this.selectedBiblatexModeProperty; } + public ObjectProperty selectedBiblatexModeProperty() { + return this.selectedBiblatexModeProperty; + } - public BooleanProperty inspectionWarningDuplicateProperty() { return this.inspectionWarningDuplicateProperty; } + public BooleanProperty inspectionWarningDuplicateProperty() { + return this.inspectionWarningDuplicateProperty; + } - public BooleanProperty confirmDeleteProperty() { return this.confirmDeleteProperty; } + public BooleanProperty confirmDeleteProperty() { + return this.confirmDeleteProperty; + } - public BooleanProperty memoryStickModeProperty() { return this.memoryStickModeProperty; } + public BooleanProperty memoryStickModeProperty() { + return this.memoryStickModeProperty; + } - public BooleanProperty collectTelemetryProperty() { return this.collectTelemetryProperty; } + public BooleanProperty collectTelemetryProperty() { + return this.collectTelemetryProperty; + } - public BooleanProperty allowIntegerEditionProperty() { return this.allowIntegerEditionProperty; } + public BooleanProperty allowIntegerEditionProperty() { + return this.allowIntegerEditionProperty; + } - public BooleanProperty showAdvancedHintsProperty() { return this.showAdvancedHintsProperty; } + public BooleanProperty showAdvancedHintsProperty() { + return this.showAdvancedHintsProperty; + } // Entry owner - public BooleanProperty markOwnerProperty() { return this.markOwnerProperty; } + public BooleanProperty markOwnerProperty() { + return this.markOwnerProperty; + } - public StringProperty markOwnerNameProperty() { return this.markOwnerNameProperty; } + public StringProperty markOwnerNameProperty() { + return this.markOwnerNameProperty; + } - public BooleanProperty markOwnerOverwriteProperty() { return this.markOwnerOverwriteProperty; } + public BooleanProperty markOwnerOverwriteProperty() { + return this.markOwnerOverwriteProperty; + } // Time stamp - public BooleanProperty markTimestampProperty() { return this.markTimestampProperty; } + public BooleanProperty markTimestampProperty() { + return this.markTimestampProperty; + } - public StringProperty markTimeStampFormatProperty() { return this.markTimeStampFormatProperty; } + public StringProperty markTimeStampFormatProperty() { + return this.markTimeStampFormatProperty; + } - public BooleanProperty markTimeStampOverwriteProperty() { return this.markTimeStampOverwriteProperty; } + public BooleanProperty markTimeStampOverwriteProperty() { + return this.markTimeStampOverwriteProperty; + } - public StringProperty markTimeStampFieldNameProperty() { return this.markTimeStampFieldNameProperty; } + public StringProperty markTimeStampFieldNameProperty() { + return this.markTimeStampFieldNameProperty; + } - public BooleanProperty updateTimeStampProperty() { return this.updateTimeStampProperty; } + public BooleanProperty updateTimeStampProperty() { + return this.updateTimeStampProperty; + } } diff --git a/src/main/java/org/jabref/gui/preferences/GroupsTabView.java b/src/main/java/org/jabref/gui/preferences/GroupsTabView.java index 7fd9f205fb4..e25ccd47438 100644 --- a/src/main/java/org/jabref/gui/preferences/GroupsTabView.java +++ b/src/main/java/org/jabref/gui/preferences/GroupsTabView.java @@ -29,7 +29,9 @@ public GroupsTabView(JabRefPreferences preferences) { } @Override - public String getTabName() { return Localization.lang("Groups"); } + public String getTabName() { + return Localization.lang("Groups"); + } public void initialize() { this.viewModel = new GroupsTabViewModel(dialogService, preferences); diff --git a/src/main/java/org/jabref/gui/preferences/GroupsTabViewModel.java b/src/main/java/org/jabref/gui/preferences/GroupsTabViewModel.java index 989601f0d67..67abce42a7b 100644 --- a/src/main/java/org/jabref/gui/preferences/GroupsTabViewModel.java +++ b/src/main/java/org/jabref/gui/preferences/GroupsTabViewModel.java @@ -66,22 +66,40 @@ public void storeSettings() { } @Override - public boolean validateSettings() { return true; } + public boolean validateSettings() { + return true; + } @Override - public List getRestartWarnings() { return new ArrayList<>(); } + public List getRestartWarnings() { + return new ArrayList<>(); + } - public BooleanProperty grayNonHitsProperty() { return grayNonHitsProperty; } + public BooleanProperty grayNonHitsProperty() { + return grayNonHitsProperty; + } - public BooleanProperty groupViewModeIntersectionProperty() { return groupViewModeIntersectionProperty; } + public BooleanProperty groupViewModeIntersectionProperty() { + return groupViewModeIntersectionProperty; + } - public BooleanProperty groupViewModeUnionProperty() { return groupViewModeUnionProperty; } + public BooleanProperty groupViewModeUnionProperty() { + return groupViewModeUnionProperty; + } - public BooleanProperty autoAssignGroupProperty() { return autoAssignGroupProperty; } + public BooleanProperty autoAssignGroupProperty() { + return autoAssignGroupProperty; + } - public BooleanProperty displayGroupCount() { return displayGroupCountProperty; } + public BooleanProperty displayGroupCount() { + return displayGroupCountProperty; + } - public StringProperty defaultGroupingFieldProperty() { return defaultGroupingFieldProperty; } + public StringProperty defaultGroupingFieldProperty() { + return defaultGroupingFieldProperty; + } - public StringProperty keywordSeparatorProperty() { return keywordSeparatorProperty; } + public StringProperty keywordSeparatorProperty() { + return keywordSeparatorProperty; + } } diff --git a/src/main/java/org/jabref/gui/preferences/ImportTabView.java b/src/main/java/org/jabref/gui/preferences/ImportTabView.java index 3a68b83ccd2..6abbe51dbb1 100644 --- a/src/main/java/org/jabref/gui/preferences/ImportTabView.java +++ b/src/main/java/org/jabref/gui/preferences/ImportTabView.java @@ -20,8 +20,8 @@ public ImportTabView(JabRefPreferences preferences) { this.preferences = preferences; ViewLoader.view(this) - .root(this) - .load(); + .root(this) + .load(); } public void initialize() { @@ -34,5 +34,7 @@ public void initialize() { } @Override - public String getTabName() { return Localization.lang("Import"); } + public String getTabName() { + return Localization.lang("Import"); + } } diff --git a/src/main/java/org/jabref/gui/preferences/ImportTabViewModel.java b/src/main/java/org/jabref/gui/preferences/ImportTabViewModel.java index a1512325b74..47170182030 100644 --- a/src/main/java/org/jabref/gui/preferences/ImportTabViewModel.java +++ b/src/main/java/org/jabref/gui/preferences/ImportTabViewModel.java @@ -55,11 +55,19 @@ public List getRestartWarnings() { return new ArrayList<>(); } - public ListProperty defaultFileNamePatternsProperty() { return defaultFileNamePatternsProperty; } + public ListProperty defaultFileNamePatternsProperty() { + return defaultFileNamePatternsProperty; + } - public StringProperty fileNamePatternProperty() { return fileNamePatternProperty; } + public StringProperty fileNamePatternProperty() { + return fileNamePatternProperty; + } - public StringProperty fileDirPatternProperty() { return fileDirPatternProperty; } + public StringProperty fileDirPatternProperty() { + return fileDirPatternProperty; + } - public BooleanProperty downloadLinkedFilesProperty() { return downloadLinkedFilesProperty; } + public BooleanProperty downloadLinkedFilesProperty() { + return downloadLinkedFilesProperty; + } } diff --git a/src/main/java/org/jabref/gui/preferences/NameFormatterItemModel.java b/src/main/java/org/jabref/gui/preferences/NameFormatterItemModel.java index 721407bc3b3..fed11596137 100644 --- a/src/main/java/org/jabref/gui/preferences/NameFormatterItemModel.java +++ b/src/main/java/org/jabref/gui/preferences/NameFormatterItemModel.java @@ -9,7 +9,9 @@ public class NameFormatterItemModel { private final StringProperty name = new SimpleStringProperty(""); private final StringProperty format = new SimpleStringProperty(""); - NameFormatterItemModel() { this(""); } + NameFormatterItemModel() { + this(""); + } NameFormatterItemModel(String name) { this(name, NameFormatter.DEFAULT_FORMAT); @@ -28,7 +30,9 @@ public String getName() { return name.getValue(); } - public StringProperty nameProperty() { return name; } + public StringProperty nameProperty() { + return name; + } public void setFormat(String format) { this.format.setValue(format); @@ -38,8 +42,12 @@ public String getFormat() { return format.getValue(); } - public StringProperty formatProperty() { return format; } + public StringProperty formatProperty() { + return format; + } @Override - public String toString() { return "[" + name.getValue() + "," + format.getValue() + "]"; } + public String toString() { + return "[" + name.getValue() + "," + format.getValue() + "]"; + } } diff --git a/src/main/java/org/jabref/gui/preferences/NameFormatterTabView.java b/src/main/java/org/jabref/gui/preferences/NameFormatterTabView.java index 6e1858fa3cd..1313d4fbef0 100644 --- a/src/main/java/org/jabref/gui/preferences/NameFormatterTabView.java +++ b/src/main/java/org/jabref/gui/preferences/NameFormatterTabView.java @@ -35,12 +35,14 @@ public NameFormatterTabView(JabRefPreferences preferences) { this.preferences = preferences; ViewLoader.view(this) - .root(this) - .load(); + .root(this) + .load(); } @Override - public String getTabName() { return Localization.lang("Name formatter"); } + public String getTabName() { + return Localization.lang("Name formatter"); + } public void initialize() { this.viewModel = new NameFormatterTabViewModel(dialogService, preferences); @@ -61,7 +63,7 @@ public void initialize() { formatterStringColumn.setEditable(true); formatterStringColumn.setOnEditCommit( (TableColumn.CellEditEvent event) -> - event.getRowValue().setFormat(event.getNewValue())); + event.getRowValue().setFormat(event.getNewValue())); actionsColumn.setSortable(false); actionsColumn.setReorderable(false); @@ -105,6 +107,7 @@ public void initialize() { actionFactory.configureIconButton(StandardActions.HELP_NAME_FORMATTER, new HelpAction(HelpFile.CUSTOM_EXPORTS_NAME_FORMATTER), formatterHelp); } - public void addFormatter() { viewModel.addFormatter(); } - + public void addFormatter() { + viewModel.addFormatter(); + } } diff --git a/src/main/java/org/jabref/gui/preferences/NameFormatterTabViewModel.java b/src/main/java/org/jabref/gui/preferences/NameFormatterTabViewModel.java index 71a3c230fca..cacf9c9910c 100644 --- a/src/main/java/org/jabref/gui/preferences/NameFormatterTabViewModel.java +++ b/src/main/java/org/jabref/gui/preferences/NameFormatterTabViewModel.java @@ -69,17 +69,29 @@ public void addFormatter() { } } - public void removeFormatter(NameFormatterItemModel formatter) { formatterListProperty.remove(formatter); } + public void removeFormatter(NameFormatterItemModel formatter) { + formatterListProperty.remove(formatter); + } @Override - public boolean validateSettings() { return true; } + public boolean validateSettings() { + return true; + } @Override - public List getRestartWarnings() { return new ArrayList<>(); } + public List getRestartWarnings() { + return new ArrayList<>(); + } - public ListProperty formatterListProperty() { return formatterListProperty; } + public ListProperty formatterListProperty() { + return formatterListProperty; + } - public StringProperty addFormatterNameProperty() { return addFormatterNameProperty; } + public StringProperty addFormatterNameProperty() { + return addFormatterNameProperty; + } - public StringProperty addFormatterStringProperty() { return addFormatterStringProperty; } + public StringProperty addFormatterStringProperty() { + return addFormatterStringProperty; + } } diff --git a/src/main/java/org/jabref/gui/preferences/PreferencesDialogView.java b/src/main/java/org/jabref/gui/preferences/PreferencesDialogView.java index b40a039ded6..4c64b288280 100644 --- a/src/main/java/org/jabref/gui/preferences/PreferencesDialogView.java +++ b/src/main/java/org/jabref/gui/preferences/PreferencesDialogView.java @@ -24,7 +24,8 @@ /** * Preferences dialog. Contains a TabbedPane, and tabs will be defined in separate classes. Tabs MUST implement the - * PreferencesTab interface, since this dialog will call the storeSettings() method of all tabs when the user presses ok. + * PreferencesTab interface, since this dialog will call the storeSettings() method of all tabs when the user presses + * ok. */ public class PreferencesDialogView extends BaseDialog { @@ -44,8 +45,8 @@ public PreferencesDialogView(JabRefFrame frame) { this.setTitle(Localization.lang("JabRef preferences")); ViewLoader.view(this) - .load() - .setAsDialogPane(this); + .load() + .setAsDialogPane(this); ControlHelper.setAction(saveButton, getDialogPane(), event -> savePreferencesAndCloseDialog()); @@ -104,14 +105,22 @@ private void savePreferencesAndCloseDialog() { } @FXML - void exportPreferences() { viewModel.exportPreferences(); } + void exportPreferences() { + viewModel.exportPreferences(); + } @FXML - void importPreferences() { viewModel.importPreferences(); } + void importPreferences() { + viewModel.importPreferences(); + } @FXML - void showAllPreferences() { viewModel.showPreferences(); } + void showAllPreferences() { + viewModel.showPreferences(); + } @FXML - void resetPreferences() { viewModel.resetPreferences(); } + void resetPreferences() { + viewModel.resetPreferences(); + } } diff --git a/src/main/java/org/jabref/gui/preferences/PreviewTabView.java b/src/main/java/org/jabref/gui/preferences/PreviewTabView.java index 67fcada9c73..6d14fccb830 100644 --- a/src/main/java/org/jabref/gui/preferences/PreviewTabView.java +++ b/src/main/java/org/jabref/gui/preferences/PreviewTabView.java @@ -102,7 +102,9 @@ public PreviewTabView(JabRefPreferences preferences) { } @Override - public String getTabName() { return Localization.lang("Entry preview"); } + public String getTabName() { + return Localization.lang("Entry preview"); + } public void initialize() { this.viewModel = new PreviewTabViewModel(dialogService, preferences, taskExecutor, stateManager); @@ -182,9 +184,10 @@ public void initialize() { } /** - * This is called, if a user starts typing some characters into the keyboard with focus on one ListView. - * The ListView will scroll to the next cell with the name of the PreviewLayout fitting those characters. - * @param list The ListView currently focused + * This is called, if a user starts typing some characters into the keyboard with focus on one ListView. The + * ListView will scroll to the next cell with the name of the PreviewLayout fitting those characters. + * + * @param list The ListView currently focused * @param keypressed The pressed character */ @@ -205,7 +208,9 @@ private void jumpToSearchKey(ListView list, KeyEvent keypressed) .findFirst().ifPresent(list::scrollTo); } - private void dragOver(DragEvent event) { viewModel.dragOver(event); } + private void dragOver(DragEvent event) { + viewModel.dragOver(event); + } private void dragDetectedInAvailable(MouseEvent event) { List selectedLayouts = new ArrayList<>(viewModel.availableSelectionModelProperty().getValue().getSelectedItems()); @@ -237,13 +242,23 @@ private void dragDroppedInChosenCell(PreviewLayout targetLayout, DragEvent event event.consume(); } - public void toRightButtonAction() { viewModel.addToChosen(); } + public void toRightButtonAction() { + viewModel.addToChosen(); + } - public void toLeftButtonAction() { viewModel.removeFromChosen(); } + public void toLeftButtonAction() { + viewModel.removeFromChosen(); + } - public void sortUpButtonAction() { viewModel.selectedInChosenUp(); } + public void sortUpButtonAction() { + viewModel.selectedInChosenUp(); + } - public void sortDownButtonAction() { viewModel.selectedInChosenDown(); } + public void sortDownButtonAction() { + viewModel.selectedInChosenDown(); + } - public void resetDefaultButtonAction() { viewModel.resetDefaultLayout(); } + public void resetDefaultButtonAction() { + viewModel.resetDefaultLayout(); + } } diff --git a/src/main/java/org/jabref/gui/preferences/PreviewTabViewModel.java b/src/main/java/org/jabref/gui/preferences/PreviewTabViewModel.java index d749fb09dfd..1aebf2d6c8e 100644 --- a/src/main/java/org/jabref/gui/preferences/PreviewTabViewModel.java +++ b/src/main/java/org/jabref/gui/preferences/PreviewTabViewModel.java @@ -228,7 +228,9 @@ public boolean validateSettings() { } @Override - public List getRestartWarnings() { return new ArrayList<>(); } + public List getRestartWarnings() { + return new ArrayList<>(); + } public void addToChosen() { List selected = new ArrayList<>(availableSelectionModelProperty.getValue().getSelectedItems()); @@ -297,9 +299,8 @@ public void resetDefaultLayout() { } /** - * XML-Syntax-Highlighting for RichTextFX-Codearea created by (c) Carlos Martins (github: @cemartins) - * License: BSD-2-Clause - * see https://github.com/FXMisc/RichTextFX/blob/master/LICENSE and: + * XML-Syntax-Highlighting for RichTextFX-Codearea created by (c) Carlos Martins (github: @cemartins) License: + * BSD-2-Clause see https://github.com/FXMisc/RichTextFX/blob/master/LICENSE and: * https://github.com/FXMisc/RichTextFX/blob/master/richtextfx-demos/README.md#xml-editor * * @param text to parse and highlight @@ -378,8 +379,8 @@ public void dragDetected(ListProperty sourceList, ObjectProperty< } /** - * This is called, when the user drops some PreviewLayouts either in the availableListView - * or in the empty space of chosenListView + * This is called, when the user drops some PreviewLayouts either in the availableListView or in the empty space of + * chosenListView * * @param targetList either availableListView or chosenListView */ @@ -405,8 +406,7 @@ public boolean dragDropped(ListProperty targetList, Dragboard dra } /** - * This is called, when the user drops some PreviewLayouts on another cell in - * chosenListView to sort them + * This is called, when the user drops some PreviewLayouts on another cell in chosenListView to sort them * * @param targetLayout the Layout, the user drops a layout on */ @@ -452,17 +452,31 @@ public boolean dragDroppedInChosenCell(PreviewLayout targetLayout, Dragboard dra return success; } - public ListProperty availableListProperty() { return availableListProperty; } + public ListProperty availableListProperty() { + return availableListProperty; + } - public ObjectProperty> availableSelectionModelProperty() { return availableSelectionModelProperty; } + public ObjectProperty> availableSelectionModelProperty() { + return availableSelectionModelProperty; + } - public ListProperty chosenListProperty() { return chosenListProperty; } + public ListProperty chosenListProperty() { + return chosenListProperty; + } - public ObjectProperty> chosenSelectionModelProperty() { return chosenSelectionModelProperty; } + public ObjectProperty> chosenSelectionModelProperty() { + return chosenSelectionModelProperty; + } - public BooleanProperty selectedIsEditableProperty() { return selectedIsEditableProperty; } + public BooleanProperty selectedIsEditableProperty() { + return selectedIsEditableProperty; + } - public ObjectProperty layoutProperty() { return layoutProperty; } + public ObjectProperty layoutProperty() { + return layoutProperty; + } - public StringProperty sourceTextProperty() { return sourceTextProperty; } + public StringProperty sourceTextProperty() { + return sourceTextProperty; + } } diff --git a/src/main/java/org/jabref/gui/preferences/TableColumnsTabView.java b/src/main/java/org/jabref/gui/preferences/TableColumnsTabView.java index 1012ba68224..7a5a3e07057 100644 --- a/src/main/java/org/jabref/gui/preferences/TableColumnsTabView.java +++ b/src/main/java/org/jabref/gui/preferences/TableColumnsTabView.java @@ -46,8 +46,8 @@ public TableColumnsTabView(JabRefPreferences preferences) { this.preferences = preferences; ViewLoader.view(this) - .root(this) - .load(); + .root(this) + .load(); } @Override @@ -117,12 +117,19 @@ private void setupBindings() { extraFileColumnsEnable.selectedProperty().bindBidirectional(viewModel.extraFileColumnsEnabledProperty()); } - public void updateToCurrentColumnOrder() { viewModel.fillColumnList(); } - - public void sortColumnUp() { viewModel.moveColumnUp(); } + public void updateToCurrentColumnOrder() { + viewModel.fillColumnList(); + } - public void sortColumnDown() { viewModel.moveColumnDown(); } + public void sortColumnUp() { + viewModel.moveColumnUp(); + } - public void addColumn() { viewModel.insertColumnInList(); } + public void sortColumnDown() { + viewModel.moveColumnDown(); + } + public void addColumn() { + viewModel.insertColumnInList(); + } } diff --git a/src/main/java/org/jabref/gui/preferences/TableColumnsTabViewModel.java b/src/main/java/org/jabref/gui/preferences/TableColumnsTabViewModel.java index 44c18f3c6a1..1c27aaab864 100644 --- a/src/main/java/org/jabref/gui/preferences/TableColumnsTabViewModel.java +++ b/src/main/java/org/jabref/gui/preferences/TableColumnsTabViewModel.java @@ -255,20 +255,35 @@ public List getRestartWarnings() { return restartWarnings; } - public ListProperty columnsListProperty() { return this.columnsListProperty; } - - public ObjectProperty> selectedColumnModelProperty() { return selectedColumnModelProperty; } + public ListProperty columnsListProperty() { + return this.columnsListProperty; + } - public ListProperty availableColumnsProperty() { return this.availableColumnsProperty; } + public ObjectProperty> selectedColumnModelProperty() { + return selectedColumnModelProperty; + } - public ObjectProperty addColumnProperty() { return this.addColumnProperty; } + public ListProperty availableColumnsProperty() { + return this.availableColumnsProperty; + } - public BooleanProperty specialFieldsEnabledProperty() { return this.specialFieldsEnabledProperty; } + public ObjectProperty addColumnProperty() { + return this.addColumnProperty; + } - public BooleanProperty specialFieldsSyncKeywordsProperty() { return this.specialFieldsSyncKeywordsProperty; } + public BooleanProperty specialFieldsEnabledProperty() { + return this.specialFieldsEnabledProperty; + } - public BooleanProperty specialFieldsSerializeProperty() { return this.specialFieldsSerializeProperty; } + public BooleanProperty specialFieldsSyncKeywordsProperty() { + return this.specialFieldsSyncKeywordsProperty; + } - public BooleanProperty extraFileColumnsEnabledProperty() { return this.extraFileColumnsEnabledProperty; } + public BooleanProperty specialFieldsSerializeProperty() { + return this.specialFieldsSerializeProperty; + } + public BooleanProperty extraFileColumnsEnabledProperty() { + return this.extraFileColumnsEnabledProperty; + } } diff --git a/src/main/java/org/jabref/gui/preferences/TableTabView.java b/src/main/java/org/jabref/gui/preferences/TableTabView.java index 0548f19bfd8..aca78ce0acc 100644 --- a/src/main/java/org/jabref/gui/preferences/TableTabView.java +++ b/src/main/java/org/jabref/gui/preferences/TableTabView.java @@ -24,12 +24,14 @@ public TableTabView(JabRefPreferences preferences) { this.preferences = preferences; ViewLoader.view(this) - .root(this) - .load(); + .root(this) + .load(); } @Override - public String getTabName() { return Localization.lang("Entry table"); } + public String getTabName() { + return Localization.lang("Entry table"); + } public void initialize() { this.viewModel = new TableTabViewModel(dialogService, preferences); diff --git a/src/main/java/org/jabref/gui/preferences/TableTabViewModel.java b/src/main/java/org/jabref/gui/preferences/TableTabViewModel.java index b1c52ceced2..977a6ed824b 100644 --- a/src/main/java/org/jabref/gui/preferences/TableTabViewModel.java +++ b/src/main/java/org/jabref/gui/preferences/TableTabViewModel.java @@ -84,19 +84,35 @@ public List getRestartWarnings() { return new ArrayList<>(); } - public BooleanProperty autoResizeNameProperty() { return autoResizeNameProperty; } + public BooleanProperty autoResizeNameProperty() { + return autoResizeNameProperty; + } - public BooleanProperty namesNatbibProperty() { return namesNatbibProperty; } + public BooleanProperty namesNatbibProperty() { + return namesNatbibProperty; + } - public BooleanProperty nameAsIsProperty() { return nameAsIsProperty; } + public BooleanProperty nameAsIsProperty() { + return nameAsIsProperty; + } - public BooleanProperty nameFirstLastProperty() { return nameFirstLastProperty; } + public BooleanProperty nameFirstLastProperty() { + return nameFirstLastProperty; + } - public BooleanProperty nameLastFirstProperty() { return nameLastFirstProperty; } + public BooleanProperty nameLastFirstProperty() { + return nameLastFirstProperty; + } - public BooleanProperty abbreviationDisabledProperty() { return abbreviationDisabledProperty; } + public BooleanProperty abbreviationDisabledProperty() { + return abbreviationDisabledProperty; + } - public BooleanProperty abbreviationEnabledProperty() { return abbreviationEnabledProperty; } + public BooleanProperty abbreviationEnabledProperty() { + return abbreviationEnabledProperty; + } - public BooleanProperty abbreviationLastNameOnlyProperty() { return abbreviationLastNameOnlyProperty; } + public BooleanProperty abbreviationLastNameOnlyProperty() { + return abbreviationLastNameOnlyProperty; + } } diff --git a/src/main/java/org/jabref/gui/preferences/XmpPrivacyTabView.java b/src/main/java/org/jabref/gui/preferences/XmpPrivacyTabView.java index 03b67a19832..77baff41b69 100644 --- a/src/main/java/org/jabref/gui/preferences/XmpPrivacyTabView.java +++ b/src/main/java/org/jabref/gui/preferences/XmpPrivacyTabView.java @@ -38,12 +38,14 @@ public XmpPrivacyTabView(JabRefPreferences preferences) { this.preferences = preferences; ViewLoader.view(this) - .root(this) - .load(); + .root(this) + .load(); } @Override - public String getTabName() { return Localization.lang("XMP metadata"); } + public String getTabName() { + return Localization.lang("XMP metadata"); + } public void initialize() { this.viewModel = new XmpPrivacyTabViewModel(dialogService, preferences); @@ -97,5 +99,7 @@ public void initialize() { Platform.runLater(() -> validationVisualizer.initVisualization(viewModel.xmpFilterListValidationStatus(), filterList)); } - public void addField() { viewModel.addField(); } + public void addField() { + viewModel.addField(); + } } diff --git a/src/main/java/org/jabref/gui/preferences/XmpPrivacyTabViewModel.java b/src/main/java/org/jabref/gui/preferences/XmpPrivacyTabViewModel.java index c541bccccf6..fc9bdd24f66 100644 --- a/src/main/java/org/jabref/gui/preferences/XmpPrivacyTabViewModel.java +++ b/src/main/java/org/jabref/gui/preferences/XmpPrivacyTabViewModel.java @@ -54,7 +54,7 @@ public void setValues() { xmpFilterListProperty.clear(); List xmpFilters = preferences.getStringList(JabRefPreferences.XMP_PRIVACY_FILTERS) - .stream().map(FieldFactory::parseField).collect(Collectors.toList()); + .stream().map(FieldFactory::parseField).collect(Collectors.toList()); xmpFilterListProperty.addAll(xmpFilters); availableFieldsProperty.clear(); @@ -65,8 +65,8 @@ public void setValues() { public void storeSettings() { preferences.putBoolean(JabRefPreferences.USE_XMP_PRIVACY_FILTER, xmpFilterEnabledProperty.getValue()); preferences.putStringList(JabRefPreferences.XMP_PRIVACY_FILTERS, xmpFilterListProperty.getValue().stream() - .map(Field::getName) - .collect(Collectors.toList())); + .map(Field::getName) + .collect(Collectors.toList())); } public void addField() { @@ -100,14 +100,23 @@ public boolean validateSettings() { } @Override - public List getRestartWarnings() { return new ArrayList<>(); } - - public BooleanProperty xmpFilterEnabledProperty() { return xmpFilterEnabledProperty; } + public List getRestartWarnings() { + return new ArrayList<>(); + } - public ListProperty filterListProperty() { return xmpFilterListProperty; } + public BooleanProperty xmpFilterEnabledProperty() { + return xmpFilterEnabledProperty; + } - public ListProperty availableFieldsProperty() { return availableFieldsProperty; } + public ListProperty filterListProperty() { + return xmpFilterListProperty; + } - public ObjectProperty addFieldNameProperty() { return addFieldProperty; } + public ListProperty availableFieldsProperty() { + return availableFieldsProperty; + } + public ObjectProperty addFieldNameProperty() { + return addFieldProperty; + } } diff --git a/src/main/java/org/jabref/gui/search/GlobalSearchBar.java b/src/main/java/org/jabref/gui/search/GlobalSearchBar.java index 94a5e0cbc79..817df787f21 100644 --- a/src/main/java/org/jabref/gui/search/GlobalSearchBar.java +++ b/src/main/java/org/jabref/gui/search/GlobalSearchBar.java @@ -160,7 +160,9 @@ public GlobalSearchBar(JabRefFrame frame, StateManager stateManager) { ); ControlsFxVisualizer visualizer = new ControlsFxVisualizer(); visualizer.setDecoration(new IconValidationDecorator(Pos.CENTER_LEFT)); - Platform.runLater(() -> { visualizer.initVisualization(regexValidator.getValidationStatus(), searchField); }); + Platform.runLater(() -> { + visualizer.initVisualization(regexValidator.getValidationStatus(), searchField); + }); EasyBind.subscribe(searchField.focusedProperty(), isFocused -> { if (isFocused) { @@ -195,7 +197,7 @@ public GlobalSearchBar(JabRefFrame frame, StateManager stateManager) { searchQuery.ifPresent(query -> { updateResults(this.stateManager.getSearchResultSize().intValue(), SearchDescribers.getSearchDescriberFor(query).getDescription(), - query.isGrammarBasedSearch()); + query.isGrammarBasedSearch()); }); }); } diff --git a/src/main/java/org/jabref/gui/specialfields/SpecialFieldsPreferences.java b/src/main/java/org/jabref/gui/specialfields/SpecialFieldsPreferences.java index b584e28024e..54ca0f5f8f2 100644 --- a/src/main/java/org/jabref/gui/specialfields/SpecialFieldsPreferences.java +++ b/src/main/java/org/jabref/gui/specialfields/SpecialFieldsPreferences.java @@ -14,9 +14,15 @@ public SpecialFieldsPreferences(boolean specialFieldsEnabled, boolean autoSyncSp this.serializeSpecialFields = serializeSpecialFields; } - public boolean getSpecialFieldsEnabled() { return specialFieldsEnabled; } + public boolean getSpecialFieldsEnabled() { + return specialFieldsEnabled; + } - public boolean getAutoSyncSpecialFieldsToKeyWords() { return autoSyncSpecialFieldsToKeyWords; } + public boolean getAutoSyncSpecialFieldsToKeyWords() { + return autoSyncSpecialFieldsToKeyWords; + } - public boolean getSerializeSpecialFields() { return serializeSpecialFields; } + public boolean getSerializeSpecialFields() { + return serializeSpecialFields; + } } diff --git a/src/main/java/org/jabref/logic/importer/Importer.java b/src/main/java/org/jabref/logic/importer/Importer.java index 54822aeeab5..120e23b99a5 100644 --- a/src/main/java/org/jabref/logic/importer/Importer.java +++ b/src/main/java/org/jabref/logic/importer/Importer.java @@ -21,13 +21,12 @@ public abstract class Importer implements Comparable { /** * Check whether the source is in the correct format for this importer. - * - * The effect of this method is primarily to avoid unnecessary processing of - * files when searching for a suitable import format. If this method returns - * false, the import routine will move on to the next import format. - * - * Thus the correct behaviour is to return false if it is certain that the file is - * not of the suitable type, and true otherwise. Returning true is the safe choice if not certain. + *

+ * The effect of this method is primarily to avoid unnecessary processing of files when searching for a suitable + * import format. If this method returns false, the import routine will move on to the next import format. + *

+ * Thus the correct behaviour is to return false if it is certain that the file is not of the suitable type, and + * true otherwise. Returning true is the safe choice if not certain. */ public abstract boolean isRecognizedFormat(BufferedReader input) throws IOException; @@ -53,22 +52,21 @@ public boolean isRecognizedFormat(Path filePath, Charset encoding) throws IOExce * @throws IOException Signals that an I/O exception has occurred. */ public boolean isRecognizedFormat(String data) throws IOException { - try (StringReader stringReader = new StringReader(data); BufferedReader bufferedReader = new BufferedReader(stringReader)) { + try (StringReader stringReader = new StringReader(data); + BufferedReader bufferedReader = new BufferedReader(stringReader)) { return isRecognizedFormat(bufferedReader); } } /** * Parse the database in the source. - * - * This method can be called in two different contexts - either when importing in - * a specified format, or when importing in unknown format. In the latter case, - * JabRef cycles through all available import formats. No error messages or feedback - * is displayed from individual import formats in this case. - * - * If importing in a specified format and an empty library is returned, JabRef reports - * that no entries were found. - * + *

+ * This method can be called in two different contexts - either when importing in a specified format, or when + * importing in unknown format. In the latter case, JabRef cycles through all available import formats. No error + * messages or feedback is displayed from individual import formats in this case. + *

+ * If importing in a specified format and an empty library is returned, JabRef reports that no entries were found. + *

* This method should never return null. * * @param input the input to read from @@ -77,9 +75,9 @@ public boolean isRecognizedFormat(String data) throws IOException { /** * Parse the database in the specified file. - * - * Importer having the facilities to detect the correct encoding of a file should overwrite this method, - * determine the encoding and then call {@link #importDatabase(BufferedReader)}. + *

+ * Importer having the facilities to detect the correct encoding of a file should overwrite this method, determine + * the encoding and then call {@link #importDatabase(BufferedReader)}. * * @param filePath the path to the file which should be imported * @param encoding the encoding used to decode the file @@ -100,16 +98,17 @@ public ParserResult importDatabase(Path filePath, Charset encoding) throws IOExc /** * Parse the database in the specified string. - * - * Importer having the facilities to detect the correct encoding of a string should overwrite this method, - * determine the encoding and then call {@link #importDatabase(BufferedReader)}. + *

+ * Importer having the facilities to detect the correct encoding of a string should overwrite this method, determine + * the encoding and then call {@link #importDatabase(BufferedReader)}. * * @param data the string which should be imported * @return the parsed result * @throws IOException Signals that an I/O exception has occurred. */ public ParserResult importDatabase(String data) throws IOException { - try (StringReader stringReader = new StringReader(data); BufferedReader bufferedReader = new BufferedReader(stringReader)) { + try (StringReader stringReader = new StringReader(data); + BufferedReader bufferedReader = new BufferedReader(stringReader)) { return importDatabase(bufferedReader); } } @@ -139,13 +138,14 @@ public static BufferedReader getReader(Path filePath, Charset encoding) /** * Returns the type of files that this importer can read + * * @return {@link FileType} corresponding to the importer */ public abstract FileType getFileType(); /** - * Returns a one-word ID which identifies this importer. - * Used for example, to identify the importer when used from the command line. + * Returns a one-word ID which identifies this importer. Used for example, to identify the importer when used from + * the command line. * * @return ID, must be unique and not null */ @@ -163,7 +163,7 @@ public String getId() { /** * Returns the description of the import format. - * + *

* The description should specify *

  • * what kind of entries from what sources and based on what specification it is able to import diff --git a/src/main/java/org/jabref/logic/layout/LayoutEntry.java b/src/main/java/org/jabref/logic/layout/LayoutEntry.java index 837848bf5c3..fe5632f9f5b 100644 --- a/src/main/java/org/jabref/logic/layout/LayoutEntry.java +++ b/src/main/java/org/jabref/logic/layout/LayoutEntry.java @@ -545,8 +545,7 @@ private LayoutFormatter getLayoutFormatterByName(String name) { } /** - * Return an array of LayoutFormatters found in the given formatterName - * string (in order of appearance). + * Return an array of LayoutFormatters found in the given formatterName string (in order of appearance). */ private List getOptionalLayout(String formatterName) { List> formatterStrings = parseMethodsCalls(formatterName); @@ -677,5 +676,7 @@ public static List> parseMethodsCalls(String calls) { return result; } - public String getText() { return text; } + public String getText() { + return text; + } } diff --git a/src/main/java/org/jabref/logic/layout/LayoutHelper.java b/src/main/java/org/jabref/logic/layout/LayoutHelper.java index ccdd6385435..bed3d9b3105 100644 --- a/src/main/java/org/jabref/logic/layout/LayoutHelper.java +++ b/src/main/java/org/jabref/logic/layout/LayoutHelper.java @@ -226,8 +226,7 @@ private void parse() throws IOException, StringIndexOutOfBoundsException { buffer = new StringBuilder(100); } - if ((c != '\\') || escaped)// (previous == '\\'))) - { + if ((c != '\\') || escaped) /* (previous == '\\'))) */ { buffer.append((char) c); } diff --git a/src/main/java/org/jabref/logic/net/URLDownload.java b/src/main/java/org/jabref/logic/net/URLDownload.java index 34fc9537f51..bf240352920 100644 --- a/src/main/java/org/jabref/logic/net/URLDownload.java +++ b/src/main/java/org/jabref/logic/net/URLDownload.java @@ -49,10 +49,12 @@ * URL download to a string. *

    * Example: + * * URLDownload dl = new URLDownload(URL); * String content = dl.asString(ENCODING); * dl.toFile(Path); // available in FILE * String contentType = dl.getMimeType(); + * * * Each call to a public method creates a new HTTP connection. Nothing is cached. */ @@ -86,10 +88,10 @@ public URLDownload(URL source) { * thrown: sun.security.validator.ValidatorException: PKIX path building failed: * sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested * target JM > 8u101 may trust the certificate by default according to http://stackoverflow.com/a/34111150/873661 - * + *

    * We will fix this issue by accepting all (!) certificates. This is ugly; but as JabRef does not rely on * security-relevant information this is kind of OK (no, actually it is not...). - * + *

    * Taken from http://stackoverflow.com/a/6055903/873661 and https://stackoverflow.com/a/19542614/873661 */ public static void bypassSSLVerification() { @@ -208,8 +210,7 @@ public String asString(Charset encoding) throws IOException { } /** - * Downloads the web resource to a String. - * Uses UTF-8 as encoding. + * Downloads the web resource to a String. Uses UTF-8 as encoding. * * @return the downloaded string */ @@ -253,8 +254,7 @@ public void toFile(Path destination) throws IOException { public ProgressInputStream asInputStream() throws IOException { HttpURLConnection urlConnection = (HttpURLConnection) this.openConnection(); - if ((urlConnection.getResponseCode() == HttpURLConnection.HTTP_NOT_FOUND) || (urlConnection.getResponseCode() == HttpURLConnection.HTTP_BAD_REQUEST)) - { + if ((urlConnection.getResponseCode() == HttpURLConnection.HTTP_NOT_FOUND) || (urlConnection.getResponseCode() == HttpURLConnection.HTTP_BAD_REQUEST)) { LOGGER.error("Response message {} returned for url {}", urlConnection.getResponseMessage(), urlConnection.getURL()); return new ProgressInputStream(new ByteArrayInputStream(new byte[0]), 0); } @@ -311,7 +311,6 @@ private URLConnection openConnection() throws IOException { try (DataOutputStream wr = new DataOutputStream(connection.getOutputStream())) { wr.writeBytes(this.postData); } - } if (connection instanceof HttpURLConnection) { @@ -319,8 +318,8 @@ private URLConnection openConnection() throws IOException { int status = ((HttpURLConnection) connection).getResponseCode(); if (status != HttpURLConnection.HTTP_OK) { if ((status == HttpURLConnection.HTTP_MOVED_TEMP) - || (status == HttpURLConnection.HTTP_MOVED_PERM) - || (status == HttpURLConnection.HTTP_SEE_OTHER)) { + || (status == HttpURLConnection.HTTP_MOVED_PERM) + || (status == HttpURLConnection.HTTP_SEE_OTHER)) { // get redirect url from "location" header field String newUrl = connection.getHeaderField("location"); // open the new connnection again @@ -334,5 +333,4 @@ private URLConnection openConnection() throws IOException { return connection; } - } diff --git a/src/main/java/org/jabref/logic/util/io/FileUtil.java b/src/main/java/org/jabref/logic/util/io/FileUtil.java index 58d64fe984e..f8d3765cdf8 100644 --- a/src/main/java/org/jabref/logic/util/io/FileUtil.java +++ b/src/main/java/org/jabref/logic/util/io/FileUtil.java @@ -71,7 +71,7 @@ public static String getBaseName(String fileNameWithExtension) { /** * Returns a valid filename for most operating systems. - * + *

    * Currently, only the length is restricted to 255 chars, see MAXIMUM_FILE_NAME_LENGTH. */ public static String getValidFileName(String fileName) { @@ -216,9 +216,10 @@ public static boolean renameFileWithException(Path fromFile, Path toFile, boolea * Converts an absolute file to a relative one, if possible. Returns the parameter file itself if no shortening is * possible. *

    - * This method works correctly only if directories are sorted decent in their length i.e. /home/user/literature/important before /home/user/literature. + * This method works correctly only if directories are sorted decent in their length i.e. + * /home/user/literature/important before /home/user/literature. * - * @param file the file to be shortened + * @param file the file to be shortened * @param directories directories to check */ public static Path relativize(Path file, List directories) { @@ -246,9 +247,9 @@ public static List getListOfLinkedFiles(List bes, List fil Objects.requireNonNull(fileDirs); return bes.stream() - .flatMap(entry -> entry.getFiles().stream()) - .flatMap(file -> OptionalUtil.toStream(file.findIn(fileDirs))) - .collect(Collectors.toList()); + .flatMap(entry -> entry.getFiles().stream()) + .flatMap(file -> OptionalUtil.toStream(file.findIn(fileDirs))) + .collect(Collectors.toList()); } /** @@ -326,8 +327,8 @@ public static List find(String filename, List directories) { } /** - * Creates a string representation of the given path that should work on all systems. - * This method should be used when a path needs to be stored in the bib file or preferences. + * Creates a string representation of the given path that should work on all systems. This method should be used + * when a path needs to be stored in the bib file or preferences. */ public static String toPortableString(Path path) { return path.toString() @@ -336,11 +337,11 @@ public static String toPortableString(Path path) { /** * Test if the file is a bib file by simply checking the extension to be ".bib" + * * @param file The file to check * @return True if file extension is ".bib", false otherwise */ - public static boolean isBibFile(Path file) - { + public static boolean isBibFile(Path file) { return getFileExtension(file).filter(type -> "bib".equals(type)).isPresent(); } } diff --git a/src/main/java/org/jabref/model/metadata/FilePreferences.java b/src/main/java/org/jabref/model/metadata/FilePreferences.java index a81eacdb8bb..9db6bb836c7 100644 --- a/src/main/java/org/jabref/model/metadata/FilePreferences.java +++ b/src/main/java/org/jabref/model/metadata/FilePreferences.java @@ -52,5 +52,7 @@ public String getFileDirPattern() { return fileDirPattern; } - public boolean getDownloadLinkedFiles() { return downloadLinkedFiles; } + public boolean getDownloadLinkedFiles() { + return downloadLinkedFiles; + } } From 7cc592b5d5efee26c053b1baae40ae4384610297 Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Sat, 9 May 2020 03:27:44 +0200 Subject: [PATCH 02/13] Fix checkstyle --- .../logic/bst/BibtexNameFormatterTest.java | 70 ++++++++++--------- .../fetcher/AstrophysicsDataSystemTest.java | 7 +- .../importer/fetcher/DoiFetcherTest.java | 3 +- .../importer/fetcher/MedlineFetcherTest.java | 5 +- .../logic/openoffice/OOBibStyleTest.java | 3 +- 5 files changed, 51 insertions(+), 37 deletions(-) diff --git a/src/test/java/org/jabref/logic/bst/BibtexNameFormatterTest.java b/src/test/java/org/jabref/logic/bst/BibtexNameFormatterTest.java index 5a457bc0f7d..a8000752edb 100644 --- a/src/test/java/org/jabref/logic/bst/BibtexNameFormatterTest.java +++ b/src/test/java/org/jabref/logic/bst/BibtexNameFormatterTest.java @@ -10,31 +10,34 @@ public class BibtexNameFormatterTest { @Test - public void testFormatName() { - { - AuthorList al = AuthorList - .parse("Charles Louis Xavier Joseph de la Vall{\\'e}e Poussin"); + public void testUmlautsFullNames() { + AuthorList al = AuthorList + .parse("Charles Louis Xavier Joseph de la Vall{\\'e}e Poussin"); - assertEquals("de~laVall{\\'e}e~PoussinCharles Louis Xavier~Joseph", BibtexNameFormatter.formatName(al - .getAuthor(0), "{vv}{ll}{jj}{ff}", Assertions::fail)); - } + assertEquals("de~laVall{\\'e}e~PoussinCharles Louis Xavier~Joseph", BibtexNameFormatter.formatName(al + .getAuthor(0), "{vv}{ll}{jj}{ff}", Assertions::fail)); + } - { - AuthorList al = AuthorList - .parse("Charles Louis Xavier Joseph de la Vall{\\'e}e Poussin"); + @Test + public void testUmlautsAbbreviations() { + AuthorList al = AuthorList + .parse("Charles Louis Xavier Joseph de la Vall{\\'e}e Poussin"); - assertEquals("de~la Vall{\\'e}e~Poussin, C.~L. X.~J.", BibtexNameFormatter.formatName(al - .getAuthor(0), "{vv~}{ll}{, jj}{, f.}", Assertions::fail)); - } + assertEquals("de~la Vall{\\'e}e~Poussin, C.~L. X.~J.", BibtexNameFormatter.formatName(al + .getAuthor(0), "{vv~}{ll}{, jj}{, f.}", Assertions::fail)); + } - { - AuthorList al = AuthorList - .parse("Charles Louis Xavier Joseph de la Vall{\\'e}e Poussin"); + @Test + public void testUmlautsAbbreviationsWithQuestionMark() { + AuthorList al = AuthorList + .parse("Charles Louis Xavier Joseph de la Vall{\\'e}e Poussin"); - assertEquals("de~la Vall{\\'e}e~Poussin, C.~L. X.~J?", BibtexNameFormatter.formatName(al - .getAuthor(0), "{vv~}{ll}{, jj}{, f}?", Assertions::fail)); - } + assertEquals("de~la Vall{\\'e}e~Poussin, C.~L. X.~J?", BibtexNameFormatter.formatName(al + .getAuthor(0), "{vv~}{ll}{, jj}{, f}?", Assertions::fail)); + } + @Test + public void testFormatName() { AuthorList al = AuthorList .parse("Charles Louis Xavier Joseph de la Vall{\\'e}e Poussin"); @@ -73,20 +76,24 @@ private void assertNameFormatA(String string, String string2) { assertNameFormat(string, string2, 1, "{vv~}{ll}{, jj}{, f}?"); } + @Test + public void matchingBraceConsumedForCompleteWords() { + StringBuilder sb = new StringBuilder(); + assertEquals(6, BibtexNameFormatter.consumeToMatchingBrace(sb, "{HELLO} {WORLD}" + .toCharArray(), 0)); + assertEquals("{HELLO}", sb.toString()); + } + + @Test + public void matchingBraceConsumedForBracesInWords() { + StringBuilder sb = new StringBuilder(); + assertEquals(18, BibtexNameFormatter.consumeToMatchingBrace(sb, "{HE{L{}L}O} {WORLD}" + .toCharArray(), 12)); + assertEquals("{WORLD}", sb.toString()); + } + @Test public void testConsumeToMatchingBrace() { - { - StringBuilder sb = new StringBuilder(); - assertEquals(6, BibtexNameFormatter.consumeToMatchingBrace(sb, "{HELLO} {WORLD}" - .toCharArray(), 0)); - assertEquals("{HELLO}", sb.toString()); - } - { - StringBuilder sb = new StringBuilder(); - assertEquals(18, BibtexNameFormatter.consumeToMatchingBrace(sb, "{HE{L{}L}O} {WORLD}" - .toCharArray(), 12)); - assertEquals("{WORLD}", sb.toString()); - } StringBuilder sb = new StringBuilder(); assertEquals(10, BibtexNameFormatter.consumeToMatchingBrace(sb, "{HE{L{}L}O} {WORLD}" .toCharArray(), 0)); @@ -104,7 +111,6 @@ public void testGetFirstCharOfString() { @Test public void testNumberOfChars() { - assertEquals(6, BibtexNameFormatter.numberOfChars("Vall{\\'e}e", -1)); assertEquals(2, BibtexNameFormatter.numberOfChars("Vall{\\'e}e", 2)); assertEquals(1, BibtexNameFormatter.numberOfChars("Vall{\\'e}e", 1)); diff --git a/src/test/java/org/jabref/logic/importer/fetcher/AstrophysicsDataSystemTest.java b/src/test/java/org/jabref/logic/importer/fetcher/AstrophysicsDataSystemTest.java index deec24863c2..58417b0d327 100644 --- a/src/test/java/org/jabref/logic/importer/fetcher/AstrophysicsDataSystemTest.java +++ b/src/test/java/org/jabref/logic/importer/fetcher/AstrophysicsDataSystemTest.java @@ -23,7 +23,12 @@ public class AstrophysicsDataSystemTest { private AstrophysicsDataSystem fetcher; - private BibEntry diezSliceTheoremEntry, famaeyMcGaughEntry, sunWelchEntry, xiongSunEntry, ingersollPollardEntry, luceyPaulEntry; + private BibEntry diezSliceTheoremEntry; + private BibEntry famaeyMcGaughEntry; + private BibEntry sunWelchEntry; + private BibEntry xiongSunEntry; + private BibEntry ingersollPollardEntry; + private BibEntry luceyPaulEntry; @BeforeEach public void setUp() throws Exception { diff --git a/src/test/java/org/jabref/logic/importer/fetcher/DoiFetcherTest.java b/src/test/java/org/jabref/logic/importer/fetcher/DoiFetcherTest.java index 0484fb2af4b..857f8df4920 100644 --- a/src/test/java/org/jabref/logic/importer/fetcher/DoiFetcherTest.java +++ b/src/test/java/org/jabref/logic/importer/fetcher/DoiFetcherTest.java @@ -21,7 +21,8 @@ public class DoiFetcherTest { private DoiFetcher fetcher; - private BibEntry bibEntryBurd2011, bibEntryDecker2007; + private BibEntry bibEntryBurd2011; + private BibEntry bibEntryDecker2007; @BeforeEach public void setUp() { diff --git a/src/test/java/org/jabref/logic/importer/fetcher/MedlineFetcherTest.java b/src/test/java/org/jabref/logic/importer/fetcher/MedlineFetcherTest.java index 7eda3871267..4234ee0d35a 100644 --- a/src/test/java/org/jabref/logic/importer/fetcher/MedlineFetcherTest.java +++ b/src/test/java/org/jabref/logic/importer/fetcher/MedlineFetcherTest.java @@ -20,7 +20,10 @@ public class MedlineFetcherTest { private MedlineFetcher fetcher; - private BibEntry entryWijedasa, entryEndharti, bibEntryIchikawa, bibEntrySari; + private BibEntry entryWijedasa; + private BibEntry entryEndharti; + private BibEntry bibEntryIchikawa; + private BibEntry bibEntrySari; @BeforeEach public void setUp() throws InterruptedException { diff --git a/src/test/java/org/jabref/logic/openoffice/OOBibStyleTest.java b/src/test/java/org/jabref/logic/openoffice/OOBibStyleTest.java index 49f930bcab6..702dd974f53 100644 --- a/src/test/java/org/jabref/logic/openoffice/OOBibStyleTest.java +++ b/src/test/java/org/jabref/logic/openoffice/OOBibStyleTest.java @@ -509,8 +509,7 @@ void testEmptyStringPropertyAndOxfordComma() throws Exception { } @Test - void testIsValidWithDefaultSectionAtTheStart() throws Exception - { + void testIsValidWithDefaultSectionAtTheStart() throws Exception { OOBibStyle style = new OOBibStyle("testWithDefaultAtFirstLIne.jstyle", layoutFormatterPreferences); assertTrue(style.isValid()); } From 4604c682c81be6ff9cbdb60edbefecc5dd3042bf Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Sun, 10 May 2020 14:44:26 +0200 Subject: [PATCH 03/13] Add "including tests" to the Checkstyle configuration --- ...elines-for-setting-up-a-local-workspace.md | 7 ++++--- docs/images/intellij-checkstyle-settings.png | Bin 33804 -> 37666 bytes 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/guidelines-for-setting-up-a-local-workspace.md b/docs/guidelines-for-setting-up-a-local-workspace.md index 5a6462d654d..94faa6196e0 100644 --- a/docs/guidelines-for-setting-up-a-local-workspace.md +++ b/docs/guidelines-for-setting-up-a-local-workspace.md @@ -170,9 +170,10 @@ Contributions to JabRef's source code need to have a code formatting that is con 4. Check "Store relative to project location" 5. Click "Next" and "Finish" 6. Activate the CheckStyle configuration file by ticking it in the list - 7. Ensure that CheckStyle version 8.31 (or higher) is selected - 8. Save settings by clicking "OK" - 9. Your configuration should now look like this: + 7. Ensure that the latest CheckStyle version is selected (8.32 or higher) + 8. Set the "Scan Scope" to "Only Java sources (including tests) + 9. Save settings by clicking "OK" + 10. Your configuration should now look like this: ![checkstyle settings](images/intellij-checkstyle-settings.png) #### Troubleshooting when using both IDEA and Eclipse diff --git a/docs/images/intellij-checkstyle-settings.png b/docs/images/intellij-checkstyle-settings.png index c605c04cd20d1e7ae21fa9338aafef3dc655ce05..e5f0c027190976baf93806ee4bfe135f60923982 100644 GIT binary patch literal 37666 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 MUHx3vIVCg!0Qexyf&c&j literal 33804 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 Date: Sun, 10 May 2020 15:35:12 +0200 Subject: [PATCH 04/13] Change maximum columns to 140 characters --- config/IntelliJ Code Style.xml | 52 +++++++++---------- .../gui/fieldeditors/FieldEditorFX.java | 5 +- .../gui/maintable/MainTableColumnModel.java | 7 ++- .../gui/preferences/PreviewTabViewModel.java | 13 +++-- 4 files changed, 39 insertions(+), 38 deletions(-) diff --git a/config/IntelliJ Code Style.xml b/config/IntelliJ Code Style.xml index 489f44c1a5c..471a597f6bb 100644 --- a/config/IntelliJ Code Style.xml +++ b/config/IntelliJ Code Style.xml @@ -1,37 +1,35 @@ - - - -

    @@ -292,4 +290,4 @@ - + \ No newline at end of file diff --git a/src/main/java/org/jabref/gui/fieldeditors/FieldEditorFX.java b/src/main/java/org/jabref/gui/fieldeditors/FieldEditorFX.java index 0c7debc699a..f8fafb67800 100644 --- a/src/main/java/org/jabref/gui/fieldeditors/FieldEditorFX.java +++ b/src/main/java/org/jabref/gui/fieldeditors/FieldEditorFX.java @@ -26,8 +26,9 @@ default boolean childIsFocused() { /** * Returns relative size of the field editor in terms of display space. *

    - * A value of 1 means that the editor gets exactly as much space as all other regular editors. A value of 2 means - * that the editor gets twice as much space as regular editors. + * A value of 1 means that the editor gets exactly as much space as all other regular editors. + *

    + * A value of 2 means that the editor gets twice as much space as regular editors. * * @return the relative weight of the editor in terms of display space */ diff --git a/src/main/java/org/jabref/gui/maintable/MainTableColumnModel.java b/src/main/java/org/jabref/gui/maintable/MainTableColumnModel.java index d344e8f1481..cb1bd9fa113 100644 --- a/src/main/java/org/jabref/gui/maintable/MainTableColumnModel.java +++ b/src/main/java/org/jabref/gui/maintable/MainTableColumnModel.java @@ -20,8 +20,8 @@ import org.slf4j.LoggerFactory; /** - * Represents the full internal name of a column in the main table. Consists of two parts: The type of the column and a - * qualifier, like the field name to be displayed in the column. + * Represents the full internal name of a column in the main table. Consists of two parts: The type of the column and a qualifier, like the + * field name to be displayed in the column. */ public class MainTableColumnModel { @@ -99,8 +99,7 @@ public MainTableColumnModel(Type type, String qualifier) { } /** - * This is used by the preferences dialog, to initialize available basic icon columns, the user can add to the - * table. + * This is used by the preferences dialog, to initialize available basic icon columns, the user can add to the table. * * @param type the {@code MainTableColumnModel.Type} of the column, e.g. "GROUPS" or "LINKED_IDENTIFIER" */ diff --git a/src/main/java/org/jabref/gui/preferences/PreviewTabViewModel.java b/src/main/java/org/jabref/gui/preferences/PreviewTabViewModel.java index 1aebf2d6c8e..c168f8ef2ac 100644 --- a/src/main/java/org/jabref/gui/preferences/PreviewTabViewModel.java +++ b/src/main/java/org/jabref/gui/preferences/PreviewTabViewModel.java @@ -299,9 +299,13 @@ public void resetDefaultLayout() { } /** - * XML-Syntax-Highlighting for RichTextFX-Codearea created by (c) Carlos Martins (github: @cemartins) License: - * BSD-2-Clause see https://github.com/FXMisc/RichTextFX/blob/master/LICENSE and: - * https://github.com/FXMisc/RichTextFX/blob/master/richtextfx-demos/README.md#xml-editor + * XML-Syntax-Highlighting for RichTextFX-Codearea created by (c) Carlos Martins (github: + * @cemartins) + *

    + * License: BSD-2-Clause + *

    + * See also + * https://github.com/FXMisc/RichTextFX/blob/master/richtextfx-demos/README.md#xml-editor * * @param text to parse and highlight * @return highlighted span for codeArea @@ -379,8 +383,7 @@ public void dragDetected(ListProperty sourceList, ObjectProperty< } /** - * This is called, when the user drops some PreviewLayouts either in the availableListView or in the empty space of - * chosenListView + * This is called, when the user drops some PreviewLayouts either in the availableListView or in the empty space of chosenListView * * @param targetList either availableListView or chosenListView */ From 061edc6504583d02ebdc7d90db3d1b69a60085d0 Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Sun, 10 May 2020 15:46:57 +0200 Subject: [PATCH 05/13] Display "warning" line at columnn 120 --- config/IntelliJ Code Style.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/IntelliJ Code Style.xml b/config/IntelliJ Code Style.xml index 471a597f6bb..6b0217da7f8 100644 --- a/config/IntelliJ Code Style.xml +++ b/config/IntelliJ Code Style.xml @@ -1,6 +1,7 @@

    * Only GUI code is allowed to access it, logic code should use dependency injection. */ public static JournalAbbreviationRepository journalAbbreviationRepository; /** * This field is initialized upon startup. + *

    * Only GUI code is allowed to access it, logic code should use dependency injection. */ public static ProtectedTermsLoader protectedTermsLoader; diff --git a/src/main/java/org/jabref/JabRefException.java b/src/main/java/org/jabref/JabRefException.java index a1dd034d89e..316dcc5e7ad 100644 --- a/src/main/java/org/jabref/JabRefException.java +++ b/src/main/java/org/jabref/JabRefException.java @@ -39,5 +39,4 @@ public String getLocalizedMessage() { return localizedMessage; } } - } diff --git a/src/main/java/org/jabref/JabRefExecutorService.java b/src/main/java/org/jabref/JabRefExecutorService.java index 762d0dd66d2..a90668d9bd2 100644 --- a/src/main/java/org/jabref/JabRefExecutorService.java +++ b/src/main/java/org/jabref/JabRefExecutorService.java @@ -28,7 +28,6 @@ public class JabRefExecutorService { thread.setName("JabRef CachedThreadPool"); thread.setUncaughtExceptionHandler(new FallbackExceptionHandler()); return thread; - }); private final ExecutorService lowPriorityExecutorService = Executors.newCachedThreadPool(r -> { Thread thread = new Thread(r); @@ -165,5 +164,4 @@ public void run() { } } } - } diff --git a/src/main/java/org/jabref/JabRefMain.java b/src/main/java/org/jabref/JabRefMain.java index b2b78566c08..e004d0e1627 100644 --- a/src/main/java/org/jabref/JabRefMain.java +++ b/src/main/java/org/jabref/JabRefMain.java @@ -114,9 +114,9 @@ private static void ensureCorrectJavaVersion() { if (java9Fail || versionFail) { StringBuilder versionError = new StringBuilder( - Localization.lang("Your current Java version (%0) is not supported. Please install version %1 or higher.", - checker.getJavaVersion(), - buildInfo.minRequiredJavaVersion)); + Localization.lang("Your current Java version (%0) is not supported. Please install version %1 or higher.", + checker.getJavaVersion(), + buildInfo.minRequiredJavaVersion)); versionError.append("\n"); versionError.append(Localization.lang("Your Java Runtime Environment is located at %0.", checker.getJavaInstallationDirectory())); @@ -165,7 +165,7 @@ private static void applyPreferences(JabRefPreferences preferences) { // Build list of Import and Export formats Globals.IMPORT_FORMAT_READER.resetImportFormats(Globals.prefs.getImportFormatPreferences(), - Globals.prefs.getXMPPreferences(), Globals.getFileUpdateMonitor()); + Globals.prefs.getXMPPreferences(), Globals.getFileUpdateMonitor()); Globals.entryTypesManager.addCustomOrModifiedTypes(preferences.loadBibEntryTypes(BibDatabaseMode.BIBTEX), preferences.loadBibEntryTypes(BibDatabaseMode.BIBLATEX)); Globals.exportFactory = Globals.prefs.getExporterFactory(Globals.journalAbbreviationRepository); diff --git a/src/main/java/org/jabref/architecture/ApacheCommonsLang3Allowed.java b/src/main/java/org/jabref/architecture/ApacheCommonsLang3Allowed.java index f398c11f56e..95aa6c0949b 100644 --- a/src/main/java/org/jabref/architecture/ApacheCommonsLang3Allowed.java +++ b/src/main/java/org/jabref/architecture/ApacheCommonsLang3Allowed.java @@ -8,5 +8,4 @@ // The rationale String value(); - } diff --git a/src/main/java/org/jabref/cli/ArgumentProcessor.java b/src/main/java/org/jabref/cli/ArgumentProcessor.java index 603eba4a411..957a0fab500 100644 --- a/src/main/java/org/jabref/cli/ArgumentProcessor.java +++ b/src/main/java/org/jabref/cli/ArgumentProcessor.java @@ -266,7 +266,7 @@ private boolean exportMatches(List loaded) { break; default: System.err.println(Localization.lang("Output file missing").concat(". \n \t ") - .concat(Localization.lang("Usage")).concat(": ") + JabRefCLI.getExportMatchesSyntax()); + .concat(Localization.lang("Usage")).concat(": ") + JabRefCLI.getExportMatchesSyntax()); noGUINeeded = true; return false; } @@ -442,7 +442,7 @@ private void exportFile(List loaded, String[] data) { try { exporter.get().export(pr.getDatabaseContext(), Path.of(data[0]), pr.getDatabaseContext().getMetaData().getEncoding() - .orElse(Globals.prefs.getDefaultEncoding()), + .orElse(Globals.prefs.getDefaultEncoding()), pr.getDatabaseContext().getDatabase().getEntries()); } catch (Exception ex) { System.err.println(Localization.lang("Could not export file") + " '" + data[0] + "': " @@ -516,8 +516,7 @@ private void regenerateBibtexKeys(List loaded) { /** * Run an entry fetcher from the command line. * - * @param fetchCommand A string containing both the name of the fetcher to use and - * the search query, separated by a : + * @param fetchCommand A string containing both the name of the fetcher to use and the search query, separated by a : * @return A parser result containing the entries fetched or null if an error occurred. */ private Optional fetch(String fetchCommand) { diff --git a/src/main/java/org/jabref/cli/CrossrefFetcherEvaluator.java b/src/main/java/org/jabref/cli/CrossrefFetcherEvaluator.java index 69641fa60c7..6db58af18c0 100644 --- a/src/main/java/org/jabref/cli/CrossrefFetcherEvaluator.java +++ b/src/main/java/org/jabref/cli/CrossrefFetcherEvaluator.java @@ -71,7 +71,6 @@ public void run() { } catch (FetcherException e) { e.printStackTrace(); } - } else { try { Optional crossrefDOI = new CrossRef().findIdentifier(entry); @@ -86,7 +85,6 @@ public void run() { countDownLatch.countDown(); } }); - } countDownLatch.await(); diff --git a/src/main/java/org/jabref/cli/GenerateCharacterTable.java b/src/main/java/org/jabref/cli/GenerateCharacterTable.java index babd5bbca00..57a1690bb10 100644 --- a/src/main/java/org/jabref/cli/GenerateCharacterTable.java +++ b/src/main/java/org/jabref/cli/GenerateCharacterTable.java @@ -39,14 +39,12 @@ public static void main(String[] args) { System.out .println( character.getKey() + " & " - + ((character.getKey() > 128) ? String - .valueOf(Character.toChars(character.getKey())) : "") + + ((character.getKey() > 128) ? + String.valueOf(Character.toChars(character.getKey())) : "") + " & \\symbol{" + Integer.toString(character.getKey()) + "} & " + character.getValue() + " & \\verb¤" + character.getValue() + "¤ \\\\"); } System.out.println("\\end{supertabular}"); System.out.println("\\end{document}"); - } - } diff --git a/src/main/java/org/jabref/cli/JabRefCLI.java b/src/main/java/org/jabref/cli/JabRefCLI.java index 0f3baecdf59..41b8c595f50 100644 --- a/src/main/java/org/jabref/cli/JabRefCLI.java +++ b/src/main/java/org/jabref/cli/JabRefCLI.java @@ -164,73 +164,73 @@ private static Options getOptions() { options.addOption(Option.builder("i"). longOpt("import"). - desc(String.format("%s: '%s'", Localization.lang("Import file"), "-i library.bib")). - hasArg(). - argName("FILE[,FORMAT]"). - build()); + desc(String.format("%s: '%s'", Localization.lang("Import file"), "-i library.bib")). + hasArg(). + argName("FILE[,FORMAT]"). + 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()); + desc(Localization.lang("Same as --import, but will be imported to the opened tab")). + hasArg(). + argName("FILE[,FORMAT]"). + build()); options.addOption(Option.builder("ib"). longOpt("importBibtex"). - desc(String.format("%s: '%s'", Localization.lang("Import BibTeX"), "-ib @article{entry}")). - hasArg(). - argName("BIBTEXT_STRING"). - build()); + desc(String.format("%s: '%s'", Localization.lang("Import BibTeX"), "-ib @article{entry}")). + hasArg(). + argName("BIBTEXT_STRING"). + build()); 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[,FORMAT]"). - build()); + desc(String.format("%s: '%s'", Localization.lang("Export an input to a file"), "-i db.bib -o db.htm,html")). + hasArg(). + argName("FILE[,FORMAT]"). + build()); 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("QUERY,FILE[,FORMAT]"). - build()); + desc(String.format("%s: '%s'", Localization.lang("Matching"), "-i db.bib -m author=Newton,search.htm,html")). + hasArg(). + argName("QUERY,FILE[,FORMAT]"). + build()); options.addOption(Option.builder("f"). longOpt("fetch"). - desc(String.format("%s: '%s'", Localization.lang("Run fetcher"), "-f Medline/PubMed:cancer")). - hasArg(). - argName("FETCHER:QUERY"). - build()); + desc(String.format("%s: '%s'", Localization.lang("Run fetcher"), "-f Medline/PubMed:cancer")). + hasArg(). + argName("FETCHER:QUERY"). + build()); options.addOption(Option.builder("a"). longOpt("aux"). - desc(String.format("%s: '%s'", Localization.lang("Sublibrary from AUX to BibTeX"), "-a thesis.aux,new.bib")). - hasArg(). - argName("FILE[.aux],FILE[.bib] FILE"). - build()); + desc(String.format("%s: '%s'", Localization.lang("Sublibrary from AUX to BibTeX"), "-a thesis.aux,new.bib")). + hasArg(). + argName("FILE[.aux],FILE[.bib] FILE"). + build()); 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]"). - build()); + desc(String.format("%s: '%s'", Localization.lang("Export preferences to a file"), "-x prefs.xml")). + hasArg(). + argName("[FILE]"). + build()); 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]"). - build()); + desc(String.format("%s: '%s'", Localization.lang("Import preferences from a file"), "-p prefs.xml")). + hasArg(). + argName("[FILE]"). + build()); options.addOption(Option.builder("d"). longOpt("prdef"). - desc(String.format("%s: '%s'", Localization.lang("Reset preferences"), "-d mainFontSize,newline' or '-d all")). - hasArg(). - argName("KEY1[,KEY2][,KEYn] | all"). - build()); + desc(String.format("%s: '%s'", Localization.lang("Reset preferences"), "-d mainFontSize,newline' or '-d all")). + hasArg(). + argName("KEY1[,KEY2][,KEYn] | all"). + build()); return options; } diff --git a/src/main/java/org/jabref/gui/Base.css b/src/main/java/org/jabref/gui/Base.css index 77e618a818a..db034bb0b6c 100644 --- a/src/main/java/org/jabref/gui/Base.css +++ b/src/main/java/org/jabref/gui/Base.css @@ -155,19 +155,19 @@ */ -fx-color: -fx-base; - -fx-hover-base: derive(-fx-base,30%); + -fx-hover-base: derive(-fx-base, 30%); /* A little darker than -fx-base and used as the -fx-color for the * "armed" pseudoclass state. * * TODO: should this be renamed to -fx-armed-base? */ - -fx-pressed-base: derive(-fx-base,-6%); + -fx-pressed-base: derive(-fx-base, -6%); /* A little darker than -fx-color and used to draw boxes around objects such * as progress bars, scroll bars, scroll panes, trees, tables, and lists. */ - -fx-box-border: derive(-fx-color,-5%); + -fx-box-border: derive(-fx-color, -5%); /* Darker than -fx-background and used to draw boxes around text boxes and * password boxes. @@ -178,7 +178,7 @@ * needed on top of -fx-background. This is never a shadow in Modena but * keep -fx-shadow-highlight-color name to be compatible with Caspian. */ - -fx-shadow-highlight-color: rgba(255,255,255,0.07) 70%; + -fx-shadow-highlight-color: rgba(255, 255, 255, 0.07) 70%; /* A gradient that goes from a little darker than -fx-color on the top to * even more darker than -fx-color on the bottom. Typically is the second @@ -186,16 +186,16 @@ * a control. It is typically the same size as the control (i.e., insets * are 0). */ - -fx-outer-border: derive(-fx-color,-5%); + -fx-outer-border: derive(-fx-color, -5%); /* A gradient that goes from a bit lighter than -fx-color on the top to * a little darker at the bottom. Typically is the third color in the * -fx-background-color list as a thin highlight inside the outer border. * Insets are typically 1. */ - -fx-inner-border: derive(-fx-color,65%); - -fx-inner-border-horizontal: derive(-fx-color,65%); - -fx-inner-border-bottomup: derive(-fx-color,65%); + -fx-inner-border: derive(-fx-color, 65%); + -fx-inner-border-horizontal: derive(-fx-color, 65%); + -fx-inner-border-bottomup: derive(-fx-color, 65%); /*-fx-inner-border: red;*/ /*-fx-inner-border-horizontal: green;*/ @@ -205,9 +205,9 @@ * a little darker than -fx-color at the bottom and is used to fill the * body of many controls such as buttons. */ - -fx-body-color: derive(-fx-color,20%); - -fx-body-color-bottomup: derive(-fx-color,20%); - -fx-body-color-to-right: derive(-fx-color,20%); + -fx-body-color: derive(-fx-color, 20%); + -fx-body-color-bottomup: derive(-fx-color, 20%); + -fx-body-color-to-right: derive(-fx-color, 20%); /* The small thin light "shadow" for mark-like objects. Typically used in * conjunction with -fx-mark-color with an insets of 1 0 -1 0. */ @@ -234,7 +234,7 @@ -fx-padding: inherit; /** Focus line for keyboard focus traversal on cell based controls */ - -fx-cell-focus-inner-border: derive(-fx-selection-bar,30%); + -fx-cell-focus-inner-border: derive(-fx-selection-bar, 30%); -fx-focused-mark-color: -fx-focused-text-base-color; @@ -481,7 +481,7 @@ -fx-border-width: 3 0 0 0; } -.tab-pane > .tab-header-area > .headers-region > .tab:selected .tab-label{ +.tab-pane > .tab-header-area > .headers-region > .tab:selected .tab-label { -fx-fill: -jr-theme-text; -fx-text-fill: -jr-theme-text; } @@ -615,7 +615,7 @@ .table-cell:invalid, .list-cell:invalid { - -fx-background-color: -jr-warn; + -fx-background-color: -jr-warn; } .combo-box-base { @@ -798,7 +798,7 @@ -fx-padding: 0.3em 0.9em 0.3em 0.9em; } -.sidePaneComponentHeader .glyph-icon{ +.sidePaneComponentHeader .glyph-icon { -fx-fill: -jr-sidepane-header-color; -fx-text-fill: -jr-sidepane-header-color; -fx-font-size: 16px; @@ -948,7 +948,7 @@ We want to have a look that matches our icons in the tool-bar */ -fx-fill: -jr-head-fg; } -.table-cell, .table-cell .glyph-icon{ +.table-cell, .table-cell .glyph-icon { -fx-padding: 0.5em 1em 0.5em 1em; -fx-cell-size: 4.0em; -fx-text-fill: -fx-text-background-color; diff --git a/src/main/java/org/jabref/gui/BasePanel.java b/src/main/java/org/jabref/gui/BasePanel.java index 69c931b2344..1e6d3a0ed74 100644 --- a/src/main/java/org/jabref/gui/BasePanel.java +++ b/src/main/java/org/jabref/gui/BasePanel.java @@ -252,24 +252,24 @@ public void insertEntry(final BibEntry bibEntry) { public void insertEntries(final List entries) { if (!entries.isEmpty()) { - bibDatabaseContext.getDatabase().insertEntries(entries); - - // Set owner and timestamp - for (BibEntry entry : entries) { - UpdateField.setAutomaticFields(entry, - true, - true, - Globals.prefs.getOwnerPreferences(), - Globals.prefs.getTimestampPreferences()); - } - // Create an UndoableInsertEntries object. - getUndoManager().addEdit(new UndoableInsertEntries(bibDatabaseContext.getDatabase(), entries)); + bibDatabaseContext.getDatabase().insertEntries(entries); + + // Set owner and timestamp + for (BibEntry entry : entries) { + UpdateField.setAutomaticFields(entry, + true, + true, + Globals.prefs.getOwnerPreferences(), + Globals.prefs.getTimestampPreferences()); + } + // Create an UndoableInsertEntries object. + getUndoManager().addEdit(new UndoableInsertEntries(bibDatabaseContext.getDatabase(), entries)); - markBaseChanged(); // The database just changed. - if (Globals.prefs.getBoolean(JabRefPreferences.AUTO_OPEN_FORM)) { - showAndEdit(entries.get(0)); - } - clearAndSelect(entries.get(0)); + markBaseChanged(); // The database just changed. + if (Globals.prefs.getBoolean(JabRefPreferences.AUTO_OPEN_FORM)) { + showAndEdit(entries.get(0)); + } + clearAndSelect(entries.get(0)); } } diff --git a/src/main/java/org/jabref/gui/Dark.css b/src/main/java/org/jabref/gui/Dark.css index 6c92cf74e4e..e0b19e2adc5 100644 --- a/src/main/java/org/jabref/gui/Dark.css +++ b/src/main/java/org/jabref/gui/Dark.css @@ -57,9 +57,9 @@ -jr-drag-target-hover: -jr-accent; } -#previewBody{ +#previewBody { background-color: #272b38; /* -fx-control-inner-background*/ - color : #7d8591; /* -fx-mid-text-color*/ + color: #7d8591; /* -fx-mid-text-color*/ } .table-view .groupColumnBackground { diff --git a/src/main/java/org/jabref/gui/DialogService.java b/src/main/java/org/jabref/gui/DialogService.java index 2ca281876b0..30c15eeb8b8 100644 --- a/src/main/java/org/jabref/gui/DialogService.java +++ b/src/main/java/org/jabref/gui/DialogService.java @@ -30,7 +30,7 @@ public interface DialogService { * This will create and display new {@link ChoiceDialog} of type T with a default choice and a collection of possible choices * * @implNote The implementation should accept {@code null} for {@code defaultChoice}, but callers should use {@link #showChoiceDialogAndWait(String, String, String, Collection)}. - */ + */ Optional showChoiceDialogAndWait(String title, String content, String okButtonLabel, T defaultChoice, Collection choices); /** @@ -189,9 +189,9 @@ Optional showCustomButtonDialogAndWait(Alert.AlertType type, String /** * Constructs and shows a canceable {@link ProgressDialog}. Clicking cancel will cancel the underlying service and close the dialog * - * @param title title of the dialog + * @param title title of the dialog * @param content message to show above the progress bar - * @param task The {@link Task} which executes the work and for which to show the dialog + * @param task The {@link Task} which executes the work and for which to show the dialog */ void showProgressDialogAndWait(String title, String content, Task task); diff --git a/src/main/java/org/jabref/gui/EntryType.fxml b/src/main/java/org/jabref/gui/EntryType.fxml index 0ed5f37b502..da5daa62136 100644 --- a/src/main/java/org/jabref/gui/EntryType.fxml +++ b/src/main/java/org/jabref/gui/EntryType.fxml @@ -18,51 +18,51 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/java/org/jabref/gui/EntryTypeView.java b/src/main/java/org/jabref/gui/EntryTypeView.java index e4f0d11a9c7..476455469d8 100644 --- a/src/main/java/org/jabref/gui/EntryTypeView.java +++ b/src/main/java/org/jabref/gui/EntryTypeView.java @@ -39,7 +39,8 @@ /** * Dialog that prompts the user to choose a type for an entry. - * Returns null if canceled. + * + * @return null if canceled */ public class EntryTypeView extends BaseDialog { @@ -90,7 +91,6 @@ public EntryTypeView(BasePanel basePanel, DialogService dialogService, JabRefPre setEntryTypeForReturnAndClose(Optional.empty()); } }); - } private void addEntriesToPane(FlowPane pane, Collection entries) { @@ -150,7 +150,6 @@ public void initialize() { } else { addEntriesToPane(customPane, customTypes); } - } else { biblatexTitlePane.setVisible(false); addEntriesToPane(bibTexPane, BibtexEntryTypeDefinitions.ALL); @@ -304,5 +303,4 @@ public static String getDescription(EntryType selectedType) { //CHECKSTYLE:ON } - } diff --git a/src/main/java/org/jabref/gui/FXDialog.java b/src/main/java/org/jabref/gui/FXDialog.java index e577568267a..f0d071ae74f 100644 --- a/src/main/java/org/jabref/gui/FXDialog.java +++ b/src/main/java/org/jabref/gui/FXDialog.java @@ -15,11 +15,11 @@ /** * This class provides a super class for all dialogs implemented in JavaFX. - * + *

    * To create a custom JavaFX dialog one should create an instance of this class and set a dialog * pane through the inherited {@link Dialog#setDialogPane(DialogPane)} method. * The dialog can be shown via {@link Dialog#show()} or {@link Dialog#showAndWait()}. - * + *

    * The layout of the pane should be defined in an external fxml file and loaded it via the * {@link FXMLLoader}. */ @@ -78,5 +78,4 @@ private void setDialogIcon(Image image) { private Stage getDialogWindow() { return (Stage) getDialogPane().getScene().getWindow(); } - } diff --git a/src/main/java/org/jabref/gui/OpenConsoleAction.java b/src/main/java/org/jabref/gui/OpenConsoleAction.java index ce634dd73e5..666094c3a4f 100644 --- a/src/main/java/org/jabref/gui/OpenConsoleAction.java +++ b/src/main/java/org/jabref/gui/OpenConsoleAction.java @@ -24,11 +24,11 @@ public OpenConsoleAction(StateManager stateManager) { @Override public void execute() { stateManager.getActiveDatabase().flatMap(BibDatabaseContext::getDatabasePath).ifPresent(path -> { - try { - JabRefDesktop.openConsole(path.toFile()); - } catch (IOException e) { - LOGGER.info("Could not open console", e); - } + try { + JabRefDesktop.openConsole(path.toFile()); + } catch (IOException e) { + LOGGER.info("Could not open console", e); + } }); } } diff --git a/src/main/java/org/jabref/gui/SendAsEMailAction.java b/src/main/java/org/jabref/gui/SendAsEMailAction.java index 08f412b6a28..15118bea93d 100644 --- a/src/main/java/org/jabref/gui/SendAsEMailAction.java +++ b/src/main/java/org/jabref/gui/SendAsEMailAction.java @@ -25,10 +25,10 @@ import org.slf4j.LoggerFactory; /** - * Sends the selected entry as email - by Oliver Kopp - * + * Sends the selected entry as email + *

    * It uses the mailto:-mechanism - * + *

    * Microsoft Outlook does not support attachments via mailto * Therefore, the folder(s), where the file(s) belonging to the entry are stored, * are opened. This feature is disabled by default and can be switched on at diff --git a/src/main/java/org/jabref/gui/SidePaneComponent.java b/src/main/java/org/jabref/gui/SidePaneComponent.java index 603a1bb1407..91f8dfffb95 100644 --- a/src/main/java/org/jabref/gui/SidePaneComponent.java +++ b/src/main/java/org/jabref/gui/SidePaneComponent.java @@ -30,7 +30,6 @@ public SidePaneComponent(SidePaneManager manager, JabRefIcon icon, String title) this.icon = icon; this.title = title; this.toggleCommand = new ToggleCommand(this); - } protected void hide() { diff --git a/src/main/java/org/jabref/gui/actions/ActionFactory.java b/src/main/java/org/jabref/gui/actions/ActionFactory.java index 18ea69c745a..be72a1e7e40 100644 --- a/src/main/java/org/jabref/gui/actions/ActionFactory.java +++ b/src/main/java/org/jabref/gui/actions/ActionFactory.java @@ -140,7 +140,7 @@ public Button createIconButton(Action action, Command command) { public ButtonBase configureIconButton(Action action, Command command, ButtonBase button) { ActionUtils.configureButton( - new JabRefAction(action, command, keyBindingRepository, Sources.FromButton), + new JabRefAction(action, command, keyBindingRepository, Sources.FromButton), button, ActionUtils.ActionTextBehavior.HIDE); diff --git a/src/main/java/org/jabref/gui/actions/JabRefAction.java b/src/main/java/org/jabref/gui/actions/JabRefAction.java index 4a7aefcd4aa..c017c979e06 100644 --- a/src/main/java/org/jabref/gui/actions/JabRefAction.java +++ b/src/main/java/org/jabref/gui/actions/JabRefAction.java @@ -31,6 +31,7 @@ public JabRefAction(Action action, Command command, KeyBindingRepository keyBind /** * especially for the track execute when the action run the same function but from different source. + * * @param source is a string contains the source, for example "button" */ public JabRefAction(Action action, Command command, KeyBindingRepository keyBindingRepository, Sources source) { diff --git a/src/main/java/org/jabref/gui/actions/Sources.java b/src/main/java/org/jabref/gui/actions/Sources.java index 55110553f65..48a3153f049 100644 --- a/src/main/java/org/jabref/gui/actions/Sources.java +++ b/src/main/java/org/jabref/gui/actions/Sources.java @@ -3,5 +3,4 @@ public enum Sources { FromButton, FromMenu - } diff --git a/src/main/java/org/jabref/gui/actions/StandardActions.java b/src/main/java/org/jabref/gui/actions/StandardActions.java index 65900dac2c9..df87f1b7e04 100644 --- a/src/main/java/org/jabref/gui/actions/StandardActions.java +++ b/src/main/java/org/jabref/gui/actions/StandardActions.java @@ -159,7 +159,6 @@ public enum StandardActions implements Action { SEARCH_FOR_UPDATES(Localization.lang("Check for updates")), ABOUT(Localization.lang("About JabRef"), Localization.lang("About JabRef")); - private final String text; private final String description; private final Optional icon; diff --git a/src/main/java/org/jabref/gui/autocompleter/AutoCompleteFirstNameMode.java b/src/main/java/org/jabref/gui/autocompleter/AutoCompleteFirstNameMode.java index 30543681808..c2acbd3647e 100644 --- a/src/main/java/org/jabref/gui/autocompleter/AutoCompleteFirstNameMode.java +++ b/src/main/java/org/jabref/gui/autocompleter/AutoCompleteFirstNameMode.java @@ -1,9 +1,11 @@ package org.jabref.gui.autocompleter; /** - * For "ONLY_FULL", the auto completer returns the full name, e.g. "Smith, Bob" - * For "ONLY_ABBREVIATED", the auto completer returns the first name abbreviated, e.g. "Smith, B." - * For "BOTH", the auto completer returns both versions. + *

      + *
    • For "ONLY_FULL", the auto completer returns the full name, e.g. "Smith, Bob"
    • + *
    • For "ONLY_ABBREVIATED", the auto completer returns the first name abbreviated, e.g. "Smith, B."
    • + *
    • For "BOTH", the auto completer returns both versions.
    • + *
    */ public enum AutoCompleteFirstNameMode { ONLY_FULL, diff --git a/src/main/java/org/jabref/gui/autocompleter/AutoCompletePreferences.java b/src/main/java/org/jabref/gui/autocompleter/AutoCompletePreferences.java index 6edd5d3a223..0b9aace0f00 100644 --- a/src/main/java/org/jabref/gui/autocompleter/AutoCompletePreferences.java +++ b/src/main/java/org/jabref/gui/autocompleter/AutoCompletePreferences.java @@ -43,6 +43,7 @@ public NameFormat getNameFormat() { /** * Returns the list of fields for which autocomplete is enabled + * * @return List of field names */ public Set getCompleteFields() { diff --git a/src/main/java/org/jabref/gui/auximport/FromAuxDialog.java b/src/main/java/org/jabref/gui/auximport/FromAuxDialog.java index 7db6fe77f8c..8584b06785b 100644 --- a/src/main/java/org/jabref/gui/auximport/FromAuxDialog.java +++ b/src/main/java/org/jabref/gui/auximport/FromAuxDialog.java @@ -98,5 +98,4 @@ private void browseButtonClicked() { .withInitialDirectory(Globals.prefs.get(JabRefPreferences.WORKING_DIRECTORY)).build(); dialogService.showFileOpenDialog(fileDialogConfiguration).ifPresent(file -> auxFileField.setText(file.toAbsolutePath().toString())); } - } diff --git a/src/main/java/org/jabref/gui/bibtexextractor/BibtexExtractorViewModel.java b/src/main/java/org/jabref/gui/bibtexextractor/BibtexExtractorViewModel.java index f69dfd51675..1bf6ea2cd46 100644 --- a/src/main/java/org/jabref/gui/bibtexextractor/BibtexExtractorViewModel.java +++ b/src/main/java/org/jabref/gui/bibtexextractor/BibtexExtractorViewModel.java @@ -57,14 +57,14 @@ public StringProperty inputTextProperty() { public void startParsing() { BackgroundTask.wrap(() -> currentCitationfetcher.performSearch(inputTextProperty.getValue())) - .onRunning(() -> dialogService.notify(Localization.lang("Your text is being parsed..."))) - .onSuccess(parsedEntries -> { - dialogService.notify(Localization.lang("%0 entries were parsed from your query.", String.valueOf(parsedEntries.size()))); - importHandler.importEntries(parsedEntries); - for (BibEntry bibEntry : parsedEntries) { - trackNewEntry(bibEntry); - } - }).executeWith(taskExecutor); + .onRunning(() -> dialogService.notify(Localization.lang("Your text is being parsed..."))) + .onSuccess(parsedEntries -> { + dialogService.notify(Localization.lang("%0 entries were parsed from your query.", String.valueOf(parsedEntries.size()))); + importHandler.importEntries(parsedEntries); + for (BibEntry bibEntry : parsedEntries) { + trackNewEntry(bibEntry); + } + }).executeWith(taskExecutor); } private void trackNewEntry(BibEntry bibEntry) { diff --git a/src/main/java/org/jabref/gui/bibtexextractor/ExtractBibtexDialog.fxml b/src/main/java/org/jabref/gui/bibtexextractor/ExtractBibtexDialog.fxml index d2182cbaf9c..eaad07b1bb8 100644 --- a/src/main/java/org/jabref/gui/bibtexextractor/ExtractBibtexDialog.fxml +++ b/src/main/java/org/jabref/gui/bibtexextractor/ExtractBibtexDialog.fxml @@ -3,18 +3,16 @@ - - - -