[svn-upgrade] Integrating new upstream version, jabref (2.6~beta3+dfsg) r2116/tags/upstream/2.6_beta3+dfsg upstream/2.6_beta3+ds
authorgregor herrmann <gregoa@debian.org>
Mon, 8 Mar 2010 16:30:45 +0000 (16:30 -0000)
committergregor herrmann <gregoa@debian.org>
Mon, 8 Mar 2010 16:30:45 +0000 (16:30 -0000)
185 files changed:
build.number
build.xml
src/Jabref.iml [new file with mode: 0644]
src/Jabref_trunk.iml [deleted file]
src/help/About.html
src/help/CustomExports.html
src/help/JSTOR.html
src/help/RevisionHistory.html
src/help/ScienceDirect.html [new file with mode: 0644]
src/help/da/About.html
src/help/de/About.html
src/help/de/JabRef-UserManual_de.tex [new file with mode: 0644]
src/help/fr/About.html
src/help/fr/CustomExports.html
src/help/fr/JSTOR.html
src/images/absIcon.png [deleted file]
src/images/add.png [deleted file]
src/images/autumn.png [deleted file]
src/images/completeItem.png [deleted file]
src/images/contents.png [deleted file]
src/images/database_connect.png [deleted file]
src/images/database_save.png [deleted file]
src/images/document-save-as.png [deleted file]
src/images/document-save.png [deleted file]
src/images/doismall.png [deleted file]
src/images/duplicate.png [deleted file]
src/images/edit-copy.png [deleted file]
src/images/edit-cut.png [deleted file]
src/images/edit-delete.png [deleted file]
src/images/edit-find.png [deleted file]
src/images/edit-paste.png [deleted file]
src/images/edit-redo.png [deleted file]
src/images/edit-undo.png [deleted file]
src/images/editor.png [deleted file]
src/images/emacs.png [deleted file]
src/images/emblem-web-small.png [deleted file]
src/images/emblem-web.png [deleted file]
src/images/fileclose.png [deleted file]
src/images/fileclose2.png [deleted file]
src/images/filenew.png [deleted file]
src/images/fileopen.png [deleted file]
src/images/genIcon.png [deleted file]
src/images/go-down.png [deleted file]
src/images/go-next.png [deleted file]
src/images/go-previous.png [deleted file]
src/images/go-up.png [deleted file]
src/images/groupIncluding.png [deleted file]
src/images/groupRefining.png [deleted file]
src/images/grouping_morten.png [deleted file]
src/images/groupsHighlightAll.png [deleted file]
src/images/groupsHighlightAny.png [deleted file]
src/images/help-about.png [deleted file]
src/images/help-browser.png [deleted file]
src/images/integrity.png [deleted file]
src/images/lyx2.png [deleted file]
src/images/mark.png [deleted file]
src/images/messageFail.png [deleted file]
src/images/messageInfo.png [deleted file]
src/images/messageWarn.png [deleted file]
src/images/optIcon.png [deleted file]
src/images/pdf-new.png [deleted file]
src/images/pdf.png [deleted file]
src/images/postscript.png [deleted file]
src/images/preamble.png [deleted file]
src/images/preferences.png [deleted file]
src/images/remove.png [deleted file]
src/images/reqIcon.png [deleted file]
src/images/search.png [deleted file]
src/images/splash-2.1.svg [deleted file]
src/images/splash-2.1beta.png [deleted file]
src/images/splash-2.3.svg [deleted file]
src/images/splash-2.4.svg [deleted file]
src/images/splash-2.5.svg
src/images/splashBackground.png [deleted file]
src/images/strings.png [deleted file]
src/images/unmark.png [deleted file]
src/images/user-home.png [deleted file]
src/images/view-refresh.png [deleted file]
src/images/viewsource.gif [deleted file]
src/images/winedt.png [deleted file]
src/images/wizard.png [deleted file]
src/images/wrongItem.png [deleted file]
src/images/wwwciteseer.png [deleted file]
src/java/net/sf/jabref/AdvancedTab.java
src/java/net/sf/jabref/AuthorList.java
src/java/net/sf/jabref/BasePanel.java
src/java/net/sf/jabref/BibtexEntry.java
src/java/net/sf/jabref/EntryEditor.java
src/java/net/sf/jabref/EntryEditorTab.java
src/java/net/sf/jabref/FieldEditor.java
src/java/net/sf/jabref/FieldTextArea.java
src/java/net/sf/jabref/FieldTextField.java
src/java/net/sf/jabref/Globals.java
src/java/net/sf/jabref/JabRef.java
src/java/net/sf/jabref/JabRefFrame.java
src/java/net/sf/jabref/JabRefPreferences.java
src/java/net/sf/jabref/MetaData.java
src/java/net/sf/jabref/PreviewPanel.java
src/java/net/sf/jabref/SearchManager2.java
src/java/net/sf/jabref/Util.java
src/java/net/sf/jabref/about/AboutPanel.java
src/java/net/sf/jabref/autocompleter/AbstractAutoCompleter.java [new file with mode: 0644]
src/java/net/sf/jabref/autocompleter/AutoCompleterFactory.java [new file with mode: 0644]
src/java/net/sf/jabref/autocompleter/CrossrefAutoCompleter.java [new file with mode: 0644]
src/java/net/sf/jabref/autocompleter/DefaultAutoCompleter.java [new file with mode: 0644]
src/java/net/sf/jabref/autocompleter/EntireFieldAutoCompleter.java [new file with mode: 0644]
src/java/net/sf/jabref/autocompleter/NameFieldAutoCompleter.java [new file with mode: 0644]
src/java/net/sf/jabref/collab/Change.java
src/java/net/sf/jabref/collab/ChangeDisplayDialog.java
src/java/net/sf/jabref/collab/EntryAddChange.java
src/java/net/sf/jabref/collab/EntryChange.java
src/java/net/sf/jabref/collab/EntryDeleteChange.java
src/java/net/sf/jabref/collab/FileUpdateMonitor.java
src/java/net/sf/jabref/collab/GroupChange.java
src/java/net/sf/jabref/collab/MetaDataChange.java
src/java/net/sf/jabref/collab/PreambleChange.java
src/java/net/sf/jabref/collab/StringAddChange.java
src/java/net/sf/jabref/collab/StringChange.java
src/java/net/sf/jabref/collab/StringNameChange.java
src/java/net/sf/jabref/collab/StringRemoveChange.java
src/java/net/sf/jabref/export/OpenDocumentSpreadsheetCreator.java
src/java/net/sf/jabref/export/SaveDatabaseAction.java
src/java/net/sf/jabref/export/SaveException.java
src/java/net/sf/jabref/export/SaveSession.java
src/java/net/sf/jabref/export/layout/format/CreateDocBookAuthors.java
src/java/net/sf/jabref/export/layout/format/CreateDocBookEditors.java
src/java/net/sf/jabref/export/layout/format/IfPlural.java [new file with mode: 0644]
src/java/net/sf/jabref/external/DroppedFileHandler.java
src/java/net/sf/jabref/external/ExternalFileTypeEntryEditor.java
src/java/net/sf/jabref/external/MoveFileAction.java
src/java/net/sf/jabref/groups/AllEntriesGroup.java
src/java/net/sf/jabref/groups/ExplicitGroup.java
src/java/net/sf/jabref/groups/KeywordGroup.java
src/java/net/sf/jabref/groups/SearchGroup.java
src/java/net/sf/jabref/gui/AutoCompleteListener.java
src/java/net/sf/jabref/gui/AutoCompleter.java
src/java/net/sf/jabref/gui/FileListEditor.java
src/java/net/sf/jabref/gui/MainTableSelectionListener.java
src/java/net/sf/jabref/gui/SearchResultsDialog.java
src/java/net/sf/jabref/imports/BibsonomyScraper.java [new file with mode: 0644]
src/java/net/sf/jabref/imports/GeneralFetcher.java
src/java/net/sf/jabref/imports/JSTORFetcher2.java [new file with mode: 0644]
src/java/net/sf/jabref/imports/OAI2Fetcher.java
src/java/net/sf/jabref/imports/ScienceDirectFetcher.java [new file with mode: 0644]
src/java/net/sf/jabref/labelPattern/LabelPatternUtil.java
src/java/net/sf/jabref/msbib/MSBibEntry.java
src/java/net/sf/jabref/net/CookieHandlerImpl.java
src/java/net/sf/jabref/net/URLDownload.java
src/java/tests/net/sf/jabref/TestUtils.java [new file with mode: 0644]
src/java/tests/net/sf/jabref/gui/AutoCompleterTest.java [new file with mode: 0644]
src/java/tests/net/sf/jabref/imports/AllTests.java
src/java/tests/net/sf/jabref/imports/GeneralFetcherTest.java [new file with mode: 0644]
src/java/tests/net/sf/jabref/imports/RISImporterTest.java [new file with mode: 0644]
src/java/tests/net/sf/jabref/testutils/TestUtils.java [new file with mode: 0644]
src/plugins/net.sf.jabref.core/plugin.xml
src/resource/JabRef_da.properties
src/resource/JabRef_de.properties
src/resource/JabRef_en.properties
src/resource/JabRef_fr.properties
src/resource/JabRef_it.properties
src/resource/JabRef_nl.properties
src/resource/JabRef_no.properties
src/resource/JabRef_tr.properties
src/resource/JabRef_zh.properties
src/resource/JabRef_zh.properties.UTF8
src/resource/Menu_da.properties
src/resource/Menu_de.properties
src/resource/Menu_en.properties
src/resource/Menu_es.properties
src/resource/Menu_fr.properties
src/resource/Menu_it.properties
src/resource/Menu_nl.properties
src/resource/Menu_no.properties
src/resource/Menu_tr.properties
src/resource/Menu_zh.properties
src/resource/Menu_zh.properties.UTF8
src/resource/build.properties
src/resource/layout/bibtexml.layout
src/resource/layout/docbook.begin.layout
src/resource/layout/docbook.layout
src/resource/ods/mimetype [new file with mode: 0644]
src/tests/net/sf/jabref/bibtexFiles/test.bib [new file with mode: 0644]
src/tests/net/sf/jabref/imports/RisImporterTest1.ris [new file with mode: 0644]
src/txt/CHANGELOG
src/txt/README

