Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
9 changes: 1 addition & 8 deletions src/main/java/org/jabref/gui/cleanup/CleanupDialog.java
Original file line number Diff line number Diff line change
@@ -1,11 +1,8 @@
package org.jabref.gui.cleanup;

import javax.swing.JScrollPane;

import javafx.scene.control.ButtonType;

import org.jabref.gui.util.BaseDialog;
import org.jabref.gui.util.ControlHelper;
import org.jabref.logic.cleanup.CleanupPreset;
import org.jabref.logic.l10n.Localization;
import org.jabref.model.database.BibDatabaseContext;
Expand All @@ -18,17 +15,13 @@ public CleanupDialog(BibDatabaseContext databaseContext, CleanupPreset initialPr
getDialogPane().getButtonTypes().setAll(ButtonType.OK, ButtonType.CANCEL);

CleanupPresetPanel presetPanel = new CleanupPresetPanel(databaseContext, initialPreset);
presetPanel.getScrollPane().setVisible(true);
JScrollPane scrollPane = presetPanel.getScrollPane();

getDialogPane().setContent(presetPanel);
setResultConverter(button -> {
if (button == ButtonType.OK) {
return presetPanel.getCleanupPreset();
} else {
return null;
}
});

ControlHelper.setSwingContent(getDialogPane(), scrollPane);
}
}
112 changes: 48 additions & 64 deletions src/main/java/org/jabref/gui/cleanup/CleanupPresetPanel.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@
import java.util.Optional;
import java.util.Set;

import javax.swing.ButtonGroup;
import javax.swing.JCheckBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javafx.scene.Group;
import javafx.scene.control.CheckBox;
import javafx.scene.control.Label;
import javafx.scene.control.ScrollPane;
import javafx.scene.layout.GridPane;

import org.jabref.Globals;
import org.jabref.logic.cleanup.CleanupPreset;
Expand All @@ -20,25 +20,20 @@
import org.jabref.model.entry.FieldName;
import org.jabref.preferences.JabRefPreferences;

import com.jgoodies.forms.builder.FormBuilder;
import com.jgoodies.forms.layout.FormLayout;

