Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Convert LibraryProperties to JavaFX #4617

Merged
merged 28 commits into from
Mar 9, 2019
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
e18d236
[WIP] Convert LibraryProperties to JavaFX
Siedlerchr Jan 26, 2019
7f1c32b
Merge remote-tracking branch 'upstream/master' into libraryproperties…
Siedlerchr Jan 27, 2019
c540ff4
fix l10n and error in fxml
Siedlerchr Jan 27, 2019
e82abdd
Convert db properties to javafx
Siedlerchr Jan 28, 2019
d246d37
fix checkstyle and l10n
Siedlerchr Jan 28, 2019
b54535f
Merge remote-tracking branch 'upstream/master' into libraryproperties…
Siedlerchr Feb 16, 2019
e9db4bf
Merge remote-tracking branch 'upstream/master' into libraryproperties…
Siedlerchr Feb 18, 2019
06ed9ec
fix package error
Siedlerchr Feb 18, 2019
49e3600
add new fxml
Siedlerchr Feb 19, 2019
872d436
Merge remote-tracking branch 'upstream/master' into libraryproperties…
Siedlerchr Feb 19, 2019
5657fed
Create properties in view Model for SaveOrderConfig
Siedlerchr Feb 21, 2019
466f40f
Merge remote-tracking branch 'upstream/master' into libraryproperties…
Siedlerchr Feb 24, 2019
159c48a
create empty dialog pane for preferences dialog to make root componen…
Siedlerchr Feb 24, 2019
20d6c05
fix checkstyle
Siedlerchr Feb 25, 2019
8db78c2
add missing controller and fix disable property
Siedlerchr Feb 27, 2019
f6564f1
Merge remote-tracking branch 'upstream/master' into libraryproperties…
Siedlerchr Mar 1, 2019
760a6c2
remove old save order config display
Siedlerchr Mar 1, 2019
28d3f56
some layout stuff
Siedlerchr Mar 1, 2019
1a05b8f
reduce sizes
Siedlerchr Mar 1, 2019
0cf3c87
add method for changing the radio button texts to save
Siedlerchr Mar 1, 2019
9e9450f
move radio button toggle group back as property
Siedlerchr Mar 2, 2019
028cbc1
store values for sort order radio box
Siedlerchr Mar 3, 2019
ad5291f
Merge remote-tracking branch 'upstream/master' into libraryproperties…
Siedlerchr Mar 8, 2019
5ce22f2
move css rule to base.css
Siedlerchr Mar 8, 2019
e214240
fix css
Siedlerchr Mar 9, 2019
c1707d9
Merge remote-tracking branch 'upstream/master' into libraryproperties…
Siedlerchr Mar 9, 2019
28d46fd
introduce second boolean for export in specified order to reflect tab…
Siedlerchr Mar 9, 2019
ab9de54
remove empty line
Siedlerchr Mar 9, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions src/main/java/org/jabref/gui/SaveOrderConfigDisplay.fxml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.layout.RowConstraints?>