index 9f34c41cc421be1b082b40f4f631e97df7b85239..c46966c8951275654a6a2c52281040e66eacab71 100644 (file)
@@ -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
index 5a7bd0a379b2e734f720ada852377281dba8c925..6692d7b6de6b7da591e1e9e349774e4ac2fe48cb 100644 (file)
--- a/build.xml
+++ b/build.xml
@@ -22,8 +22,8 @@
    Compiler: Ant
    Authors:  Joerg K. Wegner, wegnerj@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.iml b/src/Jabref.iml
new file mode 100644 (file)
index 0000000..a58b96e
--- /dev/null
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module relativePaths="true" type="JAVA_MODULE" version="4">
+  <component name="NewModuleRootManager" inherit-compiler-output="true">
+    <exclude-output />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/java" isTestSource="false" />
+    </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/glazedlists-1.7.0_java15.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$MODULE_DIR$/../lib/microba.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <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/JempBox-0.2.0.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$MODULE_DIR$/../lib/forms-1.1.0.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$MODULE_DIR$/../lib/antlr-3.0b5.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$MODULE_DIR$/../lib/PDFBox-0.7.3-dev-reduced.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$MODULE_DIR$/../lib/antlr.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$MODULE_DIR$/../lib/looks-2.2.0.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$MODULE_DIR$/../lib/mysql-connector-java-5.0.7-bin.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$MODULE_DIR$/../lib/junit.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+  </component>
+</module>
+
diff --git a/src/Jabref_trunk.iml b/src/Jabref_trunk.iml
deleted file mode 100644 (file)
index 5049fe7..0000000
+++ /dev/null
@@ -1,165 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module relativePaths="true" type="JAVA_MODULE" version="4">
-  <component name="NewModuleRootManager" inherit-compiler-output="true">
-    <exclude-output />
-    <content url="file://$MODULE_DIR$">
-      <sourceFolder url="file://$MODULE_DIR$/java" isTestSource="false" />
-    </content>
-    <orderEntry type="inheritedJdk" />
-    <orderEntry type="sourceFolder" forTests="false" />
-    <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!/" />
-        </CLASSES>
-        <JAVADOC />
-        <SOURCES />
-      </library>
-    </orderEntry>
-    <orderEntry type="module-library">
-      <library>
-        <CLASSES>
-          <root url="jar://$MODULE_DIR$/../lib/substance-4.1.jar!/" />
-        </CLASSES>
-        <JAVADOC />
-        <SOURCES />
-      </library>
-    </orderEntry>
-    <orderEntry type="module-library">
-      <library>
-        <CLASSES>
-          <root url="jar://$MODULE_DIR$/../lib/microba.jar!/" />
-        </CLASSES>
-        <JAVADOC />
-        <SOURCES />
-      </library>
-    </orderEntry>
-    <orderEntry type="module-library">
-      <library>
-        <CLASSES>
-          <root url="jar://$MODULE_DIR$/../lib/JempBox-0.2.0.jar!/" />
-        </CLASSES>
-        <JAVADOC />
-        <SOURCES />
-      </library>
-    </orderEntry>
-    <orderEntry type="module-library">
-      <library>
-        <CLASSES>
-          <root url="jar://$MODULE_DIR$/../lib/forms-1.1.0.jar!/" />
-        </CLASSES>
-        <JAVADOC />
-        <SOURCES />
-      </library>
-    </orderEntry>
-    <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!/" />
-        </CLASSES>
-        <JAVADOC />
-        <SOURCES />
-      </library>
-    </orderEntry>
-    <orderEntry type="module-library">
-      <library>
-        <CLASSES>
-          <root url="jar://$MODULE_DIR$/../lib/glazedlists-1.7.0_java15.jar!/" />
-        </CLASSES>
-        <JAVADOC />
-        <SOURCES />
-      </library>
-    </orderEntry>
-    <orderEntry type="module-library">
-      <library>
-        <CLASSES>
-          <root url="jar://$MODULE_DIR$/../lib/PDFBox-0.7.3-dev-reduced.jar!/" />
-        </CLASSES>
-        <JAVADOC />
-        <SOURCES />
-      </library>
-    </orderEntry>
-    <orderEntry type="module-library">
-      <library>
-        <CLASSES>
-          <root url="jar://$MODULE_DIR$/../lib/antlr-3.0b5.jar!/" />
-        </CLASSES>
-        <JAVADOC />
-        <SOURCES />
-      </library>
-    </orderEntry>
-    <orderEntry type="module-library">
-      <library>
-        <CLASSES>
-          <root url="jar://$MODULE_DIR$/../lib/looks-2.2.0.jar!/" />
-        </CLASSES>
-        <JAVADOC />
-        <SOURCES />
-      </library>
-    </orderEntry>
-    <orderEntry type="module-library">
-      <library>
-        <CLASSES>
-          <root url="jar://$MODULE_DIR$/../lib/mysql-connector-java-5.0.7-bin.jar!/" />
-        </CLASSES>
-        <JAVADOC />
-        <SOURCES />
-      </library>
-    </orderEntry>
-  </component>
-</module>
-
index 92d8cc85793d3d10c21bd407e52f71a989954fe8..cbe66efb9a47707c25d83b04b07697ce1f739671 100755 (executable)
@@ -48,6 +48,7 @@
         Aaron Chen,
         Fabrice Dessaint,
         Nathan Dunn,