public class CleanupPresetPanel {
public class CleanupPresetPanel extends ScrollPane {

private final BibDatabaseContext databaseContext;
private JCheckBox cleanUpDOI;
private JCheckBox cleanUpISSN;
private JCheckBox cleanUpMovePDF;
private JCheckBox cleanUpMakePathsRelative;
private JCheckBox cleanUpRenamePDF;
private JCheckBox cleanUpRenamePDFonlyRelativePaths;
private JCheckBox cleanUpUpgradeExternalLinks;
private JCheckBox cleanUpBiblatex;
private JCheckBox cleanUpBibtex;
private CheckBox cleanUpDOI;
private CheckBox cleanUpISSN;
private CheckBox cleanUpMovePDF;
private CheckBox cleanUpMakePathsRelative;
private CheckBox cleanUpRenamePDF;
private CheckBox cleanUpRenamePDFonlyRelativePaths;
private CheckBox cleanUpUpgradeExternalLinks;
private CheckBox cleanUpBiblatex;
private CheckBox cleanUpBibtex;
private FieldFormatterCleanupsPanel cleanUpFormatters;

private JPanel panel;
private JScrollPane scrollPane;
private CleanupPreset cleanupPreset;

public CleanupPresetPanel(BibDatabaseContext databaseContext, CleanupPreset cleanupPreset) {
Expand All @@ -48,87 +43,76 @@ public CleanupPresetPanel(BibDatabaseContext databaseContext, CleanupPreset clea
}

private void init() {
cleanUpDOI = new JCheckBox(
cleanUpDOI = new CheckBox(
Localization.lang("Move DOIs from note and URL field to DOI field and remove http prefix"));
cleanUpISSN = new JCheckBox(Localization.lang("Reformat ISSN"));

cleanUpISSN = new CheckBox(Localization.lang("Reformat ISSN"));
Optional<Path> firstExistingDir = databaseContext
.getFirstExistingFileDir(JabRefPreferences.getInstance().getFilePreferences());
if (firstExistingDir.isPresent()) {
cleanUpMovePDF = new JCheckBox(Localization.lang("Move linked files to default file directory %0",
cleanUpMovePDF = new CheckBox(Localization.lang("Move linked files to default file directory %0",
firstExistingDir.get().toString()));
} else {
cleanUpMovePDF = new JCheckBox(Localization.lang("Move linked files to default file directory %0", "..."));
cleanUpMovePDF.setEnabled(false);
cleanUpMovePDF = new CheckBox(Localization.lang("Move linked files to default file directory %0", "..."));
cleanUpMovePDF.setDisable(true);
// Since the directory does not exist, we cannot move it to there. So, this option is not checked - regardless of the presets stored in the preferences.
cleanUpMovePDF.setSelected(false);
}

cleanUpMakePathsRelative = new JCheckBox(
cleanUpMakePathsRelative = new CheckBox(
Localization.lang("Make paths of linked files relative (if possible)"));
cleanUpRenamePDF = new JCheckBox(Localization.lang("Rename PDFs to given filename format pattern"));
cleanUpRenamePDF.addChangeListener(
event -> cleanUpRenamePDFonlyRelativePaths.setEnabled(cleanUpRenamePDF.isSelected()));
cleanUpRenamePDFonlyRelativePaths = new JCheckBox(Localization.lang("Rename only PDFs having a relative path"));
cleanUpUpgradeExternalLinks = new JCheckBox(
cleanUpRenamePDF = new CheckBox(Localization.lang("Rename PDFs to given filename format pattern"));
cleanUpRenamePDF.selectedProperty().addListener(
event -> cleanUpRenamePDFonlyRelativePaths.setDisable(!cleanUpRenamePDF.isSelected()));
cleanUpRenamePDFonlyRelativePaths = new CheckBox(Localization.lang("Rename only PDFs having a relative path"));
cleanUpUpgradeExternalLinks = new CheckBox(
Localization.lang("Upgrade external PDF/PS links to use the '%0' field.", FieldName.FILE));
cleanUpBiblatex = new JCheckBox(Localization.lang(
cleanUpBiblatex = new CheckBox(Localization.lang(
"Convert to biblatex format (for example, move the value of the 'journal' field to 'journaltitle')"));
cleanUpBibtex = new JCheckBox(Localization.lang(
cleanUpBibtex = new CheckBox(Localization.lang(
"Convert to BibTeX format (for example, move the value of the 'journaltitle' field to 'journal')"));
ButtonGroup biblatexConversion = new ButtonGroup(); // Only make "to Biblatex" or "to BibTeX" selectable
biblatexConversion.add(cleanUpBiblatex);
biblatexConversion.add(cleanUpBibtex);
Group biblatexConversion = new Group(); // Only make "to Biblatex" or "to BibTeX" selectable
biblatexConversion.getChildren().add(cleanUpBiblatex);
biblatexConversion.getChildren().add(cleanUpBibtex);

cleanUpFormatters = new FieldFormatterCleanupsPanel(Localization.lang("Run field formatter:"),
Cleanups.DEFAULT_SAVE_ACTIONS);

updateDisplay(cleanupPreset);

FormLayout layout = new FormLayout("left:15dlu, fill:pref:grow",
"pref, pref, pref, pref, pref, fill:pref:grow, pref,pref, pref, pref,190dlu, fill:pref:grow,");

FormBuilder builder = FormBuilder.create().layout(layout);
builder.add(cleanUpDOI).xyw(1, 1, 2);
builder.add(cleanUpUpgradeExternalLinks).xyw(1, 2, 2);
builder.add(cleanUpMovePDF).xyw(1, 3, 2);
builder.add(cleanUpMakePathsRelative).xyw(1, 4, 2);
builder.add(cleanUpRenamePDF).xyw(1, 5, 2);
GridPane container = new GridPane();
container.add(cleanUpDOI, 0, 0);
container.add(cleanUpUpgradeExternalLinks, 0, 1);
container.add(cleanUpMovePDF, 0, 2);
container.add(cleanUpMakePathsRelative, 0, 3);
container.add(cleanUpRenamePDF, 0, 4);
String currentPattern = Localization.lang("Filename format pattern").concat(": ");
currentPattern = currentPattern.concat(Globals.prefs.get(JabRefPreferences.IMPORT_FILENAMEPATTERN));
builder.add(new JLabel(currentPattern)).xy(2, 6);
builder.add(cleanUpRenamePDFonlyRelativePaths).xy(2, 7);
builder.add(cleanUpBibtex).xyw(1, 8, 2);
builder.add(cleanUpBiblatex).xyw(1, 9, 2);
builder.add(cleanUpISSN).xyw(1, 10, 2);
builder.add(cleanUpFormatters).xyw(1, 11, 2);
panel = builder.build();
scrollPane = new JScrollPane(panel);
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
scrollPane.setVisible(true);
scrollPane.setBorder(null);
container.add(new Label(currentPattern), 0, 5);
container.add(cleanUpRenamePDFonlyRelativePaths, 0, 6);
container.add(cleanUpBibtex, 0, 7);
container.add(cleanUpBiblatex, 0, 8);
container.add(cleanUpISSN, 0, 9);
container.add(cleanUpFormatters, 0, 10);

setContent(container);
setVbarPolicy(ScrollBarPolicy.AS_NEEDED);
}

private void updateDisplay(CleanupPreset preset) {
cleanUpDOI.setSelected(preset.isCleanUpDOI());
if (cleanUpMovePDF.isEnabled()) {
if (!cleanUpMovePDF.isDisabled()) {
cleanUpMovePDF.setSelected(preset.isMovePDF());
}
cleanUpMakePathsRelative.setSelected(preset.isMakePathsRelative());
cleanUpRenamePDF.setSelected(preset.isRenamePDF());
cleanUpRenamePDFonlyRelativePaths.setSelected(preset.isRenamePdfOnlyRelativePaths());
cleanUpRenamePDFonlyRelativePaths.setEnabled(cleanUpRenamePDF.isSelected());
cleanUpRenamePDFonlyRelativePaths.setDisable(!cleanUpRenamePDF.isSelected());
cleanUpUpgradeExternalLinks.setSelected(preset.isCleanUpUpgradeExternalLinks());
cleanUpBiblatex.setSelected(preset.isConvertToBiblatex());
cleanUpBibtex.setSelected(preset.isConvertToBibtex());
cleanUpISSN.setSelected(preset.isCleanUpISSN());
cleanUpFormatters.setValues(preset.getFormatterCleanups());
}

public JScrollPane getScrollPane() {
return scrollPane;
}

public CleanupPreset getCleanupPreset() {

Set<CleanupPreset.CleanupStep> activeJobs = EnumSet.noneOf(CleanupPreset.CleanupStep.class);
Expand Down
Loading