<GridPane prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1">
<fx:root type="javafx.scene.layout.GridPane" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="-Infinity" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
Expand All @@ -30,14 +30,14 @@
<ComboBox fx:id="savePriSort" editable="true" GridPane.columnIndex="1" GridPane.rowIndex="3" />
<ComboBox fx:id="saveSecSort" editable="true" GridPane.columnIndex="1" GridPane.rowIndex="4" />
<ComboBox fx:id="saveTerSort" editable="true" GridPane.columnIndex="1" GridPane.rowIndex="5" />
<RadioButton fx:id="exportInSpecifiedOrder" mnemonicParsing="false" prefHeight="5.0" prefWidth="206.0" text="%Export entries ordered as specified" GridPane.columnSpan="3" GridPane.rowIndex="2" />
<RadioButton fx:id="exportInTableOrder" mnemonicParsing="false" text="%Export in current table sort order" GridPane.columnSpan="3" GridPane.rowIndex="1" />
<RadioButton fx:id="exportInOriginalOrder" mnemonicParsing="false" text="%Export entries in their original order" GridPane.columnSpan="3"/>
<RadioButton fx:id="exportInSpecifiedOrder" mnemonicParsing="false" prefHeight="5.0" prefWidth="206.0" text="%Export entries ordered as specified" GridPane.columnSpan="3" GridPane.rowIndex="2" toggleGroup="$saveOrderToggleGroup"/>
<RadioButton fx:id="exportInTableOrder" mnemonicParsing="false" text="%Export in current table sort order" GridPane.columnSpan="3" GridPane.rowIndex="1" toggleGroup="$saveOrderToggleGroup"/>
<RadioButton fx:id="exportInOriginalOrder" mnemonicParsing="false" text="%Export entries in their original order" GridPane.columnSpan="3" toggleGroup="$saveOrderToggleGroup"/>
<CheckBox fx:id="savePriDesc" mnemonicParsing="false" text="Descending" GridPane.columnIndex="2" GridPane.rowIndex="3" disabled="${!exportInSpecifiedOrder.selected}"/>
<CheckBox fx:id="saveSecDesc" mnemonicParsing="false" text="Descending" GridPane.columnIndex="2" GridPane.rowIndex="4" disabled="${!exportInSpecifiedOrder.selected}" />
<CheckBox fx:id="saveTerDesc" mnemonicParsing="false" text="Descending" GridPane.columnIndex="2" GridPane.rowIndex="5" disabled="${!exportInSpecifiedOrder.selected}" />
<Label text="Primary sort criterion" GridPane.rowIndex="3" disabled="${!exportInSpecifiedOrder.selected}" />
<Label text="Secondary sort criterion" GridPane.rowIndex="4" disabled="${!exportInSpecifiedOrder.selected}" />
<Label text="Tertiary sort criterion" GridPane.rowIndex="5" disabled="${!exportInSpecifiedOrder.selected}"/>
</children>
</GridPane>
</fx:root>
31 changes: 25 additions & 6 deletions src/main/java/org/jabref/gui/SaveOrderConfigDisplayView.java
Original file line number Diff line number Diff line change
@@ -1,14 +1,23 @@
package org.jabref.gui;

import javax.inject.Inject;

import javafx.fxml.FXML;
import javafx.scene.Node;
import javafx.scene.control.CheckBox;
import javafx.scene.control.ComboBox;
import javafx.scene.control.RadioButton;
import javafx.scene.control.ToggleGroup;
import javafx.scene.layout.GridPane;

import org.jabref.model.metadata.SaveOrderConfig;
import org.jabref.preferences.PreferencesService;

import org.jabref.model.metadata.MetaData;
import com.airhacks.afterburner.views.ViewLoader;

