Skip to content
Closed
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
92 changes: 89 additions & 3 deletions src/main/java/net/sf/jabref/JabRefPreferences.java
Original file line number Diff line number Diff line change
Expand Up @@ -36,14 +36,15 @@
import javax.swing.*;

import net.sf.jabref.gui.*;
import net.sf.jabref.gui.actions.CleanUpAction;
import net.sf.jabref.gui.entryeditor.EntryEditorTabList;
import net.sf.jabref.gui.maintable.PersistenceTableColumnListener;
import net.sf.jabref.gui.preftabs.ImportSettingsTab;
import net.sf.jabref.importer.fileformat.ImportFormat;
import net.sf.jabref.logic.autocompleter.AutoCompletePreferences;
import net.sf.jabref.logic.cleanup.CleanupPreset;
import net.sf.jabref.logic.l10n.Localization;
import net.sf.jabref.logic.labelPattern.GlobalLabelPattern;
import net.sf.jabref.logic.preferences.PreferenceStorage;
import net.sf.jabref.logic.util.OS;
import net.sf.jabref.model.entry.EntryUtil;
import net.sf.jabref.model.entry.CustomEntryType;
Expand All @@ -60,7 +61,7 @@
import net.sf.jabref.specialfields.SpecialFieldsUtils;
import net.sf.jabref.logic.util.strings.StringUtil;