+        E. Hakan Duran,
         Brian Van Essen,
         Alexis Gallagher,
         David Gleich,
index c8d8694d18302193bc7a6e9278ad8da1cfdbf0fc..781dbbbd43c00b107535e81b1fc57b8cd8c5d52b 100644 (file)
         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>
index 8ec3ed81b61d62ec930a99b0c4585bccea4cf0d0..e21ab7061769e323c6255f673c6afc229273490a 100644 (file)
@@ -5,6 +5,9 @@
 \r
   <h1>JStor search</h1>\r
 \r
+    <p>The JStor search relies on the BibSonomy scraper project (http://scraper.bibsonomy.org/) to\r
+    extract information from the JStor web page.</p>\r
+\r
     <p>The following help was taken from the JStor website and may change if JStor does:</p>\r
     <ul>\r
       <li>You will be searching the author, title, and full-text of all types of journal content (articles, book reviews, etc.) by default</li>\r
@@ -13,7 +16,7 @@
       <li>Use AND, OR, NOT to combine terms (e.g., ti:&quot;two-person cooperative games&quot; AND au:&quot;john nash&quot;)</li>\r
     </ul>\r
 \r
-    <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>\r
+    <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>\r
 \r
     <p>JStor offers access to the following topics:</p>\r
     <ul>\r
index ced61f52fcb1992af34949f9c5a98f4fabfdee67..13c9a24f709bd66e2b2a7a79e6ded5c9eead1f51 100644 (file)
 
   <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
-      &lt;br&gt;, while multiple newlines are displayed as &lt;p&gt;.
-    <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 &lt;b:Issue&gt;, 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
+          &lt;br&gt;, while multiple newlines are displayed as &lt;p&gt;.</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 (file)
index 0000000..792f5f8
--- /dev/null
@@ -0,0 +1,15 @@
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+\r
+<body text="#275856">\r
+    <basefont size="4" color="#2F4958" face="arial" />\r
+\r
+  <h1>ScienceDirect search</h1>\r
+\r
+    <p>The ScienceDirecy search relies on the BibSonomy scraper project (http://scraper.bibsonomy.org/) to\r
+    extract information from the ScienceDirect web page.</p>\r
+\r
+    <p>This fetcher attempts to run a quick search in the ScienceDirect web site, resulting in\r
+        up to 100 hits. All hits are then imported.</p>\r
+\r
+</body>\r
+</html>
\ No newline at end of file
index fbf40c42f63fa02b1eda6b18a4f5acd5372a00c0..7475d6a2ce4f791a8a624ee01d577e9baec4df19 100755 (executable)
@@ -49,6 +49,7 @@
         Aaron Chen,
         Fabrice Dessaint,
         Nathan Dunn,
+        E. Hakan Duran,
         Brian Van Essen,
         Alexis Gallagher,
         David Gleich,
index 5bf8769a0a4d0ce2879834f8fd0b4cd8f5f43900..bd0ddd372fde8d3b9ec2a22dff7b4ad3f0c89e01 100644 (file)
@@ -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 (file)
index 0000000..b08216d
--- /dev/null
@@ -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@th$% %% force math size calculations
+                 \csname S@\f@size\endcsname
+                 \fontsize\sf@size\z@
+                 \math@fontsfalse\selectfont
+                 \color{orange}A\kern-.025emB}\-%
+         \hbox{\kern-.06em\-R\hspace{-.08em}%
+           \raisebox{.16ex}{$\m@th$% %% force math size calculations
+                 \csname S@\f@size\endcsname
+                 \fontsize\sf@size\z@
+                 \math@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@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@users.sourceforge.net}{domwass@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@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}). Für die Verwendung dieser spezifischen Typen schauen Sie bitte in die jeweilige Dokumentation.
+
+\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. Halten Sie die STRG-Taste beim Klicken auf einen Spaltenknopf gedrückt, um eine zweite Spalte als sekundäres Sortierkriterium festzulegen. Sie können beliebig viele Spalten zur Sortierung heranziehen.
+
+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 Treffer sind, werden entweder ausgeblendet, so dass nur die Treffer sichtbar sind (Suchmodus \menu{Filter}), oder sie werden grau dargestellt, während die Treffer oben angezeigt werden (Suchmodus \menu{Oben einsortieren}). Um die Trefferanzeige zu beenden, drücken Sie ESC oder klicken auf die Schaltfläche \menu{Zurücksetzen} im Suchen-Dialog.
+
+\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 \menu{Einstellungen \msep Externe Programme \msep Links zu externen Dateien \msep Suche mit regulärem Ausdruck benutzen}.
+
+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 Links zu Ã¶ffnen, klicken Sie mit der rechten Maustaste auf das Icon (Mac OS X: \menu{Strg-Klick}); es erscheint dann ein Menü mit allen Links.
+
+\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 Adobe Acrobat, nicht mit dem Adobe Reader.
+  \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}
+@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}
+&lt;rdf:Description xmlns:bibtex=&quot;http://jabref.sourceforge.net/bibteXMP/&quot;
+    bibtex:bibtexkey=&quot;CroAnnHow05&quot;
+    bibtex:year=&quot;2005&quot;
+    bibtex:title=&quot;Effective work practices for floss development: A model and propositions&quot;
+    bibtex:owner=&quot;oezbek&quot;
+    bibtex:url=&quot;http://james.howison.name/publications.html&quot;
+    bibtex:booktitle=&quot;Hawaii International Conference On System Sciences (HICSS)&quot;
+    bibtex:timestamp=&quot;2006.05.29&quot;&gt;
+        &lt;bibtex:author&gt;
+            &lt;rdf:Seq&gt;
+                &lt;rdf:li&gt;K. Crowston&lt;/rdf:li&gt;
+                &lt;rdf:li&gt;H. Annabi&lt;/rdf:li&gt;
+                &lt;rdf:li&gt;J. Howison&lt;/rdf:li&gt;
+                &lt;rdf:li&gt;C. Masango&lt;/rdf:li&gt;
+            &lt;/rdf:Seq&gt;
+        &lt;/bibtex:author&gt;
+    &lt;bibtex:entrytype&gt;Inproceedings&lt;/bibtex:entrytype&gt;
+&lt;/rdf:Description&gt;
+\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. \texttt{{[}pureauth{]}} oder \texttt{{[}pureauthors3{]}.}}
+
+\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 der Namensteil existiert.
+
+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@1@{ll}, {f}.@2@ and {ll}, {f}.@@*@1..-3@{ll}, {f}., @-2@{ll}, {f}.@-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 NSIS"=Forum} oder die \href{http://nsis.sourceforge.net/NSIS_False_Positives}{Liste der NSIS ">false positives"<} an.
+
+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}
index 2a3ab4ca36ec091fff13acbc3da6592db9e16971..9f1805931d529e07c7a47f3a111da67ca12d5ee9 100644 (file)
@@ -48,6 +48,7 @@
         Aaron Chen,
         Fabrice Dessaint,
         Nathan Dunn,
