diff --git a/CHANGELOG.md b/CHANGELOG.md
index 44886a9fd5c..fede47dc032 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -20,6 +20,7 @@ to [sourceforge feature requests](https://sourceforge.net/p/jabref/features/) by
- Implemented [#668](https://github.com/JabRef/jabref/issues/668): Replace clear with icon to reduce search bar width
- Improved layout for OSX: Toolbar buttons and search field
- Migrated JabRef help to markdown at https://github.com/JabRef/help.jabref.org
+- BibTeX and BibLaTeX mode is now file based and can be switched at runtime. The information is stored in the .bib file, and if it is not there detected by the entry types.
### Fixed
- Make BibTex parser more robust against missing newlines
diff --git a/src/main/java/net/sf/jabref/BibDatabaseContext.java b/src/main/java/net/sf/jabref/BibDatabaseContext.java
new file mode 100644
index 00000000000..a76d7260541
--- /dev/null
+++ b/src/main/java/net/sf/jabref/BibDatabaseContext.java
@@ -0,0 +1,82 @@
+package net.sf.jabref;
+
+import net.sf.jabref.model.database.BibDatabase;
+import net.sf.jabref.model.database.BibDatabaseMode;
+import net.sf.jabref.model.database.BibDatabaseModeDetection;
+
+import java.io.File;
+import java.util.Collections;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * Represents everything related to a .bib file.
+ *
+ * The entries are stored in BibDatabase, the other data in MetaData and the options relevant for this file in Defaults.
+ */
+public class BibDatabaseContext {
+
+ private final BibDatabase database;
+ private final MetaData metaData;
+ private final Defaults defaults;
+
+ public BibDatabaseContext(Defaults defaults) {
+ this(new BibDatabase(), defaults);
+ }
+
+ public BibDatabaseContext(BibDatabase database, Defaults defaults) {
+ this(database, new MetaData(), defaults);
+ }
+
+ public BibDatabaseContext(BibDatabase database, MetaData metaData, Defaults defaults) {
+ this.defaults = Objects.requireNonNull(defaults);
+ this.database = Objects.requireNonNull(database);
+ this.metaData = Objects.requireNonNull(metaData);
+
+ this.setMode(getMode());
+ }
+
+ public BibDatabaseContext(BibDatabase database, MetaData metaData, File file, Defaults defaults) {
+ this(database, metaData, defaults);
+
+ this.metaData.setFile(file);
+ }
+
+ public BibDatabaseMode getMode() {
+ List data = metaData.getData(MetaData.DATABASE_TYPE);
+ if (data == null) {
+ BibDatabaseMode inferredMode = BibDatabaseModeDetection.inferMode(database);
+ if (defaults.mode == BibDatabaseMode.BIBLATEX || inferredMode == BibDatabaseMode.BIBLATEX) {
+ return BibDatabaseMode.BIBLATEX;
+ } else {
+ return BibDatabaseMode.BIBTEX;
+ }
+ }
+ return BibDatabaseMode.valueOf(data.get(0).toUpperCase());
+ }
+
+ public void setMode(BibDatabaseMode bibDatabaseMode) {
+ metaData.putData(MetaData.DATABASE_TYPE, Collections.singletonList(bibDatabaseMode.getFormattedName()));
+ }
+
+ /**
+ * Get the file where this database was last saved to or loaded from, if any.
+ *
+ * @return The relevant File, or null if none is defined.
+ */
+ public File getDatabaseFile() {
+ return metaData.getFile();
+ }
+
+ public BibDatabase getDatabase() {
+ return database;
+ }
+
+ public MetaData getMetaData() {
+ return metaData;
+ }
+
+ public boolean isBiblatexMode() {
+ return getMode() == BibDatabaseMode.BIBLATEX;
+ }
+}
diff --git a/src/main/java/net/sf/jabref/JabRef.java b/src/main/java/net/sf/jabref/JabRef.java
index 023b31850ed..f835cfea166 100644
--- a/src/main/java/net/sf/jabref/JabRef.java
+++ b/src/main/java/net/sf/jabref/JabRef.java
@@ -41,6 +41,7 @@
import net.sf.jabref.logic.util.strings.StringUtil;
import net.sf.jabref.migrations.PreferencesMigrations;
import net.sf.jabref.model.database.BibDatabase;
+import net.sf.jabref.model.database.BibDatabaseMode;
import net.sf.jabref.model.entry.BibEntry;
import net.sf.jabref.util.Util;
import net.sf.jabref.wizard.auximport.AuxCommandLine;
@@ -308,8 +309,9 @@ public Optional> processArguments(String[] args, boolean in
if (!pr.isInvalid()) {
try {
System.out.println(Localization.lang("Saving") + ": " + data[0]);
+ Defaults defaults = new Defaults(BibDatabaseMode.fromPreference(Globals.prefs.getBoolean(JabRefPreferences.BIBLATEX_MODE)));
SaveSession session = FileActions.saveDatabase(
- new LoadedDatabase(pr.getDatabase(), pr.getMetaData()),
+ new BibDatabaseContext(pr.getDatabase(), pr.getMetaData(), defaults),
new File(data[0]), Globals.prefs, false, false,
Globals.prefs.getDefaultEncoding(), false);
// Show just a warning message if encoding didn't work for all characters:
@@ -397,7 +399,8 @@ public Optional> processArguments(String[] args, boolean in
try {
System.out.println(Localization.lang("Saving") + ": " + subName);
- SaveSession session = FileActions.saveDatabase(new LoadedDatabase(newBase, new MetaData()),
+ Defaults defaults = new Defaults(BibDatabaseMode.fromPreference(Globals.prefs.getBoolean(JabRefPreferences.BIBLATEX_MODE)));
+ SaveSession session = FileActions.saveDatabase(new BibDatabaseContext(newBase, defaults),
new File(subName), Globals.prefs, false, false,
Globals.prefs.getDefaultEncoding(), false);
// Show just a warning message if encoding didn't work for all characters:
diff --git a/src/main/java/net/sf/jabref/JabRefPreferences.java b/src/main/java/net/sf/jabref/JabRefPreferences.java
index 6b165b9ca02..68018319708 100644
--- a/src/main/java/net/sf/jabref/JabRefPreferences.java
+++ b/src/main/java/net/sf/jabref/JabRefPreferences.java
@@ -83,6 +83,7 @@ public final class JabRefPreferences {
public static final String ABBR_AUTHOR_NAMES = "abbrAuthorNames";
public static final String NAMES_NATBIB = "namesNatbib";
public static final String NAMES_FIRST_LAST = "namesFf";
+ public static final String BIBLATEX_MODE = "biblatexMode";
public static final String NAMES_AS_IS = "namesAsIs";
public static final String TABLE_COLOR_CODES_ON = "tableColorCodesOn";
public static final String ENTRY_EDITOR_HEIGHT = "entryEditorHeight";
@@ -430,6 +431,8 @@ private JabRefPreferences() {
defaults.put(LATEX_EDITOR_PATH, OS.guessProgramPath("LEd", "LEd"));
defaults.put(TEXSTUDIO_PATH, OS.guessProgramPath("texstudio", "TeXstudio"));
+ defaults.put(BIBLATEX_MODE, false);
+
if (OS.OS_X) {
//defaults.put(JabRefPreferences.PDFVIEWER, "/Applications/Preview.app");
//defaults.put(JabRefPreferences.PSVIEWER, "/Applications/Preview.app");
diff --git a/src/main/java/net/sf/jabref/LoadedDatabase.java b/src/main/java/net/sf/jabref/LoadedDatabase.java
deleted file mode 100644
index bbd33caa8d2..00000000000
--- a/src/main/java/net/sf/jabref/LoadedDatabase.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package net.sf.jabref;
-
-import net.sf.jabref.model.database.BibDatabase;
-import net.sf.jabref.model.database.BibDatabaseMode;
-import net.sf.jabref.model.database.BibDatabaseModeDetection;
-
-import java.io.File;
-import java.util.Objects;
-import java.util.Vector;
-
-public class LoadedDatabase {
-
- private final BibDatabase database;
- private final MetaData metaData;
-
- public LoadedDatabase() {
- this(new BibDatabase());
- }
-
- public LoadedDatabase(BibDatabase database) {
- this(database, new MetaData());
- }
-
- public LoadedDatabase(BibDatabase database, MetaData metaData) {
- this.database = Objects.requireNonNull(database);
- this.metaData = Objects.requireNonNull(metaData);
-
- this.setMode(getMode());
- }
-
- public LoadedDatabase(BibDatabase database, MetaData metaData, File file) {
- this(database, metaData);
-
- this.metaData.setFile(file);
- }
-
- public BibDatabaseMode getMode() {
- Vector data = metaData.getData(MetaData.DATABASE_TYPE);
- if(data == null) {
- return BibDatabaseModeDetection.inferMode(database);
- }
- return BibDatabaseMode.valueOf(data.get(0));
- }
-
- public void setMode(BibDatabaseMode bibDatabaseMode) {
- Vector list = new Vector<>();
- list.add(bibDatabaseMode.name());
- metaData.putData(MetaData.DATABASE_TYPE, list);
- }
-
- /**
- * Get the file where this database was last saved to or loaded from, if any.
- *
- * @return The relevant File, or null if none is defined.
- */
- public File getDatabaseFile() {
- return metaData.getFile();
- }
-
- public BibDatabase getDatabase() {
- return database;
- }
-
- public MetaData getMetaData() {
- return metaData;
- }
-
- public boolean isBiblatexMode() {
- return getMode() == BibDatabaseMode.BIBLATEX;
- }
-}
diff --git a/src/main/java/net/sf/jabref/collab/ChangeScanner.java b/src/main/java/net/sf/jabref/collab/ChangeScanner.java
index b7ff7d414e3..0b358b42cff 100644
--- a/src/main/java/net/sf/jabref/collab/ChangeScanner.java
+++ b/src/main/java/net/sf/jabref/collab/ChangeScanner.java
@@ -23,6 +23,7 @@
import javax.swing.SwingUtilities;
import javax.swing.tree.DefaultMutableTreeNode;
+import net.sf.jabref.model.database.BibDatabaseMode;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -77,7 +78,7 @@ public ChangeScanner(JabRefFrame frame, BasePanel bp, File file) { //, BibDataba
this.panel = bp;
this.frame = frame;
this.inMem = bp.database();
- this.mdInMem = bp.getLoadedDatabase().getMetaData();
+ this.mdInMem = bp.getBibDatabaseContext().getMetaData();
this.f = file;
}
@@ -158,7 +159,8 @@ private void storeTempDatabase() {
@Override
public void run() {
try {
- SaveSession ss = FileActions.saveDatabase(new LoadedDatabase(inTemp, mdInTemp),
+ Defaults defaults = new Defaults(BibDatabaseMode.fromPreference(Globals.prefs.getBoolean(JabRefPreferences.BIBLATEX_MODE)));
+ SaveSession ss = FileActions.saveDatabase(new BibDatabaseContext(inTemp, mdInTemp, defaults),
Globals.fileUpdateMonitor.getTempFile(panel.fileMonitorHandle()), Globals.prefs,
false, false, panel.getEncoding(), true);
ss.commit();
diff --git a/src/main/java/net/sf/jabref/collab/GroupChange.java b/src/main/java/net/sf/jabref/collab/GroupChange.java
index 9a9ac97e9f4..8a2d6662454 100644
--- a/src/main/java/net/sf/jabref/collab/GroupChange.java
+++ b/src/main/java/net/sf/jabref/collab/GroupChange.java
@@ -41,9 +41,9 @@ public GroupChange(GroupTreeNode changedGroups, GroupTreeNode tmpGroupRoot) {
@Override
public boolean makeChange(BasePanel panel, BibDatabase secondary, NamedCompound undoEdit) {
- final GroupTreeNode root = panel.getLoadedDatabase().getMetaData().getGroups();
+ final GroupTreeNode root = panel.getBibDatabaseContext().getMetaData().getGroups();
final UndoableModifySubtree undo = new UndoableModifySubtree(
- panel.getGroupSelector(), panel.getLoadedDatabase().getMetaData().getGroups(),
+ panel.getGroupSelector(), panel.getBibDatabaseContext().getMetaData().getGroups(),
root, Localization.lang("Modified groups"));
root.removeAllChildren();
if (changedGroups == null) {
diff --git a/src/main/java/net/sf/jabref/exporter/AutoSaveManager.java b/src/main/java/net/sf/jabref/exporter/AutoSaveManager.java
index 7f9376f0a97..145dfdcf5bc 100644
--- a/src/main/java/net/sf/jabref/exporter/AutoSaveManager.java
+++ b/src/main/java/net/sf/jabref/exporter/AutoSaveManager.java
@@ -15,15 +15,14 @@
*/
package net.sf.jabref.exporter;
-import net.sf.jabref.LoadedDatabase;
+import net.sf.jabref.BibDatabaseContext;
+import net.sf.jabref.Defaults;
import net.sf.jabref.gui.JabRefFrame;
import net.sf.jabref.gui.BasePanel;
import net.sf.jabref.Globals;
import net.sf.jabref.JabRefPreferences;
+import net.sf.jabref.model.database.BibDatabaseMode;
-import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.StandardCopyOption;
import java.util.Timer;
import java.util.TimerTask;
import java.util.List;
@@ -72,7 +71,7 @@ public void run() {
}
for (BasePanel panel : panels) {
- if (panel.isModified() && (panel.getLoadedDatabase().getDatabaseFile() != null)) {
+ if (panel.isModified() && (panel.getBibDatabaseContext().getDatabaseFile() != null)) {
AutoSaveManager.autoSave(panel);
}
}
@@ -95,10 +94,11 @@ public static File getAutoSaveFile(File f) {
* @return true if successful, false otherwise.
*/
private static boolean autoSave(BasePanel panel) {
- File databaseFile = panel.getLoadedDatabase().getDatabaseFile();
+ File databaseFile = panel.getBibDatabaseContext().getDatabaseFile();
File backupFile = AutoSaveManager.getAutoSaveFile(databaseFile);
try {
- SaveSession ss = FileActions.saveDatabase(new LoadedDatabase(panel.database(), panel.getLoadedDatabase().getMetaData()),
+ Defaults defaults = new Defaults(BibDatabaseMode.fromPreference(Globals.prefs.getBoolean(JabRefPreferences.BIBLATEX_MODE)));
+ SaveSession ss = FileActions.saveDatabase(new BibDatabaseContext(panel.database(), panel.getBibDatabaseContext().getMetaData(), defaults),
backupFile, Globals.prefs, false, false, panel.getEncoding(), true);
ss.commit();
} catch (SaveException e) {
@@ -117,10 +117,10 @@ private static boolean autoSave(BasePanel panel) {
* @return true if there was no autosave or if the autosave was successfully deleted, false otherwise.
*/
public static boolean deleteAutoSaveFile(BasePanel panel) {
- if (panel.getLoadedDatabase().getDatabaseFile() == null) {
+ if (panel.getBibDatabaseContext().getDatabaseFile() == null) {
return true;
}
- File backupFile = AutoSaveManager.getAutoSaveFile(panel.getLoadedDatabase().getDatabaseFile());
+ File backupFile = AutoSaveManager.getAutoSaveFile(panel.getBibDatabaseContext().getDatabaseFile());
if (backupFile.exists()) {
return backupFile.delete();
} else {
diff --git a/src/main/java/net/sf/jabref/exporter/ExportFormats.java b/src/main/java/net/sf/jabref/exporter/ExportFormats.java
index bf84768ce36..6948bdbdbf5 100644
--- a/src/main/java/net/sf/jabref/exporter/ExportFormats.java
+++ b/src/main/java/net/sf/jabref/exporter/ExportFormats.java
@@ -207,10 +207,10 @@ public void actionPerformed(ActionEvent e) {
// Set the global variable for this database's file directory before exporting,
// so formatters can resolve linked files correctly.
// (This is an ugly hack!)
- Globals.prefs.fileDirForDatabase = frame.getCurrentBasePanel().getLoadedDatabase().getMetaData()
+ Globals.prefs.fileDirForDatabase = frame.getCurrentBasePanel().getBibDatabaseContext().getMetaData()
.getFileDirectory(Globals.FILE_FIELD).toArray(new String[0]);
// Also store the database's file in a global variable:
- Globals.prefs.databaseFile = frame.getCurrentBasePanel().getLoadedDatabase().getDatabaseFile();
+ Globals.prefs.databaseFile = frame.getCurrentBasePanel().getBibDatabaseContext().getDatabaseFile();
// Make sure we remember which filter was used, to set
// the default for next time:
@@ -228,7 +228,7 @@ public void actionPerformed(ActionEvent e) {
public void run() {
try {
format.performExport(frame.getCurrentBasePanel().database(),
- frame.getCurrentBasePanel().getLoadedDatabase().getMetaData(),
+ frame.getCurrentBasePanel().getBibDatabaseContext().getMetaData(),
finFile.getPath(), frame
.getCurrentBasePanel().getEncoding(), finEntryIDs);
} catch (Exception ex) {
diff --git a/src/main/java/net/sf/jabref/exporter/ExportToClipboardAction.java b/src/main/java/net/sf/jabref/exporter/ExportToClipboardAction.java
index 75755681f4d..d316e4ec765 100644
--- a/src/main/java/net/sf/jabref/exporter/ExportToClipboardAction.java
+++ b/src/main/java/net/sf/jabref/exporter/ExportToClipboardAction.java
@@ -100,10 +100,10 @@ public void run() {
// Set the global variable for this database's file directory before exporting,
// so formatters can resolve linked files correctly.
// (This is an ugly hack!)
- Globals.prefs.fileDirForDatabase = frame.getCurrentBasePanel().getLoadedDatabase().getMetaData()
+ Globals.prefs.fileDirForDatabase = frame.getCurrentBasePanel().getBibDatabaseContext().getMetaData()
.getFileDirectory(Globals.FILE_FIELD).toArray(new String[0]);
// Also store the database's file in a global variable:
- Globals.prefs.databaseFile = frame.getCurrentBasePanel().getLoadedDatabase().getDatabaseFile();
+ Globals.prefs.databaseFile = frame.getCurrentBasePanel().getBibDatabaseContext().getDatabaseFile();
File tmp = null;
try {
@@ -118,7 +118,7 @@ public void run() {
}
// Write to file:
- format.performExport(database, panel.getLoadedDatabase().getMetaData(),
+ format.performExport(database, panel.getBibDatabaseContext().getMetaData(),
tmp.getPath(), panel.getEncoding(), entries);
// Read the file and put the contents on the clipboard:
StringBuilder sb = new StringBuilder();
diff --git a/src/main/java/net/sf/jabref/exporter/FileActions.java b/src/main/java/net/sf/jabref/exporter/FileActions.java
index 3203bf2797c..224842c2f52 100644
--- a/src/main/java/net/sf/jabref/exporter/FileActions.java
+++ b/src/main/java/net/sf/jabref/exporter/FileActions.java
@@ -171,7 +171,7 @@ private static void writeBibFileHeader(Writer out, Charset encoding) throws IOEx
* let the user save only the results of a search. False and false means all
* entries are saved.
*/
- public static SaveSession saveDatabase(LoadedDatabase loadedDatabase, File target, JabRefPreferences prefs,
+ public static SaveSession saveDatabase(BibDatabaseContext bibDatabaseContext, File target, JabRefPreferences prefs,
boolean checkSearch, boolean checkGroup, Charset encoding, boolean suppressBackup)
throws SaveException {
@@ -205,18 +205,18 @@ public static SaveSession saveDatabase(LoadedDatabase loadedDatabase, File targe
FileActions.writeBibFileHeader(writer, encoding);
// Write preamble if there is one.
- FileActions.writePreamble(writer, loadedDatabase.getDatabase().getPreamble());
+ FileActions.writePreamble(writer, bibDatabaseContext.getDatabase().getPreamble());
// Write strings if there are any.
- FileActions.writeStrings(writer, loadedDatabase.getDatabase());
+ FileActions.writeStrings(writer, bibDatabaseContext.getDatabase());
// Write database entries. Take care, using CrossRefEntry-
// Comparator, that referred entries occur after referring
// ones. Apart from crossref requirements, entries will be
// sorted as they appear on the screen.
- List sorter = FileActions.getSortedEntries(loadedDatabase.getDatabase(), loadedDatabase.getMetaData(), null, true);
+ List sorter = FileActions.getSortedEntries(bibDatabaseContext.getDatabase(), bibDatabaseContext.getMetaData(), null, true);
- sorter = FileActions.applySaveActions(sorter, loadedDatabase.getMetaData());
+ sorter = FileActions.applySaveActions(sorter, bibDatabaseContext.getMetaData());
BibEntryWriter bibtexEntryWriter = new BibEntryWriter(new LatexFieldFormatter(), true);
@@ -226,9 +226,9 @@ public static SaveSession saveDatabase(LoadedDatabase loadedDatabase, File targe
// Check if we must write the type definition for this
// entry, as well. Our criterion is that all non-standard
// types (*not* customized standard types) must be written.
- EntryType entryType = EntryTypes.getType(entry.getType(), loadedDatabase.getMode());
+ EntryType entryType = EntryTypes.getType(entry.getType(), bibDatabaseContext.getMode());
- if (EntryTypes.getStandardType(entryType.getName(), loadedDatabase.getMode()) == null) {
+ if (EntryTypes.getStandardType(entryType.getName(), bibDatabaseContext.getMode()) == null) {
types.put(entryType.getName(), entryType);
}
@@ -244,13 +244,13 @@ public static SaveSession saveDatabase(LoadedDatabase loadedDatabase, File targe
}
if (write) {
- bibtexEntryWriter.write(entry, writer, loadedDatabase.getMode());
+ bibtexEntryWriter.write(entry, writer, bibDatabaseContext.getMode());
}
}
// Write meta data.
- if (loadedDatabase.getMetaData() != null) {
- loadedDatabase.getMetaData().writeMetaData(writer);
+ if (bibDatabaseContext.getMetaData() != null) {
+ bibDatabaseContext.getMetaData().writeMetaData(writer);
}
// Write type definitions, if any:
@@ -266,8 +266,8 @@ public static SaveSession saveDatabase(LoadedDatabase loadedDatabase, File targe
}
//finally write whatever remains of the file, but at least a concluding newline
- if ((loadedDatabase.getDatabase().getEpilog() != null) && !(loadedDatabase.getDatabase().getEpilog().isEmpty())) {
- writer.write(loadedDatabase.getDatabase().getEpilog());
+ if ((bibDatabaseContext.getDatabase().getEpilog() != null) && !(bibDatabaseContext.getDatabase().getEpilog().isEmpty())) {
+ writer.write(bibDatabaseContext.getDatabase().getEpilog());
} else {
writer.write(Globals.NEWLINE);
}
@@ -378,7 +378,7 @@ private static List> getSaveComparators(boolean isSaveOpera
*
* @return A List containing warnings, if any.
*/
- public static SaveSession savePartOfDatabase(LoadedDatabase loadedDatabase, File target,
+ public static SaveSession savePartOfDatabase(BibDatabaseContext bibDatabaseContext, File target,
JabRefPreferences prefs, BibEntry[] bes, Charset encoding, DatabaseSaveType saveType)
throws SaveException {
@@ -406,16 +406,16 @@ public static SaveSession savePartOfDatabase(LoadedDatabase loadedDatabase, File
}
// Write preamble if there is one.
- FileActions.writePreamble(fw, loadedDatabase.getDatabase().getPreamble());
+ FileActions.writePreamble(fw, bibDatabaseContext.getDatabase().getPreamble());
// Write strings if there are any.
- FileActions.writeStrings(fw, loadedDatabase.getDatabase());
+ FileActions.writeStrings(fw, bibDatabaseContext.getDatabase());
// Write database entries. Take care, using CrossRefEntry-
// Comparator, that referred entries occur after referring
// ones. Apart from crossref requirements, entries will be
// sorted as they appear on the screen.
- List> comparators = FileActions.getSaveComparators(true, loadedDatabase.getMetaData());
+ List> comparators = FileActions.getSaveComparators(true, bibDatabaseContext.getMetaData());
// Use glazed lists to get a sorted view of the entries:
List sorter = new ArrayList<>(bes.length);
@@ -430,12 +430,12 @@ public static SaveSession savePartOfDatabase(LoadedDatabase loadedDatabase, File
// Check if we must write the type definition for this
// entry, as well. Our criterion is that all non-standard
// types (*not* customized standard types) must be written.
- EntryType tp = EntryTypes.getType(be.getType(), loadedDatabase.getMode());
- if (EntryTypes.getStandardType(tp.getName(), loadedDatabase.getMode()) == null) {
+ EntryType tp = EntryTypes.getType(be.getType(), bibDatabaseContext.getMode());
+ if (EntryTypes.getStandardType(tp.getName(), bibDatabaseContext.getMode()) == null) {
types.put(tp.getName(), tp);
}
- bibtexEntryWriter.write(be, fw, loadedDatabase.getMode());
+ bibtexEntryWriter.write(be, fw, bibDatabaseContext.getMode());
//only append newline if the entry has changed
if (!be.hasChanged()) {
fw.write(Globals.NEWLINE);
@@ -443,8 +443,8 @@ public static SaveSession savePartOfDatabase(LoadedDatabase loadedDatabase, File
}
// Write meta data.
- if ((saveType != DatabaseSaveType.PLAIN_BIBTEX) && (loadedDatabase.getMetaData() != null)) {
- loadedDatabase.getMetaData().writeMetaData(fw);
+ if ((saveType != DatabaseSaveType.PLAIN_BIBTEX) && (bibDatabaseContext.getMetaData() != null)) {
+ bibDatabaseContext.getMetaData().writeMetaData(fw);
}
// Write type definitions, if any:
diff --git a/src/main/java/net/sf/jabref/exporter/SaveAllAction.java b/src/main/java/net/sf/jabref/exporter/SaveAllAction.java
index 6a7a77b1e78..3fe3cf1cc51 100644
--- a/src/main/java/net/sf/jabref/exporter/SaveAllAction.java
+++ b/src/main/java/net/sf/jabref/exporter/SaveAllAction.java
@@ -63,7 +63,7 @@ public void run() {
for (int i = 0; i < databases; i++) {
if (i < frame.getTabbedPane().getTabCount()) {
BasePanel panel = frame.getBasePanelAt(i);
- if (panel.getLoadedDatabase().getDatabaseFile() == null) {
+ if (panel.getBibDatabaseContext().getDatabaseFile() == null) {
frame.showBasePanelAt(i);
}
panel.runCommand(Actions.SAVE);
diff --git a/src/main/java/net/sf/jabref/exporter/SaveDatabaseAction.java b/src/main/java/net/sf/jabref/exporter/SaveDatabaseAction.java
index a9b4c3f6fcc..056d308fe58 100644
--- a/src/main/java/net/sf/jabref/exporter/SaveDatabaseAction.java
+++ b/src/main/java/net/sf/jabref/exporter/SaveDatabaseAction.java
@@ -30,6 +30,7 @@
import net.sf.jabref.logic.util.io.FileBasedLock;
import javax.swing.*;
+import net.sf.jabref.model.database.BibDatabaseMode;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -66,7 +67,7 @@ public void init() throws Throwable {
success = false;
cancelled = false;
fileLockedError = false;
- if (panel.getLoadedDatabase().getDatabaseFile() == null) {
+ if (panel.getBibDatabaseContext().getDatabaseFile() == null) {
saveAs();
} else {
@@ -94,12 +95,12 @@ else if (answer == JOptionPane.YES_OPTION) {
@Override
public void run() {
- if (!FileBasedLock.waitForFileLock(panel.getLoadedDatabase().getDatabaseFile(), 10)) {
+ if (!FileBasedLock.waitForFileLock(panel.getBibDatabaseContext().getDatabaseFile(), 10)) {
// TODO: GUI handling of the situation when the externally modified file keeps being locked.
LOGGER.error("File locked, this will be trouble.");
}
- ChangeScanner scanner = new ChangeScanner(panel.frame(), panel, panel.getLoadedDatabase().getDatabaseFile());
+ ChangeScanner scanner = new ChangeScanner(panel.frame(), panel, panel.getBibDatabaseContext().getDatabaseFile());
JabRefExecutorService.INSTANCE.executeWithLowPriorityInOwnThreadAndWait(scanner);
if (scanner.changesFound()) {
scanner.displayResult(new ChangeScanner.DisplayResultCallback() {
@@ -128,7 +129,7 @@ public void run() {
}
else { // User indicated to store anyway.
// See if the database has the protected flag set:
- List pd = panel.getLoadedDatabase().getMetaData().getData(Globals.PROTECTED_FLAG_META);
+ List pd = panel.getBibDatabaseContext().getMetaData().getData(Globals.PROTECTED_FLAG_META);
boolean databaseProtectionFlag = (pd != null) && Boolean.parseBoolean(pd.get(0));
if (databaseProtectionFlag) {
JOptionPane.showMessageDialog(frame, Localization.lang("Database is protected. Cannot save until external changes have been reviewed."),
@@ -151,8 +152,8 @@ public void run() {
public void update() {
if (success) {
// Reset title of tab
- frame.setTabTitle(panel, panel.getTabTitle(), panel.getLoadedDatabase().getDatabaseFile().getAbsolutePath());
- frame.output(Localization.lang("Saved database") + " '" + panel.getLoadedDatabase().getDatabaseFile().getPath() + "'.");
+ frame.setTabTitle(panel, panel.getTabTitle(), panel.getBibDatabaseContext().getDatabaseFile().getAbsolutePath());
+ frame.output(Localization.lang("Saved database") + " '" + panel.getBibDatabaseContext().getDatabaseFile().getPath() + "'.");
frame.setWindowTitle();
frame.updateAllTabTitles();
} else if (!cancelled) {
@@ -167,7 +168,7 @@ public void update() {
@Override
public void run() {
- if (cancelled || (panel.getLoadedDatabase().getDatabaseFile() == null)) {
+ if (cancelled || (panel.getBibDatabaseContext().getDatabaseFile() == null)) {
return;
}
@@ -180,9 +181,9 @@ public void run() {
// lacking keys, before saving:
panel.autoGenerateKeysBeforeSaving();
- if (FileBasedLock.waitForFileLock(panel.getLoadedDatabase().getDatabaseFile(), 10)) {
+ if (FileBasedLock.waitForFileLock(panel.getBibDatabaseContext().getDatabaseFile(), 10)) {
// Save the database:
- success = saveDatabase(panel.getLoadedDatabase().getDatabaseFile(), false, panel.getEncoding());
+ success = saveDatabase(panel.getBibDatabaseContext().getDatabaseFile(), false, panel.getEncoding());
try {
Globals.fileUpdateMonitor.updateTimeStamp(panel.getFileMonitorHandle());
@@ -225,12 +226,15 @@ private boolean saveDatabase(File file, boolean selectedOnly, Charset encoding)
SaveSession session;
frame.block();
try {
+ Defaults defaults = new Defaults(BibDatabaseMode.fromPreference(Globals.prefs.getBoolean(JabRefPreferences.BIBLATEX_MODE)));
if (selectedOnly) {
- session = FileActions.savePartOfDatabase(new LoadedDatabase(panel.database(), panel.getLoadedDatabase().getMetaData()),
+ session = FileActions.savePartOfDatabase(
+ new BibDatabaseContext(panel.database(), panel.getBibDatabaseContext().getMetaData(), defaults),
file, Globals.prefs,
panel.getSelectedEntries(), encoding, FileActions.DatabaseSaveType.DEFAULT);
} else {
- session = FileActions.saveDatabase(new LoadedDatabase(panel.database(), panel.getLoadedDatabase().getMetaData()),
+ session = FileActions.saveDatabase(
+ new BibDatabaseContext(panel.database(), panel.getBibDatabaseContext().getMetaData(), defaults),
file, Globals.prefs, false, false, encoding, false);
}
@@ -376,22 +380,22 @@ public void saveAs() throws Throwable {
}
if (chosenFile != null) {
- File oldFile = panel.getLoadedDatabase().getDatabaseFile();
- panel.getLoadedDatabase().getMetaData().setFile(f);
+ File oldFile = panel.getBibDatabaseContext().getDatabaseFile();
+ panel.getBibDatabaseContext().getMetaData().setFile(f);
Globals.prefs.put(JabRefPreferences.WORKING_DIRECTORY, f.getParent());
runCommand();
// If the operation failed, revert the file field and return:
if (!success) {
- panel.getLoadedDatabase().getMetaData().setFile(oldFile);
+ panel.getBibDatabaseContext().getMetaData().setFile(oldFile);
return;
}
// Register so we get notifications about outside changes to the file.
try {
- panel.setFileMonitorHandle(Globals.fileUpdateMonitor.addUpdateListener(panel, panel.getLoadedDatabase().getDatabaseFile()));
+ panel.setFileMonitorHandle(Globals.fileUpdateMonitor.addUpdateListener(panel, panel.getBibDatabaseContext().getDatabaseFile()));
} catch (IOException ex) {
LOGGER.error("Problem registering file change notifications", ex);
}
- frame.getFileHistory().newFile(panel.getLoadedDatabase().getDatabaseFile().getPath());
+ frame.getFileHistory().newFile(panel.getBibDatabaseContext().getDatabaseFile().getPath());
}
}
diff --git a/src/main/java/net/sf/jabref/external/AttachFileAction.java b/src/main/java/net/sf/jabref/external/AttachFileAction.java
index c29f26745e9..6fa4b629000 100644
--- a/src/main/java/net/sf/jabref/external/AttachFileAction.java
+++ b/src/main/java/net/sf/jabref/external/AttachFileAction.java
@@ -30,7 +30,7 @@ public void action() {
BibEntry entry = panel.getSelectedEntries()[0];
FileListEntry flEntry = new FileListEntry("", "", null);
FileListEntryEditor editor = new FileListEntryEditor(panel.frame(), flEntry, false, true,
- panel.getLoadedDatabase().getMetaData());
+ panel.getBibDatabaseContext().getMetaData());
editor.setVisible(true, true);
if (editor.okPressed()) {
FileListTableModel model = new FileListTableModel();
diff --git a/src/main/java/net/sf/jabref/external/DroppedFileHandler.java b/src/main/java/net/sf/jabref/external/DroppedFileHandler.java
index ef730050d67..4ec7e040bdf 100644
--- a/src/main/java/net/sf/jabref/external/DroppedFileHandler.java
+++ b/src/main/java/net/sf/jabref/external/DroppedFileHandler.java
@@ -155,7 +155,7 @@ public void handleDroppedfile(String fileName, ExternalFileType fileType, boolea
String destFilename;
if (linkInPlace.isSelected()) {
- destFilename = FileUtil.shortenFileName(new File(fileName), panel.getLoadedDatabase().getMetaData().getFileDirectory(Globals.FILE_FIELD)).toString();
+ destFilename = FileUtil.shortenFileName(new File(fileName), panel.getBibDatabaseContext().getMetaData().getFileDirectory(Globals.FILE_FIELD)).toString();
} else {
destFilename = renameCheckBox.isSelected() ? renameToTextBox.getText() : new File(fileName).getName();
if (copyRadioButton.isSelected()) {
@@ -200,7 +200,7 @@ public void linkPdfToEntry(String fileName, MainTable entryTable, BibEntry entry
String destFilename;
if (linkInPlace.isSelected()) {
- destFilename = FileUtil.shortenFileName(new File(fileName), panel.getLoadedDatabase().getMetaData().getFileDirectory(Globals.FILE_FIELD)).toString();
+ destFilename = FileUtil.shortenFileName(new File(fileName), panel.getBibDatabaseContext().getMetaData().getFileDirectory(Globals.FILE_FIELD)).toString();
} else {
destFilename = renameCheckBox.isSelected() ? renameToTextBox.getText() : new File(fileName).getName();
if (copyRadioButton.isSelected()) {
@@ -230,7 +230,7 @@ public void importXmp(List xmpEntriesInFile, String fileName) {
String destFilename;
if (linkInPlace.isSelected()) {
- destFilename = FileUtil.shortenFileName(new File(fileName), panel.getLoadedDatabase().getMetaData().getFileDirectory(Globals.FILE_FIELD)).toString();
+ destFilename = FileUtil.shortenFileName(new File(fileName), panel.getBibDatabaseContext().getMetaData().getFileDirectory(Globals.FILE_FIELD)).toString();
} else {
if (renameCheckBox.isSelected()) {
destFilename = fileName;
@@ -317,7 +317,7 @@ private boolean tryXmpImport(String fileName, ExternalFileType fileType, boolean
String destFilename;
if (linkInPlace.isSelected()) {
- destFilename = FileUtil.shortenFileName(new File(fileName), panel.getLoadedDatabase().getMetaData().getFileDirectory(Globals.FILE_FIELD)).toString();
+ destFilename = FileUtil.shortenFileName(new File(fileName), panel.getBibDatabaseContext().getMetaData().getFileDirectory(Globals.FILE_FIELD)).toString();
} else {
if (renameCheckBox.isSelected()) {
destFilename = fileName;
@@ -354,7 +354,7 @@ private boolean showLinkMoveCopyRenameDialog(String linkFileName, ExternalFileTy
BibEntry entry, boolean newEntry, final boolean multipleEntries, BibDatabase database) {
String dialogTitle = Localization.lang("Link to file %0", linkFileName);
- List dirs = panel.getLoadedDatabase().getMetaData().getFileDirectory(Globals.FILE_FIELD);
+ List dirs = panel.getBibDatabaseContext().getMetaData().getFileDirectory(Globals.FILE_FIELD);
int found = -1;
for (int i = 0; i < dirs.size(); i++) {
if (new File(dirs.get(i)).exists()) {
@@ -456,7 +456,7 @@ private void doLink(BibEntry entry, ExternalFileType fileType, String filename,
// If avoidDuplicate==true, we should check if this file is already linked:
if (avoidDuplicate) {
// For comparison, find the absolute filename:
- List dirs = panel.getLoadedDatabase().getMetaData().getFileDirectory(Globals.FILE_FIELD);
+ List dirs = panel.getBibDatabaseContext().getMetaData().getFileDirectory(Globals.FILE_FIELD);
String absFilename = !new File(filename).isAbsolute() && (dirs.size() > 0) ?
FileUtil.expandFilename(filename, dirs).getAbsolutePath() : filename;
@@ -497,7 +497,7 @@ private void doLink(BibEntry entry, ExternalFileType fileType, String filename,
*/
private boolean doMove(String fileName, ExternalFileType fileType, String destFilename,
NamedCompound edits) {
- List dirs = panel.getLoadedDatabase().getMetaData().getFileDirectory(Globals.FILE_FIELD);
+ List dirs = panel.getBibDatabaseContext().getMetaData().getFileDirectory(Globals.FILE_FIELD);
int found = -1;
for (int i = 0; i < dirs.size(); i++) {
if (new File(dirs.get(i)).exists()) {
@@ -548,7 +548,7 @@ private boolean doMove(String fileName, ExternalFileType fileType, String destFi
private boolean doCopy(String fileName, ExternalFileType fileType, String toFile,
NamedCompound edits) {
- List dirs = panel.getLoadedDatabase().getMetaData().getFileDirectory(Globals.FILE_FIELD);
+ List dirs = panel.getBibDatabaseContext().getMetaData().getFileDirectory(Globals.FILE_FIELD);
int found = -1;
for (int i = 0; i < dirs.size(); i++) {
if (new File(dirs.get(i)).exists()) {
diff --git a/src/main/java/net/sf/jabref/external/ExternalFileMenuItem.java b/src/main/java/net/sf/jabref/external/ExternalFileMenuItem.java
index 761a962ee05..2a65296e578 100644
--- a/src/main/java/net/sf/jabref/external/ExternalFileMenuItem.java
+++ b/src/main/java/net/sf/jabref/external/ExternalFileMenuItem.java
@@ -76,7 +76,7 @@ public boolean openLink() {
ExternalFileType type = fileType;
if (this.fileType == null) {
if (this.fieldName != null) {
- JabRefDesktop.openExternalViewer(frame.getCurrentBasePanel().getLoadedDatabase().getMetaData(), link, fieldName);
+ JabRefDesktop.openExternalViewer(frame.getCurrentBasePanel().getBibDatabaseContext().getMetaData(), link, fieldName);
return true;
}
else {
diff --git a/src/main/java/net/sf/jabref/external/FindFullTextAction.java b/src/main/java/net/sf/jabref/external/FindFullTextAction.java
index 7a576128922..0fe9b4fc062 100644
--- a/src/main/java/net/sf/jabref/external/FindFullTextAction.java
+++ b/src/main/java/net/sf/jabref/external/FindFullTextAction.java
@@ -60,7 +60,7 @@ public void run() {
@Override
public void update() {
if (result.isPresent()) {
- List dirs = basePanel.getLoadedDatabase().getMetaData().getFileDirectory(Globals.FILE_FIELD);
+ List dirs = basePanel.getBibDatabaseContext().getMetaData().getFileDirectory(Globals.FILE_FIELD);
if (dirs.size() == 0) {
// FIXME: Localization
JOptionPane.showMessageDialog(basePanel.frame(), "Main file directory not set! Preferences -> External programs", "Directory not found", JOptionPane.ERROR_MESSAGE);
@@ -68,7 +68,7 @@ public void update() {
}
String bibtexKey = entry.getCiteKey();
// TODO: this needs its own thread as it blocks the UI!
- DownloadExternalFile def = new DownloadExternalFile(basePanel.frame(), basePanel.getLoadedDatabase().getMetaData(), bibtexKey);
+ DownloadExternalFile def = new DownloadExternalFile(basePanel.frame(), basePanel.getBibDatabaseContext().getMetaData(), bibtexKey);
try {
def.download(result.get(), new DownloadExternalFile.DownloadCallback() {
@Override
diff --git a/src/main/java/net/sf/jabref/external/MoveFileAction.java b/src/main/java/net/sf/jabref/external/MoveFileAction.java
index 8e525bb5faf..6f8b030fe3e 100644
--- a/src/main/java/net/sf/jabref/external/MoveFileAction.java
+++ b/src/main/java/net/sf/jabref/external/MoveFileAction.java
@@ -70,7 +70,7 @@ public void actionPerformed(ActionEvent event) {
}
// Get an absolute path representation:
- List dirs = frame.getCurrentBasePanel().getLoadedDatabase().getMetaData().getFileDirectory(Globals.FILE_FIELD);
+ List dirs = frame.getCurrentBasePanel().getBibDatabaseContext().getMetaData().getFileDirectory(Globals.FILE_FIELD);
int found = -1;
for (int i = 0; i < dirs.size(); i++) {
if (new File(dirs.get(i)).exists()) {
diff --git a/src/main/java/net/sf/jabref/external/SynchronizeFileField.java b/src/main/java/net/sf/jabref/external/SynchronizeFileField.java
index aa5f78a4d6f..f16779a2356 100644
--- a/src/main/java/net/sf/jabref/external/SynchronizeFileField.java
+++ b/src/main/java/net/sf/jabref/external/SynchronizeFileField.java
@@ -74,7 +74,7 @@ public void init() {
// Ask about rules for the operation:
if (optDiag == null) {
- optDiag = new SynchronizeFileField.OptionsDialog(panel.frame(), panel.getLoadedDatabase().getMetaData());
+ optDiag = new SynchronizeFileField.OptionsDialog(panel.frame(), panel.getBibDatabaseContext().getMetaData());
}
PositionWindow.placeDialog(optDiag, panel.frame());
optDiag.setVisible(true);
@@ -111,7 +111,7 @@ public void run() {
Collections.addAll(entries, sel);
// Start the autosetting process:
- Runnable r = Util.autoSetLinks(entries, ce, changedEntries, null, panel.getLoadedDatabase().getMetaData(), null, null);
+ Runnable r = Util.autoSetLinks(entries, ce, changedEntries, null, panel.getBibDatabaseContext().getMetaData(), null, null);
JabRefExecutorService.INSTANCE.executeAndWait(r);
}
progress += sel.length * weightAutoSet;
@@ -128,7 +128,7 @@ public void run() {
tableModel.setContentDontGuessTypes(old);
// We need to specify which directories to search in for Util.expandFilename:
- List dirsS = panel.getLoadedDatabase().getMetaData().getFileDirectory(Globals.FILE_FIELD);
+ List dirsS = panel.getBibDatabaseContext().getMetaData().getFileDirectory(Globals.FILE_FIELD);
ArrayList dirs = new ArrayList<>();
for (String dirs1 : dirsS) {
dirs.add(new File(dirs1));
@@ -166,7 +166,7 @@ public void run() {
case 1:
// Assign new file.
FileListEntryEditor flEditor = new FileListEntryEditor
- (panel.frame(), flEntry, false, true, panel.getLoadedDatabase().getMetaData());
+ (panel.frame(), flEntry, false, true, panel.getBibDatabaseContext().getMetaData());
flEditor.setVisible(true, true);
break;
case 2:
@@ -222,7 +222,7 @@ public void run() {
// User wants to change the type of this link.
// First get a model of all file links for this entry:
FileListEntryEditor editor = new FileListEntryEditor
- (panel.frame(), flEntry, false, true, panel.getLoadedDatabase().getMetaData());
+ (panel.frame(), flEntry, false, true, panel.getBibDatabaseContext().getMetaData());
editor.setVisible(true, false);
}
}
diff --git a/src/main/java/net/sf/jabref/external/TransferableFileLinkSelection.java b/src/main/java/net/sf/jabref/external/TransferableFileLinkSelection.java
index 1f56c323ca5..66fb5819b4a 100644
--- a/src/main/java/net/sf/jabref/external/TransferableFileLinkSelection.java
+++ b/src/main/java/net/sf/jabref/external/TransferableFileLinkSelection.java
@@ -42,7 +42,7 @@ public TransferableFileLinkSelection(BasePanel panel, BibEntry[] selection) {
selection[0].getFieldOptional(Globals.FILE_FIELD).ifPresent(file -> tm.setContent(file));
if (tm.getRowCount() > 0) {
// Find the default directory for this field type, if any:
- List dirs = panel.getLoadedDatabase().getMetaData().getFileDirectory(Globals.FILE_FIELD);
+ List dirs = panel.getBibDatabaseContext().getMetaData().getFileDirectory(Globals.FILE_FIELD);
File expLink = FileUtil.expandFilename(tm.getEntry(0).link, dirs);
fileList.add(expLink);
diff --git a/src/main/java/net/sf/jabref/external/WriteXMPAction.java b/src/main/java/net/sf/jabref/external/WriteXMPAction.java
index 5aca50dc85e..fb4f4db1b65 100644
--- a/src/main/java/net/sf/jabref/external/WriteXMPAction.java
+++ b/src/main/java/net/sf/jabref/external/WriteXMPAction.java
@@ -123,14 +123,14 @@ public void run() {
// First check the (legacy) "pdf" field:
String pdf = entry.getField("pdf");
- List dirs = panel.getLoadedDatabase().getMetaData().getFileDirectory("pdf");
+ List dirs = panel.getBibDatabaseContext().getMetaData().getFileDirectory("pdf");
File f = FileUtil.expandFilename(pdf, dirs);
if (f != null) {
files.add(f);
}
// Then check the "file" field:
- dirs = panel.getLoadedDatabase().getMetaData().getFileDirectory(Globals.FILE_FIELD);
+ dirs = panel.getBibDatabaseContext().getMetaData().getFileDirectory(Globals.FILE_FIELD);
if (entry.hasField(Globals.FILE_FIELD)) {
FileListTableModel tm = new FileListTableModel();
tm.setContent(entry.getField(Globals.FILE_FIELD));
diff --git a/src/main/java/net/sf/jabref/external/WriteXMPEntryEditorAction.java b/src/main/java/net/sf/jabref/external/WriteXMPEntryEditorAction.java
index 7f031d22a26..3697b0a590f 100644
--- a/src/main/java/net/sf/jabref/external/WriteXMPEntryEditorAction.java
+++ b/src/main/java/net/sf/jabref/external/WriteXMPEntryEditorAction.java
@@ -65,14 +65,14 @@ public void actionPerformed(ActionEvent actionEvent) {
// First check the (legacy) "pdf" field:
String pdf = entry.getField("pdf");
- List dirs = panel.getLoadedDatabase().getMetaData().getFileDirectory("pdf");
+ List dirs = panel.getBibDatabaseContext().getMetaData().getFileDirectory("pdf");
File f = FileUtil.expandFilename(pdf, dirs);
if (f != null) {
files.add(f);
}
// Then check the "file" field:
- dirs = panel.getLoadedDatabase().getMetaData().getFileDirectory(Globals.FILE_FIELD);
+ dirs = panel.getBibDatabaseContext().getMetaData().getFileDirectory(Globals.FILE_FIELD);
if (entry.hasField(Globals.FILE_FIELD)) {
FileListTableModel tm = new FileListTableModel();
tm.setContent(entry.getField(Globals.FILE_FIELD));
diff --git a/src/main/java/net/sf/jabref/external/push/PushToApplicationAction.java b/src/main/java/net/sf/jabref/external/push/PushToApplicationAction.java
index 2a1341d6061..a5aad3e96a2 100644
--- a/src/main/java/net/sf/jabref/external/push/PushToApplicationAction.java
+++ b/src/main/java/net/sf/jabref/external/push/PushToApplicationAction.java
@@ -79,7 +79,7 @@ public void actionPerformed(ActionEvent e) {
@Override
public void run() {
// Do the operation:
- operation.pushEntries(panel.database(), entries, getKeyString(entries), panel.getLoadedDatabase().getMetaData());
+ operation.pushEntries(panel.database(), entries, getKeyString(entries), panel.getBibDatabaseContext().getMetaData());
// Call the operationCompleted() method on the event dispatch thread:
SwingUtilities.invokeLater(new Runnable() {
diff --git a/src/main/java/net/sf/jabref/groups/GroupDialog.java b/src/main/java/net/sf/jabref/groups/GroupDialog.java
index 23701c1feeb..65f4262520b 100644
--- a/src/main/java/net/sf/jabref/groups/GroupDialog.java
+++ b/src/main/java/net/sf/jabref/groups/GroupDialog.java
@@ -149,7 +149,7 @@ public GroupDialog(JabRefFrame jabrefFrame, BasePanel basePanel,
builderKG.append(Localization.lang("Keyword"));
builderKG.append(m_kgSearchTerm);
builderKG.append(new FieldContentSelector(jabrefFrame, m_basePanel, this,
- m_kgSearchTerm, m_basePanel.getLoadedDatabase().getMetaData(), null, true, ", "));
+ m_kgSearchTerm, m_basePanel.getBibDatabaseContext().getMetaData(), null, true, ", "));
builderKG.nextLine();
builderKG.append(m_kgCaseSensitive, 3);
builderKG.nextLine();
diff --git a/src/main/java/net/sf/jabref/groups/GroupSelector.java b/src/main/java/net/sf/jabref/groups/GroupSelector.java
index e1ce467a2f8..8a724f5df9b 100644
--- a/src/main/java/net/sf/jabref/groups/GroupSelector.java
+++ b/src/main/java/net/sf/jabref/groups/GroupSelector.java
@@ -1419,7 +1419,7 @@ public void setActiveBasePanel(BasePanel panel) {
frame.sidePaneManager.hide("groups");
return;
}
- MetaData metaData = panel.getLoadedDatabase().getMetaData();
+ MetaData metaData = panel.getBibDatabaseContext().getMetaData();
if (metaData.getGroups() == null) {
GroupTreeNode newGroupsRoot = new GroupTreeNode(new AllEntriesGroup());
metaData.setGroups(newGroupsRoot);
diff --git a/src/main/java/net/sf/jabref/groups/GroupTreeCellRenderer.java b/src/main/java/net/sf/jabref/groups/GroupTreeCellRenderer.java
index d344c0504fc..26a2322abcd 100644
--- a/src/main/java/net/sf/jabref/groups/GroupTreeCellRenderer.java
+++ b/src/main/java/net/sf/jabref/groups/GroupTreeCellRenderer.java
@@ -20,6 +20,7 @@
import javax.swing.*;
import javax.swing.tree.DefaultTreeCellRenderer;
+import net.sf.jabref.gui.BasePanel;
import net.sf.jabref.gui.IconTheme;
import net.sf.jabref.model.entry.BibEntry;
import net.sf.jabref.Globals;
@@ -114,9 +115,12 @@ public Component getTreeCellRendererComponent(JTree tree, Object value, boolean
sb.append(" [").append(((ExplicitGroup) group).getNumEntries()).append(']');
} else if ((group instanceof KeywordGroup) || (group instanceof SearchGroup)) {
int hits = 0;
- for (BibEntry entry : JabRef.jrf.getCurrentBasePanel().getDatabase().getEntries()) {
- if (group.contains(entry)) {
- hits++;
+ BasePanel currentBasePanel = JabRef.jrf.getCurrentBasePanel();
+ if(currentBasePanel != null) {
+ for (BibEntry entry : currentBasePanel.getDatabase().getEntries()) {
+ if (group.contains(entry)) {
+ hits++;
+ }
}
}
sb.append(" [").append(hits).append(']');
diff --git a/src/main/java/net/sf/jabref/gui/BasePanel.java b/src/main/java/net/sf/jabref/gui/BasePanel.java
index 1e61b9145dd..d12662ba605 100644
--- a/src/main/java/net/sf/jabref/gui/BasePanel.java
+++ b/src/main/java/net/sf/jabref/gui/BasePanel.java
@@ -65,11 +65,8 @@
import net.sf.jabref.logic.search.matchers.SearchMatcher;
import net.sf.jabref.logic.util.io.FileBasedLock;
import net.sf.jabref.logic.util.io.FileUtil;
-import net.sf.jabref.model.database.BibDatabase;
-import net.sf.jabref.model.database.DatabaseChangeEvent;
+import net.sf.jabref.model.database.*;
import net.sf.jabref.model.database.DatabaseChangeEvent.ChangeType;
-import net.sf.jabref.model.database.DatabaseChangeListener;
-import net.sf.jabref.model.database.KeyCollisionException;
import net.sf.jabref.model.entry.BibEntry;
import net.sf.jabref.model.entry.EntryType;
import net.sf.jabref.model.entry.IdGenerator;
@@ -107,7 +104,7 @@ public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListe
public static final int WILL_SHOW_EDITOR = 3;
private final BibDatabase database;
- private final LoadedDatabase loadedDatabase;
+ private final BibDatabaseContext bibDatabaseContext;
private int mode;
private EntryEditor currentEditor;
@@ -182,17 +179,17 @@ public ContentAutoCompleters getAutoCompleters() {
}
- public BasePanel(JabRefFrame frame, LoadedDatabase loadedDatabase, Charset encoding) {
+ public BasePanel(JabRefFrame frame, BibDatabaseContext bibDatabaseContext, Charset encoding) {
Objects.requireNonNull(frame);
Objects.requireNonNull(encoding);
- Objects.requireNonNull(loadedDatabase);
+ Objects.requireNonNull(bibDatabaseContext);
this.encoding = encoding;
- this.loadedDatabase = loadedDatabase;
+ this.bibDatabaseContext = bibDatabaseContext;
this.sidePaneManager = GUIGlobals.sidePaneManager;
this.frame = frame;
- this.database = loadedDatabase.getDatabase();
+ this.database = bibDatabaseContext.getDatabase();
searchBar = new SearchBar(this);
@@ -200,7 +197,7 @@ public BasePanel(JabRefFrame frame, LoadedDatabase loadedDatabase, Charset encod
setupActions();
- File file = loadedDatabase.getDatabaseFile();
+ File file = bibDatabaseContext.getDatabaseFile();
// ensure that at each addition of a new entry, the entry is added to the groups interface
this.database.addDatabaseChangeListener(new GroupTreeUpdater());
@@ -228,7 +225,7 @@ public BasePanel(JabRefFrame frame, LoadedDatabase loadedDatabase, Charset encod
public String getTabTitle() {
String title;
- if (getLoadedDatabase().getDatabaseFile() == null) {
+ if (getBibDatabaseContext().getDatabaseFile() == null) {
title = GUIGlobals.untitledTitle;
if (!database().getEntries().isEmpty()) {
@@ -241,7 +238,7 @@ public String getTabTitle() {
} else {
// check if file is modified
String changeFlag = isModified() ? "*" : "";
- title = getLoadedDatabase().getDatabaseFile().getName() + changeFlag;
+ title = getBibDatabaseContext().getDatabaseFile().getName() + changeFlag;
}
return title;
}
@@ -508,7 +505,7 @@ private void setupActions() {
@Override
public void init() {
- DBStrings dbs = loadedDatabase.getMetaData().getDBStrings();
+ DBStrings dbs = bibDatabaseContext.getMetaData().getDBStrings();
// get DBStrings from user if necessary
if (dbs.isConfigValid()) {
@@ -529,7 +526,7 @@ public void init() {
// store database strings
if (connectToDB) {
dbs = dbd.getDBStrings();
- loadedDatabase.getMetaData().setDBStrings(dbs);
+ bibDatabaseContext.getMetaData().setDBStrings(dbs);
dbd.dispose();
}
}
@@ -541,13 +538,13 @@ public void run() {
if (connectToDB) {
- final DBStrings dbs = loadedDatabase.getMetaData().getDBStrings();
+ final DBStrings dbs = bibDatabaseContext.getMetaData().getDBStrings();
try {
frame.output(Localization.lang("Attempting SQL export..."));
final DBExporterAndImporterFactory factory = new DBExporterAndImporterFactory();
final DBExporter exporter = factory.getExporter(dbs.getServerType());
- exporter.exportDatabaseToDBMS(database, loadedDatabase.getMetaData(), null, dbs, frame);
+ exporter.exportDatabaseToDBMS(database, bibDatabaseContext.getMetaData(), null, dbs, frame);
dbs.isConfigValid(true);
} catch (Exception ex) {
final String preamble = Localization
@@ -559,7 +556,7 @@ public void run() {
Localization.lang("Export to SQL database"), JOptionPane.ERROR_MESSAGE);
}
- loadedDatabase.getMetaData().setDBStrings(dbs);
+ bibDatabaseContext.getMetaData().setDBStrings(dbs);
}
}
@@ -671,7 +668,7 @@ public void run() {
// Finally, set the new keys:
for (BibEntry entry : entries) {
bes = entry;
- LabelPatternUtil.makeLabel(loadedDatabase.getMetaData(), database, bes);
+ LabelPatternUtil.makeLabel(bibDatabaseContext.getMetaData(), database, bes);
ce.addEdit(new UndoableKeyChange(database, bes.getId(), (String) oldvals.get(bes),
bes.getField(BibEntry.KEY_FIELD)));
}
@@ -879,7 +876,7 @@ public void run() {
}
FileListEntry flEntry = tableModel.getEntry(0);
ExternalFileMenuItem item = new ExternalFileMenuItem(frame(), entry, "", flEntry.link,
- flEntry.type.getIcon(), loadedDatabase.getMetaData(), flEntry.type);
+ flEntry.type.getIcon(), bibDatabaseContext.getMetaData(), flEntry.type);
item.openLink();
}
});
@@ -893,7 +890,7 @@ public void action() {
JabRefExecutorService.INSTANCE.execute(() -> {
final BibEntry[] bes = mainTable.getSelectedEntries();
final List files = FileUtil.getListOfLinkedFiles(Arrays.asList(bes),
- loadedDatabase.getMetaData().getFileDirectory(Globals.FILE_FIELD));
+ bibDatabaseContext.getMetaData().getFileDirectory(Globals.FILE_FIELD));
for (final File f : files) {
try {
JabRefDesktop.openFolderAndSelectFile(f.getAbsolutePath());
@@ -938,7 +935,7 @@ public void action() {
output(Localization.lang("No url defined") + '.');
} else {
try {
- JabRefDesktop.openExternalFileAnyFormat(loadedDatabase.getMetaData(), entry.link, entry.type);
+ JabRefDesktop.openExternalFileAnyFormat(bibDatabaseContext.getMetaData(), entry.link, entry.type);
output(Localization.lang("External viewer called") + '.');
} catch (IOException e) {
output(Localization.lang("Could not open link"));
@@ -947,7 +944,7 @@ public void action() {
}
} else {
try {
- JabRefDesktop.openExternalViewer(loadedDatabase.getMetaData(), link.toString(), field);
+ JabRefDesktop.openExternalViewer(bibDatabaseContext.getMetaData(), link.toString(), field);
output(Localization.lang("External viewer called") + '.');
} catch (IOException ex) {
output(Localization.lang("Error") + ": " + ex.getMessage());
@@ -1124,7 +1121,7 @@ public void action() {
actions.put(Actions.MANAGE_SELECTORS, (BaseAction) () -> {
ContentSelectorDialog2 csd = new ContentSelectorDialog2
- (frame, frame, BasePanel.this, false, loadedDatabase.getMetaData(), null);
+ (frame, frame, BasePanel.this, false, bibDatabaseContext.getMetaData(), null);
PositionWindow.placeDialog(csd, frame);
csd.setVisible(true);
});
@@ -1200,12 +1197,13 @@ private boolean saveDatabase(File file, boolean selectedOnly, Charset enc, FileA
SaveSession session;
frame.block();
final String SAVE_DATABASE = Localization.lang("Save database");
+ Defaults defaults = new Defaults(BibDatabaseMode.fromPreference(Globals.prefs.getBoolean(JabRefPreferences.BIBLATEX_MODE)));
try {
if (selectedOnly) {
- session = FileActions.savePartOfDatabase(new LoadedDatabase(database, loadedDatabase.getMetaData()),
+ session = FileActions.savePartOfDatabase(new BibDatabaseContext(database, bibDatabaseContext.getMetaData(), defaults),
file, Globals.prefs, mainTable.getSelectedEntries(), enc, saveType);
} else {
- session = FileActions.saveDatabase(new LoadedDatabase(database, loadedDatabase.getMetaData()),
+ session = FileActions.saveDatabase(new BibDatabaseContext(database, bibDatabaseContext.getMetaData(), defaults),
file, Globals.prefs, false, false, enc, false);
}
@@ -1644,7 +1642,7 @@ protected boolean accept(Component c) {
AutoCompletePreferences autoCompletePreferences = new AutoCompletePreferences(Globals.prefs);
// Set up AutoCompleters for this panel:
if (Globals.prefs.getBoolean(JabRefPreferences.AUTO_COMPLETE)) {
- autoCompleters = new ContentAutoCompleters(getDatabase(), loadedDatabase.getMetaData(), autoCompletePreferences);
+ autoCompleters = new ContentAutoCompleters(getDatabase(), bibDatabaseContext.getMetaData(), autoCompletePreferences);
// ensure that the autocompleters are in sync with entries
this.getDatabase().addDatabaseChangeListener(new AutoCompletersUpdater());
} else {
@@ -1936,7 +1934,6 @@ public void rebuildAllEntryEditors() {
EntryEditor ed = stringEntryEditorEntry.getValue();
ed.rebuildPanels();
}
-
}
public void markBaseChanged() {
@@ -1966,10 +1963,10 @@ private synchronized void markChangedOrUnChanged() {
}
} else if (baseChanged && !nonUndoableChange) {
baseChanged = false;
- if (getLoadedDatabase().getDatabaseFile() == null) {
+ if (getBibDatabaseContext().getDatabaseFile() == null) {
frame.setTabTitle(this, GUIGlobals.untitledTitle, null);
} else {
- frame.setTabTitle(this, getTabTitle(), getLoadedDatabase().getDatabaseFile().getAbsolutePath());
+ frame.setTabTitle(this, getTabTitle(), getBibDatabaseContext().getDatabaseFile().getAbsolutePath());
}
}
frame.setWindowTitle();
@@ -2136,7 +2133,7 @@ public void autoGenerateKeysBeforeSaving() {
for (BibEntry bes : database.getEntries()) {
String oldKey = bes.getCiteKey();
if ((oldKey == null) || oldKey.isEmpty()) {
- LabelPatternUtil.makeLabel(loadedDatabase.getMetaData(), database, bes);
+ LabelPatternUtil.makeLabel(bibDatabaseContext.getMetaData(), database, bes);
ce.addEdit(new UndoableKeyChange(database, bes.getId(), null, bes.getCiteKey()));
any = true;
}
@@ -2266,11 +2263,11 @@ public void fileUpdated() {
//LOGGER.debug("File '"+file.getPath()+"' has been modified.");
updatedExternally = true;
- final ChangeScanner scanner = new ChangeScanner(frame, BasePanel.this, getLoadedDatabase().getDatabaseFile());
+ final ChangeScanner scanner = new ChangeScanner(frame, BasePanel.this, getBibDatabaseContext().getDatabaseFile());
// Test: running scan automatically in background
- if ((getLoadedDatabase().getDatabaseFile() != null)
- && !FileBasedLock.waitForFileLock(getLoadedDatabase().getDatabaseFile(), 10)) {
+ if ((getBibDatabaseContext().getDatabaseFile() != null)
+ && !FileBasedLock.waitForFileLock(getBibDatabaseContext().getDatabaseFile(), 10)) {
// The file is locked even after the maximum wait. Do nothing.
LOGGER.error("File updated externally, but change scan failed because the file is locked.");
// Perturb the stored timestamp so successive checks are made:
@@ -2294,7 +2291,7 @@ public void run() {
sidePaneManager.hideComponent(FileUpdatePanel.NAME);
sidePaneManager.unregisterComponent(FileUpdatePanel.NAME);
}
- FileUpdatePanel pan = new FileUpdatePanel(BasePanel.this, sidePaneManager, getLoadedDatabase().getDatabaseFile(), scanner);
+ FileUpdatePanel pan = new FileUpdatePanel(BasePanel.this, sidePaneManager, getBibDatabaseContext().getDatabaseFile(), scanner);
sidePaneManager.register(FileUpdatePanel.NAME, pan);
sidePaneManager.show(FileUpdatePanel.NAME);
//setUpdatedExternally(false);
@@ -2312,7 +2309,7 @@ public void run() {
@Override
public void fileRemoved() {
- LOGGER.info("File '" + getLoadedDatabase().getDatabaseFile().getPath() + "' has been deleted.");
+ LOGGER.info("File '" + getBibDatabaseContext().getDatabaseFile().getPath() + "' has been deleted.");
}
/**
@@ -2346,8 +2343,8 @@ public BibEntry[] getSelectedEntries() {
return mainTable.getSelectedEntries();
}
- public LoadedDatabase getLoadedDatabase() {
- return this.loadedDatabase;
+ public BibDatabaseContext getBibDatabaseContext() {
+ return this.bibDatabaseContext;
}
/**
@@ -2538,8 +2535,8 @@ public Optional searchAndOpen() {
final ExternalFileType[] types = ExternalFileTypes.getInstance().getExternalFileTypeSelection();
final List dirs = new ArrayList<>();
- if (basePanel.getLoadedDatabase().getMetaData().getFileDirectory(Globals.FILE_FIELD).size() > 0) {
- final List mdDirs = basePanel.getLoadedDatabase().getMetaData().getFileDirectory(Globals.FILE_FIELD);
+ if (basePanel.getBibDatabaseContext().getMetaData().getFileDirectory(Globals.FILE_FIELD).size() > 0) {
+ final List mdDirs = basePanel.getBibDatabaseContext().getMetaData().getFileDirectory(Globals.FILE_FIELD);
for (final String mdDir : mdDirs) {
dirs.add(new File(mdDir));
@@ -2567,7 +2564,7 @@ public Optional searchAndOpen() {
.getExternalFileTypeByExt(extension.get());
if (type != null) {
try {
- JabRefDesktop.openExternalFileAnyFormat(basePanel.getLoadedDatabase().getMetaData(), filepath, type);
+ JabRefDesktop.openExternalFileAnyFormat(basePanel.getBibDatabaseContext().getMetaData(), filepath, type);
basePanel.output(Localization.lang("External viewer called") + '.');
return Optional.of(filepath);
} catch (IOException ex) {
diff --git a/src/main/java/net/sf/jabref/gui/BibtexKeyPatternDialog.java b/src/main/java/net/sf/jabref/gui/BibtexKeyPatternDialog.java
index ce38e156e7d..3375545911a 100644
--- a/src/main/java/net/sf/jabref/gui/BibtexKeyPatternDialog.java
+++ b/src/main/java/net/sf/jabref/gui/BibtexKeyPatternDialog.java
@@ -49,7 +49,7 @@ public BibtexKeyPatternDialog(JabRefFrame parent, BasePanel panel) {
*/
public void setPanel(BasePanel panel) {
this.panel = panel;
- this.metaData = panel.getLoadedDatabase().getMetaData();
+ this.metaData = panel.getBibDatabaseContext().getMetaData();
AbstractLabelPattern keypatterns = metaData.getLabelPattern();
labelPatternPanel.setValues(keypatterns);
}
diff --git a/src/main/java/net/sf/jabref/gui/ContentSelectorDialog2.java b/src/main/java/net/sf/jabref/gui/ContentSelectorDialog2.java
index b3ad3a490d1..c6ee62cb8da 100644
--- a/src/main/java/net/sf/jabref/gui/ContentSelectorDialog2.java
+++ b/src/main/java/net/sf/jabref/gui/ContentSelectorDialog2.java
@@ -380,7 +380,7 @@ private void applyChanges() {
} else {
panel.updateAllContentSelectors();
}
- panel.getAutoCompleters().addContentSelectorValuesToAutoCompleters(panel.getLoadedDatabase().getMetaData());
+ panel.getAutoCompleters().addContentSelectorValuesToAutoCompleters(panel.getBibDatabaseContext().getMetaData());
}
diff --git a/src/main/java/net/sf/jabref/gui/DatabasePropertiesDialog.java b/src/main/java/net/sf/jabref/gui/DatabasePropertiesDialog.java
index d6548bc71a6..3a5b3166655 100644
--- a/src/main/java/net/sf/jabref/gui/DatabasePropertiesDialog.java
+++ b/src/main/java/net/sf/jabref/gui/DatabasePropertiesDialog.java
@@ -103,7 +103,7 @@ public DatabasePropertiesDialog(JFrame parent) {
public void setPanel(BasePanel panel) {
this.panel = panel;
- this.metaData = panel.getLoadedDatabase().getMetaData();
+ this.metaData = panel.getBibDatabaseContext().getMetaData();
}
private void init(JFrame parent) {
diff --git a/src/main/java/net/sf/jabref/gui/DuplicateResolverDialog.java b/src/main/java/net/sf/jabref/gui/DuplicateResolverDialog.java
index ed2966a9574..a6e206708cc 100644
--- a/src/main/java/net/sf/jabref/gui/DuplicateResolverDialog.java
+++ b/src/main/java/net/sf/jabref/gui/DuplicateResolverDialog.java
@@ -79,28 +79,28 @@ private void init(BibEntry one, BibEntry two, int type) {
first = new JButton(Localization.lang("Keep left"));
second = new JButton(Localization.lang("Keep right"));
both = new JButton(Localization.lang("Keep both"));
- me = new MergeEntries(one, two, frame.getCurrentBasePanel().getLoadedDatabase().getMode());
+ me = new MergeEntries(one, two, frame.getCurrentBasePanel().getBibDatabaseContext().getMode());
break;
case INSPECTION:
first = new JButton(Localization.lang("Remove old entry"));
second = new JButton(Localization.lang("Remove entry from import"));
both = new JButton(Localization.lang("Keep both"));
me = new MergeEntries(one, two, Localization.lang("Old entry"),
- Localization.lang("From import"), frame.getCurrentBasePanel().getLoadedDatabase().getMode());
+ Localization.lang("From import"), frame.getCurrentBasePanel().getBibDatabaseContext().getMode());
break;
case DUPLICATE_SEARCH_WITH_EXACT:
first = new JButton(Localization.lang("Keep left"));
second = new JButton(Localization.lang("Keep right"));
both = new JButton(Localization.lang("Keep both"));
removeExact = new JButton(Localization.lang("Automatically remove exact duplicates"));
- me = new MergeEntries(one, two, frame.getCurrentBasePanel().getLoadedDatabase().getMode());
+ me = new MergeEntries(one, two, frame.getCurrentBasePanel().getBibDatabaseContext().getMode());
break;
default:
first = new JButton(Localization.lang("Import and remove old entry"));
second = new JButton(Localization.lang("Do not import entry"));
both = new JButton(Localization.lang("Import and keep old entry"));
me = new MergeEntries(one, two, Localization.lang("Old entry"),
- Localization.lang("From import"), frame.getCurrentBasePanel().getLoadedDatabase().getMode());
+ Localization.lang("From import"), frame.getCurrentBasePanel().getBibDatabaseContext().getMode());
}
if (removeExact != null) {
diff --git a/src/main/java/net/sf/jabref/gui/DuplicateSearch.java b/src/main/java/net/sf/jabref/gui/DuplicateSearch.java
index 01ca21b1b0d..3f3630a0ea1 100644
--- a/src/main/java/net/sf/jabref/gui/DuplicateSearch.java
+++ b/src/main/java/net/sf/jabref/gui/DuplicateSearch.java
@@ -171,7 +171,7 @@ class SearcherRunnable implements Runnable {
public void run() {
for (int i = 0; (i < (bes.length - 1)) && !finished; i++) {
for (int j = i + 1; (j < bes.length) && !finished; j++) {
- boolean eq = DuplicateCheck.isDuplicate(bes[i], bes[j], panel.getLoadedDatabase().getMode());
+ boolean eq = DuplicateCheck.isDuplicate(bes[i], bes[j], panel.getBibDatabaseContext().getMode());
// If (suspected) duplicates, add them to the duplicates vector.
if (eq) {
diff --git a/src/main/java/net/sf/jabref/gui/EntryCustomizationDialog.java b/src/main/java/net/sf/jabref/gui/EntryCustomizationDialog.java
index 954c40a1f04..45b5c4140f0 100644
--- a/src/main/java/net/sf/jabref/gui/EntryCustomizationDialog.java
+++ b/src/main/java/net/sf/jabref/gui/EntryCustomizationDialog.java
@@ -60,7 +60,7 @@ public class EntryCustomizationDialog extends JDialog implements ListSelectionLi
private final Set changed = new HashSet<>();
private boolean biblatexMode;
- private LoadedDatabase loadedDatabase;
+ private BibDatabaseContext bibDatabaseContext;
/**
* Creates a new instance of EntryCustomizationDialog
@@ -76,8 +76,8 @@ private void initGui() {
Container pane = getContentPane();
pane.setLayout(new BorderLayout());
- loadedDatabase = frame.getCurrentBasePanel().getLoadedDatabase();
- biblatexMode = loadedDatabase.isBiblatexMode();
+ bibDatabaseContext = frame.getCurrentBasePanel().getBibDatabaseContext();
+ biblatexMode = bibDatabaseContext.isBiblatexMode();
JPanel main = new JPanel();
JPanel buttons = new JPanel();
@@ -86,11 +86,11 @@ private void initGui() {
right.setLayout(new GridLayout(biblatexMode ? 2 : 1, 2));
List entryTypes = new ArrayList<>();
- for (String s : EntryTypes.getAllTypes(loadedDatabase.getMode())) {
+ for (String s : EntryTypes.getAllTypes(bibDatabaseContext.getMode())) {
entryTypes.add(s);
}
- typeComp = new EntryTypeList(entryTypes, loadedDatabase.getMode());
+ typeComp = new EntryTypeList(entryTypes, bibDatabaseContext.getMode());
typeComp.addListSelectionListener(this);
typeComp.addAdditionActionListener(this);
typeComp.addDefaultActionListener(new DefaultListener());
@@ -180,7 +180,7 @@ public void valueChanged(ListSelectionEvent e) {
}
List rl = reqLists.get(s);
if (rl == null) {
- EntryType type = EntryTypes.getType(s,loadedDatabase.getMode());
+ EntryType type = EntryTypes.getType(s, bibDatabaseContext.getMode());
if (type == null) {
// New entry
reqComp.setFields(new ArrayList<>());
@@ -248,13 +248,13 @@ private void applyChanges() {
if (defaulted.contains(stringListEntry.getKey())) {
// This type should be reverted to its default setup.
String nm = EntryUtil.capitalizeFirst(stringListEntry.getKey());
- EntryTypes.removeType(nm, loadedDatabase.getMode());
+ EntryTypes.removeType(nm, bibDatabaseContext.getMode());
updateTypesForEntries(nm);
continue;
}
- EntryType oldType = EntryTypes.getType(stringListEntry.getKey(), loadedDatabase.getMode());
+ EntryType oldType = EntryTypes.getType(stringListEntry.getKey(), bibDatabaseContext.getMode());
if (oldType != null) {
List oldReq = oldType.getRequiredFieldsFlat();
List oldOpt = oldType.getOptionalFields();
@@ -281,7 +281,7 @@ private void applyChanges() {
}
Set