public class JabRefPreferences {
public class JabRefPreferences implements PreferenceStorage {
private static final Log LOGGER = LogFactory.getLog(JabRefPreferences.class);

/**
Expand Down Expand Up @@ -317,6 +318,24 @@ public class JabRefPreferences {
public static final String USE_CONVERT_TO_EQUATION = "useConvertToEquation";
public static final String USE_IEEE_ABRV = "useIEEEAbrv";

public static final String AKS_AUTO_NAMING_PDFS_AGAIN = "AskAutoNamingPDFsAgain";
private static final String CLEANUP_DOI = "CleanUpDOI";
private static final String CLEANUP_MONTH = "CleanUpMonth";
private static final String CLEANUP_PAGENUMBERS = "CleanUpPageNumbers";
private static final String CLEANUP_DATE = "CleanUpDate";
private static final String CLEANUP_MAKEPATHSRELATIVE = "CleanUpMakePathsRelative";
private static final String CLEANUP_RENAMEPDF = "CleanUpRenamePDF";
private static final String CLEANUP_RENAMEPDF_ONLYRELATIVE_PATHS = "CleanUpRenamePDFonlyRelativePaths";
private static final String CLEANUP_UPGRADE_EXTERNAL_LINKS = "CleanUpUpgradeExternalLinks";
private static final String CLEANUP_SUPERSCRIPTS = "CleanUpSuperscripts";
private static final String CLEANUP_HTML = "CleanUpHTML";
private static final String CLEANUP_CASE = "CleanUpCase";
private static final String CLEANUP_LATEX = "CleanUpLaTeX";
private static final String CLEANUP_UNITS = "CleanUpUnits";
private static final String CLEANUP_UNICODE = "CleanUpUnicode";
private static final String CLEANUP_CONVERTTOBIBLATEX = "CleanUpConvertToBiblatex";
private static final String CLEANUP_FIX_FILE_LINKS = "CleanUpFixFileLinks";

public static final String PUSH_TO_APPLICATION = "pushToApplication";

//non-default preferences
Expand All @@ -332,6 +351,7 @@ public class JabRefPreferences {

private static final char[][] VALUE_DELIMITERS = new char[][] { {'"', '"'}, {'{', '}'}};


public String WRAPPED_USERNAME;
public final String MARKING_WITH_NUMBER_PATTERN;

Expand Down Expand Up @@ -747,7 +767,9 @@ private JabRefPreferences() {
defaults.put(DB_CONNECT_HOSTNAME, "localhost");
defaults.put(DB_CONNECT_DATABASE, "jabref");
defaults.put(DB_CONNECT_USERNAME, "root");
CleanUpAction.putDefaults(defaults);

defaults.put(AKS_AUTO_NAMING_PDFS_AGAIN, Boolean.TRUE);
insertCleanupPreset(defaults, CleanupPreset.DEFAULT);

// defaults for DroppedFileHandler UI
defaults.put(DroppedFileHandler.DFH_LEAVE, Boolean.FALSE);
Expand Down Expand Up @@ -1533,4 +1555,68 @@ public Charset getDefaultEncoding() {
public void setDefaultEncoding(Charset encoding) {
put(JabRefPreferences.DEFAULT_ENCODING, encoding.name());
}

private static void insertCleanupPreset(HashMap<String, Object> storage, CleanupPreset preset) {

storage.put(CLEANUP_SUPERSCRIPTS, preset.isCleanUpSuperscripts());
storage.put(CLEANUP_DOI, preset.isCleanUpDOI());
storage.put(CLEANUP_MONTH, preset.isCleanUpMonth());
storage.put(CLEANUP_PAGENUMBERS, preset.isCleanUpPageNumbers());
storage.put(CLEANUP_DATE, preset.isCleanUpDate());
storage.put(CLEANUP_MAKEPATHSRELATIVE, preset.isMakePathsRelative());
storage.put(CLEANUP_RENAMEPDF, preset.isRenamePDF());
storage.put(CLEANUP_RENAMEPDF_ONLYRELATIVE_PATHS, preset.isRenamePdfOnlyRelativePaths());
storage.put(CLEANUP_UPGRADE_EXTERNAL_LINKS, preset.isCleanUpUpgradeExternalLinks());
storage.put(CLEANUP_HTML, preset.isConvertHTMLToLatex());
storage.put(CLEANUP_CASE, preset.isConvertCase());
storage.put(CLEANUP_LATEX, preset.isConvertLaTeX());
storage.put(CLEANUP_UNITS, preset.isConvertUnits());
storage.put(CLEANUP_UNICODE, preset.isConvertUnicodeToLatex());
storage.put(CLEANUP_CONVERTTOBIBLATEX, preset.isConvertToBiblatex());
storage.put(CLEANUP_FIX_FILE_LINKS, preset.isFixFileLinks());
}

@Override
public void storeCleanupPreset(CleanupPreset preset) {

prefs.putBoolean(CLEANUP_SUPERSCRIPTS, preset.isCleanUpSuperscripts());
prefs.putBoolean(CLEANUP_DOI, preset.isCleanUpDOI());
prefs.putBoolean(CLEANUP_MONTH, preset.isCleanUpMonth());
prefs.putBoolean(CLEANUP_PAGENUMBERS, preset.isCleanUpPageNumbers());
prefs.putBoolean(CLEANUP_DATE, preset.isCleanUpDate());
prefs.putBoolean(CLEANUP_MAKEPATHSRELATIVE, preset.isMakePathsRelative());
prefs.putBoolean(CLEANUP_RENAMEPDF, preset.isRenamePDF());
prefs.putBoolean(CLEANUP_RENAMEPDF_ONLYRELATIVE_PATHS, preset.isRenamePdfOnlyRelativePaths());
prefs.putBoolean(CLEANUP_UPGRADE_EXTERNAL_LINKS, preset.isCleanUpUpgradeExternalLinks());
prefs.putBoolean(CLEANUP_HTML, preset.isConvertHTMLToLatex());
prefs.putBoolean(CLEANUP_CASE, preset.isConvertCase());
prefs.putBoolean(CLEANUP_LATEX, preset.isConvertLaTeX());
prefs.putBoolean(CLEANUP_UNITS, preset.isConvertUnits());
prefs.putBoolean(CLEANUP_UNICODE, preset.isConvertUnicodeToLatex());
prefs.putBoolean(CLEANUP_CONVERTTOBIBLATEX, preset.isConvertToBiblatex());
prefs.putBoolean(CLEANUP_FIX_FILE_LINKS, preset.isFixFileLinks());
}

@Override
public CleanupPreset retrieveCleanupPreset() {

CleanupPreset preset = new CleanupPreset();
preset.setCleanUpSuperscripts(getBoolean(CLEANUP_SUPERSCRIPTS));
preset.setCleanUpDOI(getBoolean(CLEANUP_DOI));
preset.setCleanUpMonth(getBoolean(CLEANUP_MONTH));
preset.setCleanUpPageNumbers(getBoolean(CLEANUP_PAGENUMBERS));
preset.setCleanUpDate(getBoolean(CLEANUP_DATE));
preset.setMakePathsRelative(getBoolean(CLEANUP_MAKEPATHSRELATIVE));
preset.setRenamePDF(getBoolean(CLEANUP_RENAMEPDF));
preset.setRenamePdfOnlyRelativePaths(getBoolean(CLEANUP_RENAMEPDF_ONLYRELATIVE_PATHS));
preset.setCleanUpUpgradeExternalLinks(getBoolean(CLEANUP_UPGRADE_EXTERNAL_LINKS));
preset.setConvertHTMLToLatex(getBoolean(CLEANUP_HTML));
preset.setConvertCase(getBoolean(CLEANUP_CASE));
preset.setConvertLaTeX(getBoolean(CLEANUP_LATEX));
preset.setConvertUnits(getBoolean(CLEANUP_UNITS));
preset.setConvertUnicodeToLatex(getBoolean(CLEANUP_UNICODE));
preset.setConvertToBiblatex(getBoolean(CLEANUP_CONVERTTOBIBLATEX));
preset.setFixFileLinks(getBoolean(CLEANUP_FIX_FILE_LINKS));
return preset;
}
}
4 changes: 2 additions & 2 deletions src/main/java/net/sf/jabref/gui/BasePanel.java
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
import net.sf.jabref.groups.GroupTreeNode;
import net.sf.jabref.gui.actions.Actions;
import net.sf.jabref.gui.actions.BaseAction;
import net.sf.jabref.gui.actions.CleanUpAction;
import net.sf.jabref.gui.actions.CleanupAction;
import net.sf.jabref.gui.desktop.JabRefDesktop;
import net.sf.jabref.gui.entryeditor.EntryEditor;
import net.sf.jabref.gui.fieldeditors.FieldEditor;
Expand Down Expand Up @@ -305,7 +305,7 @@ public void output(String s) {

private void setupActions() {
saveAction = new SaveDatabaseAction(this);
CleanUpAction cleanUpAction = new CleanUpAction(this);
CleanupAction cleanUpAction = new CleanupAction(this, Globals.prefs);

actions.put(Actions.UNDO, undoAction);
actions.put(Actions.REDO, redoAction);
Expand Down
143 changes: 143 additions & 0 deletions src/main/java/net/sf/jabref/gui/CleanupPresetPanel.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
package net.sf.jabref.gui;

import java.util.Objects;

import javax.swing.JCheckBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

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

import net.sf.jabref.Globals;
import net.sf.jabref.gui.preftabs.ImportSettingsTab;
import net.sf.jabref.logic.cleanup.CleanupPreset;
import net.sf.jabref.logic.l10n.Localization;

public class CleanupPresetPanel {

private JCheckBox cleanUpSuperscripts;
private JCheckBox cleanUpDOI;
private JCheckBox cleanUpMonth;
private JCheckBox cleanUpPageNumbers;
private JCheckBox cleanUpDate;
private JCheckBox cleanUpMakePathsRelative;
private JCheckBox cleanUpRenamePDF;
private JCheckBox cleanUpRenamePDFonlyRelativePaths;
private JCheckBox cleanUpUpgradeExternalLinks;
private JCheckBox cleanUpHTML;
private JCheckBox cleanUpCase;
private JCheckBox cleanUpLaTeX;
private JCheckBox cleanUpUnits;
private JCheckBox cleanUpUnicode;
private JCheckBox cleanUpBibLatex;

private JPanel panel;
private final CleanupPreset cleanupPreset;


public CleanupPresetPanel(CleanupPreset cleanupPreset) {
this.cleanupPreset = Objects.requireNonNull(cleanupPreset);

init();
}

private void init() {
cleanUpSuperscripts = new JCheckBox(Localization.lang("Convert 1st, 2nd, ... to real superscripts"));
cleanUpDOI = new JCheckBox(
Localization.lang("Move DOIs from note and URL field to DOI field and remove http prefix"));
cleanUpMonth = new JCheckBox(Localization.lang("Format content of month field to #mon#"));
cleanUpPageNumbers = new JCheckBox(Localization.lang("Ensure that page ranges are of the form num1--num2"));
cleanUpDate = new JCheckBox(Localization.lang("Format date field in the form yyyy-mm or yyyy-mm-dd"));
cleanUpMakePathsRelative = new JCheckBox(
Localization.lang("Make paths of linked files relative (if possible)"));
cleanUpRenamePDF = new JCheckBox(Localization.lang("Rename PDFs to given filename format pattern"));
cleanUpRenamePDF.addChangeListener(new ChangeListener() {

@Override
public void stateChanged(ChangeEvent arg0) {
cleanUpRenamePDFonlyRelativePaths.setEnabled(cleanUpRenamePDF.isSelected());
}
});
cleanUpRenamePDFonlyRelativePaths = new JCheckBox(Localization.lang("Rename only PDFs having a relative path"));
cleanUpUpgradeExternalLinks = new JCheckBox(
Localization.lang("Upgrade external PDF/PS links to use the '%0' field.", Globals.FILE_FIELD));
cleanUpHTML = new JCheckBox(Localization.lang("Run HTML converter on title"));
cleanUpCase = new JCheckBox(Localization.lang("Run filter on title keeping the case of selected words"));
cleanUpLaTeX = new JCheckBox(
Localization.lang("Remove unneccessary $, {, and } and move adjacent numbers into equations"));
cleanUpUnits = new JCheckBox(
Localization.lang("Add brackets and replace separators with their non-breaking version for units"));
cleanUpUnicode = new JCheckBox(Localization.lang("Run Unicode converter on title, author(s), and abstract"));
cleanUpBibLatex = new JCheckBox(Localization.lang(
"Convert to BibLatex format (for example, move the value of the 'journal' field to 'journaltitle')"));
updateDisplay(cleanupPreset);

FormLayout layout = new FormLayout("left:15dlu,pref:grow",
"pref, pref, pref, pref, pref, pref, pref, pref, pref, pref, pref, pref, pref, pref, pref, pref");
FormBuilder builder = FormBuilder.create().layout(layout);
builder.add(cleanUpHTML).xyw(1, 1, 2);
builder.add(cleanUpUnicode).xyw(1, 2, 2);
builder.add(cleanUpCase).xyw(1, 3, 2);
builder.add(cleanUpLaTeX).xyw(1, 4, 2);
builder.add(cleanUpUnits).xyw(1, 5, 2);
builder.add(cleanUpSuperscripts).xyw(1, 6, 2);
builder.add(cleanUpDOI).xyw(1, 7, 2);
builder.add(cleanUpMonth).xyw(1, 8, 2);
builder.add(cleanUpPageNumbers).xyw(1, 9, 2);
builder.add(cleanUpDate).xyw(1, 10, 2);
builder.add(cleanUpUpgradeExternalLinks).xyw(1, 11, 2);
builder.add(cleanUpMakePathsRelative).xyw(1, 12, 2);
builder.add(cleanUpRenamePDF).xyw(1, 13, 2);
String currentPattern = Localization.lang("Filename format pattern").concat(": ")
.concat(Globals.prefs.get(ImportSettingsTab.PREF_IMPORT_FILENAMEPATTERN));
builder.add(new JLabel(currentPattern)).xy(2, 14);
builder.add(cleanUpRenamePDFonlyRelativePaths).xy(2, 15);
builder.add(cleanUpBibLatex).xyw(1, 16, 2);
panel = builder.build();
}

private void updateDisplay(CleanupPreset preset) {
cleanUpSuperscripts.setSelected(preset.isCleanUpSuperscripts());
cleanUpDOI.setSelected(preset.isCleanUpDOI());
cleanUpMonth.setSelected(preset.isCleanUpMonth());
cleanUpPageNumbers.setSelected(preset.isCleanUpPageNumbers());
cleanUpDate.setSelected(preset.isCleanUpDate());
cleanUpMakePathsRelative.setSelected(preset.isMakePathsRelative());
cleanUpRenamePDF.setSelected(preset.isRenamePDF());
cleanUpRenamePDFonlyRelativePaths.setSelected(preset.isRenamePdfOnlyRelativePaths());
cleanUpRenamePDFonlyRelativePaths.setEnabled(cleanUpRenamePDF.isSelected());
cleanUpUpgradeExternalLinks.setSelected(preset.isCleanUpUpgradeExternalLinks());
cleanUpHTML.setSelected(preset.isConvertHTMLToLatex());
cleanUpCase.setSelected(preset.isConvertCase());
cleanUpLaTeX.setSelected(preset.isConvertLaTeX());
cleanUpUnits.setSelected(preset.isConvertUnits());
cleanUpUnicode.setSelected(preset.isConvertUnicodeToLatex());
cleanUpBibLatex.setSelected(preset.isConvertToBiblatex());
}

public JPanel getPanel() {
return panel;
}

public CleanupPreset getCleanupPreset() {
cleanupPreset.setCleanUpSuperscripts(cleanUpSuperscripts.isSelected());
cleanupPreset.setCleanUpDOI(cleanUpDOI.isSelected());
cleanupPreset.setCleanUpMonth(cleanUpMonth.isSelected());
cleanupPreset.setCleanUpPageNumbers(cleanUpPageNumbers.isSelected());
cleanupPreset.setCleanUpDate(cleanUpDate.isSelected());
cleanupPreset.setCleanUpUpgradeExternalLinks(cleanUpUpgradeExternalLinks.isSelected());
cleanupPreset.setMakePathsRelative(cleanUpMakePathsRelative.isSelected());
cleanupPreset.setRenamePDF(cleanUpRenamePDF.isSelected());
cleanupPreset.setConvertHTMLToLatex(cleanUpHTML.isSelected());
cleanupPreset.setConvertCase(cleanUpCase.isSelected());
cleanupPreset.setConvertLaTeX(cleanUpLaTeX.isSelected());
cleanupPreset.setConvertUnits(cleanUpUnits.isSelected());
cleanupPreset.setConvertUnicodeToLatex(cleanUpUnicode.isSelected());
cleanupPreset.setConvertToBiblatex(cleanUpBibLatex.isSelected());
cleanupPreset.setFixFileLinks(true);
return cleanupPreset;
}
}
Loading