+        E. Hakan Duran,
         Brian Van Essen,
         Alexis Gallagher,
         David Gleich,
index 39e06851cad354143feb83efdff1698f86cb163b..6b9f3227c57ffb49e0aeca18d45df04448d0e092 100644 (file)
         le d&eacute;but d'un nouveau paragraphe et cr&eacute;e les
         balises html de paragraphes appropri&eacute;es.</li>
 
+        <li><code>IfPlural</code>&nbsp;: renvoie son premier argument si le
+        champ d'entr&eacute;e ressemble &agrave; 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 &eacute;diteur et "Ed." s'il n'y en a qu'un seul.</li>
+
         <li><code>LastPage</code>&nbsp;: renvoie la derni&egrave;re page du champ "pages", si initialis&eacute;.
         Par exemple, si le champ "pages" est initialis&eacute; avec "345-360" ou "345--360",
         ce formatteur renverra "360".</li>
index 0a1fac2de4258d145880c90fc8f87112bc7187c2..307a58b5f8015d2b71ada8a77ceb655689f216b9 100644 (file)
@@ -4,6 +4,9 @@
 <basefont size="4" color="#2F4958" face="arial" />\r
 \r
   <h1>Recherche JStor</h1>\r
+  \r
+    <p>La recherche JStor s'effectue gràce au projet d'extraction de données de BibSonomy (http://scraper.bibsonomy.org/)\r
+    pour extraire des informations des page web de JStor.</p>\r
 \r
     <p>L'aide ci-dessous a &eacute;t&eacute; copi&eacute;e depuis le site web de JStor et pourrait changer avec JSTor&nbsp;:</p>\r
     <ul>\r
diff --git a/src/images/absIcon.png b/src/images/absIcon.png
deleted file mode 100644 (file)
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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
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 (executable)
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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
index 1f931f6..0000000
+++ /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 (file)
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 (file)
index d519da8..0000000
+++ /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 (file)
index 8eaf7e1..0000000
+++ /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>
index f571b086e2d958da45ef84b092314d5440e57add..55e8e0ecb4e04e766c34cd9e317644a9fe6a4a05 100644 (file)
   </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"
    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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
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 (file)
index 1885445..0000000
Binary files a/src/images/wwwciteseer.png and /dev/null differ
index 6cfb2c14f5b71d64780ebf8b8bbf719c7fe78dd9..2c30eea622a9310f5b19ee22e56be0d8c96652de 100644 (file)
@@ -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");
index d0465eded55725f951b30c295355247f83b69877..4d7cdd5e8ac87040ff8d5afc647c94177eb0ee1b 100644 (file)
@@ -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
index 054b44e5751f5c791014ebabb1d8d065a493cf3c..30c4a1e8c4144b5b3e420cd0768be81bc18166dc 100644 (file)
@@ -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() {
index f2e51933cc5f23086ebe8cd7158d85a671c5b6f2..ee79f8d1e2fd172f5b5f0950cd4de2dbae13be21 100644 (file)
@@ -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();
     }
index 8de6827090a2d0e3dd9c5df12d6a33f3a66d8a49..6b4788edbb03d0e2bc7ed939cd4f69779b2a0c48 100644 (file)
  */
 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);
