diff --git a/config/checkstyle/checkstyle.xml b/config/checkstyle/checkstyle.xml index 0010f4128fc..046936eb127 100644 --- a/config/checkstyle/checkstyle.xml +++ b/config/checkstyle/checkstyle.xml @@ -1,7 +1,7 @@ + "http://www.checkstyle.org/dtds/configuration_1_3.dtd"> diff --git a/config/checkstyle/suppressions.xml b/config/checkstyle/suppressions.xml index 71943814250..65babae5cb6 100644 --- a/config/checkstyle/suppressions.xml +++ b/config/checkstyle/suppressions.xml @@ -2,7 +2,7 @@ + "http://www.checkstyle.org/dtds/suppressions_1_1.dtd"> diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java index 09c8fb16846..d008a5d597c 100644 --- a/src/main/java/module-info.java +++ b/src/main/java/module-info.java @@ -62,4 +62,7 @@ requires antlr.runtime; requires commons.lang3; requires xmpbox; + requires de.saxsys.mvvmfx.validation; + requires richtextfx; + requires unirest.java; } diff --git a/src/main/java/org/jabref/gui/SaveOrderConfigDisplay.fxml b/src/main/java/org/jabref/gui/SaveOrderConfigDisplay.fxml index 14c2655be95..64fac7cdc94 100644 --- a/src/main/java/org/jabref/gui/SaveOrderConfigDisplay.fxml +++ b/src/main/java/org/jabref/gui/SaveOrderConfigDisplay.fxml @@ -8,35 +8,53 @@ - - - - - - - - - - - - - - + + + - + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/java/org/jabref/gui/SaveOrderConfigDisplayView.java b/src/main/java/org/jabref/gui/SaveOrderConfigDisplayView.java index 2c4ef4c5f6f..15679bc9ac2 100644 --- a/src/main/java/org/jabref/gui/SaveOrderConfigDisplayView.java +++ b/src/main/java/org/jabref/gui/SaveOrderConfigDisplayView.java @@ -7,8 +7,10 @@ import javafx.scene.control.ComboBox; import javafx.scene.control.RadioButton; import javafx.scene.control.ToggleGroup; -import javafx.scene.layout.GridPane; +import javafx.scene.layout.VBox; +import org.jabref.gui.util.FieldsUtil; +import org.jabref.gui.util.ViewModelListCellFactory; import org.jabref.logic.l10n.Localization; import org.jabref.model.entry.field.Field; import org.jabref.model.metadata.SaveOrderConfig; @@ -16,17 +18,15 @@ import com.airhacks.afterburner.views.ViewLoader; -public class SaveOrderConfigDisplayView extends GridPane { - - private final SaveOrderConfig config; +public class SaveOrderConfigDisplayView extends VBox { @FXML private ToggleGroup saveOrderToggleGroup; - @FXML private ComboBox savePriSort; - @FXML private ComboBox saveSecSort; - @FXML private ComboBox saveTerSort; @FXML private RadioButton exportInSpecifiedOrder; @FXML private RadioButton exportInTableOrder; @FXML private RadioButton exportInOriginalOrder; + @FXML private ComboBox savePriSort; + @FXML private ComboBox saveSecSort; + @FXML private ComboBox saveTerSort; @FXML private CheckBox savePriDesc; @FXML private CheckBox saveSecDesc; @FXML private CheckBox saveTerDesc; @@ -34,9 +34,7 @@ public class SaveOrderConfigDisplayView extends GridPane { private SaveOrderConfigDisplayViewModel viewModel; - public SaveOrderConfigDisplayView(SaveOrderConfig config) { - this.config = config; - + public SaveOrderConfigDisplayView() { ViewLoader.view(this) .root(this) .load(); @@ -45,19 +43,32 @@ public SaveOrderConfigDisplayView(SaveOrderConfig config) { @FXML private void initialize() { - viewModel = new SaveOrderConfigDisplayViewModel(config, preferencesService); + viewModel = new SaveOrderConfigDisplayViewModel(preferencesService); - exportInSpecifiedOrder.selectedProperty().bindBidirectional(viewModel.saveInSpecifiedOrderProperty()); - exportInTableOrder.selectedProperty().bindBidirectional(viewModel.saveInTableOrderProperty()); exportInOriginalOrder.selectedProperty().bindBidirectional(viewModel.saveInOriginalProperty()); + exportInTableOrder.selectedProperty().bindBidirectional(viewModel.saveInTableOrderProperty()); + exportInSpecifiedOrder.selectedProperty().bindBidirectional(viewModel.saveInSpecifiedOrderProperty()); + new ViewModelListCellFactory() + .withText(FieldsUtil::getNameWithType) + .install(savePriSort); savePriSort.itemsProperty().bindBidirectional(viewModel.priSortFieldsProperty()); - saveSecSort.itemsProperty().bindBidirectional(viewModel.secSortFieldsProperty()); - saveTerSort.itemsProperty().bindBidirectional(viewModel.terSortFieldsProperty()); - savePriSort.valueProperty().bindBidirectional(viewModel.savePriSortSelectedValueProperty()); + savePriSort.setConverter(FieldsUtil.fieldStringConverter); + + new ViewModelListCellFactory() + .withText(FieldsUtil::getNameWithType) + .install(saveSecSort); + saveSecSort.itemsProperty().bindBidirectional(viewModel.secSortFieldsProperty()); saveSecSort.valueProperty().bindBidirectional(viewModel.saveSecSortSelectedValueProperty()); + saveSecSort.setConverter(FieldsUtil.fieldStringConverter); + + new ViewModelListCellFactory() + .withText(FieldsUtil::getNameWithType) + .install(saveTerSort); + saveTerSort.itemsProperty().bindBidirectional(viewModel.terSortFieldsProperty()); saveTerSort.valueProperty().bindBidirectional(viewModel.saveTerSortSelectedValueProperty()); + saveTerSort.setConverter(FieldsUtil.fieldStringConverter); savePriDesc.selectedProperty().bindBidirectional(viewModel.savePriDescPropertySelected()); saveSecDesc.selectedProperty().bindBidirectional(viewModel.saveSecDescPropertySelected()); @@ -65,6 +76,10 @@ private void initialize() { } + public void setValues(SaveOrderConfig config) { + viewModel.setSaveOrderConfig(config); + } + public void changeExportDescriptionToSave() { exportInOriginalOrder.setText(Localization.lang("Save entries in their original order")); exportInSpecifiedOrder.setText(Localization.lang("Save entries ordered as specified")); diff --git a/src/main/java/org/jabref/gui/SaveOrderConfigDisplayViewModel.java b/src/main/java/org/jabref/gui/SaveOrderConfigDisplayViewModel.java index cc06c9e8cd9..89ef04f1c25 100644 --- a/src/main/java/org/jabref/gui/SaveOrderConfigDisplayViewModel.java +++ b/src/main/java/org/jabref/gui/SaveOrderConfigDisplayViewModel.java @@ -37,15 +37,13 @@ public class SaveOrderConfigDisplayViewModel { private final PreferencesService prefs; - public SaveOrderConfigDisplayViewModel(SaveOrderConfig config, PreferencesService prefs) { + public SaveOrderConfigDisplayViewModel(PreferencesService prefs) { this.prefs = prefs; Set fieldNames = FieldFactory.getCommonFields(); priSortFieldsProperty.addAll(fieldNames); secSortFieldsProperty.addAll(fieldNames); terSortFieldsProperty.addAll(fieldNames); - - setSaveOrderConfig(config); } public ListProperty priSortFieldsProperty() { diff --git a/src/main/java/org/jabref/gui/icon/IconTheme.java b/src/main/java/org/jabref/gui/icon/IconTheme.java index 98b9a2074e8..40682452586 100644 --- a/src/main/java/org/jabref/gui/icon/IconTheme.java +++ b/src/main/java/org/jabref/gui/icon/IconTheme.java @@ -271,6 +271,10 @@ public enum JabRefIcons implements JabRefIcon { PREVIOUS_UP(MaterialDesignIcon.CHEVRON_UP), NEXT_RIGHT(MaterialDesignIcon.CHEVRON_RIGHT), NEXT_DOWN(MaterialDesignIcon.CHEVRON_DOWN), + LIST_MOVE_LEFT(MaterialDesignIcon.CHEVRON_LEFT), + LIST_MOVE_UP(MaterialDesignIcon.CHEVRON_UP), + LIST_MOVE_RIGHT(MaterialDesignIcon.CHEVRON_RIGHT), + LIST_MOVE_DOWN(MaterialDesignIcon.CHEVRON_DOWN), FIT_WIDTH(MaterialDesignIcon.ARROW_EXPAND_ALL), FIT_SINGLE_PAGE(MaterialDesignIcon.NOTE), ZOOM_OUT(MaterialDesignIcon.MAGNIFY_MINUS), diff --git a/src/main/java/org/jabref/gui/libraryproperties/LibraryPropertiesDialogView.java b/src/main/java/org/jabref/gui/libraryproperties/LibraryPropertiesDialogView.java index b4c2a0a4694..42197cbc5a0 100644 --- a/src/main/java/org/jabref/gui/libraryproperties/LibraryPropertiesDialogView.java +++ b/src/main/java/org/jabref/gui/libraryproperties/LibraryPropertiesDialogView.java @@ -79,14 +79,9 @@ private void initialize() { encoding.disableProperty().bind(viewModel.encodingDisableProperty()); protect.disableProperty().bind(viewModel.protectDisableProperty()); + saveOrderConfigDisplayView = new SaveOrderConfigDisplayView(); Optional storedSaveOrderConfig = panel.getBibDatabaseContext().getMetaData().getSaveOrderConfig(); - if (storedSaveOrderConfig.isPresent()) { - saveOrderConfigDisplayView = new SaveOrderConfigDisplayView(storedSaveOrderConfig.get()); - oldSaveOrderConfig = storedSaveOrderConfig.get(); - } else { - oldSaveOrderConfig = preferencesService.loadExportSaveOrder(); - saveOrderConfigDisplayView = new SaveOrderConfigDisplayView(preferencesService.loadExportSaveOrder()); - } + oldSaveOrderConfig = storedSaveOrderConfig.orElseGet(preferencesService::loadExportSaveOrder); saveOrderConfigDisplayView.changeExportDescriptionToSave(); fieldFormatterCleanupsPanel = new FieldFormatterCleanupsPanel(Localization.lang("Enable save actions"), @@ -103,6 +98,7 @@ private void initialize() { private void setValues() { fieldFormatterCleanupsPanel.setValues(panel.getBibDatabaseContext().getMetaData()); + saveOrderConfigDisplayView.setValues(oldSaveOrderConfig); } @FXML diff --git a/src/main/java/org/jabref/gui/preferences/AbstractPreferenceTabView.java b/src/main/java/org/jabref/gui/preferences/AbstractPreferenceTabView.java index b957082890b..cf8b4e69c4c 100644 --- a/src/main/java/org/jabref/gui/preferences/AbstractPreferenceTabView.java +++ b/src/main/java/org/jabref/gui/preferences/AbstractPreferenceTabView.java @@ -11,12 +11,12 @@ import org.jabref.gui.util.TaskExecutor; import org.jabref.preferences.JabRefPreferences; -public abstract class AbstractPreferenceTabView extends VBox implements PreferencesTab { +public abstract class AbstractPreferenceTabView extends VBox implements PreferencesTab { @Inject protected TaskExecutor taskExecutor; @Inject protected DialogService dialogService; - protected PreferenceTabViewModel viewModel; + protected T viewModel; protected JabRefPreferences preferences; diff --git a/src/main/java/org/jabref/gui/preferences/AdvancedTab.fxml b/src/main/java/org/jabref/gui/preferences/AdvancedTab.fxml index 7c9886d84fb..a98ac76d508 100644 --- a/src/main/java/org/jabref/gui/preferences/AdvancedTab.fxml +++ b/src/main/java/org/jabref/gui/preferences/AdvancedTab.fxml @@ -13,53 +13,53 @@ - -