[jabref] 255/459: [svn-upgrade] Integrating new upstream version, jabref (2.6~beta3+dfsg)
gregor herrmann
gregoa at debian.org
Thu Sep 15 20:40:36 UTC 2016
This is an automated email from the git hooks/post-receive script.
gregoa pushed a commit to branch master
in repository jabref.
commit 1d0823f081361a2a4595ce3a773a2c172975fd80
Author: gregor herrmann <gregoa at debian.org>
Date: Mon Mar 8 16:30:45 2010 +0000
[svn-upgrade] Integrating new upstream version, jabref (2.6~beta3+dfsg)
---
build.number | 4 +-
build.xml | 6 +-
src/{Jabref_trunk.iml => Jabref.iml} | 73 +-
src/help/About.html | 1 +
src/help/CustomExports.html | 5 +
src/help/JSTOR.html | 5 +-
src/help/RevisionHistory.html | 136 +-
src/help/ScienceDirect.html | 15 +
src/help/da/About.html | 1 +
src/help/de/About.html | 1 +
src/help/de/JabRef-UserManual_de.tex | 3201 ++++++++++++++++++++
src/help/fr/About.html | 1 +
src/help/fr/CustomExports.html | 6 +
src/help/fr/JSTOR.html | 3 +
src/images/absIcon.png | Bin 180 -> 0 bytes
src/images/add.png | Bin 455 -> 0 bytes
src/images/autumn.png | Bin 307468 -> 0 bytes
src/images/completeItem.png | Bin 458 -> 0 bytes
src/images/contents.png | Bin 1073 -> 0 bytes
src/images/database_connect.png | Bin 763 -> 0 bytes
src/images/database_save.png | Bin 755 -> 0 bytes
src/images/document-save-as.png | Bin 1337 -> 0 bytes
src/images/document-save.png | Bin 1255 -> 0 bytes
src/images/doismall.png | Bin 738 -> 0 bytes
src/images/duplicate.png | Bin 359 -> 0 bytes
src/images/edit-copy.png | Bin 979 -> 0 bytes
src/images/edit-cut.png | Bin 985 -> 0 bytes
src/images/edit-delete.png | Bin 1339 -> 0 bytes
src/images/edit-find.png | Bin 1347 -> 0 bytes
src/images/edit-paste.png | Bin 956 -> 0 bytes
src/images/edit-redo.png | Bin 909 -> 0 bytes
src/images/edit-undo.png | Bin 957 -> 0 bytes
src/images/editor.png | Bin 1196 -> 0 bytes
src/images/emacs.png | Bin 267 -> 0 bytes
src/images/emblem-web-small.png | Bin 960 -> 0 bytes
src/images/emblem-web.png | Bin 1419 -> 0 bytes
src/images/fileclose.png | Bin 238 -> 0 bytes
src/images/fileclose2.png | Bin 250 -> 0 bytes
src/images/filenew.png | Bin 968 -> 0 bytes
src/images/fileopen.png | Bin 1123 -> 0 bytes
src/images/genIcon.png | Bin 180 -> 0 bytes
src/images/go-down.png | Bin 1216 -> 0 bytes
src/images/go-next.png | Bin 1203 -> 0 bytes
src/images/go-previous.png | Bin 1157 -> 0 bytes
src/images/go-up.png | Bin 1092 -> 0 bytes
src/images/groupIncluding.png | Bin 105 -> 0 bytes
src/images/groupRefining.png | Bin 160 -> 0 bytes
src/images/grouping_morten.png | Bin 875 -> 0 bytes
src/images/groupsHighlightAll.png | Bin 280 -> 0 bytes
src/images/groupsHighlightAny.png | Bin 276 -> 0 bytes
src/images/help-about.png | Bin 986 -> 0 bytes
src/images/help-browser.png | Bin 1541 -> 0 bytes
src/images/integrity.png | Bin 748 -> 0 bytes
src/images/lyx2.png | Bin 927 -> 0 bytes
src/images/mark.png | Bin 928 -> 0 bytes
src/images/messageFail.png | Bin 937 -> 0 bytes
src/images/messageInfo.png | Bin 978 -> 0 bytes
src/images/messageWarn.png | Bin 1014 -> 0 bytes
src/images/optIcon.png | Bin 200 -> 0 bytes
src/images/pdf-new.png | Bin 936 -> 0 bytes
src/images/pdf.png | Bin 349 -> 0 bytes
src/images/postscript.png | Bin 233 -> 0 bytes
src/images/preamble.png | Bin 266 -> 0 bytes
src/images/preferences.png | Bin 1381 -> 0 bytes
src/images/remove.png | Bin 288 -> 0 bytes
src/images/reqIcon.png | Bin 182 -> 0 bytes
src/images/search.png | Bin 1433 -> 0 bytes
src/images/splash-2.1.svg | 229 --
src/images/splash-2.1beta.png | Bin 179073 -> 0 bytes
src/images/splash-2.3.svg | 276 --
src/images/splash-2.4.svg | 284 --
src/images/splash-2.5.svg | 6 +-
src/images/splashBackground.png | Bin 157549 -> 0 bytes
src/images/strings.png | Bin 233 -> 0 bytes
src/images/unmark.png | Bin 1025 -> 0 bytes
src/images/user-home.png | Bin 1290 -> 0 bytes
src/images/view-refresh.png | Bin 1591 -> 0 bytes
src/images/viewsource.gif | Bin 119 -> 0 bytes
src/images/winedt.png | Bin 1495 -> 0 bytes
src/images/wizard.png | Bin 238 -> 0 bytes
src/images/wrongItem.png | Bin 776 -> 0 bytes
src/images/wwwciteseer.png | Bin 526 -> 0 bytes
src/java/net/sf/jabref/AdvancedTab.java | 11 +-
src/java/net/sf/jabref/AuthorList.java | 32 +-
src/java/net/sf/jabref/BasePanel.java | 133 +-
src/java/net/sf/jabref/BibtexEntry.java | 2 +-
src/java/net/sf/jabref/EntryEditor.java | 104 +-
src/java/net/sf/jabref/EntryEditorTab.java | 21 +-
src/java/net/sf/jabref/FieldEditor.java | 8 +-
src/java/net/sf/jabref/FieldTextArea.java | 17 +-
src/java/net/sf/jabref/FieldTextField.java | 13 +
src/java/net/sf/jabref/Globals.java | 1 +
src/java/net/sf/jabref/JabRef.java | 24 +-
src/java/net/sf/jabref/JabRefFrame.java | 15 +-
src/java/net/sf/jabref/JabRefPreferences.java | 29 +-
src/java/net/sf/jabref/MetaData.java | 5 +-
src/java/net/sf/jabref/PreviewPanel.java | 15 +-
src/java/net/sf/jabref/SearchManager2.java | 2 +
src/java/net/sf/jabref/Util.java | 35 +-
src/java/net/sf/jabref/about/AboutPanel.java | 10 -
.../autocompleter/AbstractAutoCompleter.java | 74 +
.../jabref/autocompleter/AutoCompleterFactory.java | 24 +
.../autocompleter/CrossrefAutoCompleter.java | 40 +
.../jabref/autocompleter/DefaultAutoCompleter.java | 48 +
.../autocompleter/EntireFieldAutoCompleter.java | 39 +
.../autocompleter/NameFieldAutoCompleter.java | 55 +
src/java/net/sf/jabref/collab/Change.java | 3 +-
.../net/sf/jabref/collab/ChangeDisplayDialog.java | 14 +-
src/java/net/sf/jabref/collab/EntryAddChange.java | 3 +-
src/java/net/sf/jabref/collab/EntryChange.java | 18 +-
.../net/sf/jabref/collab/EntryDeleteChange.java | 3 +-
.../net/sf/jabref/collab/FileUpdateMonitor.java | 9 +-
src/java/net/sf/jabref/collab/GroupChange.java | 3 +-
src/java/net/sf/jabref/collab/MetaDataChange.java | 3 +-
src/java/net/sf/jabref/collab/PreambleChange.java | 7 +-
src/java/net/sf/jabref/collab/StringAddChange.java | 3 +-
src/java/net/sf/jabref/collab/StringChange.java | 4 +-
.../net/sf/jabref/collab/StringNameChange.java | 4 +-
.../net/sf/jabref/collab/StringRemoveChange.java | 4 +-
.../export/OpenDocumentSpreadsheetCreator.java | 2 +-
.../net/sf/jabref/export/SaveDatabaseAction.java | 10 +
src/java/net/sf/jabref/export/SaveException.java | 4 +-
src/java/net/sf/jabref/export/SaveSession.java | 8 +-
.../export/layout/format/CreateDocBookAuthors.java | 55 +-
.../export/layout/format/CreateDocBookEditors.java | 40 +-
.../sf/jabref/export/layout/format/IfPlural.java | 47 +
.../net/sf/jabref/external/DroppedFileHandler.java | 95 +-
.../external/ExternalFileTypeEntryEditor.java | 8 +-
.../net/sf/jabref/external/MoveFileAction.java | 12 +-
src/java/net/sf/jabref/groups/AllEntriesGroup.java | 2 +-
src/java/net/sf/jabref/groups/ExplicitGroup.java | 6 +-
src/java/net/sf/jabref/groups/KeywordGroup.java | 8 +-
src/java/net/sf/jabref/groups/SearchGroup.java | 8 +-
.../net/sf/jabref/gui/AutoCompleteListener.java | 40 +-
src/java/net/sf/jabref/gui/AutoCompleter.java | 130 -
src/java/net/sf/jabref/gui/FileListEditor.java | 8 +-
.../sf/jabref/gui/MainTableSelectionListener.java | 24 +-
.../net/sf/jabref/gui/SearchResultsDialog.java | 8 +
.../net/sf/jabref/imports/BibsonomyScraper.java | 47 +
src/java/net/sf/jabref/imports/GeneralFetcher.java | 30 +-
src/java/net/sf/jabref/imports/JSTORFetcher2.java | 168 +
src/java/net/sf/jabref/imports/OAI2Fetcher.java | 4 +-
.../sf/jabref/imports/ScienceDirectFetcher.java | 151 +
.../sf/jabref/labelPattern/LabelPatternUtil.java | 3 +-
src/java/net/sf/jabref/msbib/MSBibEntry.java | 4 +-
src/java/net/sf/jabref/net/CookieHandlerImpl.java | 11 +-
src/java/net/sf/jabref/net/URLDownload.java | 88 +-
src/java/tests/net/sf/jabref/TestUtils.java | 40 +
.../tests/net/sf/jabref/gui/AutoCompleterTest.java | 164 +
src/java/tests/net/sf/jabref/imports/AllTests.java | 1 +
.../net/sf/jabref/imports/GeneralFetcherTest.java | 63 +
.../net/sf/jabref/imports/RISImporterTest.java | 107 +
.../tests/net/sf/jabref/testutils/TestUtils.java | 66 +
src/plugins/net.sf.jabref.core/plugin.xml | 11 +-
src/resource/JabRef_da.properties | 39 +-
src/resource/JabRef_de.properties | 42 +-
src/resource/JabRef_en.properties | 33 +-
src/resource/JabRef_fr.properties | 89 +-
src/resource/JabRef_it.properties | 55 +-
src/resource/JabRef_nl.properties | 33 +-
src/resource/JabRef_no.properties | 29 +-
src/resource/JabRef_tr.properties | 54 +-
src/resource/JabRef_zh.properties | 32 +-
src/resource/JabRef_zh.properties.UTF8 | 33 +-
src/resource/Menu_da.properties | 2 +
src/resource/Menu_de.properties | 20 +-
src/resource/Menu_en.properties | 2 +
src/resource/Menu_es.properties | 4 +-
src/resource/Menu_fr.properties | 12 +-
src/resource/Menu_it.properties | 4 +-
src/resource/Menu_nl.properties | 4 +-
src/resource/Menu_no.properties | 4 +-
src/resource/Menu_tr.properties | 5 +-
src/resource/Menu_zh.properties | 230 +-
src/resource/Menu_zh.properties.UTF8 | 4 +-
src/resource/build.properties | 6 +-
src/resource/layout/bibtexml.layout | 1 +
src/resource/layout/docbook.begin.layout | 5 +-
src/resource/layout/docbook.layout | 5 +-
src/resource/ods/mimetype | 1 +
src/tests/net/sf/jabref/bibtexFiles/test.bib | 279 ++
.../net/sf/jabref/imports/RisImporterTest1.ris | 13 +
src/txt/CHANGELOG | 54 +
src/txt/README | 2 +-
184 files changed, 6070 insertions(+), 1587 deletions(-)
diff --git a/build.number b/build.number
index 9f34c41..c46966c 100644
--- a/build.number
+++ b/build.number
@@ -1,3 +1,3 @@
#Build Number for ANT. Do not edit!
-#Sun Nov 01 16:45:05 CET 2009
-build.number=40
+#Sun Mar 07 13:57:35 CET 2010
+build.number=173
diff --git a/build.xml b/build.xml
index 5a7bd0a..6692d7b 100644
--- a/build.xml
+++ b/build.xml
@@ -22,8 +22,8 @@
Compiler: Ant
Authors: Joerg K. Wegner, wegnerj at informatik.uni-tuebingen.de
Morten O. Alver
- Version: $Revision: 3131 $
- $Date: 2009-11-01 15:46:02 +0100 (Sun, 01 Nov 2009) $
+ Version: $Revision: 3196 $
+ $Date: 2010-03-02 16:55:38 +0100 (Tue, 02 Mar 2010) $
$Author: mortenalver $
modified:
@@ -47,7 +47,7 @@
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-->
<!-- some version information -->
- <property name="jabref.version" value="2.6b2" />
+ <property name="jabref.version" value="2.6b3" />
<property name="jabref.placeholder.version" value="@version@" />
<!-- used by replace task -->
diff --git a/src/Jabref_trunk.iml b/src/Jabref.iml
similarity index 66%
rename from src/Jabref_trunk.iml
rename to src/Jabref.iml
index 5049fe7..a58b96e 100644
--- a/src/Jabref_trunk.iml
+++ b/src/Jabref.iml
@@ -7,55 +7,11 @@
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
+ <orderEntry type="library" name="plugin" level="project" />
<orderEntry type="module-library">
<library>
<CLASSES>
- <root url="jar://$MODULE_DIR$/../lib/plugin/velocity-dep-1.5.jar!/" />
- </CLASSES>
- <JAVADOC />
- <SOURCES />
- </library>
- </orderEntry>
- <orderEntry type="module-library">
- <library>
- <CLASSES>
- <root url="jar://$MODULE_DIR$/../lib/plugin/jpf.jar!/" />
- </CLASSES>
- <JAVADOC />
- <SOURCES />
- </library>
- </orderEntry>
- <orderEntry type="module-library">
- <library>
- <CLASSES>
- <root url="jar://$MODULE_DIR$/../lib/plugin/JPFCodeGenerator-rt.jar!/" />
- </CLASSES>
- <JAVADOC />
- <SOURCES />
- </library>
- </orderEntry>
- <orderEntry type="module-library">
- <library>
- <CLASSES>
- <root url="jar://$MODULE_DIR$/../lib/plugin/commons-logging.jar!/" />
- </CLASSES>
- <JAVADOC />
- <SOURCES />
- </library>
- </orderEntry>
- <orderEntry type="module-library">
- <library>
- <CLASSES>
- <root url="jar://$MODULE_DIR$/../lib/plugin/jpf-boot.jar!/" />
- </CLASSES>
- <JAVADOC />
- <SOURCES />
- </library>
- </orderEntry>
- <orderEntry type="module-library">
- <library>
- <CLASSES>
- <root url="jar://$MODULE_DIR$/../lib/plugin/JPFCodeGenerator.jar!/" />
+ <root url="jar://$MODULE_DIR$/../lib/glazedlists-1.7.0_java15.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
@@ -64,7 +20,7 @@
<orderEntry type="module-library">
<library>
<CLASSES>
- <root url="jar://$MODULE_DIR$/../lib/substance-4.1.jar!/" />
+ <root url="jar://$MODULE_DIR$/../lib/microba.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
@@ -73,7 +29,7 @@
<orderEntry type="module-library">
<library>
<CLASSES>
- <root url="jar://$MODULE_DIR$/../lib/microba.jar!/" />
+ <root url="jar://$MODULE_DIR$/../lib/spin.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
@@ -100,16 +56,7 @@
<orderEntry type="module-library">
<library>
<CLASSES>
- <root url="jar://$MODULE_DIR$/../lib/spin.jar!/" />
- </CLASSES>
- <JAVADOC />
- <SOURCES />
- </library>
- </orderEntry>
- <orderEntry type="module-library">
- <library>
- <CLASSES>
- <root url="jar://$MODULE_DIR$/../lib/antlr.jar!/" />
+ <root url="jar://$MODULE_DIR$/../lib/antlr-3.0b5.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
@@ -118,7 +65,7 @@
<orderEntry type="module-library">
<library>
<CLASSES>
- <root url="jar://$MODULE_DIR$/../lib/glazedlists-1.7.0_java15.jar!/" />
+ <root url="jar://$MODULE_DIR$/../lib/PDFBox-0.7.3-dev-reduced.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
@@ -127,7 +74,7 @@
<orderEntry type="module-library">
<library>
<CLASSES>
- <root url="jar://$MODULE_DIR$/../lib/PDFBox-0.7.3-dev-reduced.jar!/" />
+ <root url="jar://$MODULE_DIR$/../lib/antlr.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
@@ -136,7 +83,7 @@
<orderEntry type="module-library">
<library>
<CLASSES>
- <root url="jar://$MODULE_DIR$/../lib/antlr-3.0b5.jar!/" />
+ <root url="jar://$MODULE_DIR$/../lib/looks-2.2.0.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
@@ -145,7 +92,7 @@
<orderEntry type="module-library">
<library>
<CLASSES>
- <root url="jar://$MODULE_DIR$/../lib/looks-2.2.0.jar!/" />
+ <root url="jar://$MODULE_DIR$/../lib/mysql-connector-java-5.0.7-bin.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
@@ -154,7 +101,7 @@
<orderEntry type="module-library">
<library>
<CLASSES>
- <root url="jar://$MODULE_DIR$/../lib/mysql-connector-java-5.0.7-bin.jar!/" />
+ <root url="jar://$MODULE_DIR$/../lib/junit.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
diff --git a/src/help/About.html b/src/help/About.html
index 92d8cc8..cbe66ef 100755
--- a/src/help/About.html
+++ b/src/help/About.html
@@ -48,6 +48,7 @@
Aaron Chen,
Fabrice Dessaint,
Nathan Dunn,
+ E. Hakan Duran,
Brian Van Essen,
Alexis Gallagher,
David Gleich,
diff --git a/src/help/CustomExports.html b/src/help/CustomExports.html
index c8d8694..781dbbb 100644
--- a/src/help/CustomExports.html
+++ b/src/help/CustomExports.html
@@ -340,6 +340,11 @@
consecutive newlines (e.g. \n \n) as the beginning of a new
paragraph and creates paragraph-html-tags accordingly.</li>
+ <li><code>IfPlural</code> : outputs its first argument if the input field looks
+ like an author list with two or more names, or its second argument otherwise.
+ E.g. <code>\format[IfPlural(Eds.,Ed.)]{\editor}</code> will output "Eds." if there
+ is more than one editor, and "Ed." if there is only one.</li>
+
<li><code>LastPage</code> : returns the last page from the "pages" field, if set.
For instance, if the pages field is set to "345-360" or "345--360",
this formatter will return "360".</li>
diff --git a/src/help/JSTOR.html b/src/help/JSTOR.html
index 8ec3ed8..e21ab70 100644
--- a/src/help/JSTOR.html
+++ b/src/help/JSTOR.html
@@ -5,6 +5,9 @@
<h1>JStor search</h1>
+ <p>The JStor search relies on the BibSonomy scraper project (http://scraper.bibsonomy.org/) to
+ extract information from the JStor web page.</p>
+
<p>The following help was taken from the JStor website and may change if JStor does:</p>
<ul>
<li>You will be searching the author, title, and full-text of all types of journal content (articles, book reviews, etc.) by default</li>
@@ -13,7 +16,7 @@
<li>Use AND, OR, NOT to combine terms (e.g., ti:"two-person cooperative games" AND au:"john nash")</li>
</ul>
- <p>JSTOR is a not-for-profit organization with a dual mission to create and maintain a trusted archive of important scholarly journals, and to provide access to these journals as widely as possible. JSTOR offers researchers the ability to retrieve high-resolution, scanned images of journal issues and pages as they were originally designed, printed, and illustrated. The journals archived in JSTOR span many disciplines.</p>
+ <p>JStor is a not-for-profit organization with a dual mission to create and maintain a trusted archive of important scholarly journals, and to provide access to these journals as widely as possible. JSTOR offers researchers the ability to retrieve high-resolution, scanned images of journal issues and pages as they were originally designed, printed, and illustrated. The journals archived in JSTOR span many disciplines.</p>
<p>JStor offers access to the following topics:</p>
<ul>
diff --git a/src/help/RevisionHistory.html b/src/help/RevisionHistory.html
index ced61f5..13c9a24 100644
--- a/src/help/RevisionHistory.html
+++ b/src/help/RevisionHistory.html
@@ -5,47 +5,101 @@
<h1>Revision history</h1>
- <h3>Version 2.6beta 2</h3>
- <ul>
- <li>Added export formatter "Default" which takes a single argument. Outputs the string to format
- unchanged if it is non-empty, otherwise outputs the argument.</li>
- <li>Added option under Options -> Preferences -> General for disabling the strict enforcing of
- correct BibTeX keys. Disabling this makes it possible to use e.g. umlaut characters in keys.</li>
- <li>Modified launcher script for Windows installer to give higher heap size limit.</li>
- <li>Improved autocompletion. All fields with autocompletion which have content selectors will now
- autocomplete on content selector values. For the "journal" field, the autocompleter will now
- additionally use entries from the current journal abbreviations list, and will also complete
- on the entire field up to the cursor rather than just looking at the last word only.</li>
- <li>Added support for postformatter in Layout. The postformatter will be run after
- the formatters called from a layout.</li>
- <li>Improved group autogeneration. Added option to generate groups based on author or editor
- last names. Autogenerated groups are now alphabetized.</li>
- <li>Modified Endnote export filter so "--" gets converted to "-" in the "pages" field.</li>
- <li>Changed keyword groups so they will match on whole words only. E.g. a keyword group for the
- keyword "can" will no longer match the keyword "scanner".</li>
- <li>Improved entry type determination and author parsing for some varieties of CSA files.</li>
- <li>Minor change to Harvard RTF export. Added space after "ed.", and added editor to output for
- inbook entries.</li>
- <li>Set limit to the number of displayed characters in group names in groups tree in order to
- avoid group panel width problems.</li>
- <li>Changed file link handling so all remote links classified as URL can be opened through
- the browser. Setting a different file type manually makes JabRef call a remote link using
- the handler application instead.</li>
- <li>Modified Endnote/refer import filter to strip "doi:" from the %R field.</li>
- <li>Modified HTML conversion so single newline is displayed in the preview (and HTML exports) as
- <br>, while multiple newlines are displayed as <p>.
- <li>Fixed bug: switching entry editor between entries of different type may result in switching
- of entry editor tabs.</li>
- <li>Fixed bug: adding external file link leads to relative path from root directory if file
- directory is set to an empty string.</li>
- <li>Fixed error message when a # in a BibTeX string prevents saving. No longer states that the
- problem is in an entry, but specifies that it is in a string.</li>
- <li>Fixed bug: ODS export doesn't resolve BibTeX strings.</li>
- <li>Fixed bug: content selector for "editor" field uses "," instead of " and " as delimiter.</li>
- <li>Fixed bug: editing source doesn't allow change of entry type.</li>
- <li>RTFChars formatter now converts --- to \emdash and -- to \endash.</li>
- </ul>
-
+ <h3>Version 2.6beta3</h3>
+
+ <li>Added ScienceDirect entry fetcher that utilizes the BibSonomy scraper.</li>
+ <li>Changed non-native file dialog setting so files cannot be renamed. This prevents
+ accidentally entering rename mode when trying to enter directory. Can be enabled
+ again in Options -> Preferences -> Advanced.</li>
+ <li>Added new JStor fetcher that utilizes the BibSonomy scraper to obtain BibTeX data.</li>
+ <li>Fixed bug in CookieHandlerImpl.</li>
+ <li>Fixed bug; when dragging a file into JabRef and asking to move it to the file
+ directory, warning will now be given if the destination file already exists. Patch
+ by Alastair Mailer.</li>
+ <li>When dragging a file into JabRef and asking to copy or move it to the file directory,
+ it is now possible to rename to an arbitrary name. Patch by Alastair Mailer.</li>
+ <li>Added "review" field to BibTeXML export.</li>
+ <li>Added Reset button to entry fetchers. Patch by Dennis Hartrampf and Ines Moosdorf.</li>
+ <li>Changed Microsoft Office XML export so "number" rather than "issue" is exported
+ as <b:Issue>, which conforms with import format.</li>
+ <li>Added confirmation dialog that allows saving without backup in cases when
+ backup creation fails.</li>
+ <li>Fixed bug 2938562: using the move/rename feature on a file link could give an
+ absolute link even if the file was put below the main file directory.</li>
+ <li>Fixed bug 2931293: error generating key with [authorsAlpha] for short names.</li>
+ <li>When checking for external modifications, file size is now checked in addition
+ to the time stamp.</li>
+ <li>Fixed handling of maximised state when shutting down and starting up JabRef.
+ Patch by Igor L. Chernyavsky.</li>
+ <li>Fixed bug that prevented correct handling of DOS short file names. Patch
+ by Igor L. Chernyavsky.</li>
+ <li>Added support for KOI8_R character set.</li>
+ <li>Removed DocumentPrinter class, using standard API functions instead. Patch by
+ Tony Mancill.</li>
+ <li>Removed HightlightFilter class, using standard API functions instead. Patch by
+ Tony Mancill.</li>
+ <li>Changed keyboard shortcut for IEEXplorer search to Alt-F8.</li>
+ <li>Disabled JStor search, which doesn't work due to API changes.</li>
+ <li>External file type manager now removes "." prefix in file type extension if the user
+ has typed it that way.</li>
+ <li>Preview panel now defaults to preview layout 1 instead of 2. Switched default layouts.</li>
+ <li>Added IfPlural formatter by Russell Almond. The formatter outputs its first argument
+ if the input field contains " and " and the second one otherwise.</li>
+ <li>Applied patch by Philipp Cordes and Björn Kahlert for improved handling of names by
+ autocompleter. The patch also reorganizes the autocompleter classes.</li>
+ <li>Table will now scroll to keep the currently edited entry visible if an edit leads to
+ the entry getting sorted to a different position.</li>
+ <li>Reworked author and editor handling in Docbook export. Added Docbook XML header.</li>
+ <li>Database will no longer be marked as changed after accepting external changes, unless one or
+ more changes were not accepted before merging, and unless database was already marked as
+ changed.</li>
+ <li>Fixed bug: undesired autocompletion when saving file.</li>
+ <li>Fixed bug: entry editor doesn't appear when new entry is added while a filtering search or
+ group selection is active.</li>
+ <li>Fixed bug in writing of metadata on Windows. For certain metadata lengths newlines would be
+ messed up after the metadata comment in a bib file.</li>
+ <li>Search dialog now automatically previews first hit, and hides preview if there are no hits.</li>
+
+ <h3>Version 2.6beta2</h3>
+
+ <li>Added export formatter "Default" which takes a single argument. Outputs the string to format
+ unchanged if it is non-empty, otherwise outputs the argument.</li>
+ <li>Added option under Options -> Preferences -> General for disabling the strict enforcing of
+ correct BibTeX keys. Disabling this makes it possible to use e.g. umlaut characters in keys.</li>
+ <li>Modified launcher script for Windows installer to give higher heap size limit.</li>
+ <li>Improved autocompletion. All fields with autocompletion which have content selectors will now
+ autocomplete on content selector values. For the "journal" field, the autocompleter will now
+ additionally use entries from the current journal abbreviations list, and will also complete
+ on the entire field up to the cursor rather than just looking at the last word only.</li>
+ <li>Added support for postformatter in Layout. The postformatter will be run after
+ the formatters called from a layout.</li>
+ <li>Improved group autogeneration. Added option to generate groups based on author or editor
+ last names. Autogenerated groups are now alphabetized.</li>
+ <li>Modified Endnote export filter so "--" gets converted to "-" in the "pages" field.</li>
+ <li>Changed keyword groups so they will match on whole words only. E.g. a keyword group for the
+ keyword "can" will no longer match the keyword "scanner".</li>
+ <li>Improved entry type determination and author parsing for some varieties of CSA files.</li>
+ <li>Minor change to Harvard RTF export. Added space after "ed.", and added editor to output for
+ inbook entries.</li>
+ <li>Set limit to the number of displayed characters in group names in groups tree in order to
+ avoid group panel width problems.</li>
+ <li>Changed file link handling so all remote links classified as URL can be opened through
+ the browser. Setting a different file type manually makes JabRef call a remote link using
+ the handler application instead.</li>
+ <li>Modified Endnote/refer import filter to strip "doi:" from the %R field.</li>
+ <li>Modified HTML conversion so single newline is displayed in the preview (and HTML exports) as
+ <br>, while multiple newlines are displayed as <p>.</li>
+ <li>Fixed bug: switching entry editor between entries of different type may result in switching
+ of entry editor tabs.</li>
+ <li>Fixed bug: adding external file link leads to relative path from root directory if file
+ directory is set to an empty string.</li>
+ <li>Fixed error message when a # in a BibTeX string prevents saving. No longer states that the
+ problem is in an entry, but specifies that it is in a string.</li>
+ <li>Fixed bug: ODS export doesn't resolve BibTeX strings.</li>
+ <li>Fixed bug: content selector for "editor" field uses "," instead of " and " as delimiter.</li>
+ <li>Fixed bug: editing source doesn't allow change of entry type.</li>
+ <li>RTFChars formatter now converts --- to \emdash and -- to \endash.</li>
+
<h3>Version 2.6beta</h3>
<ul>
diff --git a/src/help/ScienceDirect.html b/src/help/ScienceDirect.html
new file mode 100644
index 0000000..792f5f8
--- /dev/null
+++ b/src/help/ScienceDirect.html
@@ -0,0 +1,15 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<body text="#275856">
+ <basefont size="4" color="#2F4958" face="arial" />
+
+ <h1>ScienceDirect search</h1>
+
+ <p>The ScienceDirecy search relies on the BibSonomy scraper project (http://scraper.bibsonomy.org/) to
+ extract information from the ScienceDirect web page.</p>
+
+ <p>This fetcher attempts to run a quick search in the ScienceDirect web site, resulting in
+ up to 100 hits. All hits are then imported.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/src/help/da/About.html b/src/help/da/About.html
index fbf40c4..7475d6a 100755
--- a/src/help/da/About.html
+++ b/src/help/da/About.html
@@ -49,6 +49,7 @@
Aaron Chen,
Fabrice Dessaint,
Nathan Dunn,
+ E. Hakan Duran,
Brian Van Essen,
Alexis Gallagher,
David Gleich,
diff --git a/src/help/de/About.html b/src/help/de/About.html
index 5bf8769..bd0ddd3 100644
--- a/src/help/de/About.html
+++ b/src/help/de/About.html
@@ -47,6 +47,7 @@
Aaron Chen,
Fabrice Dessaint,
Nathan Dunn,
+ E. Hakan Duran,
Brian Van Essen,
Alexis Gallagher,
David Gleich,
diff --git a/src/help/de/JabRef-UserManual_de.tex b/src/help/de/JabRef-UserManual_de.tex
new file mode 100644
index 0000000..b08216d
--- /dev/null
+++ b/src/help/de/JabRef-UserManual_de.tex
@@ -0,0 +1,3201 @@
+%%%%% To do %%%%%
+% DW 2007-12-03
+% - Wiki-Seite 'Translating JabRef' �bersetzen und einbinden
+% - [2.4 beta] Plugin.html erg�nzen
+% - [2.4 beta?] SQLExport.html erg�nzen
+
+\documentclass[
+ fontsize=10pt,
+ headings=normal,
+ paper=a5,
+ pagesize,
+ ngerman
+]{scrartcl}
+\usepackage[T1]{fontenc}
+\usepackage[latin1]{inputenc}
+\usepackage{textcomp}
+\setcounter{secnumdepth}{2}
+\setcounter{tocdepth}{4}
+\usepackage{xspace}
+
+%%%%% author, version of file %%%%%
+\newcommand{\versiondate}{26.\,1.\,2010}%
+\def\FileAuthor{Dominik Wa�enhoven}
+\def\FileTitle{\jabrefversion{} Benutzerhandbuch}
+
+%%%%% Packages %%%%%
+\usepackage{array}
+\usepackage{longtable}
+\usepackage{amsmath}
+\usepackage{graphicx}
+\usepackage{setspace}
+\usepackage{amssymb}
+\usepackage{hanging}
+
+\makeatletter
+%%%%% LyX command %%%%%
+\providecommand{\LyX}{L\kern-.1667em\lower.25em\hbox{Y}\kern-.125emX\@\xspace}
+
+%%%%% Listings %%%%%
+\usepackage{listings}
+\lstset{%
+ frame=none,
+ %backgroundcolor=\color{pyellow},
+ language=[LaTeX]TeX,
+ basicstyle=\ttfamily,%\small,
+ commentstyle=\color{red},
+ keywordstyle=, % LaTeX-Befehle werden nicht fett dargestellt
+ numbers=none,%left/right
+ %numberstyle=\tiny\lnstyle,
+ %numbersep=5pt,
+ %numberblanklines=false,
+ breaklines=true,
+ %caption=\lstname,
+ xleftmargin=25pt,
+ xrightmargin=20pt,
+ escapeinside={(*}{*)},
+ belowskip=\medskipamount,
+ prebreak=\mbox{$\hookleftarrow$}% "geklaut" vom scrguide (KOMA-Script)
+}
+
+%%%%% Environment "revhist" (for revision history) %%%%%
+\newenvironment{revhist}[1]
+ {\subsection*{#1}
+ \list{--}{\setlength\itemsep{0pt}\setlength{\parsep}{0pt}}}
+ {\endlist}
+
+%%%%% PDF 1.2 for Acrobat 3 onwards %%%%%
+\pdfoptionpdfminorversion 2
+
+%%%%% Colors %%%%%
+\usepackage[dvipsnames]{xcolor}
+\definecolor{dkblue}{rgb}{0,0.1,0.5} % dark blue
+\definecolor{dkred}{rgb}{0.66,0.04,0.04} % dark red
+\definecolor{pyellow}{rgb}{1,0.97,0.75} % pale yellow
+
+%%%%% New commands %%%%%
+%%% JabRef "logo"
+\DeclareRobustCommand{\jabref}{%
+ \texorpdfstring{% TeX string
+ \raisebox{-.32ex}{\color{dkred}J}\kern-.06em%
+ \hbox{$\m at th$% %% force math size calculations
+ \csname S@\f at size\endcsname
+ \fontsize\sf at size\z@
+ \math at fontsfalse\selectfont
+ \color{orange}A\kern-.025emB}\-%
+ \hbox{\kern-.06em\-R\hspace{-.08em}%
+ \raisebox{.16ex}{$\m at th$% %% force math size calculations
+ \csname S@\f at size\endcsname
+ \fontsize\sf at size\z@
+ \math at fontsfalse\selectfont
+ E\kern-.025emF}}\xspace}%
+ {JabRef\xspace}% PDF string
+}
+
+%%% version number
+\newcommand{\versionnr}{\texorpdfstring{2.4}{2.4}} %
+%%% JabRef logo with version nr
+\newcommand{\jabrefversion}{\jabref~\versionnr}
+%%% BibTeX logo
+\newcommand{\bibtex}{\texorpdfstring{Bib\kern-.125em\TeX\xspace}{BibTeX}}
+%%% for Menu references
+\newcommand{\menu}[1]{\texorpdfstring{{\color{dkred}\textit{#1}}}{#1}}
+%%% Menu separator
+\newcommand{\msep}{{\color{dkred}\textit{\guilsinglright}}\xspace}
+%%% yellow box with dark blue text
+\newcommand{\tip}[2][Tipp: ]{%
+ \begin{center}%
+ \colorbox{pyellow}{\parbox{0.85\textwidth}{%
+ \color{dkblue}\textit{#1}#2}}%
+ \end{center}%
+}%
+
+\newcommand{\verfasser}[1]{%
+ \begin{flushright}%
+ \colorbox{pyellow}{\parbox{0.7\textwidth}{%
+ \color{dkblue}\textit{Dieser Abschnitt stammt von #1}}}%
+ \end{flushright}%
+}%
+
+%%% for the FAQ
+\newcounter{faq}
+\newcommand{\faq}[2]{\refstepcounter{faq}%
+ \medskip\noindent\colorbox{pyellow}{\parbox{0.9\textwidth}{%
+ \hangpara{0.11\textwidth}{1}%
+ \color{dkblue}Frage \thefaq: \textit{#1}}}\par\smallskip%
+ \begin{hangparas}{0.11\textwidth}{0}%
+ #2\par%
+ \end{hangparas}
+}%
+
+%%% for CTAN references
+\newcommand{\ctan}[1]{%
+ {\textsc{ctan}: \color{dkred}#1}%
+}
+
+%%%%% Headings %%%%%
+\usepackage{scrpage2}
+\pagestyle{scrheadings}
+\ihead{\FileTitle{} (\versiondate{})}
+\chead{}
+\ohead{\headmark}
+\ifoot{}
+\cfoot{\pagemark}
+\ofoot{}
+\automark[section]{section}
+
+%%%%% Fonts %%%%%
+\usepackage{charter}
+\addtokomafont{sectioning}{\rmfamily} % Headings with serifs
+\renewcommand{\headfont}{\normalfont\itshape} % Headlines italic, not slanted ***
+\usepackage[scaled=.83]{beramono}
+
+%%%%% Page Dimensions %%%%%
+\usepackage{typearea}
+\typearea{calc}
+
+%%%%% Other stuff %%%%%
+\deffootnote{1.5em}{1em}{\makebox[1.5em][l]{\thefootnotemark}}
+\usepackage{microtype} % micro typography
+
+%%%%% Mini TOCs %%%%%
+\usepackage{minitoc}
+\mtcsetrules{secttoc}{off}
+%\mtcsetdepth{secttoc}{3}
+\mtcsetfont{secttoc}{subsection}{}
+%\mtcsettitle{secttoc}{In diesem Abschnitt}
+%\mtcsettitlefont{secttoc}{\itshape}
+
+%%%%% Language %%%%%
+\usepackage{babel}
+
+%%%%% Bibliography %%%%%
+\usepackage{jurabib}
+\jurabibsetup{%
+ annote=true,
+ authorformat=year,
+ dotafter=bibentry
+}
+\renewcommand{\biblnfont}{} % Autoren-Nachnamen (Standard: fett)
+\renewcommand{\bibfnfont}{} % Autoren-Vornamen (Standard: fett)
+\renewcommand{\bibelnfont}{} % Hrsg-Nachnamen (Standard: fett)
+\renewcommand{\bibefnfont}{} % Hrsg-Vornamen (Standard: fett)
+\renewcommand{\bibtfont}{\textit} % Titel (B�cher)
+\renewcommand{\bibbtfont}{\textit} % Titel (Sammelwerke)
+\renewcommand{\bibjtfont}{\textit} % Titel (Zeitschriften)
+\renewcommand{\bibpldelim}{(} % runde Klammern bei...
+\renewcommand{\bibprdelim}{)} % ...Zeitschriften (Jahr)
+\renewcommand{\ajtsep}{} % kein Komma nach Zs-Titeln
+\renewcommand{\biburlprefix}{\jblangle\textsc{url: }} % Klammer und Text vor einer URL (Standard: "URL: ")
+
+\renewcommand{\bib at heading}{\addsec[Literaturverzeichnis]{Kommentiertes Literaturverzeichnis}}
+
+%%%%% Hyperref %%%%%
+\usepackage{hyperref}
+\hypersetup{%
+breaklinks=true,%
+colorlinks=true,%
+linkcolor=dkblue,%
+urlcolor=dkblue,%
+citecolor=dkblue,%
+pdftitle={JabRef \versionnr{} Benutzerhandbuch},%
+pdfsubject={Einf�hrung in die Benutzung von JabRef},%
+pdfkeywords = {BibTeX, Bibliographie, Literaturverwaltung},%
+pdfauthor={\FileAuthor},%
+pdfstartview=FitH,%
+bookmarksopen=true,%
+bookmarksopenlevel=1,%
+}
+\urlstyle{rm}
+
+\hyphenation{
+LaTeX
+BibTeX
+Da-tei-na-men
+Me-n�-be-feh-le
+For-mat-erken-nung% verhindert Trennung "Formater-kennung"
+Werk-zeug-leis-te
+}
+
+\makeatother
+
+%%%%% %%%%% %%%%% %%%%% %%%%% %%%%% %%%%% %%%%% %%%%% %%%%% %%%%% %%%%%
+\begin{document}
+
+\subject{\includegraphics[scale=.5]{../../images/JabRef-icon-48}}
+
+
+\title{\jabrefversion{}\\
+Benutzerhandbuch}
+
+
+\author{Dominik Wa�enhoven\\
+{\normalsize (\href{mailto:domwass at users.sourceforge.net}{domwass at users.sourceforge.net})}}
+
+
+\date{\small \versiondate}
+
+\maketitle
+
+\begin{abstract}
+\jabref ist eine grafische Java-Anwendung zur Bearbeitung von \bibtex{}-Dateien
+(.bib). Mit \jabref k�nnen Literaturangaben in Gruppen organisiert
+und mit einem einfachen Klick die Ansicht auf eine einzelne Gruppe,
+eine Schnittmenge von Gruppen oder die Gesamtmenge mehrerer Gruppen
+eingegrenzt werden. \jabref kann Literaturangaben sortieren (f�r
+alle Standard-\bibtex{}-Felder) und automatisch \bibtex{}-Keys erzeugen.
+Auch Links zu PDF-Dateien oder Webseiten k�nnen mit \jabref einfach
+erstellt werden.
+
+\jabref kann verschiedene Dateiformate importieren und exportieren,
+au�erdem k�nnen die Exportfilter angepasst werden. \jabref kann
+auch von der Kommandozeile gestartet werden, um von einem Importformat
+in ein Exportformat zu konvertieren, ohne die grafische Benutzeroberfl�che
+zu starten.
+\end{abstract}
+\begin{quote}
+\begin{spacing}{0.7}
+\begin{center}{\scriptsize Copyright \textcopyright{} 2005--2010, Dominik
+Wa�enhoven}
+\end{center}
+{\scriptsize Dieses Handbuch steht unter einer Creative Commons Namensnennung"=Weitergabe unter gleichen Bedingungen 3.0 Deutschland Lizenz (CC-by-sa). Die Lizenzbedingungen k�nnen unter
+\href{http://creativecommons.org/licenses/by-sa/3.0/de/}{http://creativecommons.org/licenses/by-sa/3.0/de}
+eingesehen werden.\par}\end{spacing}
+
+\end{quote}
+\thispagestyle{empty}
+
+\newpage
+\dosecttoc[e]
+\faketableofcontents{}
+
+\newpage
+
+\section{Einleitung}
+\secttoc
+
+\subsection{�ber dieses Handbuch}\label{subsec:about}
+
+Dieses Handbuch will eine kurze Einf�hrung zu den n�tzlichsten Funktionen
+von \jabref bieten, ohne dabei eine ersch�pfende Beschreibung aller
+Funktionalit�ten dieser Software zu liefern. \emph{}\jabref ist
+das Ergebnis der Verschmelzung von \emph{BibKeeper} und \emph{JBibtexManager}.
+Weitere Informationen gibt es im Programm selbst unter \menu{Hilfe} \msep{} \menu{Inhalt}
+sowie im Internet unter \url{http://jabref.sourceforge.net}. Wer dann immer noch keine Antwort auf seine Frage oder keine L�sung zu seinem Problem hat, kann �ber die Foren oder die Mailingliste auf der Projektseite bei Sourceforge weitere Hilfe bekommen (siehe dazu den Abschnitt \nameref{sec:faq}).
+
+Die Anleitungen basieren auf den Hilfeseiten des Programms. Da dieses
+Handbuch und die Hilfeseiten unabh�ngig voneinander gepflegt und aktualisiert
+werden, m�ssen die Beschreibungen jedoch nicht immer �bereinstimmen.
+Im Zweifel sind die Hilfeseiten des Programms aktueller als die hier
+vorgelegte Beschreibung.
+
+Am Anfang jedes Abschnitts sollte~(!) zun�chst stehen, wie man zur
+entsprechenden Funktion gelangt (d.\,h. �ber welches Men� und mit
+welchem Tastenk�rzel). Men�-Eintr�ge werden in einer kursiven, dunkelroten
+Schrift dargestellt (Beispiel: \menu{Men�} \msep{} \menu{Untermen�}).
+Besondere Hinweise und Tipps werden in einem gelb hinterlegten Kasten
+mit dunkelblauer Schrift dargestellt. Hyperlinks sind ebenfalls dunkelblau
+und anklickbar~-- das gilt sowohl f�r die Navigation innerhalb des
+Dokuments als auch f�r Links ins Internet.
+
+Wenn Ihnen in diesem Handbuch Fehler auf"|fallen oder wenn Sie Anregungen zum Handbuch haben, w�rde ich mich �ber eine kurze Nachricht per \href{mailto:domwass at users.sourceforge.net}{E-Mail} freuen. �ber den Stand und die einzelnen Versionen dieses Handbuchs gibt der Abschnitt ">\nameref{RevisionHistory}"< Auskunft.
+
+\subsection{Einf�hrung in \bibtex{}}
+
+\label{BibtexHelp}\tip[]{\jabref hilft Ihnen bei der Arbeit mit
+Ihren \bibtex{}-Dateien, aber es m�ssen dennoch Regeln beachtet werden,
+wenn Sie Ihre Eintr�ge bearbeiten. Nur so kann sichergestellt werden,
+dass \bibtex{} Ihre Datei richtig verarbeiten kann.}
+
+\noindent Im Folgenden k�nnen nur einige allgemeine Hinweise gegeben werden. Ausf�hrlichere Einf�hrungen und weitere Erl�uterungen zu \bibtex{} finden Sie bei den im \hyperlink{bibliography}{kommentierten Literaturverzeichnis} aufgef�hrten Beitr�gen.
+
+\subsubsection{\bibtex{}-Eintragstypen}
+\label{Eintragstypen}
+Je nachdem, ob sie ein Buch, einen Zeitschriftenartikel, einen Sammelband oder ein anderes Dokument referenzieren m�chten, h�lt \bibtex{} unterschiedliche Eintragstypen bereit. Hier folgt eine kurze Aufstellung der meist gebrauchten Eintragstypen.\footnote{Vgl. \cite[12--17]{Markey2005}; \cite[7--9]{btxdoc}.} Manche Paktete (wie ">jurabib"<) stellen weitere Eintragstypen zur Verf�gung, die Sie nat�rlich auch in \jabref verwenden k�nnen (mehr dazu im Abschnitt \nameref{CustomEntriesHelp}) [...]
+
+\begin{itemize}
+\item \emph{@article}\\
+Ein Artikel in einer Zeitschrift.
+\item \emph{@book}\\
+Ein Buch, von einem Verlag ver�ffentlicht.
+\item \emph{@booklet}\\
+Ein gedrucktes und gebundenes Buch ohne Verlag.
+\item \emph{@conference}\\
+Siehe \emph{@inproceedings}
+\item \emph{@inbook}\\
+Ein Teil eines Buches, z.\,B. ein Kapitel oder Abschnitt.
+\item \emph{@incollection}\\
+Ein Beitrag aus einem Buch, z.\,B. einem Sammelband.
+\item \emph{@inproceedings}\\
+Ein Artikel aus einem Tagungsbericht, der nicht zwangsl�ufig in einem Verlag erschienen ist.
+\item \emph{@manual}\\
+Eine Dokumentation oder ein Handbuch.
+\item \emph{@mastersthesis}\\
+Eine Diplom-/Magisterarbeit.
+\item \emph{@misc}\\
+Dieser Typ kann benutzt werden, wenn nichts anderes passt.
+\item \emph{@phdthesis}\\
+Eine (unver�ffentlichte) Dissertation.
+\item \emph{@proceedings}\\
+Ein Tagungsbericht.
+\item \emph{@techreport}\\
+Von einer Universit�t oder Institution (normalerweise in einer Reihe) ver�ffentlichter Bericht.
+\item \emph{@unpublished}\\
+Ein Dokument mit Autor und Titel, unver�ffentlicht.
+\end{itemize}
+
+\subsubsection{\bibtex{}-Felder}
+
+Es gibt viele unterschiedliche Felder in \bibtex{} und einige zus�tzliche Felder, die Sie in \jabref einsetzen k�nnen.
+Grunds�tzlich k�nnen Sie \LaTeX{}-Befehle in Feldern, die Text beinhalten, einsetzen. \bibtex{} wird Ihr Literaturverzeichnis automatisch formatieren und je nach \bibtex{} style (Stildatei .bst) Gro�buchstaben verkleinern. Um sicherzustellen, dass Anfangsbuchstaben gro� bleiben, m�ssen Sie die W�rter in geschweifte Klammern einschlie�en, wie im Wort \{Belgien\}.\footnote{Die meisten deutschen \bibtex{}-Stile behalten die Gro�buchstaben ohnehin bei.}
+
+Hinweise zu einigen Feldtypen:
+\begin{itemize}
+\item \emph{Bibtexkey}\\
+Eine eindeutige Bezeichnung, um sich in \LaTeX{}-Dokumenten auf den Eintrag beziehen zu k�nnen. Beachten Sie, dass der Bibtexkey genau mit dem Verweis im \LaTeX{}-Dokument �bereinstimmen muss (auch die Gro�-/Kleinschreibung).
+ \item \emph{address}\\
+ Der Ort des \emph{Verlags} oder einer anderen Institution.
+ \item \emph{annote}\\
+ Eine Anmerkung.
+Dieses Feld wird von den Standard-Bibliographiestilen nicht verwendet, kann aber bei einigen Stilen benutzt werden, um eine kommentierte Literaturliste zu erstellen.
+ \item \emph{author}\\
+ Dieses Feld sollte alle Autoren Ihres Eintrags enthalten. Die Namen werden durch das Wort \texttt{and} getrennt, auch wenn es mehr als zwei Autoren gibt. Jeder Name kann in zwei gleichwertigen Formen notiert werden:
+\begin{itemize}
+\item Donald E. Knuth \emph{oder} Knuth, Donald E.
+\item Eddie van Halen \emph{oder} van Halen, Eddie
+\end{itemize}
+Die zweite Form sollte f�r Autoren mit zwei oder mehr Nachnamen benutzt werden, um zwischen dem mittleren und dem Nachnamen zu unterscheiden.
+ \item \emph{booktitle}\\
+ Der Titel eines Buches, aus dem ein Teil zitiert wird. Falls Sie ein Buch zitieren wollen, nehmen Sie f�r den Titel stattdessen das \texttt{title}-Feld.
+ \item \emph{chapter}\\
+ Eine Kapitelnummer (oder Abschnittsnummer oder sonstige Nummer).
+ \item \emph{crossref}\\
+ Der \texttt{key} eines Eintrags, auf den ein Querverweis gesetzt wird. Damit lassen sich beispielsweise die Daten eines Sammelbandes in einem Eintrag f�r einen Aufsatztitel wiederverwenden, ohne sie bei jedem Aufsatztitel explizit einzutragen. Die Funktionalit�t von \texttt{crossref} ist jedoch nicht in jedem Fall praktikabel.
+ \item \emph{edition}\\
+ Die Auflage eines Buchs, z.\,B. \texttt{Zweite}. Die Ordnungszahl sollte mit einem Gro�buchstaben beginnen; sie wird von den Standardstilen gegebenenfalls in Kleinbuchstaben umgewandelt. Manche Stile verlangen hier eine Ziffer.
+ \item \emph{editor}\\
+ Dieses Feld ist analog zu dem \emph{author}-Feld.
+Falls zus�tzlich ein \texttt{author}-Feld angegeben wird, bezeichnet das \texttt{editor}-Feld den Herausgeber des Buches oder des Sammelbandes, in dem die referenzierte Literatur erschienen ist.
+ \item \emph{howpublished}\\
+ Die Art, wie ein Werk ver�ffentlicht wurde (meist au�erhalb eines Verlags). Das erste Wort sollte mit einem Gro�buchstaben beginnen.
+ \item \emph{institution}\\
+ Die f�rdernde Institutions eines technischen Reports.
+ \item \emph{journal}\\
+ Der Name einer Zeitschrift.
+Mit Hilfe von ">Strings"< k�nnen Zeitschriftentitel abgek�rzt werden. Zum Erstellen eines solchen Strings k�nnen Sie den \nameref{StringEditorHelp} benutzen oder die Funktionalit�t zur \nameref{JournalAbbreviations} %Abk�rzung von Zeitschriftentiteln
+verwenden.
+ \item \emph{key}\\
+ Dieses Feld wird zur Sortierung, zur Erstellung von Labels (falls kein \texttt{author} vorhanden ist) und f�r Querverweise (\texttt{crossref}) verwendet. Verwechseln Sie dieses Feld nicht mit dem \texttt{Bibtexkey}, der f�r die \texttt{\textbackslash cite}-Kommandos gebraucht wird und am Anfang jedes Eintrags erscheint (im \bibtex{}"=Quelltext).
+ \item \emph{month}\\
+ Der Monat, in dem ein Werk ver�ffentlicht oder geschrieben wurde. Benutzen Sie am besten die englischen Abk�rzungen (jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec).
+ \item \emph{note}\\
+ Zus�tzliche Informationen. Das erste Wort sollte mit einem Gro�buchstaben beginnen.
+ \item \emph{number}\\
+Die Nummer einer Zeitschrift, eines technischen Reports oder eines Bandes innerhalb einer Reihe (\texttt{series}). Zeitschriften haben oft eine Band- und Heftz�hlung, der Band entspricht dem \texttt{volume}-, das Heft dem \texttt{number}-Eintrag.
+ \item \emph{organization}\\
+ Die Organisation, die einen Konferenzband f�rdert.
+ \item \emph{pages}\\
+ Die Seitenzahl(en) oder der Seitenzahlbereich, z.\,B. \texttt{42-111} oder \texttt{7,41, 73-97} or \texttt{43+} (das \texttt{+} deutet auf folgende Seiten, die nicht einen einfachen Bereich umfassen).
+Ein einfacher Bindestrich (wie in \texttt{7-33}) wird in einen doppelten Bindestrich (\texttt{-{-}}) verwandelt, der in der Ausgabe als bis-Strich erscheint (also 7--33).
+ \item \emph{publisher}\\
+ Der Name des Verlags.
+ \item \emph{school}\\
+ Der Name einer Universit�t, an der eine Abschlussarbeit~-- z.\,B. eine Dissertation (\texttt{phdthesis}) oder Magisterarbeit (\texttt{mastersthesis})~-- geschrieben wurde.
+ \item \emph{series}\\
+ Der Name einer Reihe, in der ein Buch erschienen ist.
+Falls die B�cher einer Reihe nummeriert sind, wird die entsprechende Nummer im Feld \texttt{number} angegeben.
+ \item \emph{title}\\
+ Der Titel des Werkes. Die Gro�- und Kleinschreibung kann von den Bibliographiestilen und der benutzten Sprache abh�ngig sein (wobei sie mit deutschen Bibliographiestilen beibehalten wird). Worte, die auch bei Verwendung englischer Bibliographiestile gro� geschrieben werden sollen, m�ssen in geschweifte Klammern eingefasst werden (z.\,B. \texttt{A \{German\} title}).
+ \item \emph{type}\\
+ Der Typ eines technischen Reports, z.\,B. ">Research Note"<. Bei \emph{jurabib} wird dieses Feld auch f�r den Typ einer Abschlussarbeit verwendet.
+ \item \emph{volume}\\
+ Der Band (Jahrgang) einer Zeitschrift oder der Band eines Buches in einem mehrb�ndigen Werk.
+ \item \emph{year}\\
+ Das Jahr der Ver�ffentlichung (oder bei einem unver�ffentlichten Werk das Jahr, in dem es geschrieben wurde). Normalerweise sollte im \texttt{year}-Feld nur eine vierstellige Zahl stehen, z.\,B. \texttt{1984}. Die Standardstile k�nnen aber auch mit \texttt{year}-Eintr�gen umgehen, deren letzte vier Zeichen (ausgenommen Satzzeichen) Ziffern sind, beispielsweise \texttt{(um 1984)}.
+ Dieses Feld wird f�r die meisten Eintragstypen ben�tigt.
+\end{itemize}
+
+\subsubsection{Weitere Felder}
+
+Bibliographie-Stile f�r \bibtex{} wurden von vielen Leuten entwickelt,
+und einige haben weitere Felder erstellt. Es folgt eine kleine Auswahl.
+
+Feldnamen, die mit einem Stern* versehen sind, werden nicht direkt von \jabref unterst�tzt, k�nnen aber eingebunden werden (mehr dazu im Abschnitt \nameref{CustomEntriesHelp}).
+
+\begin{itemize}
+ \item \emph{affiliation*}\\
+ Die Zugeh�rigkeit eines Autors.
+ \item \emph{abstract}\\
+ Die Zusammenfassung eines Werks.
+ \item \emph{contents*}\\
+ Ein Inhaltsverzeichnis.
+ \item \emph{copyright*}\\
+ Copyright-Informationen.
+ \item \emph{doi}\\
+ Der \emph{Digital Object Identifier} ist eine permanente Kennung von Dokumenten.
+ \item \emph{eid}\\
+ Der EID \emph{(Electronic identifier)} wird f�r elektronische Zeitschriften benutzt, die auch im Druck erscheinen. Mit dieser Nummer, die die Seitenzahlen ersetzt, l�sst sich der Artikel in der gedruckten Ausgabe finden. Der EID wird manchmal auch \emph{citation number} genannt.
+ \item \emph{ISBN*}\\
+ Die Internationale Standardbuchnummer.
+ \item \emph{ISSN*}\\
+ Die Internationale Standardseriennummer (f�r Zeitschriften).
+ \item \emph{keywords}\\
+ Stichworte~-- sie k�nnen in \jabref gut zum Gruppieren verwendet werden.
+ \item \emph{language*}\\
+ Die Sprache des Werks.
+ \item \emph{location*}\\
+ Der Ort, der mit einem Werk in Verbindung steht, z.\,B. die Stadt, in der eine Konferenz stattgefunden hat.
+ \item \emph{LCCN*}\\
+ Die \emph{Library of Congress Call Number}. Das Feld kann auch \texttt{lib-congress} hei�en.
+ \item \emph{mrnumber*}\\
+ Die \emph{Mathematical Reviews}-Nummer.
+ \item \emph{price*}\\
+ Der Preis.
+ \item \emph{size*}\\
+ Die physische Gr��e eines Dokuments.
+ \item \emph{url}\\
+ Der \emph{Uniform Resource Locator} (URL, ">einheitlicher Quellenanzeiger"<), der auf eine Webseite im Internet verweist.
+ \item \emph{urldate}\\
+ Das Datum, an dem eine Webseite zuletzt besucht wurde.
+\end{itemize}
+
+
+\clearpage
+\section{Installation}
+\secttoc
+
+\subsection{System-Voraussetzungen}
+\label{subsec:System-Voraussetzungen}
+\jabref ist in Java programmiert und somit betriebssystemunabh�ngig,
+kann prinzipiell also unter Windows, Mac OS X, Linux und anderen UNIX-Systemen
+betrieben werden. Voraussetzung ist allerdings, dass die \emph{Java
+Virtual Machine} mindestens in der Version~1.5 installiert ist.\footnote{Bis zur Version 2.2 von \jabref reichte Java~1.4.2 aus.}
+Sie ist kostenlos und kann unter \url{http://java.sun.com/} heruntergeladen
+werden. Im Normalfall sollte das \emph{Java Runtime Environment} (JRE) ausreichen;
+nur wenn Sie \jabref kompilieren m�chten, ben�tigen Sie das \emph{Java
+Development Kit} (JDK).
+
+
+\subsection{Windows}
+
+
+\subsubsection{Installer (msi)}
+
+\jabref gibt es im Windows Installer-Format (\texttt{.msi}). Ein
+Doppelklick auf die MSI-Datei installiert \jabref und f�gt dem
+Startmen� eine Verkn�pfung hinzu. Falls Java nicht installiert ist,
+wird eine Warnmeldung ausgegeben.%
+\footnote{Die Windows-Installation wurde von Dale Visser erstellt, der dazu
+die folgenden \emph{Open-Source-Tools} benutzt hat: JSmooth, ein \texttt{.exe}
+wrapper f�r Java-Anwendungen (\url{http://jsmooth.sf.net/}); Wix,
+ein Tool zum Kompilieren von MSI-Dateien aus einer XML-Spezifikation
+(\url{http://wix.sf.net/}).%
+}
+
+
+\subsubsection{Batch-Datei (jar)}
+\label{subsub:jar}
+Wenn Sie die ausf�hrbare jar-Datei (\texttt{.jar}) heruntergeladen
+haben, probieren Sie zun�chst, ob ein Doppelklick darauf das Programm
+startet~-- dies funktioniert zumindest auf einigen Systemen. Falls
+\jabref nicht direkt startet (Windows also nicht wei�, was es mit
+einer jar-Datei anfangen soll), fahren Sie folgenderma�en fort:
+
+Erstellen Sie in dem Ordner, in dem Sie die Datei \emph{JabRef.jar}
+abgelegt haben, eine Batch-Datei mit dem Namen \emph{jabref-start.bat}.
+Diese Datei soll nur eine Zeile enthalten:
+
+\begin{lstlisting}
+start javaw -jar JabRef.jar
+\end{lstlisting}
+Mit einem Doppelklick auf die Batch-Datei starten Sie \jabref.
+
+
+\subsection{Starten von der Kommandozeile}\label{subsec:Starten-Kommandozeile}
+
+\begin{enumerate}
+\item mit dem \emph{Java Runtime Environment}:
+\begin{lstlisting}
+jre -new -jar <Pfad zur jar-Datei>
+\end{lstlisting}
+oder
+\begin{lstlisting}
+jrew -new -jar <Pfad zur jar-Datei>
+\end{lstlisting}
+\item mit dem \emph{Java Development Kit}:
+\begin{lstlisting}
+java -jar <Pfad zur jar-Datei>
+\end{lstlisting}
+\end{enumerate}
+Es wird empfohlen, \jabref mit Java 1.5 zu benutzen und die Option \lstinline{-Dswing.aatext=true}
+vor der Option \lstinline{-jar} einf�gen, um das Benutzen von Anti-Alias-Schriften
+im Programm zu erm�glichen.
+
+Die jar-Datei, die \jabref enth�lt, kann entpackt werden mit den
+Kommandos
+\begin{lstlisting}
+jar xf <Pfad zur jar-Datei>
+\end{lstlisting}
+bzw.
+\begin{lstlisting}
+jar xf <Pfad zur jar-Datei> <Liste der Dateien, die entpackt werden sollen>
+\end{lstlisting}
+Das Entpacken der jar-Datei ist nicht notwendig, um das Programm zu
+starten!
+
+Weitere Hinweise zur Installation finden Sie in der Datei INSTALL
+(zum Kompilieren aus den \emph{sourcen}) und auf der \href{http://jabref.sourceforge.net}{\jabref-Homepage}.
+
+
+\clearpage
+\section{Funktionen}
+\secttoc
+\bigskip
+
+\noindent \label{JabRefHelp}\jabref ist ein Programm zur Verwaltung von
+\bibtex{}-Dateien. Es benutzt kein eigenes Dateiformat, d.\,h. dass
+Sie Ihre Dateien direkt im \bibtex{}-Format (Dateiendung \texttt{.bib})
+laden und speichern. Sie k�nnen aber auch bibliographische Datenbanken
+anderer Formate in \jabref importieren.
+
+\jabref unterst�tzt Sortier- und Suchfunktionen, um einen �berblick
+�ber den Inhalt Ihrer Datei zu bekommen. Sie k�nnen der Datei ganz
+einfach neue Eintr�ge hinzuf�gen, ohne sich daran erinnern zu m�ssen,
+welche Informationen ben�tigt werden. Au�erdem kann \jabref \bibtex{}-Keys
+automatisch generieren. \jabref ist sehr n�tzlich, wenn Sie \bibtex{}
+oder CiteMaker verwenden, kann aber auch f�r diejenigen sinnvoll sein,
+die andere Bibliographie-Systeme benutzen oder schlicht und einfach
+ihre Literaturquellen organisieren wollen.
+
+\subsection{Das Hauptfenster}
+
+\tip[]{Die meisten Men�funktionen, auf die im Folgenden hingewiesen
+wird, haben Tastenk�rzel, und viele Funktionen k�nnen �ber die Werk\-zeug\-leiste
+aufgerufen werden.}
+\label{BaseFrameHelp}Im Hauptfenster, in dem Sie mit Ihrer Datei
+arbeiten, befindet sich unter der Men�leiste und der Werkzeugleiste
+die Tableiste mit Tabs (Reitern) f�r jede Ihrer ge�ffneten Dateien.
+Wenn Sie einen dieser Tabs anklicken, erscheint eine Tabelle, die
+alle Datens�tze und einige der Datenfelder auf"|listet.
+
+Mit einem Doppelklick auf eine Tabellenzeile k�nnen Sie den Inhalt bearbeiten (der \nameref{EntryEditorHelp} wird ge�ffnet). Sie k�nnen mit den Pfeiltasten innerhalb der Tabelle navigieren. Wenn Sie einen Buchstaben dr�cken, springen Sie zu dem ersten Eintrag, der mit diesem Buchstaben beginnt (abh�ngig von der Spalte, nach der Sie die Tabelle sortiert haben).
+
+Die Sortierung der Tabelle erfolgt nach einem Feld Ihrer Wahl. Sie k�nnen das Standardverhalten unter \menu{Optionen \msep{} Einstellungen \msep{} Tabellenansicht} angeben. Um die Sortierreihenfolge schnell zu �ndern, klicken Sie einfach auf die Kopfzeile einer Spalte; damit haben Sie das prim�re Sortierkriterium definiert. Klicken Sie erneut auf den Spaltenkopf, um die Sortierrichtung umzukehren. Ein weiterer Klick sorgt daf�r, dass die Spalte nicht mehr zur Sortierung herangezogen wird [...]
+
+Welche Felder (Spalten) in der Tabelle angezeigt werden sollen, k�nnen
+Sie im \menu{Einstellungs}-Dialog ausw�hlen. Auch die Breite der
+Tabellenspalten kann eingestellt werden, indem man die Trennlinie
+zwischen den Spaltenk�pfen anklickt und nach links oder rechts verschiebt.
+Im \menu{Einstellungs}-Dialog k�nnen Sie festlegen, ob die Tabelle
+an die Bildschirmgr��e angepasst werden soll oder nicht. Aktivieren
+Sie diese Funktion, um sicherzustellen, dass Sie die gesamte Tabelle
+sehen k�nnen. Deaktivieren Sie diese Funktion, wenn mehr Informationen
+dargestellt werden sollen.
+
+Die Farbanzeige kann ebenfalls im \menu{Einstellungs}-Dialog ein-
+und ausgeschaltet werden. Die Farbanzeige illustriert, ob Ihre Daten
+vollst�ndig sind, indem sie die Zellen wie folgt darstellt:
+
+\begin{itemize}
+\item Eine \colorbox{red}{\textcolor{white}{rote}} Zelle in der linken Spalte kennzeichnet
+einen unvollst�ndigen Eintrag.
+\item Eine \colorbox{yellow}{gelbe} Zelle in der linken Spalte kennzeichnet
+einen Eintrag, der nicht alle ben�tigten Felder selbst enth�lt, der
+aber einen Querverweis enth�lt.
+\item Eine \colorbox{blue}{\textcolor{white}{blaue}} Zelle kennzeichnet ein ben�tigtes Feld.
+\item Eine \colorbox{green}{gr�ne} Zelle kennzeichnet ein optionales Feld.
+\item Eine farblose (wei�e) Zelle kennzeichnet ein Feld, das von \bibtex{}
+f�r diesen Eintragstyp nicht benutzt wird. Das Feld kann selbstverst�ndlich
+in \jabref bearbeitet werden.
+\end{itemize}
+
+\subsubsection{Einen neuen Eintrag hinzuf�gen}
+
+Es gibt verschiedene M�glichkeiten, einen neuen Eintrag hinzuzuf�gen.
+Im Men� \menu{BibTeX} f�hrt ein Klick auf \menu{Neuer Eintrag} zu
+einem Dialog, in dem Sie den Eintragstyp aus einer Liste w�hlen k�nnen.
+Um diesen Dialog zu umgehen, gibt es auch eigene Men�punkte f�r jeden
+Eintragstyp und au�erdem Tastenk�rzel f�r die g�ngigsten Typen.
+
+Wenn ein Eintrag hinzugef�gt wird, wird standardm��ig ein Editor f�r
+den Eintrag ge�ffnet. Sie k�nnen dieses Verhalten im \menu{Einstellungs}-Dialog
+abstellen.
+
+\tip[]{Wir empfehlen, sich die Tastenk�rzel f�r die Eintragstypen
+einzupr�gen, die Sie am h�ufigsten benutzen, z.\,B. STRG-SHIFT-A
+f�r einen Zeitschriftenaufsatz \emph{(article)}.}
+
+
+\subsubsection{Einen Eintrag bearbeiten}
+
+Um den \nameref{EntryEditorHelp} zur Bearbeitung
+eines existierenden Eintrags zu �ffnen, klicken Sie einfach doppelt
+auf die entsprechende Zeile oder markieren den Eintrag
+und dr�cken auf ENTER.
+
+
+\subsubsection{Einen \bibtex{}-String in einem Feld verwenden}
+
+In \jabref schreiben Sie den Inhalt aller Felder so, wie Sie es
+in einem Texteditor machen w�rden, mit einer Ausnahme: um einen String
+(eine Art Abk�rzung) zu verwenden, umschlie�en Sie den Namen des Strings
+mit je einem \#, z.\,B.
+
+\begin{lstlisting}
+#jan# 1997
+\end{lstlisting}
+was interpretiert wird als String mit dem Namen \texttt{jan} gefolgt
+von \texttt{1997}. Vergleichen Sie dazu auch die Hinweise zum \nameref{StringEditorHelp}.
+
+
+\subsection{\texorpdfstring{Eintrags"=Editor}{Eintrags-Editor}}
+
+\label{EntryEditorHelp}
+
+\begin{quote}
+\emph{Ge�ffnet wird der Eintrags"=Editor im Hauptfenster durch einen
+Doppelklick auf die linke Spalte eines Eintrags oder durch
+Dr�cken auf ENTER. Der Eintrags-Editor wird geschlossen, indem man
+auf ESC dr�ckt.}
+\end{quote}
+Im Eintrags-Editor k�nnen Sie alle relevanten Informationen eines
+Eintrags festlegen. Der Editor �berpr�ft den Eintragstyp und zeigt
+alle ben�tigten und optionalen Felder f�r den Gebrauch mit \bibtex{}
+an. Dar�ber hinaus gibt es einige Felder, die \emph{Allgemeine Felder}
+genannt werden und f�r alle Eintragstypen gelten.
+
+Sie k�nnen die Felder, die f�r die einzelnen Eintragstypen als ben�tigt
+und optional angesehen werden, und auch die Allgemeinen Felder anpassen.
+N�heres dazu erfahren Sie im Abschnitt \nameref{CustomEntriesHelp}.
+
+\subsubsection{Die Panels des Eintrags-Editors}
+
+Der Eintrags-Editor besteht in der Standardeinstellung aus f�nf Panels:
+\emph{Ben�tigte Felder}, \emph{Optionale Felder}, \emph{General},
+\emph{Abstract} und \emph{\bibtex{}"=Quelltext}, wobei \emph{General}
+und \emph{Abstract} vom Benutzer angepasst werden k�nnen (siehe dazu
+Abschnitt~\ref{GeneralFields}). In den ersten drei Panels k�nnen
+Sie mit TAB und SHIFT-TAB zwischen den einzelnen Feldern hin- und
+herwechseln. Zu einem anderen Panel gelangen Sie, indem Sie auf die
+Tabs klicken. Mit den folgenden Tastaturk�rzeln k�nnen Sie ebenfalls
+zwischen den Panels navigieren:
+
+\begin{itemize}
+\item STRG-TAB oder STRG-+ wechselt zum Panel rechts vom aktuellen Panel,
+\item STRG-SHIFT-TAB oder STRG-{-} (MINUS) wechselt dementsprechend zum
+Panel links vom aktuellen Panel.
+\end{itemize}
+Au�erdem k�nnen Sie zum n�chsten oder vorherigen Eintrag wechseln,
+indem Sie >>STRG-SHIFT-$\downarrow$<< bzw. >>STRG-SHIFT-$\uparrow$<<
+oder die Pfeil-Buttons in der linken Toolbar dr�cken.
+
+Das Panel \emph{\bibtex{}"=Quelltext} zeigt, wie der Eintrag aussehen
+wird, wenn die Datei im \texttt{bib}-Format gespeichert wird. Wenn
+Sie wollen, k�nnen Sie den \bibtex{}"=Quelltext direkt bearbeiten.
+Sobald Sie zu einem anderen Panel wechseln, STRG-S dr�cken oder den
+Eintrags-Editor schlie�en, wird \jabref versuchen, den Inhalt des
+Quelltext"=Panels zu analysieren. Falls dabei Probleme auftreten, werden
+Sie benachrichtigt und erhalten die M�glichkeit, den Eintrag noch
+einmal zu �berarbeiten oder den vorherigen Inhalt wiederherzustellen. (N�here
+Einzelheiten dazu finden Sie im Abschnitt \nameref{subsub:feldkonsistenz}.)
+Wenn in den \menu{Einstellungen} (unter \menu{Allgemein}) die Option
+\menu{Quelltext standardm��ig anzeigen} gew�hlt wurde, wird das Quelltext"=Panel
+beim �ffnen des Eintrags-Editors als erstes angezeigt. Wenn Sie lieber
+den Quelltext bearbeiten als die anderen Panels zu benutzen, sollten
+Sie diese Option w�hlen.
+
+\tip{Wenn Ihre Datei Felder enth�lt, die \jabref nicht kennt,
+erscheinen diese im Quelltext"=Panel.}
+
+\tip[Und noch ein Tipp: ]{Die \emph{PDF-} und \emph{URL}-Felder unterst�tzen
+Drag \& Drop. Sie k�nnen z.\,B. ein URL aus Ihrem Browser dort einf�gen.}
+
+
+\subsubsection{�berpr�fung der Feldkonsistenz}
+\label{subsub:feldkonsistenz}
+Wenn der Inhalt eines Feldes ge�ndert wird, �berpr�ft \jabref,
+ob der neue Inhalt akzeptiert werden kann. Bei Feldern, die von \bibtex{}
+genutzt werden, wird der Inhalt zum einen auf die richtige Klammerung
+mit geschweiften Klammern, aber auch auf die Benutzung des Zeichens
+\texttt{\#} hin �berpr�ft. Das >>hash<<-Symbol (im Deutschen oft
+>>Doppelkreuz<< oder >>Raute<< genannt) darf \emph{nur} paarweise
+benutzt werden, um damit den Namen eines \bibtex{}-Strings einzuschlie�en.
+Beachten Sie, dass \jabref nicht �berpr�ft, ob der angef�hrte String
+tats�chlich vorhanden ist, da der \bibtex{}-Stil, den Sie benutzen,
+eine beliebige Anzahl von Strings definieren kann, die \jabref nicht
+kennt.
+
+Falls die Inhalte nicht akzeptabel sind, wird das Feld mit roter Farbe
+hinterlegt, was auf einen Fehler hindeutet. In diesem Fall werden
+die �nderungen nicht gespeichert.
+
+
+\subsection{Integrit�tspr�fung}
+
+\begin{quote}
+\emph{Erreichbar �ber das Men� \menu{Extras \msep{} Datenbank durchsuchen
+\msep{} �berpr�fung der Integrit�t}.}
+\end{quote}
+Mit dieser Funktion �berpr�ft \jabref alle Eintr�ge auf deren G�ltigkeit
+und versucht Fehler aufzudecken. Mit dem \menu{�berpr�fen}-Button
+kann der Vorgang gestartet werden. Es wird eine Liste mit Hinweisen
+(Info-Icon) und m�glichen Fehlern (Ausrufezeichen-Icon) sowie dem
+entsprechenden \bibtex{}-Key erstellt. Wenn Sie einen Hinweis ausw�hlen,
+erscheint der Inhalt des Feldes, das beanstandet wird. Sie k�nnen
+nun den Feldinhalt ver�ndern und die Ver�nderungen mit Klick auf die
+Schaltfl�che \menu{�bernehmen} speichern.
+
+
+\subsection{\bibtex{}-Keys}
+
+Damit man sich in einem \LaTeX{}-Dokument auf einen Literaturverweis
+beziehen kann, braucht man einen eindeutigen \bibtex{}-Key. Eindeutig
+hei�t, dass er nur einmal vergeben sein darf. Es wird nach Gro�"~
+und Kleinschreibung unterschieden, \texttt{Yared1998} ist also nicht
+identisch mit \texttt{yared1998}. \jabref bietet einige M�glichkeiten,
+um auch bei gr��eren Datenbanken den �berblick �ber die \bibtex{}-Keys
+nicht zu verlieren.
+
+\tip{Falls Sie in einem \LaTeX{}-Dokument mehrere \bibtex{}-Dateien
+einbinden, m�ssen Sie selbst darauf achten, dass in den unterschiedlichen
+Dateien nicht mehrmals derselbe \bibtex{}-Key vergeben ist. Nutzen
+Sie deshalb am besten die Funktion \menu{Extras} \msep{} \menu{Neue Teildatei aus AUX-Datei}.}
+Der einfachste Weg, einen eindeutigen \bibtex{}-Key zu bekommen, ist
+das automatische Erzeugen, das Sie mit der Tastenkombination STRG-G
+oder mit dem Zauberstab-Button im Eintrags-Editor veranlassen k�nnen.
+Falls Sie sich nicht im Eintrags-Editor befinden, werden mit Hilfe
+von STRG-G oder dem Zauberstab-Button aus der Men�leiste f�r alle
+Eintr�ge der Datei \bibtex{}-Keys erzeugt. Falls dabei Keys �berschrieben
+werden, gibt \jabref eine Warnmeldung aus.
+
+Wie die \bibtex{}-Keys aussehen, die \jabref automatisch generiert,
+und wie Sie dieses Aussehen ver�ndern k�nnen, erfahren Sie im Abschnitt~\ref{LabelPatterns} \nameref{LabelPatterns}.
+
+
+\subsection{Suchfunktionen}
+
+\label{SearchHelp}
+\begin{quote}
+\emph{STRG-F �ffnet oder aktiviert den Suchdialog.
+Dr�ckt man mehrmals auf STRG-F, so werden die verschiedenen Suchmodi
+ausgew�hlt. STRG-SHIFT-F �ffnet oder aktiviert den Suchdialog
+und w�hlt gleichzeitig die direkte Suche aus. Bei der direkten Suche
+springt man mit STRG-F oder STRG-SHIFT-F zum n�chsten Treffer.}
+\end{quote}
+
+\subsubsection{Direkte Suche}
+
+Bei der direkten Suche sucht \jabref unmittelbar, wenn Sie einen
+Buchstaben eingeben. Die Statuszeile informiert Sie �ber den Sucherfolg.
+Mit STRG-F oder STRG-SHIFT-F wird zum n�chsten Vorkommen des aktuellen
+Suchbegriffs gesprungen. Falls es keine weiteren Vorkommen gibt, informiert
+die Statuszeile dar�ber. Bei erneuter Wiederholung startet die Suche
+vom Anfang der Datei. Die Suchreihenfolge richtet sich nach der aktuellen
+Sortierung Ihrer Datei. Um die direkte Suche zu verlassen, dr�cken
+Sie ESC oder klicken Sie auf \menu{Zur�cksetzen}.
+
+
+\subsubsection{Normale Suche}
+
+Hierbei sucht das Programm nach allen Vorkommen der W�rter ihres Suchausdrucks, sobald Sie ENTER dr�cken. Nur Eintr�ge, die alle W�rter enthalten, gelten als Treffer. Um nach festen Ausdr�cken zu suchen, m�ssen Sie die W�rter in doppelte Anf�hrungszeichen einfassen. Zum Beispiel findet die Suchanfrage \texttt{progress \textquotedbl marine acquaculture\textquotedbl} Eintr�ge, die sowohl das wort ">progress"< als auch den Ausdruck ">marine acquaculture"< aufweisen. Alle Eintr�ge, die keine [...]
+
+\subsubsection{Suchoptionen}
+
+Der \menu{Einstellungen}-Button im Suchdialog �ffnet ein Men�, in
+dem man mehrere Optionen (de)aktivieren kann: das Beachten von Gro�-
+und Kleinschreibung, das Nutzen regul�rer Ausdr�cke (siehe dazu den Abschnitt ">\nameref{search-regular-expressions}"<) sowie das Ausw�hlen
+der Suchergebnisse.
+
+\tip{Suchen Sie mit der Option \menu{Treffer ausw�hlen} und dr�cken
+anschlie�end STRG-M, so haben Sie alle Treffer markiert (vgl. Abschnitt ">\nameref{MarkingHelp}"<) und k�nnen z.\,B. eine weitere Suche durchf�hren,
+ohne die bisherigen Ergebnisse zu >>verlieren<<.}
+
+\subsubsection{Feldbezeichner und logische Operatoren}
+\label{SearchHelp_advanced}
+
+\tip[Achtung! ]{Die folgenden Hinweise gelten nicht f�r die direkte Suche.}
+Um nur einige bestimmte Felder zu durchsuchen
+und\slash{}oder logische Operatoren im Suchbegriff zu benutzen, wird
+eine spezielle Syntax zur Verf�gung gestellt. Um beispielsweise nach
+Eintr�gen mit dem Autor >>Miller<< zu suchen, geben Sie
+
+\begin{lstlisting}
+author = miller
+\end{lstlisting}
+in das Suchfeld ein. Falls der Suchbegriff Leerzeichen enth�lt, schlie�en
+Sie ihn in Anf�hrungszeichen ein. Benutzen Sie \emph{nie} Leerzeichen
+in dem Feldbezeichner. Mehrere Feldbezeichner werden durch >>|<<
+voneinander getrennt. Um beispielsweise nach Eintr�gen �ber Karl den
+Gro�en zu suchen, geben Sie Folgendes ein:
+
+\begin{lstlisting}
+title|keywords = "Karl der Gro�e"
+\end{lstlisting}
+Sie k�nnen die logischen Operatoren AND, OR und NOT sowie Klammern
+verwenden:
+
+\begin{lstlisting}
+(author = miller OR title|keywords = "Karl der Gro�e") AND NOT author = brown
+\end{lstlisting}
+\ldots{} sucht beispielsweise nach Eintr�gen, in denen entweder der
+Autor >>Miller<< hei�t oder im \emph{title}- oder \emph{keywords}-Feld
+der Begriff >>Karl der Gro�e<< steht; gleichzeitig werden die Eintr�ge
+mit dem Autor >>Brown<< nicht angezeigt.
+
+Das \texttt{=}-Zeichen ist eigentlich eine Abk�rzung f�r >>enth�lt<<
+\emph{(contains)}. Wenn man nach genauen Treffern suchen m�chte, muss
+man \texttt{==} oder \texttt{matches} (>>�bereinstimmen<<) eingeben.
+\texttt{!=} sucht nach Eintr�gen, bei denen der Suchbegriff \emph{nicht}
+enthalten ist. Um nach Eintr�gen eines bestimmten Typs zu suchen,
+gibt es ein Pseudofeld namens \emph{entrytype}:
+
+\begin{lstlisting}
+entrytype = thesis
+\end{lstlisting}
+\ldots{} findet Eintr�ge, deren Typ (wie in der Spalte \emph{Entrytype}
+dargestellt) das Wort >>thesis<< enth�lt (z.\,B. >>phdthesis<<
+und >>mastersthesis<<). Ebenso erlaubt das Pseudofeld \emph{bibtexkey}
+die Suche nach \bibtex{}-Keys, z.\,B.:
+
+\begin{lstlisting}
+bibtexkey = miller2005
+\end{lstlisting}
+
+\subsubsection{Suche mit regul�ren Ausdr�cken}
+\label{search-regular-expressions}
+\verfasser{Pedro J. Aphalo, zuerst ver�ffentlicht im \jabref{}-Wiki in englischer Sprache}
+
+\paragraph{Hintergrund}
+Regul�re Ausdr�cke (kurz ">regex"< f�r engl. ">regular expressions"<) definieren eine Sprache zum Spezifizieren von passendem Text, zum Beispiel bei Suchanfragen. \jabref{} nutzt regul�re Ausdr�cke, wie sie in Java definiert sind. Eine Dokumentation dazu findet sich unter \href{http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html}{http://java.sun.com\slash{}j2se\slash{}1.4.2\slash{}docs\slash{}api\slash{}java\slash{}util\slash{}regex\slash{}Pattern.html}.
+
+\tip[]{Die folgenden Beispiele sind alle in Kleinbuchstaben, damit werden aber auch Gro�buchstaben oder gemischte Varianten gefunden.}
+
+\paragraph{Suche nach Eintr�gen mit leerem oder fehlendem Feld}
+\tip[]{\texttt{.} bezeichnet irgendein Zeichen
+
+\texttt{+} hei�t ein- oder mehrmals}
+\begin{lstlisting}
+author != .+
+\end{lstlisting}
+
+\paragraph{Wortgrenzen beachten}
+\tip[]{\texttt{\textbackslash b} bezeichnet eine Wortgrenze
+
+\texttt{\textbackslash B} hei�t: keine Wortgrenze}
+\begin{lstlisting}
+keywords = \buv\b
+\end{lstlisting}
+findet ">uv"<, aber nicht ">lluvia"< (es findet allerdings ">uv-b"<)
+\begin{lstlisting}
+author = \bblack\b
+\end{lstlisting}
+findet ">black"<, aber weder ">blackwell"< noch ">blacker"<
+
+\begin{lstlisting}
+author == black
+\end{lstlisting} findet ">john black"< nicht,
+\begin{lstlisting}
+author = \bblack\b
+\end{lstlisting} hingegen schon
+
+\begin{lstlisting}
+author = \bblack\B
+\end{lstlisting}
+findet ">blackwell"< und ">blacker"<, aber nicht ">black"<
+
+\paragraph{Suche mit optionaler Schreibweise}
+
+\tip[]{\texttt{?} bezeichnet keine oder eine Kopie des vorhergehenden Buchstaben
+
+\texttt{{n,m}} hei�t mindestens n, aber nicht mehr als m Kopien des vorhergehenden Buchstaben
+
+\texttt{[ ]} definiert eine Buchstabengruppe}
+
+\begin{lstlisting}
+title =neighbou?r
+\end{lstlisting}
+findet ">neighbour"< und ">neighbor"<, aber auch ">neighbours"< und ">neighbors"<, ">neighbouring"< und ">neighboring"< etc.
+
+\begin{lstlisting}
+title = neighbou?rs?\b
+\end{lstlisting}
+findet ">neighbour"< und ">neighbor"<, auch ">neighbours"< und ">neighbors"< , aber weder ">neighbouring"< noch ">neighboring"<.
+
+\begin{lstlisting}
+author = s[a�]nchez
+\end{lstlisting}
+findet ">sanchez"< und ">s�nchez"<
+
+\begin{lstlisting}
+abstract = model{1,2}ing
+\end{lstlisting}
+findet ">modeling"< und ">modelling"<
+
+\begin{lstlisting}
+abstract = modell?ing
+\end{lstlisting}
+findet ebenfalls ">modeling"< und ">modelling"<
+
+\paragraph{Das Problem von Anf�hrungszeichen (\texorpdfstring{\texttt{"}}{"}) in Suchausdr�cken}
+Sind regul�re Ausdr�cke ausgeschaltet, findet
+\begin{lstlisting}
+author = {\"O}quist
+\end{lstlisting} nichts, auch wenn der Name in der Datenbank vorkommt. Ebensowenig wird bei aktivierten regul�ren Ausdr�cken
+\begin{lstlisting}
+author = \{\\\"O\}quist
+\end{lstlisting} irgendetwas finden.
+
+\begin{lstlisting}
+author = \{\\\x22O\}quist
+\end{lstlisting}
+funktioniert bei aktivierten regul�ren Ausdr�cken f�r ">\texttt{\{\textbackslash "{}O\}quist}"<, weil \lstinline{\"} nicht als Aufhebung von \lstinline{"} wirkt, \lstinline{\x22} aber schon (also das Zeichen hexadezimal 22 in der ASCII-Tabelle).
+
+\begin{lstlisting}
+author = Bolh{\`a}r
+\end{lstlisting}
+funktioniert mit ausgeschalteten regul�ren Ausdr�cken und
+
+\begin{lstlisting}
+author = Bolh\{\\`a\}r
+\end{lstlisting}
+funktioniert mit aktivierten regul�ren Ausdr�cken.
+
+Einfache Anf�hrungszeichen (\texttt{'}) funktionieren ebenfalls.
+
+Es gibt also anscheinend eine Einschr�nkung, wie \lstinline{"} in der Eingabe behandelt wird, aber Sie k�nnen stattdessen \lstinline{\x22} nutzen, um dieses Problem zu umgehen. (Das Zeichen \lstinline{"} hat eine spezielle Bedeutung: es wird benutzt, um mehrere W�rter zu einer Phrase zu gruppieren, die exakt gefunden werden soll.)
+
+\subsection{Gruppen}
+
+Mit Gruppen k�nnen Sie Ihre \bibtex{}-Datei in einer Baumstruktur
+anordnen, vergleichbar mit einer Dateistruktur in Ordnern und Unterordnern.
+Die beiden Hauptunterschiede sind:
+
+\begin{enumerate}
+\item W�hrend eine Datei auf einer Festplatte immer in genau einem Ordner
+abgelegt ist, kann ein Literatureintrag in \jabref mehreren Gruppen
+angeh�ren.
+\item Gruppen benutzen bestimmte Kriterien, um ihren Inhalt dynamisch zu
+bestimmen. Neue Eintr�ge, die den Kriterien einer Gruppe entsprechen,
+geh�ren automatisch zu dieser Gruppe. Diese Funktionalit�t gibt es
+nicht in �blichen Dateisystemen, wohl aber in einigen E-Mail-Programmen
+(z.\,B. Thunderbird und Opera).
+\end{enumerate}
+Wenn Sie eine Gruppe ausw�hlen, werden die Eintr�ge dieser Gruppe
+angezeigt. Wenn Sie mehrere Gruppen ausw�hlen, werden entweder die
+Eintr�ge angezeigt, die in einer der Gruppen sind (Vereinigung), oder
+solche, die in allen Gruppen vorhanden sind (Schnittmenge)~-- das
+h�ngt von Ihren Einstellungen ab. All dies wird im Folgenden detailliert
+erl�utert.
+
+Gruppendefinitionen sind dateispezifisch; sie werden als \texttt{@COMMENT}-Block
+in der \texttt{bib}-Datei gespeichert und von allen Benutzern gemeinsam
+benutzt. (K�nftige Versionen von \jabref werden m�glicherweise
+benutzerabh�ngige Gruppen unterst�tzen.)
+
+
+\subsubsection{Die Gruppenansicht}
+\begin{quote}
+\emph{Die Gruppenansicht wird im linken Bereich des Bildschirms angezeigt.
+Sie kann mit der Tastenkombination STRG-SHIFT-G oder dem Gruppen-Button
+in der Toolbar ein- und ausgeblendet werden. Die Gruppenansicht verf�gt
+�ber mehrere Schaltfl�chen, aber die meisten Funktionen werden �ber
+das Kontextmen� angesteuert (also mit der rechten Maustaste). Drag\,\&\,Drop
+wird ebenfalls unterst�tzt.}
+\end{quote}
+
+
+\subsubsection{Einige kurze Beispiele}
+
+Sie m�chten vielleicht~\ldots{}
+
+\begin{itemize}
+\item [\ldots]\textbf{einfach nur eine Gruppe anlegen und ihr einige Eintr�ge
+zuordnen}
+
+
+Vergewissern Sie sich, dass die Gruppenansicht eingeschaltet ist.
+Dr�cken Sie auf den Button \menu{Neue Gruppe}, geben einen Namen
+f�r die Gruppe ein und dr�cken \menu{OK}. Sie k�nnen alle Einstellungen
+auf ihren Standardwerten belassen. Jetzt w�hlen Sie die Eintr�ge aus,
+die der Gruppe zugeordnet werden sollen, und ziehen diese mit der
+Maus auf die Gruppe oder w�hlen \menu{Zu Gruppe hinzuf�gen} aus dem
+Kontextmen�. Jetzt k�nnen Sie die Gruppe anklicken, um sich ihren
+Inhalt anzeigen zu lassen (das sollten die Eintr�ge sein, die Sie
+gerade hinzugef�gt haben).
+
+\item [\ldots]\textbf{das Feld} \textbf{\emph{keywords}} \textbf{benutzen,
+um die Eintr�ge zu gruppieren}
+
+
+Stellen Sie sicher, dass die Gruppenansicht aktiviert ist. Dr�cken
+Sie auf den Button \menu{Neue Gruppe}, geben einen Namen f�r die
+Gruppe ein und w�hlen die Option \menu{Dynamisches Gruppieren der Eintr�ge anhand eines Stichworts in einem Feld}.
+Geben Sie das Stichwort, nach dem gesucht werden soll, ein und dr�cken
+\menu{OK}. Jetzt k�nnen Sie die Gruppe anklicken, um sich ihren Inhalt
+anzeigen zu lassen (das sollten alle Eintr�ge sein, deren \emph{keywords}-Feld
+das Stichwort enth�lt, das Sie angegeben haben).
+
+\item [\ldots]\textbf{einen frei w�hlbaren Suchausdruck verwenden, um eine
+Gruppe zu definieren}
+
+
+Stellen Sie sicher, dass die Gruppenansicht aktiviert ist. Dr�cken
+Sie auf den Button \menu{Neue Gruppe}, geben einen Namen f�r die
+Gruppe ein und w�hlen die Option \menu{Dynamisches Gruppieren der Eintr�ge anhand eines beliebigen Suchausdrucks}.
+Geben Sie \texttt{author=smith} als Suchausdruck ein (ersetzen Sie
+\texttt{smith} mit einem Namen, der wirklich in Ihrer Datei vorkommt)
+und klicken \menu{OK}. Jetzt k�nnen Sie die Gruppe anklicken, um
+sich ihren Inhalt anzeigen zu lassen (das sollten alle Eintr�ge sein,
+deren \emph{author}-Feld den Namen beinhaltet, den Sie angegeben haben).
+
+\item [\ldots]\textbf{mehrere Gruppen kombinieren }
+
+
+Erstellen sie zwei unterschiedliche Gruppen (z.\,B. so wie oben beschrieben).
+Klicken Sie auf den Button \menu{Einstellungen} in der Gruppenansicht
+und w�hlen \menu{Vereinigung}. Jetzt w�hlen Sie beide Gruppen aus
+(dazu klicken Sie auf eine Gruppe und anschlie�end bei gedr�ckter
+STRG-Taste auf die andere Gruppe). Sie sollten jetzt alle Eintr�ge
+sehen, die in einer der beiden Gruppen aufgef�hrt sind. Klicken Sie
+noch einmal auf \menu{Einstellungen} und w�hlen \menu{Schnittmenge}
+aus. Nun sollten Sie nur die Eintr�ge sehen, die in beiden Gruppen
+enthalten sind (das k�nnen auch keine sein, oder aber genau dieselben
+Eintr�ge wie zuvor, sofern beide Gruppen dieselben Eintr�ge enthalten).
+
+\item [\ldots]\textbf{sehen, welche Gruppen sich �berschneiden}
+
+
+Mit \jabref k�nnen Sie ganz einfach herausfinden, welche Gruppen
+sich mit den aktuell ausgew�hlten Gruppen �berschneiden (d.\,h. welche
+Gruppen zumindest einen Eintrag enthalten, der auch in der aktuell
+ausgew�hlten Gruppe ist). Klicken Sie auf \menu{Einstellungen} und
+aktivieren die Option \menu{Sich �berschneidende Gruppen markieren}.
+W�hlen Sie dann eine Gruppe, die sich mit anderen �berschneidet. Diese
+anderen Gruppen sollten nun markiert sein.
+
+\end{itemize}
+
+\subsubsection{Arten von Gruppen}
+
+In \jabref gibt es vier verschiedene Arten von Gruppen:
+
+\begin{enumerate}
+\item Die Gruppe \emph{Alle Eintr�ge}, die~-- wie der Name vermuten l�sst~--
+alle Eintr�ge beinhaltet, ist immer vorhanden und kann weder ver�ndert
+noch gel�scht werden.
+\item \emph{Statische Gruppen} verhalten sich wie Ordner auf einer Festplatte
+und beinhalten nur die Eintr�ge, die Sie ihnen explizit zuweisen.
+\item \emph{Dynamische Gruppen basierend auf einem Stichwort} beinhalten
+Eintr�ge, die in einem bestimmten \bibtex{}-Feld (z.\,B. \emph{keywords})
+ein bestimmtes Stichwort (z.\,B. \emph{elektrisch}) aufweisen. Diese
+Methode ben�tigt kein manuelles Zuweisen der Eintr�ge, sondern nutzt
+die bereits in der Datei vorhandenen Informationen. Wenn alle Eintr�ge
+in Ihrer Datenbank passende Stichw�rter haben, k�nnte diese Art von
+Gruppe die beste Wahl f�r Sie sein.
+\item \emph{Dynamische Gruppen basierend auf einer freien Suche} beinhalten
+Eintr�ge, die mit einem bestimmten Suchausdruck �bereinstimmen. Dabei
+wird dieselbe Syntax verwendet wie beim Suchen (siehe Abschnitt~\ref{SearchHelp}).
+Diese Syntax (die auf S.\,\pageref{SearchHelp_advanced} genauer
+beschrieben wird) unterst�tzt logische Operatoren (AND, OR, NOT) und
+erlaubt es, in einem oder mehreren \bibtex{}-Feldern zu suchen. Dadurch
+ist eine flexiblere Definition von Gruppen m�glich als mit einer Stichwortsuche
+(z.\,B. \texttt{author=smith AND title=elektrisch}).
+\end{enumerate}
+Jede Gruppe, die Sie erstellen, ist von einer der drei letztgenannten
+Arten. Der Dialog \menu{Gruppe bearbeiten}, der mit einem Doppelklick
+auf eine Gruppe aufgerufen wird, zeigt eine kurze Beschreibung der
+ausgew�hlten Gruppe.
+
+
+\subsubsection{Gruppenstrukturen, Erstellen und L�schen von Gruppen}
+
+Die Gruppen sind~-- vergleichbar mit Datei-Ordnern~-- in einer Baumansicht
+strukturiert, in der die Gruppe \emph{Alle Eintr�ge} das Stammelement
+ist. Mit einem Rechtsklick auf eine Gruppe k�nnen Sie dem Baum eine
+neue Gruppe hinzuf�gen, entweder auf derselben Ebene wie die ausgew�hlte
+Gruppe oder als ihre Untergruppe. Der Button \menu{Neue Gruppe} erzeugt
+eine neue Untergruppe der Gruppe \emph{Alle Eintr�ge}, egal ob Sie
+gerade Gruppen ausgew�hlt haben oder nicht. Im Kontextmen� k�nnen
+Sie auch Gruppen und\slash{}oder Untergruppen l�schen, Untergruppen
+alphabetisch sortieren oder Gruppen an eine andere Stelle des Baums
+verschieben. Letzteres k�nnen Sie auch mit Drag\,\&\,Drop machen,
+allerdings mit der Einschr�nkung, dass bei Drag\,\&\,Drop die Reihenfolge
+der Untergruppen einer Gruppe nicht ver�ndert werden kann.
+
+Die Funktionen \menu{R�ckg�ngig} und \menu{Wiederholen} werden f�r
+alle Bearbeitungsschritte unterst�tzt.
+
+
+\paragraph{Statische Gruppen}
+
+Statische Gruppen werden nur durch manuelles Zuweisen von Eintr�gen
+>>gef�ttert<<. Nachdem Sie eine statische Gruppe erstellt haben,
+w�hlen Sie die Eintr�ge aus, die Sie ihr zuweisen wollen, und nutzen
+entweder Drag\,\&\,Drop oder das Kontextmen� in der Tabelle, um
+die Zuweisung durchzuf�hren. Um Eintr�ge aus einer Gruppe zu entfernen,
+w�hlen Sie sie aus und benutzen das Kontextmen� in der Tabelle. Es
+k�nnen keine weiteren Optionen angegeben werden.
+
+Diese Methode des Gruppierens setzt voraus, dass alle Eintr�ge einen
+eindeutigen \bibtex{}-Key haben. Im Falle von fehlenden oder doppelten
+\bibtex{}-Keys kann das Zuweisen der betreffenden Eintr�ge in k�nftigen
+Sitzungen nicht korrekt wiederhergestellt werden.
+
+
+\paragraph{Dynamische Gruppen}
+
+Der Inhalt einer dynamischen Gruppe wird von einer logischen Bedingung
+bestimmt. Nur Eintr�ge, die dieser Bedingung entsprechen, geh�ren
+zu dieser Gruppe. Diese Methode nutzt die bereits in der Datei vorhandenen
+Informationen und wird aktualisiert, sobald Sie Ver�nderungen in der
+Datei vornehmen. Es gibt zwei m�gliche Arten von Bedingungen:
+
+\begin{enumerate}
+\item Ein Feld nach einem Stichwort durchsuchen
+
+
+Diese Methode gruppiert Eintr�ge, bei denen ein bestimmtes \bibtex{}-Feld
+(z.\,B. \emph{keywords}) einen bestimmten Suchausdruck (z.\,B. \emph{elektrisch})
+enth�lt. Damit dies funktioniert, muss das Feld, nach dem sortiert
+wird, nat�rlich in jedem Eintrag vorhanden und sein Inhalt fehlerfrei
+sein. Das obige Beispiel w�rde alle Eintr�ge zu einer Gruppe zusammenfassen,
+die sich auf etwas Elektrisches beziehen. Benutzt man das Feld \emph{author},
+kann man sich Eintr�ge eines bestimmten Autors gruppieren lassen,
+usw. Die Suche ist als reine Textsuche oder mit einem regul�ren Ausdruck
+m�glich. Im ersten Fall erlaubt \jabref das manuelle Zuweisen zu
+und Entfernen aus einer Gruppe; dazu f�gt \jabref den Suchausdruck
+dem entsprechenden Feld zu bzw. entfernt ihn daraus. Das macht nur
+f�r das Feld \emph{keywords} oder f�r selbstdefinierte Felder Sinn,
+aber offensichtlich nicht f�r Felder wie \emph{author} oder \emph{year}.
+
+\item Einen freien Suchausdruck verwenden
+
+
+Diese Vorgehensweise ist ganz �hnlich wie die eben beschriebene, aber
+statt nur ein Feld nach einem Suchausdruck zu durchsuchen, kann hierbei
+die Syntax der Suche (siehe S.\,\pageref{SearchHelp_advanced}) angewendet
+werden, die logische Operatoren (AND, OR, NOT) und die Suche in mehreren
+Feldern gleichzeitig unterst�tzt. So fasst z.\,B. die Suchanfrage
+\texttt{keywords=Regression AND NOT keywords=linear} Eintr�ge, die
+sich mit nicht-linearer Regression besch�ftigen, zu einer Gruppe zusammen.
+
+\end{enumerate}
+In der Gruppenansicht werden dynamische Gruppen standardm��ig \emph{kursiv}
+dargestellt. Dies kann unter \menu{Optionen} \msep{} \menu{Einstellungen}
+\msep{} \menu{Gruppen} abgestellt werden.
+
+
+\paragraph{Hierarchischer Kontext}
+
+Standardm��ig ist eine Gruppe \emph{unabh�ngig} von ihrer Position
+im Gruppenbaum. Ist eine Gruppe ausgew�hlt, wird nur der Inhalt dieser
+Gruppe angezeigt. Es ist jedoch~-- besonders beim Verwenden dynamischer
+Gruppen~-- oft n�tzlich, eine Untergruppe zu erstellen, die \emph{ihre
+Obergruppe einbezieht}. Wenn diese Untergruppe ausgew�hlt wird, werden alle Eintr�ge dieser
+Gruppe und ihrer Obergruppe angezeigt. Erstellen Sie z.\,B. eine
+Obergrupe, die Eintr�ge mit dem Stichwort \emph{Verteilung} enth�lt,
+sowie eine einbeziehende Untergruppe mit Eintr�gen, die das Stichwort
+\emph{Gau�} enthalten. Wenn Sie nun die Untergruppe ausw�hlen, werden
+alle Eintr�ge angezeigt, die beiden Bedingungen entsprechen, also
+alle, die mit Gau�'scher Verteilung zu tun haben. Indem Sie nun eine
+weitere Untergruppe f�r \emph{Laplace} anlegen, die dieselbe Obergruppe
+einbezieht, k�nnen Sie die Gruppierung einfach erweitern. Im Gruppenbaum
+haben solche Gruppen, die ihre Obergruppen einbeziehen, ein spezielles
+Icon. (Dieses Verhalten kann in den Einstellungen abgestellt werden.)
+
+Das logische Gegenst�ck zu einer solchen einbeziehenden Untergruppe
+ist eine Gruppe, die \emph{ihre Untergruppen ber�cksichtigt}.
+Wird sie ausgew�hlt, werden nicht nur die Eintr�ge dieser Gruppe,
+sondern auch diejenigen aller Untergruppen angezeigt. Im Gruppenbaum
+hat auch diese Art von Gruppen ein spezielles Icon. (Dieses Verhalten
+kann in den Einstellungen abgestellt werden.)
+
+
+\subsubsection{Eintr�ge einer Gruppe anzeigen, mehrere Gruppen kombinieren}
+
+Wenn Sie eine Gruppe ausw�hlen, werden die Eintr�ge, die dieser Gruppe
+zugeordnet sind, hervorgehoben und~-- je nach Einstellung (die mit
+einem Klick auf den \menu{Einstellungen}-Button vorgenommen werden
+kann)~-- an den Anfang der Tabelle verschoben und\slash{}oder ausgew�hlt.
+Diese Optionen entsprechen denen f�r die normale Suche (siehe Abschnitt~\ref{SearchHelp}).
+
+Wenn Sie meherere Gruppen ausw�hlen (indem Sie die STRG-Taste gedr�ckt
+halten und mehrere Gruppen anklicken), wird~-- je nach Einstellung~--
+entweder die Vereinigung oder die Schnittmenge ihrer Inhalte angezeigt.
+Damit k�nnen mehrere Bedingungen schnell miteinander kombiniert werden.
+Ein Beispiel: Wenn Sie eine statische Gruppe namens \emph{Sehr wichtig}
+haben, in der alle sehr wichtigen Eintr�ge sind, k�nnen Sie sich die
+sehr wichtigen Eintr�ge jeder anderen Gruppe anzeigen lassen, indem
+Sie beide Gruppen ausw�hlen (dazu muss \menu{Schnittmenge} in den
+Einstellungen aktiviert sein).
+
+
+\subsubsection{Gruppen und Suche}
+
+Wenn der Inhalt einer oder mehrerer Gruppen angezeigt wird, k�nnen
+Sie eine Suche innerhalb dieser Eintr�ge durchf�hren. Benutzen Sie
+dazu die normalen Suchfunktionen (siehe Abschnitt~\ref{SearchHelp}).
+
+
+\subsubsection{Sich �berschneidende Gruppen markieren}
+
+Der \menu{Einstellungen}-Button bietet eine Option zum Markieren
+von sich �berschneidenden Gruppen. Wenn diese Option aktiviert ist
+und Sie eine (oder mehrere) Gruppe(n) ausw�hlen, werden alle Gruppen
+markiert, die mindestens einen Eintrag enthalten, der auch der ausgew�hlten
+Gruppe zugeordnet ist. Damit k�nnen Sie schnell �berschneidungen zwischen
+den Eintr�gen verschiedener Gruppen erkennen. Sie k�nnten beispielsweise
+eine Gruppe mit dem Namen \emph{lesen} erstellen, die alle Eintr�ge
+enth�lt, die sie lesen wollen. Sobald Sie nun eine Gruppe ausw�hlen,
+wird die Gruppe \emph{lesen} markiert, sofern die ausgew�hlte Gruppe
+Eintr�ge enth�lt, die Sie noch lesen wollten.
+
+
+\subsubsection{Erweiterte Funktionen}
+
+Wenn Sie sich mit dem oben beschriebenen Gruppenkonzept vertraut gemacht
+haben, k�nnten die folgenden erweiterten Funktionen n�tzlich sein.
+
+
+\paragraph{Dynamische Gruppen automatisch erstellen}
+
+Mit einem Klick auf den Button \menu{Automatisch Gruppen f�r die Datei anlegen}
+k�nnen Sie ganz schnell passende Gruppen f�r Ihre Datei erzeugen.
+Diese Funktion sammelt alle W�rter eines bestimmten Felds Ihrer Wahl
+und erstellt eine Gruppe f�r jedes Wort. Das ist zum Beispiel n�tzlich,
+wenn Ihre Datei geeignete Stichworte f�r alle Eintr�ge enth�lt. Mit
+dem automatischen Erstellen von Gruppen basierend auf dem Feld \emph{keywords}
+k�nnen Sie also ohne gro�en Aufwand ein Grundger�st von Gruppen anlegen.
+
+Sie k�nnen auch Zeichen angeben, die ignoriert werden sollen, z.\,B.
+Kommas, die zwischen einzelnen Stichworten stehen. Diese werden als
+Worttrenner behandelt und nicht als Teile des Wortes selbst. Dieser
+Schritt ist wichtig, damit kombinierte Stichworte wie etwa \emph{Gau�'sche
+Verteilung} als semantische Einheit interpretiert werden k�nnen. (Sie
+k�nnen diese Option allerdings nicht verwenden, um ganze W�rter zu
+ignorieren. Sie m�ssen stattdessen die Gruppen, die Sie nicht wollen,
+nach dem automatischen Erstellen von Hand l�schen.)
+
+
+\paragraph{Ansicht aktualisieren}
+
+Der \menu{Aktualisieren}-Button in der Gruppenansicht aktualisiert
+die Tabelle in Bezug auf die aktuell ausgew�hlten Gruppen. Normalerweise
+erfolgt dies automatisch, aber in seltenen F�llen (z.\,B. nach einem
+R�ckg�ngig- oder Wiederholen"=Vorgang, der mit Gruppen zusammenh�ngt)
+ist ein h�ndisches Aktualisieren n�tig.
+
+
+\paragraph{Einbeziehende Unter- und Obergruppen mischen}
+
+Ist eine einbeziehende Gruppe die Untergruppe von einer Gruppe,
+die ihre Untergruppen ber�cksichtigt~-- hat sie also sozusagen Geschwister~--,
+dann werden diese Geschwister ignoriert,
+sobald die einbeziehende Gruppe ausgew�hlt wird.
+
+
+\subsection{Markieren von Eintr�gen}
+\label{MarkingHelp}
+
+\begin{quote}
+\emph{Mit der Tastenkombination STRG-M k�nnen
+Sie Eintr�ge markieren und diese Markierung mit STRG-SHIFT-M wieder
+aufheben. Diese Aktionen sind auch im Men� \menu{Bearbeiten} zu finden.}
+\end{quote}
+Das Markieren ist nicht dasselbe wie das Ausw�hlen eines Eintrags.
+Markierte Eintr�ge verhalten sich in zweierlei Hinsicht anders als
+die restlichen Eintr�ge:
+
+\begin{enumerate}
+\item Markierte Eintr�ge werden immer mit einem gelben Hintergrund in der
+Tabelle angezeigt.
+\item Markierte Eintr�ge werden an den Anfang der Eintragsliste verschoben,
+falls Ihre Tabelle nicht nach Gruppen oder aufgrund einer Suche sortiert
+ist.
+\end{enumerate}
+Wenn Sie Ihre Datei speichern, werden die Markierungen beibehalten.
+Das Markieren von Eintr�gen ist z.\,B. n�tzlich, wenn Sie verschiedene
+Suchvorg�nge durchf�hren wollen, ohne das erste Suchergebnis zu verlieren,
+oder wenn Sie sich merken wollen, welche Artikel oder B�cher Sie noch
+einmal genauer ansehen m�ssen.
+
+
+\subsection{\texorpdfstring{String"=Editor}{String-Editor}}
+\label{StringEditorHelp}
+
+\begin{quote}
+\emph{Zugriff �ber das Men� \menu{BibTeX}} \msep{} \emph{\menu{Strings bearbeiten}
+oder durch Klick auf die Schaltfl�che \menu{Strings bearbeiten}.}
+\end{quote}
+\emph{Strings} sind das \bibtex{}-�quivalent zu Konstanten in einer
+Programmiersprache. Jeder String wird durch einen eindeutigen \emph{Namen}
+und einen \emph{Inhalt} festgelegt. Der Name kann an anderer Stelle
+in der Datei benutzt werden, um den Inhalt wiederzugeben.
+
+Ein Beispiel: Wenn viele Eintr�ge aus einer Zeitschrift stammen, deren
+Abk�rzung schwer zu behalten ist, wie etwa >>J. Theor. Biol.<< (Journal
+of Theroretical Biology), k�nnte ein String mit dem Namen >>JTB<<
+angelegt werden, um den Namen der Zeitschrift zu repr�sentieren. Statt
+nun in jedem Eintrag den exakten Namen der Zeitschrift einzutragen,
+gen�gt die Zeichenfolge \texttt{\#JTB\#} im Feld \emph{journal}, und
+es ist sichergestellt, dass der Name jedesmal in identischer Schreibweise
+ausgegeben wird.
+
+Der Verweis auf einen String kann an jeder Stelle eines Feldes erscheinen,
+wobei der Name des Strings immer von einem Paar \texttt{\#}-Zeichen
+eingeschlossen werden muss. Diese Syntax gilt nur f�r \jabref und
+weicht ein wenig von der \bibtex{}-Syntax ab, die erzeugt wird, wenn
+Sie Ihre Datei speichern. Strings k�nnen f�r alle Standard-\bibtex{}-Felder verwendet werden.
+Unter \menu{Optionen \msep{} Einstellungen \msep{} Allgemein} k�nnen Sie im Bereich \menu{Datei} festlegen, ob Strings auch in Nicht-Standard-Feldern benutzt werden d�rfen. In diesem Fall k�nnen Sie Felder bestimmen, die von der Aufl�sung der Strings ausgenommen werden; hierbei wird empfohlen, das Feld \texttt{url} und andere Felder anzugeben, die das Zeichen \texttt{\#} enthalten k�nnen und die von \bibtex\slash\LaTeX{} verarbeitet werden k�nnen.
+
+In derselben Weise kann man auch im Inhalt eines Strings auf einen
+anderen String verweisen, vorausgesetzt, dass der String, auf den
+verwiesen wird, bereits \emph{vorher} definiert ist.
+
+W�hrend die Reihenfolge der Strings in Ihrer \bibtex{}-Datei in einigen
+F�llen wichtig ist, brauchen Sie sich bei der Benutzung von \jabref
+dar�ber keine Gedanken zu machen. Die Strings werden in alphabetischer
+Reihenfolge im String-Editor aufgelistet und in derselben Reihenfolge
+gespeichert, au�er wenn eine andere Reihenfolge von \bibtex{} verlangt
+wird.
+
+\subsection{Abk�rzung von Zeitschriftentiteln}
+\label{JournalAbbreviations}
+\begin{quote}
+\emph{Diese Funktion kann unter \menu{Optionen \msep{} Abk�rzungen der Zeitschriften verwalten} eingestellt werden.}
+\end{quote}
+\jabref kann automatisch zwischen Zeitschriftentiteln in abgek�rzter und ausf�hrlicher Form hin- und herschalten, sofern die Titel in einer Ihrer Zeitschriftenlisten enthalten ist. Sie k�nnen mehrere dieser Listen benutzen, die Sie als externe Textdateien anlegen.
+
+\subsubsection{Benutzungshinweise}
+
+Die Abk�rzung von Zeitschriftentiteln k�nnen Sie vom Eintragseditor oder vom Men� \menu{Extras} aus ein- und ausschalten. Im Eintragseditor benutzen Sie dazu den Button \menu{Abk�rzung an-/abschalten} neben dem \emph{Journal}-Feld. Es wird zwischen drei Modi hin- und hergeschaltet:
+\begin{itemize}
+ \item Kompletter Name, z.\,B. ">Aquacultural Engineering"<
+ \item \textls{ISO}-Abk�rzung, z.\,B. ">Aquacult. Eng."<
+ \item \textls{MEDLINE}-Abk�rzung, z.\,B. ">Aquacult Eng"<
+\end{itemize}
+Falls der Zeitschriftentitel sich nicht in Ihren Zeitschriftenlisten findet, wird das Feld nicht ver�ndert.
+
+Um die Zeitschriftentitel mehrerer Eintr�ge auf einmal zu konvertieren, k�nnen Sie eine beliebige Anzahl von Eintr�gen ausw�hlen und im Men� \menu{Extras} einen der Eintr�ge \menu{Zeitschriftentitel abk�rzen (ISO)}, \menu{Zeitschriftentitel abk�rzen (MEDLINE)} und \menu{Abk�rzung der Zeitschriften aufheben} w�hlen.
+Diese drei Aktionen sorgen daf�r, dass bei allen ausgew�hlten Eintr�gen die Zeitschriftentitel, die in den Zeitschriftenlisten gefunden werden konnten, abgek�rzt oder komplett ausgeschrieben werden.
+
+\subsubsection{Zeitschriftenlisten verwalten}
+
+Sie k�nnen mehrere Zeitschriftenlisten als externe Textdateien benutzen, die mit \jabref verlinkt sind. Die prim�re Liste kann in \jabref selbst verwaltet werden.
+
+\paragraph{Ihre pers�nliche Zeitschriften-Abk�rzungsliste}
+
+Ihre pers�nliche Liste verwalten Sie im oberen Teil des Dialogs \menu{Abk�rzung der Zeitschriftentitel}.
+W�hlen Sie \menu{Neue Datei} und geben einen Dateinamen ein oder klicken auf den \menu{Durchsuchen}-Button. Wenn Sie bereits eine Datei haben, die Sie als Grundlage nehmen wollen, w�hlen Sie stattdessen \menu{Bestehende Datei} und benutzen den \menu{Durchsuchen}-Button zum Ausw�hlen dieser Datei. Die Tabelle zeigt dann den Inhalt der Liste, die Sie ausgew�hlt haben.
+
+Sie k�nnen mit Hilfe der \menu{+} und \menu{--} Buttons an der rechten Seite Eintr�ge hinzuf�gen oder entfernen. F�r jeden Eintrag m�ssen Sie den vollst�ndigen Zeitschriftentitel und die ISO-Abk�rzung angeben (z.\,B. ">Aquacultural Engineering"< und ">Aquacult. Eng."<). Mit einem Doppelklick auf die Tabellenzeile k�nnen Sie die Eintr�ge bearbeiten.
+
+Sobald Sie auf \menu{OK} klicken (oder wenn Sie eine bestehende Datei ausgew�lt haben), enth�lt die Tabelle mindestens eine Zeile. Der Tabelleninhalt wird in die ausgew�hlte Datei geschrieben und die Zeitschriftenliste von \jabref wird aktualisiert.
+
+\paragraph{Externe Zeitschriftenlisten}
+
+Zus�tzlich zu Ihrer pers�nlichen Liste k�nnen Sie mehrere externe Listen verlinken. Diese Verkn�pfungen werden im unteren Teil des Dialogs \menu{Abk�rzung der Zeitschriftentitel} verwaltet. Externe Listen sind den pers�nlichen Listen �hnlich~-- der einzige Unterschied ist, dass Sie nicht mit \jabref selbst verwaltet werden k�nnen.
+
+Um eine externe Liste hinzuzuf�gen, klicken Sie zun�chst auf den \menu{+} Knopf, falls n�tig (das f�gt eine weitere Zeile hinzu). Dann benutzen Sie entweder den \menu{Durchsuchen}- oder den \menu{Herunterladen}-Button.
+ \begin{itemize}
+ \item Mit dem \menu{Durchsuchen}-Knopf k�nnen Sie eine auf Ihrem Computer bestehende Datei ausw�hlen.
+ \item Mit dem \menu{Herunterladen}-Knopf k�nnen Sie eine Liste aus dem Internet herunterladen, indem Sie einen URL angeben. Die Datei wird auf Ihrem Computer gespeichert und mit \jabref verlinkt.
+ Der URL ist standardm��ig die Adresse einer Zeitschriftenliste auf der \jabref-Homepage. Diese Liste ist unvollst�ndig, wird in Zukunft aber ausgebaut.
+ \end{itemize}
+Jeder Eintrag in Ihrer pers�nlichen Liste �berschreibt einen Eintrag mit demselben vollst�ndigen Zeitschriftentitel in einer Ihrer externen Listen. In �hnlicher Weise werden die externen Listen in der Reihenfolge, wie sie aufgelistet werden, abgearbeitet.
+
+\subsection{Wortauswahl verwalten}
+
+\label{ContentSelectorHelp}Diese Funktion erm�glicht es, eine Auswahl
+von oft benutzten W�rtern oder Phrasen zu speichern. In der Standardeinstellung
+ist sie f�r die Felder \emph{journal}, \emph{keywords} und \emph{publisher}
+aktiviert, aber Sie k�nnen die Funktion auch in anderen Feldern verwenden,
+indem Sie diese Felder im oberen Teil des Dialogs \menu{Extras} \msep{}
+\menu{Wortauswahl verwalten} hinzuf�gen.
+
+Die Wortauswahl gilt nur f�r die jeweilige Datei und wird daher zusammen
+mit den Literaturangaben in der \bibtex{}-Datei gespeichert. Jedes
+Feld mit Wortauswahl erh�lt im Eintrags-Editor einen gesonderten Bereich
+mit einer Auswahlliste und der Schaltfl�che \menu{Verwalten}. Wenn
+Sie die Auswahlliste mit der Maus anklicken, erscheint eine Liste
+der f�r dieses Feld verf�gbaren W�rter. Sobald Sie auf das gew�nschte
+Wort klicken, wird es in das entsprechende Feld geschrieben.
+
+Um ein neues Wort hinzuzuf�gen, schreiben Sie es einfach in das Auswahlfeld
+(�ber der Schaltfl�che \menu{Verwalten}) und dr�cken ENTER. Im Dialog
+\menu{Verwalten} k�nnen Sie hinzugef�gte W�rter auch wieder l�schen.
+
+
+\subsection{Import}
+
+\subsubsection{Import-Kontrollfenster}
+
+\label{ImportInspectionDialog}Beim Importieren neuer Eintr�ge aus
+einem unterst�tzten Format oder beim Herunterladen von Eintr�gen aus
+dem Internet werden diese Eintr�ge zun�chst im Import-Kontrollfenster
+gezeigt. Zu diesem Zeitpunkt wurden noch keine Eintr�ge zu einer ge�ffneten
+Datei hinzugef�gt.
+
+Im Kontrollfenster k�nnen Sie Eintr�ge entfernen, die nicht �bernommen
+werden sollen, und einige einfache Arbeiten durchf�hren wie etwa das
+Generieren von \bibtex{}-Keys f�r die Eintr�ge oder das Zuordnen von
+Eintr�gen zu Gruppen. Wenn Sie in eine bestehende Datei importieren,
+ist es oftmals leichter, diese Arbeiten durchzuf�hren, bevor die neuen
+Eintr�ge zwischen die bereits bestehenden sortiert wurden.
+
+\subsubsection[EndNote -> \jabref]{EndNote $\to$~\jabref}\label{subsubsec:endnote-jabref}
+
+EndNote hat einen Export-Stil \bibtex{}, der allerdings nicht alle
+Eintragstypen und Felder von \bibtex{} und auch nicht die zus�tzlich
+von \jabref genutzten Allgemeinen Felder (\emph{pdf}, \emph{owner},
+\emph{key} usw.) unterst�tzt. Falls Sie diese Felder nutzen wollen,
+verwenden Sie die EndNote Extras (\menu{Extras \msep{} EndNote Filter-Set entpacken}), extrahieren die Zip-Datei,
+die dabei erstellt wird und folgen den Anweisungen in der Datei \texttt{readme.txt}.
+
+\subsection{Export}
+\subsubsection[\jabref -> EndNote]{\jabref $\to$~EndNote}
+\label{EndnoteFilters}
+
+\begin{quote}
+\emph{\jabref kann Dateien so exportieren,
+dass EndNote sie lesen kann. Um diese Funktion zu nutzen, w�hlen Sie
+\menu{Datei \msep{} Exportieren}, dann bei \emph{Dateityp} \menu{Endnote} und
+geben den Namen der Export"=Datei an.}
+\end{quote}
+Der Standard"=Importfilter von EndNote kann nicht richtig mit mehreren
+Autoren oder Editoren umgehen. Es gibt zwei M�glichkeiten, um diese
+Schwierigkeit zu umgehen:
+
+\begin{enumerate}
+\item Benutzen Sie den eingebauten Filter und bessern Sie die Datei sp�ter
+aus.
+
+Um die Datei in EndNote zu �ffnen, erstellen Sie eine neue Datei oder
+�ffnen eine bestehende Datei in EndNote. Dann w�hlen Sie \menu{Datei}
+\msep{} \menu{Importieren}, klicken mit der Maus auf \menu{Datei w�hlen},
+w�hlen die aus \jabref exportierte Datei aus und dr�cken auf \menu{Ausw�hlen}.
+Anschlie�end dr�cken Sie auf \menu{Import Optionen} und w�hlen \menu{EndNote Import}.
+Mit einem Klick auf \menu{Importieren} starten Sie den Importvorgang.
+Anschlie�end gehen Sie zum Men�punkt \menu{Bearbeiten} \msep{} \menu{Text �ndern}
+und �ndern \emph{Any Field} in \emph{Author}. Geben Sie \lstinline{_and_}
+in das Suchfeld ein (die Unterstriche stehen f�r Leerzeichen) sowie ein RETURN-Zeichen
+in das Feld \emph{�ndern} (Option-Return unter Mac OS X, STRG-Return unter
+Windows XP). Dann klicken Sie auf \menu{�ndern}. Wiederholen Sie
+das Ganze f�r das Feld \emph{Secondary Author} (Zweiter Autor).
+
+\item Installieren Sie den \emph{EndNote Import from JabRef Filter}.
+
+Folgen Sie den Anweisungen im Abschnitt \nameref{EndNote_erweitert}. Um die Datei in
+EndNote zu �ffnen, erstellen Sie eine neue Datei oder �ffnen eine
+bestehende Datei in EndNote. Dann w�hlen Sie \menu{Datei} \msep{}
+\menu{Importieren}, klicken auf \menu{Datei w�hlen}, w�hlen die
+exportierte Datei aus und dr�cken auf \menu{Ausw�hlen}. Anschlie�end
+dr�cken Sie auf \menu{Import Optionen} und w�hlen \menu{EndNote Import from JabRef}.
+(Falls dieser Eintrag nicht erscheint, w�hlen Sie \menu{Weitere Filter}.
+Wenn er dann immer noch nicht erscheint, wurde der Filter nicht korrekt
+installiert.) Klicken Sie schlie�lich auf \menu{Importieren}, um
+den Importvorgang zu starten.
+
+\end{enumerate}
+Der EndNote Exportfilter ordnet \bibtex{}-Eintragstypen folgenden
+EndNote-Re\-fe\-renz\-ty\-pen zu:
+
+\medskip{}
+\begin{center}\begin{tabular}{ll}
+\textbf{\bibtex{}-Eintragstyp}&
+\textbf{Endnote-Referenztyp}\tabularnewline
+misc, other&
+Generic\tabularnewline
+unpublished&
+Manuscript\tabularnewline
+manual&
+Computer Program\tabularnewline
+article&
+Journal Article\tabularnewline
+book&
+Book\tabularnewline
+booklet&
+Personal Communication\tabularnewline
+inbook, incollection&
+Book Section\tabularnewline
+inproceedings&
+Conference Proceedings\tabularnewline
+techreport&
+Report\tabularnewline
+mastersthesis, phdthesis~&
+Thesis\tabularnewline
+\end{tabular} \end{center}
+\medskip{}
+
+\noindent In der Standardeinstellung geht der Exportfilter davon aus,
+dass Eintr�ge in den Feldern \emph{author} oder \emph{editor}, die
+geklammert sind, mehrere Autoren enthalten und ersetzt die Klammern
+durch ein angeh�ngtes Komma. Dadurch werden Eintr�ge, die \LaTeX{}-Befehle
+mit Klammern enthalten, als Eintrag mit mehreren Autoren gewertet
+und demzufolge unpassend formatiert.
+
+\subsubsection{Erweiterte Benutzung: EndNote Extras}
+
+\label{EndNote_erweitert}Einige Felder, die von \bibtex{} genutzt
+werden, geh�ren nicht zu EndNotes vorgegebenen Referenztypen. W�hrend
+der Import in \jabref und der Export nach \jabref ohne ein �ndern
+der Referenztypen funktioniert, werden die Feldnamen in EndNote nicht
+korrekt dargestellt (z.\,B. wird das PDF-Feld \emph{Custom 1} hei�en
+statt \emph{pdf}). Dar�ber hinaus k�nnen diese Felder bei neuen Eintr�gen
+in EndNote nicht genutzt werden, weil sie nicht im Eintragsdialog
+erscheinen. Der vorgegebene Importfilter von EndNote kann dar�berhinaus
+das Feld \emph{author} nicht richtig analysieren. Der \emph{EndNote
+Import from JabRef Filter} kann dies. Au�erdem erkennt dieser Filter
+ein Feld \texttt{endnotereftype}, das die vorgegebene Zuordnung �berschreibt.
+Um den Filter zu installieren, nutzen Sie die EndNote Extras
+(\menu{Extras \msep{} EndNote Filter-Set entpacken})
+und entpacken die Zip-Datei, die dabei erstellt wird. Dann folgen
+Sie den Angaben in der Datei \texttt{readme.txt}.
+
+\subsubsection{\jabref-Bibliographien in OpenOffice.org benutzen}
+\label{Export-OOo}
+\jabref kann Ihre Datei sowohl in das OpenOffice.org 1.1 \texttt{.sxc}"=Tabellenkalkulationsformat als auch in das OpenDocument \texttt{.ods}"=Tabellenkalkulationsformat, das von OpenOffice.org 2.0 benutzt wird, exportieren.
+
+In beiden F�llen besteht die exportierte Tabelle aus einem Arbeitsblatt, das die Eintr�ge in Reihen
+und die unterschiedlichen Felder in Spalten enth�lt. Die Reihenfolge und Benennung der Spalten ist kompatibel
+zu den Literaturverzeichnis-Funktionen von OpenOffice.org (OOo 1.1: \texttt{.sxc}, OOo 2.0: \texttt{.ods}).
+
+Je nach Ihrer Version von OpenOffice.org gibt es verschiedene
+ Vorgehensweisen, um JabRef zum Verwalten Ihrer bibliographischen
+ Datenbank zu benutzen:
+
+ \paragraph{Die exportierte Datei als bibliographische Datenbank in
+ OpenOffice.org 2.3 und 2.4 benutzen}
+
+ Mit folgenden Schritten k�nnen Sie eine aus \jabref exportierte
+ Tabelle als bibliographische Datenbank benutzen:
+
+ \begin{itemize}
+ \item Exportieren Sie in \jabref Ihre Datei in das \texttt{.ods}-Format
+ \item �ffnen Sie OpenOffice.org Writer
+ \item W�hlen Sie \menu{Bearbeiten} \msep{} \menu{Datenbank austauschen}. Klicken Sie auf
+ \menu{Durchsuchen} und w�hlen die Datei, die Sie in das \texttt{.ods}-Format
+ exportiert haben.
+ \item Klicken Sie auf das \menu{+} vor dem Namen der Datenbank, anschlie�end
+ auf den angezeigten Dateinamen und schlie�lich auf den Knopf \menu{Festlegen}.
+ \item W�hlen Sie \menu{Extras} \msep{} \menu{Optionen} \msep{} \menu{OpenOffice.org Base} \msep{}
+ \menu{Datenbanken}. In diesem Fenster sollte die Datenbank, die Sie gerade
+ importiert haben, angezeigt werden. Die Standard-Datenbank f�r Bibliographien
+ von OOo sollte ebenfalls angezeigt werden (Bibliography).
+ \item Klicken Sie auf \menu{Bearbeiten} und �ndern Sie den Namen der Datenbank
+ \emph{Bibliography}, z.\,B. zu \emph{Bibliography-old} (denn OpenOffice.org
+ kann nicht mit mehreren bibliographischen Datenbanken arbeiten).
+ \item W�hlen Sie anschlie�end Ihre bibliographische Datenbank und benennen Sie sie um in
+ \emph{Bibliography} (achten Sie auf einen Gro�buchstaben am Anfang des Namens).
+ \end{itemize}
+ Nach diesen Schritten sollte Ihre bibliographische Datenbank zur Benutzung
+ mit OpenOffice.org bereit sein. Um das zu pr�fen, w�hlen Sie \menu{Einf�gen} \msep{}
+ \menu{Verzeichnisse} \msep{} \menu{Literaturverzeichniseintrag\ldots}. Im folgenden Dialog sollten
+ in der Dropdownliste (unter \menu{Kurzbezeichnung}) die \bibtex-Keys Ihrer
+ Datenbank erscheinen.
+
+\paragraph{Die exportierte Datei als Bibliographiedatenbank in OpenOffice 2.0, 2.1 oder 2.2 benutzen}
+Gehen Sie folgenderma�en vor, um eine Tabelle, die von \jabref exportiert wurde, als Bibliographiedatenbank in OpenOffice.org zu benutzen:
+
+\begin{itemize}
+\item Exportieren Sie Ihre Datenbank in das \texttt{.ods} -Format.
+\item Starten Sie OpenOffice.org.
+\item W�hlen Sie \menu{Extras} \msep{} \menu{Optionen} \msep{} \menu{OpenOffice.org Base} \msep{} \menu{Datenbanken}.
+\item Bearbeiten Sie die \emph{Bibliography}-Datenbank und �ndern ihren Namen z.\,B. in \emph{Bibliographie-alt}.
+\item Schlie�en Sie das Fenster \menu{Optionen} und gehen Sie zu \menu{Datei} \msep{} \menu{Neu} \msep{} \menu{Datenbank}.
+\item Dann w�hlen Sie \menu{Verbindung zu einer bestehenden Datenbank herstellen}, nehmen \menu{Tabellendokument} als
+ Datenbanktyp und w�hlen die \texttt{.ods}-Datei, die Sie exportiert haben.
+\item Klicken Sie auf \menu{Fertig stellen} und w�hlen den Namen \emph{Bibliography} im Speicherdialog.
+\end{itemize}
+Anschlie�end w�hlen Sie \menu{Extras} \msep{} \menu{Literaturdatenbank}. Ihre Datenbank sollte nun angezeigt werden.
+
+\paragraph{Eine exportierte Datei als Datenbank in OpenOffice 1.1.x benutzen}
+
+\begin{itemize}
+\item Exportieren Sie Ihre Datei in das \texttt{.sxc}-Format.
+\item Starten Sie OpenOffice.org.
+\item W�hlen Sie \menu{Extras} \msep{} \menu{Datenquellen}.
+\item W�hlen Sie die \emph{Bibliography}-Datei und �ndern ihren Namen beispielsweise in \emph{Bibliographie-alt}.
+\item Dr�cken Sie \menu{Anwenden}.
+\item Klicken Sie \menu{Neue Datenquelle}. Ein neuer Eintrag erscheint. �ndern Sie den Namen zu \emph{Bibliography}.
+\item �ndern Sie den \menu{Dateityp} zu \menu{Tabelle}. Klicken Sie den \menu{\ldots}-Button in der Zeile \menu{Datenquellen URL}. W�hlen Sie die \texttt{.sxc}-Datei, die Sie exportiert haben.
+\item Klicken Sie auf \menu{OK}, um das Fenster \menu{Datenquellen} zu schlie�en.
+\end{itemize}
+Anschlie�end w�hlen Sie \menu{Extras} \msep{} \menu{Literaturdatenbank}.
+Ihre Datenbank sollte nun angezeigt werden.
+
+\subsubsection{Klartext-Import}
+
+\begin{quote}
+\emph{Sie k�nnen aus einfachen Text-Dateien oder der Zwischenablage
+einen Importvorgang starten, indem Sie \menu{BibTeX}} \msep{} \emph{\menu{Neuer Eintrag aus Klartext}
+oder die Tastenkombination STRG-SHIFT-N w�hlen.}
+\end{quote}
+Dieser Dialog erm�glicht das schnelle Einf�gen von Eintr�gen aus normalem
+Text. W�hlen Sie zun�chst aus, welcher Eintragstyp erstellt werden
+soll. F�gen Sie dann einfach Text aus der Zwischenablage ein (�ber das
+Kontextmen� im Textfeld mit der Wasserzeichenschrift >>Text einf�gen<<
+oder �ber den Button \menu{Einf�gen}). Alternativ k�nnen Sie �ber den Button
+\menu{Datei �ffnen} eine Datei ausw�hlen, um sie in den Dialog zu laden.
+
+Jetzt markieren Sie z.\,B. den Textbereich, der zum Titel des neuen
+Eintrags werden soll, und f�hren im rechten Teil des Dialogfensters
+im Bereich \menu{Verf�gbare BibTeX"=Felder} einen Doppelklick auf \emph{title} aus.
+So gehen Sie f�r alle weiteren Felder des neuen Eintrags vor. Sie
+k�nnen einem Feld nat�rlich auch mehrere Textbereiche zuordnen. Achten
+Sie dazu darauf, dass die Option \menu{anf�gen} aktiviert ist, ansonsten
+wird bei jedem neuen Zuweisen von Textbereichen das Feld �berschrieben
+(Option \menu{�berschreiben}).
+
+Bereits zugewiesene Textteile werden im Tab \menu{Importtext} blau
+hervorgehoben. Um zu kontrollieren, welche Textbereiche Sie einem
+bestimmten \bibtex{}-Feld zugewiesen haben, w�hlen Sie das Feld im
+rechten Bereich aus; der zugeordnete Text wird nun rot hervorgehoben.
+
+Sie k�nnen sich das Ergebnis des Importvorgangs jederzeit im Tab \menu{BibTeX"=Quelltext}
+des Importdialogs ansehen. Hier k�nnen keine �nderungen vorgenommen
+werden; das ist erst m�glich, sobald der Text tats�chlich importiert
+und ein neuer Eintrag angelegt wurde. Auf m�gliche Fehler werden Sie
+im Tab \menu{Hinweise und Warnungen} aufmerksam gemacht.
+
+Haben Sie alle Textstellen den gew�nschten \bibtex{}-Feldern zugewiesen,
+klicken Sie auf die Schaltfl�che \menu{�bernehmen}. Nun erstellt
+\jabref den neuen Eintrag, der allerdings noch keinen \bibtex{}-Key
+hat.
+
+\subsection{Links zu PDF- und \texorpdfstring{PS"=Dateien}{PS-Dateien}, URLs und DOIs}
+\label{ExternalFiles}
+
+\tip[Anmerkung: ]{Ab \jabref 2.3 gibt es ein verbessertes System f�r Links zu externen Dateien; siehe dazu den Abschnitt ">\nameref{FileLinks}"<.}
+
+\noindent Mit \jabref k�nnen Sie Ihre Eintr�ge mit
+den entsprechenden PDF- oder PS-Dateien, die sich auf Ihrem Computer
+befinden, verlinken. Ebenso ist es m�glich, Dateien im Internet �ber
+einen URL oder DOI zu verlinken.
+
+
+\subsubsection{Externe Betrachter einrichten}
+
+\jabref ben�tigt Informationen dar�ber, welche Programme es f�r
+PDF- und PS"=Dateien und Internetseiten benutzen soll. In der Standardeinstellung
+werden sie auf Werte gesetzt, die wahrscheinlich zu Ihrem Betriebssystem
+passen, so dass eine gute Chance besteht, dass Sie diese Werte nicht
+zu ver�ndern brauchen.
+
+\begin{quote}
+\emph{Um die Einstellungen der externen Programme zu �ndern, �ffnen
+Sie den Unterpunkt \menu{Externe Programme} im Dialog \menu{Optionen}}
+\msep{} \emph{\menu{Einstellungen}.}
+\end{quote}
+
+\subsubsection{Externe Dateien oder Links �ffnen}
+
+Es gibt verschiedene M�glichkeiten, wie man externe Dateien oder Internetseiten
+aus \jabref �ffnen kann. Im Eintrags-Editor k�nnen Sie einfach
+auf das Textfeld, das einen DOI oder URL enth�lt, doppelklicken. In
+der Tabellenansicht k�nnen Sie einen Eintrag ausw�hlen und die Men�eintr�ge
+(unter \menu{Extras}), die Tastenkombinationen (in der Standardeinstellung
+F4 f�r PDF/PS und F3 f�r DOI/URL) oder das Kontextmen� (mit der rechten
+Maustaste) benutzen, um die Datei oder Internetseite zu �ffnen. Schlie�lich
+k�nnen Sie auch auf ein PDF-, PS-, URL- oder DOI-Icon in der Tabelle
+klicken.
+
+In der Standardeinstellung zeigt die Tabellenansicht zwei Spalten
+mit Icons f�r die Eintr�ge, die mit externen Dateien oder URLs verlinkt
+sind. Beide Spalten k�nnen im Unterpunkt \menu{Tabellenansicht} des
+Dialogs \menu{Optionen} \msep{} \menu{Einstellungen} ausgeblendet
+werden. Die zweite Spalte zeigt Icons f�r PDF- oder PS-Dateien (nur
+PDF, wenn beide vorhanden sind), die dritte Spalte zeigt Icons f�r
+URL oder DOI (nur URL, wenn beide vorhanden sind).
+
+
+\subsubsection{Der Standard-Ordner f�r PDF-Dateien}
+
+PDF-Dateien erhalten von \jabref eine >>Spezialbehandlung<<,
+um das Verlinken mit den entsprechenden Eintr�gen so einfach wie m�glich
+zu gestalten. Um diese >>Spezialbehandlung<< nutzen zu k�nnen, m�ssen
+Sie im Unterpunkt \menu{Externe Programme} des Dialogs \menu{Optionen}
+\msep{} \menu{Einstellungen} einen Ordner als Standard-Ordner f�r
+Ihre PDF-Dateien angeben. Alle PDF-Dateien, die in diesem Ordner oder
+einem Unterordner gespeichert sind, werden mit einer relativen Pfadangabe
+referenziert, so dass Sie problemlos PDF-Verzeichnisse verschieben
+oder mit mehreren Benutzern von verschiedenen Netzwerkarbeitspl�tzen
+aus an derselben Datei arbeiten k�nnen.
+
+Wenn Sie Ihren PDF-Dateien dann noch Namen geben, die mit dem \bibtex{}-Key
+des entsprechenden Eintrags �bereinstimmen (abgesehen von der Dateiendung \texttt{.pdf}),
+sucht \jabref in Ihrem Standard-PDF-Ordner und dessen
+Unterordnern nach der richtigen PDF-Datei. Sobald die korrekt benannte
+PDF-Datei sich dort befindet, klicken Sie auf die Schaltfl�che \menu{Auto}
+neben dem PDF-Feld im Eintrags-Editor. Wenn die PDF-Datei gefunden
+wird, wird das Feld entsprechend gesetzt.
+
+Wenn Sie eine PDF-Datei wie beschrieben benennen, k�nnen Sie sie auch
+�ffnen, ohne das PDF-Feld �berhaupt zu benutzen. Der Nachteil ist
+in diesem Fall allerdings, dass das PDF-Icon in der Tabellenansicht
+nicht angezeigt wird, solange das PDF-Feld leer bleibt.
+
+\subsubsection{Dateispezifische PDF- und PS-Verzeichnisse}
+
+Sie k�nnen f�r jede Datei eigene PDF- und PS-Verzeichnisse angeben \emph{(}\menu{Datei \msep{} Eigenschaften der Datei}\emph{)}. Diese Verzeichnisse ersetzen dann die Standardverzeichnisse.
+
+\subsubsection{Die Suche mit regul�ren Ausdr�cken f�r automatische Verkn�pfungen nutzen}
+\label{RegularExpressionSearch}
+
+Wenn Sie Dateinamen verwenden, die dem bibtexkey erg�nzt um die Dateiendung entsprechen, findet \jabref diese Dateien automatisch.
+
+Ab Version~2.2 ist mit Hilfe von regul�ren Ausdr�cken eine gr��ere Flexibilit�t beim Benennen der Dateien gew�hrleistet. In den meisten F�llen d�rfte das Standardverhalten bereits ausreichend sein.
+
+In den Einstellungen zu externen Programmen \emph{(}\menu{Optionen \msep{} Einstellungen \msep{} Externe Programme}\emph{)} findet sich eine Option ">Suche mit regul�rem Ausdruck benutzen"<. Wenn Sie diese Option aktivieren, k�nnen Sie f�r die Suche in PDF-Verzeichnissen einen eigenen regul�ren Ausdruck angeben.
+
+Die folgende Syntax wird verwendet:
+
+\begin{labeling}{MextensionM}
+ \item [\texttt{*}] Suche in allen direkten Unterverzeichnissen, NICHT im aktuellen Verzeichnis und in Unterverzeichnissen zweiter oder tieferer Ebene.
+ \item [\texttt{**}] Rekursive Suche in allen Unterverzeichnissen UND im aktuellen Verzeichnis.
+ \item [\texttt{.}] Das aktuelle Verzeichnis.
+ \item [\texttt{..}] Das Elternverzeichnis (eine Ebene h�her).
+ \item [\texttt{{[}title{]}}] Alle Ausdr�cke in eckigen Klammern werden durch den Inhalt des entsprechenden Felds ersetzt.
+ \item [\texttt{{[}extension{]}}] Wird durch die Dateiendung des Feldes, das Sie benutzen, ersetzt.
+ \item Anderer Text wird als regul�rer Ausdruck interpretiert. Aber Vorsicht: \emph{backslashes} m�ssen mit einem weiteren \emph{backslash} \emph{escaped} werden (\texttt{\textbackslash\textbackslash}), damit sie nicht mit Separatoren in Pfad-Angaben verwechselt werden.
+\end{labeling}
+Der Standard ist \lstinline{**/.*[bibtexkey].*\\.[extension]}. Damit wird in allen Unterverzeichnissen des Ordners der entsprechenden Dateiendung (z.\,B. das PDF-Verzeichnis) nach allen Dateien mit der richtigen Dateiendung gesucht, die den bibtexkey in ihrem Namen haben.
+
+\subsection{Links zu externen Dateien (ab Version 2.3)}
+\label{FileLinks}
+
+\jabref l�sst Sie Ihre Eintr�ge mit Dateien jeden Typs verlinken, die Sie auf Ihrem System gespeichert haben. Au�erdem sind Links zu Dokumenten im Internet in der Form eines URL oder eines DOI m�glich. Jedem Eintrag kann eine beliebige Anzahl von Datei-Links zugeordnet werden und jede verlinkte Datei kann schnell aus JabRef heraus ge�ffnet werden.
+
+Was \bibtex angeht, werden die Datei"=Links eines Eintrags in ein einzelnes Feld geschrieben. In \jabref erscheinen sie aber als editierbare Liste von Links, die im Eintrags"=Editor zug�nglich sind.
+
+\subsubsection{Einrichten der Dateitypen}
+
+F�r jeden Datei"=Link muss ein Dateityp gew�hlt werden, damit das richtige Programm zum �ffnen der Datei und das entsprechende Icon gefunden werden. Die Liste der Dateitypen k�nnen Sie einsehen und bearbeiten, indem Sie \menu{Optionen \msep Externe Dateitypen verwalten} w�hlen oder auf die Schaltfl�che \menu{Externe Dateitypen verwalten} im Bereich \menu{Externe Programme} des Einstellungs"=Dialogs klicken.
+
+Ein Dateityp besteht aus einem Namen, einem graphischen Icon, einer Dateierweiterung und einer Anwendung zum �ffnen der Dateien. Wenn Sie Windows benutzen, k�nnen Sie den Namen der Anwendung weglassen, wenn Sie das Standardprogramm verwenden wollen.
+
+\subsubsection{\texorpdfstring{Datei"=Links}{Datei-Links} zu einem Eintrag hinzuf�gen}
+
+Wenn bei den Allgemeinen Feldern (siehe Abschnitt~\ref{GeneralFields}) das Feld \texttt{file} eingetragen ist, k�nnen Sie die Liste der externen Links im \nameref{EntryEditorHelp} bearbeiten. Der Editor hat dann Schaltfl�chen zum Einf�gen, Bearbeiten, L�schen und Sortieren der Links.
+
+Eine Datei kann mit Hilfe der \menu{Auto}"=Schaltfl�che automatisch verlinkt werden, falls sie in Ihrem Dateiverzeichnis (\menu{Einstellungen \msep Externe Programme \msep Links zu externen Dateien \msep Hauptverzeichnis}) oder einem Unterordner liegt, eine Dateierweiterung hat, die \jabref bekannt ist, und einen Namen hat, der mit dem BibTeX"=Key des Eintrags �bereinstimmt. Die Regeln, nach denen Dateinamen mit BibTeX"=Keys automatisch verkn�pft werden, k�nnen eingestellt werden unter \ [...]
+
+Um eine Datei herunterzuladen und mit einem Eintrag zu verlinken, benutzen Sie die Schaltfl�che \menu{Download} im Eintrags"=Editor. Es erscheint ein Dialog, in dem Sie den URL eingeben m�ssen. Die Datei wird dann in Ihr Hauptverzeichnis gespeichert, anhand des BibTeX-Keys benannt und mit dem Eintrag verkn�pft.
+
+\subsubsection{Externe Dateien �ffnen}
+
+Es gibt mehrere M�glichkeiten, externe Dateien oder Internetseiten zu �ffnen. In der Tabellenansicht k�nnen Sie einen Eintrag ausw�hlen und mit dem Men�, einem Tastenk�rzel oder dem Kontextmen� den ersten externen Link �ffnen. Falls in der Tabellenansicht die Spalte \texttt{file} angezeigt wird (\menu{Einstellungen \msep Tabellenansicht \msep Spezielle Spalten \msep Datei"=Spalten anzeigen}), k�nnen Sie auch auf das Icon klicken, um den ersten Link eines Eintrags zu �ffnen. Um weitere Li [...]
+
+\subsection{XMP-Metadaten}
+\label{XMPHelp}
+
+XMP ist ein Standard, der von Adobe Systems entwickelt wurde, um Metadaten (Daten, die Informationen �ber andere Daten enthalten) in Dateien zu speichern. Ein bekanntes Beispiel f�r Metadaten sind ID3-Tags, die zur Beschreibung von K�nstlern, Albumtiteln und Liednamen einer MP3-Datei verwendet werden. Mit Hilfe von Metadaten k�nnen MP3-Dateien unabh�ngig von ihrem Dateinamen identifiziert und z.B. von MP3-Playern ausgelesen und angezeigt werden.
+
+Mit der XMP-Unterst�tzung versucht das \jabref-Team, die Vorteile von Metadaten in die Welt der Literaturmanager einzuf�hren. Sie k�nnen \menu{XMP schreiben} im \menu{Allgemein}-Tab des Eintragseditors w�hlen und damit alle \bibtex{}"=Informationen in die verlinkte PDF-Datei schreiben. Wenn Sie diese PDF-Datei mit anderen austauschen, k�nnen diese die Datei in das \jabref-Fenster ziehen und haben damit alle Informationen zur Verf�gung, die Sie eingegeben haben.
+
+\subsubsection{Benutzung}
+
+Um die XMP-Funktionen in \jabref zu nutzen, gehen Sie folgenderma�en vor:
+
+\begin{itemize}
+ \item Zum \emph{Importieren einer einzelnen PDF-Datei mit Metadaten} w�hlen Sie \menu{Datei \msep{} Importieren in {[}neue{|}aktuelle{]} Datenbank} und im anschlie�enden Dialog als Dateiformat \menu{PDF mit XMP-Anmerkungen} aus. Sie k�nnen die PDF-Datei stattdessen auch mit der Maus auf das Hauptfenster von \jabref ziehen.
+ \item Um \emph{bibliographische Informationen in eine verlinkte PDF-Datei zu schreiben}, klicken Sie auf \menu{XMP schreiben} im \menu{Allgemein}-Tab des Eintragseditors (neben dem \emph{pdf}"=Feld).
+ \item Wenn Sie \emph{alle PDFs einer Datei mit Metadaten versehen} wollen, w�hlen Sie \menu{Extras \msep{} XMP-Metadaten in PDFs schreiben}.
+ \item Um zu �berpr�fen, ob das Schreiben der Metadaten funktioniert hat, �ffnen Sie die Datei in Adobe Acrobat und w�hlen \menu{Datei \msep{} Dokumenteigenschaften} und dann unter dem Reiter \menu{Beschreibung} die Schaltfl�che \menu{Zus�tzliche Metadaten}. Wenn Sie links ">Erweitert"< ausw�hlen, sollten Sie im rechten Teil des Dialogs einen Eintrag \texttt{http://jabref.sourceforge.net\slash bibteXMP} sehen, der die entsprechenden Metadaten enth�lt. Dies geht nur mit dem Vollprogramm [...]
+ \item Wer kein Adobe Acrobat zur Verf�gung hat, kann stattdessen das Programm ">pdfinfo"<\footnote{Dieses Programm ist Teil von \href{http://www.foolabs.com/xpdf/}{Xpdf} und \href{http://poppler.freedesktop.org/}{Poppler}.} verwenden, um die XMP-Metadaten zu �berpr�fen. Rufen Sie dazu auf der Kommandozeile einfach \lstinline{pdfinfo -meta <PDF-Datei>} auf, dann werden die entsprechenden Metadaten angezeigt.
+\end{itemize}
+
+\subsubsection{bibteXMP Dateiformat}
+
+XMP nutzt zum Speichern der Daten eine Teilmenge des \emph{Resource Description Framework} (RDF). F�r \jabref wird ein neues Metadatenformat benutzt, das \bibtex{} sehr gut abbildet. Alle Felder und Werte werden in Knoten eines XML-Dokuments verwandelt. Nur Autoren und Herausgeber werden als \texttt{rdf:Seq}-Strukturen gespeichert, so dass die trennenden ">and"< weggelassen werden k�nnen. Alle Strings und crossrefs werden in den Metadaten aufgel�st.
+
+Das folgende einfache Minimal-Schema wird benutzt:
+\begin{itemize}
+ \item Der \bibtex{}-Key wird als \texttt{bibtexkey} gespeichert.
+ \item Der Eintragstyp wird als \texttt{entrytype} gespeichert.
+ \item \texttt{author} und \texttt{editor} sind kodiert als \texttt{rdf:Seq}, wobei die einzelnen Autoren und Herausgeber als \texttt{rdf:li}s dargestellt werden.
+ \item Alle anderen Felder werden unter ihrem Feld-Namen gespeichert.
+\end{itemize}
+
+Es folgt ein Beispiel:
+\begin{lstlisting}
+ at INPROCEEDINGS{CroAnnHow05,
+ author = {Crowston, K. and Annabi, H. and Howison, J. and Masango, C.},
+ title = {Effective work practices for floss development: A model and propositions},
+ booktitle = {Hawaii International Conference On System Sciences (HICSS)},
+ year = {2005},
+ owner = {oezbek},
+ timestamp = {2006.05.29},
+ url = {http://james.howison.name/publications.html}
+}
+\end{lstlisting}
+
+wird umgewandelt in
+
+\begin{lstlisting}
+<rdf:Description xmlns:bibtex="http://jabref.sourceforge.net/bibteXMP/"
+ bibtex:bibtexkey="CroAnnHow05"
+ bibtex:year="2005"
+ bibtex:title="Effective work practices for floss development: A model and propositions"
+ bibtex:owner="oezbek"
+ bibtex:url="http://james.howison.name/publications.html"
+ bibtex:booktitle="Hawaii International Conference On System Sciences (HICSS)"
+ bibtex:timestamp="2006.05.29">
+ <bibtex:author>
+ <rdf:Seq>
+ <rdf:li>K. Crowston</rdf:li>
+ <rdf:li>H. Annabi</rdf:li>
+ <rdf:li>J. Howison</rdf:li>
+ <rdf:li>C. Masango</rdf:li>
+ </rdf:Seq>
+ </bibtex:author>
+ <bibtex:entrytype>Inproceedings</bibtex:entrytype>
+</rdf:Description>
+\end{lstlisting}
+
+Wenn Sie bibteXMP parsen m�chten, beachten Sie, dass in RDF Attribut-Wert-Paare auch als Knoten wiedergegeben werden k�nnen und vice versa.
+
+\subsubsection{Weiterf�hrende Links}
+
+Einige Links zu XMP und PDFs mit Anmerkungen (englisch):
+
+\begin{itemize}
+ \item James Howison's Blog \href{http://freelancepropaganda.com/themp/}{">Themp---Managing Academic Papers like MP3s"<}
+ \item \href{http://www.xml.com/pub/a/2004/09/22/xmp.html}{XML.com-Artikel} zu XMP
+ \item \href{http://jempbox.org}{JempBox} und \href{http://pdfbox.org}{PDFBox} von Ben Litchfield (Java libraries zum Zugriff auf die PDFs und die Metadaten)
+ \item Gute \href{http://episteme.arstechnica.com/eve/ubb.x/a/tpc/f/8300945231/m/377001889631}{Diskussion bei ArsTechnica} zum Management von PDFs.
+ \item \href{http://partners.adobe.com/public/developer/en/xmp/sdk/xmpspecification.pdf}{Adobe XMP Spezifikation}
+\end{itemize}
+
+\subsection{\jabref und Online-Datenbanken}
+
+\subsubsection{CiteSeer}
+
+\label{CiteSeerHelp}
+\tip[]{CiteSeer ist eine digitale Bibliothek und Suchmaschine f�r wissenschaftliche Literatur, vornehmlich zu den Bereichen Computer und Informatik.}
+Mit \jabref lassen sich Informationen zu einer bestimmten
+Literaturangabe aus der CiteSeer-Datenbank herunterladen. Um diesen
+Vorgang zu starten, f�gen Sie Ihrer Datei einen neuen Eintrag hinzu
+und belegen das Feld \emph{citeseerurl} mit einem Link zur entsprechenden
+Inhaltsseite auf CiteSeer. Das Feld \emph{citeseerurl} muss in einem
+der folgenden Formate eingegeben werden:
+
+\begin{lstlisting}
+http://citeseer.ist.psu.edu/DDDDDD[.html] % oder
+oai:CiteSeerPSU:DDDDDD % oder
+DDDDDD
+\end{lstlisting}
+wobei DDDDDD eine Ziffernfolge darstellt. Um diese Ziffernfolge f�r
+einen CiteSeer-Eintrag zu finden, gehen Sie auf die Dokumentseite
+der Literaturangabe des Formats \texttt{http://citeseer.ist.psu.edu/}\texttt{\emph{nameYearTitle}}\texttt{.html}
+und klicken den (Update)"=Link f�r diese Literaturangabe. Die URL
+f�r den Update-Link beinhaltet die numerische ID f�r diese Literaturangabe.
+
+Sobald Sie das Feld \emph{citeseerurl} belegt haben, k�nnen Sie die
+CiteSeer-Felder herunterladen, indem Sie \menu{BibTeX} \msep{} \menu{Felder von CiteSeer importieren}
+ausw�hlen. Achten Sie darauf, dass Sie die Zeile(n) ausgew�hlt haben,
+die Sie aktualisieren wollen.
+
+\paragraph{Eine Datei mit zitierenden Literaturangaben erzeugen}
+
+Mit einem Satz von Literaturangaben k�nnen Sie eine Liste der Dokumente
+erzeugen, die die einzelnen Literaturangaben ihrerseits zitieren. Dazu
+muss jede Literaturangabe der entsprechenden Datenbank-Datei ein
+ausgef�lltes citeseerurl-Feld besitzen, dessen Inhalt dem oben
+beschriebenen Format entspricht. Sie k�nnen diese Funktion nutzen, indem
+Sie \menu{Zitierende Literatur von CiteSeer abrufen} ausw�hlen.
+
+\subsubsection{Medline}
+\label{MedlineHelp}
+
+\tip[]{MEDLINE ist die wichtigste Datenbank der \emph{U.\,S. National Library of Medicine}. Sie enth�lt Literaturangaben von Zeitschriftenartikeln der Lebenswissenschaften, vornehmlich der Biomedizin.
+\jabref kann Literaturangaben der Medline"=Datenbank
+herunterladen. Um diese Funktion zu nutzen, w�hlen Sie \menu{Extras
+\msep{} Medline abrufen}, so dass der Medline-Dialog im linken
+Seitenfeld erscheint.}
+Es gibt zwei M�glichkeiten, die Auswahl der Eintr�ge vorzunehmen,
+die heruntergeladen werden sollen:
+
+\begin{enumerate}
+\item Geben Sie eine oder mehr Medline IDs (getrennt durch Komma/Semikolon)
+in das Textfeld ein.
+\item Geben Sie Namen oder W�rter ein, nach denen gesucht werden soll. Sie
+k�nnen dazu die Operatoren \texttt{AND} und \texttt{OR} sowie Klammern
+benutzen, um Ihren Suchbegriff zu verfeinern.
+\end{enumerate}
+In beiden F�llen dr�cken Sie dann ENTER oder die Schaltfl�che \menu{Abrufen}.
+Wenn Sie eine Textsuche durchf�hren, wird Ihnen die Anzahl der gefundenen
+Eintr�ge angezeigt, und Sie k�nnen w�hlen, wie viele Sie herunterladen
+m�chten.
+
+Die abgerufenen Eintr�ge werden Ihrer zu diesem Zeitpunkt aktivierten
+Datei zugeordnet.
+
+\subsubsection{IEEEXplore}
+\label{IEEEXploreHelp}
+
+\tip[]{IEEEXplore bietet Zugang zu Literatur in den Bereichen Elektrotechnik, Informatik und Elektronik.}
+\jabref kann Literaturangaben der IEEEXplore-Datenbank herunterladen.
+Um diese Funktion zu nutzen, w�hlen Sie \menu{Internet \msep{} IEEEXplore abfragen}
+und geben in dem Dialog, der im linken Bildschirmbereich erscheint, Ihre
+Suchausdr�cke ein. Dr�cken Sie anschlie�end die
+ENTER-Taste oder den \menu{Abrufen}-Button.
+
+Die Suche wird im G�ste-Modus durchgef�hrt, es werden also maximal 100 Ergebnisse
+angezeigt.
+
+Sie k�nnen die \emph{abstracts} zusammen mit den Literaturangaben herunterladen,
+indem Sie einen Haken bei \menu{Abstracts ber�cksichtigen} setzen. Das verursacht
+eine deutlich h�here Anzahl von Netzwerk-Anfragen; um die Webseite von IEEEXplore
+nicht �berm��ig zu belasten, l�dt \jabref \emph{abstracts} nur bei einer Suche,
+deren Ergebnis eine bestimmte Trefferanzahl nicht �bersteigt.
+
+\subsubsection{Benutzung eines Proxy-Servers}
+
+Wenn Sie einen HTTP-Proxy-Server benutzen m�ssen, �bergeben Sie den
+Servernamen und die Portnummer an Java. Diese Umgebungseinstellungen
+sind dokumentiert unter
+\href{http://java.sun.com/j2se/1.4.2/docs/guide/net/properties.html}{http://java.sun.com/j2se/1.4.2/docs/guide/net/proper\allowbreak ties.html}
+
+\begin{lstlisting}
+java -Dhttp.proxyHost="hostname" -Dhttp.proxyPort="portnumber"
+\end{lstlisting}
+
+\subsection{\jabref mit mehreren Benutzern verwenden}
+
+\jabref bietet einige Funktionen, die besonders dann von Nutzen
+sind, wenn eine Datenbank von mehreren Benutzern~-- z.\,B. �ber
+ein Netzwerk~-- bearbeitet wird. Das sind vor allem die Felder \emph{owner}
+und \emph{timestamp}.
+
+
+\subsubsection{Zeitstempel \emph{(timestamp)}}
+\label{TimeStampHelp}
+
+\begin{quote}
+\emph{Die Benutzung des Zeitstempels kann unter
+\menu{Einstellungen}} \msep{} \emph{\menu{Allgemein} an- und
+abgestellt sowie ver�ndert werden.}
+\end{quote}
+\jabref kann automatisch das Feld \emph{timestamp} setzen, das
+das Datum enth�lt, an dem der Eintrag zur Datei hinzugef�gt wurde.
+Die Formatierung des Zeitstempels wird von einem Ausdruck mit Bezeichnern
+bestimmt, die die Position verschiedener Bestandteile des Datums angeben.
+Es folgen einige der verf�gbaren Bezeichner (die Beispiele in Klammern
+beziehen sich auf Mittwoch, den 14. September 2005, 17:45 Uhr):
+
+\begin{labeling}{00.00.0000}
+\item [\texttt{yy}]Jahr (05)
+\item [\texttt{yyyy}]Jahr (2005)
+\item [\texttt{MM}]Monat (09)
+\item [\texttt{dd}]Tag (14)
+\item [\texttt{HH}]Stunde (17)
+\item [\texttt{mm}]Minute (45)
+\end{labeling}
+Diese Bezeichner k�nnen mit Interpunktion und Leerzeichen kombiniert
+werden. Hier einige Beispiele:
+
+\begin{labeling}{dd.MM.yyyy-HH:m}
+\item [\texttt{yyyy.MM.dd}]$\to$ 2005.09.14
+\item [\texttt{yy-MM-dd}]$\to$ 05-09-14
+\item [\texttt{dd.MM.yyyy~HH:mm}]$\to$ 14.09.2005 17:45
+\end{labeling}
+
+\subsubsection{Besitzer \emph{(owner)}}
+
+\label{OwnerHelp}\jabref kann allen neuen Eintr�gen, die zu einer
+Datei hinzugef�gt oder in sie importiert werden, Ihren Benutzernamen
+beigeben. Diese Funktion k�nnen Sie im Men� \menu{Einstellungen}
+\msep{} \menu{Allgemein} ein- und ausschalten. Dort k�nnen Sie auch
+den Namen angeben, der in den Eintr�gen erscheinen soll.
+
+In der Standardeinstellung wird Ihr (System-)Benutzername verwendet.
+Der Name wird in dem Feld \emph{owner} eingetragen, das in der Standardeinstellung
+im Tab \emph{General fields} des Eintragseditors angezeigt wird.
+
+
+\subsection{\jabref von der Kommandozeile}
+
+\label{CommandLine}Obwohl \jabref in erster Linie ein Programm
+mit grafischer Benutzeroberfl�che ist, bietet es einige n�tzliche
+Optionen f�r die Kommandozeile und kann sogar Dateikonvertierungen
+durchf�hren, ohne die grafische Benutzeroberfl�che zu �ffnen.
+
+Sie k�nnen eine oder mehrere \bibtex{}-Dateien laden, indem Sie auf
+der Kommandozeile die entsprechenden Dateinamen auflisten. Achten
+Sie darauf, alle gew�nschten Optionen anzugeben, bevor Sie die Dateinamen
+anf�gen. Au�erdem m�ssen Sie sich vergewissern, dass der erste Dateiname
+nicht als Argument einer Option missverstanden werden kann~-- falls
+eine Bool'sche Option wie \texttt{-n} oder \texttt{-l} direkt vor
+einem Dateinamen steht, m�ssen Sie also \texttt{true} als Argument
+angeben. Das Beispielkommando:
+
+\begin{lstlisting}
+jabref -o filetoexport.xml,docbook -n true original.bib
+\end{lstlisting}
+l�dt die Datei \texttt{original.bib}, exportiert sie in das Docbook-Format,
+speichert sie unter dem Namen \texttt{filetoexport.xml} und unterdr�ckt
+das Laden der grafischen Oberfl�che. Das Word \emph{true} verhindert,
+dass der Dateiname als Argument der Option \texttt{-n} interpretiert
+wird.
+
+
+\subsubsection{Kommandozeilen-Optionen}
+\label{kommandozeilenoptionen}
+Im folgenden werden die wichtigsten Optionen und Befehle f�r die Kommandozeile
+vorgestellt.
+
+\begin{itemize}
+\item Hilfe: \texttt{-h}
+
+Diese Option veranlasst \jabref, eine Zusammenfassung der Kommandozeilen"=Optionen
+anzuzeigen und das Programm unmittelbar darauf zu schlie�en.
+
+\item Kein GUI-Modus: \texttt{-n}
+
+Diese Option unterdr�ckt sowohl das \jabref-Fenster als auch den
+Er�ffnungsbildschirm, der normalerweise beim Programmstart angezeigt
+wird. Das Programm wird beendet, sobald die Kommandozeilen-Optionen
+abgearbeitet wurden.
+Diese Option ist n�tzlich, um Dateikonvertierungen von der Kommandozeile
+oder mit Hilfe eines Scripts durchzuf�hren.
+
+\item Sitzung laden: \texttt{-l}
+
+Diese Option veranlasst \jabref, eine gespeicherte Sitzung zu laden,
+sofern eine vorhanden ist, bevor sich das Hauptfenster �ffnet.
+
+\item Datei importieren: \texttt{-i Dateiname{[},Importformat{]}}
+
+Bei dieser Option importiert oder l�dt \jabref eine bestimmte Datei.
+Wenn nur ein Dateiname angegeben wird oder ein Komma und ein {*}-Zeichen
+hinter dem Dateinamen stehen, versucht \jabref, das Dateiformat
+automatisch zu erkennen. Das sollte bei allen \bibtex{}-Dateien ebenso
+funktionieren wie bei Dateien, die in einem der von \jabref unterst�tzten
+Importformate vorliegen. Wenn dem Dateinamen ein Komma und ein Importformat
+folgen, wird der angegebene Importfilter benutzt. Mit der Option \texttt{-h}
+k�nnen Sie sich eine Liste der verf�gbaren Importformate anzeigen
+lassen.
+
+Wenn Sie zus�tzlich eine Export-Option angeben, wird der Import immer
+zuerst ausgef�hrt, bevor die importierte oder geladene Datei an den
+Exportfilter �bergeben wird. Falls die grafische Oberfl�che nicht
+mit der Option \texttt{-n} unterdr�ckt wird, werden alle geladenen
+oder importierten Dateien im Hauptfenster von \jabref angezeigt.
+
+Die Option \texttt{-i} kann nur einmal angegeben werden und nimmt
+als Argument maximal eine Datei.
+
+\item Datei exportieren: \texttt{-o Dateiname{[},Exportformat{]}}
+
+Diese Option veranlasst \jabref, eine Datei zu speichern oder zu
+exportieren, die von derselben Kommandozeile geladen oder importiert
+wurde. Wenn eine Datei mit der Option \texttt{-i} importiert wurde,
+wird diese Datei exportiert. Ansonsten wird die Datei exportiert,
+die \emph{zuletzt}~-- ohne die Option \texttt{-i}~-- angegeben (und
+erfolgreich geladen) wurde.
+
+Wird nur ein Dateiname angegeben, so wird diese Datei im \bibtex{}-Format
+gespeichert. Wenn dem Dateinamen ein Komma und ein Exportformat folgen,
+wird der angegebene Exportfilter benutzt. Auf diese Weise wird auch
+ein benutzerdefinierter Exportfilter angewendet; wenn der Name sowohl
+auf einen Standard-Exportfilter, als auch auf einen benutzerdefinierten
+Exportfilter zutrifft, wird der benutzerdefinierte verwendet.
+
+Mit der Option \texttt{-h} k�nnen Sie sich eine Liste der verf�gbaren
+Exportformate anzeigen lassen.
+
+Falls die Option \texttt{-n} nicht aufgerufen wurde, wird jeder Exportvorgang
+durchgef�hrt, bevor das \jabref-Fenster ge�ffnet wird. Dort werden
+dann die importierten Dateien angezeigt.
+
+Die Option \texttt{-o} kann nur einmal angegeben werden und nimmt
+als Argument maximal eine Datei.
+
+\item Einstellungen exportieren: \texttt{-x Dateiname}
+
+Mit dieser Option k�nnen Sie \jabref veranlassen, alle Benutzer"=Einstellungen
+in eine XML-Datei zu speichern. Nach dem Export startet \jabref
+normal.
+
+\item Einstellungen importieren: \texttt{-p Dateiname}
+
+Mit dieser Option importiert \jabref Benutzer-Einstellungen, die
+mit der Option \texttt{-x} exportiert wurden. Nach dem Import startet
+\jabref normal.
+
+\item Nur benutzte Eintr�ge exportieren:\\ \texttt{-a Dateiname{[}.aux{]},neueBibDatei{[}.bib{]}}
+
+Manchmal ist es n�tzlich, eine \bibtex{}-Datei zu haben, die nur die
+benutzten Eintr�ge enth�lt. Eine Liste dieser benutzten Eintr�ge findet
+sich in einer .aux-Datei (sobald Sie \LaTeX{} aufgerufen haben). \jabref
+kann diese Datei analysieren, um eine neue \bibtex{}-Datei zu erstellen,
+die nur die bekannten und benutzten Eintr�ge enth�lt. Das bedeutet,
+dass ein Eintrag, der in der Standard-\bibtex{}-Datei nicht definiert
+ist, auch nicht in die neue Datei geschrieben werden kann.
+
+\item Aus dem Internet abrufen:\\ \lstinline{--fetch==Name des Fetchers:Suchausdruck}
+
+Die \emph{Fetcher}, also die direkte Suche in Online-Datenbanken,
+die Sie im Men� \menu{Internet} finden, k�nnen auch von der Kommandozeile
+aus gestartet werden. Nutzen Sie dazu die Option \lstinline{--fetch} und geben
+sowohl den Namen des Fetchers (z.B. ">ieee"<, ">medline"< oder ">jstor"<)
+als auch den Suchausdruck oder die ID des gesuchten Mediums an. Beachten
+Sie, dass einige Fetcher eine graphische Oberfl�che (GUI) anzeigen,
+falls Sie eine R�ckmeldung von Ihnen brauchen. Um eine �bersicht der
+verf�gbaren Fetcher zu erhalten, geben Sie \texttt{-{-}fetch} ohne
+Parameter ein.
+
+\end{itemize}
+
+\subsubsection{Externer Zugriff}
+\label{RemoteHelp}
+\begin{quote}
+\emph{Diese Funktion kann unter \menu{Optionen \msep{} Einstellungen \msep{} Erweitert} verwaltet werden.}
+\end{quote}
+
+\tip[]{Beachten Sie, dass das Aktivieren dieser Funktion mit Windows XP SP2 (und m�glicherweise auch mit anderen Konfigurationen) zu einer Meldung f�hren kann, die besagt, dass bestimmte Funktionen des Programms von der Windows-Firewall geblockt wurden. Sie k�nnen die Firewall anweisen, weiterhin zu blocken, denn die Firewall beeintr�chtigt den Externen Zugriff von \jabref nicht.}
+Falls das Abh�ren von externen Zugriffen aktiviert ist, versucht \jabref beim Programmstart, den entsprechenden Port abzuh�ren. Das bedeutet, dass andere Anwendungen Informationen durch diesen Port an \jabref senden k�nnen. \jabref akzeptiert dabei nur lokale Verbindungen, um das Risiko eines Eingriffs von au�erhalb auszuschlie�en.
+
+Mit dem externen Zugriff kann eine zweite Instanz von \jabref erkennen, dass eine erste Instanz bereits l�uft. In diesem Fall leitet die zweite Instanz ihre Kommandozeilen"=Optionen an die erste Instanz weiter und beendet sich selbst direkt im Anschluss~-- sofern die zweite Instanz nicht ausdr�cklich instruiert wurde, im Stand-Alone-Modus (als selbst�ndige Instanz) zu starten.
+
+Die erste \jabref-Instanz liest die Kommandozeilenoptionen und f�hrt die erforderlichen Aktionen aus, z.\,B. das Lesen oder Importieren einer Datei oder das Anh�ngen einer Datei an die aktive Datenbank. Falls eine Datei mit der Option \texttt{-{-}importToOpen} importiert wird, werden die Eintr�ge an die aktive Datei angeh�ngt. Falls keine Datei ge�ffnet ist, wird eine neue Datei angelegt.
+
+\clearpage
+\section{Anpassung}
+\secttoc
+
+\subsection{Eintragstypen}
+
+\label{CustomEntriesHelp}
+
+\begin{quote}
+\emph{Um Eintragstypen anzupassen, w�hlen Sie den Men�punkt \menu{Optionen}}
+\msep{} \emph{\menu{Eintragstypen anpassen}.}
+\end{quote}
+Wenn Sie einen Eintragstyp anpassen, definieren Sie sowohl sein Erscheinungsbild
+im Eintragseditor als auch die Bedingungen, nach denen \jabref
+einen Eintrag als vollst�ndig akzeptiert. Sie k�nnen die bestehenden
+Eintragstypen ver�ndern und neue hinzuf�gen.
+
+Beachten Sie, dass in diesem Dialog keine �nderungen gespeichert werden,
+solange Sie nicht auf \menu{�bernehmen} oder \menu{OK} klicken.
+Wenn Sie \menu{Abbrechen} anklicken oder einfach den Dialog schlie�en,
+gehen die bislang nicht �bernommenen �nderungen verloren.
+
+
+\subsubsection{Der Dialog \menu{Eintragstypen anpassen}}
+
+Der Dialog \menu{Eintragstypen anpassen} ist in drei Hauptbereiche
+unterteilt. Im linken Bereich k�nnen Sie den Eintragstyp ausw�hlen,
+den Sie bearbeiten wollen, und neue Eintragstypen hinzuf�gen. Im mittleren
+Bereich werden die Einstellungen f�r die ben�tigten Felder des ausgew�hlten
+Eintragstyps vorgenommen und im rechten Bereich diejenigen der optionalen
+Felder.
+
+
+\subsubsection{Eintragstypen hinzuf�gen und l�schen}
+
+Die derzeit verf�gbaren Eintragstypen werden im linken Bereich des
+Dialogfensters aufgelistet. Wenn Sie einen Eintragstyp ausw�hlen,
+werden die anderen Bereiche aktualisiert und zeigen die ben�tigten
+und optionalen Felder dieses Eintragstyps.
+
+Um einen neuen Eintragstyp hinzuzuf�gen, geben Sie einfach seinen
+Namen in das Textfeld unter der Typliste ein und klicken \menu{Hinzuf�gen}.
+Der neue Eintragstyp wird zur Liste hinzugef�gt und zur Bearbeitung
+ausgew�hlt.
+
+Um einen eigenen Eintragstyp zu entfernen, w�hlen Sie ihn aus und
+klicken auf \menu{L�schen}. Dieser Vorgang ist nur f�r eigene Eintragstypen
+verf�gbar, die nicht nur Abwandlungen der Standard-Typen sind. Die
+Standard-Eintragstypen k�nnen nicht gel�scht werden.
+
+Um einem Eintragstyp seinen Standardwert zur�ckzugeben, w�hlen Sie
+ihn aus und dr�cken auf \menu{Standard}. Dieser Vorgang ist nur f�r
+Standard-Typen verf�gbar, die bearbeitet wurden.
+
+
+\subsubsection{Eintragstypen bearbeiten}
+
+Wenn ein Eintragstyp ausgew�hlt ist, werden die derzeitigen ben�tigten
+und optionalen Felder im mittleren und rechten Bereich des Dialogfensters
+aufgelistet. Das Vorgehen beim Bearbeiten dieser Listen ist f�r die
+ben�tigten und optionalen Felder identisch.
+
+Um ein neues Feld hinzuzuf�gen, bearbeiten Sie das Textfeld unterhalb
+der Liste oder w�hlen einen Feldnamen aus dem Dropdown-Men� und klicken
+auf \menu{Hinzuf�gen}. Der gew�hlte Feldname erscheint am Ende der
+Liste.
+
+Um eines oder mehrere Felder zu l�schen, w�hlen Sie sie in der Liste
+aus und klicken auf \menu{L�schen}. Die Reihenfolge der Felder k�nnen
+Sie �ndern, indem Sie einen Feldnamen ausw�hlen und die Pfeil"=Buttons
+benutzen, um das Feld nach oben oder nach unten zu verschieben.
+
+Es gibt eine Beschr�nkung beim Anpassen der Eintragstypen; bestimmte
+Typen haben eine ">und/oder"<"=Bedingung in ihren ben�tigten Feldern. Ein
+\emph{book}-Eintrag ist beispielsweise komplett, wenn entweder das
+Feld \emph{author} oder \emph{editor} oder beide gesetzt sind. Diese
+Art von Bedingung kann in einem angepassten Eintragstyp nicht realisiert
+werden.
+
+
+\subsection{Allgemeine Felder festlegen}
+
+\label{GeneralFields}Sie k�nnen dem Eintragseditor eine beliebige
+Anzahl von Tabs hinzuf�gen, die bei allen Eintragstypen sichtbar sind.
+W�hlen Sie dazu den Men�eintrag \menu{Optionen} \msep{} \menu{Allgemeine Felder festlegen}.
+
+Jede Zeile repr�sentiert einen Tab. Der Anfang der Zeile steht f�r
+den Namen des Tabs, gefolgt von einem Doppelpunkt. Anschlie�end listen
+Sie die einzelnen Felder auf, die der Tab enthalten soll, und trennen
+sie jeweils durch ein Semikolon.
+
+Das Beispiel
+
+\begin{lstlisting}
+Allgemeine Felder:url;keywords;doi;pdf
+Zusammenfassung:abstract;annote
+\end{lstlisting}
+ergibt somit einen Tab mit dem Namen >>Allgemeine Felder<<, der
+die Felder \emph{url}, \emph{keywords}, \emph{doi} und \emph{pdf}
+enth�lt, sowie einen zweiten Tab namens >>Zusammenfassung<< mit
+den Feldern \emph{abstract} und \emph{annote}.
+
+
+\subsection{Automatische Erstellung von \texorpdfstring{\bibtex{}"=Keys}{BibTeX-Keys}}
+\label{LabelPatterns}
+\begin{quote}
+\emph{Unter \menu{Optionen \msep{} Einstellungen \msep{} BibTeX"=Key"=Muster}
+kann man die Felder bestimmen, die zur automatischen Generierung der
+\bibtex{}"=Keys herangezogen werden.}
+\end{quote}
+\jabref verwendet ein Standardmuster zur Generierung von \bibtex{}"=Keys, das Keys wie z.\,B.
+\texttt{Yared1998} erzeugt. Falls der \bibtex{}-Key in der ge�ffneten
+Datei nicht eindeutig sein sollte, wird einer der Buchstaben a-z angef�gt,
+bis ein eindeutiger Key gefunden ist. Dementsprechend k�nnten die
+Labels wie folgt aussehen:
+
+\begin{lstlisting}
+Yared1998
+Yared1998a
+Yared1998b
+(*\ldots*)
+\end{lstlisting}
+Um das Aussehen der \bibtex{}-Keys zu bestimmen, benutzt \jabref
+Feldmarken. Das Key"=Muster kann f�r jeden der vorgegebenen Eintragstypen
+bestimmt werden. Es kann beliebigen Text enthalten, unabh�ngig von
+und zus�tzlich zu den Feldmarken, die angeben, dass ein bestimmtes
+Feld des Eintrags an dieser Stelle des Keys eingef�gt werden soll.
+Eine Feldmarke besteht gew�hnlich aus dem Feldnamen in eckigen Klammern,
+z.\,B. \texttt{{[}volume{]}}. Wenn dieses Feld zum Zeitpunkt der
+Erstellung des Keys leer ist, wird kein Text eingef�gt.
+
+Es gibt au�erdem mehrere spezielle Feldmarken, die nur einen bestimmten
+Teil aus einem Feld extrahieren. Sie werden unten aufgelistet. Nat�rlich
+k�nnen Sie auch neue spezielle Feldmarken vorschlagen.
+
+
+\subsubsection{Spezielle Feldmarken}
+\label{subsub:SpezielleFeldmarken}
+
+\begin{labeling}{auth.auth.eaMM}
+\item [\texttt{{[}auth{]}}]Der Nachname des ersten Autors.
+\item [\texttt{{[}authors{]}}]Die Nachnamen aller Autoren.
+\item [\texttt{{[}authorsN{]}}]Die Nachnamen von bis zu N Autoren. Falls
+es mehr Autoren gibt, wird EtAl angeh�ngt.
+\item [\texttt{{[}authIniN{]}}]Der Anfang des Nachnamens von jedem Autoren,
+wobei nicht mehr als N Buchstaben verwendet werden.
+\item [\texttt{{[}authorIni{]}}]Die ersten 5 Buchstaben des Nachnamens
+des ersten Autors und die Initialen der Nachnamen der restlichen Autoren.
+\item [\texttt{{[}authN{]}}]Die ersten N Buchstaben des Nachnamens des
+ersten Autors.
+\item [\texttt{{[}authN\_M{]}}]Die ersten N Buchstaben des Nachnamens des
+M-ten Autors.
+\item [\texttt{{[}auth.auth.ea{]}}]Die Nachnamen der beiden ersten Autoren
+und \texttt{.ea}, falls es mehr als zwei Autoren sind.
+\item [\texttt{{[}auth.etal{]}}]Der Nachname des ersten Autors und der Nachname des zweiten Autors bei zwei Autoren bzw. \texttt{.etal} bei mehr als zwei Autoren.
+\item [\texttt{{[}authshort{]}}]Der Nachname bei einem Autor; der erste
+Buchstabe der Nachnamen von bis zu drei Autoren, falls mehr als ein
+Autor vorhanden ist. Ein Plus (+) wird angeh�ngt, falls es mehr als
+drei Autoren gibt.
+\end{labeling}
+
+\tip[Anmerkung: ]{Falls es keinen Autor gibt (etwa bei einem Buch mit Herausgeber), benutzen die genannten \texttt{{[}auth\ldots{]}}"=Feldmarken den oder die Herausgeber, die im editor"=Feld angegeben wurden. Also werden die Herausgeber eines Buches ohne Autor f�r die Label"=Erstellung wie Autoren behandelt. Falls Sie dieses Verhalten nicht w�nschen und die Feldmarke stattdessen bei einem leeren author"=Feld zu nichts expandieren soll, m�ssen Sie stattdessen >>pureauth<< verwenden, z.\,B [...]
+
+\begin{labeling}{veryshorttitleMM}
+\item [\texttt{{[}edtr{]}}]Der Nachname des ersten Herausgebers.
+\item [\texttt{{[}editors{]}}]Die Nachnamen aller Herausgeber.
+\item [\texttt{{[}edtrIniN{]}}]Der Anfang des Nachnamens von jedem Herausgeber,
+wobei nicht mehr als N Buchstaben verwendet werden.
+\item [\texttt{{[}editorIni{]}}]Die ersten 5 Buchstaben des Nachnamens
+des Herausgebers und die Initialen der Nachnamen der restlichen Herausgeber.
+\item [\texttt{{[}edtrN{]}}]Die ersten N Buchstaben des Nachnamens des
+ersten Herausgebers.
+\item [\texttt{{[}edtrN\_M{]}}]Die ersten N Buchstaben des Nachnamens des
+M-ten Herausgebers.
+\item [\texttt{{[}edtr.edtr.ea{]}}]Der Nachname der ersten beiden Herausgeber
+und \texttt{.ea}, falls es mehr als zwei Herausgeber sind.
+\item [\texttt{{[}edtrshort{]}}]Der Nachname bei einem Herausgeber; der
+erste Buchstabe der Nachnamen von bis zu drei Herausgebern, falls
+mehr als ein Herausgeber vorhanden ist. Ein Plus (+) wird angeh�ngt,
+falls es mehr als drei Herausgeber gibt.
+\item [\texttt{{[}firstpage{]}}]Die erste Seitenzahl einer Ver�ffentlichung
+(pages).
+\item [\texttt{{[}keywordN{]}}]Stichwort Nummer N aus dem Feld ">keywords"<, gesetzt den Fall, dass die Stichworte durch Komma oder Semikolon voneinander getrennt sind.
+\item [\texttt{{[}lastpage{]}}]Die letzte Seitenzahl einer Ver�ffentlichung
+(pages).
+\item [\texttt{{[}shorttitle{]}}]Die ersten 3 Worte eines Titels (title).
+\item [\texttt{{[}shortyear{]}}]Die letzten 2 Ziffern des Jahrgangs (year).
+\item [\texttt{{[}veryshorttitle{]}}]Die ersten beiden Worte des Titels
+(title), wobei >>the<<, >>a<< und >>an<< ausgelassen werden.
+\end{labeling}
+Hinter einem Feldnamen (oder einem der oben aufgef�hrten Pseudo"=Feldnamen)
+kann ein Modifikator stehen. Modifikatoren werden in der Reihenfolge
+angewendet, in der sie angegeben wurden.
+
+\begin{labeling}{00.00.0000}
+\item [\texttt{:abbr}]K�rzt den Text, der von einem Feldnamen oder speziellen
+Feldmarken gebildet wird. Nur der erste Buchstabe und weitere Buchstaben,
+die auf ein Leerzeichen folgen, werden ber�cksichtigt. So w�rde beispielsweise
+\texttt{[journal:abbr]} die Zeitschrift >>Journal of Fish Biology<< zu
+>>JoFB<< wandeln.
+\item [\texttt{:lower}]Wandelt den von der Feldmarke eingef�gten Text in
+Kleinbuchstaben. So wird beispielsweise bei \texttt{{[}auth:lower{]}}
+der Nachname des ersten Autors in Kleinbuchstaben ausgegeben.
+\end{labeling}
+Das Standardmuster, das \bibtex{}-Keys wie \texttt{Yared1998}
+erzeugt, ist \texttt{{[}auth{]}{[}year{]}}. Wenn Sie keine Key-Muster
+f�r einen bestimmten Eintragstyp angeben, wird dieses vorgegebene
+Muster verwendet. Sie k�nnen das vorgegebene Muster nat�rlich ebenfalls
+anpassen%~-- seine Einstellung befindet sich �ber der Liste der Eintragstypen
+%im Tab \menu{Key-Muster} des Dialogs \menu{Einstellungen}
+.
+
+Beachten Sie, dass \jabref Umlaute und Buchstaben mit Akzenten
+sowie das � beim Erstellen von \bibtex{}-Keys ver�ndert, um m�glichen
+Problemen vorzubeugen. Hierzu einige Beispiele:
+
+\begin{lstlisting}
+D�az Iba�ez (*$\to$*) DiazIbanez
+Str�mb�ck (*$\to$*) Stroembaeck
+Wa�enhoven (*$\to$*) Wassenhoven
+\end{lstlisting}
+
+\subsubsection{Ersetzen eines regul�ren Ausdrucks}
+
+Nachdem das Key"=Muster angewendet wurde, um einen \bibtex{}"=Key zu erstellen, k�nnen Sie den Key"=Generator nach einem bestimmten regul�ren Ausdruck suchen und diesen durch eine Zeichenfolge ersetzen lassen. Der regul�re Ausdruck und die Zeichenfolge, die ihn ersetzen soll, werden in den Textfeldern unter der Liste der Key"=Muster eingegeben. Falls das Feld zur Ersetzung des regul�ren Ausdrucks leer ist, werden die mit der Suche �bereinstimmenden regul�ren Ausdr�cke einfach gel�scht.
+
+\subsection{Eintragsvorschau}
+
+\label{PreviewHelp}Die Eintragsvorschau wird mit denselben Mechanismen
+erstellt, die auch bei den Exportfiltern angewendet werden. Bei der
+Vorschau durchl�uft ein Eintrag eins von zwei m�glichen Layouts (die
+sie mit F9 wechseln k�nnen) und erstellt HTML-Code, der im Vorschaudialog
+am unteren Bildschirmrand angezeigt wird.
+
+Aussehen und Inhalt der Vorschau k�nnen mit derselben Syntax ver�ndert
+werden, die f�r die Anpassung der Exportfilter verwendet wird (siehe
+Abschnitt~\ref{CustomExports}).
+
+\subsection{Exportfilter}
+
+\label{CustomExports}Mit \jabref k�nnen Sie Ihre eigenen Exportfilter
+definieren und genau so wie die Standard"=Exportfilter benutzen. Ein
+Exportfilter wird durch eine oder mehrere \emph{Layout"=Dateien} definiert,
+die mittels eingebauter Formatierprogramme das Format der exportierten
+Dateien festlegen. Ihre Layout-Datei m�ssen Sie in einem separaten
+Text\-editor erstellen.
+
+
+\subsubsection{Hinzuf�gen eines Exportfilters}\label{subsubsec:Hinzufuegen-Exportfilter}
+
+Die einzige Voraussetzung f�r einen Exportfilter ist, dass eine Datei
+mit der Endung \texttt{.layout} vorhanden ist. Um einen neuen, eigenen
+Exportfilter hinzuzuf�gen, �ffnen Sie das Dialogfenster \menu{Optionen}
+\msep{} \menu{Verwalte externe Exportfilter} und klicken auf die
+Schaltfl�che \menu{Neu}. Es �ffnet sich ein neues Fenster, in dem
+Sie einen Namen (der als Auswahl im Dateityp"=Dropdownmen� erscheint, wenn man \menu{Datei \msep{} Exportieren} im \jabref"=Hauptfenster w�hlt), eine Pfadangabe zur \texttt{.layout}-Datei und die
+gew�nschte Dateiendung f�r den Exportfilter angeben k�nnen. Wenn Sie
+den Exportfilter benutzen, wird diese Endung im Datei"=Dialog automatisch
+vorgeschlagen.
+
+
+\subsubsection{Das Erstellen des Exportfilters}
+
+Um einen Eindruck zu bekommen, wie Exportfilter auszusehen haben,
+suchen Sie am besten auf unserer Homepage nach dem Paket, das die
+Layout"=Dateien der Standard"=Exportfilter enth�lt.
+
+Nehmen wir einmal an, dass wir einen HTML-Exportfilter erstellen wollen.
+Der Exportfilter muss lediglich aus einer einzigen \texttt{.layout}-Datei
+bestehen, die in diesem Fall \texttt{html.layout} genannt werden k�nnte.
+Sie k�nnen dar�ber hinaus auch zwei Dateien mit den Namen \texttt{html.begin.layout}
+und \texttt{html.end.layout} anlegen. Die erste dieser beiden Dateien
+enth�lt den Kopfteil der Ausgabe, die zweite den Fu�teil. \jabref
+sucht jedesmal wenn der Exportfilter benutzt wird nach diesen Dateien
+und f�gt sie~-- falls sie gefunden werden~-- w�rtlich vor bzw. nach
+den einzelnen Eintr�gen in die Ausgabe ein.
+
+\tip[]{Beachten Sie, dass sich diese Dateien in demselben Verzeichnis
+wie \texttt{html.layout} befinden und die Namensbestandteile \texttt{.begin}
+bzw. \texttt{.end} enthalten m�ssen.}
+
+\noindent In unserem Beispiel-Exportfilter k�nnten diese Dateien folgenderma�en
+aussehen:
+
+\begin{lstlisting}[title=html.begin.layout]
+<HTML>
+<BODY text="#275856">
+<basefont size="4" color="#2F4958" face="arial">
+\end{lstlisting}
+\begin{lstlisting}[title=html.end.layout]
+</BODY>
+</HTML>
+\end{lstlisting}
+Die Datei \texttt{html.layout} stellt die \emph{Standard}"=Formatvorlage
+f�r den Export eines einzelnen Eintrags bereit. Falls Sie unterschiedliche
+Formatvorlagen f�r verschiedene Eintragstypen anwenden wollen, m�ssen
+Sie typspezifische \texttt{.layout}"=Dateien erstellen. Diese
+m�ssen sich ebenfalls in demselben Verzeichnis wie die Haupt"=Layout"=Datei
+befinden und den Namensbestandteil \texttt{.entrytype} enthalten.
+Der Name des Eintragstyps muss komplett in Kleinbuchstaben geschrieben
+werden. In unserem Beispiel wollen wir eine Formatvorlage f�r Eintr�ge
+des Typs \emph{book} haben, die in der Datei \texttt{html.book.layout}
+abgelegt wird. F�r eine Dissertation w�rden wir die Datei \texttt{html.phdthesis.layout}
+anlegen~-- und so weiter. Diese Dateien sind der Standard"=Layout"=Datei
+sehr �hnlich, nur dass sie lediglich f�r Eintr�ge des entsprechenden
+Typs genutzt werden. Achten Sie darauf, dass die Standard"=Layout"=Datei
+so allgemein gehalten wird, dass sie die meisten Eintragstypen abdeckt.
+
+
+\paragraph{Das Format der Layout-Datei}
+
+Layout"=Dateien werden mit einem einfachen mark\-up"=Format erstellt,
+bei dem die Kommandos mit einem >>backslash<< (\texttt{\textbackslash{}})
+eingeleitet werden. Alle Textbestandteile, die nicht als Kommando
+identifiziert werden, gelangen direkt in die Ausgabedatei.
+
+
+\paragraph{Feldkommandos}
+
+Ein beliebiges Wort, vor dem ein backslash steht, z.\,B. \texttt{\textbackslash{}author},
+\texttt{\textbackslash{}editor,} \texttt{\textbackslash{}title} oder
+\texttt{\textbackslash{}year}, wird als Verweis auf das entsprechende
+Feld ausgewertet, das dann direkt in die Ausgabe kopiert wird.
+
+
+\paragraph{Feldformatierer}
+\label{par:Feldformatierer}
+
+Oft muss der Feldinhalt vor der Ausgabe verarbeitet werden. Dies wird
+mit Hilfe eines \emph{Feldformatierers} gemacht~-- einer java class,
+die eine Methode zur Verarbeitung des Feldinhaltes enth�lt.
+
+Ein Formatierer wird angewendet, indem man das Kommando \texttt{\textbackslash{}format}
+gefolgt vom Namen des Formatierers in eckigen Klammern und dem Feldnamen
+in geschweiften Klammern einf�gt, z.\,B.:
+
+\begin{lstlisting}
+\format[ToLowerCase]{\author}
+\end{lstlisting}
+Sie k�nnen auch mehrere Formatierer angeben, getrennt durch Kommas.
+Diese werden nacheinander aufgerufen, und zwar von links nach rechts.
+Das Kommando
+
+\begin{lstlisting}
+\format[ToLowerCase,HTMLChars]{\author}
+\end{lstlisting}
+ruft z.\,B. zun�chst den Formatierer \emph{ToLowerCase} auf, \emph{HTMLChars}
+formatiert anschlie�end das Ergebnis. Auf diese Weise k�nnen Sie eine
+beliebige Anzahl an Formatierern auflisten.
+
+\jabref bietet die folgenden Formatierer, wobei einige von anderen
+abh�ngen:
+
+\begin{labeling}{MMMM}
+\item [\texttt{HTMLChars}]ersetzt \TeX{}-spezifische Sonderzeichen wie
+ \texttt{\{\textbackslash{}\textasciicircum{}a\}} oder \texttt{\{\textbackslash{}\char`\"{}\{o\}\}}
+ durch ihre HTML"=Entsprechungen und �bersetzt die \LaTeX"=Befehle \texttt{\textbackslash emph},
+ \lstinline{\textit}, \lstinline{\textbf} in ihre HTML"=Entsprechungen.
+\item [\texttt{HTMLParagraphs}]interpretiert zwei aufeinanderfolgende Zeilenumbr�che
+ (z.\,B. \lstinline{\n\n}) als Beginn eines neuen Absatzes und erstellt dementsprechend
+ Absatz-HTML-Tags.
+\item [\texttt{XMLChars}]ersetzt \TeX{}-spezifische Sonderzeichen wie
+ \texttt{\{\textbackslash{}\textasciicircum{}a\}}
+ oder \texttt{\{\textbackslash{}\char`\"{}\{o\}\}} durch ihre XML-Entsprechungen.
+\item [\texttt{CreateDocBookAuthors}]formatiert das author-Feld im DocBook-Stil.
+\item [\texttt{CreateDocBookEditors}]\emph{Dokumentation folgt.}
+\item [\texttt{CurrentDate}]gibt das aktuelle Datum aus. Ohne Argument gibt dieser Formatierer
+ das aktuelle Datum im Format ">JJJJ.MM.TT HH:MM:SS Z"< (Datum, Zeit und Zeitzone) aus.
+ Mit einem anderen Format-String als Argument kann das Datum angepasst werden. So ergibt
+ \lstinline{\format[CurrentDate]}\texttt{\{}\lstinline{yyyy.MM.dd}\texttt{\}} nur das
+ Datum, z.\,B. ">2005.11.30"<.
+\item [\texttt{AuthorFirstFirst}]formatiert die Felder \emph{author}/\emph{editor}
+ mit den Vornamen zuerst.
+\item [\texttt{AuthorFirstFirstCommas} oder \texttt{AuthorFirstLastCommas}]formatiert die Felder
+ \emph{author}/\emph{editor} mit den Vornamen zuerst und abgetrennt durch Kommas.
+\item [\texttt{AuthorFirstLastOxfordCommas}] ist �hnlich wie \lstinline{AuthorFirstLastCommas},
+ au�er dass das ">and"< zwischen den letzten beiden Namen durch ein Komma eingeleitet
+ wird.
+\item [\texttt{AuthorFirstAbbrLastCommas}]formatiert die
+ Felder \emph{author}/\emph{editor} mit abgek�rzten Vornamen, abgetrennt durch
+ Kommas, mit einem ">and"< zwischen den letzten beiden Namen.
+\item [\texttt{AuthorFirstAbbrLastOxfordCommas}]�hnlich wie \texttt{AuthorFirstAbbrLastCommas},
+ au�er dass das ">and"< zwischen den letzten beiden Namen durch ein Komma eingeleitet wird.
+\item [\texttt{AuthorLastFirst}]formatiert die Felder \emph{author}/\emph{editor}
+ mit den Nachnamen zuerst.
+\item [\texttt{AuthorLastFirstAbbreviator}]k�rzt die Vornamen aller Autoren.
+ Dieser Formatierer kann nur angewendet werden, wenn \texttt{AuthorLastFirst}
+ bereits benutzt wurde.
+\item [\texttt{AuthorLastFirstCommas}]formatiert die Felder
+ \emph{author}/\emph{editor} mit den Nachnamen zuerst, abgetrennt durch Kommas,
+ mit einem ">and"< zwischen den letzten beiden Namen.
+\item [\texttt{AuthorLastFirstOxfordCommas}]�hnlich wie
+ \texttt{AuthorLastFirstCommas}, nur dass das ">and"<
+ zwischen den letzten beiden Namen durch ein Komma eingeleitet wird.
+\item [\texttt{AuthorLastFirstAbbrCommas}]formatiert die Felder
+ \emph{author}/\emph{editor} mit Nachnamen zuerst und abgek�rzten Vornamen,
+ abgetrennt durch Kommas, mit einem ">and"< zwischen den letzten
+ beiden Namen.
+\item [\texttt{AuthorLastFirstAbbrOxfordCommas}]�hnlich wie
+ \texttt{AuthorLastFirstAbbrCommas}, au�er dass das ">and"<
+ zwischen den letzten beiden Namen durch ein Komma eingeleitet wird.
+\item [\texttt{AuthorAndsReplacer}]ersetzt >>and<< zwischen den Namen
+ durch >>;<<, zwischen den letzten beiden Autoren steht >>\&<<.
+\item [\texttt{AuthorAndsCommaReplacer}]ersetzt >>and<< zwischen den
+ Namen durch ein Komma (,) sowie >>\&<< zwischen den beiden letzten.
+\item [\texttt{AuthorOrgSci}]Der erste Autor erscheint als "Nachname, Vorname",
+ alle anderen als "Vorname Nachname". Vornamen werden abgek�rzt.
+\item [\texttt{AuthorAbbreviator}]\emph{Dokumentation folgt.}
+\item [\texttt{AuthorNatBib}]formatiert Autorennamen im Natbib-Stil, also nur mit Nachnamen;
+ zwei Autoren werden durch ein ">and"< voneinander getrennt, bei mehr als zwei
+ Autoren wird der erste angegeben, gefolgt von ">et al."<
+\item [\texttt{NoSpaceBetweenAbbreviations}]Leerzeichen zwischen mehreren abgek�rzten
+ Vornamen werden gel�scht.
+\item [\texttt{FileLink(Dateityp)}] Wenn kein Argument angegeben
+ wird, gibt dieser Formatierer den ersten externen Dateityp aus, der
+ in dem Feld ">file"< angegeben ist. Dieser Formatierer nimmt den Namen
+ eines Dateityps als optionales
+ Argument, das in Klammern nach dem Namen des Formatierers angegeben
+ wird. So wird etwa mit \texttt{\textbackslash format[FileLink(pdf)] \{%
+ \textbackslash file\}}
+ der Dateityp \lstinline{pdf} als Argument angegeben. Wenn ein Argument
+ mitgegeben wird, w�hlt der Formatierer den ersten Dateilink des
+ entsprechenden Typs. Im Beispiel wird der Pfad zum ersten PDF"=Link
+ ausgegeben.
+\item [\texttt{FormatPagesForHTML}]ersetzt >>\texttt{-{}-}<< durch >>\texttt{-}<<.
+\item [\texttt{FormatPagesForXML}]ersetzt >>\texttt{-{}-}<< durch einen
+ XML en-dash (>>--<<).
+\item [\texttt{Replace(regexp,ersetzedurch)}]f�hrt eine Ersetzung
+ mit einem Regul�ren Ausdruck durch. Um diesen Formatierer zu
+ benutzen, muss ein zweiteiliges Argument mitgegeben werden. Die Teile
+ werden durch ein Komma getrennt. Will man ein Komma ausgeben lassen,
+ muss man es maskieren (\lstinline{\,}).
+ Der erste Teil ist der Regul�re Ausdruck, nach dem gesucht wird.
+ Er wird normal geschrieben, ohne Backslashes (\lstinline{\}) zu maskieren.\footnote{%
+ Eine Beschreibung von Regul�ren Ausdr�cken ist hier zu finden:
+ \url{http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html}.}
+ Der zweite Teil ist der Text, der f�r alle Treffer eingesetzt werden soll.
+\item [\texttt{RemoveBrackets}]entfernt alle geschweiften Klammern (>>\{<<
+ und >>\}<<).
+\item [\texttt{RemoveBracketsAddComma}]\emph{Dokumentation folgt.}
+\item [\texttt{RemoveWhitespace}]l�scht alle Leerzeichen.
+\item [\texttt{RemoveLatexCommands}]entfernt \LaTeX-Befehle wie \lstinline{\emph},
+ \lstinline{\textbf} etc. Zusammen mit \texttt{HTMLChars}
+ oder \texttt{XMLChars} sollte dieser Formatierer zuletzt aufgerufen
+ werden.
+\item [\texttt{RemoveTilde}]ersetzt das Tilde-Zeichen (\lstinline{~}), das in \LaTeX\ als festes
+ Leerzeichen dient, durch ein normales Leerzeichen. N�tzlich in Kombination mit dem
+ Namens"=Formatierer (siehe Abschnitt \nameref{NameFormatter}).
+\item [\texttt{ToLowerCase}]macht aus allen Buchstaben Kleinbuchstaben.
+\item [\texttt{ToUpperCase}]macht aus allen Buchstaben Gro�buchstaben.
+\item [\texttt{GetOpenOfficeType}]gibt die Nummer wieder,
+ die vom bibliographischen System von OpenOffice.org (Versionen
+ 1.x und 2.x) benutzt wird, um den Typ dieses Eintrags zu
+ bezeichnen.
+\item [\texttt{RTFChars}]ersetzt alle \TeX-spezifischen
+ Sonderzeichen (z.B. \texttt{\{\textbackslash\^{}a\}} oder
+ \texttt{\{\textbackslash \textquotedbl\{o\}\}}) durch ihre
+ RTF"=Entsprechung und �bersetzt \LaTeX-Befehle wie \lstinline{\emph},
+ \lstinline{\textit}, \lstinline{\textbf} in ihre RTF"=Entsprechungen.
+\end{labeling}
+Falls keiner der verf�gbaren Formatierer das Ergebnis erzielt, das
+Sie erreichen m�chten, k�nnen Sie Ihren eigenen Formatierer hinzuf�gen,
+indem Sie das \lstinline{net.sf.jabref.export.layout.LayoutFormatter}-Interface
+implementieren. Wenn Sie in das Paket \lstinline{net.sf.jabref.export.layout.format} Ihre Klasse (class) einf�gen, k�nnen Sie den Formatierer mit seinem Klassennamen aufrufen,
+so wie auch die Standard"=Formatierer. Ansonsten m�ssen Sie den Formatierer
+mit seinem vollen Namen aufrufen (inklusive Paketname). In jedem Fall
+muss der Formatierer in ihrem classpath sein, wenn Sie \jabref
+starten.
+
+\paragraph{Eigene \texorpdfstring{Namens"=Formatierer}{Namens-Formatierer} verwenden}
+\label{NameFormatter}
+
+Mit \jabref~2.2 ist es jetzt m�glich, eigene Namens"=Formatierer zu definieren. Dazu wird die Syntax der Bibliographie"=Stile (bst) verwendet. Das erlaubt �u�erste Flexibilit�t, ist allerdings aufw�ndig in der Schreibweise.
+
+Sie k�nnen unter \menu{Optionen \msep Einstellungen \msep Namens"=Formatierer} Ihren eigenen Formatierer schreiben. Benutzen Sie das folgende Format:
+\begin{lstlisting}
+ <Fall1>@<Bereich11>@<Format>@<Bereich12>@<Format>@<Bereich13>(*\ldots*)@@<br>
+ <Fall2>@<Bereich21>@(*\ldots*)
+\end{lstlisting}
+Dieses Format teilt die Aufgabe, eine Liste von Autoren zu formatieren, in unterschiedliche F�lle abh�ngig von der Zahl der Autoren (das ist n�tig, weil manche Formate sich je nach der Zahl der Autoren unterscheiden). Die einzelnen F�lle werden durch \texttt{@@} voneinander getrennt und enthalten Anweisungen, wie jeder einzelne Autor in diesem Fall zu formatieren ist. Diese Anweisungen werden durch \texttt{@} getrennt.
+
+F�lle werden durch Ganzzahlen (1, 2, 3, etc.) oder das Zeichen \texttt{*} (alle Autoren) definiert. Sie geben die nachfolgenden Anweisungen an den Formatierer weiter, falls weniger oder gleich viele Autoren vorhanden sind.
+
+Bereiche sind entweder \texttt{<Ganzzahl>..<Ganzzahl>}, \texttt{<Ganzzahl>} oder das Zeichen \texttt{*}. Die Liste der Autoren f�ngt bei 1 an. Die Ganzzahlen k�nnen einen negativen Wert haben, um vom letzten Autor der Liste zu starten, wobei -1 der Wert f�r den letzten Autor ist.
+
+Als Beispiel dient die Autorenliste ">Joe Doe and Mary Jane and Bruce Bar and Arthur Kay"<:
+\begin{itemize}
+ \item 1..3 betrifft Joe, Mary und Bruce
+ \item 4..4 betrifft Arthur
+ \item * betrifft alle
+ \item 2..-1 betrifft Mary, Bruce und Arthur
+\end{itemize}
+
+Die \texttt{<Format>}-Strings nutzen das BibTeX-Namensschema: Die vier Buchstaben v, f, l, j stehen f�r die Namensteile von, Vorname (first), Nachname (last) und Junior und werden in geschweiften Klammern gesetzt. Ein einzelner Buchstabe v, f, l, j bedeutet, dass der Name abgek�rzt werden soll. Wenn einer dieser Buchstaben oder Buchstabenpaare vorkommen, gibt \jabref alle entsprechenden Namen (eventuell abgek�rzt) aus, aber der Ausdruck in geschweiften Klammern wird nur ausgegeben, wenn [...]
+
+Beispielsweise wird beim Format ">\texttt{\{ll\} \{vv \{von Part\}\} \{ff\}}"< die Autorenliste ">Mary Kay and John von Neumann"< von \jabref als ">Kay~~Mary"< (mit zwei Leerzeichen) und ">Neumann von von Part John"< ausgegeben.
+
+Zwei weitere Beispiele sollen das Ganze verdeutlichen; die Dokumentation von \bibtex gibt weitere Hinweise.
+
+Kurzes Beispiel: ">\texttt{\{ll\}, \{f.\}}"< formatiert ">\lstinline{Joe Doe}"< als ">\lstinline{Doe, J.}"<
+
+Ausf�hrliches Beispiel: Um
+\begin{quote}
+">Joe Doe and Mary Jane and Bruce Bar and Arthur Kay"<
+\end{quote}
+als
+\begin{quote}
+">Doe, J., Jane, M., Bar, B. and Kay, A."<
+\end{quote}
+zu formatieren, nutzt man
+\begin{lstlisting}
+1@*@{ll}, {f}.@@2 at 1@{ll}, {f}. at 2@ and {ll}, {f}.@@*@1..-3@{ll}, {f}., @-2@{ll}, {f}. at -1@ and {ll}, {f}.
+\end{lstlisting}
+Falls jemand eine bessere Dokumentation hierzu verfassen m�chte: Wenden Sie sich einfach an die \jabref"=Maililnglisten!
+
+\paragraph{Bedingte Ausgabe}
+
+Manche statische Ausgabe macht nur Sinn, wenn ein bestimmtes Feld
+nicht leer ist. Wenn wir z.\,B. hinter den Namen der Editoren den
+Text \texttt{(Hrsg.)} haben wollen, brauchen wir Folgendes:
+
+\begin{lstlisting}
+\format[HTMLChars,AuthorFirstFirst]{\editor} (Hrsg.)
+\end{lstlisting}
+Wenn nun aber das \emph{editor}-Feld leer ist~-- m�glicherweise ist
+es f�r den Eintrag, der exportiert werden soll, nicht erforderlich~--,
+dann w�rde das \texttt{(Hrsg.)} dennoch erscheinen. Das kann man mit
+den Kommandos \texttt{\textbackslash{}begin} und \texttt{\textbackslash{}end}
+verhindern:
+
+\begin{lstlisting}
+\begin{editor}
+\format[HTMLChars,AuthorFirstFirst]{\editor} (Hrsg.)
+\end{editor}
+\end{lstlisting}
+Die Kommandos \texttt{\textbackslash{}begin} und \texttt{\textbackslash{}end}
+sorgen daf�r, dass der Text, den sie einschlie�en, nur dann ausgegeben
+wird, wenn das Feld, auf das in den geschweiften Klammern verwiesen
+wird, f�r den zu exportierenden Eintrag definiert und damit nicht
+leer ist.
+
+\tip{Das Benutzen der Kommandos \texttt{\textbackslash{}begin} und
+\texttt{\textbackslash{}end} ist ein Schl�ssel zum Erstellen von Layout-Dateien,
+die mit einer Vielzahl von Eintragstypen umgehen k�nnen.}
+
+
+\paragraph{Gruppierte Ausgabe}
+
+Wenn Sie Ihre Eintr�ge auf der Basis eines bestimmten Feldes gruppieren
+wollen, benutzen Sie die Kommandos f�r die gruppierte Ausgabe. Die
+gruppierte Ausgabe ist der bedingten Ausgabe sehr �hnlich, au�er dass
+der Text zwischen den Kommandos nur ausgegeben wird, wenn das Feld,
+auf das in den geschweiften Klammern verwiesen wird, unterschiedliche
+Werte enth�lt.
+
+Nehmen wir zum Beispiel an, dass wir die Ausgabe nach dem \emph{keyword}
+(Stichwort) gruppieren wollen. Bevor die Datei exportiert wird, m�ssen
+die Eintr�ge nach dem \emph{keyword} sortiert worden sein. Dann benutzen
+Sie die folgenden Kommandos, um nach \emph{keyword} zu gruppieren:
+
+\begin{lstlisting}
+\begingroup{keywords}
+New Category: \format[HTMLChars]{\keywords}
+\endgroup{keywords}
+\end{lstlisting}
+
+\subsection{Importfilter}
+
+\noindent \jabref bietet Ihnen die M�glichkeit, ganz �hnlich den Standard-Importern, eigene Importer
+zu definieren und zu benutzen. Man definiert einen Importer durch eine oder mehrere Java"=\emph{Klassen},
+die Dateiinhalte aus einem sogenannten \emph{Input stream} lesen
+und daraus \bibtex{}-Eintr�ge erzeugen. Sie k�nnen vorkompilierte Importer einbinden, die Sie vielleicht
+von SourceForge erhalten haben (siehe Abschnitt ">\nameref{subsec:Ihre-Arbeit}"<). Sie k�nnen auch
+mit Grundkenntnissen der Java"=Programmierung eigene Importer f�r Referenzquellen, die f�r Sie wichtig sind,
+erstellen oder neue, verbesserte Versionen existierender Importer einbinden, ohne \jabref neu zu
+kompilieren.
+
+\paragraph{Vorrangsregeln}
+
+Externe Importfilter haben Vorrang vor Standard-Importern. So k�nnen Sie mit Ihren Importern
+die existierenden Importer in der automatischen Formaterkennung und an der Kommandozeile in \jabref �berschreiben. Externe Importfilter selbst sind dann nach Namen sortiert.
+
+\subsubsection{Einen externen Importfilter hinzuf�gen}
+
+Stellen Sie sicher, dass Sie den Importer in kompilierter Form haben (eine oder mehrere
+\texttt{.class} Dateien) und dass die Klassendateien
+in einer Verzeichnisstruktur entsprechend ihrer Package"=Struktur liegen.
+Um einen neuen externen Importfilter hinzuzuf�gen, �ffnen Sie den Dialog
+\menu{Optionen \msep{} Verwalte externe Importfilter}, und klicken Sie auf
+\menu{Aus Klassenpfad hinzuf�gen}. Ein Dateiauswahl"=Fenster erscheint,
+mit dem Sie den Klassenpfad des Importers w�hlen, das hei�t den obersten Ordner,
+in dem die Package"=Struktur Ihres Importers beginnt. In einem zweiten Dateiauswahl"=Fenster
+w�hlen Sie die \emph{.class}"=Datei Ihres Importers, die von \texttt{\textbackslash{}ImportFormat} abgeleitet
+ist. Wenn Sie \menu{Klasse ausw�hlen} klicken, erscheint Ihr neuer Importer
+in der Liste der externen Importfilter. Alle externen Importfilter erscheinen in den
+\jabref"=Untermen�s \menu{Datei \msep{} Importieren \msep{} Externe Importfilter} und
+\menu{Datei \msep{} Importieren und Anh�ngen \msep{} Externe Importfilter}.
+
+\tip[Bitte beachten Sie: ]{Wenn Sie die Klassen in ein anderes Verzeichnis verschieben,
+m�ssen Sie den Importer entfernen und neu hinzuf�gen. Wenn Sie einen Importfilter
+mit einem bereits vorhandenen Namen registrieren, ersetzt \jabref den vorhandenen
+externen Importfilter. Auch wenn es in manchen F�llen m�glich ist, einen schon registrierten
+Importer zu aktualisieren ohne \jabref neu zu starten (n�mlich dann,
+wenn der Importer nicht im Klassenpfad von \jabref ist), empfehlen wir, grunds�tzlich
+\jabref neu zu starten, wenn Sie ein Update eines externen Importers durchgef�hrt haben.
+Sie k�nnen auch Importer aus ZIP- oder JAR-Archiven registrieren, w�hlen Sie einfach
+\emph{\menu{Aus Archiv-Datei hinzuf�gen}}, dann das ZIP- oder JAR-Archiv und dann den Eintrag
+(Klassendatei), der den neuen Importer darstellt.}
+
+\subsubsection{Einen Importfilter entwickeln}
+
+Bitte schauen Sie auf unseren Download-Seiten nach Beispielen und n�tzlichen Dateien zur
+Entwicklung Ihres Importfilters.
+
+\paragraph{Ein einfaches Beispiel}
+
+Angenommen, wir wollen Dateien der folgenden Form importieren:
+\begin{lstlisting}
+1936;John Maynard Keynes;The General Theory of Employment, Interest and Money
+2003;Boldrin & Levine;Case Against Intellectual Monopoly
+2004;ROBERT HUNT AND JAMES BESSEN;The Software Patent Experiment
+\end{lstlisting}
+
+\subparagraph{SimpleCsvImporter Erstellen}
+
+Erzeugen Sie in einem Text"=Editor eine Klasse, die von \texttt{ImportFormat} abgeleitet
+ist und die folgende Methoden implementiert:\\
+\texttt{getFormatName()},
+\texttt{isRecognizedFormat()}
+und \texttt{importEntries()}.\\
+Hier ein Beispiel:
+\begin{lstlisting}
+import java.io.*;
+import java.util.*;
+import net.sf.jabref.*;
+import net.sf.jabref.imports.ImportFormat;
+import net.sf.jabref.imports.ImportFormatReader;
+
+public class SimpleCsvImporter extends ImportFormat {
+
+ public String getFormatName() {
+ return "Simple CSV Importer";
+ }
+
+ public boolean isRecognizedFormat(InputStream stream) throws IOException {
+ return true; // this is discouraged except for demonstration purposes
+ }
+
+ public List importEntries(InputStream stream) throws IOException {
+ ArrayList bibitems = new ArrayList();
+ BufferedReader in = new BufferedReader(ImportFormatReader.getReaderDefaultEncoding(stream));
+
+ String line = in.readLine();
+ while (line != null) {
+ if (!"".equals(line.trim())) {
+ String[] fields = line.split(";");
+ BibtexEntry be = new BibtexEntry(Util.createNeutralId());
+ be.setType(BibtexEntryType.getType("techreport"));
+ be.setField("year", fields[0]);
+ be.setField("author", fields[1]);
+ be.setField("title", fields[2]);
+ bibitems.add(be);
+ line = in.readLine();
+ }
+ }
+ return bibitems;
+ }
+}
+\end{lstlisting}
+
+\subparagraph{SimpleCsvImporter �bersetzen}
+
+Beachten Sie, dass die Beispielklasse im Default"=Package liegt. Angenommen, sie liegt unter
+\\\lstinline{/meinpfad/SimpleCsvImporter.java}, die Datei \texttt{JabRef-2.0.jar} ist im gleichen Verzeichnis wie
+\lstinline{SimpleCsvImporter.java} und Java ist in Ihrem Kommandopfad.
+Kompilieren Sie die Klasse mit JSDK 1.4 zum Beispiel mit folgendem Kommandozeilen"=Aufruf:
+\begin{lstlisting}
+javac -classpath JabRef-2.0.jar SimpleCsvImporter.java
+\end{lstlisting}
+Nun sollte dort auch eine Datei \texttt{/mypath/SimpleCsvImporter.class} liegen.
+
+\subparagraph{SimpleCsvImporter registrieren}
+
+�ffnen Sie in \jabref \menu{Optionen} \msep{} \menu{Verwaltung externer Importfilter} und klicken Sie
+auf \menu{Aus Klassenpfad hinzuf�gen}. Navigieren Sie nach \texttt{/meinpfad} und
+klicken Sie \menu{Klassenpfad ausw�hlen}. W�hlen Sie anschlie�end die Datei \texttt{SimpleCsvImporter.class}
+und klicken Sie \menu{Klasse ausw�hlen}. Ihr Importfilter sollte nun in der Liste der
+externen Importfilter unter dem Namen >>Simple CSV Importer<< erscheinen und,
+sobald Sie \menu{Schlie�en} gew�hlt haben, auch in den Untermen�s \menu{Datei} \msep{} \menu{Importieren} \msep{}
+\menu{Externe Importfilter} und \menu{Datei} \msep{} \menu{Importieren und Anh�ngen} \msep{} \menu{Externe Importfilter}
+des \jabref-Hauptfensters auftauchen.
+
+\subsection{Teilen Sie Ihre Arbeit mit anderen}
+\label{subsec:Ihre-Arbeit}
+Mit externen Layout-Dateien und Importfiltern ist es einfach, Ihre eigenen Export-Formate und Importfilter
+mit anderen Anwendern gemeinsam zu benutzen. Falls Sie einen Exportfilter oder einen Importfilter
+f�r ein Format erstellt haben, das noch nicht von \jabref unterst�tzt wird,
+oder falls Sie einen bestehenden Exportfilter oder Importfilter verbessern, m�chten
+wir Sie ermutigen, Ihre Arbeit auf der \href{http://sourceforge.net/projects/jabref/}{SourceForge.net"=Seite} bereitzustellen.
+Dasselbe gilt f�r Formatierklassen, die Sie schreiben. Wir w�rden
+uns freuen, eine Sammlung von bereitgestellten Layout"=Dateien verteilen
+zu k�nnen oder die Standard"=Exportfilter, -Formatierer und -Importfilter
+zu erweitern.
+
+\clearpage
+\section{Tastenk�rzel}
+
+Die Men�s k�nnen alle �ber Tastenk�rzel angesteuert werden, die meisten
+Men�befehle ebenfalls. Das ist immer am unterstrichenen Buchstaben
+sichtbar.
+
+Es folgt ein �berblick �ber die wichtigsten Tastenk�rzel ohne Anspruch
+auf Vollst�ndigkeit~\ldots{}
+
+\begin{longtable}{p{66mm}p{33mm}}
+\textbf{Datei (Forts.)}&
+\tabularnewline
+\endhead
+\textbf{Datei}&
+\tabularnewline
+\endfirsthead
+Datei �ffnen&
+STRG-O\tabularnewline
+Datei speichern&
+STRG-S\tabularnewline
+Datei speichern unter~\ldots{}&
+STRG-SHIFT-S\tabularnewline
+Datei schlie�en&
+STRG-W\tabularnewline
+Sitzung speichern&
+F11\tabularnewline
+Sitzung laden&
+F12\tabularnewline
+\jabref beenden&
+STRG-Q\tabularnewline
+\end{longtable}
+
+\begin{longtable}{p{66mm}p{33mm}}
+\textbf{Bearbeiten (Forts.)}&
+\tabularnewline
+\endhead
+\textbf{Bearbeiten}&
+\tabularnewline
+\endfirsthead
+Neuer Eintrag&
+STRG-N\tabularnewline
+Neuer Eintrag -- Article&
+STRG-SHIFT-A\tabularnewline
+Neuer Eintrag -- Book&
+STRG-SHIFT-B\tabularnewline
+Neuer Eintrag -- Phdthesis&
+STRG-SHIFT-T\tabularnewline
+Neuer Eintrag -- Inbook&
+STRG-SHIFT-I\tabularnewline
+Neuer Eintrag -- Mastersthesis&
+STRG-SHIFT-M\tabularnewline
+Neuer Eintrag -- Proceedings&
+STRG-SHIFT-P\tabularnewline
+Neuer Eintrag -- Unpublished&
+STRG-SHIFT-U\tabularnewline
+Neuer Eintrag aus Klartext&
+STRG-SHIFT-N\tabularnewline
+Eintrag bearbeiten&
+STRG-E\tabularnewline
+\bibtex{}-Keys generieren&
+STRG-G\tabularnewline
+R�ckg�ngig&
+STRG-Y\tabularnewline
+Wiederholen&
+STRG-Z\tabularnewline
+Ausschneiden&
+STRG-X\tabularnewline
+Kopieren&
+STRG-C\tabularnewline
+Einf�gen&
+STRG-V\tabularnewline
+L�schen&
+Entf\tabularnewline
+Alles ausw�hlen&
+STRG-A\tabularnewline
+\texttt{\textbackslash{}cite\{BibTeX-Key\}} kopieren&
+STRG-K\tabularnewline
+Eintr�ge markieren&
+STRG-M\tabularnewline
+Markierung l�schen&
+STRG-SHIFT-M\tabularnewline
+Pr�ambel bearbeiten&
+STRG-P\tabularnewline
+Strings bearbeiten&
+STRG-T\tabularnewline
+\end{longtable}
+
+\begin{longtable}{p{66mm}p{33mm}}
+\textbf{Ansicht / Navigation (Forts.)}&
+\tabularnewline
+\endhead
+\textbf{Ansicht / Navigation}&
+\tabularnewline
+\endfirsthead
+Zur n�chsten ge�ffneten Datei springen&
+STRG-Bild ab\tabularnewline
+Zum vorherigen TAB springen&
+STRG-Bild auf\tabularnewline
+Gruppendialog ein-/ausblenden&
+STRG-SHIFT-G\tabularnewline
+Eintragsvorschau ein-/ausblenden&
+STRG-F9\tabularnewline
+Layout der Eintragsvorschau wechseln&
+F9\tabularnewline
+\end{longtable}
+
+\begin{longtable}{p{66mm}p{33mm}}
+\textbf{Externe Programme / Internet (Forts.)}&
+\tabularnewline
+\endhead
+\textbf{Externe Programme / Internet}&
+\tabularnewline
+\endfirsthead
+Literaturangaben in \LyX einf�gen&
+STRG-L\tabularnewline
+Literaturangaben in WinEdt einf�gen&
+STRG-SHIFT-W\tabularnewline
+URL/DOI �ffnen&
+F3\tabularnewline
+PDF/PS �ffnen&
+F4\tabularnewline
+PDF-Links synchronisieren&
+SHIFT-F4\tabularnewline
+PS-Links synchronisieren&
+STRG-F4\tabularnewline
+Medline abrufen&
+F5\tabularnewline
+CiteSeer abrufen&
+F6\tabularnewline
+Literaturangaben von CiteSeer abrufen&
+F7\tabularnewline
+\end{longtable}
+
+\begin{longtable}{p{66mm}p{33mm}}
+\textbf{Extras / Sonstiges (Forts.)}&
+\tabularnewline
+\endhead
+\textbf{Extras / Sonstiges}&
+\tabularnewline
+\endfirsthead
+Suchen&
+STRG-F\tabularnewline
+Weitersuchen&
+STRG-SHIFT-F\tabularnewline
+Suchen \& Ersetzen&
+STRG-R\tabularnewline
+Hilfe&
+F1\tabularnewline
+\end{longtable}
+
+\clearpage
+\section[Fragen und Antworten]{H�ufige Fragen und Antworten}\label{sec:faq}
+%\secttoc
+
+Die folgenden Fragen und Antworten sind der \href{http://jabref.sourceforge.net/faq.php}{\jabref-Homepage} entnommen. Falls Sie dar�ber hinaus Fragen haben, die das Handbuch nicht beantworten konnte, haben Sie folgende M�glichkeiten, zu einer Antwort zu kommen:
+\begin{enumerate}
+ \item Durchsuchen Sie die \href{http://sourceforge.net/forum/?group_id=92314}{Foren} auf der Projektseite bei Sourceforge.
+ \item Durchsuchen Sie das \href{http://sourceforge.net/mailarchive/forum.php?forum_name=jabref-users}{Archiv} der \jabref-Mailingliste.
+ \item Stellen Sie Ihre Frage in einem der Foren oder auf der \href{http://sourceforge.net/mail/?group_id=92314}{\jabref-Mailingliste}.
+\end{enumerate}
+
+\faq{L�uft \jabref unter freiem Java (Classpath, Kaffee GCJ etc.)?}{Am 13.~November~2006 hat Sun sein Java unter die GNU General Public License (Version~2) gestellt, so dass die Antwort ">Ja"< lautet. Ansonsten ist zu sagen, dass eine unserer Abh�ngigkeiten derzeit zu einem Absturz f�hrt, wenn mit einer anderen Java API als der von Sun gearbeitet wird. Das gilt f�r Version 0.92 von Classpath.}
+
+\faq{\label{faq-linux}\jabref startet nicht unter Linux. Was kann ich tun?}{\jabref l�uft unter Linux, wenn Sie eine Java Runtime Environment (JRE) von Sun in der Version~1.4.2 oder einer neueren Version verwenden. Falls \jabref dennoch nicht starten sollte, k�nnen Sie folgende Fehlersuche durchf�hren:
+Starten Sie \texttt{java -{-}version} von der Kommandozeile. Falls dabei kein Produkt von Sun Microsystems verwendet wird (sondern beispielsweise angezeigt wird, dass Sie GCJ VM verwenden), selbst wenn Sie die JRE von Sun installiert haben, m�ssen Sie Ihr Setup anpassen. Da das Vorgehen daf�r sehr von Ihrer Linux-Distribution abh�ngt, k�nnen wir keine Hinweise f�r jede m�gliche Konstellation geben.
+Unter Debian/Ubuntu k�nnen Sie die Einstellungen anpassen, indem Sie \texttt{sudo update-alternatives -{-}config java} aufrufen (dazu brauchen Sie admin-Rechte). In dem Dialog, der daraufhin erscheint, w�hlen Sie die Sun JDK oder JRE. Alternativ k�nnen Sie auch nach der Java-Programmdatei suchen und diese direkt ausf�hren. In Ubuntu findet man Java gew�hnlich unter \texttt{/usr\slash{}lib\slash{}jvm\slash{}java-1.5.0-sun\slash{}jre\slash{}bin\slash{}java}.
+Wenn Sie keine admin-Rechte auf dem Computer haben, k�nnen Sie die Sun JRE in ihrem Home-Verzeichnis installieren. Sie m�ssen dann darauf achten, dass Sie die richtige Programmdatei aufrufen. Wenn Sie die JRE z.\,B. in einen Ordner namens ">java"< in ihrem Home-Verzeichnis installiert haben, geben Sie \texttt{\texttildelow{}/java/jre/bin/java -jar JabRef-2.1.jar} (bzw. die entsprechende Versionsnummer) in der Kommandozeile ein.}
+
+\clearpage\faq{Ich arbeite unter Ubuntu und \jabref startet, wenn ich auf das Icon klicke, aber nicht von der Kommandozeile. Wo liegt das Problem?}{Sie haben mehrere Java Virtual Machines installiert und von der Kommandozeile wird die falsche gew�hlt. Schauen Sie unter Frage \ref{faq-linux} nach, wie Sie die Einstellungen �ndern k�nnen.}
+
+\faq{Wie kann ich verhindern, dass \jabref beim Speichern der .bib"=Datei in bestimmten Feldern (wie \texttt{title}) Zeilenumbr�che einf�gt?}{�fnnen Sie \menu{Optionen \msep{} Einstellungen}. Im Bereich \menu{Allgemein} gibt es die Option \menu{Beim Speichern keinen Zeilenumbruch in den folgenden Feldern einf�gen}. Diese Option enth�lt eine Liste von Feldnamen. In Feldern, die Sie dieser Liste hinzuf�gen (abgetrennt mit einem Semikolon) wird beim Speichern kein Zeilenumbruch hinzugef�gt.}
+
+\faq{Mein Virenscanner sagt mir, dass \jabref ein Virus ist. Ist der Server gef�hrdet?}{Nein, aber der Windows"=Installer benutzt das \href{http://nsis.sourceforge.net/}{Nullsoft Scriptable Install System (NSIS)} in der Version~2.18 (seit \jabref~2.1), das ungl�cklicherweise Installer produziert, die von einigen Virenscannern als Virus eingesch�tzt werden. Wenn Sie mehr dar�ber erfahren wollen, sehen Sie sich die \href{http://forums.winamp.com/showthread.php?postid=1977648}{Diskussion im [...]
+
+Als Workaround und falls Sie Bedenken haben, den Installer zu benutzen, k�nnen Sie immer die plattformunabh�ngige jar"=Datei benutzen (siehe dazu Abschnitt ">\nameref{subsub:jar}"<).}
+
+\clearpage
+\section{Entwicklung}
+\secttoc
+\bigskip
+
+\noindent \jabref ist ein \emph{Open Source} Projekt, das hei�t, dass jede(r)
+dazu beitragen kann, das Programm zu verbessern und weiterzuentwickeln.
+Wenn Sie Anregungen, W�nsche oder Fragen haben, ist die erste Anlaufstelle
+die \href{http://sourceforge.net/projects/jabref/}{Projektseite bei \emph{Sourceforge}}.
+Dort gibt es Foren, in denen Sie Ihre Fragen stellen k�nnen, und eine
+Mailingliste rund um \jabref. Auch Ihre W�nsche \emph{(Feature
+Requests)} und Fehlermeldungen \emph{(Bug Reports)} k�nnen Sie dort
+loswerden. Um sich direkt als Entwickler einzubringen, wenden Sie
+sich an einen der beiden Maintainer (Morten O. Alver und Nizar N.
+Batada)~-- die E-Mail-Adressen finden Sie auf der Projektseite bei
+\emph{Sourceforge}. Sie brauchen lediglich einen Sourceforge-Login,
+der dann f�r das Projekt freigeschaltet werden kann.
+
+
+\subsection{Beschr�nkungen und bekannte Probleme (Bugs)}
+
+\begin{quote}
+\emph{Da sich die Software schneller entwickelt als dieses Handbuch, muss an dieser Stelle auf die \href{http://sourceforge.net/projects/jabref/}{Projektseite bei Sourceforge} verwiesen werden.}
+\end{quote}
+
+\subsection{Danksagung}
+
+Neben den Entwicklern, die die Hilfe"=Seiten des Programms geschrieben haben, danke ich Robert Bitsche, Daniel F�rderer, Thomas Fritz, Tim Hoffmann, Axel Junge, Jan Suhr und Tobias Wolf f�r ihre hilfreichen Tipps und Anmerkungen zum Handbuch.
+
+Seit den Anf�ngen als \emph{BibKeeper} (von Morten O.~Alver) und \emph{JBibtexManager} (von Nizar N.~Batada) haben
+zahlreiche Personen dazu beigetragen, dass \jabrefversion{} zu dem
+geworden ist, was es ist. Wer zum Entwicklerteam geh�rt und wer alles zum Programm beigetragen hat, k�nnen Sie im Programm unter \menu{Hilfe \msep{} �ber JabRef} nachsehen.
+
+\subsection{Lizenz}
+
+\jabref ist frei verf�gbar unter den Bedingungen der \href{http://www.gnu.org/copyleft/gpl.html}{GNU General Public License}. Es gibt unterschiedliche Softwarepakete, die von \jabref genutzt werden. Wenn Sie sich �ber die Lizenzbestimmungen dieser Fremdsoftware informieren wollen, schauen Sie bitte unter \menu{Hilfe \msep{} �ber JabRef} nach.
+
+\appendix
+\newpage
+\nocite{*}
+\hypertarget{bibliography}{}
+\bibliographystyle{jurabib}
+\bibliography{JabRef-UserManual_de}
+
+
+\newpage
+\addsec[Versionsgeschichte]{Versionsgeschichte dieses Handbuchs}
+
+\label{RevisionHistory}
+
+%\begin{revhist}{\versiondate}%endg�ltiges Datum}
+%\item �nderung
+%\end{revhist}
+
+\begin{revhist}{\versiondate}%26.\,1.\,2010}
+\item Lizenz ge�ndert
+\item Format von A4 auf A5 ge�ndert (bessere Bildschirmlesbarkeit)
+\item Abschnitte ">\nameref{Export-OOo}"< und ">\nameref{CustomExports}"< aktualisiert
+\item Abschnitte ">\nameref{search-regular-expressions}"< und ">\nameref{kommandozeilenoptionen}"< erg�nzt
+\item Versionsnummer (2.4) angepasst
+\item Kleinere �nderungen
+\end{revhist}
+
+\begin{revhist}{1.\,12.\,2007}
+\item Abschnitt ">\nameref{NameFormatter}"< hinzugef�gt
+\item Abschnitte ">\nameref{par:Feldformatierer}"< und ">\nameref{subsub:SpezielleFeldmarken}"< erg�nzt
+\end{revhist}
+
+\begin{revhist}{4.\,7.\,2007}
+\item Abschnitt ">\nameref{FileLinks}"< hinzugef�gt
+\item Abschnitt ">Links zu externen Dateien"< in \nameref{ExternalFiles} umbenannt
+\item Kleine �nderungen
+\end{revhist}
+
+\begin{revhist}{8.\,6.\,2007}
+\item Abschnitt ">Import und Export"< in zwei Abschnitte unterteilt
+\item Abschnitt ">\nameref{sec:faq}"< erg�nzt
+\item Abschnitte ">\nameref{EntryEditorHelp}"< und ">\nameref{subsec:System-Voraussetzungen}"< angepasst
+\item Fehler im Abschnitt ">\nameref{PreviewHelp}"< korrigiert
+\item Versionsnummer angepasst
+\item Beschreibung der Felder ">doi"< und ">eid"< hinzugef�gt
+\item Fehler im Link zum Mail-Archiv beseitigt
+\item Einleitung leicht erg�nzt
+\item Generelle �berarbeitung des Dokuments
+\end{revhist}
+
+\begin{revhist}{18.\,4.\,2007}
+\item Abschnitte ">\nameref{LabelPatterns}"<, ">\nameref{StringEditorHelp}"< und ">\nameref{par:Feldformatierer}"< aktualisiert
+\item Fehler in Abschnitt ">\nameref{subsec:Starten-Kommandozeile}"< entfernt
+\item \jabref-Logo ge�ndert
+\item Ein paar Kleinigkeiten
+\end{revhist}
+
+\begin{revhist}{20.\,3.\,2007}
+\item Abschnitt ">\nameref{subsubsec:Hinzufuegen-Exportfilter}"< angepasst
+\item Kleinere �nderungen
+\end{revhist}
+
+\begin{revhist}{1.\,2.\,2007}
+\item Abschnitte ">\nameref{EndnoteFilters}"<, ">\nameref{subsubsec:endnote-jabref}"<, ">\nameref{subsec:about}"< und ">\nameref{sec:faq}"< �berarbeitet
+\item Literaturverzeichnis um Eintrag von \cite{btxfaq} erg�nzt
+\item Und noch ein paar kleine �nderungen
+\end{revhist}
+
+\begin{revhist}{19.\,1.\,2007}
+\item Abschnitt ">\nameref{Eintragstypen}"< hinzugef�gt
+\item Grafik auf Titelseite ausgetauscht
+\item Ein paar kleinere �nderungen
+\end{revhist}
+
+\begin{revhist}{10.\,12.\,2006}
+\item Abschnitt ">XMP-Metadaten"< leicht verbessert
+\item FAQ zu freien Java-APIs aktualisiert (Suns Java ist jetzt selbst frei)
+\item Wie immer: kleinere �nderungen
+\end{revhist}
+
+\begin{revhist}{9.\,12.\,2006}
+\item Abschnitte ">Weitere Hilfen"< in ">H�ufige Fragen und Antworten (FAQ)"< umbenannt
+\item FAQs von der Homepage �bersetzt und integriert
+\item Literaturverzeichnis um Eintrag von \cite{Fenn2006} erg�nzt
+\item Ein paar kleinere �nderungen
+\end{revhist}
+
+\begin{revhist}{30.\,11.\,2006}
+\item Abschnitte ">Weitere Hilfen"< hinzugef�gt
+\end{revhist}
+
+\begin{revhist}{28.\,11.\,2006}
+\item Abschnitte ">Abk�rzung von Zeitschriftentiteln"<, ">XMP-Metadaten"<, ">IEEExplore"< und ">Externer Zugriff"< hinzugef�gt
+\item Abschnitte ">Einf�hrung in \bibtex{}"<, ">Das Hauptfenster"<, ">Links zu externen Dateien"< und ">Jabref und Online-Datenbanken"< erweitert
+\item Abschnitt ">Suchfunktionen"< aktualisiert
+\item Abschnitt ">Entwicklung"< gek�rzt
+\item Paket ">listings"< eingebunden (ersetzt Umgebung ">lyxcode"<)
+\item Typewriter-Schrift \texttt{beramono} eingesetzt
+\item Einige kleinere �nderungen
+\end{revhist}
+
+\begin{revhist}{30.\,1.\,2006}
+\item Abschnitt >>\jabref-Bibliographien in OpenOffice.org benutzen<< aktualisiert
+\item Abschnitt zur Erzeugung der \bibtex{}-Keys aktualisiert
+\item Neues Kapitel (>>Externe Importfilter<<), geschrieben von Andreas Rudert
+\item Einige kleinere �nderungen
+\end{revhist}
+
+\begin{revhist}{6.\,12.\,2005}
+\item Lizenzbedingungen f�r das Handbuch hinzugef�gt
+\item von PDF~1.4 auf PDF~1.2 umgestellt
+\item mehrere kleinere �nderungen
+\end{revhist}
+
+\begin{revhist}{16.\,11.\,2005}
+\item Erstentwurf von Dominik Wa�enhoven, basierend
+auf dem unver�ffentlichten englischen \emph{Initial Draft} von Nizar Batada (20.\,2.\,2004)
+und den Hilfeseiten des Programms
+\end{revhist}
+
+\end{document}
diff --git a/src/help/fr/About.html b/src/help/fr/About.html
index 2a3ab4c..9f18059 100644
--- a/src/help/fr/About.html
+++ b/src/help/fr/About.html
@@ -48,6 +48,7 @@
Aaron Chen,
Fabrice Dessaint,
Nathan Dunn,
+ E. Hakan Duran,
Brian Van Essen,
Alexis Gallagher,
David Gleich,
diff --git a/src/help/fr/CustomExports.html b/src/help/fr/CustomExports.html
index 39e0685..6b9f322 100644
--- a/src/help/fr/CustomExports.html
+++ b/src/help/fr/CustomExports.html
@@ -400,6 +400,12 @@
le début d'un nouveau paragraphe et crée les
balises html de paragraphes appropriées.</li>
+ <li><code>IfPlural</code> : renvoie son premier argument si le
+ champ d'entrée ressemble à une liste d'auteurs avec deux
+ noms ou plus, sinon renvoie son second argument. Par exemple,
+ <code>\format[IfPlural(Eds.,Ed.)]{\editor}</code> renverra "Eds." s'il y
+ a plus d'un éditeur et "Ed." s'il n'y en a qu'un seul.</li>
+
<li><code>LastPage</code> : renvoie la dernière page du champ "pages", si initialisé.
Par exemple, si le champ "pages" est initialisé avec "345-360" ou "345--360",
ce formatteur renverra "360".</li>
diff --git a/src/help/fr/JSTOR.html b/src/help/fr/JSTOR.html
index 0a1fac2..307a58b 100644
--- a/src/help/fr/JSTOR.html
+++ b/src/help/fr/JSTOR.html
@@ -4,6 +4,9 @@
<basefont size="4" color="#2F4958" face="arial" />
<h1>Recherche JStor</h1>
+
+ <p>La recherche JStor s'effectue gràce au projet d'extraction de données de BibSonomy (http://scraper.bibsonomy.org/)
+ pour extraire des informations des page web de JStor.</p>
<p>L'aide ci-dessous a été copiée depuis le site web de JStor et pourrait changer avec JSTor :</p>
<ul>
diff --git a/src/images/absIcon.png b/src/images/absIcon.png
deleted file mode 100644
index f249fda..0000000
Binary files a/src/images/absIcon.png and /dev/null differ
diff --git a/src/images/add.png b/src/images/add.png
deleted file mode 100644
index 6b636fe..0000000
Binary files a/src/images/add.png and /dev/null differ
diff --git a/src/images/autumn.png b/src/images/autumn.png
deleted file mode 100644
index 77b7590..0000000
Binary files a/src/images/autumn.png and /dev/null differ
diff --git a/src/images/completeItem.png b/src/images/completeItem.png
deleted file mode 100644
index 5eeadc7..0000000
Binary files a/src/images/completeItem.png and /dev/null differ
diff --git a/src/images/contents.png b/src/images/contents.png
deleted file mode 100644
index 6e44fa7..0000000
Binary files a/src/images/contents.png and /dev/null differ
diff --git a/src/images/database_connect.png b/src/images/database_connect.png
deleted file mode 100644
index 3a11197..0000000
Binary files a/src/images/database_connect.png and /dev/null differ
diff --git a/src/images/database_save.png b/src/images/database_save.png
deleted file mode 100644
index 44c06dd..0000000
Binary files a/src/images/database_save.png and /dev/null differ
diff --git a/src/images/document-save-as.png b/src/images/document-save-as.png
deleted file mode 100644
index 7a1591f..0000000
Binary files a/src/images/document-save-as.png and /dev/null differ
diff --git a/src/images/document-save.png b/src/images/document-save.png
deleted file mode 100644
index 0311e47..0000000
Binary files a/src/images/document-save.png and /dev/null differ
diff --git a/src/images/doismall.png b/src/images/doismall.png
deleted file mode 100644
index 3c9595b..0000000
Binary files a/src/images/doismall.png and /dev/null differ
diff --git a/src/images/duplicate.png b/src/images/duplicate.png
deleted file mode 100644
index 5599a18..0000000
Binary files a/src/images/duplicate.png and /dev/null differ
diff --git a/src/images/edit-copy.png b/src/images/edit-copy.png
deleted file mode 100644
index efec317..0000000
Binary files a/src/images/edit-copy.png and /dev/null differ
diff --git a/src/images/edit-cut.png b/src/images/edit-cut.png
deleted file mode 100644
index 7e750c9..0000000
Binary files a/src/images/edit-cut.png and /dev/null differ
diff --git a/src/images/edit-delete.png b/src/images/edit-delete.png
deleted file mode 100644
index 0ac3589..0000000
Binary files a/src/images/edit-delete.png and /dev/null differ
diff --git a/src/images/edit-find.png b/src/images/edit-find.png
deleted file mode 100644
index b98e348..0000000
Binary files a/src/images/edit-find.png and /dev/null differ
diff --git a/src/images/edit-paste.png b/src/images/edit-paste.png
deleted file mode 100644
index 577e9c2..0000000
Binary files a/src/images/edit-paste.png and /dev/null differ
diff --git a/src/images/edit-redo.png b/src/images/edit-redo.png
deleted file mode 100644
index 712a8ee..0000000
Binary files a/src/images/edit-redo.png and /dev/null differ
diff --git a/src/images/edit-undo.png b/src/images/edit-undo.png
deleted file mode 100644
index 4652df0..0000000
Binary files a/src/images/edit-undo.png and /dev/null differ
diff --git a/src/images/editor.png b/src/images/editor.png
deleted file mode 100644
index a653bfe..0000000
Binary files a/src/images/editor.png and /dev/null differ
diff --git a/src/images/emacs.png b/src/images/emacs.png
deleted file mode 100644
index 6b76f52..0000000
Binary files a/src/images/emacs.png and /dev/null differ
diff --git a/src/images/emblem-web-small.png b/src/images/emblem-web-small.png
deleted file mode 100644
index 3d81a37..0000000
Binary files a/src/images/emblem-web-small.png and /dev/null differ
diff --git a/src/images/emblem-web.png b/src/images/emblem-web.png
deleted file mode 100644
index 49f7290..0000000
Binary files a/src/images/emblem-web.png and /dev/null differ
diff --git a/src/images/fileclose.png b/src/images/fileclose.png
deleted file mode 100644
index 033326f..0000000
Binary files a/src/images/fileclose.png and /dev/null differ
diff --git a/src/images/fileclose2.png b/src/images/fileclose2.png
deleted file mode 100644
index c1e5f4d..0000000
Binary files a/src/images/fileclose2.png and /dev/null differ
diff --git a/src/images/filenew.png b/src/images/filenew.png
deleted file mode 100644
index 7274a21..0000000
Binary files a/src/images/filenew.png and /dev/null differ
diff --git a/src/images/fileopen.png b/src/images/fileopen.png
deleted file mode 100644
index 7c9f7a6..0000000
Binary files a/src/images/fileopen.png and /dev/null differ
diff --git a/src/images/genIcon.png b/src/images/genIcon.png
deleted file mode 100644
index 5bedaa2..0000000
Binary files a/src/images/genIcon.png and /dev/null differ
diff --git a/src/images/go-down.png b/src/images/go-down.png
deleted file mode 100644
index 970d43a..0000000
Binary files a/src/images/go-down.png and /dev/null differ
diff --git a/src/images/go-next.png b/src/images/go-next.png
deleted file mode 100644
index cfee8f4..0000000
Binary files a/src/images/go-next.png and /dev/null differ
diff --git a/src/images/go-previous.png b/src/images/go-previous.png
deleted file mode 100644
index 3311c05..0000000
Binary files a/src/images/go-previous.png and /dev/null differ
diff --git a/src/images/go-up.png b/src/images/go-up.png
deleted file mode 100644
index 4ee50ef..0000000
Binary files a/src/images/go-up.png and /dev/null differ
diff --git a/src/images/groupIncluding.png b/src/images/groupIncluding.png
deleted file mode 100644
index 6f2bd08..0000000
Binary files a/src/images/groupIncluding.png and /dev/null differ
diff --git a/src/images/groupRefining.png b/src/images/groupRefining.png
deleted file mode 100644
index 2ba0a26..0000000
Binary files a/src/images/groupRefining.png and /dev/null differ
diff --git a/src/images/grouping_morten.png b/src/images/grouping_morten.png
deleted file mode 100644
index 9b29f68..0000000
Binary files a/src/images/grouping_morten.png and /dev/null differ
diff --git a/src/images/groupsHighlightAll.png b/src/images/groupsHighlightAll.png
deleted file mode 100644
index c6e1a97..0000000
Binary files a/src/images/groupsHighlightAll.png and /dev/null differ
diff --git a/src/images/groupsHighlightAny.png b/src/images/groupsHighlightAny.png
deleted file mode 100644
index 1bc2e28..0000000
Binary files a/src/images/groupsHighlightAny.png and /dev/null differ
diff --git a/src/images/help-about.png b/src/images/help-about.png
deleted file mode 100644
index 90ce540..0000000
Binary files a/src/images/help-about.png and /dev/null differ
diff --git a/src/images/help-browser.png b/src/images/help-browser.png
deleted file mode 100644
index 6de563b..0000000
Binary files a/src/images/help-browser.png and /dev/null differ
diff --git a/src/images/integrity.png b/src/images/integrity.png
deleted file mode 100644
index 4343947..0000000
Binary files a/src/images/integrity.png and /dev/null differ
diff --git a/src/images/lyx2.png b/src/images/lyx2.png
deleted file mode 100644
index 84a742f..0000000
Binary files a/src/images/lyx2.png and /dev/null differ
diff --git a/src/images/mark.png b/src/images/mark.png
deleted file mode 100644
index 6f8ab3a..0000000
Binary files a/src/images/mark.png and /dev/null differ
diff --git a/src/images/messageFail.png b/src/images/messageFail.png
deleted file mode 100644
index 474f63f..0000000
Binary files a/src/images/messageFail.png and /dev/null differ
diff --git a/src/images/messageInfo.png b/src/images/messageInfo.png
deleted file mode 100644
index ecdc991..0000000
Binary files a/src/images/messageInfo.png and /dev/null differ
diff --git a/src/images/messageWarn.png b/src/images/messageWarn.png
deleted file mode 100755
index 55a6f01..0000000
Binary files a/src/images/messageWarn.png and /dev/null differ
diff --git a/src/images/optIcon.png b/src/images/optIcon.png
deleted file mode 100644
index 64562b3..0000000
Binary files a/src/images/optIcon.png and /dev/null differ
diff --git a/src/images/pdf-new.png b/src/images/pdf-new.png
deleted file mode 100644
index cda12b9..0000000
Binary files a/src/images/pdf-new.png and /dev/null differ
diff --git a/src/images/pdf.png b/src/images/pdf.png
deleted file mode 100644
index d5eab07..0000000
Binary files a/src/images/pdf.png and /dev/null differ
diff --git a/src/images/postscript.png b/src/images/postscript.png
deleted file mode 100644
index 5065c98..0000000
Binary files a/src/images/postscript.png and /dev/null differ
diff --git a/src/images/preamble.png b/src/images/preamble.png
deleted file mode 100644
index cf9d89d..0000000
Binary files a/src/images/preamble.png and /dev/null differ
diff --git a/src/images/preferences.png b/src/images/preferences.png
deleted file mode 100644
index 426460b..0000000
Binary files a/src/images/preferences.png and /dev/null differ
diff --git a/src/images/remove.png b/src/images/remove.png
deleted file mode 100644
index 0815d3f..0000000
Binary files a/src/images/remove.png and /dev/null differ
diff --git a/src/images/reqIcon.png b/src/images/reqIcon.png
deleted file mode 100644
index 5d2439c..0000000
Binary files a/src/images/reqIcon.png and /dev/null differ
diff --git a/src/images/search.png b/src/images/search.png
deleted file mode 100644
index a555de8..0000000
Binary files a/src/images/search.png and /dev/null differ
diff --git a/src/images/splash-2.1.svg b/src/images/splash-2.1.svg
deleted file mode 100644
index 1f931f6..0000000
--- a/src/images/splash-2.1.svg
+++ /dev/null
@@ -1,229 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- inkscape:export-ydpi="90.000000"
- inkscape:export-xdpi="90.000000"
- inkscape:export-filename="/home/alver/jabref-2.1b/src/images/splash-2.1beta.png"
- sodipodi:docname="splash-2.1.svg"
- sodipodi:docbase="/home/alver/jabref_newcvs/jabref/src/images"
- inkscape:version="0.44"
- sodipodi:version="0.32"
- id="svg2138"
- height="1052.3622047"
- width="744.09448819">
- <defs
- id="defs2140">
- <pattern
- patternTransform="translate(316.0000,1046.362)"
- id="pattern9054"
- xlink:href="#pattern9048"
- inkscape:collect="always" />
- <linearGradient
- id="linearGradient5361"
- inkscape:collect="always">
- <stop
- id="stop5363"
- offset="0"
- style="stop-color:#000000;stop-opacity:1;" />
- <stop
- id="stop5365"
- offset="1"
- style="stop-color:#000000;stop-opacity:0;" />
- </linearGradient>
- <marker
- style="overflow:visible;"
- id="Arrow2Send"
- refX="0.0"
- refY="0.0"
- orient="auto"
- inkscape:stockid="Arrow2Send">
- <path
- transform="scale(0.3) rotate(180) translate(-5,0)"
- d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
- style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
- id="path3046"
- sodipodi:nodetypes="cccc" />
- </marker>
- <linearGradient
- gradientUnits="userSpaceOnUse"
- y2="300.91277"
- x2="491.20592"
- y1="300.91277"
- x1="445.01770"
- id="linearGradient5367"
- xlink:href="#linearGradient5361"
- inkscape:collect="always" />
- <pattern
- id="pattern9048"
- patternTransform="translate(231.0000,284.3622)"
- height="428.00000"
- width="572.00000"
- patternUnits="userSpaceOnUse">
- <image
- transform="translate(-231.0000,-284.3622)"
- style="opacity:1.0000000;stroke:#000000;stroke-width:5.0000000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000"
- inkscape:export-ydpi="90.000000"
- inkscape:export-xdpi="90.000000"
- inkscape:export-filename="/home/alver/Desktop/bilder/jabref/splash4.png"
- y="284.36218"
- x="231.00000"
- xlink:href="behandlet.png"
- sodipodi:absref="/home/alver/Desktop/bilder/jabref/behandlet.png"
- width="572.00000"
- height="428.00000"
- id="image9050" />
- </pattern>
- </defs>
- <sodipodi:namedview
- inkscape:window-y="53"
- inkscape:window-x="15"
- inkscape:window-height="856"
- inkscape:window-width="853"
- inkscape:current-layer="layer1"
- inkscape:document-units="px"
- inkscape:cy="698.1925"
- inkscape:cx="364.52617"
- inkscape:zoom="1"
- inkscape:pageshadow="2"
- inkscape:pageopacity="0.0"
- borderopacity="1.0"
- bordercolor="#666666"
- pagecolor="#ffffff"
- id="base" />
- <metadata
- id="metadata2143">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- id="layer1"
- inkscape:groupmode="layer"
- inkscape:label="Layer 1">
- <rect
- inkscape:export-ydpi="75.000000"
- inkscape:export-xdpi="75.000000"
- inkscape:export-filename="/home/alver/jabref-2.1rc/src/images/splash-2.1.png"
- y="170.36218"
- x="77.500000"
- height="432.00000"
- width="576.00000"
- id="rect6833"
- style="opacity:1.0000000;fill:#6b6b75;fill-opacity:1.0000000;stroke:none;stroke-width:5.0000000;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
- <image
- id="image1821"
- height="428"
- width="572"
- sodipodi:absref="/home/alver/jabref/src/images/splashBackground.png"
- xlink:href="/home/alver/jabref/src/images/splashBackground.png"
- x="79"
- y="172.36218"
- inkscape:export-filename="/home/alver/jabref-2.1rc/src/images/splash-2.1.png"
- inkscape:export-xdpi="75"
- inkscape:export-ydpi="75" />
- <flowRoot
- inkscape:export-ydpi="75.000000"
- inkscape:export-xdpi="75.000000"
- inkscape:export-filename="/home/alver/jabref-2.1rc/src/images/splash-2.1.png"
- style="opacity:1.0000000;fill:#635578;fill-opacity:1.0000000;stroke:#b5b5c7;stroke-width:0.48137558;stroke-linejoin:bevel;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
- transform="matrix(1.875133,0.000000,0.000000,2.542210,-129.6969,-372.8897)"
- id="flowRoot2189"
- xml:space="preserve">
- <flowRegion
- id="flowRegion2191">
- <rect
- style="fill:#635578;fill-opacity:1.0000000;stroke:#b5b5c7;stroke-opacity:1.0000000;stroke-width:0.48137557;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-linejoin:bevel"
- y="199.10532"
- x="128.49385"
- height="127.49445"
- width="283.51782"
- id="rect2193" />
- </flowRegion>
- <flowPara
- style="font-size:90.000000px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125.00000%;writing-mode:lr-tb;text-anchor:start;fill:#635578;fill-opacity:1.0000000;stroke:#b5b5c7;stroke-width:0.48137558;stroke-linejoin:bevel;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;font-family:AR PL KaitiM GB"
- id="flowPara2201">JabRef</flowPara>
- </flowRoot> <flowRoot
- inkscape:export-ydpi="75.000000"
- inkscape:export-xdpi="75.000000"
- inkscape:export-filename="/home/alver/jabref-2.1b/src/images/splash-2.1beta.png"
- style="font-size:34.96500015px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:104.16220427%;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#5cc757;stroke-width:0.64448702;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:0.64448701 0.64448701 ;stroke-dashoffset:0.45114091;stroke-opacity:1;font-family:FreeSans"
- transform="matrix(2.869197,-1.415830e-2,2.234317e-2,3.356271,-832.1435,-652.0185)"
- id="flowRoot2203"
- xml:space="preserve">
- <flowRegion
- style="stroke:url(#linearGradient5367);stroke-width:0.64448702;stroke-miterlimit:4;stroke-dasharray:0.64448701 0.64448701 ;stroke-dashoffset:0.45114091"
- id="flowRegion2205">
- <rect
- style="font-size:34.96500015px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:104.16220427%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#322b5b;stroke-width:0.64448702;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:0.64448701 0.64448701 ;stroke-dashoffset:0.45114091;stroke-opacity:1;font-family:FreeSans"
- y="286.45224"
- x="443.95346"
- height="119.83134"
- width="173.972"
- id="rect2207" />
- </flowRegion>
- <flowPara
- style="font-size:34.96500015px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:104.16220427%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#322b5b;stroke-width:0.64448702;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:0.64448701 0.64448701 ;stroke-dashoffset:0.45114091;stroke-opacity:1;font-family:FreeSans"
- id="flowPara2211">2.1</flowPara>
- </flowRoot> <flowRoot
- inkscape:export-ydpi="75.000000"
- inkscape:export-xdpi="75.000000"
- inkscape:export-filename="/home/alver/jabref-2.1rc/src/images/splash-2.1.png"
- transform="matrix(0.972246,0.000000,0.000000,1.325301,6.054966,-126.1181)"
- style="font-size:11.9999996;font-style:oblique;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#797580;fill-opacity:1.0000000;font-family:Bitstream Vera Sans;text-anchor:middle;writing-mode:lr;text-align:center;line-height:100%"
- id="flowRoot3076"
- xml:space="preserve"><flowRegion
- id="flowRegion3078">
- <rect
- style="fill:#797580;fill-opacity:1.0000000;font-family:Bitstream Vera Sans;font-weight:bold;font-style:oblique;font-stretch:normal;font-variant:normal;font-size:11.9999996;text-anchor:middle;text-align:center;writing-mode:lr;line-height:100%"
- y="514.56494"
- x="115.50008"
- height="78.684433"
- width="506.03476"
- id="rect3080" />
- </flowRegion><flowPara
- id="flowPara1339">This program is distributed under the terms of the General Public License.</flowPara><flowPara
- id="flowPara1341">Copyright (2003-2006) Morten O. Alver, Nizar Batada and all contributors.</flowPara></flowRoot> <text
- inkscape:export-ydpi="75.000000"
- inkscape:export-xdpi="75.000000"
- inkscape:export-filename="/home/alver/jabref-2.1rc/src/images/splash-2.1.png"
- transform="scale(0.853277,1.171952)"
- sodipodi:linespacing="100%"
- id="text1393"
- y="315.20035"
- x="163.38908"
- style="font-size:183.29680;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#413b62;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Nimbus Roman No9 L;text-anchor:start;writing-mode:lr-tb"
- xml:space="preserve"><tspan
- y="315.20035"
- x="163.38908"
- id="tspan1395"
- sodipodi:role="line">JabRef</tspan></text>
- <text
- inkscape:export-ydpi="75.000000"
- inkscape:export-xdpi="75.000000"
- inkscape:export-filename="/home/alver/jabref-2.1rc/src/images/splash-2.1.png"
- transform="scale(0.853347,1.171856)"
- sodipodi:linespacing="100%"
- id="text2179"
- y="397.84811"
- x="149.99753"
- style="font-size:44.00000436;font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#805b41;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Nimbus Roman No9 L;text-anchor:start;writing-mode:lr;text-align:start;line-height:100%"
- xml:space="preserve"><tspan
- y="397.84811"
- x="149.99753"
- id="tspan2181"
- sodipodi:role="line">reference manager</tspan></text>
- </g>
-</svg>
diff --git a/src/images/splash-2.1beta.png b/src/images/splash-2.1beta.png
deleted file mode 100644
index 4304131..0000000
Binary files a/src/images/splash-2.1beta.png and /dev/null differ
diff --git a/src/images/splash-2.3.svg b/src/images/splash-2.3.svg
deleted file mode 100644
index d519da8..0000000
--- a/src/images/splash-2.3.svg
+++ /dev/null
@@ -1,276 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- inkscape:export-ydpi="90.000000"
- inkscape:export-xdpi="90.000000"
- inkscape:export-filename="/home/alver/jabref_head/jabref/src/images/jabref_splash-2.2.png"
- sodipodi:docname="splash-2.3.svg"
- sodipodi:docbase="/home/alver/jabref/src/images"
- inkscape:version="0.45.1"
- sodipodi:version="0.32"
- id="svg2138"
- height="1052.3622047"
- width="744.09448819"
- inkscape:output_extension="org.inkscape.output.svg.inkscape">
- <defs
- id="defs2140">
- <linearGradient
- id="linearGradient2974">
- <stop
- style="stop-color:#505b77;stop-opacity:1;"
- offset="0"
- id="stop2976" />
- <stop
- style="stop-color:#596a97;stop-opacity:1;"
- offset="1"
- id="stop2978" />
- </linearGradient>
- <linearGradient
- id="linearGradient2883">
- <stop
- style="stop-color:#c5c1c1;stop-opacity:1;"
- offset="0"
- id="stop2885" />
- <stop
- style="stop-color:white;stop-opacity:1;"
- offset="1"
- id="stop2887" />
- </linearGradient>
- <pattern
- patternTransform="translate(316.0000,1046.362)"
- id="pattern9054"
- xlink:href="#pattern9048"
- inkscape:collect="always" />
- <marker
- style="overflow:visible;"
- id="Arrow2Send"
- refX="0.0"
- refY="0.0"
- orient="auto"
- inkscape:stockid="Arrow2Send">
- <path
- transform="scale(0.3) rotate(180) translate(-5,0)"
- d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
- style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
- id="path3046"
- sodipodi:nodetypes="cccc" />
- </marker>
- <pattern
- id="pattern9048"
- patternTransform="translate(231.0000,284.3622)"
- height="428.00000"
- width="572.00000"
- patternUnits="userSpaceOnUse">
- <image
- transform="translate(-231.0000,-284.3622)"
- style="opacity:1.0000000;stroke:#000000;stroke-width:5.0000000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000"
- inkscape:export-ydpi="90.000000"
- inkscape:export-xdpi="90.000000"
- inkscape:export-filename="/home/alver/Desktop/bilder/jabref/splash4.png"
- y="284.36218"
- x="231.00000"
- xlink:href="behandlet.png"
- sodipodi:absref="/home/alver/Desktop/bilder/jabref/behandlet.png"
- width="572.00000"
- height="428.00000"
- id="image9050" />
- </pattern>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2883"
- id="radialGradient2889"
- cx="255.5"
- cy="330.36218"
- fx="255.5"
- fy="330.36218"
- r="135.88549"
- gradientTransform="matrix(-0.799579,-5.606082e-2,6.979161e-2,-1.00875,436.7358,677.9388)"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2883"
- id="linearGradient2909"
- x1="443.79153"
- y1="351.89935"
- x2="602.17139"
- y2="351.89935"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2883"
- id="radialGradient2796"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-0.799579,-5.606082e-2,6.979161e-2,-1.00875,436.7358,677.9388)"
- cx="255.5"
- cy="330.36218"
- fx="255.5"
- fy="330.36218"
- r="135.88549" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2883"
- id="radialGradient2798"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-0.799579,-5.606082e-2,6.979161e-2,-1.00875,436.7358,677.9388)"
- cx="255.5"
- cy="330.36218"
- fx="255.5"
- fy="330.36218"
- r="135.88549" />
- </defs>
- <sodipodi:namedview
- inkscape:window-y="25"
- inkscape:window-x="0"
- inkscape:window-height="949"
- inkscape:window-width="1280"
- inkscape:current-layer="layer1"
- inkscape:document-units="px"
- inkscape:cy="677.8697"
- inkscape:cx="414.10531"
- inkscape:zoom="1"
- inkscape:pageshadow="2"
- inkscape:pageopacity="0.0"
- borderopacity="1.0"
- bordercolor="#666666"
- pagecolor="#ffffff"
- id="base" />
- <metadata
- id="metadata2143">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- id="layer1"
- inkscape:groupmode="layer"
- inkscape:label="Layer 1">
- <rect
- inkscape:export-ydpi="75.000000"
- inkscape:export-xdpi="75.000000"
- inkscape:export-filename="/home/alver/jabref/src/images/splash.png"
- y="170.36218"
- x="77.500000"
- height="432.00000"
- width="576.00000"
- id="rect6833"
- style="opacity:1.0000000;fill:#6b6b75;fill-opacity:1.0000000;stroke:none;stroke-width:5.0000000;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
- <image
- id="image1821"
- height="428"
- width="572"
- sodipodi:absref="/home/alver/jabref/src/images/splashBackground.png"
- xlink:href="splashBackground.png"
- x="79"
- y="172.36218"
- inkscape:export-filename="/home/alver/jabref/src/images/splash.png"
- inkscape:export-xdpi="75"
- inkscape:export-ydpi="75" />
- <flowRoot
- inkscape:export-ydpi="75.000000"
- inkscape:export-xdpi="75.000000"
- inkscape:export-filename="/home/alver/jabref/src/images/splash.png"
- style="opacity:1.0000000;fill:#635578;fill-opacity:1.0000000;stroke:#b5b5c7;stroke-width:0.48137558;stroke-linejoin:bevel;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
- transform="matrix(1.875133,0.000000,0.000000,2.542210,-129.6969,-372.8897)"
- id="flowRoot2189"
- xml:space="preserve">
- <flowRegion
- id="flowRegion2191">
- <rect
- style="fill:#635578;fill-opacity:1.0000000;stroke:#b5b5c7;stroke-opacity:1.0000000;stroke-width:0.48137557;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-linejoin:bevel"
- y="199.10532"
- x="128.49385"
- height="127.49445"
- width="283.51782"
- id="rect2193" />
- </flowRegion>
- <flowPara
- style="font-size:90.000000px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125.00000%;writing-mode:lr-tb;text-anchor:start;fill:#635578;fill-opacity:1.0000000;stroke:#b5b5c7;stroke-width:0.48137558;stroke-linejoin:bevel;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;font-family:AR PL KaitiM GB"
- id="flowPara2201">JabRef</flowPara>
- </flowRoot> <flowRoot
- inkscape:export-ydpi="75.000000"
- inkscape:export-xdpi="75.000000"
- inkscape:export-filename="/home/alver/jabref/src/images/splash.png"
- transform="matrix(0.972246,0,0,1.325301,6.054966,-126.1181)"
- style="font-size:12px;font-style:oblique;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#797580;fill-opacity:1;font-family:Bitstream Vera Sans"
- id="flowRoot3076"
- xml:space="preserve"><flowRegion
- id="flowRegion3078">
- <rect
- style="font-size:12px;font-style:oblique;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#797580;fill-opacity:1;font-family:Bitstream Vera Sans"
- y="514.56494"
- x="115.50008"
- height="78.684433"
- width="506.03476"
- id="rect3080" />
- </flowRegion><flowPara
- id="flowPara1339">This program is distributed under the terms of the General Public License.</flowPara><flowPara
- id="flowPara1341">Copyright (2003-2007) Morten O. Alver, Nizar Batada and all contributors.</flowPara></flowRoot> <text
- inkscape:export-ydpi="75.000000"
- inkscape:export-xdpi="75.000000"
- inkscape:export-filename="/home/alver/jabref/src/images/splash.png"
- transform="scale(0.853347,1.171856)"
- sodipodi:linespacing="100%"
- id="text2179"
- y="450.75409"
- x="187.49605"
- style="font-size:43.99980927px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#805b41;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:URW Palladio L"
- xml:space="preserve"><tspan
- y="450.75409"
- x="187.49605"
- id="tspan2181"
- sodipodi:role="line">JabRef reference manager</tspan></text>
- <g
- id="g2867"
- transform="matrix(1.14435,0,0,1.103688,-34.88143,-26.75429)"
- style="fill:#3d3d5f;fill-opacity:1;stroke:url(#radialGradient2889);stroke-width:1.99301183;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:export-filename="/home/alver/jabref/src/images/splash.png"
- inkscape:export-xdpi="75"
- inkscape:export-ydpi="75">
- <path
- inkscape:export-ydpi="57.68"
- inkscape:export-xdpi="57.68"
- inkscape:export-filename="/home/alver/Documents/jabrefIkon.png"
- sodipodi:nodetypes="cccscssc"
- id="path3874"
- d="M 157.96931,200.83693 C 195.68133,200.83693 226.84892,201.74266 226.84892,201.74266 C 226.84892,201.74266 264.67261,230.02095 245.09466,392.86816 C 239.45611,424.41127 211.69305,452.41514 177.77033,452.41514 C 143.84738,452.41514 124.35978,432.41027 124.35978,409.07782 C 159.37053,424.87768 185.33022,416.88114 194.38104,413.14131 C 198.72239,411.3483 214.85378,403.80956 214.58004,365.73926 C 213.94457,277.38853 222.57808,258.1971 157.96931,200.83693 z "
- style="fill:#3d3d5f;fill-opacity:1;fill-rule:evenodd;stroke:url(#radialGradient2796);stroke-width:1.99301183;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- inkscape:export-ydpi="57.68"
- inkscape:export-xdpi="57.68"
- inkscape:export-filename="/home/alver/Documents/jabrefIkon.png"
- sodipodi:nodetypes="ccccsc"
- id="path3876"
- d="M 255.00983,201.1495 C 346.39949,205.65848 415.05774,279.60734 324.95506,328.62763 C 299.6693,344.58746 362.3433,423.95718 386.64022,459.88743 C 324.57976,439.24633 270.32186,376.11089 274.24748,333.19936 C 276.87135,302.14849 327.63081,304.24915 329.72814,285.1414 C 331.82536,266.03489 296.3799,268.06417 255.00983,201.1495 z "
- style="fill:#3d3d5f;fill-opacity:1;fill-rule:evenodd;stroke:url(#radialGradient2798);stroke-width:1.99301183;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
- <text
- xml:space="preserve"
- style="font-size:57.1212616px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#727888;stroke-width:1.80000031;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;font-family:Nimbus Sans L"
- x="462.20135"
- y="426.2529"
- id="text2911"
- sodipodi:linespacing="100%"
- transform="scale(0.917932,1.089405)"
- inkscape:export-filename="/home/alver/jabref/src/images/splash.png"
- inkscape:export-xdpi="75"
- inkscape:export-ydpi="75"><tspan
- sodipodi:role="line"
- id="tspan2913"
- x="462.20135"
- y="426.2529"
- style="font-size:119.00263214px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#727888;stroke-width:1.80000031;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;font-family:Bitstream Vera Sans">2.3</tspan></text>
- </g>
-</svg>
diff --git a/src/images/splash-2.4.svg b/src/images/splash-2.4.svg
deleted file mode 100644
index 8eaf7e1..0000000
--- a/src/images/splash-2.4.svg
+++ /dev/null
@@ -1,284 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- inkscape:export-ydpi="90.000000"
- inkscape:export-xdpi="90.000000"
- inkscape:export-filename="/home/alver/jabref_head/jabref/src/images/jabref_splash-2.2.png"
- sodipodi:docname="splash-2.4.svg"
- sodipodi:docbase="/home/alver/jabref_trunk/src/images"
- inkscape:version="0.46"
- sodipodi:version="0.32"
- id="svg2138"
- height="1052.3622047"
- width="744.09448819"
- inkscape:output_extension="org.inkscape.output.svg.inkscape">
- <defs
- id="defs2140">
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective2595" />
- <linearGradient
- id="linearGradient2974">
- <stop
- style="stop-color:#505b77;stop-opacity:1;"
- offset="0"
- id="stop2976" />
- <stop
- style="stop-color:#596a97;stop-opacity:1;"
- offset="1"
- id="stop2978" />
- </linearGradient>
- <linearGradient
- id="linearGradient2883">
- <stop
- style="stop-color:#c5c1c1;stop-opacity:1;"
- offset="0"
- id="stop2885" />
- <stop
- style="stop-color:white;stop-opacity:1;"
- offset="1"
- id="stop2887" />
- </linearGradient>
- <pattern
- patternTransform="translate(316.0000,1046.362)"
- id="pattern9054"
- xlink:href="#pattern9048"
- inkscape:collect="always" />
- <marker
- style="overflow:visible;"
- id="Arrow2Send"
- refX="0.0"
- refY="0.0"
- orient="auto"
- inkscape:stockid="Arrow2Send">
- <path
- transform="scale(0.3) rotate(180) translate(-5,0)"
- d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
- style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
- id="path3046"
- sodipodi:nodetypes="cccc" />
- </marker>
- <pattern
- id="pattern9048"
- patternTransform="translate(231.0000,284.3622)"
- height="428.00000"
- width="572.00000"
- patternUnits="userSpaceOnUse">
- <image
- transform="translate(-231.0000,-284.3622)"
- style="opacity:1.0000000;stroke:#000000;stroke-width:5.0000000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000"
- inkscape:export-ydpi="90.000000"
- inkscape:export-xdpi="90.000000"
- inkscape:export-filename="/home/alver/Desktop/bilder/jabref/splash4.png"
- y="284.36218"
- x="231.00000"
- xlink:href="behandlet.png"
- sodipodi:absref="/home/alver/Desktop/bilder/jabref/behandlet.png"
- width="572.00000"
- height="428.00000"
- id="image9050" />
- </pattern>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2883"
- id="radialGradient2889"
- cx="255.5"
- cy="330.36218"
- fx="255.5"
- fy="330.36218"
- r="135.88549"
- gradientTransform="matrix(-0.799579,-5.606082e-2,6.979161e-2,-1.00875,436.7358,677.9388)"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2883"
- id="linearGradient2909"
- x1="443.79153"
- y1="351.89935"
- x2="602.17139"
- y2="351.89935"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2883"
- id="radialGradient2796"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-0.799579,-5.606082e-2,6.979161e-2,-1.00875,436.7358,677.9388)"
- cx="255.5"
- cy="330.36218"
- fx="255.5"
- fy="330.36218"
- r="135.88549" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2883"
- id="radialGradient2798"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-0.799579,-5.606082e-2,6.979161e-2,-1.00875,436.7358,677.9388)"
- cx="255.5"
- cy="330.36218"
- fx="255.5"
- fy="330.36218"
- r="135.88549" />
- </defs>
- <sodipodi:namedview
- inkscape:window-y="25"
- inkscape:window-x="0"
- inkscape:window-height="949"
- inkscape:window-width="1279"
- inkscape:current-layer="layer1"
- inkscape:document-units="px"
- inkscape:cy="677.8697"
- inkscape:cx="414.10531"
- inkscape:zoom="1"
- inkscape:pageshadow="2"
- inkscape:pageopacity="0.0"
- borderopacity="1.0"
- bordercolor="#666666"
- pagecolor="#ffffff"
- id="base"
- showgrid="false" />
- <metadata
- id="metadata2143">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- id="layer1"
- inkscape:groupmode="layer"
- inkscape:label="Layer 1">
- <rect
- inkscape:export-ydpi="75.000000"
- inkscape:export-xdpi="75.000000"
- inkscape:export-filename="/home/alver/jabref_beta/src/images/splash.png"
- y="170.36218"
- x="77.500000"
- height="432.00000"
- width="576.00000"
- id="rect6833"
- style="opacity:1.0000000;fill:#6b6b75;fill-opacity:1.0000000;stroke:none;stroke-width:5.0000000;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
- <image
- id="image1821"
- height="428"
- width="572"
- sodipodi:absref="/home/alver/jabref/src/images/splashBackground.png"
- xlink:href="splashBackground.png"
- x="79"
- y="172.36218"
- inkscape:export-filename="/home/alver/jabref_beta/src/images/splash.png"
- inkscape:export-xdpi="75"
- inkscape:export-ydpi="75" />
- <flowRoot
- inkscape:export-ydpi="75.000000"
- inkscape:export-xdpi="75.000000"
- inkscape:export-filename="/home/alver/jabref_beta/src/images/splash.png"
- style="opacity:1.0000000;fill:#635578;fill-opacity:1.0000000;stroke:#b5b5c7;stroke-width:0.48137558;stroke-linejoin:bevel;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
- transform="matrix(1.875133,0.000000,0.000000,2.542210,-129.6969,-372.8897)"
- id="flowRoot2189"
- xml:space="preserve">
- <flowRegion
- id="flowRegion2191">
- <rect
- style="fill:#635578;fill-opacity:1.0000000;stroke:#b5b5c7;stroke-opacity:1.0000000;stroke-width:0.48137557;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-linejoin:bevel"
- y="199.10532"
- x="128.49385"
- height="127.49445"
- width="283.51782"
- id="rect2193" />
- </flowRegion>
- <flowPara
- style="font-size:90.000000px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125.00000%;writing-mode:lr-tb;text-anchor:start;fill:#635578;fill-opacity:1.0000000;stroke:#b5b5c7;stroke-width:0.48137558;stroke-linejoin:bevel;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;font-family:AR PL KaitiM GB"
- id="flowPara2201">JabRef</flowPara>
- </flowRoot> <flowRoot
- inkscape:export-ydpi="75.000000"
- inkscape:export-xdpi="75.000000"
- inkscape:export-filename="/home/alver/jabref_beta/src/images/splash.png"
- transform="matrix(0.972246,0,0,1.325301,6.054966,-126.1181)"
- style="font-size:12px;font-style:oblique;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#797580;fill-opacity:1;font-family:Bitstream Vera Sans"
- id="flowRoot3076"
- xml:space="preserve"><flowRegion
- id="flowRegion3078">
- <rect
- style="font-size:12px;font-style:oblique;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#797580;fill-opacity:1;font-family:Bitstream Vera Sans"
- y="514.56494"
- x="115.50008"
- height="78.684433"
- width="506.03476"
- id="rect3080" />
- </flowRegion><flowPara
- id="flowPara1339">This program is distributed under the terms of the General Public License.</flowPara><flowPara
- id="flowPara1341">Copyright (2003-2008) Morten O. Alver, Nizar Batada and all contributors.</flowPara></flowRoot> <text
- inkscape:export-ydpi="75.000000"
- inkscape:export-xdpi="75.000000"
- inkscape:export-filename="/home/alver/jabref_beta/src/images/splash.png"
- transform="scale(0.853347,1.171856)"
- sodipodi:linespacing="100%"
- id="text2179"
- y="450.75409"
- x="187.49605"
- style="font-size:43.99980927px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#805b41;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:URW Palladio L"
- xml:space="preserve"><tspan
- y="450.75409"
- x="187.49605"
- id="tspan2181"
- sodipodi:role="line">JabRef reference manager</tspan></text>
- <g
- id="g2867"
- transform="matrix(1.14435,0,0,1.103688,-34.88143,-26.75429)"
- style="fill:#3d3d5f;fill-opacity:1;stroke:url(#radialGradient2889);stroke-width:1.99301183;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:export-filename="/home/alver/jabref_beta/src/images/splash.png"
- inkscape:export-xdpi="75"
- inkscape:export-ydpi="75">
- <path
- inkscape:export-ydpi="57.68"
- inkscape:export-xdpi="57.68"
- inkscape:export-filename="/home/alver/Documents/jabrefIkon.png"
- sodipodi:nodetypes="cccscssc"
- id="path3874"
- d="M 157.96931,200.83693 C 195.68133,200.83693 226.84892,201.74266 226.84892,201.74266 C 226.84892,201.74266 264.67261,230.02095 245.09466,392.86816 C 239.45611,424.41127 211.69305,452.41514 177.77033,452.41514 C 143.84738,452.41514 124.35978,432.41027 124.35978,409.07782 C 159.37053,424.87768 185.33022,416.88114 194.38104,413.14131 C 198.72239,411.3483 214.85378,403.80956 214.58004,365.73926 C 213.94457,277.38853 222.57808,258.1971 157.96931,200.83693 z "
- style="fill:#3d3d5f;fill-opacity:1;fill-rule:evenodd;stroke:url(#radialGradient2796);stroke-width:1.99301183;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- inkscape:export-ydpi="57.68"
- inkscape:export-xdpi="57.68"
- inkscape:export-filename="/home/alver/Documents/jabrefIkon.png"
- sodipodi:nodetypes="ccccsc"
- id="path3876"
- d="M 255.00983,201.1495 C 346.39949,205.65848 415.05774,279.60734 324.95506,328.62763 C 299.6693,344.58746 362.3433,423.95718 386.64022,459.88743 C 324.57976,439.24633 270.32186,376.11089 274.24748,333.19936 C 276.87135,302.14849 327.63081,304.24915 329.72814,285.1414 C 331.82536,266.03489 296.3799,268.06417 255.00983,201.1495 z "
- style="fill:#3d3d5f;fill-opacity:1;fill-rule:evenodd;stroke:url(#radialGradient2798);stroke-width:1.99301183;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
- <text
- xml:space="preserve"
- style="font-size:57.1212616px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#727888;stroke-width:1.80000031;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;font-family:Nimbus Sans L"
- x="462.20135"
- y="426.2529"
- id="text2911"
- sodipodi:linespacing="100%"
- transform="scale(0.917932,1.089405)"
- inkscape:export-filename="/home/alver/jabref_beta/src/images/splash.png"
- inkscape:export-xdpi="75"
- inkscape:export-ydpi="75"><tspan
- sodipodi:role="line"
- id="tspan2913"
- x="462.20135"
- y="426.2529"
- style="font-size:119.00263214px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#727888;stroke-width:1.80000031;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;font-family:Bitstream Vera Sans">2.4</tspan></text>
- </g>
-</svg>
diff --git a/src/images/splash-2.5.svg b/src/images/splash-2.5.svg
index f571b08..55e8e0e 100644
--- a/src/images/splash-2.5.svg
+++ b/src/images/splash-2.5.svg
@@ -135,8 +135,8 @@
</defs>
<sodipodi:namedview
inkscape:window-y="25"
- inkscape:window-x="50"
- inkscape:window-height="768"
+ inkscape:window-x="0"
+ inkscape:window-height="949"
inkscape:window-width="1280"
inkscape:current-layer="layer1"
inkscape:document-units="px"
@@ -225,7 +225,7 @@
id="rect3080" />
</flowRegion><flowPara
id="flowPara1339">This program is distributed under the terms of the General Public License.</flowPara><flowPara
- id="flowPara1341">Copyright (2003-2009) Morten O. Alver, Nizar Batada and all contributors.</flowPara></flowRoot> <text
+ id="flowPara1341">Copyright (2003-2008) Morten O. Alver, Nizar Batada and all contributors.</flowPara></flowRoot> <text
inkscape:export-ydpi="75.000000"
inkscape:export-xdpi="75.000000"
inkscape:export-filename="/home/alver/jabref_beta/src/images/splash.png"
diff --git a/src/images/splashBackground.png b/src/images/splashBackground.png
deleted file mode 100644
index d5a048e..0000000
Binary files a/src/images/splashBackground.png and /dev/null differ
diff --git a/src/images/strings.png b/src/images/strings.png
deleted file mode 100644
index 649899f..0000000
Binary files a/src/images/strings.png and /dev/null differ
diff --git a/src/images/unmark.png b/src/images/unmark.png
deleted file mode 100644
index 92ac338..0000000
Binary files a/src/images/unmark.png and /dev/null differ
diff --git a/src/images/user-home.png b/src/images/user-home.png
deleted file mode 100644
index a3c4765..0000000
Binary files a/src/images/user-home.png and /dev/null differ
diff --git a/src/images/view-refresh.png b/src/images/view-refresh.png
deleted file mode 100644
index 952b5f7..0000000
Binary files a/src/images/view-refresh.png and /dev/null differ
diff --git a/src/images/viewsource.gif b/src/images/viewsource.gif
deleted file mode 100644
index 3ef9a2e..0000000
Binary files a/src/images/viewsource.gif and /dev/null differ
diff --git a/src/images/winedt.png b/src/images/winedt.png
deleted file mode 100644
index cded1a7..0000000
Binary files a/src/images/winedt.png and /dev/null differ
diff --git a/src/images/wizard.png b/src/images/wizard.png
deleted file mode 100644
index b5d81d3..0000000
Binary files a/src/images/wizard.png and /dev/null differ
diff --git a/src/images/wrongItem.png b/src/images/wrongItem.png
deleted file mode 100644
index 8b2f1eb..0000000
Binary files a/src/images/wrongItem.png and /dev/null differ
diff --git a/src/images/wwwciteseer.png b/src/images/wwwciteseer.png
deleted file mode 100644
index 1885445..0000000
Binary files a/src/images/wwwciteseer.png and /dev/null differ
diff --git a/src/java/net/sf/jabref/AdvancedTab.java b/src/java/net/sf/jabref/AdvancedTab.java
index 6cfb2c1..2c30eea 100644
--- a/src/java/net/sf/jabref/AdvancedTab.java
+++ b/src/java/net/sf/jabref/AdvancedTab.java
@@ -21,7 +21,7 @@ public class AdvancedTab extends JPanel implements PrefsTab {
JPanel pan = new JPanel(),
lnf = new JPanel();
JLabel lab;
- JCheckBox useDefault, useRemoteServer, useNativeFileDialogOnMac, useIEEEAbrv;
+ JCheckBox useDefault, useRemoteServer, useNativeFileDialogOnMac, filechooserDisableRename, useIEEEAbrv;
JTextField className, remoteServerPort;
JButton def1 = new JButton(Globals.lang("Default")),
def2 = new JButton(Globals.lang("Default"));
@@ -40,6 +40,7 @@ public class AdvancedTab extends JPanel implements PrefsTab {
useDefault = new JCheckBox(Globals.lang("Use other look and feel"));
useRemoteServer = new JCheckBox(Globals.lang("Listen for remote operation on port")+":");
useNativeFileDialogOnMac = new JCheckBox(Globals.lang("Use native file dialog"));
+ filechooserDisableRename = new JCheckBox(Globals.lang("Disable file renaming in non-native file dialog"));
useIEEEAbrv = new JCheckBox(Globals.lang("Use IEEE LaTeX abbreviations"));
remoteServerPort = new JTextField();
className = new JTextField(50);
@@ -102,10 +103,13 @@ public class AdvancedTab extends JPanel implements PrefsTab {
//if (Globals.ON_MAC) {
builder.nextLine();
- builder.appendSeparator(Globals.lang("Native file dialog"));
+ builder.appendSeparator(Globals.lang("File dialog"));
builder.nextLine();
builder.append(new JPanel());
builder.append(useNativeFileDialogOnMac);
+ builder.nextLine();
+ builder.append(new JPanel());
+ builder.append(filechooserDisableRename);
//}
// IEEE
builder.nextLine();
@@ -131,6 +135,7 @@ public class AdvancedTab extends JPanel implements PrefsTab {
oldPort = _prefs.getInt("remoteServerPort");
remoteServerPort.setText(String.valueOf(oldPort));
useNativeFileDialogOnMac.setSelected(Globals.prefs.getBoolean("useNativeFileDialogOnMac"));
+ filechooserDisableRename.setSelected(Globals.prefs.getBoolean("filechooserDisableRename"));
useIEEEAbrv.setSelected(Globals.prefs.getBoolean("useIEEEAbrv"));
}
@@ -138,6 +143,8 @@ public class AdvancedTab extends JPanel implements PrefsTab {
_prefs.putBoolean("useDefaultLookAndFeel", !useDefault.isSelected());
_prefs.put("lookAndFeel", className.getText());
_prefs.putBoolean("useNativeFileDialogOnMac", useNativeFileDialogOnMac.isSelected());
+ _prefs.putBoolean("filechooserDisableRename", filechooserDisableRename.isSelected());
+ UIManager.put("FileChooser.readOnly", filechooserDisableRename.isSelected());
_prefs.putBoolean("useIEEEAbrv", useIEEEAbrv.isSelected());
if (useIEEEAbrv.isSelected())
Globals.journalAbbrev = new JournalAbbreviations("/resource/IEEEJournalList.txt");
diff --git a/src/java/net/sf/jabref/AuthorList.java b/src/java/net/sf/jabref/AuthorList.java
index d0465ed..4d7cdd5 100644
--- a/src/java/net/sf/jabref/AuthorList.java
+++ b/src/java/net/sf/jabref/AuthorList.java
@@ -1,5 +1,7 @@
package net.sf.jabref;
+import net.sf.jabref.export.layout.format.CreateDocBookAuthors;
+
import java.util.Vector;
import java.util.WeakHashMap;
@@ -380,9 +382,11 @@ public class AuthorList {
if (tokens.size() == 0)
return null; // no author information
+
// the following negatives indicate absence of the corresponding part
int first_part_start = -1, von_part_start = -1, last_part_start = -1, jr_part_start = -1;
int first_part_end = 0, von_part_end = 0, last_part_end = 0, jr_part_end = 0;
+ boolean jrAsFirstname = false;
if (comma_first < 0) { // no commas
if (von_start < 0) { // no 'von part'
last_part_end = tokens.size();
@@ -414,8 +418,11 @@ public class AuthorList {
// 'junior part'
first_part_end = tokens.size();
if (comma_second < 0) { // one comma
- if (comma_first < first_part_end)
- first_part_start = comma_first;
+ if (comma_first < first_part_end) {
+ first_part_start = comma_first;
+ //if (((String)tokens.get(first_part_start)).toLowerCase().startsWith("jr."))
+ // jrAsFirstname = true;
+ }
} else { // two or more commas
if (comma_second < first_part_end)
first_part_start = comma_second;
@@ -449,6 +456,11 @@ public class AuthorList {
von_part_start = -1;
von_part_end = -1;
}
+ if (jrAsFirstname) {
+ // This variable, if set, indicates that the first name starts with "jr.", which
+ // is an indication that we may have a name formatted as "Firstname Lastname, Jr."
+ // which is an acceptable format for BibTeX.
+ }
// Third step: do actual splitting, construct Author object
return new Author((first_part_start < 0 ? null : concatTokens(first_part_start,
@@ -1138,4 +1150,20 @@ public class AuthorList {
return res.toString();
}
}// end Author
+
+
+ public static void main(String[] args) {
+ //String s = "Ford, Jr., Henry and Guy L. {Steele Jr.} and Olaf Nilsen, Jr.";
+ String s = "Olaf von Nilsen, Jr.";
+ AuthorList al = AuthorList.getAuthorList(s);
+ for (int i=0; i<al.size(); i++) {
+ Author a = al.getAuthor(i);
+ System.out.println((i+1)+": first = '"+a.getFirst()+"'");
+ System.out.println((i+1)+": last = '"+a.getLast()+"'");
+ System.out.println((i+1)+": jr = '"+a.getJr()+"'");
+ System.out.println((i+1)+": von = '"+a.getVon()+"'");
+ }
+
+ System.out.println((new CreateDocBookAuthors()).format(s));
+ }
}// end AuthorList
diff --git a/src/java/net/sf/jabref/BasePanel.java b/src/java/net/sf/jabref/BasePanel.java
index 054b44e..30c4a1e 100644
--- a/src/java/net/sf/jabref/BasePanel.java
+++ b/src/java/net/sf/jabref/BasePanel.java
@@ -28,22 +28,72 @@ http://www.gnu.org/copyleft/gpl.ja.html
package net.sf.jabref;
-import ca.odell.glazedlists.FilterList;
-import ca.odell.glazedlists.event.ListEvent;
-import ca.odell.glazedlists.event.ListEventListener;
-import ca.odell.glazedlists.matchers.Matcher;
-import com.jgoodies.forms.builder.DefaultFormBuilder;
-import com.jgoodies.forms.layout.FormLayout;
-import com.jgoodies.uif_lite.component.UIFSplitPane;
+import java.awt.BorderLayout;
+import java.awt.Component;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.Toolkit;
+import java.awt.datatransfer.Clipboard;
+import java.awt.datatransfer.ClipboardOwner;
+import java.awt.datatransfer.DataFlavor;
+import java.awt.datatransfer.StringSelection;
+import java.awt.datatransfer.Transferable;
+import java.awt.datatransfer.UnsupportedFlavorException;
+import java.awt.event.ActionEvent;
+import java.awt.event.KeyAdapter;
+import java.awt.event.KeyEvent;
+import java.io.File;
+import java.io.IOException;
+import java.nio.charset.UnsupportedCharsetException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.Vector;
+
+import javax.swing.AbstractAction;
+import javax.swing.JComponent;
+import javax.swing.JFileChooser;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JSplitPane;
+import javax.swing.JTextArea;
+import javax.swing.SwingUtilities;
+import javax.swing.tree.TreePath;
+import javax.swing.undo.CannotRedoException;
+import javax.swing.undo.CannotUndoException;
+
+import net.sf.jabref.autocompleter.AbstractAutoCompleter;
+import net.sf.jabref.autocompleter.AutoCompleterFactory;
import net.sf.jabref.collab.ChangeScanner;
import net.sf.jabref.collab.FileUpdateListener;
import net.sf.jabref.collab.FileUpdatePanel;
-import net.sf.jabref.export.*;
-import net.sf.jabref.external.*;
+import net.sf.jabref.export.ExportToClipboardAction;
+import net.sf.jabref.export.FileActions;
+import net.sf.jabref.export.SaveDatabaseAction;
+import net.sf.jabref.export.SaveException;
+import net.sf.jabref.export.SaveSession;
+import net.sf.jabref.external.AutoSetExternalFileForEntries;
+import net.sf.jabref.external.ExternalFileMenuItem;
+import net.sf.jabref.external.ExternalFileType;
+import net.sf.jabref.external.FindFullTextAction;
+import net.sf.jabref.external.RegExpFileSearch;
+import net.sf.jabref.external.SynchronizeFileField;
+import net.sf.jabref.external.UpgradeExternalLinks;
+import net.sf.jabref.external.WriteXMPAction;
import net.sf.jabref.groups.GroupSelector;
import net.sf.jabref.groups.GroupTreeNode;
-import net.sf.jabref.gui.*;
import net.sf.jabref.gui.FileDialogs;
+import net.sf.jabref.gui.FileListEntry;
+import net.sf.jabref.gui.FileListTableModel;
+import net.sf.jabref.gui.GlazedEntrySorter;
+import net.sf.jabref.gui.MainTable;
+import net.sf.jabref.gui.MainTableFormat;
+import net.sf.jabref.gui.MainTableSelectionListener;
import net.sf.jabref.imports.AppendDatabaseAction;
import net.sf.jabref.imports.BibtexParser;
import net.sf.jabref.imports.SPIRESFetcher;
@@ -52,24 +102,25 @@ import net.sf.jabref.journals.UnabbreviateAction;
import net.sf.jabref.labelPattern.LabelPatternUtil;
import net.sf.jabref.search.NoSearchMatcher;
import net.sf.jabref.search.SearchMatcher;
-import net.sf.jabref.sql.*;
-import net.sf.jabref.undo.*;
+import net.sf.jabref.sql.DBConnectDialog;
+import net.sf.jabref.sql.DBStrings;
+import net.sf.jabref.sql.DbConnectAction;
+import net.sf.jabref.sql.SQLutil;
+import net.sf.jabref.undo.CountingUndoManager;
+import net.sf.jabref.undo.NamedCompound;
+import net.sf.jabref.undo.UndoableChangeType;
+import net.sf.jabref.undo.UndoableInsertEntry;
+import net.sf.jabref.undo.UndoableKeyChange;
+import net.sf.jabref.undo.UndoableRemoveEntry;
import net.sf.jabref.wizard.text.gui.TextInputDialog;
+import ca.odell.glazedlists.FilterList;
+import ca.odell.glazedlists.event.ListEvent;
+import ca.odell.glazedlists.event.ListEventListener;
+import ca.odell.glazedlists.matchers.Matcher;
-import javax.swing.*;
-import javax.swing.tree.TreePath;
-import javax.swing.undo.CannotRedoException;
-import javax.swing.undo.CannotUndoException;
-import java.awt.*;
-import java.awt.datatransfer.*;
-import java.awt.event.ActionEvent;
-import java.awt.event.KeyAdapter;
-import java.awt.event.KeyEvent;
-import java.io.File;
-import java.io.IOException;
-import java.nio.charset.UnsupportedCharsetException;
-import java.util.*;
-import java.util.List;
+import com.jgoodies.forms.builder.DefaultFormBuilder;
+import com.jgoodies.forms.layout.FormLayout;
+import com.jgoodies.uif_lite.component.UIFSplitPane;
public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListener {
@@ -101,7 +152,7 @@ public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListe
GridBagLayout gbl = new GridBagLayout();
GridBagConstraints con = new GridBagConstraints();
- HashMap<String, AutoCompleter> autoCompleters = new HashMap<String, AutoCompleter>();
+ HashMap<String, AbstractAutoCompleter> autoCompleters = new HashMap<String, AbstractAutoCompleter>();
// Hashtable that holds as keys the names of the fields where
// autocomplete is active, and references to the autocompleter objects.
@@ -1538,7 +1589,6 @@ public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListe
undoManager.addEdit(new UndoableInsertEntry(database, be, BasePanel.this));
output(Globals.lang("Added new")+" '"+type.getName().toLowerCase()+"' "
+Globals.lang("entry")+".");
- mainTable.findEntry(be);
// We are going to select the new entry. Before that, make sure that we are in
// show-entry mode. If we aren't already in that mode, enter the WILL_SHOW_EDITOR
@@ -1548,7 +1598,14 @@ public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListe
mode = WILL_SHOW_EDITOR;
}
- highlightEntry(be); // Selects the entry. The selection listener will open the editor.
+ int row = mainTable.findEntry(be);
+ if (row >= 0)
+ highlightEntry(be); // Selects the entry. The selection listener will open the editor.
+ else {
+ // The entry is not visible in the table, perhaps due to a filtering search
+ // or group selection. Show the entry editor anyway:
+ showEntry(be);
+ }
markBaseChanged(); // The database just changed.
new FocusRequester(getEntryEditor(be));
@@ -1771,11 +1828,11 @@ public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListe
repaint();
}
- public HashMap<String, AutoCompleter> getAutoCompleters() {
+ public HashMap<String, AbstractAutoCompleter> getAutoCompleters() {
return autoCompleters;
}
- public AutoCompleter getAutoCompleter(String fieldName) {
+ public AbstractAutoCompleter getAutoCompleter(String fieldName) {
return autoCompleters.get(fieldName);
}
@@ -1784,7 +1841,8 @@ public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListe
String[] completeFields = Globals.prefs.getStringArray("autoCompleteFields");
for (int i = 0; i < completeFields.length; i++) {
String field = completeFields[i];
- autoCompleters.put(field, new AutoCompleter(field));
+ AbstractAutoCompleter autoCompleter = AutoCompleterFactory.getFor(field);
+ autoCompleters.put(field, autoCompleter );
}
for (BibtexEntry entry : database.getEntries()){
Util.updateCompletersForEntry(autoCompleters, entry);
@@ -1800,13 +1858,13 @@ public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListe
*/
public void addContentSelectorValuesToAutoCompleters() {
for (String field : autoCompleters.keySet()) {
- AutoCompleter ac = autoCompleters.get(field);
+ AbstractAutoCompleter ac = autoCompleters.get(field);
if (metaData.getData(Globals.SELECTOR_META_PREFIX + field) != null) {
Vector<String> items = metaData.getData(Globals.SELECTOR_META_PREFIX + field);
if (items != null) {
Iterator<String> i = items.iterator();
while (i.hasNext())
- ac.addWord(i.next());
+ ac.addWordToIndex(i.next());
}
}
}
@@ -1818,10 +1876,10 @@ public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListe
*/
public void addJournalListToAutoCompleter() {
if (autoCompleters.containsKey("journal")) {
- AutoCompleter ac = autoCompleters.get("journal");
+ AbstractAutoCompleter ac = autoCompleters.get("journal");
Set<String> journals = Globals.journalAbbrev.getJournals().keySet();
for (String journal : journals)
- ac.addWord(journal);
+ ac.addWordToIndex(journal);
}
@@ -2414,6 +2472,9 @@ public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListe
selectionListener.setPreviewActive(enabled);
}
+ public void setSelectionListenerEnabled(boolean enabled) {
+ selectionListener.setEnabled(enabled);
+ }
class UndoAction extends BaseAction {
public void action() {
diff --git a/src/java/net/sf/jabref/BibtexEntry.java b/src/java/net/sf/jabref/BibtexEntry.java
index f2e5193..ee79f8d 100644
--- a/src/java/net/sf/jabref/BibtexEntry.java
+++ b/src/java/net/sf/jabref/BibtexEntry.java
@@ -106,7 +106,7 @@ public class BibtexEntry
/**
* Returns a string describing the required fields for this entry.
*/
- public String describeRequiredFields()
+ public String describeRequiredFields()
{
return _type.describeRequiredFields();
}
diff --git a/src/java/net/sf/jabref/EntryEditor.java b/src/java/net/sf/jabref/EntryEditor.java
index 8de6827..6b4788e 100644
--- a/src/java/net/sf/jabref/EntryEditor.java
+++ b/src/java/net/sf/jabref/EntryEditor.java
@@ -24,11 +24,25 @@
*/
package net.sf.jabref;
-import java.awt.*;
+import java.awt.AWTKeyStroke;
+import java.awt.BorderLayout;
+import java.awt.Component;
+import java.awt.Font;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.Insets;
+import java.awt.KeyboardFocusManager;
+import java.awt.RenderingHints;
+import java.awt.Toolkit;
import java.awt.datatransfer.StringSelection;
import java.awt.dnd.DnDConstants;
import java.awt.dnd.DropTarget;
-import java.awt.event.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.FocusAdapter;
+import java.awt.event.FocusEvent;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
import java.beans.PropertyChangeEvent;
import java.beans.VetoableChangeListener;
import java.io.File;
@@ -40,22 +54,45 @@ import java.util.Iterator;
import java.util.List;
import java.util.logging.Logger;
-import javax.swing.*;
+import javax.swing.AbstractAction;
+import javax.swing.ActionMap;
+import javax.swing.InputMap;
+import javax.swing.JButton;
+import javax.swing.JComponent;
+import javax.swing.JDialog;
+import javax.swing.JFileChooser;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JPopupMenu;
+import javax.swing.JScrollPane;
+import javax.swing.JTabbedPane;
+import javax.swing.JTextArea;
+import javax.swing.JTextField;
+import javax.swing.JToolBar;
+import javax.swing.KeyStroke;
+import javax.swing.SwingUtilities;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.text.JTextComponent;
+import net.sf.jabref.autocompleter.AbstractAutoCompleter;
import net.sf.jabref.export.LatexFieldFormatter;
import net.sf.jabref.external.ExternalFilePanel;
import net.sf.jabref.external.WriteXMPEntryEditorAction;
-import net.sf.jabref.journals.JournalAbbreviations;
-import net.sf.jabref.gui.*;
+import net.sf.jabref.gui.FileDialogs;
+import net.sf.jabref.gui.FileListEditor;
+import net.sf.jabref.gui.FileListTableModel;
+import net.sf.jabref.gui.VerticalLabelUI;
import net.sf.jabref.gui.date.DatePickerButton;
import net.sf.jabref.imports.BibtexParser;
+import net.sf.jabref.journals.JournalAbbreviations;
import net.sf.jabref.labelPattern.LabelPatternUtil;
-import net.sf.jabref.undo.*;
-import com.jgoodies.looks.Options;
-import com.jgoodies.looks.HeaderStyle;
+import net.sf.jabref.undo.NamedCompound;
+import net.sf.jabref.undo.UndoableChangeType;
+import net.sf.jabref.undo.UndoableFieldChange;
+import net.sf.jabref.undo.UndoableKeyChange;
+import net.sf.jabref.undo.UndoableRemoveEntry;
/**
* GUI component that allows editing of the fields of a BibtexEntry (i.e. the
@@ -136,8 +173,8 @@ public class EntryEditor extends JPanel implements VetoableChangeListener {
Logger logger = Logger.getLogger(EntryEditor.class.getName());
- boolean updateSource = true; // This can be set to false to stop the
- // source
+ boolean updateSource = true; // This can be set to false to stop the source
+ boolean movingToDifferentEntry = false; // Indicates that we are about to go to the next or previous entry
List<Object> tabs = new ArrayList<Object>();
@@ -517,8 +554,7 @@ public class EntryEditor extends JPanel implements VetoableChangeListener {
source.setText(srcString);
lastSourceStringAccepted = srcString;
} catch (IOException ex) {
- System.out.println("Her");
- source.setText(ex.getMessage() + "\n\n" +
+ source.setText(ex.getMessage() + "\n\n" +
Globals.lang("Correct the entry, and "
+ "reopen editor to display/edit source."));
source.setEditable(false);
@@ -622,6 +658,7 @@ public class EntryEditor extends JPanel implements VetoableChangeListener {
* an <code>int</code> value
*/
private void scrollTo(int row) {
+ movingToDifferentEntry = true;
panel.mainTable.setRowSelectionInterval(row, row);
panel.mainTable.ensureVisible(row);
}
@@ -632,6 +669,8 @@ public class EntryEditor extends JPanel implements VetoableChangeListener {
public void storeCurrentEdit() {
Component comp = Globals.focusListener.getFocused();
if ((comp == source) || ((comp instanceof FieldEditor) && this.isAncestorOf(comp))) {
+ if (comp instanceof FieldEditor)
+ ((FieldEditor)comp).clearAutoCompleteSuggestion();
storeFieldAction.actionPerformed(new ActionEvent(comp, 0, ""));
}
}
@@ -813,6 +852,17 @@ public class EntryEditor extends JPanel implements VetoableChangeListener {
// panel.refreshTable();
panel.markBaseChanged();
+ SwingUtilities.invokeLater(new Runnable() {
+ public void run() {
+ final int row = panel.mainTable.findEntry(entry);
+ if (row >= 0) {
+ if (panel.mainTable.getSelectedRowCount() == 0)
+ panel.mainTable.setRowSelectionInterval(row, row);
+ panel.mainTable.ensureVisible(row);
+ }
+ }
+ });
+
return true;
} catch (Throwable ex) {
// ex.printStackTrace();
@@ -900,6 +950,10 @@ public class EntryEditor extends JPanel implements VetoableChangeListener {
}
+ public void setMovingToDifferentEntry() {
+ movingToDifferentEntry = true;
+ }
+
private class TypeLabel extends JLabel {
public TypeLabel(String type) {
super(type+" ");
@@ -1038,6 +1092,8 @@ public class EntryEditor extends JPanel implements VetoableChangeListener {
}
public void actionPerformed(ActionEvent e) {
+ boolean movingAway = movingToDifferentEntry;
+ movingToDifferentEntry = false;
if (e.getSource() instanceof FieldTextField) {
// Storage from bibtex key field.
@@ -1145,9 +1201,9 @@ public class EntryEditor extends JPanel implements VetoableChangeListener {
fe.setBackground(GUIGlobals.validFieldBackground);
// See if we need to update an AutoCompleter instance:
- AutoCompleter aComp = panel.getAutoCompleter(fe.getFieldName());
+ AbstractAutoCompleter aComp = panel.getAutoCompleter(fe.getFieldName());
if (aComp != null)
- aComp.addAll(toSet, entry);
+ aComp.addBibtexEntry(entry);
// Add an UndoableFieldChange to the baseframe's
// undoManager.
@@ -1175,6 +1231,22 @@ public class EntryEditor extends JPanel implements VetoableChangeListener {
if (accepted) {
}
}
+
+ // Make sure we scroll to the entry if it moved in the table.
+ // Should only be done if this editor is currently showing:
+ //System.out.println(getType().getName()+": movingAway="+movingAway+", isShowing="+isShowing());
+ if (!movingAway && isShowing()) {
+ SwingUtilities.invokeLater(new Runnable() {
+ public void run() {
+ final int row = panel.mainTable.findEntry(entry);
+ if (row >= 0) {
+ if (panel.mainTable.getSelectedRowCount() == 0)
+ panel.mainTable.setRowSelectionInterval(row, row);
+ panel.mainTable.ensureVisible(row);
+ }
+ }
+ });
+ }
}
}
@@ -1344,7 +1416,9 @@ public class EntryEditor extends JPanel implements VetoableChangeListener {
if (activeTab instanceof EntryEditorTab) {
// Normal panel.
EntryEditorTab fp = (EntryEditorTab) activeTab;
- updateField(fp.getActive());
+ FieldEditor fe = fp.getActive();
+ fe.clearAutoCompleteSuggestion();
+ updateField(fe);
} else
// Source panel.
updateField(activeTab);
diff --git a/src/java/net/sf/jabref/EntryEditorTab.java b/src/java/net/sf/jabref/EntryEditorTab.java
index 2028928..0a2bcd3 100644
--- a/src/java/net/sf/jabref/EntryEditorTab.java
+++ b/src/java/net/sf/jabref/EntryEditorTab.java
@@ -24,7 +24,11 @@
*/
package net.sf.jabref;
-import java.awt.*;
+import java.awt.AWTKeyStroke;
+import java.awt.BorderLayout;
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.KeyboardFocusManager;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.util.HashMap;
@@ -32,13 +36,17 @@ import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
-import javax.swing.*;
+import javax.swing.ActionMap;
+import javax.swing.InputMap;
+import javax.swing.JComponent;
+import javax.swing.JPanel;
+import javax.swing.KeyStroke;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.text.JTextComponent;
+import net.sf.jabref.autocompleter.AbstractAutoCompleter;
import net.sf.jabref.gui.AutoCompleteListener;
-import net.sf.jabref.gui.AutoCompleter;
import net.sf.jabref.gui.FileListEditor;
import com.jgoodies.forms.builder.DefaultFormBuilder;
@@ -48,7 +56,7 @@ import com.jgoodies.forms.layout.FormLayout;
* A single tab displayed in the EntryEditor holding several FieldEditors.
*
* @author $Author: mortenalver $
- * @version $Revision: 3072 $ ($Date: 2009-09-03 21:07:51 +0200 (Thu, 03 Sep 2009) $)
+ * @version $Revision: 3140 $ ($Date: 2009-11-26 20:09:21 +0100 (Thu, 26 Nov 2009) $)
*
*/
public class EntryEditorTab {
@@ -140,12 +148,13 @@ public class EntryEditorTab {
JComponent ex = parent.getExtra(fields[i], ta);
// Add autocompleter listener, if required for this field:
- AutoCompleter autoComp = bPanel.getAutoCompleter(fields[i]);
+ AbstractAutoCompleter autoComp = bPanel.getAutoCompleter(fields[i]);
AutoCompleteListener acl = null;
if (autoComp != null) {
acl = new AutoCompleteListener(autoComp);
}
setupJTextComponent(ta.getTextComponent(), acl);
+ ta.setAutoCompleteListener(acl);
// Store the editor for later reference:
editors.put(fields[i], ta);
@@ -173,7 +182,7 @@ public class EntryEditorTab {
.getEntry().getField(BibtexFields.KEY_FIELD), true);
//tf.addUndoableEditListener(bPanel.undoListener);
setupJTextComponent(tf, null);
-
+
editors.put("bibtexkey", tf);
/*
* If the key field is the only field, we should have only one
diff --git a/src/java/net/sf/jabref/FieldEditor.java b/src/java/net/sf/jabref/FieldEditor.java
index cf26d75..f98cb77 100644
--- a/src/java/net/sf/jabref/FieldEditor.java
+++ b/src/java/net/sf/jabref/FieldEditor.java
@@ -27,6 +27,8 @@
package net.sf.jabref;
+import net.sf.jabref.gui.AutoCompleteListener;
+
import java.awt.Color;
import java.awt.Container;
@@ -39,7 +41,7 @@ import javax.swing.event.UndoableEditListener;
* FieldEditors is a common interface between the FieldTextField and FieldTextArea.
*
* @author $Author: mortenalver $
- * @version $Revision: 2864 $ ($Date: 2008-11-25 21:22:56 +0100 (Tue, 25 Nov 2008) $)
+ * @version $Revision: 3140 $ ($Date: 2009-11-26 20:09:21 +0100 (Thu, 26 Nov 2009) $)
*
*/
public interface FieldEditor {
@@ -105,4 +107,8 @@ public interface FieldEditor {
public void redo();
public void addUndoableEditListener(UndoableEditListener listener);
+
+ public void setAutoCompleteListener(AutoCompleteListener listener);
+
+ public void clearAutoCompleteSuggestion();
}
diff --git a/src/java/net/sf/jabref/FieldTextArea.java b/src/java/net/sf/jabref/FieldTextArea.java
index 5b86bd7..d87c897 100644
--- a/src/java/net/sf/jabref/FieldTextArea.java
+++ b/src/java/net/sf/jabref/FieldTextArea.java
@@ -26,6 +26,8 @@
*/
package net.sf.jabref;
+import net.sf.jabref.gui.AutoCompleteListener;
+
import java.awt.*;
import java.util.regex.Pattern;
@@ -43,7 +45,7 @@ import javax.swing.undo.CannotUndoException;
* multi-line input.
*
* @author $Author: mortenalver $
- * @version $Revision: 2955 $ ($Date: 2009-04-21 18:47:52 +0200 (Tue, 21 Apr 2009) $)
+ * @version $Revision: 3140 $ ($Date: 2009-11-26 20:09:21 +0100 (Thu, 26 Nov 2009) $)
*
*/
public class FieldTextArea extends JTextArea implements FieldEditor {
@@ -60,6 +62,8 @@ public class FieldTextArea extends JTextArea implements FieldEditor {
final static Pattern indent = Pattern.compile("\\s+.*");
+ private AutoCompleteListener autoCompleteListener = null;
+
//protected UndoManager undo = new UndoManager();
public FieldTextArea(String fieldName_, String content) {
@@ -178,4 +182,15 @@ public class FieldTextArea extends JTextArea implements FieldEditor {
public void addUndoableEditListener(UndoableEditListener listener) {
getDocument().addUndoableEditListener(listener);
}
+
+ public void setAutoCompleteListener(AutoCompleteListener listener) {
+ autoCompleteListener = listener;
+ }
+
+ public void clearAutoCompleteSuggestion() {
+ if (autoCompleteListener != null) {
+ autoCompleteListener.clearCurrentSuggestion(this);
+ }
+ }
}
+
diff --git a/src/java/net/sf/jabref/FieldTextField.java b/src/java/net/sf/jabref/FieldTextField.java
index 2f77b64..d389fc1 100644
--- a/src/java/net/sf/jabref/FieldTextField.java
+++ b/src/java/net/sf/jabref/FieldTextField.java
@@ -26,6 +26,8 @@
*/
package net.sf.jabref;
+import net.sf.jabref.gui.AutoCompleteListener;
+
import java.awt.Color;
import javax.swing.JComponent;
@@ -41,6 +43,8 @@ public class FieldTextField extends JTextField implements FieldEditor {
protected String fieldName;
protected JLabel label;
+ private AutoCompleteListener autoCompleteListener = null;
+
//protected UndoManager undo = new UndoManager();
@@ -155,4 +159,13 @@ public class FieldTextField extends JTextField implements FieldEditor {
public void addUndoableEditListener(UndoableEditListener listener) {
getDocument().addUndoableEditListener(listener);
}
+
+ public void setAutoCompleteListener(AutoCompleteListener listener) {
+ autoCompleteListener = listener;
+ }
+
+ public void clearAutoCompleteSuggestion() {
+ if (autoCompleteListener != null)
+ autoCompleteListener.clearCurrentSuggestion(this);
+ }
}
diff --git a/src/java/net/sf/jabref/Globals.java b/src/java/net/sf/jabref/Globals.java
index d6625ff..a286521 100644
--- a/src/java/net/sf/jabref/Globals.java
+++ b/src/java/net/sf/jabref/Globals.java
@@ -112,6 +112,7 @@ public class Globals {
// String[]{});
new String[] { "ISO8859_1", "UTF8", "UTF-16", "ASCII", "Cp1250", "Cp1251", "Cp1252",
"Cp1253", "Cp1254", "Cp1257", "SJIS",
+ "KOI8_R", // Cyrillic
"EUC_JP", // Added Japanese encodings.
"Big5", "Big5_HKSCS", "GBK", "ISO8859_2", "ISO8859_3", "ISO8859_4", "ISO8859_5",
"ISO8859_6", "ISO8859_7", "ISO8859_8", "ISO8859_9", "ISO8859_13", "ISO8859_15" };
diff --git a/src/java/net/sf/jabref/JabRef.java b/src/java/net/sf/jabref/JabRef.java
index 125fd41..f6fba9f 100644
--- a/src/java/net/sf/jabref/JabRef.java
+++ b/src/java/net/sf/jabref/JabRef.java
@@ -894,18 +894,28 @@ public class JabRef {
try {
if ((data.length > 1) && !"*".equals(data[1])) {
System.out.println(Globals.lang("Importing") + ": " + data[0]);
- List<BibtexEntry> entries =
- Globals.importFormatReader.importFromFile(data[1],
- data[0].replaceAll("~", System.getProperty("user.home")));
+ List<BibtexEntry> entries;
+ if (Globals.ON_WIN) {
+ entries = Globals.importFormatReader.importFromFile(data[1], data[0]);
+ }
+ else {
+ entries = Globals.importFormatReader.importFromFile( data[1],
+ data[0].replaceAll("~", System.getProperty("user.home")) );
+ }
return new ParserResult(entries);
} else {
// * means "guess the format":
System.out.println(Globals.lang("Importing in unknown format")
+ ": " + data[0]);
-
- Pair<String, ParserResult> importResult =
- Globals.importFormatReader.importUnknownFormat(data[0]
- .replaceAll("~", System.getProperty("user.home")));
+
+ Pair<String, ParserResult> importResult;
+ if (Globals.ON_WIN) {
+ importResult = Globals.importFormatReader.importUnknownFormat(data[0]);
+ }
+ else {
+ importResult = Globals.importFormatReader.importUnknownFormat(
+ data[0].replaceAll("~", System.getProperty("user.home")) );
+ }
if (importResult != null){
System.out.println(Globals.lang("Format used") + ": "
diff --git a/src/java/net/sf/jabref/JabRefFrame.java b/src/java/net/sf/jabref/JabRefFrame.java
index 59304e7..c5e3b80 100644
--- a/src/java/net/sf/jabref/JabRefFrame.java
+++ b/src/java/net/sf/jabref/JabRefFrame.java
@@ -393,6 +393,9 @@ public class JabRefFrame extends JFrame implements OutputPrinter {
private void init() {
macOSXRegistration();
+
+ UIManager.put("FileChooser.readOnly", Globals.prefs.getBoolean("filechooserDisableRename"));
+
MyGlassPane glassPane = new MyGlassPane();
setGlassPane(glassPane);
// glassPane.setVisible(true);
@@ -413,7 +416,12 @@ public class JabRefFrame extends JFrame implements OutputPrinter {
initLayout();
initActions();
-
+
+ // Fixes occasional Window malbehaviour in Linux
+ setBounds(0, 0, (int) Toolkit.getDefaultToolkit().getScreenSize().getWidth(),
+ (int) Toolkit.getDefaultToolkit().getScreenSize().getHeight() );
+ setExtendedState(JFrame.MAXIMIZED_BOTH);
+
if (Globals.prefs.getBoolean("rememberWindowLocation")) {
int sizeX = prefs.getInt("sizeX");
@@ -662,7 +670,10 @@ public JabRefPreferences prefs() {
prefs.putInt("posY", JabRefFrame.this.getLocation().y);
prefs.putInt("sizeX", JabRefFrame.this.getSize().width);
prefs.putInt("sizeY", JabRefFrame.this.getSize().height);
- prefs.putBoolean("windowMaximised", (getExtendedState()&MAXIMIZED_BOTH)>0);
+// prefs.putBoolean("windowMaximised", (getExtendedState()&MAXIMIZED_BOTH)>0);
+ prefs.putBoolean("windowMaximised", (getExtendedState() == Frame.MAXIMIZED_BOTH));
+ prefs.putBoolean("rememberWindowLocation", !Globals.prefs.getBoolean("windowMaximised"));
+
prefs.putBoolean("searchPanelVisible", sidePaneManager.isComponentVisible("search"));
// Store divider location for side pane:
int width = contentPane.getDividerLocation();
diff --git a/src/java/net/sf/jabref/JabRefPreferences.java b/src/java/net/sf/jabref/JabRefPreferences.java
index fe02fde..79550bf 100644
--- a/src/java/net/sf/jabref/JabRefPreferences.java
+++ b/src/java/net/sf/jabref/JabRefPreferences.java
@@ -135,6 +135,8 @@ public class JabRefPreferences {
defaults.put("pdfviewer", "/Applications/Preview.app");
defaults.put("psviewer", "/Applications/Preview.app");
defaults.put("htmlviewer", "/Applications/Safari.app");
+ defaults.put("fontFamily", "SansSerif");
+
} else if (Globals.osName.toLowerCase().startsWith("windows")) {
defaults.put("pdfviewer", "cmd.exe /c start /b");
defaults.put("psviewer", "cmd.exe /c start /b");
@@ -142,11 +144,15 @@ public class JabRefPreferences {
defaults.put("lookAndFeel", "com.jgoodies.looks.windows.WindowsLookAndFeel");
defaults.put("winEdtPath", "C:\\Program Files\\WinEdt Team\\WinEdt\\WinEdt.exe");
defaults.put("latexEditorPath", "C:\\Program Files\\LEd\\LEd.exe");
+ defaults.put("fontFamily", "Arial");
+
} else {
defaults.put("pdfviewer", "evince");
defaults.put("psviewer", "gv");
defaults.put("htmlviewer", "firefox");
defaults.put("lookAndFeel", "com.jgoodies.plaf.plastic.Plastic3DLookAndFeel");
+ defaults.put("fontFamily", "SansSerif");
+
}
defaults.put("useDefaultLookAndFeel", Boolean.TRUE);
defaults.put("lyxpipe", System.getProperty("user.home")+File.separator+".lyx/lyxpipe");
@@ -261,7 +267,6 @@ public class JabRefPreferences {
//defaults.put("recentFiles", "/home/alver/Documents/bibk_dok/hovedbase.bib");
defaults.put("historySize", new Integer(8));
- defaults.put("fontFamily", "SansSerif");
defaults.put("fontStyle", new Integer(java.awt.Font.PLAIN));
defaults.put("fontSize", new Integer(12));
defaults.put("overrideDefaultFonts", Boolean.FALSE);
@@ -307,7 +312,8 @@ public class JabRefPreferences {
+"<b><i>\\bibtextype</i><a name=\"\\bibtexkey\">\\begin{bibtexkey} (\\bibtexkey)</a>"
+"\\end{bibtexkey}</b><br>__NEWLINE__"
+"\\begin{author} \\format[HTMLChars,AuthorAbbreviator,AuthorAndsReplacer]{\\author}<BR>\\end{author}__NEWLINE__"
- +"\\begin{editor} \\format[HTMLChars,AuthorAbbreviator,AuthorAndsReplacer]{\\editor} <i>(ed.)</i><BR>\\end{editor}__NEWLINE__"
+ +"\\begin{editor} \\format[HTMLChars,AuthorAbbreviator,AuthorAndsReplacer]{\\editor} "
+ +"<i>(\\format[IfPlural(Eds.,Ed.)]{\\editor})</i><BR>\\end{editor}__NEWLINE__"
+"\\begin{title} \\format[HTMLChars]{\\title} \\end{title}<BR>__NEWLINE__"
+"\\begin{chapter} \\format[HTMLChars]{\\chapter}<BR>\\end{chapter}__NEWLINE__"
+"\\begin{journal} <em>\\format[HTMLChars]{\\journal}, </em>\\end{journal}__NEWLINE__"
@@ -317,14 +323,16 @@ public class JabRefPreferences {
+"\\begin{institution} <em>\\format[HTMLChars]{\\institution}, </em>\\end{institution}__NEWLINE__"
+"\\begin{publisher} <em>\\format[HTMLChars]{\\publisher}, </em>\\end{publisher}__NEWLINE__"
+"\\begin{year}<b>\\year</b>\\end{year}\\begin{volume}<i>, \\volume</i>\\end{volume}"
- +"\\begin{pages}, \\format[FormatPagesForHTML]{\\pages} \\end{pages}"
+ +"\\begin{pages}, \\format[FormatPagesForHTML]{\\pages} \\end{pages}__NEWLINE__"
+ +"\\begin{abstract}<BR><BR><b>Abstract: </b> \\format[HTMLChars]{\\abstract} \\end{abstract}__NEWLINE__"
+ +"\\begin{review}<BR><BR><b>Review: </b> \\format[HTMLChars]{\\review} \\end{review}"
+"</dd>__NEWLINE__<p></p></font>");
-
defaults.put("preview1", "<font face=\"arial\">"
+"<b><i>\\bibtextype</i><a name=\"\\bibtexkey\">\\begin{bibtexkey} (\\bibtexkey)</a>"
+"\\end{bibtexkey}</b><br>__NEWLINE__"
+"\\begin{author} \\format[HTMLChars,AuthorAbbreviator,AuthorAndsReplacer]{\\author}<BR>\\end{author}__NEWLINE__"
- +"\\begin{editor} \\format[HTMLChars,AuthorAbbreviator,AuthorAndsReplacer]{\\editor} <i>(ed.)</i><BR>\\end{editor}__NEWLINE__"
+ +"\\begin{editor} \\format[HTMLChars,AuthorAbbreviator,AuthorAndsReplacer]{\\editor} "
+ +"<i>(\\format[IfPlural(Eds.,Ed.)]{\\editor})</i><BR>\\end{editor}__NEWLINE__"
+"\\begin{title} \\format[HTMLChars]{\\title} \\end{title}<BR>__NEWLINE__"
+"\\begin{chapter} \\format[HTMLChars]{\\chapter}<BR>\\end{chapter}__NEWLINE__"
+"\\begin{journal} <em>\\format[HTMLChars]{\\journal}, </em>\\end{journal}__NEWLINE__"
@@ -334,10 +342,10 @@ public class JabRefPreferences {
+"\\begin{institution} <em>\\format[HTMLChars]{\\institution}, </em>\\end{institution}__NEWLINE__"
+"\\begin{publisher} <em>\\format[HTMLChars]{\\publisher}, </em>\\end{publisher}__NEWLINE__"
+"\\begin{year}<b>\\year</b>\\end{year}\\begin{volume}<i>, \\volume</i>\\end{volume}"
- +"\\begin{pages}, \\format[FormatPagesForHTML]{\\pages} \\end{pages}__NEWLINE__"
- +"\\begin{abstract}<BR><BR><b>Abstract: </b> \\format[HTMLChars]{\\abstract} \\end{abstract}__NEWLINE__"
- +"\\begin{review}<BR><BR><b>Review: </b> \\format[HTMLChars]{\\review} \\end{review}"
+ +"\\begin{pages}, \\format[FormatPagesForHTML]{\\pages} \\end{pages}"
+"</dd>__NEWLINE__<p></p></font>");
+
+
// TODO: Currently not possible to edit this setting:
defaults.put("previewPrintButton", Boolean.FALSE);
defaults.put("autoDoubleBraces", Boolean.FALSE);
@@ -371,6 +379,7 @@ public class JabRefPreferences {
defaults.put("floatMarkedEntries", Boolean.TRUE);
defaults.put("useNativeFileDialogOnMac", Boolean.FALSE);
+ defaults.put("filechooserDisableRename", Boolean.TRUE);
defaults.put("lastUsedExport", null);
defaults.put("sidePaneWidth", new Integer(-1));
@@ -859,6 +868,7 @@ public class JabRefPreferences {
defKeyBinds.put("Unmark entries", "ctrl shift M");
defKeyBinds.put("Fetch Medline", "F5");
defKeyBinds.put("Fetch CiteSeer", "F6");
+ defKeyBinds.put("Search ScienceDirect", "ctrl F5");
defKeyBinds.put("New from plain text", "ctrl shift N");
defKeyBinds.put("Import Fields from CiteSeer", "ctrl shift C");
defKeyBinds.put("Fetch citations from CiteSeer", "F7");
@@ -869,11 +879,10 @@ public class JabRefPreferences {
defKeyBinds.put("Abbreviate", "ctrl alt A");
defKeyBinds.put("Unabbreviate", "ctrl alt shift A");
- defKeyBinds.put("Search IEEEXplore", "F8");
+ defKeyBinds.put("Search IEEEXplore", "alt F8");
defKeyBinds.put("Search ACM Portal", "ctrl shift F8");
defKeyBinds.put("Fetch ArXiv.org", "shift F8");
defKeyBinds.put("Search JSTOR", "shift F9");
- defKeyBinds.put("Fetch SPIRES", "ctrl F8");
defKeyBinds.put("Write XMP", "ctrl F4");
defKeyBinds.put("New file link", "ctrl N");
defKeyBinds.put("Fetch SPIRES", "ctrl F8");
diff --git a/src/java/net/sf/jabref/MetaData.java b/src/java/net/sf/jabref/MetaData.java
index 25b9285..e758890 100644
--- a/src/java/net/sf/jabref/MetaData.java
+++ b/src/java/net/sf/jabref/MetaData.java
@@ -206,10 +206,11 @@ public class MetaData implements Iterable<String> {
sb.append(Util.quote(orderedData.elementAt(j), ";", '\\')).append(";");
}
sb.append("}");
- sb.append(Globals.NEWLINE);
- sb.append(Globals.NEWLINE);
}
wrapStringBuffer(sb, Globals.METADATA_LINE_LENGTH);
+ sb.append(Globals.NEWLINE);
+ sb.append(Globals.NEWLINE);
+
out.write(sb.toString());
}
// write groups if present. skip this if only the root node exists
diff --git a/src/java/net/sf/jabref/PreviewPanel.java b/src/java/net/sf/jabref/PreviewPanel.java
index 1b5148c..297fba3 100644
--- a/src/java/net/sf/jabref/PreviewPanel.java
+++ b/src/java/net/sf/jabref/PreviewPanel.java
@@ -9,6 +9,9 @@ import java.beans.VetoableChangeListener;
import java.io.IOException;
import java.io.StringReader;
+import javax.print.attribute.HashPrintRequestAttributeSet;
+import javax.print.attribute.PrintRequestAttributeSet;
+import javax.print.attribute.standard.JobName;
import javax.swing.*;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;
@@ -16,13 +19,12 @@ import javax.swing.event.HyperlinkListener;
import net.sf.jabref.export.layout.Layout;
import net.sf.jabref.export.layout.LayoutHelper;
import net.sf.jabref.export.ExportFormats;
-import net.sf.jabref.util.DocumentPrinter;
/**
* Displays an BibtexEntry using the given layout format.
*
* @author $Author: mortenalver $
- * @version $Revision: 3047 $ ($Date: 2007-08-01 20:23:38 +0200 (Mi, 01 Aug
+ * @version $Revision: 3152 $ ($Date: 2007-08-01 20:23:38 +0200 (Mi, 01 Aug
* 2007) $)
*
*/
@@ -116,17 +118,18 @@ public class PreviewPanel extends JPanel implements VetoableChangeListener {
putValue(SHORT_DESCRIPTION, Globals.lang("Print Preview"));
}
- DocumentPrinter printerService;
+ //DocumentPrinter printerService;
public void actionPerformed(ActionEvent arg0) {
- if (printerService == null)
- printerService = new DocumentPrinter();
// Background this, as it takes a while.
new Thread() {
public void run() {
try {
- printerService.print(entry.getCiteKey(), previewPane);
+ PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
+ pras.add(new JobName(entry.getCiteKey(), null));
+ previewPane.print(null, null, true, null, pras, false);
+
} catch (PrinterException e) {
// Inform the user... we don't know what to do.
diff --git a/src/java/net/sf/jabref/SearchManager2.java b/src/java/net/sf/jabref/SearchManager2.java
index 4a9b1c9..55139cc 100644
--- a/src/java/net/sf/jabref/SearchManager2.java
+++ b/src/java/net/sf/jabref/SearchManager2.java
@@ -472,6 +472,7 @@ class SearchManager2 extends SidePaneComponent
searchDialog.addEntry(entry, p);
}
}
+ searchDialog.selectFirstEntry();
searchDialog.setVisible(true);
}
@@ -492,6 +493,7 @@ class SearchManager2 extends SidePaneComponent
if (entry.isSearchHit())
searchDialog.addEntry(entry, panel);
}
+ searchDialog.selectFirstEntry();
searchDialog.setVisible(true);
}
else if (hideSearch.isSelected()) {
diff --git a/src/java/net/sf/jabref/Util.java b/src/java/net/sf/jabref/Util.java
index 8e44f07..cc647fe 100644
--- a/src/java/net/sf/jabref/Util.java
+++ b/src/java/net/sf/jabref/Util.java
@@ -51,7 +51,11 @@ import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
-import java.net.*;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.net.URLDecoder;
import java.nio.charset.Charset;
import java.nio.charset.CharsetEncoder;
import java.text.NumberFormat;
@@ -76,26 +80,32 @@ import java.util.Vector;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import javax.swing.*;
+import javax.swing.Box;
+import javax.swing.JButton;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
+import javax.swing.SwingUtilities;
import javax.swing.undo.UndoableEdit;
-import net.sf.jabref.export.layout.LayoutEntry;
-import net.sf.jabref.export.layout.LayoutFormatter;
+import net.sf.jabref.autocompleter.AbstractAutoCompleter;
import net.sf.jabref.export.SaveSession;
import net.sf.jabref.external.ExternalFileType;
import net.sf.jabref.external.ExternalFileTypeEntryEditor;
import net.sf.jabref.external.UnknownExternalFileType;
import net.sf.jabref.groups.AbstractGroup;
import net.sf.jabref.groups.KeywordGroup;
-import net.sf.jabref.gui.AutoCompleter;
import net.sf.jabref.gui.FileListEntry;
import net.sf.jabref.gui.FileListEntryEditor;
import net.sf.jabref.gui.FileListTableModel;
import net.sf.jabref.imports.CiteSeerFetcher;
-import net.sf.jabref.undo.NamedCompound;
-import net.sf.jabref.undo.UndoableFieldChange;
import net.sf.jabref.labelPattern.LabelPatternUtil;
import net.sf.jabref.net.URLDownload;
+import net.sf.jabref.undo.NamedCompound;
+import net.sf.jabref.undo.UndoableFieldChange;
import com.jgoodies.forms.builder.DefaultFormBuilder;
import com.jgoodies.forms.layout.FormLayout;
@@ -1702,13 +1712,10 @@ public static boolean openExternalFileUnknown(JabRefFrame frame, BibtexEntry ent
* This methods assures all words in the given entry are recorded in their
* respective Completers, if any.
*/
- public static void updateCompletersForEntry(HashMap<String, AutoCompleter> autoCompleters,
- BibtexEntry be) {
-
- for (Map.Entry<String, AutoCompleter> entry : autoCompleters.entrySet()){
- String field = entry.getKey();
- AutoCompleter comp = entry.getValue();
- comp.addAll(be.getField(field), be);
+ public static void updateCompletersForEntry(HashMap<String, AbstractAutoCompleter> autoCompleters, BibtexEntry bibtexEntry) {
+ for (Map.Entry<String, AbstractAutoCompleter> entry : autoCompleters.entrySet()){
+ AbstractAutoCompleter comp = entry.getValue();
+ comp.addBibtexEntry(bibtexEntry);
}
}
diff --git a/src/java/net/sf/jabref/about/AboutPanel.java b/src/java/net/sf/jabref/about/AboutPanel.java
index 2fb5ea1..c4489e6 100644
--- a/src/java/net/sf/jabref/about/AboutPanel.java
+++ b/src/java/net/sf/jabref/about/AboutPanel.java
@@ -83,7 +83,6 @@ public class AboutPanel extends JComponent
private AnimationListener aniListener ;
private ImageProducer iProducer ;
- private HighlightFilter filter ;
AboutPanel()
{
@@ -99,10 +98,6 @@ public class AboutPanel extends JComponent
image = new ImageIcon(getClass().getResource("/images/autumn.png"));
- filter = new HighlightFilter(false, 5) ;
- filter.setMiddle(image.getIconWidth(), image.getIconHeight());
- iProducer = new FilteredImageSource( image.getImage().getSource(), filter) ;
-
HEIGHT = image.getIconHeight() ;
WIDTH = image.getIconWidth() ;
@@ -297,10 +292,6 @@ public class AboutPanel extends JComponent
else
{
image.paintIcon(this, g, 0, 0);
- if (filter.isReady())
- {
- skipAnimation() ;
- }
}
}
// ----------------------------------------------------------------------------
@@ -417,7 +408,6 @@ public class AboutPanel extends JComponent
sleepTime -= sleepTime / 3 ;
image.setImage( createImage( iProducer) );
- filter.nextStep();
repaint(0, 0, WIDTH, HEIGHT) ;
}
}
diff --git a/src/java/net/sf/jabref/autocompleter/AbstractAutoCompleter.java b/src/java/net/sf/jabref/autocompleter/AbstractAutoCompleter.java
new file mode 100644
index 0000000..bf45c1e
--- /dev/null
+++ b/src/java/net/sf/jabref/autocompleter/AbstractAutoCompleter.java
@@ -0,0 +1,74 @@
+package net.sf.jabref.autocompleter;
+
+import java.util.SortedSet;
+import java.util.TreeSet;
+
+import net.sf.jabref.BibtexEntry;
+
+/**
+ * An autocompleter delivers possible completions for a given String. There are
+ * different types of autocompleters for different use cases.
+ *
+ * Example: {@link NameFieldAutoCompleter}, {@link EntireFieldAutoCompleter}
+ *
+ * @author kahlert, cordes
+ * @see AutoCompleterFactory
+ */
+public abstract class AbstractAutoCompleter {
+
+ public static final int SHORTEST_TO_COMPLETE = 2;
+ public static final int SHORTEST_WORD = 4;
+
+ private TreeSet<String> _index = new TreeSet<String>();
+
+ /**
+ * Add a BibtexEntry to this autocompleter. The autocompleter (respectively
+ * to the concrete implementations of {@link AbstractAutoCompleter}) itself
+ * decides which information should be stored for later completion.
+ *
+ */
+ abstract public void addBibtexEntry(BibtexEntry entry);
+
+ abstract public boolean isSingleUnitField();
+
+ /**
+ * Returns one or more possible completions for a given String. The returned
+ * completion depends on which informations were stored while adding
+ * BibtexEntries by the used implementation of {@link AbstractAutoCompleter}
+ * .
+ *
+ * @see AbstractAutoCompleter#addBibtexEntry(BibtexEntry)
+ */
+ public String[] complete(String str) {
+ if (stringMinLength(str))
+ return null;
+ String ender = incrementLastCharacter(str);
+ SortedSet<String> subset = _index.subSet(str, ender);
+ return subset.toArray(new String[0]);
+ }
+
+ /*
+ * Increments the last character of a string.
+ *
+ * Example: incrementLastCharacter("abc") returns "abd".
+ */
+ private static String incrementLastCharacter(String str) {
+ char lastChar = str.charAt(str.length() - 1);
+ String ender = str.substring(0, str.length() - 1) + Character.toString((char) (lastChar + 1));
+ return ender;
+ }
+
+ private static boolean stringMinLength(String str) {
+ return str.length() < AbstractAutoCompleter.SHORTEST_TO_COMPLETE;
+ }
+
+ public void addWordToIndex(String word) {
+ if (word.length() >= SHORTEST_WORD)
+ _index.add(word);
+ }
+
+ public boolean indexContainsWord(String word) {
+ return _index.contains(word);
+ }
+
+}
\ No newline at end of file
diff --git a/src/java/net/sf/jabref/autocompleter/AutoCompleterFactory.java b/src/java/net/sf/jabref/autocompleter/AutoCompleterFactory.java
new file mode 100644
index 0000000..6fc3b62
--- /dev/null
+++ b/src/java/net/sf/jabref/autocompleter/AutoCompleterFactory.java
@@ -0,0 +1,24 @@
+package net.sf.jabref.autocompleter;
+
+/**
+ * Returns an autocompleter to a given fieldname.
+ *
+ * @author kahlert, cordes
+ */
+public class AutoCompleterFactory {
+
+ public static AbstractAutoCompleter getFor(String fieldName) {
+ AbstractAutoCompleter result;
+ if (fieldName.equals("author") || fieldName.equals("editor")) {
+ result = new NameFieldAutoCompleter(fieldName);
+ } else if (fieldName.equals("crossref")) {
+ result = new CrossrefAutoCompleter(fieldName);
+ } else if (fieldName.equals("journal") || fieldName.equals("publisher")) {
+ result = new EntireFieldAutoCompleter(fieldName);
+ } else {
+ result = new DefaultAutoCompleter(fieldName);
+ }
+ return result;
+ }
+
+}
diff --git a/src/java/net/sf/jabref/autocompleter/CrossrefAutoCompleter.java b/src/java/net/sf/jabref/autocompleter/CrossrefAutoCompleter.java
new file mode 100644
index 0000000..c54681f
--- /dev/null
+++ b/src/java/net/sf/jabref/autocompleter/CrossrefAutoCompleter.java
@@ -0,0 +1,40 @@
+package net.sf.jabref.autocompleter;
+
+import net.sf.jabref.BibtexEntry;
+
+/**
+ * Crossref autocompleter stores info from the key field.
+ *
+ * @author kahlert, cordes
+ *
+ */
+public class CrossrefAutoCompleter extends AbstractAutoCompleter {
+
+ public String _fieldName;
+
+ /**
+ * @see AutoCompleterFactory
+ */
+ protected CrossrefAutoCompleter(String fieldName) {
+ _fieldName = fieldName;
+ }
+
+ public boolean isSingleUnitField() {
+ return false;
+ }
+
+ public String[] complete(String s) {
+ return super.complete(s);
+ }
+
+ @Override
+ public void addBibtexEntry(BibtexEntry entry) {
+ if (entry != null) {
+ if (entry != null) {
+ String key = entry.getCiteKey();
+ if (key != null)
+ addWordToIndex(key.trim());
+ }
+ }
+ }
+}
diff --git a/src/java/net/sf/jabref/autocompleter/DefaultAutoCompleter.java b/src/java/net/sf/jabref/autocompleter/DefaultAutoCompleter.java
new file mode 100644
index 0000000..163f117
--- /dev/null
+++ b/src/java/net/sf/jabref/autocompleter/DefaultAutoCompleter.java
@@ -0,0 +1,48 @@
+package net.sf.jabref.autocompleter;
+
+import java.util.StringTokenizer;
+
+import net.sf.jabref.BibtexEntry;
+
+/**
+ * Stores all words which are separated by ' ','.',',' and '\n'. This
+ * autocompleter only processes the field which is given by the fieldname.
+ *
+ * @author kahlert, cordes
+ *
+ */
+public class DefaultAutoCompleter extends AbstractAutoCompleter {
+
+ public String _fieldName;
+
+ /**
+ * @see AutoCompleterFactory
+ */
+ protected DefaultAutoCompleter(String fieldName) {
+ _fieldName = fieldName;
+ }
+
+ public boolean isSingleUnitField() {
+ return false;
+ }
+
+ public String[] complete(String s) {
+ return super.complete(s);
+ }
+
+ @Override
+ public void addBibtexEntry(BibtexEntry entry) {
+ if (entry != null) {
+ String fieldValue = entry.getField(_fieldName);
+ if (fieldValue == null) {
+ return;
+ } else {
+ StringTokenizer tok = new StringTokenizer(fieldValue.toString(), " .,\n");
+ while (tok.hasMoreTokens()) {
+ String word = tok.nextToken();
+ addWordToIndex(word);
+ }
+ }
+ }
+ }
+}
diff --git a/src/java/net/sf/jabref/autocompleter/EntireFieldAutoCompleter.java b/src/java/net/sf/jabref/autocompleter/EntireFieldAutoCompleter.java
new file mode 100644
index 0000000..f341e10
--- /dev/null
+++ b/src/java/net/sf/jabref/autocompleter/EntireFieldAutoCompleter.java
@@ -0,0 +1,39 @@
+package net.sf.jabref.autocompleter;
+
+import net.sf.jabref.BibtexEntry;
+
+/**
+ * Stores the full original value of one field of the given BibtexEntries.
+ *
+ * @author kahlert, cordes
+ *
+ */
+public class EntireFieldAutoCompleter extends AbstractAutoCompleter {
+
+ public String _fieldName;
+
+ /**
+ * @see AutoCompleterFactory
+ */
+ protected EntireFieldAutoCompleter(String fieldName) {
+ _fieldName = fieldName;
+ }
+
+ public boolean isSingleUnitField() {
+ return true;
+ }
+
+ public String[] complete(String s) {
+ return super.complete(s);
+ }
+
+ @Override
+ public void addBibtexEntry(BibtexEntry entry) {
+ if (entry != null) {
+ String fieldValue = entry.getField(_fieldName);
+ if (fieldValue != null) {
+ addWordToIndex(fieldValue.toString().trim());
+ }
+ }
+ }
+}
diff --git a/src/java/net/sf/jabref/autocompleter/NameFieldAutoCompleter.java b/src/java/net/sf/jabref/autocompleter/NameFieldAutoCompleter.java
new file mode 100644
index 0000000..03d509c
--- /dev/null
+++ b/src/java/net/sf/jabref/autocompleter/NameFieldAutoCompleter.java
@@ -0,0 +1,55 @@
+package net.sf.jabref.autocompleter;
+
+import net.sf.jabref.AuthorList;
+import net.sf.jabref.BibtexEntry;
+
+/**
+ * Interpretes the given values as names and stores them in different
+ * permutations so we can complete by beginning with last name or first name.
+ *
+ * @author kahlert, cordes
+ *
+ */
+public class NameFieldAutoCompleter extends AbstractAutoCompleter {
+
+ private String _fieldName;
+
+ /**
+ * @see AutoCompleterFactory
+ */
+ protected NameFieldAutoCompleter(String fieldName) {
+ _fieldName = fieldName;
+ }
+
+ public boolean isSingleUnitField() {
+ return false;
+ }
+
+ public void addBibtexEntry(String fieldValue, BibtexEntry entry) {
+ addBibtexEntry(entry);
+ }
+
+ public void addBibtexEntry(BibtexEntry entry) {
+ if (entry != null) {
+ String fieldValue = entry.getField(_fieldName);
+ if (fieldValue != null) {
+ AuthorList authorList = AuthorList.getAuthorList(fieldValue);
+ for (int i = 0; i < authorList.size(); i++) {
+ AuthorList.Author author = authorList.getAuthor(i);
+ addWordToIndex(author.getLastFirst(true));
+ addWordToIndex(author.getLastFirst(false));
+ addWordToIndex(author.getFirstLast(true));
+ addWordToIndex(author.getFirstLast(false));
+ }
+ }
+ }
+ }
+
+ public String[] complete(String str) {
+ return super.complete(str);
+ }
+
+ public String getFieldName() {
+ return _fieldName;
+ }
+}
diff --git a/src/java/net/sf/jabref/collab/Change.java b/src/java/net/sf/jabref/collab/Change.java
index 754e392..7d42870 100644
--- a/src/java/net/sf/jabref/collab/Change.java
+++ b/src/java/net/sf/jabref/collab/Change.java
@@ -62,7 +62,8 @@ public abstract class Change extends DefaultMutableTreeNode {
* @param secondary BibtexDatabase The "tmp" database for which the change
* should also be made.
* @param undoEdit NamedCompound The compound to hold the undo edits.
+ * @return true if all changes were made, false if not all were accepted.
*/
- abstract void makeChange(BasePanel panel, BibtexDatabase secondary, NamedCompound undoEdit);
+ abstract boolean makeChange(BasePanel panel, BibtexDatabase secondary, NamedCompound undoEdit);
}
diff --git a/src/java/net/sf/jabref/collab/ChangeDisplayDialog.java b/src/java/net/sf/jabref/collab/ChangeDisplayDialog.java
index 3ddaf27..4c8521d 100644
--- a/src/java/net/sf/jabref/collab/ChangeDisplayDialog.java
+++ b/src/java/net/sf/jabref/collab/ChangeDisplayDialog.java
@@ -83,14 +83,20 @@ public class ChangeDisplayDialog extends JDialog implements TreeSelectionListene
NamedCompound ce = new NamedCompound(Globals.lang("Merged external changes"));
@SuppressWarnings("unchecked")
Enumeration enumer = root.children();
+ boolean anyDisabled = false;
for (; enumer.hasMoreElements();) {
- Change c = (Change)enumer.nextElement();
- if (c.isAcceptable() && c.isAccepted())
- c.makeChange(panel, ChangeDisplayDialog.this.secondary, ce);
+ Change c = (Change)enumer.nextElement();
+ boolean allAccepted = false;
+ if (c.isAcceptable() && c.isAccepted())
+ allAccepted = c.makeChange(panel, ChangeDisplayDialog.this.secondary, ce);
+
+ if (!allAccepted)
+ anyDisabled = true;
}
ce.end();
panel.undoManager.addEdit(ce);
- panel.markBaseChanged();
+ if (anyDisabled)
+ panel.markBaseChanged();
panel.setUpdatedExternally(false);
dispose();
okPressed = true;
diff --git a/src/java/net/sf/jabref/collab/EntryAddChange.java b/src/java/net/sf/jabref/collab/EntryAddChange.java
index 275e8cf..7dc0649 100644
--- a/src/java/net/sf/jabref/collab/EntryAddChange.java
+++ b/src/java/net/sf/jabref/collab/EntryAddChange.java
@@ -22,11 +22,12 @@ public class EntryAddChange extends Change {
sp = new JScrollPane(pp);
}
- public void makeChange(BasePanel panel, BibtexDatabase secondary, NamedCompound undoEdit) {
+ public boolean makeChange(BasePanel panel, BibtexDatabase secondary, NamedCompound undoEdit) {
diskEntry.setId(Util.createNeutralId());
panel.database().insertEntry(diskEntry);
secondary.insertEntry(diskEntry);
undoEdit.addEdit(new UndoableInsertEntry(panel.database(), diskEntry, panel));
+ return true;
}
JComponent description() {
diff --git a/src/java/net/sf/jabref/collab/EntryChange.java b/src/java/net/sf/jabref/collab/EntryChange.java
index 01a44f5..862d943 100644
--- a/src/java/net/sf/jabref/collab/EntryChange.java
+++ b/src/java/net/sf/jabref/collab/EntryChange.java
@@ -67,14 +67,15 @@ public class EntryChange extends Change {
}
-public void makeChange(BasePanel panel, BibtexDatabase secondary, NamedCompound undoEdit) {
-
- @SuppressWarnings("unchecked")
+public boolean makeChange(BasePanel panel, BibtexDatabase secondary, NamedCompound undoEdit) {
+ @SuppressWarnings("unchecked")
+ boolean allAccepted = true;
Enumeration<Change> e = children();
for (; e.hasMoreElements();) {
- Change c = e.nextElement();
- if (c.isAcceptable() && c.isAccepted())
- c.makeChange(panel, secondary, undoEdit);
+ Change c = e.nextElement();
+ if (c.isAcceptable() && c.isAccepted())
+ c.makeChange(panel, secondary, undoEdit);
+ else allAccepted = false;
}
/*panel.database().removeEntry(memEntry.getId());
@@ -82,6 +83,8 @@ public void makeChange(BasePanel panel, BibtexDatabase secondary, NamedCompound
diskEntry.setId(Util.createNeutralId());
} catch (KeyCollisionException ex) {}
panel.database().removeEntry(memEntry.getId());*/
+
+ return allAccepted;
}
JComponent description() {
@@ -130,11 +133,12 @@ public void makeChange(BasePanel panel, BibtexDatabase secondary, NamedCompound
tp.setText(text.toString());
}
- public void makeChange(BasePanel panel, BibtexDatabase secondary, NamedCompound undoEdit) {
+ public boolean makeChange(BasePanel panel, BibtexDatabase secondary, NamedCompound undoEdit) {
//System.out.println(field+" "+onDisk);
entry.setField(field, onDisk);
undoEdit.addEdit(new UndoableFieldChange(entry, field, inMem, onDisk));
tmpEntry.setField(field, onDisk);
+ return true;
}
JComponent description() {
diff --git a/src/java/net/sf/jabref/collab/EntryDeleteChange.java b/src/java/net/sf/jabref/collab/EntryDeleteChange.java
index d3997bb..c59bf13 100644
--- a/src/java/net/sf/jabref/collab/EntryDeleteChange.java
+++ b/src/java/net/sf/jabref/collab/EntryDeleteChange.java
@@ -34,10 +34,11 @@ public class EntryDeleteChange extends Change {
sp = new JScrollPane(pp);
}
- public void makeChange(BasePanel panel, BibtexDatabase secondary, NamedCompound undoEdit) {
+ public boolean makeChange(BasePanel panel, BibtexDatabase secondary, NamedCompound undoEdit) {
panel.database().removeEntry(memEntry.getId());
undoEdit.addEdit(new UndoableRemoveEntry(panel.database(), memEntry, panel));
secondary.removeEntry(tmpEntry.getId());
+ return true;
}
JComponent description() {
diff --git a/src/java/net/sf/jabref/collab/FileUpdateMonitor.java b/src/java/net/sf/jabref/collab/FileUpdateMonitor.java
index 0f7b433..1a56cd5 100644
--- a/src/java/net/sf/jabref/collab/FileUpdateMonitor.java
+++ b/src/java/net/sf/jabref/collab/FileUpdateMonitor.java
@@ -152,32 +152,35 @@ public class FileUpdateMonitor extends Thread {
FileUpdateListener listener;
File file;
File tmpFile;
- long timeStamp;
+ long timeStamp, fileSize;
public Entry(FileUpdateListener ul, File f) {
listener = ul;
file = f;
timeStamp = file.lastModified();
+ fileSize = file.length();
tmpFile = getTempFile();
copy();
}
/**
- * Check if time stamp has changed.
+ * Check if time stamp or the file size has changed.
* @throws IOException if the file does no longer exist.
* @return boolean true if the file has changed.
*/
public boolean hasBeenUpdated() throws IOException {
long modified = file.lastModified();
+ long fileSizeNow = file.length();
if (modified == 0L)
throw new IOException("File deleted");
- return timeStamp != modified;
+ return timeStamp != modified || fileSize != fileSizeNow;
}
public void updateTimeStamp() {
timeStamp = file.lastModified();
if (timeStamp == 0L)
notifyFileRemoved();
+ fileSize = file.length();
copy();
}
diff --git a/src/java/net/sf/jabref/collab/GroupChange.java b/src/java/net/sf/jabref/collab/GroupChange.java
index ed438ba..ef8f9d1 100644
--- a/src/java/net/sf/jabref/collab/GroupChange.java
+++ b/src/java/net/sf/jabref/collab/GroupChange.java
@@ -23,7 +23,7 @@ public class GroupChange extends Change {
this.tmpGroupRoot = tmpGroupRoot;
}
- public void makeChange(BasePanel panel, BibtexDatabase secondary, NamedCompound undoEdit) {
+ public boolean makeChange(BasePanel panel, BibtexDatabase secondary, NamedCompound undoEdit) {
final GroupTreeNode root = panel.getGroupSelector().getGroupTreeRoot();
final UndoableModifySubtree undo = new UndoableModifySubtree(
panel.getGroupSelector(), root, Globals.lang("Modified groups")); // JZTODO lyrics
@@ -51,6 +51,7 @@ public class GroupChange extends Change {
for (int i = 0; i < copied.getChildCount(); ++i)
tmpGroupRoot.add(((GroupTreeNode) copied.getChildAt(i)).deepCopy());
tmpGroupRoot.refreshGroupsForNewDatabase(secondary);
+ return true;
}
JComponent description() {
diff --git a/src/java/net/sf/jabref/collab/MetaDataChange.java b/src/java/net/sf/jabref/collab/MetaDataChange.java
index 34f4f17..b32ffff 100644
--- a/src/java/net/sf/jabref/collab/MetaDataChange.java
+++ b/src/java/net/sf/jabref/collab/MetaDataChange.java
@@ -74,7 +74,7 @@ public class MetaDataChange extends Change {
return sp;
}
- void makeChange(BasePanel panel, BibtexDatabase secondary, NamedCompound undoEdit) {
+ public boolean makeChange(BasePanel panel, BibtexDatabase secondary, NamedCompound undoEdit) {
for (Iterator<MetaDataChangeUnit> iterator = changes.iterator(); iterator.hasNext();) {
MetaDataChangeUnit unit = iterator.next();
switch (unit.type) {
@@ -92,6 +92,7 @@ public class MetaDataChange extends Change {
break;
}
}
+ return true;
}
class MetaDataChangeUnit {
diff --git a/src/java/net/sf/jabref/collab/PreambleChange.java b/src/java/net/sf/jabref/collab/PreambleChange.java
index d82388d..2aaa214 100644
--- a/src/java/net/sf/jabref/collab/PreambleChange.java
+++ b/src/java/net/sf/jabref/collab/PreambleChange.java
@@ -37,10 +37,11 @@ public class PreambleChange extends Change {
tp.setText(text.toString());
}
- public void makeChange(BasePanel panel, BibtexDatabase secondary, NamedCompound undoEdit) {
- panel.database().setPreamble(disk);
- undoEdit.addEdit(new UndoablePreambleChange(panel.database(), panel, mem, disk));
+ public boolean makeChange(BasePanel panel, BibtexDatabase secondary, NamedCompound undoEdit) {
+ panel.database().setPreamble(disk);
+ undoEdit.addEdit(new UndoablePreambleChange(panel.database(), panel, mem, disk));
secondary.setPreamble(disk);
+ return true;
}
JComponent description() {
diff --git a/src/java/net/sf/jabref/collab/StringAddChange.java b/src/java/net/sf/jabref/collab/StringAddChange.java
index e109371..2d8121f 100644
--- a/src/java/net/sf/jabref/collab/StringAddChange.java
+++ b/src/java/net/sf/jabref/collab/StringAddChange.java
@@ -32,7 +32,7 @@ public class StringAddChange extends Change {
}
- public void makeChange(BasePanel panel, BibtexDatabase secondary, NamedCompound undoEdit) {
+ public boolean makeChange(BasePanel panel, BibtexDatabase secondary, NamedCompound undoEdit) {
if (panel.database().hasStringLabel(string.getName())) {
// The name to change to is already in the database, so we can't comply.
@@ -52,6 +52,7 @@ public class StringAddChange extends Change {
} catch (KeyCollisionException ex) {
Globals.logger("Error: could not add string '"+string.getName()+"' to tmp database: "+ex.getMessage());
}
+ return true;
}
diff --git a/src/java/net/sf/jabref/collab/StringChange.java b/src/java/net/sf/jabref/collab/StringChange.java
index ddc320a..fc902a8 100644
--- a/src/java/net/sf/jabref/collab/StringChange.java
+++ b/src/java/net/sf/jabref/collab/StringChange.java
@@ -49,7 +49,7 @@ public class StringChange extends Change {
tp.setText(sb.toString());
}
- public void makeChange(BasePanel panel, BibtexDatabase secondary, NamedCompound undoEdit) {
+ public boolean makeChange(BasePanel panel, BibtexDatabase secondary, NamedCompound undoEdit) {
if (string != null) {
string.setContent(disk);
undoEdit.addEdit(new UndoableStringChange(panel, string, false, mem, disk));
@@ -75,6 +75,8 @@ public class StringChange extends Change {
BibtexString bs = new BibtexString(Util.createNeutralId(), label, disk);
secondary.addString(bs);
}
+
+ return true;
}
diff --git a/src/java/net/sf/jabref/collab/StringNameChange.java b/src/java/net/sf/jabref/collab/StringNameChange.java
index a2ef52d..58b8d22 100644
--- a/src/java/net/sf/jabref/collab/StringNameChange.java
+++ b/src/java/net/sf/jabref/collab/StringNameChange.java
@@ -26,7 +26,7 @@ public class StringNameChange extends Change {
}
- public void makeChange(BasePanel panel, BibtexDatabase secondary, NamedCompound undoEdit) {
+ public boolean makeChange(BasePanel panel, BibtexDatabase secondary, NamedCompound undoEdit) {
if (panel.database().hasStringLabel(disk)) {
// The name to change to is already in the database, so we can't comply.
@@ -59,6 +59,8 @@ public class StringNameChange extends Change {
BibtexString bs = new BibtexString(newId, disk, content);
secondary.addString(bs);
}
+
+ return true;
}
diff --git a/src/java/net/sf/jabref/collab/StringRemoveChange.java b/src/java/net/sf/jabref/collab/StringRemoveChange.java
index c45d00f..f1a90cb 100644
--- a/src/java/net/sf/jabref/collab/StringRemoveChange.java
+++ b/src/java/net/sf/jabref/collab/StringRemoveChange.java
@@ -39,7 +39,7 @@ public class StringRemoveChange extends Change {
}
- public void makeChange(BasePanel panel, BibtexDatabase secondary, NamedCompound undoEdit) {
+ public boolean makeChange(BasePanel panel, BibtexDatabase secondary, NamedCompound undoEdit) {
try {
panel.database().removeString(inMem.getId());
@@ -50,6 +50,8 @@ public class StringRemoveChange extends Change {
// Update tmp database:
secondary.removeString(tmpString.getId());
+
+ return true;
}
diff --git a/src/java/net/sf/jabref/export/OpenDocumentSpreadsheetCreator.java b/src/java/net/sf/jabref/export/OpenDocumentSpreadsheetCreator.java
index 42ccab8..f14d22a 100644
--- a/src/java/net/sf/jabref/export/OpenDocumentSpreadsheetCreator.java
+++ b/src/java/net/sf/jabref/export/OpenDocumentSpreadsheetCreator.java
@@ -53,7 +53,7 @@ public class OpenDocumentSpreadsheetCreator extends ExportFormat {
// Add manifest (required for OOo 2.0) and "meta.xml": These are in the
// resource/ods directory, and are copied verbatim into the zip file.
addResourceFile("meta.xml", "/resource/ods/meta.xml", out);
- //addResourceFile("mimetype", "/resource/openoffice/mimetype", out);
+ addResourceFile("mimetype", "/resource/ods/mimetype", out);
addResourceFile("META-INF/manifest.xml", "/resource/ods/manifest.xml", out);
//zipEntry = new ZipEntry()
diff --git a/src/java/net/sf/jabref/export/SaveDatabaseAction.java b/src/java/net/sf/jabref/export/SaveDatabaseAction.java
index 7876d4d..7c99ad5 100644
--- a/src/java/net/sf/jabref/export/SaveDatabaseAction.java
+++ b/src/java/net/sf/jabref/export/SaveDatabaseAction.java
@@ -269,6 +269,16 @@ public class SaveDatabaseAction extends AbstractWorker {
panel.setEncoding(encoding); // Make sure to remember which encoding we used.
} else
session.cancel();
+ } catch (SaveException e) {
+ int ans = JOptionPane.showConfirmDialog(null, Globals.lang("Save failed during backup creation")+". "
+ +Globals.lang("Save without backup?"), Globals.lang("Unable to create backup"),
+ JOptionPane.YES_NO_OPTION);
+ if (ans == JOptionPane.YES_OPTION) {
+ session.setUseBackup(false);
+ session.commit();
+ panel.setEncoding(encoding);
+ }
+ else commit = false;
} catch (IOException e) {
e.printStackTrace();
}
diff --git a/src/java/net/sf/jabref/export/SaveException.java b/src/java/net/sf/jabref/export/SaveException.java
index a6e0990..96bbf8d 100644
--- a/src/java/net/sf/jabref/export/SaveException.java
+++ b/src/java/net/sf/jabref/export/SaveException.java
@@ -40,9 +40,11 @@ public class SaveException extends Exception
public static final SaveException FILE_LOCKED = new SaveException
(Globals.lang("Could not save, file locked by another JabRef instance."));
+ public static final SaveException BACKUP_CREATION = new SaveException
+ (Globals.lang("Unable to create backup"));
private BibtexEntry entry;
- private int status;
+ private int status = 0;
//~ Constructors ///////////////////////////////////////////////////////////
public SaveException(String message)
diff --git a/src/java/net/sf/jabref/export/SaveSession.java b/src/java/net/sf/jabref/export/SaveSession.java
index 09b885f..8e60fcf 100644
--- a/src/java/net/sf/jabref/export/SaveSession.java
+++ b/src/java/net/sf/jabref/export/SaveSession.java
@@ -56,6 +56,10 @@ public class SaveSession {
return encoding;
}
+ public void setUseBackup(boolean useBackup) {
+ this.backup = useBackup;
+ }
+
public void commit() throws SaveException {
if (file == null)
return;
@@ -66,7 +70,9 @@ public class SaveSession {
try {
Util.copyFile(file, backupFile, true);
} catch (IOException ex) {
- throw new SaveException(Globals.lang("Save failed during backup creation")+": "+ex.getMessage());
+ ex.printStackTrace();
+ throw SaveException.BACKUP_CREATION;
+ //throw new SaveException(Globals.lang("Save failed during backup creation")+": "+ex.getMessage());
}
}
try {
diff --git a/src/java/net/sf/jabref/export/layout/format/CreateDocBookAuthors.java b/src/java/net/sf/jabref/export/layout/format/CreateDocBookAuthors.java
index fdbb77c..00a6c58 100755
--- a/src/java/net/sf/jabref/export/layout/format/CreateDocBookAuthors.java
+++ b/src/java/net/sf/jabref/export/layout/format/CreateDocBookAuthors.java
@@ -4,9 +4,9 @@
// Language: Java
// Compiler: JDK 1.4
// Authors: Joerg K. Wegner
-// Version: $Revision: 2268 $
-// $Date: 2007-08-20 01:37:05 +0200 (Mon, 20 Aug 2007) $
-// $Author: coezbek $
+// Version: $Revision: 3134 $
+// $Date: 2009-11-06 19:32:07 +0100 (Fri, 06 Nov 2009) $
+// $Author: mortenalver $
//
// Copyright (c) Dept. Computer Architecture, University of Tuebingen, Germany
//
@@ -33,21 +33,31 @@ import net.sf.jabref.AuthorList;
* Create DocBook authors formatter.
*
* @author $author$
- * @version $Revision: 2268 $
+ * @version $Revision: 3134 $
*/
public class CreateDocBookAuthors implements LayoutFormatter
{
//~ Methods ////////////////////////////////////////////////////////////////
+ static XMLChars xc = new XMLChars();
+
public String format(String fieldText)
{
+
+ StringBuilder sb = new StringBuilder(100);
+
+ AuthorList al = AuthorList.getAuthorList(fieldText);
+
+ addBody(sb, al, "author");
+ return sb.toString();
+
// <author><firstname>L.</firstname><surname>Xue</surname></author>
// <author><firstname>F.</firstname><othername role="mi">L.</othername><surname>Stahura</surname></author>
// <author><firstname>J.</firstname><othername role="mi">W.</othername><surname>Godden</surname></author>
// <author><firstname>J.</firstname><surname>Bajorath</surname></author>
- StringBuffer sb = new StringBuffer(100);
+ /*
if (fieldText.indexOf(" and ") == -1)
{
sb.append("<author>");
@@ -71,17 +81,48 @@ public class CreateDocBookAuthors implements LayoutFormatter
fieldText = sb.toString();
- return fieldText;
+ return fieldText;*/
+ }
+
+ public void addBody(StringBuilder sb, AuthorList al, String tagName) {
+ for (int i=0; i<al.size(); i++) {
+ sb.append("<"+tagName+">");
+ AuthorList.Author a = al.getAuthor(i);
+ if ((a.getFirst() != null) && (a.getFirst().length() > 0)) {
+ sb.append("<firstname>");
+ sb.append(xc.format(a.getFirst()));
+ sb.append("</firstname>");
+ }
+ if ((a.getVon() != null) && (a.getVon().length() > 0)) {
+ sb.append("<othername>");
+ sb.append(xc.format(a.getVon()));
+ sb.append("</othername>");
+ }
+ if ((a.getLast() != null) && (a.getLast().length() > 0)) {
+ sb.append("<lastname>");
+ sb.append(xc.format(a.getLast()));
+ if ((a.getJr() != null) && (a.getJr().length() > 0)) {
+ sb.append(" "+xc.format(a.getJr()));
+ }
+ sb.append("</lastname>");
+ }
+
+ if (i < al.size()-1)
+ sb.append("</"+tagName+">\n ");
+ else
+ sb.append("</"+tagName+">");
+ }
}
/**
* @param sb
- * @param fieldText
+ * @param author
*/
protected void singleAuthor(StringBuffer sb, String author)
{
// TODO: replace special characters
Vector<String> v = new Vector<String>();
+
String authorMod = AuthorList.fixAuthor_firstNameFirst(author);
WSITools.tokenize(v, authorMod, " \n\r");
diff --git a/src/java/net/sf/jabref/export/layout/format/CreateDocBookEditors.java b/src/java/net/sf/jabref/export/layout/format/CreateDocBookEditors.java
index b9156bd..cd3938b 100755
--- a/src/java/net/sf/jabref/export/layout/format/CreateDocBookEditors.java
+++ b/src/java/net/sf/jabref/export/layout/format/CreateDocBookEditors.java
@@ -4,9 +4,9 @@
// Language: Java
// Compiler: JDK 1.4
// Authors: Joerg K. Wegner
-// Version: $Revision: 2268 $
-// $Date: 2007-08-20 01:37:05 +0200 (Mon, 20 Aug 2007) $
-// $Author: coezbek $
+// Version: $Revision: 3134 $
+// $Date: 2009-11-06 19:32:07 +0100 (Fri, 06 Nov 2009) $
+// $Author: mortenalver $
//
// Copyright (c) Dept. Computer Architecture, University of Tuebingen, Germany
//
@@ -21,13 +21,14 @@
///////////////////////////////////////////////////////////////////////////////
package net.sf.jabref.export.layout.format;
+import net.sf.jabref.AuthorList;
/**
* Create DocBook editors formatter.
*
* @author $author$
- * @version $Revision: 2268 $
+ * @version $Revision: 3134 $
*/
public class CreateDocBookEditors extends CreateDocBookAuthors
{
@@ -36,32 +37,11 @@ public class CreateDocBookEditors extends CreateDocBookAuthors
public String format(String fieldText)
{
// <editor><firstname>L.</firstname><surname>Xue</surname></editor>
-
- StringBuffer sb = new StringBuffer(100);
- //fieldText = (new ConvertSpecialCharactersForXML()).format(fieldText);
-
- if (fieldText.indexOf(" and ") == -1)
- {
- sb.append("<editor>");
- singleAuthor(sb, fieldText);
- sb.append("</editor>");
- }
- else
- {
- String[] names = fieldText.split(" and ");
- for (int i=0; i<names.length; i++)
- {
- sb.append("<editor>");
- singleAuthor(sb, names[i]);
- sb.append("</editor>");
- if (i < names.length -1)
- sb.append("\n ");
- }
- }
-
- fieldText = sb.toString();
-
- return fieldText;
+ StringBuilder sb = new StringBuilder(100);
+ AuthorList al = AuthorList.getAuthorList(fieldText);
+ addBody(sb, al, "editor");
+ return sb.toString();
+
}
}
diff --git a/src/java/net/sf/jabref/export/layout/format/IfPlural.java b/src/java/net/sf/jabref/export/layout/format/IfPlural.java
new file mode 100644
index 0000000..629f18f
--- /dev/null
+++ b/src/java/net/sf/jabref/export/layout/format/IfPlural.java
@@ -0,0 +1,47 @@
+/**
+ *
+ */
+package net.sf.jabref.export.layout.format;
+
+import net.sf.jabref.export.layout.AbstractParamLayoutFormatter;
+
+/**
+ * @author ralmond
+ *
+ * This formatter takes two arguments and examines the field text.
+ * If the field text represents multiple individuals, that is it contains the string "and"
+ * then the field text is replaced with the first argument, otherwise it is replaced with the second.
+ * For example:
+ *
+ * \format[IfPlural(Eds.,Ed.)]{\editor}
+ *
+ * Should expand to 'Eds.' if the document has more than one editor and 'Ed.' if it only has one.
+ *
+ *
+ */
+public class IfPlural extends AbstractParamLayoutFormatter {
+
+ protected String pluralText, singularText;
+
+ public void setArgument(String arg) {
+ String[] parts = parseArgument(arg);
+
+ if (parts.length < 2)
+ return; // TODO: too few arguments. Print an error message here?
+ pluralText = parts[0];
+ singularText = parts[1];
+
+}
+
+public String format(String fieldText) {
+ if (pluralText == null)
+ return fieldText; // TODO: argument missing or invalid. Print an error message here?
+ if (fieldText.matches(".*\\sand\\s.*"))
+ return pluralText;
+ else
+ return singularText;
+
+}
+
+
+}
diff --git a/src/java/net/sf/jabref/external/DroppedFileHandler.java b/src/java/net/sf/jabref/external/DroppedFileHandler.java
index 3bfea29..22f017c 100644
--- a/src/java/net/sf/jabref/external/DroppedFileHandler.java
+++ b/src/java/net/sf/jabref/external/DroppedFileHandler.java
@@ -19,6 +19,8 @@ import net.sf.jabref.undo.UndoableInsertEntry;
import net.sf.jabref.util.XMPUtil;
import com.jgoodies.forms.builder.DefaultFormBuilder;
+import com.jgoodies.forms.debug.FormDebugPanel;
+import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.FormLayout;
/**
@@ -45,6 +47,8 @@ public class DroppedFileHandler {
private JCheckBox renameCheckBox = new JCheckBox();
+ private JTextField renameToTextBox = new JTextField(25);
+
private JPanel optionsPanel = new JPanel();
public DroppedFileHandler(JabRefFrame frame, BasePanel panel) {
@@ -58,13 +62,19 @@ public class DroppedFileHandler {
grp.add(moveRadioButton);
copyRadioButton.setSelected(true);
- DefaultFormBuilder builder = new DefaultFormBuilder(new FormLayout("left:pref", ""),
- optionsPanel);
- builder.append(linkInPlace);
- builder.append(destDirLabel);
- builder.append(copyRadioButton);
- builder.append(moveRadioButton);
- builder.append(renameCheckBox);
+ FormLayout layout = new FormLayout("left:15dlu,pref,pref,pref","bottom:14pt,pref,pref,pref,pref");
+ layout.setRowGroups(new int[][]{{1, 2, 3, 4, 5}});
+ DefaultFormBuilder builder = new DefaultFormBuilder(layout, optionsPanel);
+ builder.setDefaultDialogBorder();
+ CellConstraints cc = new CellConstraints();
+
+ builder.add(linkInPlace, cc.xyw(1, 1, 4));
+ builder.add(destDirLabel, cc.xyw(1, 2, 4));
+ builder.add(copyRadioButton, cc.xyw(2, 3, 3));
+ builder.add(moveRadioButton, cc.xyw(2, 4, 3));
+ builder.add(renameCheckBox, cc.xyw(2, 5, 1));
+ builder.add(renameToTextBox, cc.xyw(4, 5, 1));
+
}
/**
@@ -114,10 +124,8 @@ public class DroppedFileHandler {
// Show dialog
boolean newEntry = false;
- boolean rename = entry.getCiteKey() != null && entry.getCiteKey().length() > 0;
- String citeKeyOrReason = (rename ? entry.getCiteKey() : Globals.lang("Entry has no citekey"));
- int reply = showLinkMoveCopyRenameDialog(Globals.lang("Link to file %0", fileName),
- fileType, rename, citeKeyOrReason, newEntry, false);
+ String citeKey = entry.getCiteKey();
+ int reply = showLinkMoveCopyRenameDialog(fileName, fileType, citeKey, newEntry, false);
if (reply != JOptionPane.OK_OPTION)
return;
@@ -126,18 +134,18 @@ public class DroppedFileHandler {
* Ok, we're ready to go. See first if we need to do a file copy before
* linking:
*/
+
boolean success = true;
String destFilename;
if (linkInPlace.isSelected()) {
destFilename = fileName;
} else {
- destFilename = (renameCheckBox.isSelected() ? entry.getCiteKey() + "." + fileType.extension
- : new File(fileName).getName());
+ destFilename = (renameCheckBox.isSelected() ? renameToTextBox.getText() : new File(fileName).getName());
if (copyRadioButton.isSelected()) {
success = doCopy(fileName, fileType, destFilename, edits);
} else if (moveRadioButton.isSelected()) {
- success = doRename(fileName, fileType, destFilename, edits);
+ success = doMove(fileName, fileType, destFilename, edits);
}
}
@@ -215,7 +223,7 @@ public class DroppedFileHandler {
if (copyRadioButton.isSelected()) {
success = doCopy(fileName, fileType, destFilename, edits);
} else if (moveRadioButton.isSelected()) {
- success = doRename(fileName, fileType, destFilename, edits);
+ success = doMove(fileName, fileType, destFilename, edits);
}
}
if (success) {
@@ -239,27 +247,34 @@ public class DroppedFileHandler {
return true;
}
- public int showLinkMoveCopyRenameDialog(String dialogTitle, ExternalFileType fileType,
- final boolean allowRename, String citekeyOrReason, boolean newEntry,
- final boolean multipleEntries) {
-
+ public int showLinkMoveCopyRenameDialog(String linkFileName, ExternalFileType fileType,
+ String citeKey, boolean newEntry, final boolean multipleEntries) {
+
+ String dialogTitle = Globals.lang("Link to file %0", linkFileName);
//String dir = panel.metaData().getFileDirectory(fileType.getFieldName());
String dir = panel.metaData().getFileDirectory(GUIGlobals.FILE_FIELD);
if ((dir == null) || !(new File(dir)).exists()) {
- destDirLabel.setText(Globals.lang("File directory is not set or does not exist!"));
+ destDirLabel.setText(Globals.lang("File directory is not set or does not exist."));
copyRadioButton.setEnabled(false);
moveRadioButton.setEnabled(false);
+ renameToTextBox.setEnabled(false);
+ renameCheckBox.setEnabled(false);
linkInPlace.setSelected(true);
} else {
destDirLabel.setText(Globals.lang("File directory is '%0':", dir));
copyRadioButton.setEnabled(true);
moveRadioButton.setEnabled(true);
+ renameToTextBox.setEnabled(true);
+ renameCheckBox.setEnabled(true);
}
ChangeListener cl = new ChangeListener() {
public void stateChanged(ChangeEvent arg0) {
renameCheckBox.setEnabled(!linkInPlace.isSelected()
- && allowRename && (!multipleEntries));
+ && (!multipleEntries));
+ renameToTextBox.setEnabled(!linkInPlace.isSelected()
+ && (!multipleEntries));
+ if (multipleEntries) { renameToTextBox.setText("Multiple entries"); }
}
};
@@ -273,15 +288,17 @@ public class DroppedFileHandler {
linkInPlace.setText(Globals
.lang("Leave file in its current directory."));
copyRadioButton.setText(Globals.lang("Copy file to file directory."));
- moveRadioButton.setText(Globals.lang("Move file to file directory"));
+ moveRadioButton.setText(Globals.lang("Move file to file directory."));
}
- renameCheckBox.setText(Globals.lang("Rename to match citekey") + ": " + citekeyOrReason);
+ renameCheckBox.setText(Globals.lang("Rename file to") + ": ");
+ renameToTextBox.setText(citeKey == null ? "default" : citeKey + "." + fileType.extension);
linkInPlace.addChangeListener(cl);
cl.stateChanged(new ChangeEvent(linkInPlace));
try {
- return JOptionPane.showConfirmDialog(frame, optionsPanel, dialogTitle,
+ Object[] messages = {"How would you like to link to " + linkFileName + "?", optionsPanel};
+ return JOptionPane.showConfirmDialog(frame, messages, dialogTitle,
JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
} finally {
linkInPlace.removeChangeListener(cl);
@@ -357,7 +374,7 @@ public class DroppedFileHandler {
* TODO we should be able to undo this action
* @return true if the operation succeeded.
*/
- private boolean doRename(String fileName, ExternalFileType fileType, String destFilename,
+ private boolean doMove(String fileName, ExternalFileType fileType, String destFilename,
NamedCompound edits) {
String dir = panel.metaData().getFileDirectory(GUIGlobals.FILE_FIELD);
if ((dir == null) || !(new File(dir)).exists()) {
@@ -366,12 +383,26 @@ public class DroppedFileHandler {
// This should not happen!!
return false;
}
- destFilename = new File(destFilename).getName();
- File f = new File(fileName);
- File destFile = new File(new StringBuffer(dir).append(System.getProperty("file.separator"))
- .append(destFilename).toString());
- f.renameTo(destFile);
- return true;
+ File fromFile = new File(fileName);
+ File toFile = new File(dir + System.getProperty("file.separator") + destFilename);
+ if (toFile.exists()) {
+ int answer = JOptionPane.showConfirmDialog(frame,
+ toFile.getAbsolutePath() + " exists. Overwrite?", "Overwrite file?",
+ JOptionPane.YES_NO_OPTION);
+ if (answer == JOptionPane.NO_OPTION) {
+ return false;
+ }
+ }
+
+ if (!fromFile.renameTo(toFile)) {
+ JOptionPane.showMessageDialog(frame,
+ "There was an error moving the file. Please move the file manually and link in place.",
+ "Error moving file", JOptionPane.ERROR_MESSAGE);
+ return false;
+ } else {
+ return true;
+ }
+
}
/**
@@ -409,7 +440,7 @@ public class DroppedFileHandler {
if (destFile.exists()) {
int answer = JOptionPane.showConfirmDialog(frame, "'" + destFile.getPath() + "' "
- + Globals.lang("exists.Overwrite?"), Globals.lang("File exists"),
+ + Globals.lang("exists. Overwrite?"), Globals.lang("File exists"),
JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
if (answer == JOptionPane.NO_OPTION)
return false;
diff --git a/src/java/net/sf/jabref/external/ExternalFileTypeEntryEditor.java b/src/java/net/sf/jabref/external/ExternalFileTypeEntryEditor.java
index 8e93dcd..83858d4 100644
--- a/src/java/net/sf/jabref/external/ExternalFileTypeEntryEditor.java
+++ b/src/java/net/sf/jabref/external/ExternalFileTypeEntryEditor.java
@@ -199,8 +199,14 @@ public class ExternalFileTypeEntryEditor {
public void storeSettings(ExternalFileType entry) {
entry.setName(name.getText().trim());
- entry.setExtension(extension.getText().trim());
entry.setMimeType(mimeType.getText().trim());
+ // Set extension, but remove initial dot if user has added that:
+ String ext = extension.getText().trim();
+ if ((ext.length() > 0) && (ext.charAt(0) == '.'))
+ entry.setExtension(ext.substring(1));
+ else
+ entry.setExtension(ext);
+
if (selectedIcon != null)
entry.setIconName(selectedIcon);
if (!Globals.ON_WIN) {
diff --git a/src/java/net/sf/jabref/external/MoveFileAction.java b/src/java/net/sf/jabref/external/MoveFileAction.java
index fa5dba4..b590db8 100644
--- a/src/java/net/sf/jabref/external/MoveFileAction.java
+++ b/src/java/net/sf/jabref/external/MoveFileAction.java
@@ -90,7 +90,6 @@ public class MoveFileAction extends AbstractAction {
sb.append(file.getName());
}
chosenFile = sb.toString();
- System.out.println(chosenFile);
} else {
chosenFile = FileDialogs.getNewFile(frame, file, extension, JFileChooser.SAVE_DIALOG, false);
}
@@ -120,12 +119,13 @@ public class MoveFileAction extends AbstractAction {
// Remove the original file:
file.delete();
// Relativise path, if possible.
- if (newFile.getPath().startsWith(dir)) {
- if ((newFile.getPath().length() > dir.length()) &&
- (newFile.getPath().charAt(dir.length()) == File.separatorChar))
- flEntry.setLink(newFile.getPath().substring(1+dir.length()));
+ String canPath = (new File(dir)).getCanonicalPath();
+ if (newFile.getCanonicalPath().startsWith(canPath)) {
+ if ((newFile.getPath().length() > canPath.length()) &&
+ (newFile.getPath().charAt(canPath.length()) == File.separatorChar))
+ flEntry.setLink(newFile.getPath().substring(1+canPath.length()));
else
- flEntry.setLink(newFile.getPath().substring(dir.length()));
+ flEntry.setLink(newFile.getPath().substring(canPath.length()));
}
diff --git a/src/java/net/sf/jabref/groups/AllEntriesGroup.java b/src/java/net/sf/jabref/groups/AllEntriesGroup.java
index eb08015..00ce31a 100644
--- a/src/java/net/sf/jabref/groups/AllEntriesGroup.java
+++ b/src/java/net/sf/jabref/groups/AllEntriesGroup.java
@@ -115,7 +115,7 @@ public class AllEntriesGroup extends AbstractGroup implements SearchRule {
}
public String getShortDescription() {
- return "<b>All Entries</b> (this group cannot be edited or removed)";
+ return Globals.lang("<b>All Entries</b> (this group cannot be edited or removed)");
}
public String getTypeId() {
diff --git a/src/java/net/sf/jabref/groups/ExplicitGroup.java b/src/java/net/sf/jabref/groups/ExplicitGroup.java
index aed62e9..4aa0608 100644
--- a/src/java/net/sf/jabref/groups/ExplicitGroup.java
+++ b/src/java/net/sf/jabref/groups/ExplicitGroup.java
@@ -224,13 +224,13 @@ public class ExplicitGroup extends AbstractGroup implements SearchRule {
public String getShortDescription() {
StringBuffer sb = new StringBuffer();
- sb.append("<b>").append(getName()).append("</b> - static group");
+ sb.append("<b>").append(getName()).append(Globals.lang("</b> - static group"));
switch (getHierarchicalContext()) {
case AbstractGroup.INCLUDING:
- sb.append(", includes subgroups");
+ sb.append(Globals.lang(", includes subgroups"));
break;
case AbstractGroup.REFINING:
- sb.append(", refines supergroup");
+ sb.append(Globals.lang(", refines supergroup"));
break;
default:
break;
diff --git a/src/java/net/sf/jabref/groups/KeywordGroup.java b/src/java/net/sf/jabref/groups/KeywordGroup.java
index 68402a8..844de74 100644
--- a/src/java/net/sf/jabref/groups/KeywordGroup.java
+++ b/src/java/net/sf/jabref/groups/KeywordGroup.java
@@ -376,15 +376,15 @@ public class KeywordGroup extends AbstractGroup implements SearchRule {
sb.append("<i>").append(Util.quoteForHTML(getName())).append("</i>");
else
sb.append(Util.quoteForHTML(getName()));
- sb.append("</b> - dynamic group (<b>").append(m_searchField).
- append("</b> contains <b>").
+ sb.append(Globals.lang("</b> - dynamic group (<b>")).append(m_searchField).
+ append(Globals.lang("</b> contains <b>")).
append(Util.quoteForHTML(m_searchExpression)).append("</b>)");
switch (getHierarchicalContext()) {
case AbstractGroup.INCLUDING:
- sb.append(", includes subgroups");
+ sb.append(Globals.lang(", includes subgroups"));
break;
case AbstractGroup.REFINING:
- sb.append(", refines supergroup");
+ sb.append(Globals.lang(", refines supergroup"));
break;
default:
break;
diff --git a/src/java/net/sf/jabref/groups/SearchGroup.java b/src/java/net/sf/jabref/groups/SearchGroup.java
index a33cf7a..b05ed3e 100644
--- a/src/java/net/sf/jabref/groups/SearchGroup.java
+++ b/src/java/net/sf/jabref/groups/SearchGroup.java
@@ -391,14 +391,16 @@ public class SearchGroup extends AbstractGroup implements SearchRule {
sb.append("<i>").append(Util.quoteForHTML(getName())).append("</i>");
else
sb.append(Util.quoteForHTML(getName()));
- sb.append("</b> - dynamic group (" + "search expression: <b>").
+ /*sb.append(Globals.lang("</b> - dynamic group (search expression: <b>")).*/
+ sb.append(Globals.lang("</b> - dynamic group (")+ Globals.lang("search expression: <b>")).
+
append(Util.quoteForHTML(m_searchExpression)).append("</b>)");
switch (getHierarchicalContext()) {
case AbstractGroup.INCLUDING:
- sb.append(", includes subgroups");
+ sb.append(Globals.lang(", includes subgroups"));
break;
case AbstractGroup.REFINING:
- sb.append(", refines supergroup");
+ sb.append(Globals.lang(", refines supergroup"));
break;
default:
break;
diff --git a/src/java/net/sf/jabref/gui/AutoCompleteListener.java b/src/java/net/sf/jabref/gui/AutoCompleteListener.java
index f23e851..1a9e1b2 100644
--- a/src/java/net/sf/jabref/gui/AutoCompleteListener.java
+++ b/src/java/net/sf/jabref/gui/AutoCompleteListener.java
@@ -2,6 +2,9 @@ package net.sf.jabref.gui;
import javax.swing.text.JTextComponent;
import javax.swing.text.BadLocationException;
+
+import net.sf.jabref.autocompleter.AbstractAutoCompleter;
+
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.FocusListener;
@@ -13,7 +16,7 @@ import java.awt.event.FocusEvent;
public class AutoCompleteListener extends KeyAdapter implements FocusListener {
- AutoCompleter completer;
+ AbstractAutoCompleter completer;
protected String toSetIn = null,
lastBeginning = null;
protected int lastCaretPosition = -1;
@@ -27,7 +30,7 @@ public class AutoCompleteListener extends KeyAdapter implements FocusListener {
// These variables keep track of the situation from time to time.
- public AutoCompleteListener(AutoCompleter completer) {
+ public AutoCompleteListener(AbstractAutoCompleter completer) {
this.completer = completer;
}
@@ -43,7 +46,7 @@ public class AutoCompleteListener extends KeyAdapter implements FocusListener {
}
public void keyPressed(KeyEvent e) {
- if ((toSetIn != null) && (e.getKeyCode() == KeyEvent.VK_ENTER)) {
+ if ((toSetIn != null) && (e.getKeyCode() == KeyEvent.VK_ENTER)) {
JTextComponent comp = (JTextComponent) e.getSource();
int end = comp.getSelectionEnd();
comp.select(end, end);
@@ -82,11 +85,11 @@ public class AutoCompleteListener extends KeyAdapter implements FocusListener {
//System.out.println("ToSetIn: '"+toSetIn+"'");
}
- public void keyTyped(KeyEvent e) {
-
+ public void keyTyped(KeyEvent e) {
char ch = e.getKeyChar();
if (Character.isLetter(ch)) {
JTextComponent comp = (JTextComponent) e.getSource();
+
if ((toSetIn != null) && (toSetIn.length() > 1) &&
(ch == toSetIn.charAt(1))) {
// User continues on the word that was suggested.
@@ -184,21 +187,8 @@ public class AutoCompleteListener extends KeyAdapter implements FocusListener {
}
-
- protected Object[] findCompletions(String beginning, JTextComponent comp) {
- Object[] completed;
- if (completer.isNameField()) {
- int nameStatus = findNamePositionStatus(comp);
- if (nameStatus == ANY_NAME)
- completed = completer.complete(beginning);
- else if (nameStatus == FIRST_NAME)
- completed = completer.completeName(beginning, false);
- else
- completed = completer.completeName(beginning, true);
- }
- else
- completed = completer.complete(beginning);
- return completed;
+ protected Object[] findCompletions(String beginning, JTextComponent comp) {
+ return completer.complete(beginning);
}
protected StringBuffer getCurrentWord(JTextComponent comp) {
@@ -262,6 +252,14 @@ public class AutoCompleteListener extends KeyAdapter implements FocusListener {
public void focusLost(FocusEvent event) {
if (lastCompletions != null) {
JTextComponent comp = (JTextComponent)event.getSource();
+ clearCurrentSuggestion(comp);
+ }
+ if (nextFocusListener != null)
+ nextFocusListener.focusLost(event);
+ }
+
+ public void clearCurrentSuggestion(JTextComponent comp) {
+ if (lastCompletions != null) {
int selStart = comp.getSelectionStart();
String text = comp.getText();
comp.setText(text.substring(0, selStart) + text.substring(comp.getSelectionEnd()));
@@ -271,7 +269,5 @@ public class AutoCompleteListener extends KeyAdapter implements FocusListener {
lastCaretPosition = -1;
toSetIn = null;
}
- if (nextFocusListener != null)
- nextFocusListener.focusLost(event);
}
}
diff --git a/src/java/net/sf/jabref/gui/AutoCompleter.java b/src/java/net/sf/jabref/gui/AutoCompleter.java
index 0d98442..e69de29 100644
--- a/src/java/net/sf/jabref/gui/AutoCompleter.java
+++ b/src/java/net/sf/jabref/gui/AutoCompleter.java
@@ -1,130 +0,0 @@
-package net.sf.jabref.gui;
-
-import net.sf.jabref.AuthorList;
-import net.sf.jabref.BibtexEntry;
-
-import java.util.StringTokenizer;
-import java.util.TreeSet;
-
-/**
- * Created by Morten O. Alver, 16 Feb. 2007
- */
-public class AutoCompleter {
- final int SHORTEST_WORD = 4,
- SHORTEST_TO_COMPLETE = 2;
-
- private TreeSet<String> words = new TreeSet<String>();
- private TreeSet<String> lastNames = null, firstNames = null;
- private boolean nameField = false, // Attempt to store entire names?
- // Crossref autocompleter should store info from the key field:
- crossRefField = false,
- entireField = false; // Set to true if the entire field should be stored
- // suitable e.g. for journal or publisher fields.
- public String fieldName;
-
- public AutoCompleter(String fieldName) {
- crossRefField = fieldName.equals("crossref");
- if (fieldName.equals("author") || fieldName.equals("editor")) {
- nameField = true;
- // Name fields separate first names and last names. First names are
- // put in the firstNames set, and last names in the lastNames set.
- // All names are stored in the words set:
- lastNames = new TreeSet<String>();
- firstNames = new TreeSet<String>();
- }
- else if (fieldName.equals("journal") || fieldName.equals("publisher"))
- entireField = true;
- }
-
-
- public boolean isNameField() {
- return nameField;
- }
-
- public boolean isSingleUnitField() {
- return entireField;
- }
-
- public void addWord(String word) {
- if (word.length() >= SHORTEST_WORD)
- words.add(word);
- }
-
- /**
- * Add the information from the given object to this autocompleter.
- * @param s The text string to add words from.
- * @param entry The entry containing the text, if any. If the autocompleter
- * requires information from a different field, this can be looked up
- * from the given entry. The entry can be null.
- */
- public void addAll(Object s, BibtexEntry entry) {
- if (crossRefField) {
- // Crossrefs reference bibtex keys, so we should add the words from
- // the key field instead of the crossref field:
- if (entry != null) {
- String key = entry.getCiteKey();
- if (key != null)
- addWord(key.trim());
- }
- } else if (s == null) {
- return;
- } else if (nameField) {
- AuthorList list = AuthorList.getAuthorList(s.toString());
- for (int i=0; i<list.size(); i++) {
- AuthorList.Author a = list.getAuthor(i);
- addName(a.getFirst(), false);
- addName(a.getLast(), true);
- }
- } else if (entireField) {
- addWord(s.toString().trim());
- } else {
- StringTokenizer tok = new StringTokenizer(s.toString(), " .,\n");
- while (tok.hasMoreTokens()) {
- String word = tok.nextToken();
- //Util.pr(word);
- addWord(word);
- }
- }
- }
-
- public void addName(String s, boolean lastName) {
- if (s == null)
- return;
- String[] parts = s.replace("\\.", "").split(" ");
- for (int i = 0; i < parts.length; i++) {
- String part = parts[i];
- if (part.length() >= SHORTEST_WORD) {
- words.add(part);
- if (lastName)
- lastNames.add(part);
- else
- firstNames.add(part);
- }
- }
- }
-
- public Object[] complete(String s) {
- return complete(s, words);
- }
-
- public Object[] completeName(String s, boolean lastName) {
- if (nameField) {
- if (lastName)
- return complete(s, lastNames);
- else
- return complete(s, firstNames);
- }
- else return null;
- }
-
- public Object[] complete(String s, TreeSet<String> set) {
- if (s.length() < SHORTEST_TO_COMPLETE)
- return null;
-
- char lastChar = s.charAt(s.length() - 1);
- String ender = s.substring(0, s.length() - 1)
- + Character.toString((char) (lastChar + 1));
- return set.subSet(s, ender).toArray();
- }
-
-}
diff --git a/src/java/net/sf/jabref/gui/FileListEditor.java b/src/java/net/sf/jabref/gui/FileListEditor.java
index de7aa19..cc52dfd 100644
--- a/src/java/net/sf/jabref/gui/FileListEditor.java
+++ b/src/java/net/sf/jabref/gui/FileListEditor.java
@@ -743,5 +743,11 @@ public class FileListEditor extends JTable implements FieldEditor,
}
public void addUndoableEditListener(UndoableEditListener listener) {
- }
+ }
+
+ public void setAutoCompleteListener(AutoCompleteListener listener) {
+ }
+
+ public void clearAutoCompleteSuggestion() {
+ }
}
diff --git a/src/java/net/sf/jabref/gui/MainTableSelectionListener.java b/src/java/net/sf/jabref/gui/MainTableSelectionListener.java
index 2cc1044..89c78e5 100644
--- a/src/java/net/sf/jabref/gui/MainTableSelectionListener.java
+++ b/src/java/net/sf/jabref/gui/MainTableSelectionListener.java
@@ -36,7 +36,7 @@ public class MainTableSelectionListener implements ListEventListener<BibtexEntry
KeyListener, FocusListener {
PreviewPanel[] previewPanel = null;
- int activePreview = 1;
+ int activePreview = 0;
PreviewPanel preview;
MainTable table;
BasePanel panel;
@@ -44,6 +44,8 @@ public class MainTableSelectionListener implements ListEventListener<BibtexEntry
private boolean previewActive = Globals.prefs.getBoolean("previewEnabled");
private boolean workingOnPreview = false;
+ private boolean enabled = true;
+
// Register the last character pressed to quick jump in the table. Together
// with storing the last row number jumped to, this is used to let multiple
// key strokes cycle between all entries starting with the same letter:
@@ -62,6 +64,10 @@ public class MainTableSelectionListener implements ListEventListener<BibtexEntry
this.preview = previewPanel[activePreview];
}
+ public void setEnabled(boolean enabled) {
+ this.enabled = enabled;
+ }
+
private void instantiatePreviews() {
previewPanel = new PreviewPanel[] {
new PreviewPanel(panel.database(), null, panel, panel.metaData(), Globals.prefs
@@ -83,6 +89,9 @@ public class MainTableSelectionListener implements ListEventListener<BibtexEntry
}
public void listChanged(ListEvent<BibtexEntry> e) {
+ if (!enabled) {
+ return;
+ }
EventList<BibtexEntry> selected = e.getSourceList();
Object newSelected = null;
while (e.next()) {
@@ -97,7 +106,6 @@ public class MainTableSelectionListener implements ListEventListener<BibtexEntry
}
}
-
if (newSelected != null) {
// Ok, we have a single new entry that has been selected. Now decide what to do with it:
@@ -107,14 +115,18 @@ public class MainTableSelectionListener implements ListEventListener<BibtexEntry
// An entry is currently being edited.
EntryEditor oldEditor = panel.getCurrentEditor();
String visName = null;
- if (oldEditor != null)
+ if (oldEditor != null) {
visName = oldEditor.getVisiblePanelName();
-
+ }
// Get an old or new editor for the entry to edit:
EntryEditor newEditor = panel.getEntryEditor(toShow);
+
+ if ((oldEditor != null))// && (oldEditor != newEditor))
+ oldEditor.setMovingToDifferentEntry();
+
// Show the new editor unless it was already visible:
if ((newEditor != oldEditor) || (mode != BasePanel.SHOWING_EDITOR)) {
-
+
if (visName != null)
newEditor.setVisiblePanel(visName);
panel.showEntryEditor(newEditor);
@@ -123,8 +135,8 @@ public class MainTableSelectionListener implements ListEventListener<BibtexEntry
table.ensureVisible(table.getSelectedRow());
}
});
-
}
+
} else {
// Either nothing or a preview was shown. Update the preview.
if (previewActive) {
diff --git a/src/java/net/sf/jabref/gui/SearchResultsDialog.java b/src/java/net/sf/jabref/gui/SearchResultsDialog.java
index a9de634..cd274b6 100644
--- a/src/java/net/sf/jabref/gui/SearchResultsDialog.java
+++ b/src/java/net/sf/jabref/gui/SearchResultsDialog.java
@@ -150,6 +150,14 @@ public class SearchResultsDialog {
diag.setVisible(visible);
}
+ public void selectFirstEntry() {
+ if (entryTable.getRowCount() > 0)
+ entryTable.setRowSelectionInterval(0,0);
+ else {
+ contentPane.setDividerLocation(1.0f);
+ }
+ }
+
/**
* Remove all entries from the table.
*/
diff --git a/src/java/net/sf/jabref/imports/BibsonomyScraper.java b/src/java/net/sf/jabref/imports/BibsonomyScraper.java
new file mode 100644
index 0000000..d95560f
--- /dev/null
+++ b/src/java/net/sf/jabref/imports/BibsonomyScraper.java
@@ -0,0 +1,47 @@
+package net.sf.jabref.imports;
+
+import net.sf.jabref.BibtexEntry;
+import net.sf.jabref.Util;
+import net.sf.jabref.net.URLDownload;
+
+import java.io.IOException;
+import java.io.StringReader;
+import java.net.URL;
+
+/**
+ * Convenience class for getting BibTeX entries from the BibSonomy scraper,
+ * from an URL pointing to an entry.
+ */
+public class BibsonomyScraper {
+
+ protected static final String BIBSONOMY_SCRAPER = "http://scraper.bibsonomy.org/service?url=";
+ protected static final String BIBSONOMY_SCRAPER_POST = "&format=bibtex";
+
+ /**
+ * Return a BibtexEntry by looking up the given url from the BibSonomy scraper.
+ * @param entryUrl
+ * @return
+ */
+ public static BibtexEntry getEntry(String entryUrl) {
+ try {
+ // Replace special characters by corresponding sequences:
+ entryUrl = entryUrl.replaceAll("%", "%25").replaceAll(":", "%3A").replaceAll("/", "%2F")
+ .replaceAll("\\?", "%3F").replaceAll("&", "%26").replaceAll("=", "%3D");
+
+ URL url = new URL(BIBSONOMY_SCRAPER+entryUrl+BIBSONOMY_SCRAPER_POST);
+ URLDownload ud = new URLDownload(url);
+ ud.download();
+ String bibtex = ud.getStringContent();
+ BibtexParser bp = new BibtexParser(new StringReader(bibtex));
+ ParserResult pr = bp.parse();
+ if ((pr != null) && (pr.getDatabase().getEntryCount() > 0)) {
+ return pr.getDatabase().getEntries().iterator().next();
+ }
+ else return null;
+
+ } catch (IOException ex) {
+ ex.printStackTrace();
+ return null;
+ }
+ }
+}
diff --git a/src/java/net/sf/jabref/imports/GeneralFetcher.java b/src/java/net/sf/jabref/imports/GeneralFetcher.java
index eccbdca..6d7320b 100644
--- a/src/java/net/sf/jabref/imports/GeneralFetcher.java
+++ b/src/java/net/sf/jabref/imports/GeneralFetcher.java
@@ -43,8 +43,9 @@ public class GeneralFetcher extends SidePaneComponent implements ActionListener
JPanel pan = new JPanel();
GridBagLayout gbl = new GridBagLayout();
GridBagConstraints con = new GridBagConstraints();
- JButton go = new JButton(Globals.lang("Fetch")),
- helpBut = new JButton(GUIGlobals.getImage("helpSmall"));
+ JButton go = new JButton(Globals.lang("Fetch")), helpBut = new JButton(
+ GUIGlobals.getImage("helpSmall")), reset = new JButton(Globals
+ .lang("Reset"));
HelpAction help;
EntryFetcher fetcher;
SidePaneManager sidePaneManager;
@@ -63,6 +64,15 @@ public class GeneralFetcher extends SidePaneComponent implements ActionListener
helpBut.addActionListener(help);
helpBut.setMargin(new Insets(0, 0, 0, 0));
tf.setPreferredSize(new Dimension(1,tf.getPreferredSize().height));
+
+ tf.setName("tf");
+ // add action to reset-button. resets tf and requests focus
+ reset.addActionListener(new AbstractAction() {
+ public void actionPerformed(ActionEvent event) {
+ tf.setText("");
+ new FocusRequester(tf);
+ }
+ });
JPanel main = new JPanel();
main.setLayout(gbl);
@@ -79,14 +89,20 @@ public class GeneralFetcher extends SidePaneComponent implements ActionListener
// Go Button
con.weighty = 0;
- if (fetcher.getHelpPage() != null){
- con.gridwidth = 1;
- } else {
- con.gridwidth = GridBagConstraints.REMAINDER;
- }
+ con.gridwidth = 1;
gbl.setConstraints(go, con);
main.add(go);
+ // Reset Button
+ if (fetcher.getHelpPage() != null) {
+ con.gridwidth = 1;
+ } else {
+ con.gridwidth = GridBagConstraints.REMAINDER;
+ }
+ reset.setName("reset");
+ gbl.setConstraints(reset, con);
+ main.add(reset);
+
// Help Button
if (fetcher.getHelpPage() != null) {
con.gridwidth = GridBagConstraints.REMAINDER;
diff --git a/src/java/net/sf/jabref/imports/JSTORFetcher2.java b/src/java/net/sf/jabref/imports/JSTORFetcher2.java
new file mode 100644
index 0000000..ff6ec34
--- /dev/null
+++ b/src/java/net/sf/jabref/imports/JSTORFetcher2.java
@@ -0,0 +1,168 @@
+package net.sf.jabref.imports;
+
+import net.sf.jabref.BibtexEntry;
+import net.sf.jabref.GUIGlobals;
+import net.sf.jabref.Globals;
+import net.sf.jabref.OutputPrinter;
+import net.sf.jabref.net.URLDownload;
+
+import javax.swing.*;
+import java.io.*;
+import java.net.URL;
+import java.net.URLConnection;
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.StringTokenizer;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+
+public class JSTORFetcher2 implements EntryFetcher {
+
+ protected static int MAX_PAGES_TO_LOAD = 8;
+ protected static final String JSTOR_URL = "http://www.jstor.org";
+ protected static final String SEARCH_URL = JSTOR_URL+"/action/doBasicSearch?Query=";
+ protected static final String SEARCH_URL_END = "&x=0&y=0&wc=on";
+ protected static final String SINGLE_CIT_ENC =
+ "http://www.jstor.org/action/exportSingleCitation?singleCitation=true&suffix=";
+ //"http%3A%2F%2Fwww.jstor.org%2Faction%2FexportSingleCitation%3FsingleCitation"
+ //+"%3Dtrue%26suffix%3D";
+
+ protected static final Pattern idPattern = Pattern.compile(
+ "<a class=\"title\" href=\"/stable/(\\d+)\\?");
+
+ protected static final Pattern nextPagePattern = Pattern.compile(
+ "<a href=\"(.*)\">Next >");
+
+ protected static final String noAccessIndicator = "We do not recognize you as having access to JSTOR";
+
+ protected boolean stopFetching = false;
+ protected boolean noAccessFound = false;
+
+ public String getHelpPage() {
+ return "JSTOR.html";
+ }
+
+ public URL getIcon() {
+ return GUIGlobals.getIconUrl("www");
+ }
+
+ public String getKeyName() {
+ return "Search JSTOR";
+ }
+
+ public JPanel getOptionsPanel() {
+ // No Options panel
+ return null;
+ }
+
+ public String getTitle() {
+ return Globals.menuTitle("Search JSTOR");
+ }
+
+ public void stopFetching() {
+ stopFetching = true;
+ noAccessFound = false;
+ }
+
+ public boolean processQuery(String query, ImportInspector dialog, OutputPrinter status) {
+ stopFetching = false;
+ try {
+ List<String> citations = getCitations(query);
+ if (citations == null)
+ return false;
+ if (citations.size() == 0){
+ if (!noAccessFound)
+ status.showMessage(Globals.lang("No entries found for the search string '%0'",
+ query),
+ Globals.lang("Search JSTOR"), JOptionPane.INFORMATION_MESSAGE);
+ else {
+ status.showMessage(Globals.lang("No entries found. It looks like you do not have access to search JStor.",
+ query),
+ Globals.lang("Search JSTOR"), JOptionPane.INFORMATION_MESSAGE);
+ }
+ return false;
+ }
+
+ int i=0;
+ for (String cit : citations) {
+ if (stopFetching)
+ break;
+ BibtexEntry entry = getSingleCitation(cit);
+ if (entry != null)
+ dialog.addEntry(entry);
+ dialog.setProgress(++i, citations.size());
+ }
+
+ return true;
+
+ } catch (IOException e) {
+ e.printStackTrace();
+ status.showMessage(Globals.lang("Error while fetching from JSTOR") + ": " + e.getMessage());
+ }
+ return false;
+ }
+
+ /**
+ *
+ * @param query
+ * The search term to query JStor for.
+ * @return a list of IDs
+ * @throws java.io.IOException
+ */
+ protected List<String> getCitations(String query) throws IOException {
+ String urlQuery;
+ ArrayList<String> ids = new ArrayList<String>();
+ try {
+ urlQuery = SEARCH_URL + URLEncoder.encode(query, "UTF-8") + SEARCH_URL_END;
+ int count = 1;
+ String nextPage = null;
+ while (((nextPage = getCitationsFromUrl(urlQuery, ids)) != null)
+ && (count < MAX_PAGES_TO_LOAD)) {
+ urlQuery = nextPage;
+ count++;
+ }
+ return ids;
+ } catch (UnsupportedEncodingException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ protected String getCitationsFromUrl(String urlQuery, List<String> ids) throws IOException {
+ URL url = new URL(urlQuery);
+ URLDownload ud = new URLDownload(url);
+ ud.download();
+
+ String cont = ud.getStringContent();
+ String entirePage = cont;
+
+ Matcher m = idPattern.matcher(cont);
+ if (m.find()) {
+ while (m.find()) {
+ ids.add(m.group(1));
+ cont = cont.substring(m.end());
+ m = idPattern.matcher(cont);
+ }
+ }
+ else if (entirePage.indexOf(noAccessIndicator) >= 0) {
+ noAccessFound = true;
+ return null;
+ }
+ else {
+ return null;
+ }
+ m = nextPagePattern.matcher(entirePage);
+ if (m.find()) {
+ String newQuery = JSTOR_URL+m.group(1);
+ return newQuery;
+ }
+ else
+ return null;
+ }
+
+ protected BibtexEntry getSingleCitation(String cit) {
+ return BibsonomyScraper.getEntry(SINGLE_CIT_ENC+cit);
+ }
+
+}
\ No newline at end of file
diff --git a/src/java/net/sf/jabref/imports/OAI2Fetcher.java b/src/java/net/sf/jabref/imports/OAI2Fetcher.java
index 0f27a87..3fa0e49 100644
--- a/src/java/net/sf/jabref/imports/OAI2Fetcher.java
+++ b/src/java/net/sf/jabref/imports/OAI2Fetcher.java
@@ -124,7 +124,7 @@ public class OAI2Fetcher implements EntryFetcher {
* Construct the query URL
*
* @param key
- * The key of the OAI2 entry that the url should poitn to.
+ * The key of the OAI2 entry that the url should point to.
*
* @return a String denoting the query URL
*/
@@ -146,7 +146,7 @@ public class OAI2Fetcher implements EntryFetcher {
}
/**
- * Strip subccategories from ArXiv key.
+ * Strip subcategories from ArXiv key.
*
* @param key The key to fix.
* @return Fixed key.
diff --git a/src/java/net/sf/jabref/imports/ScienceDirectFetcher.java b/src/java/net/sf/jabref/imports/ScienceDirectFetcher.java
new file mode 100644
index 0000000..cc7e276
--- /dev/null
+++ b/src/java/net/sf/jabref/imports/ScienceDirectFetcher.java
@@ -0,0 +1,151 @@
+package net.sf.jabref.imports;
+
+import net.sf.jabref.BibtexEntry;
+import net.sf.jabref.GUIGlobals;
+import net.sf.jabref.Globals;
+import net.sf.jabref.OutputPrinter;
+import net.sf.jabref.net.URLDownload;
+
+import javax.swing.*;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URL;
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+
+public class ScienceDirectFetcher implements EntryFetcher {
+
+ protected static int MAX_PAGES_TO_LOAD = 8;
+ protected static final String WEBSITE_URL = "http://www.sciencedirect.com";
+ protected static final String SEARCH_URL = WEBSITE_URL +"/science/quicksearch?query=";
+
+ protected static final String linkPrefix = "http://www.sciencedirect.com/science?_ob=ArticleURL&" ;
+ protected static final Pattern linkPattern = Pattern.compile(
+ "<a href=\""+
+ linkPrefix.replaceAll("\\?", "\\\\?")+
+ "([^\"]+)\"\"");
+
+ protected static final Pattern nextPagePattern = Pattern.compile(
+ "<a href=\"(.*)\">Next >");
+
+
+ protected boolean stopFetching = false;
+ protected boolean noAccessFound = false;
+
+ public String getHelpPage() {
+ return "ScienceDirect.html";
+ }
+
+ public URL getIcon() {
+ return GUIGlobals.getIconUrl("www");
+ }
+
+ public String getKeyName() {
+ return "Search ScienceDirect";
+ }
+
+ public JPanel getOptionsPanel() {
+ // No Options panel
+ return null;
+ }
+
+ public String getTitle() {
+ return Globals.menuTitle("Search ScienceDirect");
+ }
+
+ public void stopFetching() {
+ stopFetching = true;
+ noAccessFound = false;
+ }
+
+ public boolean processQuery(String query, ImportInspector dialog, OutputPrinter status) {
+ stopFetching = false;
+ try {
+ List<String> citations = getCitations(query);
+ if (citations == null)
+ return false;
+ if (citations.size() == 0){
+ status.showMessage(Globals.lang("No entries found for the search string '%0'",
+ query),
+ Globals.lang("Search ScienceDirect"), JOptionPane.INFORMATION_MESSAGE);
+ return false;
+ }
+
+ int i=0;
+ for (String cit : citations) {
+ if (stopFetching)
+ break;
+ BibtexEntry entry = BibsonomyScraper.getEntry(cit);
+ if (entry != null)
+ dialog.addEntry(entry);
+ dialog.setProgress(++i, citations.size());
+ }
+
+ return true;
+
+ } catch (IOException e) {
+ e.printStackTrace();
+ status.showMessage(Globals.lang("Error while fetching from ScienceDirect") + ": " + e.getMessage());
+ }
+ return false;
+ }
+
+ /**
+ *
+ * @param query
+ * The search term to query JStor for.
+ * @return a list of IDs
+ * @throws java.io.IOException
+ */
+ protected List<String> getCitations(String query) throws IOException {
+ String urlQuery;
+ ArrayList<String> ids = new ArrayList<String>();
+ try {
+ urlQuery = SEARCH_URL + URLEncoder.encode(query, "UTF-8");
+ int count = 1;
+ String nextPage = null;
+ while (((nextPage = getCitationsFromUrl(urlQuery, ids)) != null)
+ && (count < MAX_PAGES_TO_LOAD)) {
+ urlQuery = nextPage;
+ count++;
+ }
+ return ids;
+ } catch (UnsupportedEncodingException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ protected String getCitationsFromUrl(String urlQuery, List<String> ids) throws IOException {
+ URL url = new URL(urlQuery);
+ URLDownload ud = new URLDownload(url);
+ ud.download();
+
+ String cont = ud.getStringContent();
+ //String entirePage = cont;
+ Matcher m = linkPattern.matcher(cont);
+ if (m.find()) {
+ while (m.find()) {
+ ids.add(linkPrefix+m.group(1));
+ cont = cont.substring(m.end());
+ m = linkPattern.matcher(cont);
+ }
+ }
+
+ else {
+ return null;
+ }
+ /*m = nextPagePattern.matcher(entirePage);
+ if (m.find()) {
+ String newQuery = WEBSITE_URL +m.group(1);
+ return newQuery;
+ }
+ else*/
+ return null;
+ }
+
+
+}
\ No newline at end of file
diff --git a/src/java/net/sf/jabref/labelPattern/LabelPatternUtil.java b/src/java/net/sf/jabref/labelPattern/LabelPatternUtil.java
index f2d165a..f7ef809 100644
--- a/src/java/net/sf/jabref/labelPattern/LabelPatternUtil.java
+++ b/src/java/net/sf/jabref/labelPattern/LabelPatternUtil.java
@@ -619,7 +619,8 @@ public class LabelPatternUtil {
authors = authors.concat(firstAuthor[j].substring(0,1));
}
// append last part of last name completely
- authors = authors.concat(firstAuthor[firstAuthor.length-1].substring(0,3));
+ authors = authors.concat(firstAuthor[firstAuthor.length-1].substring(0,
+ Math.min(3, firstAuthor[firstAuthor.length-1].length())));
} else {
for (int i = 0; i < max; i++) {
// replace all whitespaces by " "
diff --git a/src/java/net/sf/jabref/msbib/MSBibEntry.java b/src/java/net/sf/jabref/msbib/MSBibEntry.java
index 75e4d96..6e5b1b0 100644
--- a/src/java/net/sf/jabref/msbib/MSBibEntry.java
+++ b/src/java/net/sf/jabref/msbib/MSBibEntry.java
@@ -338,8 +338,8 @@ public class MSBibEntry {
if (bibtex.getField("journal") != null)
journalName = bibtex.getField("journal").toString();
- if (bibtex.getField("issue") != null)
- issue = bibtex.getField("issue").toString();
+ if (bibtex.getField("number") != null)
+ issue = bibtex.getField("number").toString();
if (bibtex.getField(MSBIB+"periodical") != null)
periodicalTitle = bibtex.getField(MSBIB+"periodical").toString();
diff --git a/src/java/net/sf/jabref/net/CookieHandlerImpl.java b/src/java/net/sf/jabref/net/CookieHandlerImpl.java
index 63e4c9d..894ef5a 100644
--- a/src/java/net/sf/jabref/net/CookieHandlerImpl.java
+++ b/src/java/net/sf/jabref/net/CookieHandlerImpl.java
@@ -36,12 +36,13 @@ public class CookieHandlerImpl extends CookieHandler {
Cookie cookie = new Cookie(uri, item);
// Remove cookie if it already exists
// New one will replace
- for (Cookie existingCookie : cache) {
+ for (Iterator<Cookie> i = cache.iterator(); i.hasNext();) {
+ Cookie existingCookie = i.next();
if ((cookie.getURI().equals(
existingCookie.getURI())) &&
(cookie.getName().equals(
existingCookie.getName()))) {
- cache.remove(existingCookie);
+ i.remove();
break;
}
}
@@ -70,10 +71,12 @@ public class CookieHandlerImpl extends CookieHandler {
// Retrieve all the cookies for matching URI
// Put in comma-separated list
StringBuilder cookies = new StringBuilder();
- for (Cookie cookie : cache) {
+ for (Iterator<Cookie> i = cache.iterator(); i.hasNext();) {
+ //for (Cookie cookie : cache) {
+ Cookie cookie = i.next();
// Remove cookies that have expired
if (cookie.hasExpired()) {
- cache.remove(cookie);
+ i.remove();
} else if (cookie.matches(uri)) {
if (cookies.length() > 0) {
cookies.append(", ");
diff --git a/src/java/net/sf/jabref/net/URLDownload.java b/src/java/net/sf/jabref/net/URLDownload.java
index 1d780b9..1be4996 100644
--- a/src/java/net/sf/jabref/net/URLDownload.java
+++ b/src/java/net/sf/jabref/net/URLDownload.java
@@ -23,14 +23,37 @@ public class URLDownload {
private File dest;
private Component parent;
private String mimeType = null;
+ private String content = null;
private CookieHandler cm;
+ /**
+ * URL download to a string. After construction, call download() and then getStringContent().
+ * @param _source The URL to download.
+ */
+ public URLDownload(URL _source) {
+ this.source = _source;
+ this.dest = null;
+ this.parent = null;
+
+ setCookieHandler();
+ }
+
+ /**
+ * URL download to a file. After construction, call download().
+ * @param _parent Parent component.
+ * @param _source The URL to download.
+ * @param _dest The file to download into.
+ */
public URLDownload(Component _parent, URL _source, File _dest) {
source = _source;
dest = _dest;
parent = _parent;
+ setCookieHandler();
+ }
+
+ private void setCookieHandler() {
try {
// This should set up JabRef to receive cookies properly
if ((cm = CookieHandler.getDefault()) == null) {
@@ -47,6 +70,19 @@ public class URLDownload {
return mimeType;
}
+ public URLConnection getURLConnection() {
+ return con;
+ }
+
+ /**
+ * This method can be used after download() has been called, to get the contents
+ * of the download, provided this URLDownload was created with the constructor
+ * that takes no File argument.
+ */
+ public String getStringContent() {
+ return content;
+ }
+
public void openConnectionOnly() throws IOException {
con = source.openConnection();
con.setRequestProperty("User-Agent", "Jabref");
@@ -60,10 +96,46 @@ public class URLDownload {
con.setRequestProperty("User-Agent", "Jabref");
mimeType = con.getContentType();
}
+ if (dest != null)
+ downloadToFile();
+ else
+ downloadToString();
+ }
+
+ protected void downloadToString() throws IOException {
+
+ InputStream input = new BufferedInputStream(con.getInputStream());
+ Writer output = new StringWriter();
+
+ try
+ {
+ copy(input, output);
+ }
+ catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+ finally
+ {
+ try
+ {
+ input.close();
+ output.close();
+ }
+ catch (Exception e)
+ {
+ }
+ }
+
+ content = output.toString();
+ }
+
+
+ protected void downloadToFile() throws IOException {
InputStream input = new BufferedInputStream(con.getInputStream());
OutputStream output = new BufferedOutputStream(new FileOutputStream(dest));
-
+
try
{
copy(input, output);
@@ -95,5 +167,17 @@ public class URLDownload {
if(bytesRead == -1) break;
out.write(buffer, 0, bytesRead);
}
- }
+ }
+
+ public void copy(InputStream in, Writer out) throws IOException
+ {
+ InputStream _in = new ProgressMonitorInputStream(parent, "Downloading " + source.toString(), in);
+ BufferedReader read = new BufferedReader(new InputStreamReader(_in));
+ byte[] buffer = new byte[512];
+ String line;
+ while ((line = read.readLine()) != null) {
+ out.write(line);
+ out.write("\n");
+ }
+ }
}
diff --git a/src/java/tests/net/sf/jabref/TestUtils.java b/src/java/tests/net/sf/jabref/TestUtils.java
new file mode 100644
index 0000000..7b1f6fd
--- /dev/null
+++ b/src/java/tests/net/sf/jabref/TestUtils.java
@@ -0,0 +1,40 @@
+package tests.net.sf.jabref;
+
+import java.awt.Component;
+import java.awt.Container;
+
+/**
+ * Provides helper methods for unit testing such as methods for making testing
+ * of GUIs easier.
+ *
+ * @author Dennis Hartrampf, Ines Moosdorf
+ */
+public class TestUtils {
+ /**
+ * Get a Component by name.
+ *
+ * @param parent
+ * The parent Component, where to search in.
+ * @param name
+ * The name of the Component to find.
+ * @return The Component with the given name or null if no
+ * such Component.
+ */
+ public static Component getChildNamed(Component parent, String name) {
+ if (name.equals(parent.getName())) {
+ return parent;
+ }
+
+ if (parent instanceof Container) {
+ Component[] children = ((Container) parent).getComponents();
+
+ for (int i = 0; i < children.length; ++i) {
+ Component child = getChildNamed(children[i], name);
+ if (child != null) {
+ return child;
+ }
+ }
+ }
+ return null;
+ }
+}
diff --git a/src/java/tests/net/sf/jabref/gui/AutoCompleterTest.java b/src/java/tests/net/sf/jabref/gui/AutoCompleterTest.java
new file mode 100644
index 0000000..56cdb97
--- /dev/null
+++ b/src/java/tests/net/sf/jabref/gui/AutoCompleterTest.java
@@ -0,0 +1,164 @@
+package tests.net.sf.jabref.gui;
+
+import java.awt.event.ActionEvent;
+import java.io.File;
+
+import junit.framework.TestCase;
+import net.sf.jabref.BibtexDatabase;
+import net.sf.jabref.BibtexEntry;
+import net.sf.jabref.EntryEditor;
+import net.sf.jabref.FieldEditor;
+import net.sf.jabref.FieldTextArea;
+import net.sf.jabref.Globals;
+import net.sf.jabref.JabRef;
+import net.sf.jabref.JabRefPreferences;
+import net.sf.jabref.autocompleter.AbstractAutoCompleter;
+import net.sf.jabref.autocompleter.AutoCompleterFactory;
+import net.sf.jabref.autocompleter.DefaultAutoCompleter;
+import net.sf.jabref.autocompleter.NameFieldAutoCompleter;
+import net.sf.jabref.imports.ParserResult;
+import tests.net.sf.jabref.testutils.TestUtils;
+
+/**
+ *
+ * @author kahlert, cordes
+ *
+ */
+public class AutoCompleterTest extends TestCase {
+
+ private static final String OTHER_FIELD = "title";
+ private static final String AUTHOR_FIELD = "author";
+ private static final String CROSSREF_FIELD = "crossref";
+ private static final String ENTIRE_FIELD = "journal";
+
+ public static final String PATH_TO_TEST_BIBTEX = "src/tests/net/sf/jabref/bibtexFiles/test.bib";
+
+ public void testAutoCompleterFactory() {
+ AbstractAutoCompleter autoCompleter = AutoCompleterFactory.getFor(AUTHOR_FIELD);
+ assertTrue(autoCompleter instanceof NameFieldAutoCompleter);
+
+ autoCompleter = AutoCompleterFactory.getFor(OTHER_FIELD);
+ assertTrue(autoCompleter instanceof DefaultAutoCompleter);
+ }
+
+ public void testDefaultAutoCompleter() {
+ AbstractAutoCompleter autoCompleter = AutoCompleterFactory.getFor(OTHER_FIELD);
+ for (BibtexEntry entry : getDatabse().getEntries()) {
+ autoCompleter.addBibtexEntry(entry);
+ }
+ assertEquals("authentication", autoCompleter.complete("authentication")[0]);
+ assertEquals(1, autoCompleter.complete("authentication").length);
+ assertEquals("authentication", autoCompleter.complete("aut")[0]);
+ assertEquals(1, autoCompleter.complete("aut").length);
+ assertEquals("context", autoCompleter.complete("con")[0]);
+ assertEquals(1, autoCompleter.complete("con").length);
+ assertEquals(0, autoCompleter.complete("osta").length);
+ assertEquals(0, autoCompleter.complete("osta").length);
+ }
+
+ public void testCrossRefCompleter() {
+ AbstractAutoCompleter autoCompleter = AutoCompleterFactory.getFor(CROSSREF_FIELD);
+ for (BibtexEntry entry : getDatabse().getEntries()) {
+ autoCompleter.addBibtexEntry(entry);
+ }
+ assertEquals("1102917", autoCompleter.complete("1102917")[0]);
+ assertEquals(1, autoCompleter.complete("1102917").length);
+ assertEquals("1102917", autoCompleter.complete("11029")[0]);
+ assertEquals(1, autoCompleter.complete("11029").length);
+ assertEquals(0, autoCompleter.complete("osta").length);
+ assertEquals(0, autoCompleter.complete("osta").length);
+ }
+
+ public void testEntireFieldCompleter() {
+ AbstractAutoCompleter autoCompleter = AutoCompleterFactory.getFor(ENTIRE_FIELD);
+ for (BibtexEntry entry : getDatabse().getEntries()) {
+ autoCompleter.addBibtexEntry(entry);
+ }
+ assertEquals("Personal Ubiquitous Comput.", autoCompleter.complete("Personal Ubiquitous Comput.")[0]);
+ assertEquals(1, autoCompleter.complete("Personal Ubiquitous Comput.").length);
+ assertEquals("Personal Ubiquitous Comput.", autoCompleter.complete("Pers")[0]);
+ assertEquals(1, autoCompleter.complete("Pers").length);
+ assertEquals(0, autoCompleter.complete("osta").length);
+ assertEquals(0, autoCompleter.complete("osta").length);
+ }
+
+ public void testNameFieldCompleter() {
+ AbstractAutoCompleter autoCompleter = AutoCompleterFactory.getFor(AUTHOR_FIELD);
+ for (BibtexEntry entry : getDatabse().getEntries()) {
+ autoCompleter.addBibtexEntry(entry);
+ }
+ assertEquals("Kostakos, V.", autoCompleter.complete("Kostakos")[0]);
+ assertEquals(2, autoCompleter.complete("Kostakos").length);
+ assertEquals("Kostakos, V.", autoCompleter.complete("Kosta")[0]);
+ assertEquals(2, autoCompleter.complete("Kosta").length);
+ assertEquals("Kostakos, Vassilis", autoCompleter.complete("Kostakos, Va")[0]);
+ assertEquals(1, autoCompleter.complete("Kostakos, Va").length);
+ assertEquals("Vassilis Kostakos", autoCompleter.complete("Va")[0]);
+ assertEquals(1, autoCompleter.complete("Va").length);
+ assertEquals(0, autoCompleter.complete("osta").length);
+ assertEquals(0, autoCompleter.complete("osta").length);
+
+ assertEquals("Eric von Hippel", autoCompleter.complete("Eric")[0]);
+ assertEquals(1, autoCompleter.complete("Eric").length);
+ assertEquals("von Hippel, E.", autoCompleter.complete("von")[0]);
+ assertEquals(2, autoCompleter.complete("von").length);
+
+ assertEquals("Reagle, Jr., J. M.", autoCompleter.complete("Reagle")[0]);
+ assertEquals(2, autoCompleter.complete("Reagle").length);
+ assertEquals("Reagle, Jr., Joseph M.", autoCompleter.complete("Reagle, Jr., Jo")[0]);
+ assertEquals(1, autoCompleter.complete("Reagle, Jr., Jo").length);
+ assertEquals("Joseph M. Reagle, Jr.", autoCompleter.complete("Joseph")[0]);
+ assertEquals(1, autoCompleter.complete("Joseph").length);
+
+ assertEquals("van den Huevel, Jr., J. A.", autoCompleter.complete("van den")[0]);
+ assertEquals(2, autoCompleter.complete("van den").length);
+ assertEquals("Johan A van den Huevel, Jr.", autoCompleter.complete("Joh")[0]);
+ assertEquals(1, autoCompleter.complete("Joh").length);
+
+ assertEquals("Jr. Sherry, John F.", autoCompleter.complete("Jr. S")[0]);
+ assertEquals(1, autoCompleter.complete("Jr.").length);
+ assertEquals("Sherry, John F., J.", autoCompleter.complete("Sherry")[0]);
+ assertEquals(2, autoCompleter.complete("Sherry").length);
+ }
+
+ public void testEntryEditorForNameFieldAutoCompleter() {
+ // construct an EntryEditor ...
+ JabRef jabref = TestUtils.getInitializedJabRef();
+ BibtexEntry bibtexEntry = new BibtexEntry();
+ bibtexEntry.setField("author", "Brigitte Laurant");
+ FieldEditor authorTextField = new FieldTextArea("author", "Hans Meiser");
+ EntryEditor editor = new EntryEditor(jabref.jrf, jabref.jrf.basePanel(), bibtexEntry);
+ // perform action ...
+ editor.storeFieldAction.actionPerformed(new ActionEvent(authorTextField, 0, ""));
+ // test content of stored words in autocompleter ...
+ AbstractAutoCompleter autoCompleter = jabref.jrf.basePanel().getAutoCompleter("author");
+ assertTrue(autoCompleter.indexContainsWord("Hans Meiser"));
+ assertTrue(autoCompleter.indexContainsWord("Meiser, Hans"));
+
+ TestUtils.closeJabRef();
+ }
+
+ public void testEntryEditorForFieldAnotherAutoCompleter() {
+ // construct an EntryEditor ...
+ JabRef jabref = TestUtils.getInitializedJabRef();
+ BibtexEntry bibtexEntry = new BibtexEntry();
+ bibtexEntry.setField("journal", "Testtext");
+ FieldEditor authorTextField = new FieldTextArea("journal", "New Testtext");
+ EntryEditor editor = new EntryEditor(jabref.jrf, jabref.jrf.basePanel(), bibtexEntry);
+ // perform action ...
+ editor.storeFieldAction.actionPerformed(new ActionEvent(authorTextField, 0, ""));
+ // test content of stored words in autocompleter ...
+ AbstractAutoCompleter autoCompleter = jabref.jrf.basePanel().getAutoCompleter("journal");
+ assertTrue(autoCompleter.indexContainsWord("New Testtext"));
+
+ TestUtils.closeJabRef();
+ }
+
+ private BibtexDatabase getDatabse() {
+ Globals.prefs = JabRefPreferences.getInstance();
+ File fileToLoad = new File(PATH_TO_TEST_BIBTEX);
+ ParserResult pr = JabRef.openBibFile(fileToLoad.getPath(), true);
+ BibtexDatabase filledDatabase = pr.getDatabase();
+ return filledDatabase;
+ }
+}
diff --git a/src/java/tests/net/sf/jabref/imports/AllTests.java b/src/java/tests/net/sf/jabref/imports/AllTests.java
index fde72a0..821a1d5 100644
--- a/src/java/tests/net/sf/jabref/imports/AllTests.java
+++ b/src/java/tests/net/sf/jabref/imports/AllTests.java
@@ -12,6 +12,7 @@ public class AllTests {
suite.addTestSuite(IsiImporterTest.class);
suite.addTestSuite(CopacImporterTest.class);
suite.addTestSuite(BibtexParserTest.class);
+ suite.addTestSuite(GeneralFetcherTest.class);
//$JUnit-END$
return suite;
}
diff --git a/src/java/tests/net/sf/jabref/imports/GeneralFetcherTest.java b/src/java/tests/net/sf/jabref/imports/GeneralFetcherTest.java
new file mode 100644
index 0000000..fc803f3
--- /dev/null
+++ b/src/java/tests/net/sf/jabref/imports/GeneralFetcherTest.java
@@ -0,0 +1,63 @@
+package tests.net.sf.jabref.imports;
+
+import javax.swing.JButton;
+import javax.swing.JTextField;
+
+import tests.net.sf.jabref.TestUtils;
+
+import net.sf.jabref.JabRef;
+import net.sf.jabref.JabRefFrame;
+import net.sf.jabref.SidePaneManager;
+import net.sf.jabref.imports.ACMPortalFetcher;
+import net.sf.jabref.imports.GeneralFetcher;
+import junit.framework.TestCase;
+
+/**
+ * Tests GeneralFetcher
+ *
+ * @author Dennis Hartrampf, Ines Moosdorf
+ */
+public class GeneralFetcherTest extends TestCase {
+ static JabRefFrame jrf;
+ static SidePaneManager spm;
+ static GeneralFetcher gf;
+ static ACMPortalFetcher acmpf;
+
+ /**
+ * Tests the reset-button. Types a text into tf, pushs reset and check tf's
+ * text
+ *
+ * @throws Exception
+ */
+ public void testResetButton() throws Exception {
+ String testString = "test string";
+ JTextField tf = (JTextField) TestUtils.getChildNamed(gf, "tf");
+ assertNotNull(tf); // tf found?
+ tf.setText(testString);
+ tf.postActionEvent(); // send message
+ assertEquals(testString, tf.getText());
+ JButton reset = (JButton) TestUtils.getChildNamed(gf, "reset");
+ assertNotNull(reset); // reset found?
+ reset.doClick(); // "click" reset
+ assertEquals("", tf.getText());
+ }
+
+ /**
+ * Get an instance of JabRef via its singleton and get a GeneralFetcher and an ACMPortalFetcher
+ */
+ public void setUp() {
+ JabRef.main(new String[0]);
+ jrf = JabRef.singleton.jrf;
+ spm = jrf.sidePaneManager;
+ acmpf = new ACMPortalFetcher();
+ gf = new GeneralFetcher(spm, jrf, acmpf);
+ }
+
+ public void tearDown() {
+ gf = null;
+ acmpf = null;
+ spm = null;
+ jrf = null;
+ }
+
+}
diff --git a/src/java/tests/net/sf/jabref/imports/RISImporterTest.java b/src/java/tests/net/sf/jabref/imports/RISImporterTest.java
new file mode 100644
index 0000000..6d4ab4f
--- /dev/null
+++ b/src/java/tests/net/sf/jabref/imports/RISImporterTest.java
@@ -0,0 +1,107 @@
+package tests.net.sf.jabref.imports;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.List;
+
+import junit.framework.TestCase;
+import net.sf.jabref.BibtexEntry;
+import net.sf.jabref.BibtexEntryType;
+import net.sf.jabref.Globals;
+import net.sf.jabref.JabRefPreferences;
+import net.sf.jabref.imports.IsiImporter;
+import net.sf.jabref.imports.RisImporter;
+
+/**
+ * Test cases for the RISImporter
+ *
+ * @author $Author: coezbek $
+ *
+ */
+public class RISImporterTest extends TestCase {
+
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ if (Globals.prefs == null) {
+ Globals.prefs = JabRefPreferences.getInstance();
+ }
+ }
+
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ }
+
+ public void testIsRecognizedFormat() throws IOException {
+
+ RisImporter importer = new RisImporter();
+ assertTrue(importer.isRecognizedFormat(RISImporterTest.class
+ .getResourceAsStream("RisImporterTest1.ris")));
+ }
+
+ public void testProcessSubSup() {
+
+ HashMap<String, String> hm = new HashMap<String, String>();
+ hm.put("title", "/sub 3/");
+ IsiImporter.processSubSup(hm);
+ assertEquals("$_3$", hm.get("title"));
+
+ hm.put("title", "/sub 3 /");
+ IsiImporter.processSubSup(hm);
+ assertEquals("$_3$", hm.get("title"));
+
+ hm.put("title", "/sub 31/");
+ IsiImporter.processSubSup(hm);
+ assertEquals("$_{31}$", hm.get("title"));
+
+ hm.put("abstract", "/sub 3/");
+ IsiImporter.processSubSup(hm);
+ assertEquals("$_3$", hm.get("abstract"));
+
+ hm.put("review", "/sub 31/");
+ IsiImporter.processSubSup(hm);
+ assertEquals("$_{31}$", hm.get("review"));
+
+ hm.put("title", "/sup 3/");
+ IsiImporter.processSubSup(hm);
+ assertEquals("$^3$", hm.get("title"));
+
+ hm.put("title", "/sup 31/");
+ IsiImporter.processSubSup(hm);
+ assertEquals("$^{31}$", hm.get("title"));
+
+ hm.put("abstract", "/sup 3/");
+ IsiImporter.processSubSup(hm);
+ assertEquals("$^3$", hm.get("abstract"));
+
+ hm.put("review", "/sup 31/");
+ IsiImporter.processSubSup(hm);
+ assertEquals("$^{31}$", hm.get("review"));
+
+ hm.put("title", "/sub $Hello/");
+ IsiImporter.processSubSup(hm);
+ assertEquals("$_{\\$Hello}$", hm.get("title"));
+ }
+
+ public void testImportEntries() throws IOException {
+ RisImporter importer = new RisImporter();
+
+ List<BibtexEntry> entries = importer.importEntries(RISImporterTest.class
+ .getResourceAsStream("RisImporterTest1.ris"));
+ assertEquals(1, entries.size());
+ BibtexEntry entry = entries.get(0);
+ assertEquals("Editorial: Open Source and Empirical Software Engineering", entry
+ .getField("title"));
+ assertEquals(
+ "Harrison, Warren",
+ entry.getField("author"));
+
+ assertEquals(BibtexEntryType.ARTICLE, entry.getType());
+ assertEquals("Empirical Software Engineering", entry.getField("journal"));
+ assertEquals("2001", entry.getField("year"));
+ assertEquals("6", entry.getField("volume"));
+ assertEquals("3", entry.getField("number"));
+ assertEquals("193--194", entry.getField("pages"));
+ assertEquals("#sep#", entry.getField("month"));
+ }
+}
diff --git a/src/java/tests/net/sf/jabref/testutils/TestUtils.java b/src/java/tests/net/sf/jabref/testutils/TestUtils.java
new file mode 100644
index 0000000..ab599ae
--- /dev/null
+++ b/src/java/tests/net/sf/jabref/testutils/TestUtils.java
@@ -0,0 +1,66 @@
+package tests.net.sf.jabref.testutils;
+
+import java.security.Permission;
+
+import net.sf.jabref.JabRef;
+
+/**
+ * UtilsClass for UnitTests.
+ *
+ * @author kahlert, cordes
+ *
+ */
+public class TestUtils {
+
+ public static final String PATH_TO_TEST_BIBTEX = "src/tests/net/sf/jabref/bibtexFiles/test.bib";
+
+ /**
+ * Returns a full configured and initialized instance of JabRef. As long as
+ * {@link TestUtils#closeJabRef()} wasn't called this method returns the
+ * same instance.
+ *
+ * @see TestUtils#closeJabRef()
+ */
+ public static JabRef getInitializedJabRef() {
+ disableSystemExit();
+ try {
+ String[] args = { "-p", " ", PATH_TO_TEST_BIBTEX };
+ JabRef.main(args);
+ } catch (ExitException e) {
+ } finally {
+ enableSystemExit();
+ }
+ JabRef jabref = JabRef.singleton;
+ return jabref;
+ }
+
+ /**
+ * Closes the current instance of JabRef.
+ */
+ public static void closeJabRef() {
+ JabRef jabref = JabRef.singleton;
+ if (jabref != null) {
+ jabref.jrf.dispose();
+ }
+ }
+
+ @SuppressWarnings("serial")
+ private static class ExitException extends SecurityException {
+ }
+
+ private static void disableSystemExit() {
+ final SecurityManager securityManager = new SecurityManager() {
+ public void checkPermission(Permission permission) {
+ if (permission.getName().contains("exitVM")) {
+ throw new ExitException();
+ }
+ }
+ };
+ System.setSecurityManager(securityManager);
+ }
+
+ private static void enableSystemExit() {
+ System.setSecurityManager(null);
+ }
+
+}
diff --git a/src/plugins/net.sf.jabref.core/plugin.xml b/src/plugins/net.sf.jabref.core/plugin.xml
index f2b0a2f..d968204 100644
--- a/src/plugins/net.sf.jabref.core/plugin.xml
+++ b/src/plugins/net.sf.jabref.core/plugin.xml
@@ -99,12 +99,21 @@
<extension id="JSTORFetcher" plugin-id="net.sf.jabref.core"
point-id="EntryFetcher">
<parameter id="entryFetcher"
- value="net.sf.jabref.imports.JSTORFetcher" />
+ value="net.sf.jabref.imports.JSTORFetcher2" />
<parameter id="name" value="JSTOR Entry Fetcher" />
<parameter id="description"
value="Fetch Entries from JSTOR." />
</extension>
+ <extension id="ScienceDirectFetcher" plugin-id="net.sf.jabref.core"
+ point-id="EntryFetcher">
+ <parameter id="entryFetcher"
+ value="net.sf.jabref.imports.ScienceDirectFetcher" />
+ <parameter id="name" value="ScienceDirect Entry Fetcher" />
+ <parameter id="description"
+ value="Fetch Entries from ScienceDirect." />
+ </extension>
+
<!-- To extend JabRef with an Layout Formatters use the following extension point -->
<extension-point id="LayoutFormatter">
<parameter-def type="string" id="layoutFormatter"
diff --git a/src/resource/JabRef_da.properties b/src/resource/JabRef_da.properties
index 9e900da..1eb0638 100644
--- a/src/resource/JabRef_da.properties
+++ b/src/resource/JabRef_da.properties
@@ -277,7 +277,7 @@ Deselect_all=V\u00E6lg_ingen
Deselect_all_duplicates=Frav\u00E6lg_alle_dubletter
Details=Detaljer
Disable_entry_editor_when_multiple_entries_are_selected=Deaktiver_postredigering_n\u00E5r_flere_poster_er_valgt
-Disable_this_confirmation_dialog=Deaktiver_denne_kontroldialogen
+Disable_this_confirmation_dialog=Deaktiver_denne_kontroldialog
Disable_this_warning_dialog=Deaktiver_denne_advarselsdialog
Display_all_entries_belonging_to_one_or_more_of_the_selected_groups.=Vis_alle_poster_indeholdt_i_mindst_en_af_de_valgte_grupper.
Display_all_error_messages=Vis_alle_fejlmeddelelser
@@ -348,7 +348,6 @@ entries_into_new_database=poster_i_ny_database
entry=post
Entry_editor=Postredigering
-Entry_has_no_citekey=Posten_har_ingen_BibTeX-n\u00F8gle
Entry_in_current_database=Post_i_aktuelle_database
Entry_in_import=Post_i_import
Entry_preview=Forh\u00E5ndsvisning
@@ -381,7 +380,7 @@ Establishing_SQL_connection...=Etablerer_SQL-forbindelse...
Exceptions=Fejlinformation
Existing_file=Eksisterende_fil
exists._Overwrite_file?=eksisterer._Erstat_filen?
-exists.Overwrite?=eksisterer._Overskriv?
+exists._Overwrite?=eksisterer._Overskriv?
Expand_subtree=\u00C5bn_forgrening
Export=Eksporter
Export_entry_types=Eksporter_posttyper
@@ -631,7 +630,6 @@ Move=Flyt
Move_down=Flyt_ned
Move_entries_in_group_selection_to_the_top=Flyt_poster_i_valgte_grupper_til_toppen
Move_external_links_to_'file'_field=Flyt_eksterne_links_til_'file'-feltet
-Move_file_to_file_directory=Flyt_fil_til_bibliotek.
Move_files_to_file_directory.=Flyt_filer_til_bibliotek.
move_group=flyt_gruppe
Move_string_down=Flyt_streng_ned
@@ -645,7 +643,6 @@ Name=Navn
Name_formatter=Navneformatering
Natbib_style=Natbib-stil
-Native_file_dialog=System-fildialog
nested_aux_files='nestede'_aux-filer
New=Ny
new=ny
@@ -830,7 +827,6 @@ Removed_group_"%0".=Fjernede_gruppen_"%0"
Removed_group_"%0"_and_its_subgroups.=Fjernede_gruppen_"%0"_og_dens_undergrupper
Removed_string=Streng_fjernet
-Rename_to_match_citekey=\u00E6ndre_navn_for_at_svare_til_BibTeX-n\u00F8gle
Renamed_string=\u00E6ndrede_navn_p\u00E5_streng
Replace=Erstat
Replace_(regular_expression)=Erstat_(regul\u00E6rudtryk)
@@ -1311,8 +1307,31 @@ Metadata_change=Metadata-\u00E6ndring
Changes_have_been_made_to_the_following_metadata_elements=Der_er_\u00E6ndringer_i_f\u00F8lgende_metadata-elementer
Generate_groups_for_author_last_names=Generer_grupper_for_forfatteres_efternavne
-Generate_groups_for_editor_last_names=Generer_grupper_for_redakt\u00f8rers_efternavne
-Generate_groups_from_keywords_in_a_BibTeX_field=Generer_grupper_ud_fra_n\u00f8gleord_i_et_BibTeX-felt
-Enforce_legal_characters_in_BibTeX_keys=H\u00e5ndh\u00e6v_tilladte_tegn_i_BibTex-n\u00f8gler
+Generate_groups_for_editor_last_names=Generer_grupper_for_redakt\u00F8rers_efternavne
+Generate_groups_from_keywords_in_a_BibTeX_field=Generer_grupper_ud_fra_n\u00F8gleord_i_et_BibTeX-felt
+Enforce_legal_characters_in_BibTeX_keys=H\u00E5ndh\u00E6v_tilladte_tegn_i_BibTex-n\u00F8gler
The_#_character_is_not_allowed_in_BibTeX_strings_unless_escaped_as_in_'\\#'.=Tegnet_#_er_ikke_tilladt_i_BibTeX-tekststrenge,_medmindre_det_skrives_som_'\\#'.
-Before_saving,_please_edit_any_strings_containing_the_#_character.=Ret_venligst_tekststrenge_indeholdende_#-tegnet,_f\u00f8r_du_gemmer.
+Before_saving,_please_edit_any_strings_containing_the_#_character.=Ret_venligst_tekststrenge_indeholdende_#-tegnet,_f\u00F8r_du_gemmer.
+
+Save_without_backup?=Gem_uden_sikkerhedskopi?
+Unable_to_create_backup=Kan_ikke_oprette_sikkerhedskopi
+
+File_directory_is_not_set_or_does_not_exist.=Fil-bibliotek_er_ikke_specificeret_eller_eksisterer_ikke.
+Move_file_to_file_directory.=Flyt_fil_til_fil-bibliotek.
+Rename_file_to=Omd\u00F8b_fil_til
+<b>All_Entries</b>_(this_group_cannot_be_edited_or_removed)=<b>Alle_poster</b>_(denne_gruppe_kan_ikke_redigeres_eller_flyttes)
+</b>_-_static_group=</b>_-_statisk_gruppe
+,_refines_supergroup=,_afgr\u00E6nser_overgruppen
+,_includes_subgroups=,_inkluderer_undergrupper
+</b>_-_dynamic_group_(<b>=</b>_-_dynamisk_gruppe_(<b>
+</b>_contains_<b>=</b>_indeholder_<b>
+</b>_-_dynamic_group_(=</b>_-_dynamisk_gruppe_(
+search_expression\:_<b>=s\u00F8ge-udtryk:_<b>
+
+Disable_file_renaming_in_non-native_file_dialog=Deaktiver_omd\u00F8bning_af_filer_i_fil-dialogboks
+File_dialog=Fil-dialogboks
+No_entries_found._It_looks_like_you_do_not_have_access_to_search_JStor.=Ingen_poster_fundet._Det_ser_ud_til,_at_du_ikke_har_adgang_til_at_s\u00F8ge_i_JStor.
+
+Reset=
+Search_ScienceDirect=
+Error_while_fetching_from_ScienceDirect=
\ No newline at end of file
diff --git a/src/resource/JabRef_de.properties b/src/resource/JabRef_de.properties
index 7e8f727..9193b20 100644
--- a/src/resource/JabRef_de.properties
+++ b/src/resource/JabRef_de.properties
@@ -621,8 +621,6 @@ entry=Eintrag
Entry_editor=Eintragseditor
-Entry_has_no_citekey=Der_Eintrag_hat_keinen_citekey
-
Entry_in_current_database=Eintrag_in_aktueller_Datenbank
Entry_in_import=Eintrag_in_Importierung
@@ -669,7 +667,7 @@ Exceptions=Ausnahmen
Existing_file=Bestehende_Datei
exists._Overwrite_file?=existiert._Ersetzen?
-exists.Overwrite?=ist_vorhanden._\u00DCberschreiben?
+exists._Overwrite?=ist_vorhanden._\u00DCberschreiben?
Expand_subtree=Unterbaum_aufklappen
@@ -1102,7 +1100,6 @@ Move_down=Nach_unten
Move_entries_in_group_selection_to_the_top=Sortiere_Eintr\u00E4ge_der_Gruppenauswahl_nach_oben
Move_external_links_to_'file'_field=Externe_Links_in_das_Feld_'file'_verschieben
-Move_file_to_file_directory=Datei_in_das_Dateiverzeichnis_verschieben.
Move_files_to_file_directory.=Dateien_in_das_Dateiverzeichnis_verschieben.
move_group=Gruppe_verschieben
@@ -1123,8 +1120,6 @@ Name_formatter=Namens-Formatierer
Natbib_style=Natbib-Stil
-Native_file_dialog=Nativer_Dateidialog
-
nested_aux_files=referenzierte_AUX_Dateien
New=Neu
@@ -1452,7 +1447,6 @@ Removed_group_"%0".=Gruppe_"%0"_gel\u00F6scht.
Removed_group_"%0"_and_its_subgroups.=Gruppe_"%0"_inklusive_Untergruppen_gel\u00F6scht.
Removed_string=String_gel\u00F6scht
-Rename_to_match_citekey=Dem_citekey_entsprechend_umbenennen
Renamed_string=String_umbenannt
@@ -2041,7 +2035,7 @@ Run_Fetcher,_e.g._"--fetch=Medline\:cancer"=Recherche_starten,_z.B._"--fetch=Med
Override_legacy_file_fields=Setze_obsolete_Datei-Felder_au\u00DFer_Kraft
The_ACM_Digital_Library=ACM_Digital_Library
-
+Reset=Zur\u00FCcksetzen
Use_IEEE_LaTeX_abbreviations=Benutze_IEEE-LaTeX-Abk\u00FCrzungen
The_Guide_to_Computing_Literature=The_Guide_to_Computing_Literature
@@ -2147,9 +2141,31 @@ Current_tmp_value=Derzeitiger_tmp-Wert
Metadata_change=Metadaten-\u00C4nderung
Changes_have_been_made_to_the_following_metadata_elements=An_den_folgenden_Metadaten_wurden_\u00C4nderungen_vorgenommen
-Generate_groups_for_author_last_names=Erstelle_Gruppen_f\u00fcr_Nachnamen_der_Autoren
-Generate_groups_for_editor_last_names=Erstelle_Gruppen_f\u00fcr_Nachnamen_der_Herausgeber
-Generate_groups_from_keywords_in_a_BibTeX_field=Erstelle_Gruppen_aus_den_Stichw\u00f6rtern_eines_BibTeX-Feldes
+Generate_groups_for_author_last_names=Erstelle_Gruppen_f\u00FCr_Nachnamen_der_Autoren
+Generate_groups_for_editor_last_names=Erstelle_Gruppen_f\u00FCr_Nachnamen_der_Herausgeber
+Generate_groups_from_keywords_in_a_BibTeX_field=Erstelle_Gruppen_aus_den_Stichw\u00F6rtern_eines_BibTeX-Feldes
Enforce_legal_characters_in_BibTeX_keys=Erzwinge_erlaubte_Zeichen_in_BibTeX-Keys
-The_#_character_is_not_allowed_in_BibTeX_strings_unless_escaped_as_in_'\\#'.=Das_Zeichen_#_ist_in_BibTeX-Keys_nicht_erlaubt,_au\u00dfer_es_ist_mit_einem_Escape-Zeichen_versehen_wie_in_'\\#'.
-Before_saving,_please_edit_any_strings_containing_the_#_character.=Entfernen_Sie_vor_dem_Speichern_alle_Ausdr\u00fccke,_in_denen_das_Zeichen_#_vorkommt.
+The_#_character_is_not_allowed_in_BibTeX_strings_unless_escaped_as_in_'\\#'.=Das_Zeichen_#_ist_in_BibTeX-Keys_nicht_erlaubt,_au\u00DFer_es_ist_mit_einem_Escape-Zeichen_versehen_wie_in_'\\#'.
+Before_saving,_please_edit_any_strings_containing_the_#_character.=Entfernen_Sie_vor_dem_Speichern_alle_Ausdr\u00FCcke,_in_denen_das_Zeichen_#_vorkommt.
+
+Save_without_backup?=Ohne_Backup_Speichern?
+Unable_to_create_backup=Erstellen_des_Backups_fehlgeschlagen
+
+File_directory_is_not_set_or_does_not_exist.=Dateiverzeichnis_wurde_nicht_angegeben_oder_existiert_nicht
+Move_file_to_file_directory.=Datei_ins_Dateiverzeichnis_verschieben
+Rename_file_to=Datei_umbenennen_in
+<b>All_Entries</b>_(this_group_cannot_be_edited_or_removed)=<b>Alle_Eintr\u00E4ge</b>_(diese_Gruppe_kann_nicht_ver\u00E4ndert_oder_gel\u00F6scht_werden)
+</b>_-_static_group=</b>_-_statische_Gruppe
+,_refines_supergroup=,_bezieht_die_Obergruppe_mit_ein
+,_includes_subgroups=,_ber\u00FCcksichtigt_Untergruppen
+</b>_-_dynamic_group_(<b>=</b>_-_dynamische_Gruppe_(<b>
+</b>_contains_<b>=</b>_enth\u00E4lt_<b>
+</b>_-_dynamic_group_(=</b>_-_dynamische_Gruppe_(
+search_expression\:_<b>=Suchausdruck\:_<b>
+
+Disable_file_renaming_in_non-native_file_dialog=Umbenennen_von_Dateien_im_plattformunabh\u00E4ngigen_Dateidialog_deaktivieren
+File_dialog=Dateidialog
+No_entries_found._It_looks_like_you_do_not_have_access_to_search_JStor.=Keine_Eintr\u00E4ge_gefunden._Anscheinend_haben_Sie_keine_Erlaubnis,_in_JStor_zu_suchen.
+
+Search_ScienceDirect=ScienceDirect_durchsuchen
+Error_while_fetching_from_ScienceDirect=Fehler_beim_Abrufen_von_ScienceDirect
diff --git a/src/resource/JabRef_en.properties b/src/resource/JabRef_en.properties
index ce6c795..d395f0a 100644
--- a/src/resource/JabRef_en.properties
+++ b/src/resource/JabRef_en.properties
@@ -608,8 +608,6 @@ entry=entry
Entry_editor=Entry_editor
-Entry_has_no_citekey=Entry_has_no_citekey
-
Entry_in_current_database=Entry_in_current_database
Entry_in_import=Entry_in_import
@@ -655,7 +653,7 @@ Exceptions=Exceptions
Existing_file=Existing_file
exists._Overwrite_file?=exists._Overwrite_file?
-exists.Overwrite?=exists._Overwrite?
+exists._Overwrite?=exists._Overwrite?
Expand_subtree=Expand_subtree
@@ -1082,7 +1080,6 @@ Move_down=Move_down
Move_entries_in_group_selection_to_the_top=Move_entries_in_group_selection_to_the_top
Move_external_links_to_'file'_field=Move_external_links_to_'file'_field
-Move_file_to_file_directory=Move_file_to_file_directory
Move_files_to_file_directory.=Move_files_to_file_directory
move_group=move_group
@@ -1103,8 +1100,6 @@ Name_formatter=Name_formatter
Natbib_style=Natbib_style
-Native_file_dialog=Native_file_dialog
-
nested_aux_files=nested_aux_files
New=New
@@ -1431,7 +1426,6 @@ Removed_group_"%0".=Removed_group_"%0".
Removed_group_"%0"_and_its_subgroups.=Removed_group_"%0"_and_its_subgroups.
Removed_string=Removed_string
-Rename_to_match_citekey=Rename_to_match_citekey
Renamed_string=Renamed_string
@@ -2019,6 +2013,7 @@ Run_Fetcher,_e.g._"--fetch=Medline\:cancer"=Run_Fetcher,_e.g._"--fetch=Medline\:
Override_legacy_file_fields=Override_legacy_file_fields
The_ACM_Digital_Library=The_ACM_Digital_Library
+Reset=Reset
Use_IEEE_LaTeX_abbreviations=Use_IEEE_LaTeX_abbreviations
The_Guide_to_Computing_Literature=The_Guide_to_Computing_Literature
@@ -2135,4 +2130,26 @@ Generate_groups_for_editor_last_names=Generate_groups_for_editor_last_names
Generate_groups_from_keywords_in_a_BibTeX_field=Generate_groups_from_keywords_in_a_BibTeX_field
Enforce_legal_characters_in_BibTeX_keys=Enforce_legal_characters_in_BibTeX_keys
The_#_character_is_not_allowed_in_BibTeX_strings_unless_escaped_as_in_'\\#'.=The_#_character_is_not_allowed_in_BibTeX_strings_unless_escaped_as_in_'\\#'.
-Before_saving,_please_edit_any_strings_containing_the_#_character.=Before_saving,_please_edit_any_strings_containing_the_#_character.
\ No newline at end of file
+Before_saving,_please_edit_any_strings_containing_the_#_character.=Before_saving,_please_edit_any_strings_containing_the_#_character.
+
+Save_without_backup?=Save_without_backup?
+Unable_to_create_backup=Unable_to_create_backup
+
+File_directory_is_not_set_or_does_not_exist.=File_directory_is_not_set_or_does_not_exist.
+Move_file_to_file_directory.=Move_file_to_file_directory.
+Rename_file_to=Rename_file_to
+<b>All_Entries</b>_(this_group_cannot_be_edited_or_removed)=<b>All_Entries</b>_(this_group_cannot_be_edited_or_removed)
+</b>_-_static_group=</b>_-_static_group
+,_refines_supergroup=,_refines_supergroup
+,_includes_subgroups=,_includes_subgroups
+</b>_-_dynamic_group_(<b>=</b>_-_dynamic_group_(<b>
+</b>_contains_<b>=</b>_contains_<b>
+</b>_-_dynamic_group_(=</b>_-_dynamic_group_(
+search_expression\:_<b>=search_expression:_<b>
+
+Disable_file_renaming_in_non-native_file_dialog=Disable_file_renaming_in_non-native_file_dialog
+File_dialog=File_dialog
+No_entries_found._It_looks_like_you_do_not_have_access_to_search_JStor.=No_entries_found._It_looks_like_you_do_not_have_access_to_search_JStor.
+
+Search_ScienceDirect=Search_ScienceDirect
+Error_while_fetching_from_ScienceDirect=Error_while_fetching_from_ScienceDirect
\ No newline at end of file
diff --git a/src/resource/JabRef_fr.properties b/src/resource/JabRef_fr.properties
index d6b6811..75d5682 100644
--- a/src/resource/JabRef_fr.properties
+++ b/src/resource/JabRef_fr.properties
@@ -227,8 +227,8 @@ Could_not_print_preview=Echec_de_l'impression_de_l'aper\u00E7u
Could_not_resolve_import_format=Le_format_d'importation_n'a_pas_\u00E9t\u00E9_d\u00E9cod\u00E9_
Could_not_run_the_'gnuclient'_program._Make_sure_you_have_the_gnuserv/gnuclient_programs_installed.=Le_programme_'gnuclient'_n'a_pas_pu_\u00EAtre_lanc\u00E9._Assurez-vous_que_les_programmes_gnuserv/gnuclient_sont_install\u00E9s.
Could_not_run_the_'vim'_program.=Le_programme_'vim'_n'a_pas_pu_\u00EAtre_lanc\u00E9.
-Could_not_save_file._Character_encoding_'%0'_is_not_supported.=Le_fichier_n'a_pas_pu_\u00EAtre_sauvegard\u00E9._L'encodage_de_caract\u00E8res_'%0'_n'est_pas_support\u00E9.
-Could_not_save_file=Le_fichier_n'a_pas_pu_\u00EAtre_sauvegard\u00E9_
+Could_not_save_file._Character_encoding_'%0'_is_not_supported.=Le_fichier_n'a_pas_pu_\u00EAtre_enregistr\u00E9._L'encodage_de_caract\u00E8res_'%0'_n'est_pas_support\u00E9.
+Could_not_save_file=Le_fichier_n'a_pas_pu_\u00EAtre_enregistr\u00E9_
Couldn't_find_an_entry_associated_with_this_URL=Aucune_entr\u00E9e_associ\u00E9e_\u00E0_cette_URL_n'a_\u00E9t\u00E9_trouv\u00E9e_
Couldn't_parse_the_'citeseerurl'_field_of_the_following_entries=Le_champ_'citeseerurl'_n'a_pas_pu_\u00EAtre_trait\u00E9_dans_les_entr\u00E9es_suivantes_
Create_group=Cr\u00E9er_le_groupe
@@ -249,7 +249,7 @@ Cut_pr=Couper
Cut=Couper
Database_\:=Base_de_donn\u00E9es_:
Database_encoding=Encodage_de_la_base_de_donn\u00E9es
-Database_has_changed._Do_you_want_to_save_before_closing?=Base_modifi\u00E9e._Voulez-vous_la_sauvegarder_avant_de_fermer_?
+Database_has_changed._Do_you_want_to_save_before_closing?=Base_modifi\u00E9e._Voulez-vous_l'enregistr\u00E9_avant_de_fermer_?
Database_is_protected._Cannot_save_until_external_changes_have_been_reviewed.=La_base_est_prot\u00E9g\u00E9e._L'enregistrement_ne_peut_\u00EAtre_effectu\u00E9_tant_que_les_changements_externes_n'auront_pas_\u00E9t\u00E9_v\u00E9rifi\u00E9s.
Database_properties=Propri\u00E9t\u00E9s_de_la_base_de_donn\u00E9es
Database_protection=Protection_de_la_base
@@ -296,7 +296,7 @@ Do_not_open_any_files_at_startup=N'ouvrir_aucun_fichier_au_d\u00E9marrage
Do_not_overwrite_existing_keys=Ne_pas_\u00E9craser_de_clefs_existantes
Do_not_show_splash_window_at_startup=Ne_pas_montrer_l'\u00E9cran_de_garde_lors_du_lancement
Do_not_show_these_options_in_the_future=Ne_pas_afficher_ces_options_\u00E0_l'avenir
-Do_not_wrap_the_following_fields_when_saving=Ne_pas_renvoyer_\u00E0_la_ligne_les_champs_suivants_lors_de_la_sauvegarde_
+Do_not_wrap_the_following_fields_when_saving=Ne_pas_renvoyer_\u00E0_la_ligne_les_champs_suivants_lors_de_l'enregistrement_
Do_not_write_the_following_fields_to_XMP_Metadata\:=Ne_pas_\u00E9crire_les_champs_suivants_dans_les_m\u00E9tadonn\u00E9es_XMP_:
Do_you_want_JabRef_to_do_the_following_operations?=Voulez-vous_que_JabRef_fasse_les_op\u00E9rations_suivantes_?
Docbook=Docbook
@@ -346,7 +346,6 @@ entries_have_undefined_BibTeX_key=Des_entr\u00E9es_ont_des_clefs_BibTeX_non_d\u0
entries_into_new_database=entr\u00E9es_dans_la_nouvelle_base
entries=entr\u00E9es
Entry_editor=Editeur_d'entr\u00E9e
-Entry_has_no_citekey=L'entr\u00E9e_n'a_pas_de_clef_BibTeX
Entry_in_current_database=Entr\u00E9e_dans_la_base_de_donn\u00E9es_actuelle
Entry_in_import=Entr\u00E9e_dans_l'importation
Entry_preview=Aper\u00E7u_de_l'entr\u00E9e
@@ -380,7 +379,7 @@ Establishing_SQL_connection...=Etablissement_de_la_connexion_SQL...
Exceptions=Exceptions
Existing_file=Fichier_existant
exists._Overwrite_file?=existe._Ecraser_le_fichier_?
-exists.Overwrite?=existe._Ecraser_?
+exists._Overwrite?=existe._Ecraser_?
Expand_subtree=D\u00E9velopper_le_sous-arbre
Export_entry_types=Exporter_les_types_d'entr\u00E9es
Export_name=Nom_de_l'exportation
@@ -462,7 +461,7 @@ Full_name=Nom_complet
General_fields=Champs_g\u00E9n\u00E9raux
General=G\u00E9n\u00E9ral
Generate_BibTeX_key=Cr\u00E9er_la_clef_BibTeX
-Generate_keys_before_saving_(for_entries_without_a_key)=G\u00E9n\u00E9rer_les_clefs_avant_de_sauver_(pour_les_entr\u00E9es_sans_clef)
+Generate_keys_before_saving_(for_entries_without_a_key)=G\u00E9n\u00E9rer_les_clefs_avant_d'enregistrer_(pour_les_entr\u00E9es_sans_clef)
Generate_keys_for_imported_entries=G\u00E9n\u00E9rer_les_clefs_pour_les_entr\u00E9es_import\u00E9es
Generate_keys=G\u00E9n\u00E9rer_les_clefs
Generate_now=G\u00E9n\u00E9rer_maintenant
@@ -500,7 +499,7 @@ HTML=HTML
Icon=Ic\u00F4ne
Ignore=Ignorer
Illegal_type_name=Nom_de_type_ill\u00E9gal
-Immediate_subgroups=Sous-groupes_directs
+Immediate_subgroups=Uniquement_les_sous-groupes_directs
Import_and_keep_old_entry=Importer_et_conserver_l'ancienne_entr\u00E9e
Import_and_remove_old_entry=Importer_et_supprimer_l'ancienne_entr\u00E9e
Import_canceled_by_user=Importation_interrompue_par_l'utilisateur
@@ -584,7 +583,7 @@ Link_local_file=Lier_le_fichier_local
Link_to_file_%0=Lien_vers_le_fichier_%0
Link=Lien
Listen_for_remote_operation_on_port=Ecouter_le_port_pour_des_op\u00E9rations_\u00E0_distance_
-Load_and_Save_preferences_from/to_jabref.xml_on_start-up_(memory_stick_mode)=Charger_et_sauver_les_pr\u00E9f\u00E9rences_de/vers_jabref.xml_au_d\u00E9marrage_(mode_clef_m\u00E9moire)
+Load_and_Save_preferences_from/to_jabref.xml_on_start-up_(memory_stick_mode)=Charger_et_enregistrer_les_pr\u00E9f\u00E9rences_de/vers_jabref.xml_au_d\u00E9marrage_(mode_clef_m\u00E9moire)
Load_session=Charger_la_session
Loading_session...=Chargement_de_la_session...
localhost=localhost
@@ -624,7 +623,6 @@ Move_entries_in_group_selection_to_the_top=D\u00E9placer_les_entr\u00E9es_s\u00E
Move_external_links_to_'file'_field=D\u00E9placer_les_liens_externes_vers_le_champ_'fichier'
Move_file_failed=Echec_du_d\u00E9placement_du_fichier
Move_file_to_file_directory?=D\u00E9placer_le_fichier_vers_le_r\u00E9pertoire_de_fichiers_?
-Move_file_to_file_directory=D\u00E9placer_le_fichier_vers_le_r\u00E9pertoire_de_fichiers.
Move_files_to_file_directory.=D\u00E9placer_les_fichiers_vers_le_r\u00E9pertoire_de_fichiers.
move_group=d\u00E9placer_le_groupe
Move_string_down=D\u00E9placer_la_cha\u00EEne_vers_le_bas
@@ -642,7 +640,6 @@ MySQL=MySQL
Name_formatter=Formateur_de_nom
Name=Nom
Natbib_style=Style_Natbib
-Native_file_dialog=Dialogue_de_fichier_natif
nested_aux_files=fichiers_AUX_imbriqu\u00E9s
New_BibTeX_database=Nouvelle_base_BibTeX
New_BibTeX_entry=Nouvelle_entr\u00E9e_BibTeX
@@ -677,11 +674,11 @@ No_PDF_linked=Pas_de_PDF_li\u00E9
No_pdf_or_ps_defined,_and_no_file_matching_Bibtex_key_found=PDF_ou_PS_non_d\u00E9fini_et_fichier_correspondant_\u00E0_la_clef_BibTeX_non_trouv\u00E9
No_plugins_were_found_in_the_following_folders\:=Aucun_greffon_n'a_\u00E9t\u00E9_trouv\u00E9_dans_les_r\u00E9pertoires_suivants_:
No_references_found=Aucune_r\u00E9f\u00E9rence_trouv\u00E9e
-No_saved_session_found.=Pas_trouv\u00E9_de_session_sauvegard\u00E9e.
+No_saved_session_found.=Pas_trouv\u00E9_de_session_enregistr\u00E9e.
No_url_defined=Pas_d'URL_d\u00E9finie
No_XMP_metadata_found_in_=Pas_de_m\u00E9tadonn\u00E9es_XMP_trouv\u00E9es_dans_
not_found=non_trouv\u00E9
-Not_saved_(empty_session)=Pas_de_sauvegarde_(session_vide)
+Not_saved_(empty_session)=Pas_d'enregistrement_(session_vide)
not=non
Note_that_the_entry_causing_the_problem_has_been_selected.=Noter_que_l'entr\u00E9e_responsable_du_probl\u00E8me_a_\u00E9t\u00E9_s\u00E9lectionn\u00E9e.
Note_that_these_settings_are_used_for_the_legacy_<b>pdf</b>_and_<b>ps</b>_fields_only.<br>For_most_users,_setting_the_<b>Main_file_directory</b>_above_should_be_sufficient.=Noter_que_ces_param\u00E8tres_sont_utilis\u00E9s_uniquement_pour_les_champs_obsol\u00E8tes_<b>pdf</b>_et_<b>ps</b>.<br>Pour_la_plupart_des_utilisateurs,_param\u00E9trer_le_<b>R\u00E9pertoire_de_fichiers_principal</b>_devrait_suffire.
@@ -831,7 +828,6 @@ Removed_group_"%0"_and_its_subgroups.=Groupe_"%0"_et_ses_sous-groupes_supprim\u0
Removed_group_"%0".=Groupe_"%0"_supprim\u00E9.
Removed_string=Cha\u00EEne_supprim\u00E9e
Rename_to_'%0'=Renommer_vers_'%0'
-Rename_to_match_citekey=Renommer_pour_correspondre_\u00E0_la_clef_BibTeX
Renamed_string=Cha\u00EEne_renomm\u00E9e
Replace_(regular_expression)=Remplacer_(expression_r\u00E9guli\u00E8re)_
Replace_comma_by_and_where_appropriate=Remplacer_les_virgules_quand_appropri\u00E9
@@ -855,23 +851,23 @@ RIS=RIS
root=root
Run_Fetcher,_e.g._"--fetch\=Medline\:cancer"=Lance_une_recherche,_par._ex._"--fetch=Medline\:cancer"
Running_Query_'%0'_with_fetcher_'%1'.=Execution_de_la_requ\u00EAte_'%0'_avec_l'outil_de_recherche_'%1'.
-Save_all_finished.=Sauvegarde_de_tout_termin\u00E9e.
-Save_all_open_databases=Sauvegarder_toutes_les_bases_ouvertes
-Save_before_closing=Sauvegarde_avant_fermeture
-Save_database_as_...=Sauvegarder_la_base_sous...
-Save_database=Sauvegarder_la_base
-Save_entries_in_their_original_order=Sauver_les_entr\u00E9es_dans_leur_ordre_original
-Save_failed_during_backup_creation=La_sauvegarde_a_\u00E9chou\u00E9e_durant_la_cr\u00E9ation_de_la_copie_de_secours
-Save_failed_while_committing_changes=La_sauvegarde_a_\u00E9chou\u00E9e_lors_de_la_soumission_des_changements
-Save_failed=Echec_de_la_sauvegarde
-Save_ordered_by_author/editor/year=Sauver_les_entr\u00E9es_selon_author/editor/year
-Save_selected_as_...=Sauvegarder_la_s\u00E9lection_sous...
-Save=Sauver
-Saved_database=Base_sauvegard\u00E9e
-Saved_selected_to=Sauvegarder_la_s\u00E9lection_de
-Saved_session=Session_sauvegard\u00E9e
-Saving_all_databases...=Sauvegarde_de_toutes_les_bases...
-Saving_database=Sauvegarde_de_la_base_en_cours
+Save_all_finished.=Enregistrement_de_tout_termin\u00E9e.
+Save_all_open_databases=Enregistrement_toutes_les_bases_ouvertes
+Save_before_closing=Enregistrement_avant_fermeture
+Save_database_as_...=Enregistrement_la_base_sous...
+Save_database=Enregistrement_la_base
+Save_entries_in_their_original_order=Enregistrement_les_entr\u00E9es_dans_leur_ordre_original
+Save_failed_during_backup_creation=L'enregistrement_a_\u00E9chou\u00E9_durant_la_cr\u00E9ation_de_la_copie_de_secours
+Save_failed_while_committing_changes=L'enregistrement_a_\u00E9chou\u00E9_lors_de_la_soumission_des_changements
+Save_failed=Echec_de_l'enregistrement
+Save_ordered_by_author/editor/year=Enregistrer_les_entr\u00E9es_selon_author/editor/year
+Save_selected_as_...=Enregistrer_la_s\u00E9lection_sous...
+Save=Enregistrer
+Saved_database=Base_enregistr\u00E9e
+Saved_selected_to=S\u00E9lection_enregistr\u00E9e_dans
+Saved_session=Session_enregistr\u00E9e
+Saving_all_databases...=Enregistrement_de_toutes_les_bases...
+Saving_database=Enregistrement_de_la_base_en_cours
Saving=Enregistrement_en_cours
Scan=D\u00E9marrer
Search_ACM_Portal=Recherche_dans_le_portail_ACM
@@ -1055,7 +1051,7 @@ Unable_to_open_link.=Impossible_d'ouvrir_un_lien.
Unable_to_parse_the_following_URL=Impossible_de_traiter_l'ULR_suivante
Unable_to_read_default_icon_theme.=Impossible_de_lire_le_th\u00E8me_d'ic\u00F4nes_par_d\u00E9faut
Unable_to_read_icon_theme_file=Impossible_de_lire_le_fichier_de_th\u00E8me_d'ic\u00F4nes
-Unable_to_save_database=Impossible_de_sauver_la_base
+Unable_to_save_database=Impossible_d'enregistrer_la_base
unable_to_write_to=Impossible_d'\u00E9crire_sur
Undefined_file_type=Type_de_fichier_ind\u00E9fini
Undo=Annuler
@@ -1144,7 +1140,7 @@ You_must_fill_in_a_name_for_the_entry_type.=Vous_devez_fournir_un_nom_pour_le_ty
You_must_restart_JabRef_for_the_new_key_bindings_to_work_properly.=Vous_devez_relancer_JabRef_pour_que_les_nouvelles_affectations_des_touches_soient_activ\u00E9es
You_must_select_at_least_one_row_to_perform_this_operation.=Vous_devez_s\u00E9lectionner_au_moins_une_colonne_pour_effectuer_cette_op\u00E9ration.
You_must_set_both_BibTeX_key_and_%0_directory=Vous_devez_d\u00E9finir_\u00E0_la_fois_la_clef_BibTeX_et_le_r\u00E9pertoire_%0
-Your_new_key_bindings_have_been_stored.=Votre_nouvelle_affectation_de_touche_a_\u00E9t\u00E9_sauvegard\u00E9e
+Your_new_key_bindings_have_been_stored.=Votre_nouvelle_affectation_de_touche_a_\u00E9t\u00E9_enregistr\u00E9e
Mark_entries_imported_into_an_existing_database=Etiqueter_les_entr\u00E9es_import\u00E9es_dans_une_base_existante
Unmark_all_entries_before_importing_new_entries_into_an_existing_database=D\u00E9s\u00E9tiqueter_toutes_les_entr\u00E9es_avant_d'importer_de_nouvelles_entr\u00E9es_dans_une_base_existante
@@ -1212,7 +1208,7 @@ Do_you_want_to_recover_the_database_from_the_autosave_file?=Voulez-vous_r\u00E9c
Recover_from_autosave=R\u00E9cup\u00E9ration_\u00E0_partir_d'une_sauvegarde_automatique
%0_warnings=%0_messages_d'avertissement
-Save_in_current_table_sort_order=Sauver_dans_l'ordre_de_tri_actuel_de_la_table
+Save_in_current_table_sort_order=Enregistrer_dans_l'ordre_de_tri_actuel_de_la_table
Export_in_current_table_sort_order=Exporter_dans_l'ordre_de_tri_actuel_de_la_table
Export_ordered_by_author/editor/year=Exporter_selon_l'ordre_author/editor/year
Export_entries_in_their_original_order=Exporter_les_entr\u00E9es_dans_leur_l'ordre_original
@@ -1232,7 +1228,7 @@ The_following_formatters_could_not_be_found=Les_formateurs_suivants_n'ont_pas_\u
Clear_inputarea=Vider_la_zone_de_saisie
Automatically_set_file_links_for_this_entry=D\u00E9finir_automatiquement_les_liens_de_fichier_pour_cette_entr\u00E9e
-Could_not_save,_file_locked_by_another_JabRef_instance.=Echec_de_la_sauvegarde,_le_fichier_est_verrouill\u00E9_par_une_autre_instance_de_JabRef.
+Could_not_save,_file_locked_by_another_JabRef_instance.=Echec_de_l'enregistrement,_le_fichier_est_verrouill\u00E9_par_une_autre_instance_de_JabRef.
File_is_locked_by_another_JabRef_instance.=Le_fichier_est_verrouill\u00E9_par_une_autre_instance_de_JabRef.
Do_you_want_to_override_the_file_lock?=Voulez-vous_outrepasser_le_verrouillage_du_fichier_?
File_locked=Fichier_verrouill\u00E9
@@ -1246,3 +1242,26 @@ Generate_groups_from_keywords_in_a_BibTeX_field=Cr\u00E9ation_de_groupes_\u00E0_
Enforce_legal_characters_in_BibTeX_keys=Imposer_des_caract\u00E8res_l\u00E9gaux_dans_les_clefs_BibTeX
The_#_character_is_not_allowed_in_BibTeX_strings_unless_escaped_as_in_'\\#'.=Le_caract\u00E8re_#_n'est_pas_autoris\u00E9_dans_les_cha\u00EEnes_BibTeX_\u00E0_moins_d'\u00EAtre_\u00E9chapp\u00E9_comme_dans_'\\#'.
Before_saving,_please_edit_any_strings_containing_the_#_character.=Avant_l'enregistrement,_SVP,_\u00E9ditez_toute_cha\u00EEne_contenant_le_caract\u00E8re_#.
+
+Save_without_backup?=Enregistrer_sans_sauvegarde_de_secours?
+Unable_to_create_backup=Impossible_de_cr\u00E9er_une_sauvegarde_de_secours
+
+File_directory_is_not_set_or_does_not_exist.=Le_r\u00E9pertoire_de_fichiers_n'est_pas_configur\u00E9_ou_n'existe_pas.
+Move_file_to_file_directory.=D\u00E9placer_le_fichier_vers_le_r\u00E9pertoire_de_fichiers.
+Rename_file_to=Renommer_le_fichier_en
+Reset=R\u00E9initialiser
+<b>All_Entries</b>_(this_group_cannot_be_edited_or_removed)=<b>Toutes_les_entr\u00E9es</b>_(ce_groupe_ne_peut_pas_\u00EAtre_\u00E9dit\u00E9_ou_supprim\u00E9)
+</b>_-_static_group=</b>_-_groupe_statique
+,_refines_supergroup=,_raffinant_le_super-groupe
+,_includes_subgroups=,_incluant_les_sous-groupes
+</b>_-_dynamic_group_(<b>=</b>_-_groupe_dynamique_(<b>
+</b>_contains_<b>=</b>_contient_<b>
+</b>_-_dynamic_group_(=</b>_-_groupe_dynamique_(
+search_expression\:_<b>=expression_de_recherche_:_<b>
+
+Disable_file_renaming_in_non-native_file_dialog=D\u00E9sactiver_le_renommage_des_fichiers_pour_les_fen\u00EAtres_de_fichier_non-native
+File_dialog=Fen\u00EAtre_de_fichiers
+No_entries_found._It_looks_like_you_do_not_have_access_to_search_JStor.=Pas_d'entr\u00E9es_trouv\u00E9es._Il_semble_que_vous_n'avez_pas_acc\u00E8s_\u00E0_la_recherche_JStor
+
+Search_ScienceDirect=Recherche_ScienceDirect
+Error_while_fetching_from_ScienceDirect=Erreur_lors_de_la_recherche_ScienceDirect_
diff --git a/src/resource/JabRef_it.properties b/src/resource/JabRef_it.properties
index d4d8e17..3dce2e8 100644
--- a/src/resource/JabRef_it.properties
+++ b/src/resource/JabRef_it.properties
@@ -353,7 +353,6 @@ entries_into_new_database=voci_in_un_nuovo_database
entry=voce
Entry_editor=Modifica_voci
-Entry_has_no_citekey=La_voce_non_ha_chiave_BibTeX
Entry_in_current_database=Voce_nel_database_corrente
Entry_in_import=Voce_nell'importazione
Entry_preview=Anteprima_della_voce
@@ -385,7 +384,7 @@ Establishing_SQL_connection...=Connessione_SQL_in_corso...
Exceptions=Eccezioni
Existing_file=File_esistente
exists._Overwrite_file?=esiste._Sovrascrivere_il_file?
-exists.Overwrite?=esiste._Sovrascrivere?
+exists._Overwrite?=esiste._Sovrascrivere?
Expand_subtree=Espandere_il_sotto-albero
Export=Esporta
Export_entry_types=Esporta_tipo_di_voce
@@ -636,7 +635,6 @@ Move=Sposta
Move_down=Sposta_in_gi\u00F9
Move_entries_in_group_selection_to_the_top=Sposta_le_voci_selezionate_in_su
Move_external_links_to_'file'_field=Sposta_i_collegamenti_esterni_nel_campo_'file'
-Move_file_to_file_directory=Sposta_il_file_nella_cartella.
Move_files_to_file_directory.=Sposta_i_file_nella_cartella.
move_group=sposta_gruppo
Move_string_down=Sposta_la_stringa_in_gi\u00F9
@@ -650,7 +648,6 @@ Name=Nome
Name_formatter=Formattazione_dei_nomi
Natbib_style=Stile_Natbib
-Native_file_dialog=Dialogo_File_nativo
nested_aux_files=File_AUX_nidificati
New=Nuovo
new=nuovo
@@ -841,7 +838,6 @@ Removed_entry_type.=Tipo_di_voce_rimosso.
Removed_group_"%0".=Rimosso_gruppo_"%0".
Removed_group_"%0"_and_its_subgroups.=Rimosso_gruppo_"%0"_e_suoi_sottogruppi.
Removed_string=Stringa_rimossa
-Rename_to_match_citekey=Rinomina_concordemente_alla_chiave_BibTeX
Renamed_string=Stringa_rinominata
Replace=Sostituisci
Replace_(regular_expression)=Sostituisci_(espressione_regolare)
@@ -1230,7 +1226,7 @@ Use_IEEE_LaTeX_abbreviations=Usa_le_abbreviazioni_LaTeX_IEEE
The_Guide_to_Computing_Literature=The_Guide_to_Computing_Literature
Search_ACM_Portal=Ricerca_nel_portale_ACM
Connection_to_ACM_Portal_failed=Connessione_al_portale_ACM_fallita
-When_opening_file_link,_search_for_matching_file_if_no_link_is_defined=All'apertura_di_un_collegamento_ad_un_file,_ricercare_un_file_corrispondente_se_non_ne_\u00e8_definito_uno.
+When_opening_file_link,_search_for_matching_file_if_no_link_is_defined=All'apertura_di_un_collegamento_ad_un_file,_ricercare_un_file_corrispondente_se_non_ne_\u00E8_definito_uno.
Settings_for_%0=Parametri__per_%0
Insert_selected_citations_into_Vim=Inviare_le_citazioni_selezionate_a_Vim
RIS=RIS
@@ -1250,7 +1246,7 @@ Unable_to_find_full_text_document_in_the_linked_web_page.=Impossibile_trovare_il
Connection_error_when_trying_to_find_full_text_document.=Errore_di_connessione_nel_corso_della_ricerca_del_documento_citato
This_entry_provides_no_URL_or_DOI_links.=Questa_voce_non_fornisce_collegamenti_URL_o_DOI.
Full_text_article_download_failed=Fallito_il_download_del_documento_citato
-Down_up=Sposta_in_gi\u00f9
+Down_up=Sposta_in_gi\u00F9
Update_to_current_column_order=Salvare_l'ordine_delle_colonne_attuale
Rename_field=Rinomina_il_campo
@@ -1258,20 +1254,20 @@ Set/clear/rename_fields=Imposta/svuota/rinomina_i_campi
Rename_field_to\:=Rinomina_il_campo_in\:
Move_contents_of_a_field_into_a_field_with_a_different_name=Sposta_il_contenuto_di_un_campo_in_un_campo_con_nome_diverso
-You_can_only_rename_one_field_at_a_time=\u00c8_possibile_rinominare_solo_un_campo_per_volta
+You_can_only_rename_one_field_at_a_time=\u00C8_possibile_rinominare_solo_un_campo_per_volta
Remove_all_broken_links=Rimuovere_tutti_i_collegamenti_non_validi
Cannot_use_port_%0_for_remote_operation;_another_application_may_be_using_it._Try_specifying_another_port.=Impossibile_utilizzare_la_porta_%0_per_operazioni_remote;_la_porta_potrebbe_essere_in_uso_da_parte_di_un'altra_applicazione._Provare_a_specificare_una_porta_diversa.
Plugin_installer=Installazione_di_plugin
Unable_to_create_plugin_directory=Impossibile_creare_una_cartella_dei_plugin
Unable_to_copy_file=Impossibile_copiare_un_file
-Plugin_installed_successfully._You_must_restart_JabRef_to_load_the_new_plugin.=Plugin_installato_correttamente._\u00c8_necessario_riavviare_JabRef_per_caricare_il_nuovo_plugin.
+Plugin_installed_successfully._You_must_restart_JabRef_to_load_the_new_plugin.=Plugin_installato_correttamente._\u00C8_necessario_riavviare_JabRef_per_caricare_il_nuovo_plugin.
Unable_to_create_user_plugin_directory=Impossibile_creare_una_cartella_utente_del_plugin
Plugin_installation_failed.=Installazione_del_plugn_fallita.
-The_same_version_of_this_plugin_is_already_installed.=La_stessa_versione_del_plugin_\u00e8_gi\u00e0_installata.
-A_newer_version_of_this_plugin_is_already_installed.=Una_versione_pi\u00f9_recente_del_plugin_\u00e8_gi\u00e0_installata.
-One_or_more_older_versions_of_this_plugin_is_installed._Delete_old_versions?=Una_o_pi\u00f9_versioni_pi\u00f9_vecchie_del_plugin_sono_installate._Cancellare_le_vecchie_versioni?
-Old_versions_deleted_successfully.=La_cancellazione_delle_vecchie_versioni_\u00e8_riuscita.
+The_same_version_of_this_plugin_is_already_installed.=La_stessa_versione_del_plugin_\u00E8_gi\u00E0_installata.
+A_newer_version_of_this_plugin_is_already_installed.=Una_versione_pi\u00F9_recente_del_plugin_\u00E8_gi\u00E0_installata.
+One_or_more_older_versions_of_this_plugin_is_installed._Delete_old_versions?=Una_o_pi\u00F9_versioni_pi\u00F9_vecchie_del_plugin_sono_installate._Cancellare_le_vecchie_versioni?
+Old_versions_deleted_successfully.=La_cancellazione_delle_vecchie_versioni_\u00E8_riuscita.
Install_plugin=Installa_plugin
Download_plugin=Scarica_plugin
@@ -1292,7 +1288,7 @@ Install_anyway?=Installare_comunque?
Looking_for_full_text_document...=Ricerca_del_documento_citato
Follow_DOI_or_URL_link_and_try_to_locate_PDF_full_text_document=Segui_i_collegamenti_DOI_e_URL_prova_a_localizzare_il_file_PDF_del_documento_citato
Unable_to_find_full_text_article._No_search_algorithm_defined_for_the_'%0'_web_site.=Impossibile_torvare_il_file_PDF_del_documento_citato._Nessun_algoritmo_di_ricerca_definito_per_il_sito_internet_'%0'.
-Found_pdf_link,_but_received_the_wrong_MIME_type._This_could_indicate_that_you_don't_have_access_to_the_fulltext_article.=Trovato_il_collegamento_al_file_PDF,_ma_il_tipo_MIME_ricevuto_non_\u00e8_corretto._Ci\u00f2_potrebbe_indicare_che_non_si_ha_permessi_di_accesso_al_file_PDF_del_documento_citato.
+Found_pdf_link,_but_received_the_wrong_MIME_type._This_could_indicate_that_you_don't_have_access_to_the_fulltext_article.=Trovato_il_collegamento_al_file_PDF,_ma_il_tipo_MIME_ricevuto_non_\u00E8_corretto._Ci\u00F2_potrebbe_indicare_che_non_si_ha_permessi_di_accesso_al_file_PDF_del_documento_citato.
Autosave=Salvataggio_automatico
Prompt_before_recovering_a_database_from_an_autosave_file=Richiedere_conferma_prima_del_recupero_di_un_database_da_un_salvataggio_automatico
@@ -1312,7 +1308,7 @@ Error_opening_autosave_of_'%0'._Trying_to_load_'%0'_instead.=Errore_nell'apertur
Plugins_installed_in_your_user_plugin_directory_(%0)\:=Plugin_installati_nella_cartella_dei_plugin_dell'utente_(%0):
Plugins_installed_in_other_locations\:=Plugin_installati_in_altre_cartelle:
Plugins_will_be_deleted_next_time_JabRef_starts_up.=I_plugin_verranno_cancellati_al_prossimo_avvio_di_JabRef.
-Plugin_will_be_deleted_next_time_JabRef_starts_up.=Il_plugin_verr\u00e0_cancellato_al_prossimo_avvio_di_JabRef.
+Plugin_will_be_deleted_next_time_JabRef_starts_up.=Il_plugin_verr\u00E0_cancellato_al_prossimo_avvio_di_JabRef.
Old_plugin_versions_will_be_deleted_next_time_JabRef_starts_up.=Le_vecchie_versioni_del_plugin_verranno_cancellate_al_prossimo_avvio_di_JabRef.
Formatter_not_found\:_%0=Formattazione_non_trovata\:_%0
@@ -1321,8 +1317,8 @@ The_following_formatters_could_not_be_found=Le_seguenti_formattazioni_non_sono_s
Clear_inputarea=Svuota_l'area_di_inserimento
Automatically_set_file_links_for_this_entry=Definire_automaticamente_i_collegamenti_ai_file_per_questa_voce
-Could_not_save,_file_locked_by_another_JabRef_instance.=Impossibile_salvare,_il_file_\u00e8_bloccato_da_un'altra_istanza_di_JabRef.
-File_is_locked_by_another_JabRef_instance.=Il_file_\u00e8_bloccato_da_un'altra_istanza_di_JabRef.
+Could_not_save,_file_locked_by_another_JabRef_instance.=Impossibile_salvare,_il_file_\u00E8_bloccato_da_un'altra_istanza_di_JabRef.
+File_is_locked_by_another_JabRef_instance.=Il_file_\u00E8_bloccato_da_un'altra_istanza_di_JabRef.
Do_you_want_to_override_the_file_lock?=Vuoi_ignorare_il_blocco_del_file?
File_locked=File_bloccato
Current_tmp_value=Variabile_"tmp"_corrente
@@ -1333,5 +1329,28 @@ Generate_groups_for_author_last_names=Genera_gruppi_in_base_al_cognome_dell'auto
Generate_groups_for_editor_last_names=Genera_gruppi_in_base_al_cognome_del_curatore
Generate_groups_from_keywords_in_a_BibTeX_field=Genera_gruppi_in_base_alle_parole_chiave_in_un_campo_BibTeX
Enforce_legal_characters_in_BibTeX_keys=Imponi_l'utilizzo_dei_soli_caratteri_conformi_alla_sintassi_nelle_chiavi_BibTeX
-The_#_character_is_not_allowed_in_BibTeX_strings_unless_escaped_as_in_'\\#'.=Il_carattere_#_non_\u00e8_consentito_nelle_stringhe_BibTeX_se_non_protetto_da_un_carattere_di_"escape"_come_in_'\\#'.
+The_#_character_is_not_allowed_in_BibTeX_strings_unless_escaped_as_in_'\\#'.=Il_carattere_#_non_\u00E8_consentito_nelle_stringhe_BibTeX_se_non_protetto_da_un_carattere_di_"escape"_come_in_'\\#'.
Before_saving,_please_edit_any_strings_containing_the_#_character.=Prima_di_salvare,_modificare_le_stringhe_contenenti_il_carattere_#.
+
+Save_without_backup?=
+Unable_to_create_backup=
+
+File_directory_is_not_set_or_does_not_exist.=
+Move_file_to_file_directory.=
+Rename_file_to=
+Reset=
+<b>All_Entries</b>_(this_group_cannot_be_edited_or_removed)=
+</b>_-_static_group=
+,_refines_supergroup=
+,_includes_subgroups=
+</b>_-_dynamic_group_(<b>=
+</b>_contains_<b>=
+</b>_-_dynamic_group_(=
+search_expression\:_<b>=
+
+Disable_file_renaming_in_non-native_file_dialog=
+File_dialog=
+No_entries_found._It_looks_like_you_do_not_have_access_to_search_JStor.=
+
+Search_ScienceDirect=
+Error_while_fetching_from_ScienceDirect=
diff --git a/src/resource/JabRef_nl.properties b/src/resource/JabRef_nl.properties
index c7fd98e..e88b64c 100644
--- a/src/resource/JabRef_nl.properties
+++ b/src/resource/JabRef_nl.properties
@@ -620,8 +620,6 @@ entry=entry
Entry_editor=Entry_editor
-Entry_has_no_citekey=
-
Entry_in_current_database=Entry_in_huidige_database
Entry_in_import=Entry_in_importering
@@ -669,7 +667,7 @@ Exceptions=Uitzonderingen
Existing_file=Bestaande_bestand
exists._Overwrite_file?=bestaat_reeds._Bestand_overschrijven?
-exists.Overwrite?=bestaat._Overschrijven?
+exists._Overwrite?=bestaat._Overschrijven?
Expand_subtree=Subboom_uitklappen
@@ -1104,7 +1102,6 @@ Move_down=Verplaats_naar_beneden
Move_entries_in_group_selection_to_the_top=Verplaats_entries_in_de_groep_selectie_naar_de_top
Move_external_links_to_'file'_field=
-Move_file_to_file_directory=
Move_files_to_file_directory.=
move_group=verplaats_groep
@@ -1125,8 +1122,6 @@ Name_formatter=
Natbib_style=Natbib_stijl
-Native_file_dialog=
-
nested_aux_files=geneste_aux_bestanden
New=Nieuw
@@ -1452,7 +1447,6 @@ Removed_group_"%0".=Groep_"%0"_verwijderd.
Removed_group_"%0"_and_its_subgroups.=Groep_"%0"_en_zijn_subgroepen_verwijderd.
Removed_string=Constante_verwijderd
-Rename_to_match_citekey=
Renamed_string=Constante_hernoemd
@@ -2138,4 +2132,27 @@ Generate_groups_for_editor_last_names=
Generate_groups_from_keywords_in_a_BibTeX_field=
Enforce_legal_characters_in_BibTeX_keys=
The_#_character_is_not_allowed_in_BibTeX_strings_unless_escaped_as_in_'\\#'.=
-Before_saving,_please_edit_any_strings_containing_the_#_character.=
\ No newline at end of file
+Before_saving,_please_edit_any_strings_containing_the_#_character.=
+
+Save_without_backup?=
+Unable_to_create_backup=
+
+File_directory_is_not_set_or_does_not_exist.=
+Move_file_to_file_directory.=
+Rename_file_to=
+Reset=
+<b>All_Entries</b>_(this_group_cannot_be_edited_or_removed)=
+</b>_-_static_group=
+,_refines_supergroup=
+,_includes_subgroups=
+</b>_-_dynamic_group_(<b>=
+</b>_contains_<b>=
+</b>_-_dynamic_group_(=
+search_expression\:_<b>=
+
+Disable_file_renaming_in_non-native_file_dialog=
+File_dialog=
+No_entries_found._It_looks_like_you_do_not_have_access_to_search_JStor.=
+
+Search_ScienceDirect=
+Error_while_fetching_from_ScienceDirect=
\ No newline at end of file
diff --git a/src/resource/JabRef_no.properties b/src/resource/JabRef_no.properties
index 7d1b603..1e70f4e 100644
--- a/src/resource/JabRef_no.properties
+++ b/src/resource/JabRef_no.properties
@@ -349,7 +349,6 @@ entries_into_new_database=enheter_i_ny_database
entry=enhet
Entry_editor=Enhetsskjema
-Entry_has_no_citekey=Enheten_har_ingen_BibTeX-n\u00F8kkel
Entry_in_current_database=Enhet_i_eksisterende_database
Entry_in_import=Enhet_i_import
Entry_preview=Forh\u00E5ndsvisning
@@ -383,7 +382,7 @@ Establishing_SQL_connection...=Etablerer_SQL-forbindelse...
Exceptions=Feilinformasjon
Existing_file=Eksisterende_fil
exists._Overwrite_file?=eksisterer._Erstatt_filen?
-exists.Overwrite?=eksisterer._Skriv_over?
+exists._Overwrite?=eksisterer._Skriv_over?
Expand_subtree=\u00C5pne_forgrening
Export=Eksporter
Export_entry_types=Eksporter_enhetstyper
@@ -632,7 +631,6 @@ Move=Flytt
Move_down=Flytt_ned
Move_entries_in_group_selection_to_the_top=Flytt_enheter_i_valgte_grupper_\u00F8verst
Move_external_links_to_'file'_field=Flytt_eksterne_linker_til_'file'-feltet
-Move_file_to_file_directory=Flytt_fil_til_filkatalog.
Move_files_to_file_directory.=Flytt_filer_til_filkatalog.
move_group=flytt_gruppe
Move_string_down=Flytt_streng_ned
@@ -646,7 +644,6 @@ Name=Navn
Name_formatter=Navneformaterer
Natbib_style=Natbib-stil
-Native_file_dialog=System-fildialog
nested_aux_files=n\u00F8stede_aux-filer
New=Ny
new=ny
@@ -831,7 +828,6 @@ Removed_group_"%0".=Fjernet_gruppen_"%0"
Removed_group_"%0"_and_its_subgroups.=Fjernet_gruppen_"%0"_og_dens_undergrupper
Removed_string=Fjernet_streng
-Rename_to_match_citekey=Endre_navn_for_\u00E5_samsvare_med_BibTeX-n\u00F8kkel
Renamed_string=Endret_navn_p\u00E5_streng
Replace=Erstatt
Replace_(regular_expression)=Erstatt_(regul\u00E6ruttrykk)
@@ -1312,3 +1308,26 @@ Generate_groups_from_keywords_in_a_BibTeX_field=
Enforce_legal_characters_in_BibTeX_keys=
The_#_character_is_not_allowed_in_BibTeX_strings_unless_escaped_as_in_'\\#'.=
Before_saving,_please_edit_any_strings_containing_the_#_character.=
+
+Save_without_backup?=
+Unable_to_create_backup=
+
+File_directory_is_not_set_or_does_not_exist.=
+Move_file_to_file_directory.=
+Rename_file_to=
+Reset=
+<b>All_Entries</b>_(this_group_cannot_be_edited_or_removed)=
+</b>_-_static_group=
+,_refines_supergroup=
+,_includes_subgroups=
+</b>_-_dynamic_group_(<b>=
+</b>_contains_<b>=
+</b>_-_dynamic_group_(=
+search_expression\:_<b>=
+
+Disable_file_renaming_in_non-native_file_dialog=
+File_dialog=
+No_entries_found._It_looks_like_you_do_not_have_access_to_search_JStor.=
+
+Search_ScienceDirect=
+Error_while_fetching_from_ScienceDirect=
\ No newline at end of file
diff --git a/src/resource/JabRef_tr.properties b/src/resource/JabRef_tr.properties
index c34ced3..ea73297 100644
--- a/src/resource/JabRef_tr.properties
+++ b/src/resource/JabRef_tr.properties
@@ -333,7 +333,6 @@ entries_have_undefined_BibTeX_key=girdilier_tan\u0131mlanmam\u0131\u015F_BibTeX_
entries_into_new_database=girdiler_yeni_veritaban\u0131na
entry=girdi
Entry_editor=Girdi_d\u00FCzenleyici
-Entry_has_no_citekey=Girdinin_al\u0131nt\u0131_anahtar\u0131_yok
Entry_in_current_database=Girdi_g\u00FCncel_veritaban\u0131nda
Entry_in_import=Girdi_i\u00E7e_aktar\u0131lanlar_aras\u0131nda
Entry_preview=Girdi_\u00F6nizlemesi
@@ -363,7 +362,7 @@ Establishing_SQL_connection...=SQL_ba\u011Flant\u0131s\u0131_kuruluyor...
Exceptions=\u0130stisnalar
Existing_file=Varolan_dosya
exists._Overwrite_file?=mevcut._Dosyan\u0131n_\u00FCzerine_yaz\u0131ls\u0131n_m\u0131?
-exists.Overwrite?=mevcut.\u00DCzerine_yaz\u0131ls\u0131n_m\u0131?
+exists._Overwrite?=mevcut.\u00DCzerine_yaz\u0131ls\u0131n_m\u0131?
Expand_subtree=Alta\u011Fac\u0131_geni\u015Flet
Export=D\u0131\u015Fa_aktar
Export_entry_types=Girdi_t\u00FCrlerini_d\u0131\u015Fa_aktar
@@ -594,7 +593,6 @@ Move=Ta\u015F\u0131
Move_down=A\u015Fa\u011F\u0131_ta\u015F\u0131
Move_entries_in_group_selection_to_the_top=Grup_se\u00E7imindeki_girdileri_en_\u00FCste_ta\u015F\u0131
Move_external_links_to_'file'_field=Harici_linkleri_'dosya'_alan\u0131na_ta\u015F\u0131
-Move_file_to_file_directory=Dosyay\u0131_dosya_dizinine_ta\u015F\u0131
Move_files_to_file_directory.=Dosyalar\u0131_dosya_dizinine_ta\u015F\u0131
move_group=grubu_ta\u015F\u0131
Move_string_down=Dizgeyi_a\u015Fa\u011F\u0131_ta\u015F\u0131
@@ -607,7 +605,6 @@ MySQL_database=MySQL_veritaban\u0131
Name=Ad
Name_formatter=Ad_bi\u00E7emleyici
Natbib_style=Natbib_stili
-Native_file_dialog=Do\u011Fal_dosya_diyalo\u011Fu
nested_aux_files=i\u00E7i\u00E7e_aux_dosyalar\u0131
New=Yeni
new=yeni
@@ -784,7 +781,6 @@ Removed_entry_type.=Girdi_t\u00FCr\u00FC_silindi.
Removed_group_"%0".="%0"_grubu_silindi.
Removed_group_"%0"_and_its_subgroups.="%0"_grubu_ve_altgruplar\u0131_silindi.
Removed_string=Dizge_silindi
-Rename_to_match_citekey=Al\u0131nt\u0131_anahtar\u0131na_uymak_\u00FCzere_yeniden_adland\u0131r
Renamed_string=Dizge_yeniden_adland\u0131r\u0131ld\u0131
Replace=Yerine_koy
Replace_(regular_expression)=Yerine_koy_(d\u00FCzenli_ifade)
@@ -1232,22 +1228,44 @@ Formatter_not_found\:_%0=Bi\u00E7imleyici_bulunamad\u0131\:_%0
The_following_formatters_could_not_be_found=A\u015Fa\u011F\u0131daki_bi\u00E7imleyiciler_bulunamad\u0131
Clear_inputarea=Girdi_alan\u0131n\u0131_temizle
-Automatically_set_file_links_for_this_entry=Bu_girdi_i\u00e7in_dosya_ba\u011flant\u0131lar\u0131n\u0131_otomatikman_kur
-Could_not_save,_file_locked_by_another_JabRef_instance.=Kaydedilemiyor,_dosya_ba\u015fka_bir_JabRef_oturumunca_kilitlenmi\u015f.
-File_is_locked_by_another_JabRef_instance.=Dosya_ba\u015fka_bir_JabRef_oturumunca_kilitlenmi\u015f.
-Do_you_want_to_override_the_file_lock?=Dosya_kilidini_ge\u00e7ersiz_k\u0131lmak_ister_misiniz?
+Automatically_set_file_links_for_this_entry=Bu_girdi_i\u00E7in_dosya_ba\u011Flant\u0131lar\u0131n\u0131_otomatikman_kur
+Could_not_save,_file_locked_by_another_JabRef_instance.=Kaydedilemiyor,_dosya_ba\u015Fka_bir_JabRef_oturumunca_kilitlenmi\u015F.
+File_is_locked_by_another_JabRef_instance.=Dosya_ba\u015Fka_bir_JabRef_oturumunca_kilitlenmi\u015F.
+Do_you_want_to_override_the_file_lock?=Dosya_kilidini_ge\u00E7ersiz_k\u0131lmak_ister_misiniz?
File_locked=Dosya_kilitli
-Current_tmp_value=Mevcut_tmp_de\u011feri
-Metadata_change=Metadata_de\u011fi\u015fikli\u011fi
-Changes_have_been_made_to_the_following_metadata_elements=A\u015fa\u011f\u0131daki_metadata_\u00f6gelerinde_de\u011fi\u015fiklik_yap\u0131ld\u0131
+Current_tmp_value=Mevcut_tmp_de\u011Feri
+Metadata_change=Metadata_de\u011Fi\u015Fikli\u011Fi
+Changes_have_been_made_to_the_following_metadata_elements=A\u015Fa\u011F\u0131daki_metadata_\u00F6gelerinde_de\u011Fi\u015Fiklik_yap\u0131ld\u0131
-Generate_groups_for_author_last_names=Yazar_soyadlar\u0131_i\u00e7in_grup_olu\u015ftur
-Generate_groups_for_editor_last_names=Edit\u00f6r_soyadlar\u0131_i\u00e7in_grup_olu\u015ftur
-Generate_groups_from_keywords_in_a_BibTeX_field=Bir_BibTeX_alan\u0131ndaki_anahtar_s\u00f6zc\u00fcklerden_grup_olu\u015ftur
+Generate_groups_for_author_last_names=Yazar_soyadlar\u0131_i\u00E7in_grup_olu\u015Ftur
+Generate_groups_for_editor_last_names=Edit\u00F6r_soyadlar\u0131_i\u00E7in_grup_olu\u015Ftur
+Generate_groups_from_keywords_in_a_BibTeX_field=Bir_BibTeX_alan\u0131ndaki_anahtar_s\u00F6zc\u00FCklerden_grup_olu\u015Ftur
Enforce_legal_characters_in_BibTeX_keys=BibTeX_anahtarlar\u0131nda_yasal_karakterleri_zorla
-The_#_character_is_not_allowed_in_BibTeX_strings_unless_escaped_as_in_'\\#'.='\\#'_\u015feklinde_belirtilmedik\u00e7e_BibTeX_dizgelerinde_#_karakterine_izin_verilmez.
-Before_saving,_please_edit_any_strings_containing_the_#_character.=Kaydetmeden_\u00f6nce_l\u00fctfen_#_karakterini_i\u00e7eren_t\u00fcm_dizgeleri_d\u00fczeltin.
-Deletion_of_old_versions_failed.=Eski_s\u00FCr\u00FCmlerin_silinmesi_ba\u015Far\u0131s\u0131z.
+The_#_character_is_not_allowed_in_BibTeX_strings_unless_escaped_as_in_'\\#'.='\\#'_\u015Feklinde_belirtilmedik\u00E7e_BibTeX_dizgelerinde_#_karakterine_izin_verilmez.
+Before_saving,_please_edit_any_strings_containing_the_#_character.=Kaydetmeden_\u00F6nce_l\u00FCtfen_#_karakterini_i\u00E7eren_t\u00FCm_dizgeleri_d\u00FCzeltin.
+
+Save_without_backup?=Yedeklemeden_kaydedilsin_mi?
+Unable_to_create_backup=Yedek_olu\u015Fturulamad\u0131
+
+File_directory_is_not_set_or_does_not_exist.=Dosya_dizini_atanmad\u0131_ya_da_mevcut_de\u011Fil.
+Move_file_to_file_directory.=Dosyay\u0131_dosya_dizinine_ta\u015F\u0131.
+Rename_file_to=Dosyay\u0131_\u015Funa_yeniden_adland\u0131r
+<b>All_Entries</b>_(this_group_cannot_be_edited_or_removed)=<b>T\u00FCm_Girdiler</b>_(bu_grup_silinemez_ve_d\u00FCzenlenemez)
+</b>_-_static_group=</b>_-_dura\u011Fan_grup
+,_refines_supergroup=,_s\u00FCpergrubu_rafine_eder
+,_includes_subgroups=,_altgruplar\u0131_i\u00E7erir
+</b>_-_dynamic_group_(<b>=</b>_-_devingen_grup_(<b>
+</b>_contains_<b>=</b>_i\u00E7erir_<b>
+</b>_-_dynamic_group_(=</b>_-_devingen_grup_(
+search_expression\:_<b>=arama_ifadesi\:_<b>
+
+Disable_file_renaming_in_non-native_file_dialog=Do\u011Fal_olmayan_dosya_ileti\u015Fim_kutusunda_dosya_yeniden_adland\u0131rmay\u0131_etkisiz_k\u0131l
+File_dialog=Dosya_ileti\u015Fim_kutusu
+No_entries_found._It_looks_like_you_do_not_have_access_to_search_JStor.=Girdi_bulunamad\u0131._JStor_aramak_i\u00E7in_giri\u015F_yekiniz_yok_gibi_g\u00F6r\u00FCn\u00FCyor.
+Reset=S\u0131f\u0131rla
Highlight_groups_that_contain_entries_contained_in_any_currently_selected_group=Se\u00E7ili_herhangi_bir_gruptaki_girdileri_i\u00E7eren_gruplar\u0131_i\u015Faretle
+
+Search_ScienceDirect=
+Error_while_fetching_from_ScienceDirect=
\ No newline at end of file
diff --git a/src/resource/JabRef_zh.properties b/src/resource/JabRef_zh.properties
index 42f73b3..05ebbe2 100644
--- a/src/resource/JabRef_zh.properties
+++ b/src/resource/JabRef_zh.properties
@@ -608,7 +608,6 @@ entry=\u8BB0\u5F55
Entry_editor=\u8BB0\u5F55\u7F16\u8F91\u5668
-Entry_has_no_citekey=\u8BB0\u5F55\u6CA1\u6709\u5F15\u7528\u952E\u503C
Entry_in_current_database=\u5F53\u524D\u6570\u636E\u5E93\u4E2D\u7684\u8BB0\u5F55
@@ -654,7 +653,7 @@ Exceptions=\u5F02\u5E38
Existing_file=\u5DF2\u6709\u6587\u4EF6
exists._Overwrite_file?=\u5DF2\u5B58\u5728\uFF0C\u8986\u76D6\u6587\u4EF6\uFF1F
-exists.Overwrite?=\u5DF2\u5B58\u5728\uFF0C\u8986\u76D6\uFF1F
+exists._Overwrite?=\u5DF2\u5B58\u5728\uFF0C\u8986\u76D6\uFF1F
Expand_subtree=\u5C55\u5F00\u5B50\u6811
@@ -1078,7 +1077,6 @@ Move_down=\u4E0B\u79FB
Move_entries_in_group_selection_to_the_top=\u79FB\u52A8\u9009\u4E2D\u5206\u7EC4\u7684\u8BB0\u5F55\u5230\u9876\u90E8
Move_external_links_to_'file'_field=\u79FB\u52A8\u5916\u90E8\u94FE\u63A5\u5230_'file'_\u57DF
-Move_file_to_file_directory=\u79FB\u52A8\u6587\u4EF6\u5230\u6587\u4EF6\u76EE\u5F55
Move_files_to_file_directory.=\u79FB\u52A8\u6587\u4EF6\u5230\u6587\u4EF6\u76EE\u5F55\u3002
move_group=\u79FB\u52A8\u5206\u7EC4
@@ -1099,8 +1097,6 @@ Name_formatter=\u59D3\u540D\u683C\u5F0F\u5316\u5668
Natbib_style=Natbib_\u683C\u5F0F
-Native_file_dialog=\u672C\u5730\u6587\u4EF6\u5BF9\u8BDD\u6846
-
nested_aux_files=nested_aux_\u6587\u4EF6
New=\u65B0\u5EFA
@@ -1427,7 +1423,6 @@ Removed_group_"%0".=\u5DF2\u79FB\u9664\u5206\u7EC4_"%0"\u3002
Removed_group_"%0"_and_its_subgroups.=\u5DF2\u79FB\u9664\u5206\u7EC4_"%0"_\u548C\u5B83\u7684\u5B50\u5206\u7EC4\u3002
Removed_string=\u5DF2\u79FB\u9664\u7B80\u5199\u5B57\u4E32
-Rename_to_match_citekey=\u91CD\u547D\u540D\u4EE5\u5339\u914D\u5F15\u7528\u952E\u503C
Renamed_string=\u91CD\u547D\u540D\u5B57\u7B26\u4E32
@@ -2127,4 +2122,27 @@ Generate_groups_for_editor_last_names=
Generate_groups_from_keywords_in_a_BibTeX_field=
Enforce_legal_characters_in_BibTeX_keys=
The_#_character_is_not_allowed_in_BibTeX_strings_unless_escaped_as_in_'\\#'.=
-Before_saving,_please_edit_any_strings_containing_the_#_character.=
\ No newline at end of file
+Before_saving,_please_edit_any_strings_containing_the_#_character.=
+
+Save_without_backup?=
+Unable_to_create_backup=
+
+File_directory_is_not_set_or_does_not_exist.=
+Move_file_to_file_directory.=
+Rename_file_to=
+Reset=
+<b>All_Entries</b>_(this_group_cannot_be_edited_or_removed)=
+</b>_-_static_group=
+,_refines_supergroup=
+,_includes_subgroups=
+</b>_-_dynamic_group_(<b>=
+</b>_contains_<b>=
+</b>_-_dynamic_group_(=
+search_expression\:_<b>=
+
+Disable_file_renaming_in_non-native_file_dialog=
+File_dialog=
+No_entries_found._It_looks_like_you_do_not_have_access_to_search_JStor.=
+
+Search_ScienceDirect=
+Error_while_fetching_from_ScienceDirect=
\ No newline at end of file
diff --git a/src/resource/JabRef_zh.properties.UTF8 b/src/resource/JabRef_zh.properties.UTF8
index cb7c6fa..9ce7643 100644
--- a/src/resource/JabRef_zh.properties.UTF8
+++ b/src/resource/JabRef_zh.properties.UTF8
@@ -608,8 +608,6 @@ entry=记录
Entry_editor=记录编辑器
-Entry_has_no_citekey=记录没有引用键值
-
Entry_in_current_database=当前数据库中的记录
Entry_in_import=Entry_in_import
@@ -655,7 +653,7 @@ Exceptions=异常
Existing_file=已有文件
exists._Overwrite_file?=已存在,覆盖文件?
-exists.Overwrite?=已存在,覆盖?
+exists._Overwrite?=已存在,覆盖?
Expand_subtree=展开子树
@@ -1082,7 +1080,6 @@ Move_down=下移
Move_entries_in_group_selection_to_the_top=移动选中分组的记录到顶部
Move_external_links_to_'file'_field=移动外部链接到_'file'_域
-Move_file_to_file_directory=移动文件到文件目录
Move_files_to_file_directory.=移动文件到文件目录。
move_group=移动分组
@@ -1103,8 +1100,6 @@ Name_formatter=姓名格式化器
Natbib_style=Natbib_格式
-Native_file_dialog=本地文件对话框
-
nested_aux_files=nested_aux_文件
New=新建
@@ -1431,7 +1426,6 @@ Removed_group_"%0".=已移除分组_"%0"。
Removed_group_"%0"_and_its_subgroups.=已移除分组_"%0"_和它的子分组。
Removed_string=已移除简写字串
-Rename_to_match_citekey=重命名以匹配引用键值
Renamed_string=重命名字符串
@@ -2132,4 +2126,27 @@ Generate_groups_from_keywords_in_a_BibTeX_field=
Enforce_legal_characters_in_BibTeX_keys=
The_#_character_is_not_allowed_in_BibTeX_strings_unless_escaped_as_in_'\\#'.=
-Before_saving,_please_edit_any_strings_containing_the_#_character.=
\ No newline at end of file
+Before_saving,_please_edit_any_strings_containing_the_#_character.=
+
+Save_without_backup?=
+Unable_to_create_backup=
+
+File_directory_is_not_set_or_does_not_exist.=
+Move_file_to_file_directory.=
+Rename_file_to=
+Reset=
+<b>All_Entries</b>_(this_group_cannot_be_edited_or_removed)=
+</b>_-_static_group=
+,_refines_supergroup=
+,_includes_subgroups=
+</b>_-_dynamic_group_(<b>=
+</b>_contains_<b>=
+</b>_-_dynamic_group_(=
+search_expression\:_<b>=
+
+Disable_file_renaming_in_non-native_file_dialog=
+File_dialog=
+No_entries_found._It_looks_like_you_do_not_have_access_to_search_JStor.=
+
+Search_ScienceDirect=
+Error_while_fetching_from_ScienceDirect=
diff --git a/src/resource/Menu_da.properties b/src/resource/Menu_da.properties
index 070d37e..651bdcc 100644
--- a/src/resource/Menu_da.properties
+++ b/src/resource/Menu_da.properties
@@ -121,3 +121,5 @@ Back=Tilbage
Manage_plugins=&Administrer_plugins
Look_up_full_text_document=&Hent_tekstdokument
Set/clear/rename_fields=Udfyld/ryd/omd\u00F8b_felter
+
+Search_ScienceDirect=
\ No newline at end of file
diff --git a/src/resource/Menu_de.properties b/src/resource/Menu_de.properties
index a3ecde7..202aa48 100644
--- a/src/resource/Menu_de.properties
+++ b/src/resource/Menu_de.properties
@@ -49,9 +49,9 @@ Export_selected_entries_to_clipboard=&Ausgw\u00E4hlte_Eintr\u00E4ge_in_die_Zwisc
Fetch_citations_from_CiteSeer=&Literaturangaben_von_CiteSeer_abrufen
-Fetch_CiteSeer=&CiteSeer_abrufen
+Fetch_CiteSeer=&CiteSeer
-Fetch_Medline=&Medline_abrufen
+Fetch_Medline=&Medline
# Menu names
File=&Datei
@@ -148,7 +148,7 @@ Save_session=Sitzung_&speichern
# Tools
Search=&Suchen
-Search_IEEEXplore=IEEEXplore_durchsuchen
+Search_IEEEXplore=IEEEXplore
Select_all=&Alle_ausw\u00E4hlen
@@ -198,7 +198,7 @@ Write_XMP-metadata_to_PDFs=&XMP-Metadaten_in_PDFs_schreiben
Set/clear_fields=&Felder_setzen/l\u00F6schen
Export_selected_entries=Ausgew\u00E4hlte_Eintr\u00E4ge_e&xportieren
-Fetch_ArXiv.org=ArXiv.org_abrufen
+Fetch_ArXiv.org=ArXiv.org
Sessions=S&itzungen
Save_all=A&lle_speichern
@@ -209,13 +209,13 @@ Open_file=Datei_\u00F6ffnen
Plugins=&Plugins
Connect_to_external_SQL_database=Mit_externer_SQL-Datenbank_verbinden
Export_to_external_SQL_database=Export_in_externe_SQL-Datenbank
-Search_JSTOR=JSTOR_durchsuchen
-Fetch_SPIRES=SPIRES_abrufen
+Search_JSTOR=JSTOR
+Fetch_SPIRES=SPIRES
Fetch_CiteSeer_by_ID=CiteSeer_mittels_ID_abrufen
-Search_Medline=Medline_durchsuchen
+Search_Medline=Medline
Import_from_external_SQL_database=Import_aus_externer_SQL-Datenbank
Focus_entry_table=Fokus_auf_Tabelle_setzen
-Search_ACM_Portal=ACM-Portal_durchsuchen
+Search_ACM_Portal=ACM-Portal
Increase_table_font_size=Schriftgr\u00F6\u00DFe_in_der_&Tabelle_vergr\u00F6\u00DFern
Decrease_table_font_size=Schriftgr\u00F6\u00DFe_in_der_Tabelle_ver&kleinern
@@ -224,4 +224,6 @@ Back=Zur\u00FCck
Manage_plugins=Plugins_verwalten
Look_up_full_text_document=Volltext-Dokument_suchen
-Set/clear/rename_fields=Felder_setzen/l\u00f6schen/umbenennen
+Set/clear/rename_fields=Felder_setzen/l\u00F6schen/umbenennen
+
+Search_ScienceDirect=ScienceDirect
diff --git a/src/resource/Menu_en.properties b/src/resource/Menu_en.properties
index 12fc3b2..284200b 100644
--- a/src/resource/Menu_en.properties
+++ b/src/resource/Menu_en.properties
@@ -142,3 +142,5 @@ Back=Back
Manage_plugins=Manage_plugins
Look_up_full_text_document=Look_up_full_text_document
Set/clear/rename_fields=Set/clear/rename_fields
+
+Search_ScienceDirect=Search_ScienceDirect
\ No newline at end of file
diff --git a/src/resource/Menu_es.properties b/src/resource/Menu_es.properties
index e042023..5b858f5 100644
--- a/src/resource/Menu_es.properties
+++ b/src/resource/Menu_es.properties
@@ -144,4 +144,6 @@ Back=
Manage_plugins=
Look_up_full_text_document=
-Set/clear/rename_fields=
\ No newline at end of file
+Set/clear/rename_fields=
+
+Search_ScienceDirect=
\ No newline at end of file
diff --git a/src/resource/Menu_fr.properties b/src/resource/Menu_fr.properties
index 81197d8..f02e55b 100644
--- a/src/resource/Menu_fr.properties
+++ b/src/resource/Menu_fr.properties
@@ -66,10 +66,10 @@ Quit=&Quitter
Recent_files=Fichiers_&r\u00E9cents
Redo=&R\u00E9p\u00E9ter
Replace_string=Remplacer_la_c&ha\u00EEne
-Save_database=&Sauvegarder_la_base
-Save_database_as_...=S&auvegarder_la_base_sous_...
-Save_selected_as_...=Sauvegarder_la_s\u00E9&lection_sous_...
-Save_session=Sau&ver_session
+Save_database=Enregistrer_la_base
+Save_database_as_...=Enregistrer_la_base_sous_...
+Save_selected_as_...=Enregistrer_la_s\u00E9&lection_sous_...
+Save_session=Enregistrer_la_session
Search=&Recherche
Search_IEEEXplore=IEEEXplore
Select_all=&Tout_s\u00E9lectionner
@@ -104,7 +104,7 @@ Export_selected_entries=Exporter_les_entr\u00E9es_s\u00E9lectionn\u00E9es
Fetch_ArXiv.org=ArXiv.org
Sessions=Sessions
-Save_all=Sauvegarder_tout
+Save_all=Enregistrer_tout
Upgrade_external_links=Mettre_\u00E0_jour_les_liens_externes
Manage_external_file_types=G\u00E9rer_les_types_de_fichiers_externes
@@ -130,3 +130,5 @@ Back=Pr\u00E9c\u00E9dent
Manage_plugins=G\u00E9rer_les_greffons
Look_up_full_text_document=T\u00E9l\u00E9charger_le_document_cit\u00E9
Set/clear/rename_fields=Configurer/vider/renommer_des_champs
+
+Search_ScienceDirect=ScienceDirect
\ No newline at end of file
diff --git a/src/resource/Menu_it.properties b/src/resource/Menu_it.properties
index f119c1d..8218663 100644
--- a/src/resource/Menu_it.properties
+++ b/src/resource/Menu_it.properties
@@ -138,4 +138,6 @@ Back=
Manage_plugins=
Look_up_full_text_document=
-Set/clear/rename_fields=
\ No newline at end of file
+Set/clear/rename_fields=
+
+Search_ScienceDirect=
\ No newline at end of file
diff --git a/src/resource/Menu_nl.properties b/src/resource/Menu_nl.properties
index 46081e8..c47f242 100644
--- a/src/resource/Menu_nl.properties
+++ b/src/resource/Menu_nl.properties
@@ -231,4 +231,6 @@ Back=
Manage_plugins=
Look_up_full_text_document=
-Set/clear/rename_fields=
\ No newline at end of file
+Set/clear/rename_fields=
+
+Search_ScienceDirect=
\ No newline at end of file
diff --git a/src/resource/Menu_no.properties b/src/resource/Menu_no.properties
index 251caae..f1be0a9 100644
--- a/src/resource/Menu_no.properties
+++ b/src/resource/Menu_no.properties
@@ -138,4 +138,6 @@ Back=
Manage_plugins=
Look_up_full_text_document=
-Set/clear/rename_fields=
\ No newline at end of file
+Set/clear/rename_fields=
+
+Search_ScienceDirect=
\ No newline at end of file
diff --git a/src/resource/Menu_tr.properties b/src/resource/Menu_tr.properties
index 7c92971..442e73b 100644
--- a/src/resource/Menu_tr.properties
+++ b/src/resource/Menu_tr.properties
@@ -117,9 +117,8 @@ Increase_table_font_size=Tablo_yaz\u0131tipi_boyutunu_artt\u0131r
Decrease_table_font_size=Tablo_yaz\u0131tipi_boyutunu_azalt
Forward=\u0130leri
Back=Geri
-Manage_plugins=Eklentileri_y\u00f6net
-Synchronize_file_links=Dosya_linklerini_e\u015fzamanla
+Manage_plugins=Eklentileri_y\u00F6net
Set/clear/rename_fields=Alanlar\u0131_ata/sil/yeniden_adland\u0131r
Look_up_full_text_document=Tam_metin_belge_bul
-Push_entries_to_external_application_(LyX/Kile)=Girdileri_harici_uygulamaya_(LyX/Kile)_itele
+Search_ScienceDirect=
\ No newline at end of file
diff --git a/src/resource/Menu_zh.properties b/src/resource/Menu_zh.properties
index 1d5e28c..7bc06e9 100644
--- a/src/resource/Menu_zh.properties
+++ b/src/resource/Menu_zh.properties
@@ -1,146 +1,146 @@
#!
#! created/edited by Popeye version 0.54 (popeye.sourceforge.net)
#! encoding:ISO-8859-1
-Abbreviate_journal_names_(ISO)=\u7f29\u5199\u671f\u520a\u540d\u79f0_(ISO)
-Abbreviate_journal_names_(MEDLINE)=\u7f29\u5199\u671f\u520a\u540d\u79f0_(MEDLINE)
-About_JabRef=\u5173\u4e8e_JabRef_(&A)
-Append_database=\u8ffd\u52a0\u6570\u636e\u5e93_(&A)
-Autogenerate_BibTeX_keys=\u81ea\u52a8\u751f\u6210_BibTeX_\u952e(&A)
+Abbreviate_journal_names_(ISO)=\u7F29\u5199\u671F\u520A\u540D\u79F0_(ISO)
+Abbreviate_journal_names_(MEDLINE)=\u7F29\u5199\u671F\u520A\u540D\u79F0_(MEDLINE)
+About_JabRef=\u5173\u4E8E_JabRef_(&A)
+Append_database=\u8FFD\u52A0\u6570\u636E\u5E93_(&A)
+Autogenerate_BibTeX_keys=\u81EA\u52A8\u751F\u6210_BibTeX_\u952E(&A)
BibTeX=&BibTeX
-Close_database=\u5173\u95ed\u5f53\u524d\u6570\u636e\u5e93_(&C)
-Copy=\u590d\u5236(&o)
-Copy_\\cite{BibTeX_key}=\u590d\u5236_\\c&ite{BibTeX_\u952e\u503c}
-Copy_BibTeX_key=\u590d\u5236_&BibTeX_\u952e\u503c
-Custom_export=\u81ea\u5b9a\u4e49\u5bfc\u51fa\u5668_(&x)
-Custom_importers=\u81ea\u5b9a\u4e49\u5bfc\u5165\u5668
-Customize_entry_types=\u81ea\u5b9a\u4e49\u8bb0\u5f55\u7c7b\u522b_(&C)
-Cut=\u526a\u5207_(&C)
-Database_properties=\u6570\u636e\u5e93\u5c5e\u6027_(&p)
+Close_database=\u5173\u95ED\u5F53\u524D\u6570\u636E\u5E93_(&C)
+Copy=\u590D\u5236(&o)
+Copy_\\cite{BibTeX_key}=\u590D\u5236_\\c&ite{BibTeX_\u952E\u503C}
+Copy_BibTeX_key=\u590D\u5236_&BibTeX_\u952E\u503C
+Custom_export=\u81EA\u5B9A\u4E49\u5BFC\u51FA\u5668_(&x)
+Custom_importers=\u81EA\u5B9A\u4E49\u5BFC\u5165\u5668
+Customize_entry_types=\u81EA\u5B9A\u4E49\u8BB0\u5F55\u7C7B\u522B_(&C)
+Cut=\u526A\u5207_(&C)
+Database_properties=\u6570\u636E\u5E93\u5C5E\u6027_(&p)
Delete=\u5220\u9664_(&D)
-Edit=\u7f16\u8f91_(&E)
+Edit=\u7F16\u8F91_(&E)
# Bibtex
-Edit_entry=\u7f16\u8f91\u8bb0\u5f55_(&E)
-Edit_preamble=\u7f16\u8f91\u5bfc\u8a00\u533a_(&preamble)
-Edit_strings=\u7f16\u8f91\u7b80\u5199\u5b57\u4e32_(&s)
-Export=\u5bfc\u51fa_(&E)
-Export_selected_entries_to_clipboard=\u5bfc\u51fa\u9009\u4e2d\u8bb0\u5f55\u5230\u526a\u8d34\u677f_(&E)
-Fetch_citations_from_CiteSeer=\u4ece_&CiteSeer_\u6293\u53d6_cite_\u4fe1\u606f
-Fetch_CiteSeer=\u6293\u53d6_CiteSeer
-Fetch_Medline=\u6293\u53d6_&Medline
+Edit_entry=\u7F16\u8F91\u8BB0\u5F55_(&E)
+Edit_preamble=\u7F16\u8F91\u5BFC\u8A00\u533A_(&preamble)
+Edit_strings=\u7F16\u8F91\u7B80\u5199\u5B57\u4E32_(&s)
+Export=\u5BFC\u51FA_(&E)
+Export_selected_entries_to_clipboard=\u5BFC\u51FA\u9009\u4E2D\u8BB0\u5F55\u5230\u526A\u8D34\u677F_(&E)
+Fetch_citations_from_CiteSeer=\u4ECE_&CiteSeer_\u6293\u53D6_cite_\u4FE1\u606F
+Fetch_CiteSeer=\u6293\u53D6_CiteSeer
+Fetch_Medline=\u6293\u53D6_&Medline
# Menu names
-File=\u6587\u4ef6_(&F)
-Find_And_Fix=\u67e5\u627e\u5e76\u89e3\u51b3
-Find_and_remove_exact_duplicates=\u67e5\u627e\u5e76\u79fb\u9664\u5b8c\u5168\u91cd\u590d\u8bb0\u5f55_(&d)
-Find_duplicates=\u67e5\u627e\u91cd\u590d\u8bb0\u5f55_(&F)
-Help=\u5e2e\u52a9_(&H)
-Help_contents=\u5e2e\u52a9\u5185\u5bb9_(&c)
-Highlight_groups_matching_all_selected_entries=\u9ad8\u4eae\u663e\u793a\u5305\u542b\u6240\u6709\u9009\u4e2d\u8bb0\u5f55\u7684\u5206\u7ec4
-Highlight_groups_matching_any_selected_entry=\u9ad8\u4eae\u663e\u793a\u5305\u542b\u4efb\u4e00\u9009\u4e2d\u8bb0\u5f55\u7684\u5206\u7ec4
-Import_Fields_from_CiteSeer=\u4ece_&CiteSeer_\u5bfc\u5165\u5176\u5b83\u57df
-Incremental_search=\u589e\u91cf\u67e5\u627e_(&I)
+File=\u6587\u4EF6_(&F)
+Find_And_Fix=\u67E5\u627E\u5E76\u89E3\u51B3
+Find_and_remove_exact_duplicates=\u67E5\u627E\u5E76\u79FB\u9664\u5B8C\u5168\u91CD\u590D\u8BB0\u5F55_(&d)
+Find_duplicates=\u67E5\u627E\u91CD\u590D\u8BB0\u5F55_(&F)
+Help=\u5E2E\u52A9_(&H)
+Help_contents=\u5E2E\u52A9\u5185\u5BB9_(&c)
+Highlight_groups_matching_all_selected_entries=\u9AD8\u4EAE\u663E\u793A\u5305\u542B\u6240\u6709\u9009\u4E2D\u8BB0\u5F55\u7684\u5206\u7EC4
+Highlight_groups_matching_any_selected_entry=\u9AD8\u4EAE\u663E\u793A\u5305\u542B\u4EFB\u4E00\u9009\u4E2D\u8BB0\u5F55\u7684\u5206\u7EC4
+Import_Fields_from_CiteSeer=\u4ECE_&CiteSeer_\u5BFC\u5165\u5176\u5B83\u57DF
+Incremental_search=\u589E\u91CF\u67E5\u627E_(&I)
-Insert_selected_citations_into_Emacs=\u5c06\u9009\u4e2d_cite_\u63d2\u5165\u5230_(&E)macs
-Insert_selected_citations_into_LatexEditor=\u5c06\u9009\u4e2d_cite_\u63d2\u5165\u5230_LatexEditor
-Insert_selected_citations_into_LyX/Kile=\u5c06\u9009\u4e2d_cite_\u63d2\u5165\u5230_&LyX/Kile
-Insert_selected_citations_into_WinEdt=\u5c06\u9009\u4e2d_cite_\u63d2\u5165\u5230_&WinEdt
-Integrity_check=\u5b8c\u6574\u6027\u68c0\u67e5
+Insert_selected_citations_into_Emacs=\u5C06\u9009\u4E2D_cite_\u63D2\u5165\u5230_(&E)macs
+Insert_selected_citations_into_LatexEditor=\u5C06\u9009\u4E2D_cite_\u63D2\u5165\u5230_LatexEditor
+Insert_selected_citations_into_LyX/Kile=\u5C06\u9009\u4E2D_cite_\u63D2\u5165\u5230_&LyX/Kile
+Insert_selected_citations_into_WinEdt=\u5C06\u9009\u4E2D_cite_\u63D2\u5165\u5230_&WinEdt
+Integrity_check=\u5B8C\u6574\u6027\u68C0\u67E5
# Help
-JabRef_help=JabRef_\u5e2e\u52a9_(&h)
-Load_session=\u52a0\u8f7d\u4f1a\u8bdd_(&D)
-Manage_content_selectors=\u7ba1\u7406\u5185\u5bb9\u4e0b\u62c9\u83dc\u5355_(&C)
-Manage_custom_exports=\u7ba1\u7406\u81ea\u5b9a\u4e49\u5bfc\u51fa\u5668_(&M)
-Manage_custom_imports=\u7ba1\u7406\u81ea\u5b9a\u4e49\u5bfc\u5165\u5668_(&I)
-Manage_journal_abbreviations=\u7ba1\u7406\u671f\u520a\u540d\u7f29\u5199\u89c4\u5219_(&J)
-Mark_entries=\u9ad8\u4eae\u6807\u8bb0\u9009\u4e2d\u8bb0\u5f55_(&M)
+JabRef_help=JabRef_\u5E2E\u52A9_(&h)
+Load_session=\u52A0\u8F7D\u4F1A\u8BDD_(&D)
+Manage_content_selectors=\u7BA1\u7406\u5185\u5BB9\u4E0B\u62C9\u83DC\u5355_(&C)
+Manage_custom_exports=\u7BA1\u7406\u81EA\u5B9A\u4E49\u5BFC\u51FA\u5668_(&M)
+Manage_custom_imports=\u7BA1\u7406\u81EA\u5B9A\u4E49\u5BFC\u5165\u5668_(&I)
+Manage_journal_abbreviations=\u7BA1\u7406\u671F\u520A\u540D\u7F29\u5199\u89C4\u5219_(&J)
+Mark_entries=\u9AD8\u4EAE\u6807\u8BB0\u9009\u4E2D\u8BB0\u5F55_(&M)
# File menu
-New_database=\u65b0\u5efa\u6570\u636e\u5e93_(&N)
+New_database=\u65B0\u5EFA\u6570\u636E\u5E93_(&N)
# Menu BibTeX (BibTeX)
-New_entry=\u65b0\u5efa\u8bb0\u5f55\u5411\u5bfc_(&e)
-New_entry...=\u65b0\u5efa\u8bb0\u5f55_(&N)...
-New_entry_from_plain_text=\u4ee5\u7eaf\u6587\u672c\u65b0\u5efa\u8bb0\u5f55_(&W)
-New_subdatabase_based_on_AUX_file=\u6839\u636e_AU&X_\u6587\u4ef6\u65b0\u5efa\u5b50\u6570\u636e\u5e93
+New_entry=\u65B0\u5EFA\u8BB0\u5F55\u5411\u5BFC_(&e)
+New_entry...=\u65B0\u5EFA\u8BB0\u5F55_(&N)...
+New_entry_from_plain_text=\u4EE5\u7EAF\u6587\u672C\u65B0\u5EFA\u8BB0\u5F55_(&W)
+New_subdatabase_based_on_AUX_file=\u6839\u636E_AU&X_\u6587\u4EF6\u65B0\u5EFA\u5B50\u6570\u636E\u5E93
# View
-Next_tab=\u4e0b\u4e00\u6807\u7b7e\u9875_(&N)
-Open_database=\u6253\u5f00\u6570\u636e\u5e93_(&O)
-Open_PDF_or_PS=\u6253\u5f00_(&P)DF_\u6216_PS
-Open_URL_or_DOI=\u6253\u5f00_&URL_\u6216_DOI
+Next_tab=\u4E0B\u4E00\u6807\u7B7E\u9875_(&N)
+Open_database=\u6253\u5F00\u6570\u636E\u5E93_(&O)
+Open_PDF_or_PS=\u6253\u5F00_(&P)DF_\u6216_PS
+Open_URL_or_DOI=\u6253\u5F00_&URL_\u6216_DOI
Options=\u9009\u9879_(&O)
-Paste=\u7c98\u8d34_(&P)
+Paste=\u7C98\u8D34_(&P)
# Options
Preferences=\u9996\u9009\u9879_(&P)
-Previous_tab=\u4e0a\u4e00\u6807\u7b7e\u9875_(&P)
-Quit=\u9000\u51fa_(&Q)
-Recent_files=\u6700\u8fd1\u6253\u5f00\u7684\u6587\u4ef6_(&R)
-Redo=\u91cd\u505a_(&R)
-Replace_string=\u66ff\u6362\u5b57\u7b26\u4e32_(&R)
-Save_database=\u4fdd\u5b58\u6570\u636e\u5e93_(&S)
-Save_database_as_...=\u6570\u636e\u5e93\u53e6\u5b58\u4e3a_(&A)...
-Save_selected_as_...=\u9009\u4e2d\u8bb0\u5f55\u53e6\u5b58\u4e3a_(&L)...
-Save_session=\u4fdd\u5b58\u5f53\u524d\u4f1a\u8bdd
+Previous_tab=\u4E0A\u4E00\u6807\u7B7E\u9875_(&P)
+Quit=\u9000\u51FA_(&Q)
+Recent_files=\u6700\u8FD1\u6253\u5F00\u7684\u6587\u4EF6_(&R)
+Redo=\u91CD\u505A_(&R)
+Replace_string=\u66FF\u6362\u5B57\u7B26\u4E32_(&R)
+Save_database=\u4FDD\u5B58\u6570\u636E\u5E93_(&S)
+Save_database_as_...=\u6570\u636E\u5E93\u53E6\u5B58\u4E3A_(&A)...
+Save_selected_as_...=\u9009\u4E2D\u8BB0\u5F55\u53E6\u5B58\u4E3A_(&L)...
+Save_session=\u4FDD\u5B58\u5F53\u524D\u4F1A\u8BDD
# Tools
-Search=\u67e5\u627e_(&S)
-Search_IEEEXplore=\u641c\u7d22_IEEEXplore
+Search=\u67E5\u627E_(&S)
+Search_IEEEXplore=\u641C\u7D22_IEEEXplore
Select_all=\u5168\u9009_(&A)
-Set_up_general_fields=\u914d\u7f6e_&general_\u57df
-Show_error_console=\u6253\u5f00\u9519\u8bef\u663e\u793a\u7ec8\u7aef
+Set_up_general_fields=\u914D\u7F6E_&general_\u57DF
+Show_error_console=\u6253\u5F00\u9519\u8BEF\u663E\u793A\u7EC8\u7AEF
-Sort_tabs=\u6807\u7b7e\u9875\u6392\u5e8f_(&S)
-Switch_preview_layout=\u5207\u6362\u8bb0\u5f55\u9884\u89c8\u65b9\u5f0f_(&S)
-Synchronize_PDF_links=\u81ea\u52a8\u540c\u6b65_PDF_\u94fe\u63a5
-Synchronize_PS_links=\u81ea\u52a8\u540c\u6b65_PS_\u94fe\u63a5
+Sort_tabs=\u6807\u7B7E\u9875\u6392\u5E8F_(&S)
+Switch_preview_layout=\u5207\u6362\u8BB0\u5F55\u9884\u89C8\u65B9\u5F0F_(&S)
+Synchronize_PDF_links=\u81EA\u52A8\u540C\u6B65_PDF_\u94FE\u63A5
+Synchronize_PS_links=\u81EA\u52A8\u540C\u6B65_PS_\u94FE\u63A5
# Export menu
-Tab-separated_file=\u4f7f\u7528\u5236\u8868\u7b26\u95f4\u9694\u7684\u6587\u4ef6_(&T)
-Toggle_entry_preview=\u6253\u5f00/\u5173\u95ed\u8bb0\u5f55\u9884\u89c8_(&T)
-Toggle_groups_interface=\u6253\u5f00/\u5173\u95ed\u5206\u7ec4\u754c\u9762_(&G)
-Tools=\u5de5\u5177_(&T)
-Unabbreviate_journal_names=\u5c55\u5f00\u671f\u520a\u540d\u79f0
+Tab-separated_file=\u4F7F\u7528\u5236\u8868\u7B26\u95F4\u9694\u7684\u6587\u4EF6_(&T)
+Toggle_entry_preview=\u6253\u5F00/\u5173\u95ED\u8BB0\u5F55\u9884\u89C8_(&T)
+Toggle_groups_interface=\u6253\u5F00/\u5173\u95ED\u5206\u7EC4\u754C\u9762_(&G)
+Tools=\u5DE5\u5177_(&T)
+Unabbreviate_journal_names=\u5C55\u5F00\u671F\u520A\u540D\u79F0
# Edit
-Undo=\u64a4\u9500_(&U)
-Unmark_all=\u64a4\u9500\u6240\u6709\u9ad8\u4eae\u6807\u8bb0_(&L)
-Unmark_entries=\u64a4\u9500\u9009\u4e2d\u9ad8\u4eae\u6807\u8bb0_(&N)
-Unpack_EndNote_filter_set=\u89e3\u5f00_&EndNote_filter_set
-View=\u89c6\u56fe_(&V)
-Web_search=Web_\u641c\u7d22
-Import_into_new_database=\u5bfc\u5165\u5230\u65b0\u6570\u636e\u5e93
-Import_into_current_database=\u5bfc\u5165\u5230\u5f53\u524d\u6570\u636e\u5e93
+Undo=\u64A4\u9500_(&U)
+Unmark_all=\u64A4\u9500\u6240\u6709\u9AD8\u4EAE\u6807\u8BB0_(&L)
+Unmark_entries=\u64A4\u9500\u9009\u4E2D\u9AD8\u4EAE\u6807\u8BB0_(&N)
+Unpack_EndNote_filter_set=\u89E3\u5F00_&EndNote_filter_set
+View=\u89C6\u56FE_(&V)
+Web_search=Web_\u641C\u7D22
+Import_into_new_database=\u5BFC\u5165\u5230\u65B0\u6570\u636E\u5E93
+Import_into_current_database=\u5BFC\u5165\u5230\u5F53\u524D\u6570\u636E\u5E93
-Scan_database...=\u626b\u63cf\u6570\u636e\u5e93_(&C)...
+Scan_database...=\u626B\u63CF\u6570\u636E\u5E93_(&C)...
-Push_entries_to_external_application_(%0)=\u63a8\u9001\u9009\u4e2d\u8bb0\u5f55\u5230\u5916\u90e8\u7a0b\u5e8f_(%0)
-Write_XMP-metadata_to_PDFs=\u5c06_XMP_\u5143\u6570\u636e\u5199\u5165\u5230_PDF_\u4e2d
-Set/clear_fields=\u8bbe\u7f6e/\u6e05\u9664_\u57df
+Push_entries_to_external_application_(%0)=\u63A8\u9001\u9009\u4E2D\u8BB0\u5F55\u5230\u5916\u90E8\u7A0B\u5E8F_(%0)
+Write_XMP-metadata_to_PDFs=\u5C06_XMP_\u5143\u6570\u636E\u5199\u5165\u5230_PDF_\u4E2D
+Set/clear_fields=\u8BBE\u7F6E/\u6E05\u9664_\u57DF
-Export_selected_entries=\u5bfc\u51fa\u9009\u4e2d\u8bb0\u5f55
-Fetch_ArXiv.org=\u6293\u53d6_ArXiv.org
-Sessions=\u4f1a\u8bdd
+Export_selected_entries=\u5BFC\u51FA\u9009\u4E2D\u8BB0\u5F55
+Fetch_ArXiv.org=\u6293\u53D6_ArXiv.org
+Sessions=\u4F1A\u8BDD
-Save_all=\u4fdd\u5b58\u5168\u90e8
+Save_all=\u4FDD\u5B58\u5168\u90E8
-Upgrade_external_links=\u66f4\u65b0\u5916\u90e8\u94fe\u63a5
-Manage_external_file_types=\u7ba1\u7406\u5916\u90e8\u6587\u4ef6\u7c7b\u578b\u5173\u8054
+Upgrade_external_links=\u66F4\u65B0\u5916\u90E8\u94FE\u63A5
+Manage_external_file_types=\u7BA1\u7406\u5916\u90E8\u6587\u4EF6\u7C7B\u578B\u5173\u8054
-Open_file=\u6253\u5f00\u6587\u4ef6
+Open_file=\u6253\u5F00\u6587\u4EF6
-Plugins=\u63d2\u4ef6_(&P)
-Connect_to_external_SQL_database=\u8fde\u63a5\u5230\u5916\u90e8_SQL_\u6570\u636e\u5e93
-Export_to_external_SQL_database=\u5bfc\u51fa\u5230\u5916\u90e8_SQL_\u6570\u636e\u5e93
-Search_JSTOR=\u641c\u7d22_JSTOR
-Fetch_SPIRES=\u6293\u53d6_SPIRES
-Fetch_CiteSeer_by_ID=\u6839\u636e_ID_\u4ece_CiteSeer_\u6293\u53d6
-Search_Medline=\u641c\u7d22_Medline
-Import_from_external_SQL_database=\u4ece\u5916\u90e8_SQL_\u6570\u636e\u5e93\u5bfc\u5165
-Focus_entry_table=\u6fc0\u6d3b\u8bb0\u5f55\u5217\u8868
-Search_ACM_Portal=\u641c\u7d22_ACM_Portal
+Plugins=\u63D2\u4EF6_(&P)
+Connect_to_external_SQL_database=\u8FDE\u63A5\u5230\u5916\u90E8_SQL_\u6570\u636E\u5E93
+Export_to_external_SQL_database=\u5BFC\u51FA\u5230\u5916\u90E8_SQL_\u6570\u636E\u5E93
+Search_JSTOR=\u641C\u7D22_JSTOR
+Fetch_SPIRES=\u6293\u53D6_SPIRES
+Fetch_CiteSeer_by_ID=\u6839\u636E_ID_\u4ECE_CiteSeer_\u6293\u53D6
+Search_Medline=\u641C\u7D22_Medline
+Import_from_external_SQL_database=\u4ECE\u5916\u90E8_SQL_\u6570\u636E\u5E93\u5BFC\u5165
+Focus_entry_table=\u6FC0\u6D3B\u8BB0\u5F55\u5217\u8868
+Search_ACM_Portal=\u641C\u7D22_ACM_Portal
-Increase_table_font_size=\u653e\u5927\u5217\u8868\u5b57\u4f53_(&I)
-Decrease_table_font_size=\u7f29\u5c0f\u5217\u8868\u5b57\u4f53_(&D)
-Forward=\u524d\u8fdb
-Back=\u540e\u9000
-Synchronize_file_links=\u81ea\u52a8\u540c\u6b65\u6240\u6709\u6587\u4ef6\u94fe\u63a5
+Increase_table_font_size=\u653E\u5927\u5217\u8868\u5B57\u4F53_(&I)
+Decrease_table_font_size=\u7F29\u5C0F\u5217\u8868\u5B57\u4F53_(&D)
+Forward=\u524D\u8FDB
+Back=\u540E\u9000
-Set/clear/rename_fields=\u8bbe\u7f6e/\u6e05\u9664/\u91cd\u547d\u540d_\u57df
+Set/clear/rename_fields=\u8BBE\u7F6E/\u6E05\u9664/\u91CD\u547D\u540D_\u57DF
-Manage_plugins=\u7ba1\u7406\u63d2\u4ef6
-Look_up_full_text_document=\u67e5\u627e\u5b8c\u6574\u6587\u6863
-Push_entries_to_external_application_(LyX/Kile)=\u63a8\u9001\u9009\u4e2d\u8bb0\u5f55\u5230\u5916\u90e8\u7a0b\u5e8f_(LyX/Kile)
+Manage_plugins=\u7BA1\u7406\u63D2\u4EF6
+Look_up_full_text_document=\u67E5\u627E\u5B8C\u6574\u6587\u6863
+
+Search_ScienceDirect=
\ No newline at end of file
diff --git a/src/resource/Menu_zh.properties.UTF8 b/src/resource/Menu_zh.properties.UTF8
index 55722d7..7ec7e68 100644
--- a/src/resource/Menu_zh.properties.UTF8
+++ b/src/resource/Menu_zh.properties.UTF8
@@ -88,7 +88,6 @@ Show_error_console=打开错误显示终端
Sort_tabs=标签页排序_(&S)
Switch_preview_layout=切换记录预览方式_(&S)
-Synchronize_file_links=自动同步所有文件链接
Synchronize_PDF_links=自动同步_PDF_链接
Synchronize_PS_links=自动同步_PS_链接
# Export menu
@@ -142,5 +141,6 @@ Back=后退
Manage_plugins=管理插件
Look_up_full_text_document=查找完整文档
-Push_entries_to_external_application_(LyX/Kile)=推送选中记录到外部程序_(LyX/Kile)
+Set/clear_fields=
+Search_ScienceDirect=
\ No newline at end of file
diff --git a/src/resource/build.properties b/src/resource/build.properties
index c6a6462..a35780d 100644
--- a/src/resource/build.properties
+++ b/src/resource/build.properties
@@ -1,3 +1,3 @@
-builddate=November 1 2009
-build=39
-version=2.6b2
\ No newline at end of file
+builddate=March 4 2010
+build=169
+version=2.6b3
\ No newline at end of file
diff --git a/src/resource/layout/bibtexml.layout b/src/resource/layout/bibtexml.layout
index 6b59fb7..62eb681 100755
--- a/src/resource/layout/bibtexml.layout
+++ b/src/resource/layout/bibtexml.layout
@@ -31,6 +31,7 @@
\begin{comment} <bibtex:comment>\format[XMLChars]{\comment}</bibtex:comment>\end{comment}
\begin{note} <bibtex:note>\format[XMLChars]{\note}</bibtex:note>\end{note}
\begin{key} <bibtex:key>\format[XMLChars]{\key}</bibtex:key>\end{key}
+\begin{review} <bibtex:nstandard name="review">\format[XMLChars]{\review}</bibtex:nstandard>\end{review}
\begin{file}\format[WrapFileLinks( <bibtex:nstandard name="file" type="\x" description="\d">\p</bibtex:nstandard>\n)]{\file}\end{file}
</bibtex:\format[ToLowerCase]{\bibtextype}>
</bibtex:entry>
diff --git a/src/resource/layout/docbook.begin.layout b/src/resource/layout/docbook.begin.layout
index 7a747c5..6f5dec5 100644
--- a/src/resource/layout/docbook.begin.layout
+++ b/src/resource/layout/docbook.begin.layout
@@ -1,5 +1,6 @@
-<?xml version="1.0" ?>
+<!DOCTYPE authorgroup PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
<!-- This file was exported from JabRef -->
-<bibliography>
+
diff --git a/src/resource/layout/docbook.layout b/src/resource/layout/docbook.layout
index deadab2..c17467a 100755
--- a/src/resource/layout/docbook.layout
+++ b/src/resource/layout/docbook.layout
@@ -1,8 +1,9 @@
<biblioentry xreflabel="\bibtexkey" id="\bibtexkey">
<authorgroup>
-\begin{author} \format[XMLChars,CreateDocBookAuthors]{\author} \end{author}
+\begin{author} \format[CreateDocBookAuthors]{\author} \end{author}
+\begin{editor} \format[CreateDocBookEditors]{\editor} \end{editor}
</authorgroup>
-<citetitle pubwork="article">\format[XMLChars,RemoveLatexCommands]{\title}</citetitle>
+ <citetitle pubwork="article">\format[XMLChars,RemoveLatexCommands]{\title}</citetitle>
\begin{journal} <citetitle pubwork="journal">\format[XMLChars]{\journal}</citetitle>\end{journal}
\begin{publisher} <publisher>
<publishername>\format[XMLChars]{\publisher}</publishername>
diff --git a/src/resource/ods/mimetype b/src/resource/ods/mimetype
new file mode 100644
index 0000000..78a49cc
--- /dev/null
+++ b/src/resource/ods/mimetype
@@ -0,0 +1 @@
+application/vnd.oasis.opendocument.spreadsheet
\ No newline at end of file
diff --git a/src/tests/net/sf/jabref/bibtexFiles/test.bib b/src/tests/net/sf/jabref/bibtexFiles/test.bib
new file mode 100644
index 0000000..cc5bcc1
--- /dev/null
+++ b/src/tests/net/sf/jabref/bibtexFiles/test.bib
@@ -0,0 +1,279 @@
+% This file was created with JabRef devel - 1st edition family.
+% Encoding: MacRoman
+
+ at ARTICLE{1102917,
+ author = {E. Bardram},
+ title = {The trouble with login: on usability and computer security in ubiquitous
+ computing},
+ journal = {Personal Ubiquitous Comput.},
+ year = {2005},
+ volume = {9},
+ pages = {357--367},
+ number = {6},
+ address = {London, UK},
+ bdsk-url-1 = {http://dx.doi.org/10.1007/s00779-005-0347-6},
+ doi = {http://dx.doi.org/10.1007/s00779-005-0347-6},
+ issn = {1617-4909},
+ publisher = {Springer-Verlag}
+}
+
+ at INPROCEEDINGS{1137631,
+ author = {Gustav Bostr\"{o}m and Jaana W\"{a}yrynen and Marine Bod\'{e}n and
+ Konstantin Beznosov and Philippe Kruchten},
+ title = {Extending XP practices to support security requirements engineering},
+ booktitle = {SESS '06: Proceedings of the 2006 international workshop on Software
+ engineering for secure systems},
+ year = {2006},
+ pages = {11--18},
+ address = {New York, NY, USA},
+ publisher = {ACM},
+ bdsk-url-1 = {http://doi.acm.org/10.1145/1137627.1137631},
+ doi = {http://doi.acm.org/10.1145/1137627.1137631},
+ file = {:/Volumes/iDisk/Freie Universit�t Berlin/Semester 9/Softwareprozesse/p11-bostrom.pdf:PDF},
+ isbn = {1-59593-411-1},
+ location = {Shanghai, China}
+}
+
+ at INPROCEEDINGS{1132768,
+ author = {Christina Braz and Jean-Marc Robert},
+ title = {Security and usability: the case of the user authentication methods},
+ booktitle = {IHM '06: Proceedings of the 18th International Conferenceof the Association
+ Francophone d'Interaction Homme-Machine},
+ year = {2006},
+ pages = {199--203},
+ address = {New York, NY, USA},
+ publisher = {ACM},
+ bdsk-url-1 = {http://doi.acm.org/10.1145/1132736.1132768},
+ doi = {http://doi.acm.org/10.1145/1132736.1132768},
+ isbn = {1-59593-350-6},
+ location = {Montreal, Canada}
+}
+
+ at INPROCEEDINGS{1137628,
+ author = {Danilo Bruschi and Bart De Win and Mattia Monga},
+ title = {Introduction to software engineering for secure systems: SESS06 --
+ secure by design},
+ booktitle = {SESS '06: Proceedings of the 2006 international workshop on Software
+ engineering for secure systems},
+ year = {2006},
+ pages = {1--2},
+ address = {New York, NY, USA},
+ publisher = {ACM},
+ bdsk-url-1 = {http://doi.acm.org/10.1145/1137627.1137628},
+ doi = {http://doi.acm.org/10.1145/1137627.1137628},
+ isbn = {1-59593-411-1},
+ location = {Shanghai, China}
+}
+
+ at ARTICLE{1373163,
+ author = {Elizabeth Churchill and Les Nelson and Diana K. Smetters},
+ title = {Useful Computer Security},
+ journal = {IEEE Internet Computing},
+ year = {2008},
+ volume = {12},
+ pages = {10--12},
+ number = {3},
+ address = {Piscataway, NJ, USA},
+ bdsk-url-1 = {http://dx.doi.org/10.1109/MIC.2008.67},
+ doi = {http://dx.doi.org/10.1109/MIC.2008.67},
+ issn = {1089-7801},
+ publisher = {IEEE Educational Activities Department}
+}
+
+ at ARTICLE{820136,
+ author = {Tony Clear},
+ title = {Design and usability in security systems: daily life as a context
+ of use?},
+ journal = {SIGCSE Bull.},
+ year = {2002},
+ volume = {34},
+ pages = {13--14},
+ number = {4},
+ address = {New York, NY, USA},
+ bdsk-url-1 = {http://doi.acm.org/10.1145/820127.820136},
+ doi = {http://doi.acm.org/10.1145/820127.820136},
+ issn = {0097-8418},
+ publisher = {ACM}
+}
+
+ at BOOK{1098730,
+ title = {Security and Usability},
+ publisher = {O'Reilly Media, Inc.},
+ year = {2005},
+ author = {Lorrie Cranor and Simson Garfinkel},
+ isbn = {0596008279}
+}
+
+ at INPROCEEDINGS{1143122,
+ author = {Alexander J. DeWitt and Jasna Kuljis},
+ title = {Aligning usability and security: a usability study of Polaris},
+ booktitle = {SOUPS '06: Proceedings of the second symposium on Usable privacy
+ and security},
+ year = {2006},
+ pages = {1--7},
+ address = {New York, NY, USA},
+ publisher = {ACM},
+ bdsk-url-1 = {http://doi.acm.org/10.1145/1143120.1143122},
+ doi = {http://doi.acm.org/10.1145/1143120.1143122},
+ isbn = {1-59593-448-0},
+ location = {Pittsburgh, Pennsylvania}
+}
+
+ at INPROCEEDINGS{1233448,
+ author = {Cheryl Hinds and Chinedu Ekwueme},
+ title = {Increasing security and usability of computer systems with graphical
+ passwords},
+ booktitle = {ACM-SE 45: Proceedings of the 45th annual southeast regional conference},
+ year = {2007},
+ pages = {529--530},
+ address = {New York, NY, USA},
+ publisher = {ACM},
+ bdsk-url-1 = {http://doi.acm.org/10.1145/1233341.1233448},
+ doi = {http://doi.acm.org/10.1145/1233341.1233448},
+ isbn = {978-1-59593-629-5},
+ location = {Winston-Salem, North Carolina}
+}
+
+ at INPROCEEDINGS{1314293,
+ author = {Mariusz H. Jakubowski and Ramarathnam Venkatesan},
+ title = {Randomized radon transforms for biometric authentication via fingerprint
+ hashing},
+ booktitle = {DRM '07: Proceedings of the 2007 ACM workshop on Digital Rights Management},
+ year = {2007},
+ pages = {90--94},
+ address = {New York, NY, USA},
+ publisher = {ACM},
+ bdsk-url-1 = {http://doi.acm.org/10.1145/1314276.1314293},
+ doi = {http://doi.acm.org/10.1145/1314276.1314293},
+ isbn = {978-1-59593-884-8},
+ location = {Alexandria, Virginia, USA}
+}
+
+ at INPROCEEDINGS{1358810,
+ author = {Vassilis Kostakos},
+ title = {Human-in-the-loop: rethinking security in mobile and pervasive systems},
+ booktitle = {CHI '08: CHI '08 extended abstracts on Human factors in computing
+ systems},
+ year = {2008},
+ pages = {3075--3080},
+ address = {New York, NY, USA},
+ publisher = {ACM},
+ bdsk-url-1 = {http://doi.acm.org/10.1145/1358628.1358810},
+ doi = {http://doi.acm.org/10.1145/1358628.1358810},
+ isbn = {978-1-60558-012-X},
+ location = {Florence, Italy}
+}
+
+ at INPROCEEDINGS{1137636,
+ author = {Martin Naedele and Thomas E. Koch},
+ title = {Trust and tamper-proof software delivery},
+ booktitle = {SESS '06: Proceedings of the 2006 international workshop on Software
+ engineering for secure systems},
+ year = {2006},
+ pages = {51--58},
+ address = {New York, NY, USA},
+ publisher = {ACM},
+ bdsk-url-1 = {http://doi.acm.org/10.1145/1137627.1137636},
+ doi = {http://doi.acm.org/10.1145/1137627.1137636},
+ isbn = {1-59593-411-1},
+ location = {Shanghai, China}
+}
+
+ at INPROCEEDINGS{1182529,
+ author = {Ann Nosseir and Richard Connor and Crawford Revie and Sotirios Terzis},
+ title = {Question-based authentication using context data},
+ booktitle = {NordiCHI '06: Proceedings of the 4th Nordic conference on Human-computer
+ interaction},
+ year = {2006},
+ pages = {429--432},
+ address = {New York, NY, USA},
+ publisher = {ACM},
+ bdsk-url-1 = {http://doi.acm.org/10.1145/1182475.1182529},
+ doi = {http://doi.acm.org/10.1145/1182475.1182529},
+ isbn = {1-59593-325-5},
+ location = {Oslo, Norway}
+}
+
+ at INPROCEEDINGS{1073004,
+ author = {Rog\'{e}rio de Paula and Xianghua Ding and Paul Dourish and Kari
+ Nies and Ben Pillet and David Redmiles and Jie Ren and Jennifer Rode
+ and Roberto Silva Filho},
+ title = {Two experiences designing for effective security},
+ booktitle = {SOUPS '05: Proceedings of the 2005 symposium on Usable privacy and
+ security},
+ year = {2005},
+ pages = {25--34},
+ address = {New York, NY, USA},
+ publisher = {ACM},
+ bdsk-url-1 = {http://doi.acm.org/10.1145/1073001.1073004},
+ doi = {http://doi.acm.org/10.1145/1073001.1073004},
+ isbn = {1-59593-178-3},
+ location = {Pittsburgh, Pennsylvania}
+}
+
+ at INPROCEEDINGS{00000000,
+ author = {Konstantin Rozinov},
+ title = {Are Usability and Security Two Opposite Directions in Computer Systems?},
+ year = {2004},
+ bdsk-url-1 = {http://rozinov.sfs.poly.edu/papers/security_vs_usability.pdf},
+ date-added = {2009-02-23 04:41:08 +0100},
+ date-modified = {2009-02-23 04:42:54 +0100},
+ rating = {2}
+}
+
+ at INPROCEEDINGS{1251435,
+ author = {Alma Whitten and J. D. Tygar},
+ title = {Why Johnny can't encrypt: a usability evaluation of PGP 5.0},
+ booktitle = {SSYM'99: Proceedings of the 8th conference on USENIX Security Symposium},
+ year = {1999},
+ pages = {14--14},
+ address = {Berkeley, CA, USA},
+ publisher = {USENIX Association},
+ location = {Washington, D.C.}
+}
+
+ at INPROCEEDINGS{1137633,
+ author = {Bart De Win and Frank Piessens and Wouter Joosen},
+ title = {How secure is AOP and what can we do about it?},
+ booktitle = {SESS '06: Proceedings of the 2006 international workshop on Software
+ engineering for secure systems},
+ year = {2006},
+ pages = {27--34},
+ address = {New York, NY, USA},
+ publisher = {ACM},
+ bdsk-url-1 = {http://doi.acm.org/10.1145/1137627.1137633},
+ doi = {http://doi.acm.org/10.1145/1137627.1137633},
+ isbn = {1-59593-411-1},
+ location = {Shanghai, China}
+}
+
+ at ARTICLE{1025014,
+ author = {Jeff Yan and Alan Blackwell and Ross Anderson and Alasdair Grant},
+ title = {Password Memorability and Security: Empirical Results},
+ journal = {IEEE Security and Privacy},
+ year = {2004},
+ volume = {2},
+ pages = {25--31},
+ number = {5},
+ address = {Piscataway, NJ, USA},
+ bdsk-url-1 = {http://dx.doi.org/10.1109/MSP.2004.81},
+ doi = {http://dx.doi.org/10.1109/MSP.2004.81},
+ issn = {1540-7993},
+ publisher = {IEEE Educational Activities Department}
+}
+
+ at ARTICLE{10250999,
+ author = {von Hippel, Eric and Reagle, Jr., Joseph M. and Sherry, John F., Jr. and van den Huevel, Jr., Johan A},
+ title = {Article with complex Authornames},
+ journal = {IEEE Security and Privacy},
+ year = {2004},
+ volume = {2},
+ pages = {25--31},
+ number = {5},
+ address = {Piscataway, NJ, USA},
+ bdsk-url-1 = {http://dx.doi.org/10.1109/MSP.2004.81},
+ doi = {http://dx.doi.org/10.1109/MSP.2004.81},
+ issn = {1540-7993},
+ publisher = {IEEE Educational Activities Department}
+}
+
diff --git a/src/tests/net/sf/jabref/imports/RisImporterTest1.ris b/src/tests/net/sf/jabref/imports/RisImporterTest1.ris
new file mode 100644
index 0000000..92395cc
--- /dev/null
+++ b/src/tests/net/sf/jabref/imports/RisImporterTest1.ris
@@ -0,0 +1,13 @@
+
+TY - JOUR
+JF - Empirical Software Engineering
+T1 - Editorial: Open Source and Empirical Software Engineering
+VL - 6
+IS - 3
+SP - 193
+EP - 194
+PY - 2001/09/01/
+AU - Harrison, Warren
+UR - http://dx.doi.org/10.1023/A:1017379030770
+ER -
+
\ No newline at end of file
diff --git a/src/txt/CHANGELOG b/src/txt/CHANGELOG
index dd1c566..9706d2c 100644
--- a/src/txt/CHANGELOG
+++ b/src/txt/CHANGELOG
@@ -1,3 +1,57 @@
+2.6b3
+ - Added ScienceDirect entry fetcher that utilizes the BibSonomy scraper.
+ - Changed non-native file dialog setting so files cannot be renamed. This prevents
+ accidentally entering rename mode when trying to enter directory. Can be enabled
+ again in Options -> Preferences -> Advanced.
+ - Added new JStor fetcher that utilizes the BibSonomy scraper to obtain BibTeX data.
+ - Fixed bug in CookieHandlerImpl.
+ - Fixed bug; when dragging a file into JabRef and asking to move it to the file
+ directory, warning will now be given if the destination file already exists. Patch
+ by Alastair Mailer.
+ - When dragging a file into JabRef and asking to copy or move it to the file directory,
+ it is now possible to rename to an arbitrary name. Patch by Alastair Mailer.
+ - Added "review" field to BibTeXML export.
+ - Added Reset button to entry fetchers. Patch by Dennis Hartrampf and Ines Moosdorf.
+ - Changed Microsoft Office XML export so "number" rather than "issue" is exported
+ as <b:Issue>, which conforms with import format.
+ - Added confirmation dialog that allows saving without backup in cases when
+ backup creation fails.
+ - Fixed bug 2938562: using the move/rename feature on a file link could give an
+ absolute link even if the file was put below the main file directory.
+ - Fixed bug 2931293: error generating key with [authorsAlpha] for short names.
+ - When checking for external modifications, file size is now checked in addition
+ to the time stamp.
+ - Fixed handling of maximised state when shutting down and starting up JabRef.
+ Patch by Igor L. Chernyavsky.
+ - Fixed bug that prevented correct handling of DOS short file names. Patch
+ by Igor L. Chernyavsky.
+ - Added support for KOI8_R character set.
+ - Removed DocumentPrinter class, using standard API functions instead. Patch by
+ Tony Mancill.
+ - Removed HightlightFilter class, using standard API functions instead. Patch by
+ Tony Mancill.
+ - Changed keyboard shortcut for IEEXplorer search to Alt-F8.
+ - Disabled JStor search, which doesn't work due to API changes.
+ - External file type manager now removes "." prefix in file type extension if the user
+ has typed it that way.
+ - Preview panel now defaults to preview layout 1 instead of 2. Switched default layouts.
+ - Added IfPlural formatter by Russell Almond. The formatter outputs its first argument
+ if the input field contains " and " and the second one otherwise.
+ - Applied patch by Philipp Cordes and Björn Kahlert for improved handling of names by
+ autocompleter. The patch also reorganizes the autocompleter classes.
+ - Table will now scroll to keep the currently edited entry visible if an edit leads to
+ the entry getting sorted to a different position.
+ - Reworked author and editor handling in Docbook export. Added Docbook XML header.
+ - Database will no longer be marked as changed after accepting external changes, unless one or
+ more changes were not accepted before merging, and unless database was already marked as
+ changed.
+ - Fixed bug: undesired autocompletion when saving file.
+ - Fixed bug: entry editor doesn't appear when new entry is added while a filtering search or
+ group selection is active.
+ - Fixed bug in writing of metadata on Windows. For certain metadata lengths newlines would be
+ messed up after the metadata comment in a bib file.
+ - Search dialog now automatically previews first hit, and hides preview if there are no hits.
+2.6b2
- Added export formatter "Default" which takes a single argument. Outputs the string to format
unchanged if it is non-empty, otherwise outputs the argument.
- Added option under Options -> Preferences -> General for disabling the strict enforcing of
diff --git a/src/txt/README b/src/txt/README
index fdbc2d5..f6a8ece 100644
--- a/src/txt/README
+++ b/src/txt/README
@@ -1,5 +1,5 @@
-JabRef 2.6 beta 2
+JabRef 2.6 beta 3
-----------------
Introduction:
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/jabref.git
More information about the pkg-java-commits
mailing list