index 20289284fd0d5bd50f3609d84963f07aa63aca88..0a2bcd3627d280378096f8ed64fde2f16becd8af 100644 (file)
  */
 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
index cf26d75b067d167b8b6d17d9f1dcc81c38801363..f98cb776a4318de8b6abd98d7c6d63e692e5d933 100644 (file)
@@ -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();
 }
index 5b86bd71372213abc2f89f9cce41bf0a30b4639e..d87c8971abb4a69d1ce7b39dc4602052b7f02d90 100644 (file)
@@ -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);
+        }
+    }
 }
+
index 2f77b64e20976ee4406ffca02182091ec2a4b2c1..d389fc1807ad314d569f15d465747b761898b660 100644 (file)
@@ -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);
+    }
 }
index d6625fffbf473dd877dc2484141246d09e660798..a286521dfac7e7cb2fc4e912b215cd0a8af377e4 100644 (file)
@@ -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" };
index 125fd413d1156b1c461c7023faea3fb990cf6e02..f6fba9ffb4dfe74242a5b03a866be11fadf2b4ef 100644 (file)
@@ -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") + ": "
index 59304e75b10cdebf6ce3823c84324f011becbaac..c5e3b80e44facee5569321b6168c10939d57048e 100644 (file)
@@ -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();
index fe02fde32b8cc9c5c24ae13a6d7c2cff32b8de3b..79550bfb8600dcbb272b393c877cc5e322481eb0 100644 (file)
@@ -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");
index 25b9285aa00cf3c246556a861ae5b9516f9f1ebc..e7588902f94e535219b8de29b87b7921a2dc9bb8 100644 (file)
@@ -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 
index 1b5148c0d6c5a00f814da4a8b9ed702a993185fd..297fba3dec38f5bb3aa4e4f7cfe201858d3a904d 100644 (file)
@@ -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.
index 4a9b1c93fe208e0e64888289e0516a447f810ada..55139cc1b44235240d35475223b946a5dcd1a158 100644 (file)
@@ -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()) {
index 8e44f077d4fe16bdbbc4eefb49cf17d8638dc2de..cc647fef645533d8dab9316e2645a23bb89d58a8 100644 (file)
@@ -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);
         }
     }
 
