filenames) {
prefs.flush();
// dispose all windows, even if they are not displayed anymore
+ // TODO: javafx variant only avaiable in java 9 and updwards
+ // https://docs.oracle.com/javase/9/docs/api/javafx/stage/Window.html#getWindows--
for (Window window : Window.getWindows()) {
window.dispose();
}
@@ -449,8 +449,6 @@ public boolean quit() {
private void initLayout() {
setProgressBarVisible(false);
- pushApplications = new PushToApplicationsManager(this.getDialogService());
-
BorderPane head = new BorderPane();
head.setTop(createMenu());
head.setCenter(createToolbar());
@@ -520,9 +518,13 @@ private Node createToolbar() {
leftSide.prefWidthProperty().bind(sidePane.widthProperty());
leftSide.maxWidthProperty().bind(sidePane.widthProperty());
- PushToApplicationAction pushToApplicationAction = new PushToApplicationAction(stateManager, this.getPushApplications(), this.getDialogService());
+ final PushToApplicationAction pushToApplicationAction = getPushToApplicationsManager().getPushToApplicationAction();
+ final Button pushToApplicationButton = factory.createIconButton(pushToApplicationAction.getActionInformation(), pushToApplicationAction);
+ pushToApplicationsManager.setToolBarButton(pushToApplicationButton);
+
HBox rightSide = new HBox(
- factory.createIconButton(StandardActions.NEW_ARTICLE, new NewEntryAction(this, BiblatexEntryTypes.ARTICLE, dialogService, Globals.prefs, stateManager)),
+ factory.createIconButton(StandardActions.NEW_ARTICLE, new NewEntryAction(this, StandardEntryType.Article, dialogService, Globals.prefs, stateManager)),
+ factory.createIconButton(StandardActions.NEW_ENTRY, new NewEntryAction(this, dialogService, Globals.prefs, stateManager)),
factory.createIconButton(StandardActions.DELETE_ENTRY, new OldDatabaseCommandWrapper(Actions.DELETE, this, stateManager)),
new Separator(Orientation.VERTICAL),
factory.createIconButton(StandardActions.UNDO, new OldDatabaseCommandWrapper(Actions.UNDO, this, stateManager)),
@@ -531,7 +533,7 @@ private Node createToolbar() {
factory.createIconButton(StandardActions.COPY, new OldDatabaseCommandWrapper(Actions.COPY, this, stateManager)),
factory.createIconButton(StandardActions.PASTE, new OldDatabaseCommandWrapper(Actions.PASTE, this, stateManager)),
new Separator(Orientation.VERTICAL),
- factory.createIconButton(pushToApplicationAction.getActionInformation(), pushToApplicationAction),
+ pushToApplicationButton,
factory.createIconButton(StandardActions.GENERATE_CITE_KEYS, new OldDatabaseCommandWrapper(Actions.MAKE_KEY, this, stateManager)),
factory.createIconButton(StandardActions.CLEANUP_ENTRIES, new OldDatabaseCommandWrapper(Actions.CLEANUP, this, stateManager)),
new Separator(Orientation.VERTICAL),
@@ -756,11 +758,16 @@ private MenuBar createMenu() {
new SeparatorMenuItem(),
- factory.createMenuItem(StandardActions.SET_FILE_LINKS, new AutoLinkFilesAction(this, prefs, stateManager, undoManager))
+ factory.createMenuItem(StandardActions.SET_FILE_LINKS, new AutoLinkFilesAction(this, prefs, stateManager, undoManager, Globals.TASK_EXECUTOR))
);
- final PushToApplicationAction pushToApplicationAction = new PushToApplicationAction(stateManager, this.getPushApplications(), this.getDialogService());
+ // PushToApplication
+ final PushToApplicationAction pushToApplicationAction = pushToApplicationsManager.getPushToApplicationAction();
+ final MenuItem pushToApplicationMenuItem = factory.createMenuItem(pushToApplicationAction.getActionInformation(), pushToApplicationAction);
+ pushToApplicationsManager.setMenuItem(pushToApplicationMenuItem);
+
tools.getItems().addAll(
+ factory.createMenuItem(StandardActions.PARSE_TEX, new ParseTexAction(stateManager)),
factory.createMenuItem(StandardActions.NEW_SUB_LIBRARY_FROM_AUX, new NewSubLibraryAction(this, stateManager)),
factory.createMenuItem(StandardActions.FIND_UNLINKED_FILES, new FindUnlinkedFilesAction(this, stateManager)),
factory.createMenuItem(StandardActions.WRITE_XMP, new OldDatabaseCommandWrapper(Actions.WRITE_XMP, this, stateManager)),
@@ -776,7 +783,7 @@ private MenuBar createMenu() {
factory.createMenuItem(StandardActions.GENERATE_CITE_KEYS, new OldDatabaseCommandWrapper(Actions.MAKE_KEY, this, stateManager)),
factory.createMenuItem(StandardActions.REPLACE_ALL, new OldDatabaseCommandWrapper(Actions.REPLACE_ALL, this, stateManager)),
factory.createMenuItem(StandardActions.SEND_AS_EMAIL, new OldDatabaseCommandWrapper(Actions.SEND_AS_EMAIL, this, stateManager)),
- factory.createMenuItem(pushToApplicationAction.getActionInformation(), pushToApplicationAction),
+ pushToApplicationMenuItem,
factory.createSubMenu(StandardActions.ABBREVIATE,
factory.createMenuItem(StandardActions.ABBREVIATE_ISO, new OldDatabaseCommandWrapper(Actions.ABBREVIATE_ISO, this, stateManager)),
@@ -799,7 +806,6 @@ private MenuBar createMenu() {
new SeparatorMenuItem(),
- factory.createCheckMenuItem(StandardActions.TOGGLE_PREVIEW, new OldDatabaseCommandWrapper(Actions.TOGGLE_PREVIEW, this, stateManager), Globals.prefs.getPreviewPreferences().isPreviewPanelEnabled()),
factory.createMenuItem(StandardActions.NEXT_PREVIEW_STYLE, new OldDatabaseCommandWrapper(Actions.NEXT_PREVIEW_STYLE, this, stateManager)),
factory.createMenuItem(StandardActions.PREVIOUS_PREVIEW_STYLE, new OldDatabaseCommandWrapper(Actions.PREVIOUS_PREVIEW_STYLE, this, stateManager)),
@@ -997,7 +1003,7 @@ public void addTab(BasePanel basePanel, boolean raisePanel) {
autosaver.registerListener(new AutosaveUIManager(basePanel));
}
- BackupManager.start(context);
+ BackupManager.start(context, Globals.entryTypesManager, prefs);
// Track opening
trackOpenNewDatabase(basePanel);
@@ -1054,18 +1060,9 @@ public void setProgressBarVisible(final boolean visible) {
/**
* Sets the indeterminate status of the progress bar.
*
- * If not called on the event dispatch thread, this method uses SwingUtilities.invokeLater() to do the actual
- * operation on the EDT.
*/
public void setProgressBarIndeterminate(final boolean value) {
- // TODO: Reimplement
- /*
- if (SwingUtilities.isEventDispatchThread()) {
- progressBar.setIndeterminate(value);
- } else {
- SwingUtilities.invokeLater(() -> progressBar.setIndeterminate(value));
- }
- */
+ progressBar.setProgress(ProgressBar.INDETERMINATE_PROGRESS);
}
/**
@@ -1078,7 +1075,7 @@ public void setProgressBarIndeterminate(final boolean value) {
private boolean isExistFile(List selectEntryList) {
if (selectEntryList.size() == 1) {
BibEntry selectedEntry = selectEntryList.get(0);
- return selectedEntry.getField(FieldName.FILE).isPresent();
+ return selectedEntry.getField(StandardField.FILE).isPresent();
}
return false;
}
@@ -1093,15 +1090,11 @@ private boolean isExistFile(List selectEntryList) {
private boolean isExistURLorDOI(List selectEntryList) {
if (selectEntryList.size() == 1) {
BibEntry selectedEntry = selectEntryList.get(0);
- return (selectedEntry.getField(FieldName.URL).isPresent() || selectedEntry.getField(FieldName.DOI).isPresent());
+ return (selectedEntry.getField(StandardField.URL).isPresent() || selectedEntry.getField(StandardField.DOI).isPresent());
}
return false;
}
- public void showMessage(String message) {
- JOptionPane.showMessageDialog(null, message);
- }
-
/**
* Ask if the user really wants to close the given database
*
@@ -1192,8 +1185,8 @@ public SidePaneManager getSidePaneManager() {
return sidePaneManager;
}
- public PushToApplicationsManager getPushApplications() {
- return pushApplications;
+ public PushToApplicationsManager getPushToApplicationsManager() {
+ return pushToApplicationsManager;
}
public GlobalSearchBar getGlobalSearchBar() {
@@ -1246,7 +1239,7 @@ public void execute() {
textInput.cut();
break;
case PASTE:
- textInput.paste();
+ // handled by FX in TextInputControl#paste
break;
default:
throw new IllegalStateException("Only cut/copy/paste supported but got " + command);
@@ -1261,7 +1254,7 @@ public void execute() {
getCurrentBasePanel().cut();
break;
case PASTE:
- getCurrentBasePanel().paste();
+ // handled by FX in TextInputControl#paste
break;
default:
throw new IllegalStateException("Only cut/copy/paste supported but got " + command);
@@ -1288,7 +1281,7 @@ private void increaseTableFontSize() {
}
private void decreaseTableFontSize() {
- int currentSize = GUIGlobals.currentFont.getSize();
+ double currentSize = GUIGlobals.currentFont.getSize();
if (currentSize < 2) {
return;
}
diff --git a/src/main/java/org/jabref/gui/SaveOrderConfigDisplayView.java b/src/main/java/org/jabref/gui/SaveOrderConfigDisplayView.java
index aeca6f4ddad..2c4ef4c5f6f 100644
--- a/src/main/java/org/jabref/gui/SaveOrderConfigDisplayView.java
+++ b/src/main/java/org/jabref/gui/SaveOrderConfigDisplayView.java
@@ -10,6 +10,7 @@
import javafx.scene.layout.GridPane;
import org.jabref.logic.l10n.Localization;
+import org.jabref.model.entry.field.Field;
import org.jabref.model.metadata.SaveOrderConfig;
import org.jabref.preferences.PreferencesService;
@@ -20,9 +21,9 @@ public class SaveOrderConfigDisplayView extends GridPane {
private final SaveOrderConfig config;
@FXML private ToggleGroup saveOrderToggleGroup;
- @FXML private ComboBox savePriSort;
- @FXML private ComboBox saveSecSort;
- @FXML private ComboBox saveTerSort;
+ @FXML private ComboBox savePriSort;
+ @FXML private ComboBox saveSecSort;
+ @FXML private ComboBox saveTerSort;
@FXML private RadioButton exportInSpecifiedOrder;
@FXML private RadioButton exportInTableOrder;
@FXML private RadioButton exportInOriginalOrder;
diff --git a/src/main/java/org/jabref/gui/SaveOrderConfigDisplayViewModel.java b/src/main/java/org/jabref/gui/SaveOrderConfigDisplayViewModel.java
index 0846ee4866c..cc06c9e8cd9 100644
--- a/src/main/java/org/jabref/gui/SaveOrderConfigDisplayViewModel.java
+++ b/src/main/java/org/jabref/gui/SaveOrderConfigDisplayViewModel.java
@@ -1,37 +1,35 @@
package org.jabref.gui;
-import java.util.Collections;
-import java.util.List;
-import java.util.Locale;
import java.util.Objects;
+import java.util.Set;
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.ListProperty;
+import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.beans.property.SimpleListProperty;
-import javafx.beans.property.SimpleStringProperty;
-import javafx.beans.property.StringProperty;
+import javafx.beans.property.SimpleObjectProperty;
import javafx.collections.FXCollections;
-import org.jabref.model.entry.BibEntry;
-import org.jabref.model.entry.InternalBibtexFields;
+import org.jabref.model.entry.field.Field;
+import org.jabref.model.entry.field.FieldFactory;
import org.jabref.model.metadata.SaveOrderConfig;
import org.jabref.model.metadata.SaveOrderConfig.SortCriterion;
import org.jabref.preferences.PreferencesService;
public class SaveOrderConfigDisplayViewModel {
- private final ListProperty priSortFieldsProperty = new SimpleListProperty<>(FXCollections.observableArrayList());
- private final ListProperty secSortFieldsProperty = new SimpleListProperty<>(FXCollections.observableArrayList());
- private final ListProperty terSortFieldsProperty = new SimpleListProperty<>(FXCollections.observableArrayList());
+ private final ListProperty priSortFieldsProperty = new SimpleListProperty<>(FXCollections.observableArrayList());
+ private final ListProperty secSortFieldsProperty = new SimpleListProperty<>(FXCollections.observableArrayList());
+ private final ListProperty terSortFieldsProperty = new SimpleListProperty<>(FXCollections.observableArrayList());
private final BooleanProperty savePriDescPropertySelected = new SimpleBooleanProperty();
private final BooleanProperty saveSecDescPropertySelected = new SimpleBooleanProperty();
private final BooleanProperty saveTerDescPropertySelected = new SimpleBooleanProperty();
- private final StringProperty savePriSortSelectedValueProperty = new SimpleStringProperty("");
- private final StringProperty saveSecSortSelectedValueProperty = new SimpleStringProperty("");
- private final StringProperty saveTerSortSelectedValueProperty = new SimpleStringProperty("");
+ private final ObjectProperty savePriSortSelectedValueProperty = new SimpleObjectProperty<>(null);
+ private final ObjectProperty saveSecSortSelectedValueProperty = new SimpleObjectProperty<>(null);
+ private final ObjectProperty saveTerSortSelectedValueProperty = new SimpleObjectProperty<>(null);
private final BooleanProperty saveInOriginalProperty = new SimpleBooleanProperty();
private final BooleanProperty saveInTableOrderProperty = new SimpleBooleanProperty();
@@ -42,10 +40,7 @@ public class SaveOrderConfigDisplayViewModel {
public SaveOrderConfigDisplayViewModel(SaveOrderConfig config, PreferencesService prefs) {
this.prefs = prefs;
- List fieldNames = InternalBibtexFields.getAllPublicFieldNames();
- fieldNames.add(BibEntry.KEY_FIELD);
- Collections.sort(fieldNames);
-
+ Set fieldNames = FieldFactory.getCommonFields();
priSortFieldsProperty.addAll(fieldNames);
secSortFieldsProperty.addAll(fieldNames);
terSortFieldsProperty.addAll(fieldNames);
@@ -53,26 +48,24 @@ public SaveOrderConfigDisplayViewModel(SaveOrderConfig config, PreferencesServic
setSaveOrderConfig(config);
}
- public ListProperty priSortFieldsProperty() {
+ public ListProperty priSortFieldsProperty() {
return priSortFieldsProperty;
}
- public ListProperty secSortFieldsProperty() {
+ public ListProperty secSortFieldsProperty() {
return secSortFieldsProperty;
}
- public ListProperty terSortFieldsProperty() {
+ public ListProperty terSortFieldsProperty() {
return terSortFieldsProperty;
}
public SaveOrderConfig getSaveOrderConfig() {
- SortCriterion primary = new SortCriterion(getSelectedItemAsLowerCaseTrim(savePriSortSelectedValueProperty), savePriDescPropertySelected.getValue());
- SortCriterion secondary = new SortCriterion(getSelectedItemAsLowerCaseTrim(saveSecSortSelectedValueProperty), saveSecDescPropertySelected.getValue());
- SortCriterion tertiary = new SortCriterion(getSelectedItemAsLowerCaseTrim(saveTerSortSelectedValueProperty), saveTerDescPropertySelected.getValue());
-
- SaveOrderConfig saveOrderConfig = new SaveOrderConfig(saveInOriginalProperty.getValue(), saveInSpecifiedOrderProperty.getValue(), primary, secondary, tertiary);
+ SortCriterion primary = new SortCriterion(savePriSortSelectedValueProperty.get(), savePriDescPropertySelected.getValue());
+ SortCriterion secondary = new SortCriterion(saveSecSortSelectedValueProperty.get(), saveSecDescPropertySelected.getValue());
+ SortCriterion tertiary = new SortCriterion(saveTerSortSelectedValueProperty.get(), saveTerDescPropertySelected.getValue());
- return saveOrderConfig;
+ return new SaveOrderConfig(saveInOriginalProperty.getValue(), saveInSpecifiedOrderProperty.getValue(), primary, secondary, tertiary);
}
public void setSaveOrderConfig(SaveOrderConfig saveOrderConfig) {
@@ -95,10 +88,6 @@ public void setSaveOrderConfig(SaveOrderConfig saveOrderConfig) {
}
- private String getSelectedItemAsLowerCaseTrim(StringProperty string) {
- return string.getValue().toLowerCase(Locale.ROOT).trim();
- }
-
public BooleanProperty savePriDescPropertySelected() {
return savePriDescPropertySelected;
}
@@ -111,15 +100,15 @@ public BooleanProperty saveTerDescPropertySelected() {
return saveTerDescPropertySelected;
}
- public StringProperty savePriSortSelectedValueProperty() {
+ public ObjectProperty savePriSortSelectedValueProperty() {
return savePriSortSelectedValueProperty;
}
- public StringProperty saveSecSortSelectedValueProperty() {
+ public ObjectProperty saveSecSortSelectedValueProperty() {
return saveSecSortSelectedValueProperty;
}
- public StringProperty saveTerSortSelectedValueProperty() {
+ public ObjectProperty saveTerSortSelectedValueProperty() {
return saveTerSortSelectedValueProperty;
}
diff --git a/src/main/java/org/jabref/gui/StateManager.java b/src/main/java/org/jabref/gui/StateManager.java
index 630d5511eb9..f9a0076d70f 100644
--- a/src/main/java/org/jabref/gui/StateManager.java
+++ b/src/main/java/org/jabref/gui/StateManager.java
@@ -6,6 +6,7 @@
import java.util.stream.Collectors;
import javafx.beans.binding.Bindings;
+import javafx.beans.property.IntegerProperty;
import javafx.beans.property.ReadOnlyListProperty;
import javafx.beans.property.ReadOnlyListWrapper;
import javafx.collections.FXCollections;
@@ -23,9 +24,8 @@
* This class manages the GUI-state of JabRef, including:
* - currently selected database
* - currently selected group
- * Coming soon:
- * - open databases
* - active search
+ * - active number of search results
*/
public class StateManager {
@@ -34,6 +34,7 @@ public class StateManager {
private final ObservableList selectedEntries = FXCollections.observableArrayList();
private final ObservableMap> selectedGroups = FXCollections.observableHashMap();
private final OptionalObjectProperty activeSearchQuery = OptionalObjectProperty.empty();
+ private final ObservableMap searchResultMap = FXCollections.observableHashMap();
public StateManager() {
activeGroups.bind(Bindings.valueAt(selectedGroups, activeDatabase.orElse(null)));
@@ -47,6 +48,14 @@ public OptionalObjectProperty activeSearchQueryProperty() {
return activeSearchQuery;
}
+ public void setActiveSearchResultSize(BibDatabaseContext database, IntegerProperty resultSize) {
+ searchResultMap.put(database, resultSize);
+ }
+
+ public IntegerProperty getSearchResultSize() {
+ return searchResultMap.get(activeDatabase.getValue().orElse(new BibDatabaseContext()));
+ }
+
public ReadOnlyListProperty activeGroupProperty() {
return activeGroups.getReadOnlyProperty();
}
@@ -79,7 +88,7 @@ public Optional getActiveDatabase() {
public List getEntriesInCurrentDatabase() {
return OptionalUtil.flatMap(activeDatabase.get(), BibDatabaseContext::getEntries)
- .collect(Collectors.toList());
+ .collect(Collectors.toList());
}
public void clearSearchQuery() {
diff --git a/src/main/java/org/jabref/gui/actions/ActionFactory.java b/src/main/java/org/jabref/gui/actions/ActionFactory.java
index 07a8ddb3f2f..60625d13a1a 100644
--- a/src/main/java/org/jabref/gui/actions/ActionFactory.java
+++ b/src/main/java/org/jabref/gui/actions/ActionFactory.java
@@ -4,7 +4,6 @@
import java.lang.reflect.Method;
import java.util.Objects;
-import javafx.scene.Node;
import javafx.scene.control.Button;
import javafx.scene.control.ButtonBase;
import javafx.scene.control.CheckMenuItem;
@@ -148,13 +147,9 @@ public ButtonBase configureIconButton(Action action, Command command, ButtonBase
button.getStyleClass().add("icon-button");
// For some reason the graphic is not set correctly, so let's fix this
+ // ToDO: Find a way to reuse JabRefIconView
button.graphicProperty().unbind();
- action.getIcon().ifPresent(icon -> {
- // ToDO: Find a way to reuse JabRefIconView
- Node graphicNode = icon.getGraphicNode();
- graphicNode.setStyle(String.format("-fx-font-family: %s; -fx-font-size: %s;", icon.fontFamily(), "1em"));
- button.setGraphic(graphicNode);
- });
+ action.getIcon().ifPresent(icon -> button.setGraphic(icon.getGraphicNode()));
return button;
}
diff --git a/src/main/java/org/jabref/gui/actions/Actions.java b/src/main/java/org/jabref/gui/actions/Actions.java
index 5348e3394ae..b113f289632 100644
--- a/src/main/java/org/jabref/gui/actions/Actions.java
+++ b/src/main/java/org/jabref/gui/actions/Actions.java
@@ -49,7 +49,6 @@ public enum Actions {
SELECT_ALL,
SEND_AS_EMAIL,
TOGGLE_GROUPS,
- TOGGLE_PREVIEW,
UNABBREVIATE,
UNDO,
WRITE_XMP,
diff --git a/src/main/java/org/jabref/gui/actions/StandardActions.java b/src/main/java/org/jabref/gui/actions/StandardActions.java
index eb4c6508955..6485c626d0e 100644
--- a/src/main/java/org/jabref/gui/actions/StandardActions.java
+++ b/src/main/java/org/jabref/gui/actions/StandardActions.java
@@ -85,6 +85,7 @@ public enum StandardActions implements Action {
TOOGLE_OO(Localization.lang("OpenOffice/LibreOffice"), IconTheme.JabRefIcons.FILE_OPENOFFICE, KeyBinding.OPEN_OPEN_OFFICE_LIBRE_OFFICE_CONNECTION),
TOGGLE_WEB_SEARCH(Localization.lang("Web search"), Localization.lang("Toggle web search interface"), IconTheme.JabRefIcons.WWW, KeyBinding.WEB_SEARCH),
+ PARSE_TEX(Localization.lang("Search for Citations in LaTeX Files"), IconTheme.JabRefIcons.LATEX_CITATIONS),
NEW_SUB_LIBRARY_FROM_AUX(Localization.lang("New sublibrary based on AUX file") + "...", Localization.lang("New BibTeX sublibrary") + Localization.lang("This feature generates a new library based on which entries are needed in an existing LaTeX document."), IconTheme.JabRefIcons.NEW),
WRITE_XMP(Localization.lang("Write XMP-metadata to PDFs"), Localization.lang("Will write XMP-metadata to the PDFs linked from selected entries."), KeyBinding.WRITE_XMP),
OPEN_FOLDER(Localization.lang("Open folder"), Localization.lang("Open folder"), KeyBinding.OPEN_FOLDER),
@@ -112,13 +113,12 @@ public enum StandardActions implements Action {
EDIT_ENTRY(Localization.lang("Open entry editor"), IconTheme.JabRefIcons.EDIT_ENTRY, KeyBinding.EDIT_ENTRY),
SHOW_PDF_VIEWER(Localization.lang("Open document viewer"), IconTheme.JabRefIcons.PDF_FILE),
- TOGGLE_PREVIEW(Localization.lang("Entry preview"), IconTheme.JabRefIcons.TOGGLE_ENTRY_PREVIEW, KeyBinding.TOGGLE_ENTRY_PREVIEW),
NEXT_PREVIEW_STYLE(Localization.lang("Next citation style"), KeyBinding.NEXT_PREVIEW_LAYOUT),
PREVIOUS_PREVIEW_STYLE(Localization.lang("Previous citation style"), KeyBinding.PREVIOUS_PREVIEW_LAYOUT),
SELECT_ALL(Localization.lang("Select all"), KeyBinding.SELECT_ALL),
NEW_ENTRY(Localization.lang("New entry"), IconTheme.JabRefIcons.ADD_ENTRY, KeyBinding.NEW_ENTRY),
- NEW_ARTICLE(Localization.lang("New article"), IconTheme.JabRefIcons.ADD_ENTRY),
+ NEW_ARTICLE(Localization.lang("New article"), IconTheme.JabRefIcons.ADD_ARTICLE),
NEW_ENTRY_FROM_PLAINTEX(Localization.lang("New entry from plain text"), KeyBinding.NEW_FROM_PLAIN_TEXT),
LIBRARY_PROPERTIES(Localization.lang("Library properties")),
EDIT_PREAMBLE(Localization.lang("Edit preamble")),
diff --git a/src/main/java/org/jabref/gui/autocompleter/AutoCompletePreferences.java b/src/main/java/org/jabref/gui/autocompleter/AutoCompletePreferences.java
index 1a54be767f1..bd2088e6a3c 100644
--- a/src/main/java/org/jabref/gui/autocompleter/AutoCompletePreferences.java
+++ b/src/main/java/org/jabref/gui/autocompleter/AutoCompletePreferences.java
@@ -1,22 +1,21 @@
package org.jabref.gui.autocompleter;
-import java.util.Arrays;
-import java.util.List;
-import java.util.stream.Collectors;
+import java.util.Set;
import org.jabref.logic.journals.JournalAbbreviationPreferences;
+import org.jabref.model.entry.field.Field;
+import org.jabref.model.entry.field.FieldFactory;
public class AutoCompletePreferences {
- private static final String DELIMITER = ";";
private boolean shouldAutoComplete;
private AutoCompleteFirstNameMode firstNameMode;
private boolean onlyCompleteLastFirst;
private boolean onlyCompleteFirstLast;
- private List completeFields;
+ private Set completeFields;
private final JournalAbbreviationPreferences journalAbbreviationPreferences;
- public AutoCompletePreferences(boolean shouldAutoComplete, AutoCompleteFirstNameMode firstNameMode, boolean onlyCompleteLastFirst, boolean onlyCompleteFirstLast, List completeFields, JournalAbbreviationPreferences journalAbbreviationPreferences) {
+ public AutoCompletePreferences(boolean shouldAutoComplete, AutoCompleteFirstNameMode firstNameMode, boolean onlyCompleteLastFirst, boolean onlyCompleteFirstLast, Set completeFields, JournalAbbreviationPreferences journalAbbreviationPreferences) {
this.shouldAutoComplete = shouldAutoComplete;
this.firstNameMode = firstNameMode;
this.onlyCompleteLastFirst = onlyCompleteLastFirst;
@@ -64,20 +63,20 @@ public void setOnlyCompleteFirstLast(boolean onlyCompleteFirstLast) {
* Returns the list of fields for which autocomplete is enabled
* @return List of field names
*/
- public List getCompleteFields() {
+ public Set getCompleteFields() {
return completeFields;
}
- public void setCompleteFields(List completeFields) {
+ public void setCompleteFields(Set completeFields) {
this.completeFields = completeFields;
}
public void setCompleteNames(String input) {
- setCompleteFields(Arrays.asList(input.split(DELIMITER)));
+ setCompleteFields(FieldFactory.parseFieldList(input));
}
public String getCompleteNamesAsString() {
- return completeFields.stream().collect(Collectors.joining(DELIMITER));
+ return FieldFactory.serializeFieldsList(completeFields);
}
public JournalAbbreviationPreferences getJournalAbbreviationPreferences() {
diff --git a/src/main/java/org/jabref/gui/autocompleter/BibEntrySuggestionProvider.java b/src/main/java/org/jabref/gui/autocompleter/BibEntrySuggestionProvider.java
index db1e4546b6b..3a5ecbffae4 100644
--- a/src/main/java/org/jabref/gui/autocompleter/BibEntrySuggestionProvider.java
+++ b/src/main/java/org/jabref/gui/autocompleter/BibEntrySuggestionProvider.java
@@ -4,6 +4,7 @@
import org.jabref.logic.bibtex.comparator.EntryComparator;
import org.jabref.model.entry.BibEntry;
+import org.jabref.model.entry.field.InternalField;
import org.controlsfx.control.textfield.AutoCompletionBinding;
@@ -23,7 +24,7 @@ public void indexEntry(BibEntry entry) {
@Override
protected Comparator getComparator() {
- return new EntryComparator(false, true, BibEntry.KEY_FIELD);
+ return new EntryComparator(false, true, InternalField.KEY_FIELD);
}
@Override
diff --git a/src/main/java/org/jabref/gui/autocompleter/FieldValueSuggestionProvider.java b/src/main/java/org/jabref/gui/autocompleter/FieldValueSuggestionProvider.java
index 871723b2cd7..87048951ec4 100644
--- a/src/main/java/org/jabref/gui/autocompleter/FieldValueSuggestionProvider.java
+++ b/src/main/java/org/jabref/gui/autocompleter/FieldValueSuggestionProvider.java
@@ -3,16 +3,17 @@
import java.util.Objects;
import org.jabref.model.entry.BibEntry;
+import org.jabref.model.entry.field.Field;
/**
* Stores the full content of one field.
*/
class FieldValueSuggestionProvider extends StringSuggestionProvider implements AutoCompleteSuggestionProvider {
- private final String fieldName;
+ private final Field field;
- FieldValueSuggestionProvider(String fieldName) {
- this.fieldName = Objects.requireNonNull(fieldName);
+ FieldValueSuggestionProvider(Field field) {
+ this.field = Objects.requireNonNull(field);
}
@Override
@@ -21,6 +22,6 @@ public void indexEntry(BibEntry entry) {
return;
}
- entry.getField(fieldName).ifPresent(fieldValue -> addPossibleSuggestions(fieldValue.trim()));
+ entry.getField(field).ifPresent(fieldValue -> addPossibleSuggestions(fieldValue.trim()));
}
}
diff --git a/src/main/java/org/jabref/gui/autocompleter/JournalsSuggestionProvider.java b/src/main/java/org/jabref/gui/autocompleter/JournalsSuggestionProvider.java
index f0749e3c7c7..5e8b5c95f4d 100644
--- a/src/main/java/org/jabref/gui/autocompleter/JournalsSuggestionProvider.java
+++ b/src/main/java/org/jabref/gui/autocompleter/JournalsSuggestionProvider.java
@@ -6,13 +6,13 @@
import org.jabref.logic.journals.Abbreviation;
import org.jabref.logic.journals.JournalAbbreviationLoader;
import org.jabref.logic.journals.JournalAbbreviationPreferences;
+import org.jabref.model.entry.field.Field;
public class JournalsSuggestionProvider extends FieldValueSuggestionProvider {
-
- JournalsSuggestionProvider(String fieldName, AutoCompletePreferences preferences,
+ JournalsSuggestionProvider(Field field, AutoCompletePreferences preferences,
JournalAbbreviationLoader abbreviationLoader) {
- super(fieldName);
+ super(field);
JournalAbbreviationPreferences journalAbbreviationPreferences = preferences.getJournalAbbreviationPreferences();
List journals = abbreviationLoader.getRepository(journalAbbreviationPreferences)
diff --git a/src/main/java/org/jabref/gui/autocompleter/PersonNameSuggestionProvider.java b/src/main/java/org/jabref/gui/autocompleter/PersonNameSuggestionProvider.java
index 8182be6a33c..db84646648d 100644
--- a/src/main/java/org/jabref/gui/autocompleter/PersonNameSuggestionProvider.java
+++ b/src/main/java/org/jabref/gui/autocompleter/PersonNameSuggestionProvider.java
@@ -1,13 +1,14 @@
package org.jabref.gui.autocompleter;
+import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
-import java.util.List;
import java.util.Objects;
import org.jabref.model.entry.Author;
import org.jabref.model.entry.AuthorList;
import org.jabref.model.entry.BibEntry;
+import org.jabref.model.entry.field.Field;
import org.controlsfx.control.textfield.AutoCompletionBinding;
@@ -16,17 +17,17 @@
*/
public class PersonNameSuggestionProvider extends SuggestionProvider implements AutoCompleteSuggestionProvider {
- private final List fieldNames;
+ private final Collection fields;
private final Comparator authorComparator = Comparator.comparing(Author::getNameForAlphabetization);
- PersonNameSuggestionProvider(String fieldName) {
+ PersonNameSuggestionProvider(Field fieldName) {
this(Collections.singletonList(Objects.requireNonNull(fieldName)));
}
- public PersonNameSuggestionProvider(List fieldNames) {
+ public PersonNameSuggestionProvider(Collection fields) {
super();
- this.fieldNames = Objects.requireNonNull(fieldNames);
+ this.fields = Objects.requireNonNull(fields);
}
@@ -36,8 +37,8 @@ public void indexEntry(BibEntry entry) {
return;
}
- for (String fieldName : fieldNames) {
- entry.getField(fieldName).ifPresent(fieldValue -> {
+ for (Field field : fields) {
+ entry.getField(field).ifPresent(fieldValue -> {
AuthorList authorList = AuthorList.parse(fieldValue);
for (Author author : authorList.getAuthors()) {
addPossibleSuggestions(author);
diff --git a/src/main/java/org/jabref/gui/autocompleter/SuggestionProviders.java b/src/main/java/org/jabref/gui/autocompleter/SuggestionProviders.java
index a4bf835a19b..4f8f76a405c 100644
--- a/src/main/java/org/jabref/gui/autocompleter/SuggestionProviders.java
+++ b/src/main/java/org/jabref/gui/autocompleter/SuggestionProviders.java
@@ -1,23 +1,23 @@
package org.jabref.gui.autocompleter;
import java.util.HashMap;
-import java.util.List;
import java.util.Map;
import java.util.Objects;
+import java.util.Set;
import org.jabref.logic.journals.JournalAbbreviationLoader;
import org.jabref.model.database.BibDatabase;
import org.jabref.model.entry.BibEntry;
-import org.jabref.model.entry.FieldName;
-import org.jabref.model.entry.FieldProperty;
-import org.jabref.model.entry.InternalBibtexFields;
+import org.jabref.model.entry.field.Field;
+import org.jabref.model.entry.field.FieldProperty;
+import org.jabref.model.entry.field.StandardField;
public class SuggestionProviders {
/**
* key: field name
*/
- private final Map> providers = new HashMap<>();
+ private final Map> providers = new HashMap<>();
/**
* Empty
@@ -30,15 +30,15 @@ public SuggestionProviders(AutoCompletePreferences preferences,
JournalAbbreviationLoader abbreviationLoader) {
Objects.requireNonNull(preferences);
- List completeFields = preferences.getCompleteFields();
- for (String field : completeFields) {
+ Set completeFields = preferences.getCompleteFields();
+ for (Field field : completeFields) {
AutoCompleteSuggestionProvider> autoCompleter = initalizeSuggestionProvider(field, preferences, abbreviationLoader);
providers.put(field, autoCompleter);
}
}
- public AutoCompleteSuggestionProvider> getForField(String fieldName) {
- return providers.get(fieldName);
+ public AutoCompleteSuggestionProvider> getForField(Field field) {
+ return providers.get(field);
}
public void indexDatabase(BibDatabase database) {
@@ -56,16 +56,17 @@ public void indexEntry(BibEntry bibEntry) {
}
}
- private AutoCompleteSuggestionProvider> initalizeSuggestionProvider(String fieldName, AutoCompletePreferences preferences, JournalAbbreviationLoader abbreviationLoader) {
- if (InternalBibtexFields.getFieldProperties(fieldName).contains(FieldProperty.PERSON_NAMES)) {
- return new PersonNameSuggestionProvider(fieldName);
- } else if (InternalBibtexFields.getFieldProperties(fieldName).contains(FieldProperty.SINGLE_ENTRY_LINK)) {
+ private AutoCompleteSuggestionProvider> initalizeSuggestionProvider(Field field, AutoCompletePreferences preferences, JournalAbbreviationLoader abbreviationLoader) {
+ Set fieldProperties = field.getProperties();
+ if (fieldProperties.contains(FieldProperty.PERSON_NAMES)) {
+ return new PersonNameSuggestionProvider(field);
+ } else if (fieldProperties.contains(FieldProperty.SINGLE_ENTRY_LINK)) {
return new BibEntrySuggestionProvider();
- } else if (InternalBibtexFields.getFieldProperties(fieldName).contains(FieldProperty.JOURNAL_NAME)
- || FieldName.PUBLISHER.equals(fieldName)) {
- return new JournalsSuggestionProvider(fieldName, preferences, abbreviationLoader);
+ } else if (fieldProperties.contains(FieldProperty.JOURNAL_NAME)
+ || StandardField.PUBLISHER.equals(field)) {
+ return new JournalsSuggestionProvider(field, preferences, abbreviationLoader);
} else {
- return new WordSuggestionProvider(fieldName);
+ return new WordSuggestionProvider(field);
}
}
}
diff --git a/src/main/java/org/jabref/gui/autocompleter/WordSuggestionProvider.java b/src/main/java/org/jabref/gui/autocompleter/WordSuggestionProvider.java
index 0f9c2ec56fa..a591d684a3b 100644
--- a/src/main/java/org/jabref/gui/autocompleter/WordSuggestionProvider.java
+++ b/src/main/java/org/jabref/gui/autocompleter/WordSuggestionProvider.java
@@ -4,6 +4,7 @@
import java.util.StringTokenizer;
import org.jabref.model.entry.BibEntry;
+import org.jabref.model.entry.field.Field;
/**
* Stores all words in the given field which are separated by SEPARATING_CHARS.
@@ -12,10 +13,10 @@ public class WordSuggestionProvider extends StringSuggestionProvider implements
private static final String SEPARATING_CHARS = ";,\n ";
- private final String fieldName;
+ private final Field field;
- public WordSuggestionProvider(String fieldName) {
- this.fieldName = Objects.requireNonNull(fieldName);
+ public WordSuggestionProvider(Field field) {
+ this.field = Objects.requireNonNull(field);
}
@Override
@@ -24,7 +25,7 @@ public void indexEntry(BibEntry entry) {
return;
}
- entry.getField(fieldName).ifPresent(fieldValue -> {
+ entry.getField(field).ifPresent(fieldValue -> {
StringTokenizer tok = new StringTokenizer(fieldValue, SEPARATING_CHARS);
while (tok.hasMoreTokens()) {
addPossibleSuggestions(tok.nextToken());
diff --git a/src/main/java/org/jabref/gui/bibtexkeypattern/BibtexKeyPatternPanel.java b/src/main/java/org/jabref/gui/bibtexkeypattern/BibtexKeyPatternPanel.java
index e1e81d2bc03..34c1fd863b6 100644
--- a/src/main/java/org/jabref/gui/bibtexkeypattern/BibtexKeyPatternPanel.java
+++ b/src/main/java/org/jabref/gui/bibtexkeypattern/BibtexKeyPatternPanel.java
@@ -1,7 +1,6 @@
package org.jabref.gui.bibtexkeypattern;
import java.util.HashMap;
-import java.util.Locale;
import java.util.Map;
import javafx.scene.Node;
@@ -18,12 +17,12 @@
import org.jabref.gui.help.HelpAction;
import org.jabref.logic.help.HelpFile;
import org.jabref.logic.l10n.Localization;
-import org.jabref.model.EntryTypes;
import org.jabref.model.bibtexkeypattern.AbstractBibtexKeyPattern;
import org.jabref.model.bibtexkeypattern.DatabaseBibtexKeyPattern;
import org.jabref.model.bibtexkeypattern.GlobalBibtexKeyPattern;
import org.jabref.model.database.BibDatabaseMode;
-import org.jabref.model.entry.EntryType;
+import org.jabref.model.entry.BibEntryType;
+import org.jabref.model.entry.types.EntryType;
import org.jabref.preferences.JabRefPreferences;
public class BibtexKeyPatternPanel extends Pane {
@@ -32,7 +31,7 @@ public class BibtexKeyPatternPanel extends Pane {
protected final TextField defaultPat = new TextField();
// one field for each type
- private final Map textFields = new HashMap<>();
+ private final Map textFields = new HashMap<>();
private final BasePanel panel;
private final GridPane gridPane = new GridPane();
@@ -43,6 +42,14 @@ public BibtexKeyPatternPanel(BasePanel panel) {
buildGUI();
}
+ private static void setValue(TextField tf, EntryType fieldName, AbstractBibtexKeyPattern keyPattern) {
+ if (keyPattern.isDefaultValue(fieldName)) {
+ tf.setText("");
+ } else {
+ tf.setText(keyPattern.getValue(fieldName).get(0));
+ }
+ }
+
private void buildGUI() {
BibDatabaseMode mode;
// check mode of currently used DB
@@ -74,8 +81,8 @@ private void buildGUI() {
gridPane.add(button, 3, rowIndex);
columnIndex = 1;
- for (EntryType type : EntryTypes.getAllValues(mode)) {
- Label label1 = new Label(type.getName());
+ for (BibEntryType type : Globals.entryTypesManager.getAllTypes(mode)) {
+ Label label1 = new Label(type.getType().getDisplayName());
TextField textField = new TextField();
Button button1 = new Button("Default");
button1.setOnAction(e1 -> textField.setText((String) Globals.prefs.defaults.get(JabRefPreferences.DEFAULT_BIBTEX_KEY_PATTERN)));
@@ -84,7 +91,7 @@ private void buildGUI() {
gridPane.add(textField, 2 + (columnIndex * 3), rowIndex);
gridPane.add(button1, 3 + (columnIndex * 3), rowIndex);
- textFields.put(type.getName().toLowerCase(Locale.ROOT), textField);
+ textFields.put(type.getType(), textField);
if (columnIndex == (columnsNumber - 1)) {
columnIndex = 0;
@@ -111,12 +118,24 @@ private void buildGUI() {
gridPane.add(btnDefaultAll1, 2, rowIndex);
}
+ protected GlobalBibtexKeyPattern getKeyPatternAsGlobalBibtexKeyPattern() {
+ GlobalBibtexKeyPattern res = GlobalBibtexKeyPattern.fromPattern(Globals.prefs.get(JabRefPreferences.DEFAULT_BIBTEX_KEY_PATTERN));
+ fillPatternUsingPanelData(res);
+ return res;
+ }
+
+ public DatabaseBibtexKeyPattern getKeyPatternAsDatabaseBibtexKeyPattern() {
+ DatabaseBibtexKeyPattern res = new DatabaseBibtexKeyPattern(Globals.prefs.getKeyPattern());
+ fillPatternUsingPanelData(res);
+ return res;
+ }
+
/**
* fill the given LabelPattern by values generated from the text fields
*/
private void fillPatternUsingPanelData(AbstractBibtexKeyPattern keypatterns) {
// each entry type
- for (Map.Entry entry : textFields.entrySet()) {
+ for (Map.Entry entry : textFields.entrySet()) {
String text = entry.getValue().getText();
if (!text.trim().isEmpty()) {
keypatterns.addBibtexKeyPattern(entry.getKey(), text);
@@ -130,25 +149,13 @@ private void fillPatternUsingPanelData(AbstractBibtexKeyPattern keypatterns) {
}
}
- protected GlobalBibtexKeyPattern getKeyPatternAsGlobalBibtexKeyPattern() {
- GlobalBibtexKeyPattern res = GlobalBibtexKeyPattern.fromPattern(Globals.prefs.get(JabRefPreferences.DEFAULT_BIBTEX_KEY_PATTERN));
- fillPatternUsingPanelData(res);
- return res;
- }
-
- public DatabaseBibtexKeyPattern getKeyPatternAsDatabaseBibtexKeyPattern() {
- DatabaseBibtexKeyPattern res = new DatabaseBibtexKeyPattern(Globals.prefs.getKeyPattern());
- fillPatternUsingPanelData(res);
- return res;
- }
-
/**
* Fills the current values to the text fields
*
* @param keyPattern the BibtexKeyPattern to use as initial value
*/
public void setValues(AbstractBibtexKeyPattern keyPattern) {
- for (Map.Entry entry : textFields.entrySet()) {
+ for (Map.Entry entry : textFields.entrySet()) {
setValue(entry.getValue(), entry.getKey(), keyPattern);
}
@@ -159,14 +166,6 @@ public void setValues(AbstractBibtexKeyPattern keyPattern) {
}
}
- private static void setValue(TextField tf, String fieldName, AbstractBibtexKeyPattern keyPattern) {
- if (keyPattern.isDefaultValue(fieldName)) {
- tf.setText("");
- } else {
- tf.setText(keyPattern.getValue(fieldName).get(0));
- }
- }
-
public Node getPanel() {
return gridPane;
}
diff --git a/src/main/java/org/jabref/gui/cleanup/CleanupPresetPanel.java b/src/main/java/org/jabref/gui/cleanup/CleanupPresetPanel.java
index 9149ef4a5f0..719c11bc267 100644
--- a/src/main/java/org/jabref/gui/cleanup/CleanupPresetPanel.java
+++ b/src/main/java/org/jabref/gui/cleanup/CleanupPresetPanel.java
@@ -15,7 +15,7 @@
import org.jabref.logic.cleanup.Cleanups;
import org.jabref.logic.l10n.Localization;
import org.jabref.model.database.BibDatabaseContext;
-import org.jabref.model.entry.FieldName;
+import org.jabref.model.entry.field.StandardField;
import org.jabref.model.metadata.FilePreferences;
import com.airhacks.afterburner.views.ViewLoader;
@@ -62,7 +62,7 @@ private void init(CleanupPreset cleanupPreset, FilePreferences filePreferences)
cleanUpRenamePDFonlyRelativePaths.disableProperty().bind(cleanUpRenamePDF.selectedProperty().not());
- cleanUpUpgradeExternalLinks.setText(Localization.lang("Upgrade external PDF/PS links to use the '%0' field.", FieldName.FILE));
+ cleanUpUpgradeExternalLinks.setText(Localization.lang("Upgrade external PDF/PS links to use the '%0' field.", StandardField.FILE.getDisplayName()));
cleanUpFormatters = new FieldFormatterCleanupsPanel(Localization.lang("Run field formatter:"), Cleanups.DEFAULT_SAVE_ACTIONS);
formatterContainer.getChildren().setAll(cleanUpFormatters);
diff --git a/src/main/java/org/jabref/gui/cleanup/FieldFormatterCleanupsPanel.java b/src/main/java/org/jabref/gui/cleanup/FieldFormatterCleanupsPanel.java
index ab544366e0d..12cd47ccf92 100644
--- a/src/main/java/org/jabref/gui/cleanup/FieldFormatterCleanupsPanel.java
+++ b/src/main/java/org/jabref/gui/cleanup/FieldFormatterCleanupsPanel.java
@@ -1,9 +1,9 @@
package org.jabref.gui.cleanup;
-import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
+import java.util.Set;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
@@ -29,8 +29,9 @@
import org.jabref.model.cleanup.FieldFormatterCleanups;
import org.jabref.model.cleanup.Formatter;
import org.jabref.model.database.BibDatabaseContext;
-import org.jabref.model.entry.BibEntry;
-import org.jabref.model.entry.InternalBibtexFields;
+import org.jabref.model.entry.field.Field;
+import org.jabref.model.entry.field.FieldFactory;
+import org.jabref.model.entry.field.InternalField;
import org.jabref.model.metadata.MetaData;
import org.fxmisc.easybind.EasyBind;
@@ -42,7 +43,7 @@ public class FieldFormatterCleanupsPanel extends GridPane {
private FieldFormatterCleanups fieldFormatterCleanups;
private ListView actionsList;
private ComboBox formattersCombobox;
- private ComboBox selectFieldCombobox;
+ private ComboBox selectFieldCombobox;
private Button addButton;
private Label descriptionAreaText;
private Button removeButton;
@@ -104,7 +105,7 @@ private void buildLayout() {
actionsList.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);
new ViewModelListCellFactory()
.withText(action -> action.getField() + ": " + action.getFormatter().getName())
- .withTooltip(action -> action.getFormatter().getDescription())
+ .withStringTooltip(action -> action.getFormatter().getDescription())
.install(actionsList);
add(actionsList, 1, 1, 3, 1);
@@ -161,17 +162,16 @@ private void updateDescription() {
*/
private GridPane getSelectorPanel() {
GridPane builder = new GridPane();
- List fieldNames = InternalBibtexFields.getAllPublicAndInternalFieldNames();
- fieldNames.add(BibEntry.KEY_FIELD);
- Collections.sort(fieldNames);
- selectFieldCombobox = new ComboBox<>(FXCollections.observableArrayList(fieldNames));
+ Set fields = FieldFactory.getCommonFields();
+ fields.add(InternalField.KEY_FIELD);
+ selectFieldCombobox = new ComboBox<>(FXCollections.observableArrayList(fields));
selectFieldCombobox.setEditable(true);
builder.add(selectFieldCombobox, 1, 1);
formattersCombobox = new ComboBox<>(FXCollections.observableArrayList(availableFormatters));
new ViewModelListCellFactory()
.withText(Formatter::getName)
- .withTooltip(Formatter::getDescription)
+ .withStringTooltip(Formatter::getDescription)
.install(formattersCombobox);
EasyBind.subscribe(formattersCombobox.valueProperty(), e -> updateDescription());
builder.add(formattersCombobox, 3, 1);
@@ -217,8 +217,8 @@ public boolean isDefaultSaveActions() {
private FieldFormatterCleanup getFieldFormatterCleanup() {
Formatter selectedFormatter = formattersCombobox.getValue();
- String fieldKey = selectFieldCombobox.getValue();
- return new FieldFormatterCleanup(fieldKey, selectedFormatter);
+ Field field = selectFieldCombobox.getValue();
+ return new FieldFormatterCleanup(field, selectedFormatter);
}
class EnablementStatusListener implements ChangeListener {
diff --git a/src/main/java/org/jabref/gui/collab/EntryAddChangeViewModel.java b/src/main/java/org/jabref/gui/collab/EntryAddChangeViewModel.java
index 4fa50ccca9c..45832985b5b 100644
--- a/src/main/java/org/jabref/gui/collab/EntryAddChangeViewModel.java
+++ b/src/main/java/org/jabref/gui/collab/EntryAddChangeViewModel.java
@@ -2,6 +2,7 @@
import javafx.scene.Node;
+import org.jabref.Globals;
import org.jabref.JabRefGUI;
import org.jabref.gui.preview.PreviewViewer;
import org.jabref.gui.undo.NamedCompound;
@@ -27,7 +28,7 @@ public void makeChange(BibDatabaseContext database, NamedCompound undoEdit) {
@Override
public Node description() {
- PreviewViewer previewViewer = new PreviewViewer(new BibDatabaseContext(), JabRefGUI.getMainFrame().getDialogService());
+ PreviewViewer previewViewer = new PreviewViewer(new BibDatabaseContext(), JabRefGUI.getMainFrame().getDialogService(), Globals.stateManager);
previewViewer.setEntry(diskEntry);
return previewViewer;
}
diff --git a/src/main/java/org/jabref/gui/collab/EntryChangeViewModel.java b/src/main/java/org/jabref/gui/collab/EntryChangeViewModel.java
index fcad087163d..68b6452a1c2 100644
--- a/src/main/java/org/jabref/gui/collab/EntryChangeViewModel.java
+++ b/src/main/java/org/jabref/gui/collab/EntryChangeViewModel.java
@@ -1,6 +1,7 @@
package org.jabref.gui.collab;
import java.util.ArrayList;
+import java.util.Comparator;
import java.util.List;
import java.util.Optional;
import java.util.Set;
@@ -16,6 +17,7 @@
import org.jabref.logic.l10n.Localization;
import org.jabref.model.database.BibDatabaseContext;
import org.jabref.model.entry.BibEntry;
+import org.jabref.model.entry.field.Field;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -43,12 +45,12 @@ public EntryChangeViewModel(BibEntry memEntry, BibEntry tmpEntry, BibEntry diskE
LOGGER.debug("Modified entry: " + memEntry.getCiteKeyOptional().orElse("")
+ "\n Modified locally: " + isModifiedLocally + " Modifications agree: " + modificationsAgree);
- Set allFields = new TreeSet<>();
- allFields.addAll(memEntry.getFieldNames());
- allFields.addAll(tmpEntry.getFieldNames());
- allFields.addAll(diskEntry.getFieldNames());
+ Set allFields = new TreeSet<>(Comparator.comparing(Field::getName));
+ allFields.addAll(memEntry.getFields());
+ allFields.addAll(tmpEntry.getFields());
+ allFields.addAll(diskEntry.getFields());
- for (String field : allFields) {
+ for (Field field : allFields) {
Optional mem = memEntry.getField(field);
Optional tmp = tmpEntry.getField(field);
Optional disk = diskEntry.getField(field);
@@ -94,13 +96,13 @@ static class FieldChangeViewModel extends DatabaseChangeViewModel {
private final BibEntry entry;
private final BibEntry tmpEntry;
- private final String field;
+ private final Field field;
private final String inMem;
private final String onTmp;
private final String onDisk;
- public FieldChangeViewModel(String field, BibEntry memEntry, BibEntry tmpEntry, String inMem, String onTmp, String onDisk) {
- super(field);
+ public FieldChangeViewModel(Field field, BibEntry memEntry, BibEntry tmpEntry, String inMem, String onTmp, String onDisk) {
+ super(field.getName());
entry = memEntry;
this.tmpEntry = tmpEntry;
this.field = field;
diff --git a/src/main/java/org/jabref/gui/collab/EntryDeleteChangeViewModel.java b/src/main/java/org/jabref/gui/collab/EntryDeleteChangeViewModel.java
index f8e2b88a02c..f07dcbe28c9 100644
--- a/src/main/java/org/jabref/gui/collab/EntryDeleteChangeViewModel.java
+++ b/src/main/java/org/jabref/gui/collab/EntryDeleteChangeViewModel.java
@@ -2,6 +2,7 @@
import javafx.scene.Node;
+import org.jabref.Globals;
import org.jabref.JabRefGUI;
import org.jabref.gui.preview.PreviewViewer;
import org.jabref.gui.undo.NamedCompound;
@@ -44,7 +45,7 @@ public void makeChange(BibDatabaseContext database, NamedCompound undoEdit) {
@Override
public Node description() {
- PreviewViewer previewViewer = new PreviewViewer(new BibDatabaseContext(), JabRefGUI.getMainFrame().getDialogService());
+ PreviewViewer previewViewer = new PreviewViewer(new BibDatabaseContext(), JabRefGUI.getMainFrame().getDialogService(), Globals.stateManager);
previewViewer.setEntry(memEntry);
return previewViewer;
}
diff --git a/src/main/java/org/jabref/gui/contentselector/ContentSelectorDialog.fxml b/src/main/java/org/jabref/gui/contentselector/ContentSelectorDialog.fxml
index 091f3b3ab91..a2f89fa69af 100644
--- a/src/main/java/org/jabref/gui/contentselector/ContentSelectorDialog.fxml
+++ b/src/main/java/org/jabref/gui/contentselector/ContentSelectorDialog.fxml
@@ -16,7 +16,7 @@
-
+