public class SaveOrderConfigDisplayView {
public class SaveOrderConfigDisplayView extends GridPane {

private final SaveOrderConfig config;

@FXML private ToggleGroup saveOrderToggleGroup;
@FXML private ComboBox<String> savePriSort;
Expand All @@ -20,17 +29,23 @@ public class SaveOrderConfigDisplayView {
@FXML private CheckBox savePriDesc;
@FXML private CheckBox saveSecDesc;
@FXML private CheckBox saveTerDesc;
@Inject private PreferencesService preferencesService;

private SaveOrderConfigDisplayViewModel viewModel;
private final MetaData metadata;

public SaveOrderConfigDisplayView(MetaData metadata) {
this.metadata = metadata;
public SaveOrderConfigDisplayView(SaveOrderConfig config) {
this.config = config;

ViewLoader.view(this)
.root(this)
.controller(this)
Siedlerchr marked this conversation as resolved.
Show resolved Hide resolved
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

remove controller(this) statement as this is not required

.load();
}

@FXML
private void initialize() {

viewModel = new SaveOrderConfigDisplayViewModel(metadata);
viewModel = new SaveOrderConfigDisplayViewModel(config, preferencesService);

exportInSpecifiedOrder.selectedProperty().bindBidirectional(viewModel.saveInSpecifiedOrderProperty());
exportInTableOrder.selectedProperty().bindBidirectional(viewModel.saveInTableOrderProperty());
Expand All @@ -53,4 +68,8 @@ private void initialize() {
public void storeConfig() {
viewModel.storeConfig();
}

public Node getJFXPanel() {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this method seems really unnecessary

return this;
}
}
39 changes: 27 additions & 12 deletions src/main/java/org/jabref/gui/SaveOrderConfigDisplayViewModel.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
import java.util.List;
import java.util.Locale;
import java.util.Objects;
import java.util.Optional;

import javafx.beans.property.BooleanProperty;
import javafx.beans.property.ListProperty;
Expand All @@ -16,9 +15,9 @@

import org.jabref.model.entry.BibEntry;
import org.jabref.model.entry.InternalBibtexFields;
import org.jabref.model.metadata.MetaData;
import org.jabref.model.metadata.SaveOrderConfig;
import org.jabref.model.metadata.SaveOrderConfig.SortCriterion;
import org.jabref.preferences.PreferencesService;

public class SaveOrderConfigDisplayViewModel {

Expand All @@ -38,20 +37,31 @@ public class SaveOrderConfigDisplayViewModel {
private final BooleanProperty saveInTableOrderProperty = new SimpleBooleanProperty();
private final BooleanProperty saveInSpecifiedOrderProperty = new SimpleBooleanProperty();

private final MetaData metadata;
private final SaveOrderConfig config;
private final PreferencesService prefs;

public SaveOrderConfigDisplayViewModel(MetaData metaData) {
this.metadata = metaData;

Optional<SaveOrderConfig> storedSaveOrderConfig = metaData.getSaveOrderConfig();
public SaveOrderConfigDisplayViewModel(SaveOrderConfig config, PreferencesService prefs) {
this.config = config;
this.prefs = prefs;

SaveOrderConfig storedSaveOrderConfig = config;
List<String> fieldNames = InternalBibtexFields.getAllPublicFieldNames();
fieldNames.add(BibEntry.KEY_FIELD);
Collections.sort(fieldNames);

priSortFieldsProperty.addAll(fieldNames);
secSortFieldsProperty.addAll(fieldNames);
terSortFieldsProperty.addAll(fieldNames);

if (config.saveInOriginalOrder()) {
saveInOriginalProperty.setValue(true);
} else if (config.saveInSpecifiedOrder()) {
saveInSpecifiedOrderProperty.setValue(true);
} else {
saveInTableOrderProperty.setValue(true);
}
setSaveOrderConfig(config);

}

public ListProperty<String> priSortFieldsProperty() {
Expand All @@ -67,13 +77,12 @@ public ListProperty<String> terSortFieldsProperty() {
}

public SaveOrderConfig getSaveOrderConfig() {
SaveOrderConfig saveOrderConfig = new SaveOrderConfig();

SortCriterion primary = new SortCriterion(getSelectedItemAsLowerCaseTrim(savePriSortSelectedValueProperty), savePriDescPropertySelected.getValue());
saveOrderConfig.getSortCriteria().add(primary);
SortCriterion secondary = new SortCriterion(getSelectedItemAsLowerCaseTrim(saveSecSortSelectedValueProperty), saveSecDescPropertySelected.getValue());
saveOrderConfig.getSortCriteria().add(secondary);
SortCriterion tertiary = new SortCriterion(getSelectedItemAsLowerCaseTrim(saveTerSortSelectedValueProperty), saveTerDescPropertySelected.getValue());
saveOrderConfig.getSortCriteria().add(tertiary);

SaveOrderConfig saveOrderConfig = new SaveOrderConfig(saveInOriginalProperty.getValue(), primary, secondary, tertiary);

return saveOrderConfig;
}
Expand All @@ -87,6 +96,12 @@ public void setSaveOrderConfig(SaveOrderConfig saveOrderConfig) {
saveSecDescPropertySelected.setValue(saveOrderConfig.getSortCriteria().get(1).descending);
saveTerSortSelectedValueProperty.setValue(saveOrderConfig.getSortCriteria().get(2).field);
saveTerDescPropertySelected.setValue(saveOrderConfig.getSortCriteria().get(2).descending);

if (saveInOriginalProperty.getValue()) {
saveOrderConfig.setSaveInOriginalOrder();
} else {
saveOrderConfig.setSaveInSpecifiedOrder();
}
}

private String getSelectedItemAsLowerCaseTrim(StringProperty string) {
Expand Down Expand Up @@ -118,7 +133,7 @@ public StringProperty saveTerSortSelectedValueProperty() {
}

public void storeConfig() {
metadata.setSaveOrderConfig(this.getSaveOrderConfig());
prefs.storeExportSaveOrder(this.getSaveOrderConfig());
}

public BooleanProperty saveInOriginalProperty() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,14 @@
package org.jabref.gui.preferences;

import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Node;
import javafx.scene.control.Label;
import javafx.scene.control.RadioButton;
import javafx.scene.control.Separator;
import javafx.scene.control.ToggleGroup;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.Pane;
import javafx.scene.shape.Line;

import org.jabref.gui.SaveOrderConfigDisplay;
import org.jabref.gui.SaveOrderConfigDisplayView;
import org.jabref.logic.l10n.Localization;
import org.jabref.preferences.JabRefPreferences;

Expand All @@ -25,7 +22,7 @@ class ExportSortingPrefsTab extends Pane implements PrefsTab {
private final RadioButton exportInOriginalOrder;
private final RadioButton exportInTableOrder;
private final RadioButton exportInSpecifiedOrder;
private final SaveOrderConfigDisplay exportOrderPanel;
private final SaveOrderConfigDisplayView exportOrderPanel;
private final GridPane builder = new GridPane();

public ExportSortingPrefsTab(JabRefPreferences prefs) {
Expand All @@ -41,28 +38,11 @@ public ExportSortingPrefsTab(JabRefPreferences prefs) {
exportInTableOrder.setToggleGroup(group);
exportInSpecifiedOrder.setToggleGroup(group);

exportOrderPanel = new SaveOrderConfigDisplay();

EventHandler<ActionEvent> listener = (event) -> {
boolean selected = event.getSource() == exportInSpecifiedOrder;
exportOrderPanel.setEnabled(selected);
};

exportInOriginalOrder.setOnAction(listener);
exportInTableOrder.setOnAction(listener);
exportInSpecifiedOrder.setOnAction(listener);
exportOrderPanel = new SaveOrderConfigDisplayView(prefs.loadExportSaveOrder());

Label exportSortOrder = new Label(Localization.lang("Export sort order"));
exportSortOrder.getStyleClass().add("sectionHeader");
// create GUI
builder.add(exportSortOrder, 1, 1);
builder.add(new Separator(), 2, 1);
builder.add(exportInOriginalOrder, 1, 2);
builder.add(new Line(), 2, 3);
builder.add(exportInTableOrder, 1, 4);
builder.add(new Line(), 2, 5);
builder.add(exportInSpecifiedOrder, 1, 6);
builder.add(new Line(), 2, 7);

builder.add(exportOrderPanel.getJFXPanel(), 1, 8);
builder.add(new Line(), 2, 9);
Expand All @@ -76,25 +56,12 @@ public Node getBuilder() {

@Override
public void setValues() {
if (prefs.getBoolean(JabRefPreferences.EXPORT_IN_ORIGINAL_ORDER)) {
exportInOriginalOrder.setSelected(true);
} else if (prefs.getBoolean(JabRefPreferences.EXPORT_IN_SPECIFIED_ORDER)) {
exportInSpecifiedOrder.setSelected(true);
} else {
exportInTableOrder.setSelected(true);
}

boolean selected = prefs.getBoolean(JabRefPreferences.EXPORT_IN_SPECIFIED_ORDER);
exportOrderPanel.setEnabled(selected);
exportOrderPanel.setSaveOrderConfig(prefs.loadExportSaveOrder());

}

@Override
public void storeSettings() {
prefs.putBoolean(JabRefPreferences.EXPORT_IN_ORIGINAL_ORDER, exportInOriginalOrder.isSelected());
prefs.putBoolean(JabRefPreferences.EXPORT_IN_SPECIFIED_ORDER, exportInSpecifiedOrder.isSelected());

prefs.storeExportSaveOrder(exportOrderPanel.getSaveOrderConfig());
exportOrderPanel.storeConfig();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.DialogPane?>


<DialogPane prefHeight="514.0" prefWidth="818.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="org.jabref.gui.preferences.PreferencesDialog" />
Loading