index 2fb5ea1a0cc542927f10255f1103e1ce755b536c..c4489e6e3af40e1781ca9b110a91da3adb914ca1 100644 (file)
@@ -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 (file)
index 0000000..bf45c1e
--- /dev/null
@@ -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 (file)
index 0000000..6fc3b62
--- /dev/null
@@ -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 (file)
index 0000000..c54681f
--- /dev/null
@@ -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 (file)
index 0000000..163f117
--- /dev/null
@@ -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 (file)
index 0000000..f341e10
--- /dev/null
@@ -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 (file)
index 0000000..03d509c
--- /dev/null
@@ -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;
+       }
+}
index 754e3924ed590f8b2aa2f49e67ecce68e1fa4bcf..7d42870a26ef8e4b70e8c6195106973059a0d19f 100644 (file)
@@ -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);
 
 }
index 3ddaf27be4f958f6c2fcfbe80f1f5e9352b0a157..4c8521d9c18ec719ed908965f89cd4616ca1581a 100644 (file)
@@ -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;
index 275e8cfec49e59a59ade0ca5ccddc1ab4025636c..7dc064964b6bbfa825e167c4d2b91efa20a43e77 100644 (file)
@@ -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() {
index 01a44f5e55f6c493bc1ef63b587c1fb3967e47be..862d9436cc5528640f775afe3ab91ed2937349f6 100644 (file)
@@ -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() {
index d3997bbfaec26aaabba03ac61a6cb11911a16c02..c59bf135d8a81ed994a3e01b118249d6e88c47ae 100644 (file)
@@ -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() {
index 0f7b43304d17b53114f030b824e14c67a8e3b9e3..1a56cd51ec81914d13c098e0fb21795bdf8632eb 100644 (file)
@@ -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();
     }
index ed438ba5f696b0f609ce75c5616e1745f8f8da22..ef8f9d1cdd3cfd171da244fe61dfd8a4a1bc049d 100644 (file)
@@ -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() {
index 34f4f17b426153bef3fae058a41c9e626f4bbb89..b32ffff246ad33cfb71db541024d4e02110be359 100644 (file)
@@ -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 {
index d82388da3fe2aafe565c398e137661935f89b9c9..2aaa214105aa9a4b2d9edc3e25fd2789fe120a83 100644 (file)
@@ -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() {
index e1093718afe9c1f4c972445dcc7058e1b4265df2..2d8121f12ebff3d2d1ea196a64831f8811e70000 100644 (file)
@@ -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;
   }
 
 
index ddc320a9b8308b255cc4fe0f7bf993ccd648ddf4..fc902a8a537314539bee6e69fb56ebeafd2dda15 100644 (file)
@@ -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;
   }
 
 
index a2ef52dd07f3e8429c42caf7a1ab86e1dc6f5f60..58b8d2239ee4c5c1c1cabcb5723fe7673abd8354 100644 (file)
@@ -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;
   }
 
 
index c45d00f08a25abc8d02554cf6bf27159fa2c6317..f1a90cb86a0efc32affc6f3de50cfecb903c4d99 100644 (file)
@@ -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;
   }
 
 
index 42ccab8f3cfa1ae11f3376373cbf73a71deae45e..f14d22a79d54f2a84accc992e9d32a343b3a71f6 100644 (file)
@@ -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()
index 7876d4dcbc54a36cc020395a3a03b988b2220205..7c99ad5f3425d176443e7f0ee409e028bde64c62 100644 (file)
@@ -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();
         }
index a6e0990c8ce422297936e6ab0d318005ca2fb400..96bbf8d7c4d860a52a777d7e33fd0971d39b7cb8 100644 (file)
@@ -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)
index 09b885fa74222346ae8dc5fbb83c6441467b4d6a..8e60fcf41c3bfbd7b90abbb1cf300a45cb292254 100644 (file)
@@ -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 {
index fdbb77ccd8f14b1c59c6791167760c943f79523d..00a6c584c9e47455890cb76caba3278834a7555a 100755 (executable)
@@ -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");
index b9156bd93403329cef31bea7364e0881450b23cd..cd3938b9986341729cf92270c92cbff521c4fc34 100755 (executable)
@@ -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
 //
 ///////////////////////////////////////////////////////////////////////////////
 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 (file)
index 0000000..629f18f
--- /dev/null
@@ -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;
+
+}
+
+
+}
index 3bfea29f7fb240bc34ee4cd70a0a4e695fb9c868..22f017c19860f2d66878e70513621307584d04e9 100644 (file)
@@ -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;
index 8e93dcd1ba75407f8d054a097089a30c6d0429f9..83858d4122ca65a247279e2d9a3347de11418e21 100644 (file)
@@ -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) {
index fa5dba4d1f9c065bdf0d68f303bdf21f55608538..b590db8d6850b17d54893331d0e2dfdd5b040d2f 100644 (file)
@@ -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)) {
-       &