[jabref] 15/459: Load /tmp/tmp.JUKpM13035/jabref-2.0.1+2.1b2 into debian/jabref/branches/upstream/current.

gregor herrmann gregoa at debian.org
Thu Sep 15 20:39:32 UTC 2016


This is an automated email from the git hooks/post-receive script.

gregoa pushed a commit to branch master
in repository jabref.

commit 6702c282533ce2b9150bd12aa4e06b6fe39dc4f9
Author: gregor herrmann <gregoa at debian.org>
Date:   Tue Jul 4 14:41:37 2006 +0000

    Load /tmp/tmp.JUKpM13035/jabref-2.0.1+2.1b2 into
    debian/jabref/branches/upstream/current.
---
 build.number                                       |   4 +-
 build.xml                                          |   9 +-
 src/help/About.html                                |   1 +
 src/help/BaseFrameHelp.html                        |  14 +-
 src/help/BibtexHelp.html                           |  16 +-
 src/help/CiteSeerHelp.html                         |   4 +-
 src/help/ContentSelectorHelp.html                  |  28 +-
 src/help/Contents.html                             |   1 +
 src/help/EntryEditorHelp.html                      |  12 +-
 src/help/ExternalFiles.html                        |  38 +-
 src/help/GroupsHelp.html                           |   8 +-
 src/help/HelpHelp.html                             |   4 +-
 .../{IEEEXplorerHelp.html => IEEEXploreHelp.html}  |   2 +-
 src/help/JournalAbbreviations.html                 |   4 +-
 src/help/MedlineHelp.html                          |   2 +-
 src/help/OpenOfficeHelp.html                       |   2 +-
 src/help/SearchHelp.html                           |   8 +-
 src/help/TimeStampHelp.html                        |   2 +-
 src/help/de/About.html                             |   1 +
 src/help/fr/About.html                             |   3 +-
 src/help/fr/BaseFrameHelp.html                     |  25 +-
 src/help/fr/BibtexHelp.html                        | 343 ++++++++-
 src/help/fr/CiteSeerHelp.html                      |   6 +-
 src/help/fr/CommandLine.html                       |   2 +-
 src/help/fr/ContentSelectorHelp.html               |   2 +-
 src/help/fr/Contents.html                          |   1 +
 src/help/fr/CustomExports.html                     |   6 +-
 src/help/fr/CustomImports.html                     |  19 +-
 src/help/fr/EntryEditorHelp.html                   |  38 +-
 src/help/fr/ExternalFiles.html                     |  52 +-
 src/help/fr/GroupsHelp.html                        |  30 +-
 src/help/fr/HelpHelp.html                          |   4 +-
 src/help/fr/IEEEXploreHelp.html                    |  28 +
 src/help/fr/ImportInspectionDialog.html            |   2 +-
 src/help/fr/JournalAbbreviations.html              |  12 +-
 src/help/fr/MarkingHelp.html                       |   4 +-
 src/help/fr/MedlineHelp.html                       |   4 +-
 src/help/fr/OpenOfficeHelp.html                    |   4 +-
 src/help/fr/SearchHelp.html                        |  18 +-
 src/help/fr/ShortAuxImport.html                    |   7 +
 src/help/fr/StringEditorHelp.html                  |   2 +-
 src/help/fr/TimeStampHelp.html                     |  42 +-
 src/images/splash-2.1.svg                          | 244 ++++++
 src/java/net/sf/jabref/AppearancePrefsTab.java     |  10 +-
 src/java/net/sf/jabref/BasePanel.java              | 151 +---
 src/java/net/sf/jabref/BibtexEntryType.java        |   4 +-
 src/java/net/sf/jabref/BrowseAction.java           |   4 +-
 src/java/net/sf/jabref/EntryComparator.java        |  13 +-
 .../net/sf/jabref/EntryCustomizationDialog.java    |   4 +-
 src/java/net/sf/jabref/EntryEditor.java            |  25 +-
 src/java/net/sf/jabref/EntryTable.java             | 842 ---------------------
 src/java/net/sf/jabref/EntryTableModel.java        | 592 ---------------
 src/java/net/sf/jabref/FieldComparator.java        |   8 +-
 src/java/net/sf/jabref/Globals.java                | 671 ++++++++++++----
 src/java/net/sf/jabref/JabRef.java                 |   5 +-
 src/java/net/sf/jabref/JabRefFrame.java            |  74 +-
 src/java/net/sf/jabref/JabRefPreferences.java      |   3 +-
 src/java/net/sf/jabref/MergeDialog.java            |  13 +-
 src/java/net/sf/jabref/PrefsDialog3.java           |   4 +-
 src/java/net/sf/jabref/RightClickMenu.java         |  14 +
 src/java/net/sf/jabref/SplashScreen.java~          | 110 ---
 src/java/net/sf/jabref/TablePrefsTab.java          |  11 +-
 .../net/sf/jabref/export/CustomExportDialog.java   | 243 +++---
 .../net/sf/jabref/export/ExpandEndnoteFilters.java |   2 +-
 src/java/net/sf/jabref/export/FileActions.java     |   3 +-
 .../net/sf/jabref/export/layout/LayoutEntry.java   |  20 +-
 .../layout/format/AuthorAndsCommaReplacer.java     |   2 +-
 .../layout/format/AuthorLastFirstAbbreviator.java  |   4 +-
 .../sf/jabref/export/layout/format/RTFChars.java   |   5 +-
 .../jabref/export/layout/format/ToLowerCase.java   |   9 +-
 .../net/sf/jabref/external/ExternalFilePanel.java  |   3 +-
 .../jabref/groups/EntryTableTransferHandler.java   |   1 -
 .../sf/jabref/gui/EntryCustomizationDialog2.java   |   4 +-
 .../net/sf/jabref/gui/ImportInspectionDialog.java  |   2 +-
 src/java/net/sf/jabref/gui/MainTable.java          |  25 +-
 .../sf/jabref/imports/AppendDatabaseAction.java    | 187 +++++
 src/java/net/sf/jabref/imports/BibtexParser.java   |  43 +-
 .../net/sf/jabref/imports/EndnoteImporter.java     |  31 +-
 src/java/net/sf/jabref/imports/HTMLConverter.java  |   4 +-
 .../net/sf/jabref/imports/IEEEXploreFetcher.java   |   5 +-
 .../jabref/imports/ImportCustomizationDialog.java  |  16 +-
 src/java/net/sf/jabref/imports/ImportMenuItem.java | 328 ++++++--
 .../sf/jabref/imports/ImportUnknownMenuItem.java   | 126 ---
 src/java/net/sf/jabref/imports/MedlineFetcher.java |   4 +-
 src/java/net/sf/jabref/imports/MedlineHandler.java |  29 +-
 .../net/sf/jabref/imports/OpenDatabaseAction.java  |  26 +-
 .../sf/jabref/journals/ManageJournalsPanel.java    |  10 +-
 .../jabref/wizard/auximport/gui/FromAuxDialog.java |   4 +-
 src/resource/JabRef_de.properties                  |  24 +-
 src/resource/JabRef_en.properties                  |  26 +-
 src/resource/JabRef_fr.properties                  |  18 +-
 src/resource/JabRef_it.properties                  |   9 +-
 src/resource/JabRef_no.properties                  |   9 +-
 src/resource/Menu_de.properties                    |  14 +-
 src/resource/Menu_en.properties                    |  11 +-
 src/resource/Menu_fr.properties                    |  24 +-
 src/resource/Menu_it.properties                    |  11 +-
 src/resource/Menu_no.properties                    |  11 +-
 src/resource/build.properties                      |   6 +-
 src/resource/layout/harvard/harvard.begin.layout   |   6 +-
 src/txt/README                                     |  15 +-
 src/txt/{README => README~}                        |  11 +
 102 files changed, 2322 insertions(+), 2625 deletions(-)

diff --git a/build.number b/build.number
index 30ca81d..34ffcd8 100644
--- a/build.number
+++ b/build.number
@@ -1,3 +1,3 @@
 #Build Number for ANT. Do not edit!
-#Tue May 09 22:53:43 CEST 2006
-build.number=108
+#Thu Jun 29 22:30:13 CEST 2006
+build.number=100
diff --git a/build.xml b/build.xml
index a8ccea2..d7cc82a 100644
--- a/build.xml
+++ b/build.xml
@@ -22,9 +22,9 @@
    Compiler: Ant
    Authors:  Joerg K. Wegner, wegnerj at informatik.uni-tuebingen.de
              Morten O. Alver
-   Version:  $Revision: 1.59 $
-             $Date: 2006/04/26 08:38:44 $
-             $Author: kiar $
+   Version:  $Revision: 1.61 $
+             $Date: 2006/06/29 19:59:18 $
+             $Author: mortenalver $
 
    modified:
              28.07.2005 r.nagel
@@ -46,7 +46,7 @@
 
         <!-- some version information -->
         <property name="jabref.bin" value="jabref" />
-        <property name="jabref.version" value="2.1 beta" />
+        <property name="jabref.version" value="2.1 beta 2" />
         <property name="jabref.placeholder.version" value="@version@" /> <!-- used by replace task -->
 
 
@@ -115,6 +115,7 @@
             <pathelement location="${library.directory}/forms-1.0.4.jar" />
             <pathelement location="${library.directory}/spin-1.4.jar" />
             <pathelement location="${library.directory}/glazedlists-1.5.0_java14.jar" />
+            <pathelement location="${library.directory}/microba.jar" />
         </classpath>
          </java>
     </target>
diff --git a/src/help/About.html b/src/help/About.html
index a99654b..59a599f 100755
--- a/src/help/About.html
+++ b/src/help/About.html
@@ -39,6 +39,7 @@ Alexis Gallagher<BR>
 Sascha Hunold<BR>
 Bernd Kalbfuss<BR>
 Martin Kähmer<BR>
+Ervin Kolenovic<BR>
 Jeffrey Kuhn<BR>
 Alex Montgomery<BR>
 John Relph<BR>
diff --git a/src/help/BaseFrameHelp.html b/src/help/BaseFrameHelp.html
index c15ceb1..9bc79bb 100755
--- a/src/help/BaseFrameHelp.html
+++ b/src/help/BaseFrameHelp.html
@@ -18,11 +18,7 @@ as a configurable selection of their fields.
 <ul>
 <li>You decide which fields are shown in the table by checking the fields you want
 to see in the <strong>Preferences</strong> dialog.</li>
-<li>Fields can be edited directly in the table, by simply clicking on a cell and
-typing the contents
-(this edition mode is possible only if "Allow editing in table cells"
-is selected in <strong>Options --> Preferences --> General</strong>).
-Double-click a cell to enter a more powerful edit mode.
+<li>Double-click a line of the table to edit the entry content.
 You can navigate the table with the arrow keys.</li>
 <li>The table is sorted according to a set of fields of your choosing.
 The default sort order is set up in <strong>Preferences -> Entry table</strong>,
@@ -69,11 +65,9 @@ the entry types you use most often, e.g. CTRL-SHIFT-A for adding an
 
 <H2>Editing an entry</H2> To open an <a
 href="EntryEditorHelp.html">editor dialog</a> for an existing entry,
-simply double-click in the leftmost column of the appropriate line, or
-select the entry and press ENTER.
-If "Allow editing in table cells" is not selected in the dialog window
-<strong>Options --> Preferences --> General</strong>, a double-click anywhere
-on the appropriate line will open the <a href="EntryEditorHelp.html">editor dialog</a>.
+simply double-click anywhere
+on the appropriate line will open the <a href="EntryEditorHelp.html">editor dialog</a>
+(or select the entry and press ENTER).
 
 
 <H2>Referencing a <em>bibtex</em> string in a field</H2>
diff --git a/src/help/BibtexHelp.html b/src/help/BibtexHelp.html
index 5aaf241..bbe448f 100755
--- a/src/help/BibtexHelp.html
+++ b/src/help/BibtexHelp.html
@@ -85,7 +85,6 @@ to differentiate between middle names and last names.<br>
     <span style="font-weight: bold;"></span></li>
   <li><span style="font-weight: bold;"></span><strong>booktitle<br>
     </strong>Title of a book, part of which is being cited.
-See the LaTeX book for how to type titles.
 For book entries, use the <tt>title</tt> field instead.
     <p>
     </p>
@@ -129,7 +128,8 @@ The first word should be capitalized.
   </li>
   <li><strong>journal<br>
     </strong>A journal name.
-Abbreviations are provided for many journals; see the <i>Local Guide</i>.
+The name of a journal can be abbreviated using a "string".
+To define such string, use the <a href="StringEditorHelp.html">string editor</a>.
     <p>
     </p>
   </li>
@@ -144,8 +144,7 @@ This field should not be confused with the key that appears in the
   <li><strong>month<br>
     </strong>The month in which the work was
 published or, for an unpublished work, in which it was written.
-You should use the standard three-letter abbreviation,
-as described in Appendix B.1.3 of the LaTeX book.
+You should use the standard three-letter abbreviation (jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec).
     <p>
     </p>
   </li>
@@ -195,7 +194,7 @@ to the double dash used in TeX to denote number ranges
   </li>
   <li><strong>series<br>
     </strong>The name of a series or set of books.
-When citing an entire book, the the <tt>title</tt> field
+When citing an entire book, the <tt>title</tt> field
 gives its title and an optional <tt>series</tt> field gives the
 name of a series or multi-volume set
 in which the book is published.
@@ -203,7 +202,10 @@ in which the book is published.
     </p>
   </li>
   <li><strong>title<br>
-    </strong>The work's title, typed as explained in the LaTeX book.
+    </strong>The work's title. The capitalization may depend on
+the bibliography style and on the language used. For words that
+have to be capitalized (such as a proper noun), enclose the word
+(or its first letter) in braces.
     <p>
     </p>
   </li>
@@ -364,4 +366,4 @@ information.  Here is a list of some of the more common fields:
 
 
 
-</body></html>
\ No newline at end of file
+</body></html> 
\ No newline at end of file
diff --git a/src/help/CiteSeerHelp.html b/src/help/CiteSeerHelp.html
index 6c56bd3..032c361 100644
--- a/src/help/CiteSeerHelp.html
+++ b/src/help/CiteSeerHelp.html
@@ -21,14 +21,14 @@ and click on the (Update) link for this citation.  The URL for the Update link w
 ID for this citation.
 
 <p>Once you have populated the citeseerurl field, you may download the CiteSeer fields by selecting
- <b>BibTex -> Import Data from CiteSeer</b>.  Make sure you have selected the row(s) you wish to 
+ <b>BibTex -> Import Fields from CiteSeer</b>.  Make sure you have selected the row(s) you wish to
  update.
 
 <H2>Generating a Citation Database</H2>
 
 Given a set of references, you can generate a list of documents that cite the elements of this set.
 To facilitate this feature, each citation in a database must have a citeseerurl field with the format specified
-in <b>Importing An Entry From CiteSeer</b>.  To use this feature, select <b>Tools -> Fetch Citations
+in <b>Importing An Entry From CiteSeer</b>.  To use this feature, select <b>Web Search -> Fetch Citations
 from CiteSeer</b>.
 
 <H2>Using a Proxy Server</H2>
diff --git a/src/help/ContentSelectorHelp.html b/src/help/ContentSelectorHelp.html
index 272939c..0a01f6b 100755
--- a/src/help/ContentSelectorHelp.html
+++ b/src/help/ContentSelectorHelp.html
@@ -11,20 +11,20 @@
   <body>
     <h1>Field content selector</h1>
 
-	This feature allows you to store a selection of often-used
-	words or phrases that you use often in your
-	database. By default it is enabled for the fields
-	<em>Journal</em>, <em>Keywords</em> and <em>Publisher</em>, but you
-	can also add selectors to other fields, in the upper part of the
-	<em>Manage</em> dialog (menu <strong> Tools --> Manage content selectors</strong>).
-
-	<P>
-	The word selection is database-specific, and is saved along
-	with your references in the .bib file.
-	<P>
-	To add a new word, you can simply write it into the selector
-	combo box and press Enter. Using the <em>Manage</em> dialog
-	you can also remove words that you have added.
+    This feature allows you to store a selection of often-used
+    words or phrases that you use often in your
+    database. By default it is enabled for the fields
+    <em>Journal</em>, <em>Author</em>, <em>Keywords</em> and <em>Publisher</em>, but you
+    can also add selectors to other fields, in the upper part of the
+    <em>Manage</em> dialog (menu <strong> Tools --> Manage content selectors</strong>).
+
+    <P>
+    The word selection is database-specific, and is saved along
+    with your references in the .bib file.
+    <P>
+    To add a new word, you can simply write it into the selector
+    combo box and press Enter. Using the <em>Manage</em> dialog
+    you can also remove words that you have added.
 
 
 
diff --git a/src/help/Contents.html b/src/help/Contents.html
index aad3eae..b503538 100755
--- a/src/help/Contents.html
+++ b/src/help/Contents.html
@@ -20,6 +20,7 @@
     <a href="EntryEditorHelp.html">Entry editor</a><br>
     <a href="CiteSeerHelp.html">Fetching entries from <em>CiteSeer</em></a><br>
     <a href="MedlineHelp.html">Fetching entries from <em>Medline</em></a><br>
+    <a href="IEEEXploreHelp.html">Fetching entries from <em>IEEExplore</em></a><br>
     <a href="ContentSelectorHelp.html">Field content selector</a><br>
     <a href="JournalAbbreviations.html">Journal abbreviations</a><br>
     <a href="GroupsHelp.html">Help on using <em>Groups</em></a><br>
diff --git a/src/help/EntryEditorHelp.html b/src/help/EntryEditorHelp.html
index db3e093..457e8a2 100755
--- a/src/help/EntryEditorHelp.html
+++ b/src/help/EntryEditorHelp.html
@@ -5,10 +5,8 @@
 
 <H1>The entry editor</H1>
 
-<em>Opened from main window by double-clicking on the leftmost column of an entry
-(by double-clicking anywhere on the entry line if "Allow editing in table cells"
-is not selected in <strong>Options --> Preferences --> General</strong>)
-, or by pressing ENTER. The panel is closed by pressing ESC.</em>
+<em>Opened from main window by double-clicking anywhere on the line of the entry,
+or selecting the entry and pressing ENTER. The panel is closed by pressing ESC.</em>
 <P>
 In this panel you can specify all relevant information on a single entry.
 The entry editor checks the type of your entry, and lists all the fields that
@@ -24,9 +22,9 @@ type of entry, and which fields appear in the General fields tab. See
 
 <H2>The entry editor's panels</H2>
 
-The entry editor contains five panels, <em>required fields</em>,
-<em>optional fields</em>, <em>general fields</em>, <em>abstract</em> and <em>bibtex
-source</em>, where <em>general fields</em> and <em>abstract</em> can be customized
+The entry editor contains six panels: <em>Required fields</em>,
+<em>Optional fields</em>, <em>General</em>, <em>Abstract</em>, <em>Review</em> and <em>BibTeX
+source</em>, where <em>General</em>, <em>Abstract</em> and <em>Review</em> can be customized
 (see <a href="GeneralFields.html">Customizing general fields</a> for details).
 Inside the three first panels, TAB and SHIFT-TAB are used
 to switch focus between the text fields.
diff --git a/src/help/ExternalFiles.html b/src/help/ExternalFiles.html
index ff746dd..91448bf 100644
--- a/src/help/ExternalFiles.html
+++ b/src/help/ExternalFiles.html
@@ -13,7 +13,7 @@ links to the document on the web in the form of an URL or a DOI identifier.
 The program has to know which external viewers to use for PDF, PS and web pages. These are by default
 set to values that probably make sense for your operating system, so there's a fair chance you don't
 have to change these values.
-<p>To change the external viewer settings, go to <b>Preferences -> General</b>.
+<p>To change the external viewer settings, go to <b>Options -> Preferences -> External programs</b>.
 
 <H2>Opening external files or links</H2>
 
@@ -25,17 +25,29 @@ or the right-click menu to open the file or web page. Finally, you can click on
  are present), and the third column shows icons for URL or DOI (only URL if both are present). You open the file or web
  page by clicking on an icon.
 
-<H2>The main PDF directory</H2>
-
-PDF files get a special treatment to make it as easy as possible to link them to your entries. To take advantage of this
-you have to indicate a directory in <b>Options -> Preferences -> External programs</b> as your main PDF directory. All PDF files that are stored in
-or below this directory will be referred to with a relative path by JabRef, making it easy for you if you need to move the
-PDF directory or if several users use the same database from different network places.
-<P>Additionally, if you give your PDF files names that correspond to the relevant entry's bibtex key (plus '.pdf'),
-  JabRef will be able to search your main directory and its subfolders for the correct PDF. Once the correctly-named
-  PDF is in place you access this function by clicking the 'Auto' button next to the PDF field in the entry editor. If
-  the PDF is found, the field will immediately be set.
-<P>If you name a PDF file as mentioned, you can also open the PDF without setting the PDF field of the entry at all.
-  The downside is that the PDF icon will not appear in the table unless you do (manually or with the 'Auto' button).
+<P><b>Note:</b> If the PS field does not appear in the entry editor (in the 'General' panel),
+you may have to <a href="GeneralFields.html">customize the entry types of the general fields</a>.
+</P>
+
+<H2>The main PDF and PS directories</H2>
+
+JabRef makes it easy to link PDF and PS files to your entries. To take advantage of this,
+you have to indicate in <b>Options -> Preferences -> External programs</b> your main PDF and PS directories. All PDF and PS files that are stored in
+or below each of these directories will be referred to with a relative path by JabRef, making it easy for you if you need to move the
+PDF and PS directories, or if several users use the same database from different network places.
+
+<P>Additionally, if you give your PDF and PS files names that correspond to the relevant entry's bibtex key (plus '.pdf' or '.ps'),
+  JabRef will be able to search your main directories and its subfolders for the correct PDF and PS. Once the correctly-named
+  PDF or PS is in place you access this function by clicking the 'Auto' button next to the PDF and PS fields in the entry editor. If
+  the PDF or PS is found, the field will immediately be set.
+<P>If you name a PDF or PS file as mentioned, you can also open the file without setting the PDF or PS field of the entry at all.
+  The downside is that the PDF or PS icon will not appear in the table unless you do (manually or with the 'Auto' button).
+
+<H2>The database-specific PDF and PS directories</H2>
+<P>
+You can set PDF and PS directories specific to a database (<b>File -> Database properties</b>).
+These directories will supersede the main directories.
+</P>
+
 
 </HTML>
diff --git a/src/help/GroupsHelp.html b/src/help/GroupsHelp.html
index 21aa6cb..9e3a980 100644
--- a/src/help/GroupsHelp.html
+++ b/src/help/GroupsHelp.html
@@ -53,7 +53,7 @@ JabRef allows you to easily identify groups that overlap with the currently sele
 
 <H2>Types of groups</H2>
 
-In JabRef 1.8 there are four different types of groups:
+In JabRef there are four different types of groups:
 
 <ol>
 <li> The group <b>All Entries</b>, which -- as the name suggests -- contains all entries, is always present and cannot be edited or removed.
@@ -80,7 +80,7 @@ This method of grouping requires that all entries have a unique BibTeX key. In c
 
 The content of a dynamic group is defined by a logical condition. Only entries that meet this condition are contained in the group. This method uses the information stored in the database itself, and updates dynamically whenever the database changes.
 <p>
-Two types of conditions can be used: 
+Two types of conditions can be used:
 <dl>
 <dt><b>Searching a field for a keyword</b></dt>
 <dd>
@@ -92,7 +92,7 @@ This is similar to the above, but rather than search a single field for a single
 </dd>
 </dl>
 
-In the groups view, dynamic groups are shown in <i>italics</i> by default. This can be turned off in the preferences.
+In the groups view, dynamic groups are shown in <i>italics</i> by default. This can be turned off in the preferences (Options -> Preferences -> Groups, box "Show dynamic groups in italics").
 
 <h3>Hierarchical context</h3>
 
@@ -200,7 +200,7 @@ This method of grouping requires that all entries have a unique BibTeX key. In c
 
 The content of a dynamic group is defined by a logical condition. Only entries that meet this condition are contained in the group. This method uses the information stored in the database itself, and updates dynamically whenever the database changes.
 <p>
-Two types of conditions can be used: 
+Two types of conditions can be used:
 <dl>
 <dt><b>Searching a field for a keyword</b></dt>
 <dd>
diff --git a/src/help/HelpHelp.html b/src/help/HelpHelp.html
index d318d85..b87c301 100755
--- a/src/help/HelpHelp.html
+++ b/src/help/HelpHelp.html
@@ -15,13 +15,13 @@ are standard HTML files.
 <P>
 When opened, the help window will default to different files depending on which
 program window it is called from. If this file doesn't explain the aspect you
-are interested in, the <em>Contents</em> button in the toolbar will take you 
+are interested in, the <em>Contents</em> button in the toolbar will take you
 to a list of the available help files.
 <P>
 In addition the toolbar contains navigation buttons for showing the next or
 previous file. These are similar to the <em>Back</em> and <em>Forward</em>
 buttons of a standard web browser. The keyboard shortcuts for navigation are
-CTRL-SHIFT and arrow key left for <em>Back</em> and right for <em>Forward</em>.
+the arrow key left for <em>Back</em> and the arrow key right for <em>Forward</em>.
 <P>
 The help window is closed by pressing ESCAPE.
 </HTML>
\ No newline at end of file
diff --git a/src/help/IEEEXplorerHelp.html b/src/help/IEEEXploreHelp.html
similarity index 92%
rename from src/help/IEEEXplorerHelp.html
rename to src/help/IEEEXploreHelp.html
index 5661a54..43f2130 100644
--- a/src/help/IEEEXplorerHelp.html
+++ b/src/help/IEEEXploreHelp.html
@@ -6,7 +6,7 @@
 <H1>Search IEEEXplore</H1>
 
 JabRef can download citations from the IEEEXplore database.
-To use this feature, choose <b>Tools -> Search IEEEXplore</b>,
+To use this feature, choose <b>Web search -> Search IEEEXplore</b>,
 and the search interface will appear in the side pane.
 <P>
 To start a search, enter the words of your query, and press
diff --git a/src/help/JournalAbbreviations.html b/src/help/JournalAbbreviations.html
index bad1f06..23d0de7 100644
--- a/src/help/JournalAbbreviations.html
+++ b/src/help/JournalAbbreviations.html
@@ -5,7 +5,7 @@
 
 <H1>Journal abbreviations</H1>
 
-This feature can be configured under <b>Tools -> Manage journal abbreviations</b>.
+This feature can be configured under <b>Options -> Manage journal abbreviations</b>.
 
 <p>JabRef can automatically toggle journal names between abbreviated and unabbreviated form, as long
 as the names are contained in one of your journal lists. You can use several lists, all realized as
@@ -26,7 +26,7 @@ If the current journal name is not found in your journal lists, the field will n
 <p>
 To convert the journal names of many entries in bulk, you can select any number of entries, and choose
 <b>Tools -> Abbreviate journal names (ISO)</b>, <b>Tools -> Abbreviate journal names (MEDLINE)</b> or
-    <b>Tools -> Unabbreviate journal names</b>. These two actions
+    <b>Tools -> Unabbreviate journal names</b>. These three actions
 will abbreviate and unabbreviate the journal names of all selected entries for which the journal name could
 be found in your journal lists.
 
diff --git a/src/help/MedlineHelp.html b/src/help/MedlineHelp.html
index 7c5311e..55eaa5a 100644
--- a/src/help/MedlineHelp.html
+++ b/src/help/MedlineHelp.html
@@ -6,7 +6,7 @@
 <H1>Fetching Medline entries</H1>
 
 JabRef can download citations from the Medline database.
-To use this feature, choose <b>Tools -> Fetch Medline</b>, 
+To use this feature, choose <b>Web search -> Fetch Medline</b>,
 and the Medline interface will appear in the side pane.
 <P>
 There are two ways of specifying which entries to download:
diff --git a/src/help/OpenOfficeHelp.html b/src/help/OpenOfficeHelp.html
index 051e02b..5995e33 100644
--- a/src/help/OpenOfficeHelp.html
+++ b/src/help/OpenOfficeHelp.html
@@ -23,7 +23,7 @@ database in OpenOffice.org:
     <li>Start OpenOffice.org</li>
     <li>Choose <b>Tools -> Options -> OpenOffice.org Base -> Databases</b></li>
     <li>Edit the <i>Bibliography</i> database, and change the name to something else,
-    e.g. <i>Bibliography-old</i></li>
+    e.g. <i>Bibliography-old</i> (indeed, OpenOffice.orgWriter does not allow for several bibliographies)</li>
     <li>Close the <b>Options</b> window, and choose <b>File -> New -> Database</b></li>
     <li>Choose <b>Connect to an existing database</b>, select <b>Spreadsheet</b> as
     the database type, and choose the <b>.ods</b> file you exported</li>
diff --git a/src/help/SearchHelp.html b/src/help/SearchHelp.html
index 39ae96c..6503489 100644
--- a/src/help/SearchHelp.html
+++ b/src/help/SearchHelp.html
@@ -24,8 +24,8 @@ string.
 When searching incrementally, the program searches immediately each
 time you press a letter. The status line informs you about the success
 of the search. Pressing the search shortcut keys causes the program to
-find the next occurence of the current search string. If no further
-occurences can be found, the status line will notify you about
+find the next occurrence of the current search string. If no further
+occurrences can be found, the status line will notify you about
 this. Repeating the search again causes the search to restart at the
 top. The search order always follows the current sorting of your
 database. To escape an incremental search, press ESC or click "Clear
@@ -34,7 +34,7 @@ search".
 <H2>Normal</H2>
 
 In a normal search, the program searches your database for all occurences of your
-search string, once you press ENTER. All entries that don't match are hidden, leaving for display the matching entries only.
+search string, once you press ENTER. All entries that don't match are hidden, leaving for display the matching entries only (filter mode), or are grayed-out (float mode).
 To stop displaying the search results, press ESC or click "Clear search".
 
 <a name="advanced"><H2>Field specification, logical operators</H2>
@@ -61,7 +61,7 @@ bibtexkey = miller2005
 
 <H2>Search settings</H2>
 
- The <em>Settings</em> button opens a menu that allows to toggle case sensitivity and use of regular expressions in the search, and whether search results should be selected in the table. 
+ The <em>Settings</em> button opens a menu that allows to toggle case sensitivity and use of regular expressions in the search, and whether search results should be selected in the table.
 
 </BODY>
 </HTML> 
\ No newline at end of file
diff --git a/src/help/TimeStampHelp.html b/src/help/TimeStampHelp.html
index acf3f15..594a76d 100644
--- a/src/help/TimeStampHelp.html
+++ b/src/help/TimeStampHelp.html
@@ -5,7 +5,7 @@
 
 <H1>Entry time stamps</H1>
 
-This feature can be toggled and configured under <b>Preferences -> General</b>.
+This feature can be toggled and configured under <b>Options -> Preferences -> General</b>.
 
 <p>JabRef can automatically set a field to contain the date an entry was added to the database.
 
diff --git a/src/help/de/About.html b/src/help/de/About.html
index f12ff20..8bd20ff 100644
--- a/src/help/de/About.html
+++ b/src/help/de/About.html
@@ -40,6 +40,7 @@ Alexis Gallagher<br>
 Sascha Hunold<br>
 Bernd Kalbfuss<br>
 Martin Kähmer<br>
+Ervin Kolenovic<BR>
 Jeffrey Kuhn<br>
 Alex Montgomery<br>
 John Relph<br>
diff --git a/src/help/fr/About.html b/src/help/fr/About.html
index 48ac59f..794c8b6 100644
--- a/src/help/fr/About.html
+++ b/src/help/fr/About.html
@@ -39,6 +39,7 @@ Alexis Gallagher<BR>
 Sascha Hunold<BR>
 Bernd Kalbfuss<BR>
 Martin Kähmer<BR>
+Ervin Kolenovic<BR>
 Jeffrey Kuhn<BR>
 Alex Montgomery<BR>
 John Relph<BR>
@@ -77,7 +78,7 @@ JabRef utilise aussi la bibliothèque de threading Spin 1.3.1, qui est dis
 <P>
 Ce produit inclut des logiciels développés par Apache Software
 Foundation (http://www.apache.org/). Les bibliothèques Commons Logging et
-Commons HTTP Client sont distribués par The Jakarta Project
+Commons HTTP Client sont distribuées par The Jakarta Project
 (<code>http://jakarta.apache.org</code>) sous la License Apache Software, Version 1.1. Voir le fichier inclus
 <code>apache-license.txt</code> ou
 <code>http://opensource.org/licenses/apachepl.php</code> pour plus de détails.
diff --git a/src/help/fr/BaseFrameHelp.html b/src/help/fr/BaseFrameHelp.html
index 214064a..a3cf5ce 100644
--- a/src/help/fr/BaseFrameHelp.html
+++ b/src/help/fr/BaseFrameHelp.html
@@ -21,19 +21,13 @@ données, ainsi qu'une sélection configurable de leurs champs.
 <ul>
 <li>Vous décidez des champs affichés dans ce tableau en cochant les
 champs que vous voulez voir dans la fenêtre de dialogue <strong>Préférences</strong>.</li>
-<li>Les champs peuvent être édités directement dans le tableau, en cliquant
-simplement dans la cellule et en tapant le contenu
-(ce mode d'édition est possible uniquement si "Autoriser l'édition dans les cellules
-du tableau" est cochée dans <strong>Options -->
-Préférences --> Général</strong>).
-Double-cliquez dans la cellule pour utiliser un mode d'édition plus puissant. Vous pouvez naviguer
-dans le tableau en utilisant les flèches du clavier.</li>
+<li>Pour éditér la valeur d'un champ, double-cliquez sur la ligne que vous voulez modifiez. Vous pouvez naviguer dans le tableau en utilisant les flèches du clavier.</li>
 <li>Le tableau est trié selon une série de champs de votre choix. L'ordre de tri par défaut est configuré dans <strong>Options -> Préférences -> Table des entrées</strong> mais vous pouvez changer rapidement et simplement cet ordre en double-cliquant sur le titre d'une colonne pour définir le critère de tri principal et en simple-cliquant sur le titre pour ajouter un nouveau sous-critère de tri. Si vous cliquez sur le  [...]
 <li>Vous pouvez ajuster la largeur des colonnes en faisant glisser les limites
 entre les entêtes.</li>
 <li>Dans la fenêtre de dialogue <strong>Préférences</strong>, choisissez si le tableau
 doit être redimensionné pour s'ajuster à la fenêtre. Sélectionnez cette option
-pour toujours voir l'ensemble du tableau, et désélectionner là pour permettre
+pour toujours voir l'ensemble du tableau, et désélectionnez là pour permettre
 l'affichage de plus d'informations.</li>
 <li>Les codes de couleurs vous aident à visualiser l'état
 de votre base de données. Les cellules sont colorées de la
@@ -52,7 +46,7 @@ façon suivante :
   </ul>
 </li>
 Les codes de couleurs peuvent être modifiés dans la fenêtre de dialogue
-<strong>Préférences</strong>. 
+<strong>Préférences</strong>.
 
 </ul>
 
@@ -63,7 +57,7 @@ choisir le type d'entrée à partir d'une liste. Pour éviter
 de dialogue, vous pouvez utilisez le menu <strong>BibTeX/ Nouvelle entrée...</strong>
 ainsi que des raccourcis clavier pour les types les plus courants.
 
-<P>Lorsqu'une nouvelle entrée est ajoutée, par défaut, une 
+<P>Lorsqu'une nouvelle entrée est ajoutée, par défaut, une
 <a href="EntryEditorHelp.html">fenêtre d'édition</a> s'ouvre. Ce comportement
 peut être modifié dans la fenêtre de dialogue <strong>Préférences</strong>.
 <P><em>Note :</em> Nous vous recommandons fortement d'apprendre les
@@ -71,16 +65,11 @@ raccourcis clavier des types d'entrées que vous utilisez le plus souvent,
 tel que CTRL-SHIFT-A pour l'ajout d'une entrée <em>article</em>.
 
 <H2>Editer une entrée</H2> Pour ouvrir la <a
-href="EntryEditorHelp.html">fenêtre d'édition</a> sur une entrée existante, 
-double-cliquez simplement dans la colonne la plus à gauche sur la ligne
-correspondante à l'entrée, ou sélectionner l'entrée et appuyez sur ENTER.
-Si "Autoriser l'édition dans les cellules du tableau" n'est pas coché
-dans la fenêtre de dialogue <strong>Options -->
-Préférences --> Général</strong>, un double-clic n'importe
-où sur la ligne correspondant à l'entrée ouvrira la fenêtre d'édition.
+href="EntryEditorHelp.html">fenêtre d'édition</a> sur une entrée existante,
+double-cliquez simplement sur la ligne correspondant à l'entrée (ou appuyez sur ENTREE apr�s avoir sélectionner l'entrée).
 
 <H2>Référencer une chaîne <em>BibTeX</em> dans un champ</H2>
-Dans JabRef vous écrivez le contenu de tous les champs de la même 
+Dans JabRef vous écrivez le contenu de tous les champs de la même
 façon que dans un éditeur de texte, à une exception près : pour
 référencer une chaîne, entourer le nom de la chaîne avec le caractère #,
 tel que dans :<BR>
diff --git a/src/help/fr/BibtexHelp.html b/src/help/fr/BibtexHelp.html
index ab4dc1f..cfa527e 100644
--- a/src/help/fr/BibtexHelp.html
+++ b/src/help/fr/BibtexHelp.html
@@ -1,50 +1,349 @@
-<HTML>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//FR">
+<html><head></head>
 
-<BODY text="#275856">
+<body style="color: rgb(39, 88, 86);">
 <basefont size="4" color="#2F4958" face="arial">
 
-<H1>A propos de <em>BibTeX</em></H1>
+<h1>A propos de <em>BibTeX</em></h1>
+
 
 JabRef vous aide à travailler avec vos bases de données <em>BibTeX</em>,
 mais certaines règles doivent être gardées à l'esprit lorsque vous
-éditez vos entrées afin le traitement correct de vos bases de données par le programme <em>BibTeX</em>.
+éditez vos entrées afin d'obtenir un traitement correct de vos bases de données par le programme <em>BibTeX</em>.
+
 
-<H2>Les champs <em>BibTeX</em></H2>
+<h2>Les champs <em>BibTeX</em></h2>
 
 Il y a un grand nombre de champs possibles dans <em>BibTeX</em>, et
 quelques champs en plus que vous pouvez paramétrer dans JabRef.
-
-<P>
+<p>
 Généralement, vous pouvez utiliser des commandes LaTeX à l'intérieur
 de champs contenant du texte. <em>BibTeX</em> formatera automatiquement
 vos listes de références et les champs qui sont inclus dans ces
 listes seront mis en majuscules/minuscules selon votre style bibliographique. Pour être certain que certains caractères restent en majuscules, encadrez-les
 par des accolades, comme dans le mot {B}elgique.
 
-<P>
+</p>
+
+
+
+<p>
 Notes à propos de certains types de champs :
+</p>
+
+
+
 <ul>
-<li><em>Author</em> : Ce champ doit contenir la liste complète
-des auteurs de votre entrée. Les noms sont séparés par le mot
-<em>and</em> même s'il y a plus de deux auteurs. Chaque nom peut
-être écrit indifféremment selon une des deux formes suivantes :<br>
- Donald E. Knuth <em>ou</em> Knuth, Donald E.<br>
- Eddie van Halen <em>ou</em> van Halen, Eddie<br>
 
-La seconde forme doit être utilisée pour les auteurs qui ont des noms
-composés (afin de différencier entre prénoms et noms).
- 
-<li><em>Editor</em> : Ce champ est analogue au champ <em>author</em>.
 
-<li><em>Year</em> : Année de la publication. Ce champ est requis pour
-la plupart des types d'entrées. 
 
-<li><em>Bibtexkey</em> : C'est une chaîne unique utilisée pour référencer
+<li><strong style="font-style: italic;">Bibtexkey</strong>
+C'est une chaîne unique utilisée pour référencer
 l'entrée dans les documents LaTeX. Notez que lorsque vous référencez une entrée
 dans LaTeX, la clef doit respecter la casse (majuscules/minuscules) de la chaîne
 de référence.
+    <br>
+</li>
+
+  <li><strong>address<br>
+    </strong>Habituellement l'adresse de l'<tt>�diteur commercial</tt> ("publisher" en anglais) ou d'un autre type d'institution.
+Pour les principales maisons d'�dition,
+van Leunen recommande d'omettre compl�tement cette information.
+Pour les petites maisons d'�dition, d'un autre cot�, vous pouvez aider le lecteur en donnant l'adresse compl�te.
+    <p>
+    </p>
+  </li>
+  <li><strong>annote<br>
+    </strong>Une annotation.
+Ce champ n'est pas utilis� par les styles bibliographiques standards, mais peut �tre utilis� par d'autres styles qui produisent une bibliographie annot�e.
+    <p>
+    </p>
+  </li>
+  <li><strong>author<br>
+    </strong>Ce champ doit contenir la liste compl�te des auteurs de votre entr�e. Les noms sont s�par�s par le mot <em>and</em>, m�me si il y a plus de deux auteurs. Chaque nom peut �tre �crit dans deux formes �quivalentes :<br>
+
+ Donald E. Knuth <em>ou</em> Knuth, Donald E.<br>
+
+ Eddie van Halen <em>ou</em> van Halen, Eddie<br>
+
+La seconde forme devrait �tre utilis�e pour les auteurs ayants plus de deux noms afin de diff�rencier les seconds pr�noms et les noms de famille [NDT: pas sur de la traduction...].
+<br>
+    <br>
+    <span style="font-weight: bold;"></span></li>
+  <li><span style="font-weight: bold;"></span><strong>booktitle<br>
+    </strong>Titre d'un livre, dont une partie est cit�e.
+Pour les entr�es du type "book", utilisez le champ <tt>title</tt>.
+    <p>
+    </p>
+  </li>
+  <li><strong>chapter<br>
+    </strong>Un num�ro de chapitre (ou de partie, ou d'autre chose).
+    <p>
+    </p>
+  </li>
+  <li><strong>crossref<br>
+    </strong>La clef de l'entr�e vers laquelle on effectue le renvoi.
+    <p>
+    </p>
+  </li>
+  <li><strong>edition<br>
+    </strong>Le num�ro d'�dition d'un livre -- par exemple "Troisi�me".
+Cela doit �tre un nombre, et la premi�re lettre doit �tre capitalis�e, comme montr� ici ;
+les styles standards la convertisse en minuscule si n�cessaire.
+    <p>
+    </p>
+  </li>
+  <li><strong>editor<br>
+    </strong>Ce champ est analogue au champ <em>author</em>.
+    Il permet d'indiquer le nom des �diteurs scientifiques, coordonateurs, etc.
+
+    <p>
+    </p>
+  </li>
+  <li><strong>howpublished<br>
+    </strong>Comment quelque chose de non-standard a �t� publi�e.
+Le premier mot prend une majuscule.
+    <p>
+    </p>
+  </li>
+  <li><strong>institution<br>
+    </strong>L'institution ayant promue un rapport technique.
+    <p>
+    </p>
+  </li>
+  <li><strong>journal<br>
+    </strong>Un nom de journal.
+Le nom d'un journal peut �tre abr�g� en utilisant une "cha�ne".
+Pour d�finir une cha�ne, utilisez <a href="StringEditorHelp.html">l'�diteur de cha�nes</a>.
+    <p>
+    </p>
+  </li>
+  <li><strong>key<br>
+    </strong>utilis� pour alphab�tiser, renvoyer et cr�er une �tiquette quand l'information sur "author" est manquante.
+Ce champ ne doit pas �tre confondu avec la clef qui est fournie dans la commande
+    <code>\cite</code> et au d�but de l'entr�e.
+    <p>
+    </p>
+  </li>
+  <li><strong>month<br>
+    </strong>Le mois au cours duquel le travail a �t�
+publi� ou, pour un travail non publi�, au cours duquel il a �t� �crit.
+Vous devriez utiliser l'abr�viation standard � trois lettres (jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec).
+    <p>
+    </p>
+  </li>
+  <li><strong>note<br>
+    </strong>Toute information additionnelle qui peut aider le lecteur.
+Le premier mot doit prendre une majuscule.
+    <p>
+    </p>
+  </li>
+  <li><strong>number</strong><br>
+Le num�ro d'un journal, d'un magazine, d'un rapport technique
+ou d'un travail dans une s�rie.
+Les journaux et les magazines sont habituellement
+identifi�s par leur volume et leur num�ro ;
+l'organisation qui publie un
+rapport technique lui donne en g�n�ral un num�ro ;
+et parfois les livres portent des num�ros
+lorsqu'ils appartiennent � une s�rie nomm�e.
+    <p>
+    </p>
+  </li>
+  <li><strong>organization<br>
+    </strong>L'organisation ayant promue une conf�rence ou qui publie un manuel.
+    <p>
+    </p>
+  </li>
+  <li><strong>pages<br>
+    </strong>Un ou plusieurs num�ros de page, ou une gamme de num�ros,
+tel que <tt>42-111</tt> ou <tt>7,41,73-97</tt> ou <tt>43+</tt>
+(le `<tt>+</tt>' dans le dernier exemple indique des pages suivantes
+qui ne sont pas dans un ordre simple).
+Pour garder facilement la compatibilit� avec les bases de donn�es compatibles
+<em>Scribe</em>, les styles standards convertissent le tiret simple
+(comme dans <tt>7-33</tt>)
+en un tiret double utilis� par TeX pour d�finir une gamme de nombres
+(comme dans <tt>7-33</tt>).
+    <p>
+    </p>
+  </li>
+  <li><strong>publisher<br>
+    </strong>Le nom de l'�diteur commercial.
+    <p>
+    </p>
+  </li>
+  <li><strong>school<br>
+    </strong>Le nom de l'�cole o� a �t� �crite une th�se.
+    <p>
+    </p>
+  </li>
+  <li><strong>series<br>
+    </strong>Le nom d'une s�rie ou d'un ensemble de livres.
+Quand on cite un livre entier, le champ <tt>title</tt>
+donne son titre et le champ optionnel <tt>series</tt> donne le
+nom de la s�rie ou de l'ensemble de volumes
+dans lequel le livre est publi�.
+    <p>
+    </p>
+  </li>
+  <li><strong>title<br>
+    </strong>Le titre du travail. La capitalisation d�pend du
+style bibliographique et de la langue utilis�s. Pour les mots qui
+doivent �tre capitalis�s (tel un nom propre), mettre le mot
+(ou sa premi�re lettre) entre accolades.
+    <p>
+    </p>
+  </li>
+  <li><strong>type<br>
+    </strong>Le type de rapport technique -- par exemple,
+"Note de recherche".
+    <p>
+    </p>
+  </li>
+  <li><strong>volume<br>
+    </strong>Le volume d'un journal ou d'un livre en plusieurs tomes.
+    <p>
+    </p>
+  </li>
+  <li><strong>year<br>
+    </strong>L'ann�e de publication ou, pour
+un travail non publi�, l'ann�e o� il a �t� �crit.
+G�n�ralement, elle doit prendre quatre chiffres, tel que <tt>1984</tt>,
+cependant les styles standards peuvent g�rer toute valeur de <tt>year</tt>
+dont les quatre derniers caract�res sont des chiffres (hors caract�res de ponctuation),
+tel que `(autour de 1984)'. Ce champ est requis par la plupart des types d'entr�es.
+</li>
+</ul>
+
+
+<br>
+
+
+<h2>Autres champs</h2>
+
+BibTeX est tr�s populaire, et beaucoup de gens l'ont utilis� pour stocker
+des informations. Voici une liste de quelque uns des champs les plus communs :
+
+<dl>
+
+
+</dl>
+
+<ul>
+
+  <li><strong><span style="font-weight: normal; font-style: italic;">affiliation*</span><br>
+    </strong>L'affiliation des auteurs.<br>
+    <br>
+
+  </li>
+  <li><strong>abstract<br>
+    </strong>Le r�sum� d'un travail.<br>
+    <br>
+
+  </li>
+  <li><strong><span style="font-weight: normal; font-style: italic;">contents*</span><br>
+    </strong>La table des mati�res<br>
+    <br>
+
+  </li>
+  <li><strong><span style="font-weight: normal; font-style: italic;">copyright*</span><br>
+    </strong>Informations sur les droits d'auteur (copyright).<br>
+    <br>
+  </li>
+  <li><strong><span style="font-weight: normal; font-style: italic;">ISBN*</span><br>
+    </strong>L'"International Standard Book Number".<br>
+    <br>
+
+  </li>
+  <li><strong><span style="font-weight: normal; font-style: italic;">ISSN*</span><br>
+    </strong>L'"International Standard Serial Number".  Utilis� pour identifier un journal.<br>
+    <br>
+
+  </li>
+  <li><strong>keywords<br>
+    </strong>Mots-clefs utilis�s pour la recherche, ou pour annotation.<br>
+    <br>
+
+  </li>
+  <li><strong><span style="font-weight: normal; font-style: italic;">language*</span><br>
+    </strong>La langue du document.<br>
+    <br>
+
+  </li>
+  <li><strong><span style="font-weight: normal; font-style: italic;">location*</span><br>
+    </strong>Une localisation associ�e avec l'entr�e, telle que la ville o� la conf�rence a eu lieu.<br>
+    <br>
+
+  </li>
+  <li><strong><span style="font-weight: normal; font-style: italic;">LCCN*</span><br>
+    </strong>Le "Library of Congress Call Number".  Champ parfois nomm� <tt>lib-congress</tt>.<br>
+    <br>
+
+  </li>
+  <li><strong><span style="font-weight: normal; font-style: italic;">mrnumber*</span><br>
+    </strong>Le num�ro de <i>Mathematical Reviews</i>.<br>
+    <br>
+
+  </li>
+  <li><strong><span style="font-weight: normal; font-style: italic;">price*</span><br>
+    </strong>Le prix du document.<br>
+    <br>
+
+  </li>
+  <li><strong><span style="font-weight: normal; font-style: italic;">size*</span><br>
+    </strong>La taille physique d'un travail.<br>
+    <br>
+
+  </li>
+  <li><strong>URL<br>
+    </strong>Le "WWW Universal Resource Locator" (adresse URL)
+    qui pointe vers l'�l�ment r�f�renc�.
+    C'est souvent utilis� pour les rapports techniques afin d'indiquer
+    le site ftp o� la source postscript du rapport est localis�e.
+  </li>
+</ul>
+
+<dl>
+
+
+</dl>
+
+
+
+
+
+
+<h3><br>
+</h3>
+
+
+
+<h3>JuraBib</h3>
+
+
+
+
+<ul>
+
+  <li><strong>urldate<br>
+    </strong>La date de la derni�re visite de la page.</li>
 
 </ul>
 
 
-</HTML>
+<br>
+
+*) non support� directement par JabRef<br>
+
+
+
+
+
+
+
+<br>
+
+
+
+</body></html> 
\ No newline at end of file
diff --git a/src/help/fr/CiteSeerHelp.html b/src/help/fr/CiteSeerHelp.html
index cce9a83..ec5efd7 100644
--- a/src/help/fr/CiteSeerHelp.html
+++ b/src/help/fr/CiteSeerHelp.html
@@ -11,8 +11,8 @@
 JabRef peut récupérer de l'information sur une entrée particulière à partir de la base de données CiteSeer. Pour initier ce processus, ajoutez une nouvelle entrée dans votre base de données et renseignez le champ citeseerurl avec un lien vers la page de contenu sur CiteSeer. Le champ citeseerurl doit être rempli avec l'un des formats suivants :
 </p>
 <p>
-http://citeseer.ist.psu.edu/DDDDDD[.html], or <br>
-oai:CiteSeerPSU:DDDDDD, or <br>
+http://citeseer.ist.psu.edu/DDDDDD[.html], ou <br>
+oai:CiteSeerPSU:DDDDDD, ou <br>
 DDDDDD
 </p>
 <p>
@@ -25,7 +25,7 @@ Une fois que vous avez renseigné le champ citeseerurl, vous pouvez t&eacu
 <h2>Génération d'une base de citations</h2>
 
 <p>
-A partir d'une série de références, vous pouvez générer une liste de documents qui citent les éléments de cette liste. Pour faciliter cette opération, chaque citation de la base de données doit avoir son champ citeseerurl rempli selon l'un des formats indiqués dans <b>Récupération d'une entrée depuis CiteSeer</b>. Pour réaliser cette opération, sélectionnez <b>Outils -> Recherc [...]
+A partir d'une série de références, vous pouvez générer une liste de documents qui citent les éléments de cette liste. Pour faciliter cette opération, chaque citation de la base de données doit avoir son champ citeseerurl rempli selon l'un des formats indiqués dans <b>Récupération d'une entrée depuis CiteSeer</b>. Pour réaliser cette opération, sélectionnez <b>Recherche interne [...]
 </p>
 
 <h2>Utilisation d'un serveur proxy</h2>
diff --git a/src/help/fr/CommandLine.html b/src/help/fr/CommandLine.html
index b2a7919..b4f5b93 100644
--- a/src/help/fr/CommandLine.html
+++ b/src/help/fr/CommandLine.html
@@ -38,7 +38,7 @@ qui apparaît normalement au démarrage de l'application. Elle
 permet la sortie du programme immédiatement après
 l'exécution des autres options.
 
-<p>Cette option est particulièrement utile pour réaliser
+<p>Cette option est quelque fois utile pour réaliser
 des opérations de conversion à partir de la ligne de
 commande ou dans un script.</p>
 
diff --git a/src/help/fr/ContentSelectorHelp.html b/src/help/fr/ContentSelectorHelp.html
index b953d82..bf33f41 100644
--- a/src/help/fr/ContentSelectorHelp.html
+++ b/src/help/fr/ContentSelectorHelp.html
@@ -10,7 +10,7 @@
 <h1>Sélecteur de contenu de champ</h1>
 
 <p>
-Cette opération vous permet d'enregistrer une sélection de mots et de phrases que vous utilisez souvent dans votre base de données. Par défaut, c'est possible avec les champs <em>Journal</em>, <em>Keywords</em> et <em>Publisher</em> mais vous pouvez aussi ajouter des sélecteurs à d'autres champs, en utilisant la partie supérieure de la fenêtre <i>Gérer les sélecteurs</i> (menu <strong> Outils --> Gérer les s&eacu [...]
+Cette opération vous permet d'enregistrer une sélection de mots et de phrases que vous utilisez souvent dans votre base de données. Par défaut, c'est possible avec les champs <em>Journal</em>, <em>Author</em>, <em>Keywords</em> et <em>Publisher</em> mais vous pouvez aussi ajouter des sélecteurs à d'autres champs, en utilisant la partie supérieure de la fenêtre <i>Gérer les sélecteurs</i> (menu <strong> Outils --> G&eacu [...]
 </p>
 
 <p>
diff --git a/src/help/fr/Contents.html b/src/help/fr/Contents.html
index 239bd7f..5f97116 100644
--- a/src/help/fr/Contents.html
+++ b/src/help/fr/Contents.html
@@ -20,6 +20,7 @@
     <a href="EntryEditorHelp.html">�diteur d'entrées</a><br>
     <a href="CiteSeerHelp.html">Récupération des entrées depuis <em>CiteSeer</em></a><br>
     <a href="MedlineHelp.html">Récupération des entrées depuis <em>Medline</em></a><br>
+    <a href="IEEEXploreHelp.html">Récupération des entrées depuis <em>IEEExplore</em></a><br>
     <a href="ContentSelectorHelp.html">Sélecteur de contenu de champ</a><br>
     <a href="JournalAbbreviations.html">Abréviations de journaux</a><br>
     <a href="GroupsHelp.html">Utilisation des <em>Groupes</em></a><br>
diff --git a/src/help/fr/CustomExports.html b/src/help/fr/CustomExports.html
index df7a6fb..eafd922 100644
--- a/src/help/fr/CustomExports.html
+++ b/src/help/fr/CustomExports.html
@@ -12,7 +12,7 @@ JabRef vous permet de définir et d'utiliser vos propres filtres d'exporta
 <h2>Ajout d'un filtre d'exportation personnalisé </h2>
 
 <p>
-La seule obligation pour avoir un filtre d'exportation valide est l'existence d'un fichier avec l'extension <b>.layout</b>. Pour ajouter un nouveau filtre d'exportation, on utilise le menu <b>Options -> Gérer les exportations personnalisées</b>, et on clique sur <b>Ajouter nouvelle</b>. Une nouvelle boite de dialogue apparaît et vous permet de spécifier un nom pour le nouveau filtre d'exportation (ce nom apparaîtra dans le menu <b>Fichier -> Exportation p [...]
+La seule obligation pour avoir un filtre d'exportation valide est l'existence d'un fichier avec l'extension <b>.layout</b>. Pour ajouter un nouveau filtre d'exportation, on utilise le menu <b>Options -> Gérer les exportations personnalisées</b>, et on clique sur <b>Ajouter nouvelle</b>. Une nouvelle boite de dialogue apparaît et vous permet de spécifier un nom du nouveau filtre d'exportation (ce nom apparaîtra dans le menu <b>Fichier -> Exportation person [...]
 </p>
 
 <h2>Création d'un filtre d'exportation</h2>
@@ -95,10 +95,10 @@ Vous pouvez aussi indiquer plusieurs formateurs séparés par des vi
 <code>\format[ToLowerCase,HTMLChars]{\author}</code>
 </p>
 <p>
-va d'abord appliqué le formateur <b>ToLowerCase</b> puis <b>HTMLChars</b> sur le résultat. Vous pouvez lister un nombre arbitraire de formateurs de cette manière.
+va d'abord appliquer le formateur <b>ToLowerCase</b> puis <b>HTMLChars</b> sur le résultat. Vous pouvez lister un nombre arbitraire de formateurs de cette manière.
 </p>
 
-<p>Le paramètre des formateurs, entre les accolades, n'est pas obligatoirement une commande de champ. Vous pouvez y insérer du texte normal, qui sera alors passé aux formateurs au lieu des contenues de tout champ [NdT : pas sûr d'avoir bien compris...]. Cela peut-être utile avec certains formateurs, par exemple le formateur CurrentDate (voir ci-dessous).
+<p>Le paramètre des formateurs, entre les accolades, n'est pas obligatoirement une commande de champ. Vous pouvez y insérer du texte normal, qui sera alors passé comme argument au formateur. Cela peut-être utile avec certains formateurs, par exemple le formateur CurrentDate (voir ci-dessous).
 </p>
 
 <p>
diff --git a/src/help/fr/CustomImports.html b/src/help/fr/CustomImports.html
index ca1cb1a..ef9ec19 100644
--- a/src/help/fr/CustomImports.html
+++ b/src/help/fr/CustomImports.html
@@ -11,19 +11,12 @@
 
 <H2>Ajouter un filtre d'importation personnalisé</H2>
 
-<p>Assurez-vous que vous avez un filtre d'importation personnalisé compilé (un ou plusieurs fichiers <code>.class</code> sont décrits ci-dessous) et que les fichiers de classe soient dans la structure des répertoires selon la structure de leur paquetage. Pour ajouter un nouveau filtre d'importation personnalisé, ouvrez la boîte de dialogue <b>Options -> Gérer les importations personnalisées</b>, et cliquer <b>Ajouter à partir  [...]
-Un sélectionneur de fichier apparaîtra, vous permettant de sélectionner le chemin de classe de votre filtre d'importation, c'est à dire le répertoire où se trouve le répertoire supérieur de votre structure de paquetage. Dans un second sélectionneur de fichier vous sélectionnez votre fichier de classe de filtre d'importation, lequel doit dériver de <code>ImportFormat</code> [NdT : pas tout compris...]. En cli [...]
-<b>Sélectionner une nouvelle sous-classe de format d'importation</b>, votre nouveau filtre d'importation apparaîtra dans la liste des filtres d'importation personnalisés. Tous les filtres d'importations personnalisés apparaîtront dans le menu <b>Fichier -> Importer -> 
-Filtres d'importation personnalisés</b> et <b>Fichier -> Importer et joindre -> Filtres d'importation personnalisés</b> de la fenêtre de JabRef.</p>
-
-
-
-<p>S'il vous plaît, notez que si vous déplacer la classe vers un autre répertoire, vous aurez à supprimer et à ré-ajouter le filtre d'importation. Si vous ajouter un filtre d'importation personnalisé sous un nom qui existe déjà, le filtre d'importation existant sera remplacé. De plus, dans certains cas, il est possible de mettre à jour un filtre d'importation personnalisé existant sans redémarrer Ja [...]
+<p>Assurez-vous que vous avez un filtre d'importation personnalisé compilé (un ou plusieurs fichiers <code>.class</code> sont décrits ci-dessous) et que les fichiers de classe soient dans la structure des répertoires selon la structure de leur paquetage. Pour ajouter un nouveau filtre d'importation personnalisé, ouvrez la boîte de dialogue <b>Options -> Gérer les importations personnalisées</b>, et cliquez  <b>Ajouter &agrave [...]
 
 
 <H2>Créer un filtre d'importation</H2>
 
-Pour des exemples et quelques fichiers utiles sur la façon de construire vos propres filtres d'importation, consulter s'il vous plaît la page de téléchargement.
+Pour des exemples et quelques fichiers utiles sur la façon de construire vos propres filtres d'importation, consultez s'il vous plaît la page de téléchargement.
 
 
 <H3>Un exemple simple</H3>
@@ -83,10 +76,10 @@ javac -classpath JabRef-2.0.jar SimpleCsvImporter.java
 </pre>
 A présent il doit y avoir un fichier <code>/mypath/SimpleCsvImporter.class</code>.</p>
 
-<p>Dans JabRef, ouvrez <b>Options -> Gérer les importations personnalisées</b>, et cliquez sur <b>Ajouter à partir du répertoire</b>.
-Aller dans <code>/mypath</code> et cliquer le bouton <b>Sélectionner...</b>. Sélectionnez 
-<code>SimpleCsvImporter.class</code> et cliquer sur le bouton <b>Sélectionner...</b>.
-Votre filtre d'importation devrait maintenant apparaître dans la liste des filtres d'importation personnalisés sous le nom "Simple CSV Importer" et, après avoir cliqué sur <b>Fermer</b>, aussi dans les menus <b>Fichier -> Importer -> Filtres d'importation personnalisés</b> et <b>Fichier -> Importer et joindre -> Filtres d'importation personnalisés</b> de la fenêtre de JabRef.</p>
+<p>Dans JabRef, ouvrez <b>Options -> Gérer les importations personnalisées</b>, et cliquez sur <b>Ajouter à partir du répertoire</b>.
+Allez dans <code>/mypath</code> et cliquez le bouton <b>Sélectionner...</b>. Sélectionnez 
+<code>SimpleCsvImporter.class</code> et cliquez sur le bouton <b>Sélectionner...</b>.
+Votre filtre d'importation devrait maintenant apparaître dans la liste des filtres d'importation personnalisés sous le nom "Simple CSV Importer" et, après avoir cliqué sur <b>Fermer</b>, aussi dans les menus <b>Fichier -> Importer -> Filtres d'importation personnalisés</b> et <b>Fichier -> Importer et joindre -> Filtres d'importation personnalisés</b> de la fenêtre de JabRef.</p>
 
 <H2>Partager votre travail</H2>
 
diff --git a/src/help/fr/EntryEditorHelp.html b/src/help/fr/EntryEditorHelp.html
index fd44951..38816bf 100644
--- a/src/help/fr/EntryEditorHelp.html
+++ b/src/help/fr/EntryEditorHelp.html
@@ -5,21 +5,19 @@
 
 <H1>L'éditeur d'entrées</H1>
 
-<em>On l'ouvre à partir de la fenêtre principale en double-cliquant
-sur la colonne la plus à gauche de l'entrée (en double-cliquant n'importe
-où sur la ligne de l'entrée si "Autoriser l'édition dans les cellules
-du tableau" n'est pas cochée dans <strong>Options --> Préférences --> Général</strong>),
-ou en appuyant sur ENTER. L'éditeur d'entrées se ferme en appuyant sur ESC.</em>
+<em>On l'ouvre à partir de la fenêtre principale en double-cliquant n'importe où
+sur la ligne de l'entrée,
+ou en sélectionnant l'entrée et en appuyant sur ENTREE. L'éditeur d'entrées se ferme en appuyant sur ESC.</em>
 <P>
 Dans l'éditeur d'entrées, vous pouvez spécifier toutes les informations pertinentes
-pour une entrée donnée. L'éditeur d'entrées vérifie le type de votre entrée et 
+pour une entrée donnée. L'éditeur d'entrées vérifie le type de votre entrée et
 affiche tous les champs qui sont requis ou optionnels pour que <em>BibTeX</em>
 traite l'entrée. De plus, il y a plusieurs champs, appelés <em>Champs
 généraux</em>, qui sont communs à tous les types d'entrées.
 
 <P>Vous pouvez personnaliser complètement les champs qui doivent être considérés comme
 requis ou optionnel pour chaque type d'entrée, ainsi que les champs apparaissant dans
-l'onglet Champs généraux. Voir <a href="CustomEntriesHelp.html">Personnaliser les types
+l'onglet Général. Voir <a href="CustomEntriesHelp.html">Personnaliser les types
 d'entrées</a> pour plus d'informations à ce sujet.
 
 <P>Pour des informations sur la façon de remplir les champs,
@@ -27,19 +25,19 @@ voir <a href="BibtexHelp.html">Aide sur BibTeX</a>.
 
 <H2>Le panneau à onglets de l'éditeur d'entrées</H2>
 
-L'éditeur d'entrée contient cinq onglets :
+L'éditeur d'entrée contient six onglets :
 <em>Champs requis</em>, <em>Champs optionnels</em>,
-<em>Champs généraux</em>, <em>Abstract</em>
-et <em>Source BibTeX</em>. Les onglets <em>Champs généraux</em> et
-<em>Abstract</em> peuvent être personnalisés (voir <a href="GeneralFields.html">Personnalisation des champs généraux</a> pour plus de détails). A l'intérieur des trois premiers onglets, TAB et SHIFT-TAB sont utilisés pour naviguer entre les champs de texte.
+<em>Général</em>, <em>Abstract</em>, <em>Review</em>
+et <em>Source BibTeX</em>. Les onglets <em>Général</em>,
+<em>Abstract</em> et <em>Review</em> peuvent être personnalisés (voir <a href="GeneralFields.html">Personnalisation des champs généraux</a> pour plus de détails). A l'intérieur des trois premiers onglets, TAB et MAJ-TAB sont utilisés pour naviguer entre les champs de texte.
 
 <P>Naviguez entre les onglets en cliquant sur les onglets
 ou en utilisant les combinaisons de touches suivantes pour vous déplacer
 vers la gauche ou la droite : CTRL-TAB ou CTRL-PLUS
-affiche l'onglet à droite, et CTRL-SHIFT-TAB ou CTRL-MOINS
+affiche l'onglet à droite, et CTRL-MAJ-TAB ou CTRL-MOINS
 affiche l'onglet à gauche. Vous pouvez aussi afficher l'entrée précédente ou
-suivante en appuyant respectivement sur CTRL-SHIFT-DOWN ou
-CTRL-SHIFT-UP, ainsi qu'en cliquant sur les boutons de la barre
+suivante en appuyant respectivement sur CTRL-MAJ-DOWN ou
+CTRL-MAJ-UP, ainsi qu'en cliquant sur les boutons de la barre
 d'outils de l'éditeur d'entrées.
 
 <P>L'onglet <em>Source BibTeX</em> montre comment l'entrée
@@ -65,24 +63,24 @@ ne connaît pas, ils seront visibles dans l'onglet <em>Source
 BibTeX</em>.
 
 <P><strong>Astuce :</strong> les champs <I>pdf</I> et <I>url</I>
-supportent les opérations de Glisser-Déplacer. 
-Vous pouvez faire glisser une url depuis votre navigateur. 
-Ensuite, vous aurez le choix entre insérer l'URL et 
-téléchargé le fichier.
+supportent les opérations de Glisser-Déplacer.
+Vous pouvez faire glisser une url depuis votre navigateur.
+Ensuite, vous aurez le choix entre insérer l'URL et
+télécharger le fichier.
 
 <H2>Vérification de la cohérence des champs</H2>
 Quand le contenu d'un champ est modifié, JabRef vérifie que le nouveau
 contenu est acceptable. Pour les champs qui sont utilisés par
 <em>BibTeX</em>, le contenu est vérifié par rapport à l'utilisation
 du caractére '#'. Le symbole dièse doit <em>toujours</em> être
-utilisé par paires, encadrant le nom d'une chaîne <em>BibTeX</em> 
+utilisé par paires, encadrant le nom d'une chaîne <em>BibTeX</em>
 existante. Notez que JabRef ne vérifie pas si la chaîne <em>BibTeX</em>
 est vraiment définie (ce n'est pas trivial, puisque le style
 <em>BibTeX</em> que vous utilisez peut définir une série
 arbitraire de chaînes dont JabRef n'a pas connaissance).
 <P>
 Si le contenu n'est pas valide, le champ sera affiché en rouge,
-indiquant ainsi une erreur. Dans ce cas, le changement ne 
+indiquant ainsi une erreur. Dans ce cas, le changement ne
 sera pas sauvé.
 
 <!--<H2>Word/name autocompletion</H2>
diff --git a/src/help/fr/ExternalFiles.html b/src/help/fr/ExternalFiles.html
index ac80369..1592cb1 100644
--- a/src/help/fr/ExternalFiles.html
+++ b/src/help/fr/ExternalFiles.html
@@ -16,7 +16,7 @@ PDF et PS ainsi que pour les pages internet. Ils sont par défaut configur
 avec des valeurs qui fonctionnent probablement avec votre système d'exploitation ;
 aussi, il est très possible que vous n'ayez pas besoin de changer ces valeurs
 <p>Pour changer la configuration des visionneurs externes, allez dans le menu
-<b>Options/ Préférences -> Général</b>.
+<b>Options -> Préférences -> Programmes externes</b>.
 
 <H2>Ouvrir des fichiers externes ou des liens</H2>
 
@@ -32,36 +32,48 @@ sur les icônes PDF, PS, URL ou DOI de la barre d'outils.
 lesquelles des icônes s'affichent pour les entrées possédant un lien
 vers un fichier externe ou une URL. La seconde colonne du tableau
 montre les icônes qui ouvrent les fichiers PDF et PS (uniquement
-le fichier PDF si les deux fichiers sont présents), 
+le fichier PDF si les deux fichiers sont présents),
 et la troisième colonne montre les icônes
 ouvrant les URL et les DOI (uniquement l'URL si les deux liens sont
 présents). Vous ouvrez le fichier ou la page internet en cliquant
 sur une de ces icônes. Vous pouvez désactiver n'importe laquelle de ces
 fonctions en utilisant le menu <b>Options/ Préférences -> Table des
-entrées</b>. 
+entrées</b>.
 
-<H2>Le répertoire PDF principal</H2>
+<P><b>Remarque:</b> Si le champ n'apparaît pas dans l'éditeur d'entrée (dans l'onglet 'General'),
+Vous pourriez avoir à <a href="GeneralFields.html">personnaliser les champs généraux</a>.
+</P>
 
-Les fichiers PDF ont un traitement particulier afin de les relier aussi
-facilement que possible à vos entrées. Pour bénéficier de cette fonction,
-vous devez définir un répertoire comme répertoire PDF principal dans
-le menu <b>Options -> Préférences -> Programmes externes</b>.
-Tous les fichiers PDF qui sont stockés dans ou en dessous de ce répertoire
-seront référencés par un chemin relatif. Il vous sera ainsi facile 
-de déplacer le répertoire PDF principal ou de partager votre base de données
+
+<H2>Les répertoires PDF et PS principaux</H2>
+
+JabRef permet de lier facilement les fichiers PDF et PS � vos entr�es. Pour bénéficier de cette fonction,
+vous devez définir dans le menu <b>Options -> Préférences -> Programmes externes</b>
+vos répertoires principaux pour les fichiers PDF et PS.
+Tous les fichiers PDF et PS qui sont stockés dans (ou en-dessous de) chacun de ces répertoires
+seront référencés par un chemin relatif. Il vous sera ainsi facile
+de déplacer les répertoires PDF et PS principaux ou de partager votre base de données
 avec d'autres utilisateurs situés en des points différents du réseau.
 
-<P>De plus, si vous donnez à vos fichiers PDF des noms qui correspondent à
-la clef BibTeX des entrées (plus '.pdf'), JabRef sera capable de rechercher
-dans le répertoire PDF principal et ses sous-répertoires le bon fichier PDF.
-Lorsqu'un fichier PDF (nommé correctement) est dans le répertoire,
-vous accéder à cette fonction en cliquant sur le bouton 'Auto' situé à
-coté du champ PDF de l'éditeur d'entrées. Si le fichier PDF est trouvé,
+<P>De plus, si vous donnez à vos fichiers PDF et PS des noms qui correspondent à
+la clef BibTeX des entrées (plus '.pdf' ou '.ps'), JabRef sera capable de rechercher
+dans vos répertoires principaux et leurs sous-répertoires le bon fichier PDF ou PS.
+Lorsqu'un fichier PDF ou PS (nommé correctement) est déjà dans le répertoire principal,
+vous accédez à cette fonction en cliquant sur le bouton 'Auto' situé à
+coté des champs PDF et PS de l'éditeur d'entrées. Si le fichier PDF ou PS est trouvé,
 le champ sera immédiatement rempli.
 
-<P>Si vous nommez le PDF comme mentionné ci-dessus, vous pourrez aussi
-ouvrir le fichier PDF sans configurer préalablement le champ PDF.
-Cependant, dans ce cas, l'icône PDF n'apparaîtra pas dans le tableau
+<P>Si vous nommez un fichier PDF ou PS comme mentionné ci-dessus, vous pourrez aussi
+ouvrir le fichier sans configurer préalablement le champ PDF ou PS de l'entrée.
+Cependant, dans ce cas, l'icône PDF ou PS n'apparaîtra pas dans le tableau
 des entrées.
 
+<H2>Les répertoires PDF et PS sp�cifiques à la base de données</H2>
+<P>
+Vous pouvez définir des répertoires PDF et PS spécifiques à une base de données
+(<b>Fichier -> Propriétés de la base de données</b>).
+Ces répertoires remplacent alors les répertoires principaux.
+</P>
+
+
 </HTML>
diff --git a/src/help/fr/GroupsHelp.html b/src/help/fr/GroupsHelp.html
index 5e5cb55..ec231ae 100644
--- a/src/help/fr/GroupsHelp.html
+++ b/src/help/fr/GroupsHelp.html
@@ -10,16 +10,16 @@ Les groupes permettent de structurer une base de données BibTeX selon une
 
 <ul>
 <li> Alors qu'un fichier est toujours localisé dans un seul répertoire, une entrée peut être incluse dans plus d'un groupe.
-<li> Les groupes peuvent utiliser certains critères pour définir dynamiquement leur contenu. Les nouvelles entrées qui correspondent à ses critères sont automatiquement incluses à ces groupes. Cette caractéristique n'est pas disponible dans les systèmes de fichiers habituels, mais est présente dans certains logiciels de messagerie électronique (tel que Thunderbird et Opera).
+<li> Les groupes peuvent utiliser certains critères pour définir dynamiquement leur contenu. Les nouvelles entrées qui correspondent à ces critères sont automatiquement incluses à ces groupes. Cette caractéristique n'est pas disponible dans les systèmes de fichiers habituels, mais est présente dans certains logiciels de messagerie électronique (tel que Thunderbird et Opera).
 </ul>
 
-Sélectionner un groupe montre les entrées contenues dans ce groupe. Sélectionner plusieurs groupes montre les entrées contenues dans au moins un des groupes (union) ou dans tous les groupes (intersection), selon le paramétrage actuel. Tout ceci est expliqué en détail ci-dessous.
+Sélectionner un groupe montre les entrées contenues dans ce groupe. Sélectionner plusieurs groupes montre les entrées contenues dans au moins un des groupes (union) ou dans tous les groupes (intersection), selon le paramétrage en cours. Tout ceci est expliqué en détail ci-dessous.
 <p>
 Les définitions de groupes sont spécifiques à chaque base de données ; Elles sont sauvées comme un bloc <tt>@COMMENT</tt> dans le fichier <tt>.bib</tt> et sont communes à tous les utilisateurs (des futures versions de JabRef pourrait supporter des groupes dépendants des utilisateurs).
 
 <H2>Interface</H2>
 
-L'interface des groupes se trouve dans le panneau latéral sur la gauche de l'écran. Il peut être affiché ou masqué en appuyant sur <tt>CTRL-SHIFT-G</tt> ou sur le bouton des groupes dans la barre d'outils. L'interface a plusieurs boutons, mais la plupart des fonctions sont accessibles par un menu contextuel ("clic droit"). La fonction Glisser-Déplacer est aussi disponible.
+L'interface des groupes se trouve dans le panneau latéral sur la gauche de l'écran. Il peut être affiché ou masqué en appuyant sur <tt>CTRL-MAJ-G</tt> ou sur le bouton des groupes dans la barre d'outils. L'interface a plusieurs boutons, mais la plupart des fonctions sont accessibles par un menu contextuel ("clic droit"). La fonction Glisser-Déplacer est aussi disponible.
 <p>
 
 <table cellspacing=0 cellpadding=5 border=0 bgcolor=#c0ffc0>
@@ -46,7 +46,7 @@ Créez deux groupes différents (par exemple, tel que décrit
 
 <h3>...identifier les groupes se chevauchant</h3>
 
-JabRef vous permet d'identifier facilement les groupes qui se chevauchent parmi les groupes actuellement sélectionnés (c-à-d ceux qui contiennent au moins une entrée qui est aussi contenu dans les groupes actuellement sélectionnés). Cliquez sur le bouton <b>Paramètres</b> et activé l'option pour montrer les groupes qui se chevauchent. Ensuite sélectionnez un groupe qui chevauche d'autres groupes. Les autres groupes devraient  [...]
+JabRef vous permet d'identifier facilement les groupes qui se chevauchent parmi les groupes actuellement sélectionnés (c-à-d ceux qui contiennent au moins une entrée qui est aussi contenu dans les groupes actuellement sélectionnés). Cliquez sur le bouton <b>Paramètres</b> et activé l'option pour montrer les groupes qui se chevauchent. Ensuite sélectionnez un groupe qui chevauche d'autres groupes. Les noms de ces groupes s'aff [...]
 
 </tr></td>
 </table>
@@ -54,16 +54,16 @@ JabRef vous permet d'identifier facilement les groupes qui se chevauchent parmi
 
 <H2>Les types de groupes</H2>
 
-Dans JabRef 1.8, il y a quatre types de groupes différents :
+Dans JabRef, il y a quatre types de groupes différents :
 
 <ol>
 <li> Le groupe <b>Toutes les entrées</b>, qui -- comme son nom le suggère -- contient toutes les entrées, est toujours présent et ne peut pas être édité ou supprimé.
-<li> <b>Les groupes manuels</b> se comportent comme les répertoires d'un disque et contiennent uniquement les entrées que vous leur avez explicitement assignées. 
+<li> <b>Les groupes manuels</b> se comportent comme les répertoires d'un disque et contiennent uniquement les entrées que vous leur avez explicitement assignées.
 <li> <b>Les groupes dynamiques basés sur la recherche d'un mot-clef</b> contiennent des entrées pour lesquelles un champ BibTeX donné (par ex. <tt>keywords</tt>) contient un certain mot-clef (par ex. <tt>électrique</tt>). Cette méthode ne nécessite pas d'assignation manuelle des entrées, mais utilise les informations qui sont déjà présentes dans la base de données. Si toutes les entrées de votre base de d [...]
 <li> <b>Les groupes dynamiques basés sur des expressions de recherche de forme libre</b> contiennent les entrées qui correspondent à l'expression de recherche spécifiée et suivant la même syntaxe que <a href="SearchHelp.html">l'interface de recherche</a> dans le panneau latéral. Cette <a href="SearchHelp.html#advanced">syntaxe</a> supportent les opérateurs logiques (<tt>AND</tt>, <tt>OR</tt>, <tt>NOT</tt>) et permet de spécifi [...]
 </ol>
 
-Chaque groupe que vous créez fait partie de ces trois derniers types. La fenêtre d'édition des groupes, qui s'ouvre en double-cliquant sur un groupe, montre une description succincte (en français de tous les jours) de la définition du groupe sélectionné/édité. 
+Chaque groupe que vous créez fait partie de ces trois derniers types. La fenêtre d'édition des groupes, qui s'ouvre en double-cliquant sur un groupe, montre une description succincte (en français de tous les jours) de la définition du groupe sélectionné/édité.
 
 <H2>La structure des groupes, créer et supprimer des groupes</H2>
 
@@ -73,7 +73,7 @@ Annuler et Répéter fonctionnent pour toutes les éditions.
 
 <H3>Les groupes manuels</h3>
 
-Les groupes manuels sont alimentés uniquement par l'assignation explicite des entrées. Après avoir créer un groupe manuel, vous sélectionnez les entrées à lui assigner et utilisez soit un Glisser-Déplacer soit le menu contextuel de la table des entrées. Il n'y a pas d'options à configurer.
+Les groupes manuels sont alimentés uniquement par l'assignation explicite des entrées. Après avoir créé un groupe manuel, vous sélectionnez les entrées à lui assigner et utilisez soit un Glisser-Déplacer soit le menu contextuel de la table des entrées. Il n'y a pas d'options à configurer.
 <p>
 Cette méthode de groupement nécessite que toutes les entrées aient une clef BibTeX unique. Dans le cas de clefs BibTeX manquantes ou dupliquées, l'assignation de ces entrées ne pourra pas être correctement rétablie lors de futures sessions.
 
@@ -85,7 +85,7 @@ Deux types de conditions logiques peuvent être utilisées :
 <dl>
 <dt><b>Recherche d'un mot-clef dans un champ</b></dt>
 <dd>
-Cette méthode groupe les entrées dans lesquelles un champ BibTeX spécifié (par ex. <tt>keywords</tt>) contient le terme de recherche spécifié (par ex. <tt>électrique</tt>). Evidemment, pour que cela fonctionne, le champ doit être présent dans toutes les entrées et son contenu doit être pertinent. L'exemple ci-dessus regroupera toutes les entrées qui font références à électrique.  [...]
+Cette méthode groupe les entrées dans lesquelles un champ BibTeX spécifié (par ex. <tt>keywords</tt>) contient le terme de recherche spécifié (par ex. <tt>électrique</tt>). Evidemment, pour que cela fonctionne, le champ doit être présent dans toutes les entrées et son contenu doit être pertinent. L'exemple ci-dessus regroupera toutes les entrées qui font références à électrique.  [...]
 </dd>
 <dt><b>Utiliser une expression de recherche de forme libre</b></dt>
 <dd>
@@ -93,13 +93,13 @@ Ceci est similaire à ce qui est décrit ci-dessus mais, au lieu de
 </dd>
 </dl>
 
-Dans le panneau des groupes, les groupes dynamiques sont par défaut affichés en <i>italique</i>. Cela peut être modifié dans les préférences [NdT: où ça ?].
+Dans le panneau des groupes, les groupes dynamiques sont par défaut affichés en <i>italique</i>. Cela peut être modifié dans les préférences (Options -> Préférences -> Groupes, case "Afficher les groupes dynamiques en italique").
 
 <h3>Contexte hiérarchique</h3>
 
-Par défaut, un groupe est <b>indépendant</b> de sa position dans l'arbre des groupes : lorsqu'il est sélectionné, uniquement son contenu est affiché. Cependant, particulièrement lors de l'utilisation de groupes dynamiques, il est souvent utile de définir un sous-groupe qui <b>raffine son sur-groupe</b>, c-à-d que, lorsqu'il est sélectionné, les entrées contenues dans les deux groupes sont affichées.  [...]
+Par défaut, un groupe est <b>indépendant</b> de sa position dans l'arbre des groupes : lorsqu'il est sélectionné, uniquement son contenu est affiché. Cependant, particulièrement lors de l'utilisation de groupes dynamiques, il est souvent utile de définir un sous-groupe qui <b>raffine son sur-groupe</b>, c-à-d qu'en le sélectionnant les entrées contenues dans les deux groupes sont affichées. Par exemple, cr& [...]
 <p>
-Le complément logique au groupe raffinant est un groupe qui <b>inclut ses sous-groupes</b>, c-é-d qu'en le sélectionnant, ce ne sont pas uniquement les propres entrées du groupe mais aussi les entrées de ses sous-groupes qui sont affichées. Dans l'arbre des groupes, ce type de groupe possède un icône spécial (cela peut-être annulé dans les préférences).
+Le complément logique au groupe raffinant est un groupe qui <b>inclut ses sous-groupes</b>, c-à-d qu'en le sélectionnant, ce ne sont pas uniquement les propres entrées du groupe mais aussi les entrées de ses sous-groupes qui sont affichées. Dans l'arbre des groupes, ce type de groupe possède un icône spécial (cela peut-être annulé dans les préférences).
 
 <h2>Afficher les entrées d'un groupe, combiner plusieurs groupes</H2>
 
@@ -113,7 +113,7 @@ Lors de l'affichage de contenu d'un ou plusieurs groupes, une recherche peut &ec
 
 <h2>Surligner les groupes se chevauchant</h2>
 
-Le bouton <b>Paramètres</b> offre une option de surlignement des groupes se chevauchant. Si elle est activée, lors de la sélection d'un ou plusieurs groupes, tous les groupes contenant au moins une des entrées appartenant au(x) groupe(s) sélectionné(s) sont surlignés. Cela identifie rapidement les chevauchements entre les contenus des groupes. Vous pourriez, par exemple, créer un groupe <tt>A lire</tt> qui contient toutes les entr&e [...]
+Le bouton <b>Paramètres</b> offre une option de surlignement des groupes se chevauchant. Si elle est activée, lors de la sélection d'un ou plusieurs groupes, tous les groupes contenant au moins une des entrées appartenant au(x) groupe(s) sélectionné(s) sont surlignés. Cela identifie rapidement les chevauchements entre les contenus des groupes. Vous pourriez, par exemple, créer un groupe <tt>A lire</tt> qui contient toutes les entr&e [...]
 
 <h2>Caractéristiques avancées</h2>
 
@@ -121,9 +121,9 @@ Une fois que vous maîtriserez les concepts de groupe décrits ci-des
 
 <h3>Création automatique de groupes dynamiques</h3>
 
-En cliquant sur le bouton <b>Créer automatiquement des groupes pour la base de données</b> (les trois "+" jaunes-orangés), vous pouvez facilement créer une série de groupes pertinents pour votre base de données. Ce dispositif collectera tous les mots trouvés dans le champ que vous aurez spécifié et créera un groupe pour chaque mot. C'est utile si, par exemple, votre base contient des mots-clefs pertinents for toutes le [...]
+En cliquant sur le bouton <b>Créer automatiquement des groupes pour la base de données</b> (les trois "+" jaunes-orangés), vous pouvez facilement créer une série de groupes pertinents pour votre base de données. Ce dispositif collectera tous les mots trouvés dans le champ que vous aurez spécifié et créera un groupe pour chaque mot. C'est utile si, par exemple, votre base contient des mots-clefs pertinents pour toutes l [...]
 <p>
-Vous pouvez aussi spécifiés des caractères à ignorer, par exemple les virgules utilisées entre les mots-clefs. Ils seront traités comme des séparateurs de mots et non comme en faisant partie. Cette étape est importante pour que les mots-clefs composés tels que <tt>distribution de Laplace</tt> soient reconnus comme une unique entité sémantique (vous ne pouvez pas utiliser cette option pour supprimer des mots comp [...]
+Vous pouvez aussi spécifier des caractères à ignorer, par exemple les virgules utilisées entre les mots-clefs. Ils seront traités comme des séparateurs de mots et non comme en faisant partie. Cette étape est importante pour que les mots-clefs composés tels que <tt>distribution de Laplace</tt> soient reconnus comme une unique entité sémantique (vous ne pouvez pas utiliser cette option pour supprimer des mots complets. P [...]
 
 <h3>Rafraîchir l'affichage des groupes</h3>
 
diff --git a/src/help/fr/HelpHelp.html b/src/help/fr/HelpHelp.html
index f29ab2a..f5973f6 100644
--- a/src/help/fr/HelpHelp.html
+++ b/src/help/fr/HelpHelp.html
@@ -22,8 +22,8 @@ de la barre d'outils vous affichera la liste des fichiers d'aide disponibles.
 De plus, la barre d'outils contient des boutons de navigation pour afficher
 les fichiers précédents et suivants. Ils sont similaires aux boutons
 <em>Précédent</em> et <em>Suivant</em> d'un navigateur internet standard.
-Les raccourcis clavier pour la navigation sont CTRL-SHIFT et la flèche gauche
-pour <em>Précédent</em>, CTRL-SHIFT et la flèche droite pour <em>Suivant</em>.
+Les raccourcis clavier pour la navigation sont la flèche gauche
+pour <em>Précédent</em> et la flèche droite pour <em>Suivant</em>.
 
 <P>
 La fenêtre d'aide se ferme en pressant ESCAPE.
diff --git a/src/help/fr/IEEEXploreHelp.html b/src/help/fr/IEEEXploreHelp.html
new file mode 100644
index 0000000..0085700
--- /dev/null
+++ b/src/help/fr/IEEEXploreHelp.html
@@ -0,0 +1,28 @@
+<HTML>
+
+<BODY text="#275856">
+<basefont size="4" color="#2F4958" face="arial">
+
+<H1>Recherche IEEEXplore</H1>
+
+JabRef peut télécharger des citations à partir de la base de données IEEEXplore.
+
+Pour utiliser cette fonction, sélectionner <b>Recherche internet -> Recherche IEEEXplore</b>
+fera apparaître l'interface de recherche dans le panneau latéral.
+<P>
+Pour lancer une recherche, entrez les mots de votre requête et appuyez sur
+
+<b>Entrée</b> ou sur le bouton <b>Rechercher</b>.
+
+<p>
+La recherche est effectuée en mode invité, ce qui signifie qu'au maximum 100 résultats
+vous seront retournés.
+
+<p>
+Vous pouvez choisir de télécharger les résumés avec les informations de citation pour chaque
+entrée en cochant la case <b>Inclure les résumés</b>. Comme cela entraîne une
+quantité importante de requêtes réseau, afin d'éviter une pression excessive 
+sur le site internet IEEExplore, Jabref refusera de télécharger les résumés
+pour les recherches retournant plus qu'un nombre donné de résultats.
+
+</HTML>
diff --git a/src/help/fr/ImportInspectionDialog.html b/src/help/fr/ImportInspectionDialog.html
index 5ed3343..9e4cabc 100644
--- a/src/help/fr/ImportInspectionDialog.html
+++ b/src/help/fr/ImportInspectionDialog.html
@@ -10,7 +10,7 @@ Quand vous importez de nouvelles entrées à partir d'un format de r
 </p>
 
 
-<P>La fenêtre de vérification vous permet de supprimer les entrées que vous ne voulez pas garder et d'effectuer des opérations simples telles que la générations des clefs BibTeX pour ces entrées ou leur ajout à des <a href="GroupsHelp.html">groupes</a>. Si vous les importez dans une base de données existante, il est souvent plus facile d'effectuer ces opérations avant que les nouvelles entrées soient insér [...]
+<P>La fenêtre de vérification vous permet de supprimer les entrées que vous ne voulez pas garder et d'effectuer des opérations simples telles que la générations des clefs BibTeX pour ces entrées ou leur ajout à des <a href="GroupsHelp.html">groupes</a> manuels. Si vous les importez dans une base de données existante, il est souvent plus facile d'effectuer ces opérations avant que les nouvelles entrées soient ins& [...]
 </p>
 
 
diff --git a/src/help/fr/JournalAbbreviations.html b/src/help/fr/JournalAbbreviations.html
index c061693..d25a30f 100644
--- a/src/help/fr/JournalAbbreviations.html
+++ b/src/help/fr/JournalAbbreviations.html
@@ -5,13 +5,13 @@
 
 <H1>Abréviations des journaux</H1>
 
-Cette fonction peut être configurée dans <b>Outils -> Gérer les abréviations de journaux</b>.
+Cette fonction peut être configurée dans <b>Options -> Gérer les abréviations de journaux</b>.
 
 <p>JabRef peut basculer automatiquement les noms de journaux entre leurs formes abrégées et non abrégées si les noms sont contenus dans une de vos listes de journaux. Vous pouvez utiliser plusieurs listes, chacune étant un fichier texte sauvé sur votre disque dur.
 
 <H2>Utiliser cette fonction</H2>
 <p>
-La conversion de noms de journaux peut être effectuée depuis l'éditeur d'entrées ou depuis le menu <b>Outils</b>. Dans l'éditeur d'entrées, vous trouverez un bouton nommé <i>Type d'abréviation</i> dans le champ <i>journal</i>.
+La conversion de noms de journaux peut être effectuée depuis l'éditeur d'entrées ou depuis le menu <b>Outils</b>. Dans l'éditeur d'entrées, vous trouverez un bouton nommé <i>Masquer/afficher l'abréviation</i> � droite du champ <i>journal</i>.
 Cliquer sur ce bouton changera le mode d'affichage du nom du journal. Trois modes sont possibles :
 <ul>
     <li>Nom complet, par exemple "Aquacultural Engineering"</li>
@@ -21,7 +21,7 @@ Cliquer sur ce bouton changera le mode d'affichage du nom du journal. Trois mode
 Si le nom du journal actuel n'est pas trouvé dans la liste des journaux, le champ ne sera pas modifié.
 
 <p>
-Pour convertir en une seule fois les noms de journaux de beaucoup d'entrées, vous pouvez sélectionner ces entrées et choisir <b>Outils -> Abréger les noms de journaux (ISO)</b>, <b>Outils -> Abréger les noms de journaux (MEDLINE)</b> ou <b>Outils -> Développer les noms des journaux</b>. Ces deux actions abrégeront ou développeront les noms de journaux pour toutes les entrées sélectionnées dont le nom de journal  [...]
+Pour convertir en une seule fois les noms de journaux de beaucoup d'entrées, vous pouvez sélectionner ces entrées et choisir <b>Outils -> Abréger les noms de journaux (ISO)</b>, <b>Outils -> Abréger les noms de journaux (MEDLINE)</b> ou <b>Outils -> Développer les noms des journaux</b>. Ces trois actions abrégeront ou développeront les noms de journaux pour toutes les entrées sélectionnées dont le nom de journal [...]
 
 <h2>Paramétrer vos listes de journaux</h2>
 
@@ -30,7 +30,7 @@ Vous pouvez avoir plusieurs listes de journaux, toutes sous la forme de fichiers
 <H3>Votre liste personnelle des abréviations de journaux</H3>
 
 Votre liste personnelle de journaux est gérée dans la partie supérieure de la fenêtre <b>Gérer les abréviations de journaux</b>.
-Pour commencer à construire votre liste d'abréviations de journaux, choisissez <i>Nouveau fichier</i>, et entrez manuellement le nom du fichier ou utilisez le bouton <i>Naviguer</i>. Si vous disposez déjà d'un fichier que vous souhaitez utiliser comme point de départ, choisissez <i>Fichier existant</i> et utilisez le bouton <i>Naviguer</i> pour choisir le fichier. La table sera mise à jour pour tenir compte du contenu de la liste sélection [...]
+Pour commencer à construire votre liste d'abréviations de journaux, choisissez <i>Nouveau fichier</i>, et entrez manuellement le nom du fichier ou utilisez le bouton <i>Explorer</i>. Si vous disposez déjà d'un fichier que vous souhaitez utiliser comme point de départ, choisissez <i>Fichier existant</i> et utilisez le bouton <i>Explorer</i> pour choisir le fichier. La table sera mise à jour pour tenir compte du contenu de la liste sélection [...]
 
 <p>La table et les boutons d'outils à sa droite vous permettent d'ajouter, de supprimer et d'éditer les entrées de journaux. Pour chaque entrée, vous devez fournir le nom complet du journal et son abréviation ISO (par exemple "Aquacultural Engineering" et "Aquacult. Eng."). Pour éditer une entrée, double-cliquez sur sa ligne dans la table.
 
@@ -40,9 +40,9 @@ Pour commencer à construire votre liste d'abréviations de journaux
 
 En plus de votre liste personnelle, vous pouvez relier plusieurs listes externes. Ces liens peuvent être paramétré dans la partie inférieure de la fenêtre <b>Gérer les abréviations de journaux</b>. Les listes externes sont similaires à la liste personnelle - la seule différence est que JabRef ne fournit pas d'interface pour éditer les listes externes.
 <p>
-Pour ajouter une nouvelle liste externe, cliquez sur le bouton <b>+</b>. Cela ajoutera une nouvelle entrée à l'interface. Ensuite, utilisez soit le bouton <i>Naviguer</i> soit le bouton  <i>Télécharger</i> situé à coté d'une des entrées de la partie inférieure de la fenêtre.
+Pour ajouter une nouvelle liste externe, cliquez sur le bouton <b>+</b>. Cela ajoutera une nouvelle entrée à l'interface. Ensuite, utilisez soit le bouton <i>Explorer</i> soit le bouton  <i>Télécharger</i> situé à coté d'une des entrées de la partie inférieure de la fenêtre.
     <ul>
-    <li>Le bouton <i>Naviguer</i> vous permet de sélectionner un fichier existant sur votre ordinateur.</li>
+    <li>Le bouton <i>Explorer</i> vous permet de sélectionner un fichier existant sur votre ordinateur.</li>
     <li>Le bouton <i>Télécharger</i> vous permet de télécharger une liste depuis l'internet en entrant une URL, de la stocker dans un fichier local sur votre ordinateur et de la lier comme une liste de journaux depuis JabRef. L'URL sera par défaut l'adresse de la liste de journaux disponible depuis la page web de JabRef. Cette liste est incomplète mais pourra être améliorée dans le futur.</li>
     </ul>
 
diff --git a/src/help/fr/MarkingHelp.html b/src/help/fr/MarkingHelp.html
index a857237..9b91765 100644
--- a/src/help/fr/MarkingHelp.html
+++ b/src/help/fr/MarkingHelp.html
@@ -6,11 +6,11 @@
 <H1>Etiqueter les entrées</H1>
 
 Vous avez la possibilité d'<em>étiqueter</em> des entrées. Les raccourcis
-claviers sont CTRL-M et CTRL-SHIFT-M pour, respectivement, étiqueter et
+claviers sont CTRL-M et CTRL-MAJ-M pour, respectivement, étiqueter et
 désétiqueter les entrées sélectionnées. Vous pouvez aussi accéder à ces actions
 en utilisant le menu <b>Edition</b>.
 
-<p>Noter qu'étiqueter des entrées n'est pas la même chose que les sélectionner.
+<p>Notez qu'étiqueter des entrées n'est pas la même chose que les sélectionner.
 Les entrées étiquetées se comportent différemment des autres, et ce de deux façons.
 Premièrement, elles sont toujours affichées avec un fond jaune dans le tableau
 des entrées. Deuxièmement, elles seront affichées en haut de la liste des entrées,
diff --git a/src/help/fr/MedlineHelp.html b/src/help/fr/MedlineHelp.html
index ac44a86..2704a50 100644
--- a/src/help/fr/MedlineHelp.html
+++ b/src/help/fr/MedlineHelp.html
@@ -7,7 +7,7 @@
 <h1>Récupération d'entrées depuis Medline</h1>
 
 <p>
-JabRef peut télécharger des citations depuis la base de données Medline. Pour réaliser cette opération, sélectionnez <b>Outils -> Recherche Medline</b> et vous verrez apparaître l'interface de Medline dans le panneau latéral.
+JabRef peut télécharger des citations depuis la base de données Medline. Pour réaliser cette opération, sélectionnez <b>Recherche internet -> Recherche Medline</b> et vous verrez apparaître l'interface de Medline dans le panneau latéral.
 </p>
 
 <p>
@@ -20,7 +20,7 @@ Il y a deux manières d'indiquer les entrées à tél&ea
 </ol>
 
 <p>
-Dans les deux cas, appuyez sur la touche <b>Enter</b> ou sur le bouton <b>Rechercher</b>. Si vous utilisez une recherche de texte, vous serez informé du nombre d'entrées trouvées et vous pourrez choisir le nombre d'entrées à télécharger.
+Dans les deux cas, appuyez sur la touche <b>Entrée</b> du clavier ou sur le bouton <b>Rechercher</b>. Si vous utilisez une recherche de texte, vous serez informé du nombre d'entrées trouvées et vous pourrez choisir le nombre d'entrées à télécharger.
 </p>
 
 <p>
diff --git a/src/help/fr/OpenOfficeHelp.html b/src/help/fr/OpenOfficeHelp.html
index ac78a75..2c1ab82 100644
--- a/src/help/fr/OpenOfficeHelp.html
+++ b/src/help/fr/OpenOfficeHelp.html
@@ -17,8 +17,8 @@ Suivez les étapes suivantes pour configurer une feuille de calcul export&
     <li>Exporter votre base en utilisant le format <b>.ods</b></li>
     <li>Démarrer OpenOffice.org Writer</li>
     <li>Choisir <b>Outils -> Options -> OpenOffice.org Base -> Base de données</b></li>
-    <li>�diter la base de données <i>Bibliography</i>, et lui donner un autre nom, tel que
-          <i>Bibliography-old</i></li>
+    <li>�diter la base de données <i>Bibliography</i>, et lui donner un autre nom, tel
+    que <i>Bibliography-old</i> (en effet OpenOffice.org Writer ne permet pas de choisir entre plusieurs bibliographies)</li>
     <li>Fermer la fenêtre <b>Options</b> et choisir <b>Fichier -> Nouveau -> Base de données</b></li>
     <li>Choisir <b>Se connecter à une base de données existante</b>, sélectionner <b>Classeur</b> comme type de base de données, cliquer sur <b>Suivant</b> et choisir le fichier <b>.ods</b> que vous avez exporté.</li>
     <li>Cliquer sur <b>Terminer</b>, puis choisir le nom <i>Bibliographie</i> quand demandé.</li>
diff --git a/src/help/fr/SearchHelp.html b/src/help/fr/SearchHelp.html
index f16e31d..9d6c065 100644
--- a/src/help/fr/SearchHelp.html
+++ b/src/help/fr/SearchHelp.html
@@ -8,14 +8,14 @@
 Il y a trois modes différents de recherche dans JabRef.
 
 <p>
-<em>CTRL-F</em> ouvre ou active l'interface de recherche. Appuyer 
+<em>CTRL-F</em> ouvre ou active l'interface de recherche. Appuyer
 sur <em>CTRL-F</em> plusieurs fois modifie le mode de recherche.
 En recherche incrémentale, <em>CTRL-F</em> affiche
 l'occurrence suivante de la chaîne à rechercher.
 <p>
-<em>CTRL-SHIFT-F</em> ouvre ou active l'interface de recherche, et
+<em>CTRL-MAJ-F</em> ouvre ou active l'interface de recherche, et
 sélectionne la recherche incrémentale. En recherche incrémentale, appuyer
-sur  <em>CTRL-SHIFT-F</em> affiche aussi l'occurrence suivante de la chaîne
+sur  <em>CTRL-MAJ-F</em> affiche aussi l'occurrence suivante de la chaîne
 à rechercher.
 
 
@@ -23,23 +23,23 @@ sur  <em>CTRL-SHIFT-F</em> affiche aussi l'occurrence suivante de la chaîn
 
 En recherche incrémentale, le programme effectue une recherche chaque
 fois qu'une lettre est tapée. La ligne de statut vous informe
-du résultat de cette recherche. Entrez le raccourci clavier
+du résultat de cette recherche. Entrer le raccourci clavier
 de la recherche affiche l'occurrence suivante de la chaîne à rechercher.
 Si aucune autre occurrence ne peut être trouvée, la ligne de statut vous
-en informe. Répétez alors la recherche fera redémarrer la recherche
+en informe. Répéter alors la recherche fera redémarrer la recherche
 au début. L'ordre de recherche se fait toujours selon l'ordre de tri
 actuel de votre base de données. Pour quitter la recherche incrémentale,
 appuyez sur ESC ou cliquez sur "Vider".
 
 <H2>Recherche normale</H2>
 
-Dans une recherche normale, le programme recherche dans votre base les occurrences de votre chaîne de recherche, après que vous ayez appuyé sur Entrée. Toutes les entrées qui ne correspondent pas sont masquées, ne laissant apparaître que les entrées correspondant aux critères. Pour ne plus afficher les résultats de la recherche, appuyez sur ESC ou cliquer sur "Vider".
+Dans une recherche normale, le programme recherche dans votre base les occurrences de votre chaîne de recherche, après que vous ayez appuyé sur Entrée. Toutes les entrées qui ne correspondent pas sont masquées, ne laissant alors apparaître que les entrées correspondant aux critères (mode filtre), ou sont gris�es (mode flottante). Pour ne plus afficher les résultats de la recherche, appuyer sur ESC ou cliquer sur "Vider".
 
 <a name="advanced"><H2>Spécification des champs, opérateurs logiques</H2>
 
 Afin de rechercher uniquement des champs spécifiques et/ou
 d'inclure des opérateurs logiques dans l'expression à rechercher,
-une syntaxe particulière est disponible. Par exemple, pour 
+une syntaxe particulière est disponible. Par exemple, pour
 rechercher les entrées dont l'auteur est "Miller", entrez (excepté
 en mode de recherche incrémentale) :
 <p>
@@ -63,7 +63,7 @@ de la façon habituelle :
 En fait, le signe "=" signifie "contient". La recherche d'une correspondance exacte
 est possible en utilisant "matches" ou "==". Utilisez "!=" pour tester si le terme à
 rechercher n'est <i>pas</i> contenu dans le champ (un équivalent de "not ...
-contains ..."). 
+contains ...").
 
 Si vous spécifiez un type de champ dans l'expression à rechercher, la sélection des types de champs (requis, optionels, généraux)
 apparaissant dans les paramètres de recherche n'est pas prise en compte.
@@ -84,4 +84,4 @@ Le bouton <em>Paramètres</em> ouvre un menu qui permet de basculer en mod
 
 
 </BODY>
-</HTML> 
+</HTML>
diff --git a/src/help/fr/ShortAuxImport.html b/src/help/fr/ShortAuxImport.html
new file mode 100644
index 0000000..4ee9e87
--- /dev/null
+++ b/src/help/fr/ShortAuxImport.html
@@ -0,0 +1,7 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//FR">
+<html><head></head>
+
+<body>
+<basefont size="-1" color="#2F4958" face="arial">
+Cette fonction g�n�re une nouvelle base de donn�es qui contient uniquement les r�f�rences utilis�es dans un projet TeX existant.
+</body></html> 
\ No newline at end of file
diff --git a/src/help/fr/StringEditorHelp.html b/src/help/fr/StringEditorHelp.html
index bd1d74a..a2d9726 100644
--- a/src/help/fr/StringEditorHelp.html
+++ b/src/help/fr/StringEditorHelp.html
@@ -14,7 +14,7 @@ unique et un <em>contenu</em>. Dans votre base de données, ce nom peut &e
 utilisé pour représenter ce contenu.
 
 <P>
-Par exemple, si beaucoup d'entrées sont d'un journal dont l'abréviation
+Par exemple, si beaucoup d'entrées appartiennent � un journal dont l'abréviation
 est difficile à mémoriser, tel que 'J. Theor. Biol.' (Journal of
 Theroretical Biology), une chaîne nommée JTB peut être définie pour
 représenter le nom de ce journal. Au lieu de taper le nom exact du journal
diff --git a/src/help/fr/TimeStampHelp.html b/src/help/fr/TimeStampHelp.html
index d92ebbe..82ca093 100644
--- a/src/help/fr/TimeStampHelp.html
+++ b/src/help/fr/TimeStampHelp.html
@@ -5,7 +5,7 @@
 
 <H1>Horodatage des entrées</H1>
 
-Cette fonction peut être activée et configurée sous <b>Préférences -> Général</b>.
+Cette fonction peut être activée et configurée sous <b>Options -> Préférences -> Général</b>.
 
 <p>JabRef peut automatiquement insérer un champ qui contient la date à laquelle
 une entrée a été ajoutée à la base de données.
@@ -14,26 +14,26 @@ une entrée a été ajoutée à la base de donn&ea
 <H2>Mise en forme</H2>
 
 Le format d'horodatage est déterminé par une chaîne contenant des codes qui indiquent
-la position des différentes parties de la date. 
-  	 <p>
-  	 Voici certains des codes disponibles (exemples donnés entre parenthèses pour le 
-  	 mercredi 14 septembre 2005 à 17h45) :
-  	 <ul>
-  	     <li><b>yy</b>: année (05)</li>
-  	     <li><b>yyyy</b>: année (2005)</li>
-  	     <li><b>MM</b>: mois (09)</li>
-  	     <li><b>dd</b>: jour du mois (14)</li>
-  	     <li><b>HH</b>: heure du jour (17)</li>
-  	     <li><b>mm</b>: minute de l'heure (45)</li>
-  	 </ul>
-  	 
-  	 Ces codes peuvent être combinés avec des ponctuations et des espaces. Quelques exemples :
-  	 
-  	 <ul>
-  	 <li><b>yyyy.MM.dd</b> donne <b>2005.09.14</b></li>
-  	 <li><b>yy.MM.dd</b> donne <b>05.09.14</b></li>
-  	 <li><b>yyyy.MM.dd HH:mm</b> donne <b>2005.09.14 17:45</b></li>
-  	 </ul>
+la position des différentes parties de la date.
+     <p>
+     Voici certains des codes disponibles (exemples donnés entre parenthèses pour le
+     mercredi 14 septembre 2005 à 17h45) :
+     <ul>
+         <li><b>yy</b>: année (05)</li>
+         <li><b>yyyy</b>: année (2005)</li>
+         <li><b>MM</b>: mois (09)</li>
+         <li><b>dd</b>: jour du mois (14)</li>
+         <li><b>HH</b>: heure du jour (17)</li>
+         <li><b>mm</b>: minute de l'heure (45)</li>
+     </ul>
+
+     Ces codes peuvent être combinés avec des ponctuations et des espaces. Quelques exemples :
+
+     <ul>
+     <li><b>yyyy.MM.dd</b> donne <b>2005.09.14</b></li>
+     <li><b>yy.MM.dd</b> donne <b>05.09.14</b></li>
+     <li><b>yyyy.MM.dd HH:mm</b> donne <b>2005.09.14 17:45</b></li>
+     </ul>
 
 
 </BODY>
diff --git a/src/images/splash-2.1.svg b/src/images/splash-2.1.svg
new file mode 100644
index 0000000..bf20ab2
--- /dev/null
+++ b/src/images/splash-2.1.svg
@@ -0,0 +1,244 @@
+<?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://inkscape.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/src/images"
+   inkscape:version="0.42+0.43pre1"
+   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="750"
+     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.1b/src/images/splash-2.1beta.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-2.1b/src/images/splash-2.1beta.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/jabref/jabref-2.0-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-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.1b/src/images/splash-2.1beta.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.1b/src/images/splash-2.1beta.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.1b/src/images/splash-2.1beta.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>
+    <text
+       xml:space="preserve"
+       style="font-size:68.76833344px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;opacity:0.66853937;fill:#cf5953;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Nimbus Sans L"
+       x="288.67255"
+       y="712.21191"
+       id="text1343"
+       sodipodi:linespacing="125%"
+       transform="matrix(0.950669,-0.326025,0.330198,0.938651,0.000000,0.000000)"
+       inkscape:export-filename="/home/alver/jabref-2.1b/src/images/splash-2.1beta.png"
+       inkscape:export-xdpi="75"
+       inkscape:export-ydpi="75"><tspan
+         sodipodi:role="line"
+         id="tspan1345"
+         x="288.67255"
+         y="712.21191">beta</tspan></text>
+  </g>
+</svg>
diff --git a/src/java/net/sf/jabref/AppearancePrefsTab.java b/src/java/net/sf/jabref/AppearancePrefsTab.java
index 926e01a..2b4d4eb 100644
--- a/src/java/net/sf/jabref/AppearancePrefsTab.java
+++ b/src/java/net/sf/jabref/AppearancePrefsTab.java
@@ -47,11 +47,11 @@ class AppearancePrefsTab extends JPanel implements PrefsTab {
         JLabel lab;
         builder.appendSeparator(Globals.lang("General"));
         JPanel p1 = new JPanel();
-        //lab = new JLabel(Globals.lang("Menu and label font size") + ":");
-        //p1.add(lab);
-        //p1.add(fontSize);
-        //builder.append(p1);
-        //builder.nextLine();
+        lab = new JLabel(Globals.lang("Menu and label font size") + ":");
+        p1.add(lab);
+        p1.add(fontSize);
+        builder.append(p1);
+        builder.nextLine();
         builder.append(antialias);
         builder.nextLine();
         builder.appendSeparator(Globals.lang("Table appearance"));
diff --git a/src/java/net/sf/jabref/BasePanel.java b/src/java/net/sf/jabref/BasePanel.java
index 8ce08fe..bebddea 100644
--- a/src/java/net/sf/jabref/BasePanel.java
+++ b/src/java/net/sf/jabref/BasePanel.java
@@ -387,7 +387,7 @@ public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListe
         actions.put("saveAs", new BaseAction () {
                 public void action() throws Throwable {
 
-                  String chosenFile = Globals.getNewFile(frame, Globals.prefs, new File(Globals.prefs.get("workingDirectory")), ".bib",
+                  String chosenFile = Globals.getNewFile(frame, new File(Globals.prefs.get("workingDirectory")), ".bib",
                                                          JFileChooser.SAVE_DIALOG, false);
 
                   if (chosenFile != null) {
@@ -419,7 +419,7 @@ public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListe
         actions.put("saveSelectedAs", new BaseAction () {
                 public void action() throws Throwable {
 
-                  String chosenFile = Globals.getNewFile(frame, Globals.prefs, new File(Globals.prefs.get("workingDirectory")), ".bib",
+                  String chosenFile = Globals.getNewFile(frame, new File(Globals.prefs.get("workingDirectory")), ".bib",
                                                          JFileChooser.SAVE_DIALOG, false);
                   if (chosenFile != null) {
                     File expFile = new File(chosenFile);
@@ -927,57 +927,7 @@ public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListe
                 }
             });
 
-          actions.put("mergeDatabase", new BaseAction() {
-            public void action() {
-
-                final MergeDialog md = new MergeDialog(frame, Globals.lang("Append database"), true);
-                Util.placeDialog(md, BasePanel.this);
-                md.setVisible(true);
-                if (md.okPressed) {
-                  String chosenFile = Globals.getNewFile(frame, Globals.prefs, new File(Globals.prefs.get("workingDirectory")),
-                                                         null, JFileChooser.OPEN_DIALOG, false);
-                  /*JFileChooser chooser = (Globals.prefs.get("workingDirectory") == null) ?
-                      new JabRefFileChooser((File)null) :
-                      new JabRefFileChooser(new File(Globals.prefs.get("workingDirectory")));
-                  chooser.addChoosableFileFilter( new OpenFileFilter() );//nb nov2
-                  int returnVal = chooser.showOpenDialog(BasePanel.this);*/
-                  if(chosenFile == null)
-                    return;
-                  fileToOpen = new File(chosenFile);
-
-                    // Run the actual open in a thread to prevent the program
-                    // locking until the file is loaded.
-                    (new Thread() {
-                        public void run() {
-                            openIt(md.importEntries(), md.importStrings(),
-                                    md.importGroups(), md.importSelectorWords());
-                        }
-                    }).start();
-                    frame.getFileHistory().newFile(fileToOpen.getPath());
-                }
-
-              }
-
-              void openIt(boolean importEntries, boolean importStrings,
-                          boolean importGroups, boolean importSelectorWords) {
-                if ((fileToOpen != null) && (fileToOpen.exists())) {
-                  try {
-                    Globals.prefs.put("workingDirectory", fileToOpen.getPath());
-                    // Should this be done _after_ we know it was successfully opened?
-                    String encoding = Globals.prefs.get("defaultEncoding");
-                    ParserResult pr = OpenDatabaseAction.loadDatabase(fileToOpen, encoding);
-                    mergeFromBibtex(pr, importEntries, importStrings, importGroups, importSelectorWords);
-                    output(Globals.lang("Imported from database")+" '"+fileToOpen.getPath()+"'");
-                    fileToOpen = null;
-                  } catch (Throwable ex) {
-                    ex.printStackTrace();
-                    JOptionPane.showMessageDialog
-                        (BasePanel.this, ex.getMessage(),
-                         "Open database", JOptionPane.ERROR_MESSAGE);
-                  }
-                }
-              }
-            });
+          actions.put("mergeDatabase", new AppendDatabaseAction(frame, this));
 
          actions.put("openFile", new BaseAction() {
            public void action() {
@@ -1555,100 +1505,6 @@ public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListe
         }
     }
 
-        public void mergeFromBibtex(ParserResult pr,
-                                    boolean importEntries, boolean importStrings,
-                                    boolean importGroups, boolean importSelectorWords)
-                throws KeyCollisionException {
-
-            BibtexDatabase fromDatabase = pr.getDatabase();
-            ArrayList appendedEntries = new ArrayList();
-            ArrayList originalEntries = new ArrayList();
-            BibtexEntry originalEntry;
-            NamedCompound ce = new NamedCompound(Globals.lang("Append database"));
-            MetaData meta = new MetaData(pr.getMetaData(), pr.getDatabase());
-
-            if (importEntries) { // Add entries
-                Iterator i = fromDatabase.getKeySet().iterator();
-                while (i.hasNext()) {
-                    originalEntry = fromDatabase.getEntryById((String) i.next());
-                    BibtexEntry be = (BibtexEntry) (originalEntry.clone());
-                    be.setId(Util.createNeutralId());
-                    database.insertEntry(be);
-                    appendedEntries.add(be);
-                    originalEntries.add(originalEntry);
-                    ce.addEdit(new UndoableInsertEntry(database, be, this));
-                }
-            }
-
-            if (importStrings) {
-                BibtexString bs;
-                int pos = 0;
-                Iterator i = fromDatabase.getStringKeySet().iterator();
-                for (; i.hasNext();) {
-                    bs = (BibtexString) (fromDatabase.getString(i.next()).clone());
-                    if (!database.hasStringLabel(bs.getName())) {
-                        //pos = toDatabase.getStringCount();
-                        database.addString(bs);
-                        ce.addEdit(new UndoableInsertString(this, database, bs));
-                    }
-                }
-            }
-
-            if (importGroups) {
-                GroupTreeNode newGroups = meta.getGroups();
-                if (newGroups != null) {
-
-                    // ensure that there is always only one AllEntriesGroup
-                    if (newGroups.getGroup() instanceof AllEntriesGroup) {
-                        // create a dummy group
-                        ExplicitGroup group = new ExplicitGroup("Imported",
-                                AbstractGroup.INDEPENDENT); // JZTODO lyrics
-                        newGroups.setGroup(group);
-                        for (int i = 0; i < appendedEntries.size(); ++i)
-                            group.addEntry((BibtexEntry) appendedEntries.get(i));
-                    }
-
-                    // groupsSelector is always created, even when no groups
-                    // have been defined. therefore, no check for null is
-                    // required here
-                    frame.groupSelector.addGroups(newGroups, ce);
-                    // for explicit groups, the entries copied to the mother fromDatabase have to
-                    // be "reassigned", i.e. the old reference is removed and the reference
-                    // to the new fromDatabase is added.
-                    GroupTreeNode node;
-                    ExplicitGroup group;
-                    BibtexEntry entry;
-                    for (Enumeration e = newGroups.preorderEnumeration(); e.hasMoreElements();) {
-                        node = (GroupTreeNode) e.nextElement();
-                        if (!(node.getGroup() instanceof ExplicitGroup))
-                            continue;
-                        group = (ExplicitGroup) node.getGroup();
-                        for (int i = 0; i < originalEntries.size(); ++i) {
-                            entry = (BibtexEntry) originalEntries.get(i);
-                            if (group.contains(entry)) {
-                                group.removeEntry(entry);
-                                group.addEntry((BibtexEntry) appendedEntries.get(i));
-                            }
-                        }
-                    }
-                    frame.groupSelector.revalidateGroups();
-                }
-            }
-
-            if (importSelectorWords) {
-                Iterator i = meta.iterator();
-                while (i.hasNext()) {
-                    String s = (String) i.next();
-                    if (s.startsWith(Globals.SELECTOR_META_PREFIX)) {
-                        metaData().putData(s, meta.getData(s));
-                    }
-                }
-            }
-
-            ce.end();
-            undoManager.addEdit(ce);
-            markBaseChanged();
-        }
 
 
     /**
@@ -2542,4 +2398,5 @@ public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListe
     public GroupSelector getGroupSelector() {
         return frame.groupSelector;
     }
+
 }
diff --git a/src/java/net/sf/jabref/BibtexEntryType.java b/src/java/net/sf/jabref/BibtexEntryType.java
index a9facc0..4ad27d5 100644
--- a/src/java/net/sf/jabref/BibtexEntryType.java
+++ b/src/java/net/sf/jabref/BibtexEntryType.java
@@ -155,7 +155,7 @@ public abstract class BibtexEntryType implements Comparable
             {
                 return new String[]
                 {
-                    "volume", "number", "series", "type", "address", "edition",
+                    "volume", "number", "pages", "series", "type", "address", "edition",
 		    "month", "note"
                 };
             }
@@ -200,7 +200,7 @@ public abstract class BibtexEntryType implements Comparable
             {
                 return new String[]
                 {
-                    "volume", "number", "series", "address", "edition", "month",
+                    "volume", "number", "pages", "series", "address", "edition", "month",
                     "note"
                 };
             }
diff --git a/src/java/net/sf/jabref/BrowseAction.java b/src/java/net/sf/jabref/BrowseAction.java
index 24c36ad..b62b17b 100644
--- a/src/java/net/sf/jabref/BrowseAction.java
+++ b/src/java/net/sf/jabref/BrowseAction.java
@@ -25,10 +25,10 @@ public class BrowseAction extends AbstractAction implements ActionListener {
     public void actionPerformed(ActionEvent e) {
         String chosen = null;
         if (dir)
-            chosen = Globals.getNewDir(frame, Globals.prefs, new File(comp.getText()), Globals.NONE,
+            chosen = Globals.getNewDir(frame, new File(comp.getText()), Globals.NONE,
                     JFileChooser.OPEN_DIALOG, false);
         else
-            chosen = Globals.getNewFile(frame, Globals.prefs, new File(comp.getText()), Globals.NONE,
+            chosen = Globals.getNewFile(frame, new File(comp.getText()), Globals.NONE,
                     JFileChooser.OPEN_DIALOG, false);
         if (chosen != null) {
             File newFile = new File(chosen);
diff --git a/src/java/net/sf/jabref/EntryComparator.java b/src/java/net/sf/jabref/EntryComparator.java
index b363528..62e379f 100644
--- a/src/java/net/sf/jabref/EntryComparator.java
+++ b/src/java/net/sf/jabref/EntryComparator.java
@@ -94,18 +94,20 @@ public class EntryComparator implements Comparator {
     // sorted according to last name.
     if (sortField.equals("author") || sortField.equals("editor")) {
         if (f1 != null)
-        f1 = AuthorList.fixAuthorForAlphabetization((String)f1);
+        f1 = AuthorList.fixAuthorForAlphabetization((String)f1).toLowerCase();
                 //ImportFormatReader.fixAuthor_lastNameFirst((String)f1);
         if (f2 != null)
-        f2 = AuthorList.fixAuthorForAlphabetization((String)f2);
+        f2 = AuthorList.fixAuthorForAlphabetization((String)f2).toLowerCase();
                 //ImportFormatReader.fixAuthor_lastNameFirst((String)f2);
+
     } else if (sortField.equals(GUIGlobals.TYPE_HEADER)) {
           // Sort by type.
           f1 = e1.getType().getName();
           f2 = e2.getType().getName();
         }
 
-	if ((f1 == null) && (f2 == null)) return (next != null ? next.compare(o1, o2) : idCompare(e1, e2));
+
+    if ((f1 == null) && (f2 == null)) return (next != null ? next.compare(o1, o2) : idCompare(e1, e2));
 	if ((f1 != null) && (f2 == null)) return -1;
 	if ((f1 == null) && (f2 != null)) return 1;
 
@@ -122,9 +124,10 @@ public class EntryComparator implements Comparator {
 		Integer f2AsInteger = new Integer(f2.toString());
 		result = -(((Integer) f1).compareTo(f2AsInteger));
 	} else {
-		String ours = ((String) f1).toLowerCase(),
+        String ours = ((String) f1).toLowerCase(),
 	    	theirs = ((String) f2).toLowerCase();
-		int comp = ours.compareTo(theirs);
+        System.out.println(ours);
+        int comp = ours.compareTo(theirs);
 		result = -comp;
 	}
 	if (result != 0)
diff --git a/src/java/net/sf/jabref/EntryCustomizationDialog.java b/src/java/net/sf/jabref/EntryCustomizationDialog.java
index 98af0ec..5b7aabb 100644
--- a/src/java/net/sf/jabref/EntryCustomizationDialog.java
+++ b/src/java/net/sf/jabref/EntryCustomizationDialog.java
@@ -295,7 +295,7 @@ class EntryCustomizationDialog extends JDialog implements ItemListener
 	exportTypes.addActionListener(new ActionListener() {
 		public void actionPerformed(ActionEvent e) {
 		    String filename = Globals.getNewFile
-			(parent, Globals.prefs, new File(System.getProperty("user.home")), 
+			(parent, new File(System.getProperty("user.home")),
 			 ".txt", JFileChooser.SAVE_DIALOG, false);
 		    if (filename == null) 
 			return;
@@ -330,7 +330,7 @@ class EntryCustomizationDialog extends JDialog implements ItemListener
 	importTypes.addActionListener(new ActionListener() {
 		public void actionPerformed(ActionEvent e) {
 		    String filename = Globals.getNewFile
-			(parent, Globals.prefs, new File(System.getProperty("user.home")), 
+			(parent, new File(System.getProperty("user.home")),
 			 ".txt", JFileChooser.OPEN_DIALOG, false);
 		    if (filename == null) 
 			return;
diff --git a/src/java/net/sf/jabref/EntryEditor.java b/src/java/net/sf/jabref/EntryEditor.java
index fef7f07..0857133 100644
--- a/src/java/net/sf/jabref/EntryEditor.java
+++ b/src/java/net/sf/jabref/EntryEditor.java
@@ -45,8 +45,6 @@ import net.sf.jabref.labelPattern.LabelPatternUtil;
 import net.sf.jabref.undo.*;
 import net.sf.jabref.external.ExternalFilePanel;
 import net.sf.jabref.journals.JournalAbbreviations;
-import com.michaelbaranov.microba.calendar.*;
-import com.michaelbaranov.microba.common.*;
 import net.sf.jabref.gui.date.*;
 
 public class EntryEditor extends JPanel implements VetoableChangeListener {
@@ -382,7 +380,7 @@ public class EntryEditor extends JPanel implements VetoableChangeListener {
               dir = prefs.get(fieldName + Globals.FILETYPE_PREFS_EXT, "");
 
             String chosenFile =
-              Globals.getNewFile(frame, prefs, new File(dir), "." + fieldName,
+              Globals.getNewFile(frame, new File(dir), "." + fieldName,
                 JFileChooser.OPEN_DIALOG, false);
 
             if (chosenFile != null) {
@@ -986,26 +984,22 @@ public class EntryEditor extends JPanel implements VetoableChangeListener {
     }
 
     public void actionPerformed(ActionEvent e) {
-        //Util.pr("EntryEditor.StoreFieldAction: "+entry.getCiteKey());
-        //Util.pr("..EntryEditor.StoreFieldAction: "+this.toString());
 
       if (e.getSource() instanceof FieldTextArea) {
         String toSet = null;
         FieldEditor fe = (FieldEditor) e.getSource();
         boolean set;
-          //Util.pr("....EntryEditor.StoreFieldAction: "+fe.getFieldName());
-        //Util.pr("...."+fe.getText()+"....");
         // Trim the whitespace off this value
         fe.setText(fe.getText().trim());
 
         if (fe.getText().length() > 0) {
           toSet = fe.getText();
-
-          // We check if the field has changed, since we don't want to
-          // mark the
-          // base as changed unless we have a real change.
         }
 
+
+        // We check if the field has changed, since we don't want to
+        // mark the
+        // base as changed unless we have a real change.
         if (toSet == null) {
           if (entry.getField(fe.getFieldName()) == null)
             set = false;
@@ -1049,6 +1043,15 @@ public class EntryEditor extends JPanel implements VetoableChangeListener {
                 oldValue, toSet));
             updateSource();
             panel.markBaseChanged();
+
+              // TODO: is this a safe solution to keep selection on entry?
+              SwingUtilities.invokeLater(new Runnable() {
+                  public void run() {
+                      panel.highlightEntry(entry);
+                  }
+              });
+
+
           } catch (IllegalArgumentException ex) {
             JOptionPane.showMessageDialog(frame, "Error: " + ex.getMessage(),
               Globals.lang("Error setting field"), JOptionPane.ERROR_MESSAGE);
diff --git a/src/java/net/sf/jabref/EntryTable.java b/src/java/net/sf/jabref/EntryTable.java
deleted file mode 100644
index 38c49a6..0000000
--- a/src/java/net/sf/jabref/EntryTable.java
+++ /dev/null
@@ -1,842 +0,0 @@
-/*
-Copyright (C) 2003 Nizar N. Batada, Morten O. Alver
-
-All programs in this directory and
-subdirectories are published under the GNU General Public License as
-described below.
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at
-your option) any later version.
-
-This program is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
-USA
-
-Further information about the GNU GPL is available at:
-http://www.gnu.org/copyleft/gpl.ja.html
-
-*/
-
-package net.sf.jabref;
-
-import java.awt.*;
-import java.awt.event.*;
-import java.io.IOException;
-import java.util.Set;
-import java.util.HashSet;
-
-import javax.swing.*;
-import javax.swing.border.Border;
-import javax.swing.event.*;
-import javax.swing.plaf.basic.BasicTableUI;
-import javax.swing.table.*;
-
-public class EntryTable extends JTable {
-
-    final int PREFERRED_WIDTH = 400, PREFERRED_HEIGHT = 30;
-
-    // We use a subclassed JScrollPane with setBorder() overridden as
-    // a no-op. This is done to avoid the JTable setting its border,
-    // which it does whether we want it or not. And we don't. :)
-    JScrollPane sp = new JScrollPane((JTable)this) {
-            public void setBorder(Border b) {}
-        };
-
-    JPopupMenu rightClickMenu = null;
-    EntryTableModel tableModel;
-    JabRefPreferences prefs;
-    protected boolean showingSearchResults = false,
-        showingGroup = false;
-    private boolean antialiasing = Globals.prefs.getBoolean("antialias"),
-        ctrlClick = false,
-        selectionListenerOn = true,
-        tableColorCodes = true;
-    //RenderingHints renderingHints;
-    private BasePanel panel;
-    Set lastSelection = new HashSet();
-
-    private ListSelectionListener previewListener = null;
-    private int activeRow = -1;
-
-    ListSelectionListener groupsHighlightListener;
-
-    public EntryTable(EntryTableModel tm_, BasePanel panel_, JabRefPreferences prefs_) {
-        super(tm_);
-        this.tableModel = tm_;
-        setBorder(null);
-        panel = panel_;
-        // Add the global focus listener, so a menu item can see if this table was focused when
-        // an action was called.
-        addFocusListener(Globals.focusListener);
-
-        // enable DnD
-        setDragEnabled(true);
-        // The following line is commented because EntryTableTransferHandler's
-    // constructor now only accepts MainTable which has replaced EntryTable.
-    // setTransferHandler(new EntryTableTransferHandler(this));
-
-  //renderingHints = g2.getRenderingHints();
-         //renderingHints.put(RenderingHints.KEY_ANTIALIASING,
-        //		   RenderingHints.VALUE_ANTIALIAS_ON);
-        //renderingHints.put(RenderingHints.KEY_RENDERING,
-        //		   RenderingHints.VALUE_RENDER_QUALITY);
-        prefs = prefs_;
-        //antialiasing =
-        //System.out.println(antialiasing);
-        ctrlClick = prefs.getBoolean("ctrlClick");
-        tableColorCodes = prefs.getBoolean("tableColorCodesOn");
-        getTableHeader().setReorderingAllowed(false); // To prevent color bugs. Must be fixed.
-        setGridColor(Globals.prefs.getColor("gridColor"));
-        setShowVerticalLines(true);
-        setShowHorizontalLines(true);
-        //setColumnSelectionAllowed(true);
-        setColumnSelectionAllowed(false);
-        setRowSelectionAllowed(true);
-        setAutoResizeMode(prefs.getInt("autoResizeMode"));
-        DefaultCellEditor dce = new DefaultCellEditor(new JTextField());
-        dce.setClickCountToStart(2);
-        setDefaultEditor(String.class, dce);
-        getTableHeader().addMouseListener(new MouseAdapter() {
-          public void mouseClicked(MouseEvent e)
-          {
-            int col = getTableHeader().columnAtPoint(e.getPoint());
-            if (col >= 1) { //tableModel.padleft) { // A valid column, but not the first.
-              String s = tableModel.getFieldName(col);
-              /*
-               * If the user adjusts the header size the sort event is
-               * always triggered.
-               * To avoid this behaviour we check if the mouse is
-               * inside the label's bounds and has a certain distance (offset)
-               * to the label border.
-               *
-               * Sascha Hunold <hunoldinho at users.sourceforge.net>
-               */
-
-              Point p = e.getPoint();
-              int colindex = getTableHeader().columnAtPoint(p);
-              if( colindex >= 0 ) {
-                  final int initoffset = 3;
-                  int xoffset = initoffset;
-                  for (int i = 0; i < colindex; i++) {
-                      xoffset += getColumnModel().getColumn(i).getWidth();
-                  }
-                  TableColumn column = getColumnModel().getColumn(col);
-                  int cw = column.getWidth();
-                  int ch = getTableHeader().getHeight();
-
-                  Rectangle r = new Rectangle();
-
-                  r.setBounds(xoffset, 0/*offset*/, cw-2*initoffset, ch/*-2*offset*/);
-
-                  if (!r.contains(p)) {
-                      return;
-                  }
-              }
-
-              if (!s.equals(prefs.get("priSort"))) {
-                prefs.put("priSort", s);
-                  // Now, if the selected column is an icon column, set the sort to binary mode,
-                  // meaning that it only separates set fields from empty fields, and does no
-                  // internal sorting of set fields:
-                  if (tableModel.getIconTypeForColumn(col) == null)
-                      prefs.putBoolean("priBinary", false);
-                  else
-                      prefs.putBoolean("priBinary", true);
-              }
-                // ... or change sort direction
-              else prefs.putBoolean("priDescending",
-                                    !prefs.getBoolean("priDescending"));
-              tableModel.remap();
-
-            }
-          }
-        });
-
-        addMouseListener(new TableClickListener()); // Add the listener that responds to clicks on the table.
-
-        // Trying this to get better handling of the row selection stuff.
-        setSelectionModel(new javax.swing.DefaultListSelectionModel() {
-          public void setSelectionInterval(int index0, int index1) {
-            // Prompt user here
-            //Util.pr("Selection model: "+panel.entryEditorAllowsChange());
-            if (panel.entryEditorAllowsChange() == false) {
-              panel.moveFocusToEntryEditor();
-              return;
-            }
-            super.setSelectionInterval(index0, index1);
-          }
-        });
-
-        addSelectionListener(); // Add the listener that responds to new entry selection.
-
-        groupsHighlightListener = new ListSelectionListener() {
-            public void valueChanged(ListSelectionEvent e) {
-                /*
-                if (Globals.prefs.getBoolean("highlightGroupsMatchingAny"))
-                    panel.getGroupSelector().showMatchingGroups(
-                            panel.getSelectedEntries(), false);
-                else if (Globals.prefs.getBoolean("highlightGroupsMatchingAll"))
-                    panel.getGroupSelector().showMatchingGroups(
-                            panel.getSelectedEntries(), true);
-                else // no highlight
-                    panel.getGroupSelector().showMatchingGroups(null, true);
-                    */
-            }
-        };
-        getSelectionModel().addListSelectionListener(groupsHighlightListener);
-
-        // (to update entry editor or preview)
-        setWidths();
-        sp.getViewport().setBackground(Globals.prefs.getColor("tableBackground"));
-        updateFont();
-      }
-
-    /**
-     * Get the row number for the row that is active, in the sense that the preview or
-     * entry editor should show the corresponding entry.
-     * @return The active row number, or -1 if no row is active.
-     */
-    public int getActiveRow() {
-        return activeRow;
-    }
-
-
-    /**
-     * Get the active entry, in the sense that the preview or entry editor should
-     * show it.
-     * @return The active entry, or null if no row is active.
-     */
-
-    public BibtexEntry getActiveEntry() {
-        //System.out.println("EntryTable.getActiveEntry: "+activeRow);
-        return ((activeRow >= 0) && (activeRow < getRowCount())) ? tableModel.getEntryForRow(activeRow) : null;
-    }
-
-
-    /**
-     * Updates our Set containing the last row selection. Ckecks which rows were ADDED
-     * to the selection, to see what new entry should be previewed.
-     *
-     * This method may have some potential for optimization.
-     *
-     * @param rows
-     * @return The number of the row that should be considered active, or -1 if none.
-     */
-    private int resolveNewSelection(int[] rows) {
-        HashSet newSel = new HashSet();
-        for (int i=0; i<rows.length; i++) {
-            Integer row = new Integer(rows[i]);
-            newSel.add(row);
-        }
-        // Store a clone of this Set:
-        HashSet tmp = new HashSet(newSel);
-        newSel.removeAll(lastSelection);
-        // Set the new selection as the last:
-        lastSelection = tmp;
-        // We return an appropriate row number if a single additional entry was selected:
-        int result = -1;
-        if (newSel.size()==1)
-            result = ((Integer)newSel.iterator().next()).intValue();
-
-        // .. or if the current selection is only one entry:
-        if ((result<0) && (rows.length == 1))
-            result = rows[0];
-        return result;
-    }
-
-      /**
-       * A ListSelectionListener for updating the preview panel when the user selects an
-       * entry. Should only be active when preview is enabled.
-       */
-      public void addSelectionListener() {
-        if (previewListener == null)
-          previewListener = new ListSelectionListener() {
-            public void valueChanged(final ListSelectionEvent e) {
-              if (!selectionListenerOn) return;
-              if (!e.getValueIsAdjusting()) {
-                  // We must use invokeLater() to postpone the updating. This is because of
-                  // the situation where an EntryEditor has changes in one of the FieldEditors
-                  // that need to be stored. This storage is initiated by a focusLost() call,
-                  // and results in a call to refreshTable() in BasePanel, which messes
-                  // with the table selection. After that chain has finished, the selection
-                  // will have been reset correctly, so we make sure everything is ok by
-                  // putting the updating based on table selection behind it in the event queue.
-                  SwingUtilities.invokeLater(new Thread() {
-                          public void run() {
-                              // If a single new row was selected, set it as the active row:
-                              activeRow = resolveNewSelection(getSelectedRows());
-
-                              if (getSelectedRowCount() == 1) {
-                                  //int row = getSelectedRow(); //e.getFirstIndex();
-                                  //if (row >= 0) {
-                                      // Update the value for which entry is shown:
-                                    //  activeRow = row;
-
-                                    //panel.updateViewToSelected();
-                                    // guarantee that the the entry is visible
-                                    ensureVisible(activeRow);
-
-                              } else {
-                                  /* With a multiple selection, there are three alternative behaviours:
-                                     1. Disable the entry editor. Do not update it.
-                                     2. Do not disable the entry editor, and do not update it.
-                                     3. Update the entry editor, and keep it enabled.
-
-                                     We currently implement 1 and 2, and choose between them based on
-                                     prefs.getBoolean("disableOnMultipleSelection");
-                                  */
-                                  if (prefs.getBoolean("disableOnMultipleSelection")) { // 1.
-                                      panel.setEntryEditorEnabled(false);
-                                  }
-                                  // We want the entry preview to update when the user expands the
-                                  // selection one entry at a time:
-                                  //if ((e.getLastIndex()-e.getFirstIndex()) <= 1) {
-                                  //if (activeRow >= 0)
-                                    //panel.updateViewToSelected();
-                                  //}
-                                  // 2. Do nothing.
-                              }
-
-                              if (Globals.prefs.getBoolean("highlightGroupsMatchingAny"))
-                                panel.getGroupSelector().showMatchingGroups(
-                                    panel.getSelectedEntries(), false);
-                            else if (Globals.prefs.getBoolean("highlightGroupsMatchingAll"))
-                                panel.getGroupSelector().showMatchingGroups(
-                                    panel.getSelectedEntries(), true);
-                            else // no highlight
-                                panel.getGroupSelector().showMatchingGroups(null, true);
-                          }
-                      });
-              }
-            }
-              };
-        getSelectionModel().addListSelectionListener(previewListener);
-      }
-
-      /**
-       * Remove the preview listener.
-       */
-      public void disablePreviewListener() {
-        getSelectionModel().removeListSelectionListener(previewListener);
-      }
-
-      /**
-       * This method overrides the superclass' to disable the selection listener while the
-       * row selection is adjusted.
-       */
-      public void setRowSelectionInterval(int row1, int row2) {
-        boolean oldState = selectionListenerOn;
-        selectionListenerOn = false;
-        // Introducing a try-catch here to maybe track down the preview update bug
-        // that occurs sometimes (20050405 M. Alver):
-        try {
-            super.setRowSelectionInterval(row1, row2);
-            activeRow = resolveNewSelection(getSelectedRows());
-            selectionListenerOn = oldState;
-        } catch (IllegalArgumentException ex) {
-            ex.printStackTrace();
-            System.out.println("Error occured. Trying to recover...");
-            // Maybe try to remap the entry table:
-            tableModel.remap();
-            clearSelection();
-            selectionListenerOn = oldState;
-        }
-      }
-
-      public void addRowSelectionIntervalQuietly(int row1, int row2) {
-          boolean oldState = selectionListenerOn;
-          selectionListenerOn = false;
-          //if (row2 < getModel().getRowCount()) {
-          try {
-            super.addRowSelectionInterval(row1, row2);
-            selectionListenerOn = oldState;
-          } catch (IllegalArgumentException ex) {
-              ex.printStackTrace();
-              System.out.println("Error occured. Trying to recover...");
-            // Maybe try to remap the entry table:
-            tableModel.remap();
-            clearSelection();
-              selectionListenerOn = oldState;
-          }
-
-      }
-
-    /*public boolean surrendersFocusOnKeystroke() {
-        return true;
-        }*/
-
-      /**
-       * This method overrides the superclass' to disable the selection listener while the
-       * selection is cleared.
-       */
-      public void clearSelection() {
-        boolean oldState = selectionListenerOn;
-        selectionListenerOn = false;
-        super.clearSelection();
-        selectionListenerOn = oldState;
-      }
-
-      /**
-       * Enables or disables the selectionlistener. Useful if the selection needs to be
-       * updated in several steps, without the table responding between each.
-       * @param enabled boolean
-       */
-      public void setSelectionListenerEnabled(boolean enabled) {
-        selectionListenerOn = enabled;
-      }
-
-      /**
-       * Turns off any cell editing going on.
-       */
-      protected void assureNotEditing() {
-        if (isEditing()) {
-          int col = getEditingColumn(),
-              row = getEditingRow();
-          getCellEditor(row, col).stopCellEditing();
-        }
-      }
-
-
-    public void setWidths() {
-        // Setting column widths:
-        int ncWidth = prefs.getInt("numberColWidth");
-        String[] widths = prefs.getStringArray("columnWidths");
-        TableColumnModel cm = getColumnModel();
-        cm.getColumn(0).setPreferredWidth(ncWidth);
-        for (int i=1; i<tableModel.padleft; i++) {
-          // Lock the width of icon columns.
-          cm.getColumn(i).setPreferredWidth(GUIGlobals.WIDTH_ICON_COL);
-          cm.getColumn(i).setMinWidth(GUIGlobals.WIDTH_ICON_COL);
-          cm.getColumn(i).setMaxWidth(GUIGlobals.WIDTH_ICON_COL);
-        }
-        for (int i=tableModel.padleft; i<getModel().getColumnCount(); i++) {
-            try {
-                cm.getColumn(i).setPreferredWidth(Integer.parseInt(widths[i-tableModel.padleft]));
-            } catch (Throwable ex) {
-                Globals.logger("Exception while setting column widths. Choosing default.");
-                cm.getColumn(i).setPreferredWidth(GUIGlobals.DEFAULT_FIELD_LENGTH);
-            }
-            //cm.getColumn(i).setPreferredWidth(GUIGlobals.getPreferredFieldLength(getModel().getColumnName(i)));
-        }
-    }
-
-    public JScrollPane getPane() {
-                return sp;
-    }
-
-    /*public void setShowingSearchResults(boolean search,
-                                        boolean group) {
-        showingSearchResults = search;
-        showingGroup = group;
-    }
-*/
-    public void setRightClickMenu(JPopupMenu rcm) {
-        rightClickMenu = rcm;
-    }
-
-  /**
-   * This class handles clicks on the EntryTable that should trigger specific
-   * events, like opening an entry editor, the context menu or a pdf file.
-   */
-  class TableClickListener extends MouseAdapter {
-      public void mouseReleased(MouseEvent e) {
-          // First find the column on which the user has clicked.
-          final int col = columnAtPoint(e.getPoint()),
-              row = rowAtPoint(e.getPoint());
-          // Check if the user has right-clicked. If so, open the right-click menu.
-          if (e.isPopupTrigger()) {
-            processPopupTrigger(e, row, col);
-            return;
-          }
-      }
-      protected void processPopupTrigger(MouseEvent e, int row, int col) {
-          int selRow = getSelectedRow();
-          if (selRow == -1 ||// (getSelectedRowCount() == 0))
-                  !isRowSelected(rowAtPoint(e.getPoint()))) {
-            setRowSelectionInterval(row, row);
-            //panel.updateViewToSelected();
-          }
-          rightClickMenu = new RightClickMenu(panel, panel.metaData);
-          rightClickMenu.show(EntryTable.this, e.getX(), e.getY());
-      }
-      public void mousePressed(MouseEvent e) {
-
-        // First find the column on which the user has clicked.
-        final int col = columnAtPoint(e.getPoint()),
-            row = rowAtPoint(e.getPoint());
-
-
-        // A double click on an entry should open the entry's editor.
-        if (/*(col == 0)*/!isCellEditable(row, col) && (e.getClickCount() == 2)) {
-          try{ panel.runCommand("edit");
-              return;
-              /*showEntry(be);
-
-                    if (splitPane.getBottomComponent() != null) {
-                        new FocusRequester(splitPane.getBottomComponent());
-                    }                                                      */
-          } catch (Throwable ex) {
-            ex.printStackTrace();
-          }
-        }
-
-        // Check if the user has right-clicked. If so, open the right-click menu.
-        if (e.isPopupTrigger()) {
-          processPopupTrigger(e, row, col);
-          return;
-        }
-
-        // Check if the user has clicked on an icon cell to open url or pdf.
-        if (tableModel.getCellStatus(0, col) == EntryTableModel.ICON_COL) {
-
-          // Get the row number also:
-          Object value = getValueAt(row, col);
-          if (value == null) return; // No icon here, so we do nothing.
-          /*Util.pr("eouaeou");
-          JButton button = (JButton)value;
-
-          MouseEvent buttonEvent =
-              (MouseEvent)SwingUtilities.convertMouseEvent(ths, e, button);
-          button.dispatchEvent(buttonEvent);
-          // This is necessary so that when a button is pressed and released
-          // it gets rendered properly.  Otherwise, the button may still appear
-          // pressed down when it has been released.
-          ths.repaint();
-
-          */
-
-
-
-          // Get the icon type. Corresponds to the field name.
-          final String[] iconType = tableModel.getIconTypeForColumn(col);
-          int hasField = -1;
-          for (int i=iconType.length-1; i>= 0; i--)
-            if (tableModel.hasField(row, iconType[i]))
-              hasField = i;
-          if (hasField == -1)
-            return;
-          final String fieldName = iconType[hasField];
-
-          // Open it now. We do this in a thread, so the program won't freeze during the wait.
-          (new Thread() {
-            public void run() {
-              panel.output(Globals.lang("External viewer called") + ".");
-              BibtexEntry be = panel.database().getEntryById(tableModel.
-                      getIdForRow(row));
-              if (be == null) {
-                Globals.logger("Error: could not find entry.");
-                return;
-              }
-
-              Object link = be.getField(fieldName);
-              if (iconType == null) {
-                Globals.logger("Error: no link to " + fieldName + ".");
-                return; // There is an icon, but the field is not set.
-              }
-
-              try {
-                Util.openExternalViewer(panel.metaData, (String) link, fieldName);
-              }
-              catch (IOException ex) {
-                panel.output(Globals.lang("Error")+": "+ex.getMessage());
-              }
-            }
-
-          }).start();
-        }
-      }
-    }
-
-    public TableCellRenderer getCellRenderer(int row, int column) {
-
-        // This method asks the table model whether the given cell represents a
-        // required or optional field, and returns the appropriate renderer.
-        int score = -3;
-        TableCellRenderer renderer;
-
-        int status;
-        try { // This try clause is here to contain a bug.
-          status = tableModel.getCellStatus(row, column);
-        } catch (ArrayIndexOutOfBoundsException ex) {
-            Globals.logger("Error happened in getCellRenderer method of EntryTable, for cell ("+row+","+column+").");
-            return defRenderer; // This should not occur.
-        }
-
-
-        if (!panel.coloringBySearchResults ||
-            tableModel.nonZeroField(row, BibtexFields.SEARCH))
-            score++;
-        if (!panel.coloringByGroup ||
-            tableModel.nonZeroField(row, BibtexFields.GROUPSEARCH))
-            score+=2;
-
-        // Now, a grayed out renderer is for entries with -1, and
-        // a very grayed out one for entries with -2
-        if (score < -1)
-            renderer = veryGrayedOutRenderer;
-        else if (score == -1)
-            renderer = grayedOutRenderer;
-
-        else if (!tableColorCodes)
-            renderer = defRenderer;
-        else if (column == 0) {
-            // Return a renderer with red background if the entry is incomplete.
-            renderer = defRenderer;
-            if (tableModel.isComplete(row))
-                renderer = defRenderer;
-            else {
-              //if (tableModel.hasCrossRef(row))
-              //  renderer = maybeIncRenderer;
-              //else
-              renderer = incRenderer;//incompleteEntryRenderer;
-            }
-
-            //return (tableModel.isComplete(row) ? defRenderer: incRenderer);
-        }
-        else if (status == EntryTableModel.REQUIRED)
-            renderer = reqRenderer;
-        else if (status == EntryTableModel.OPTIONAL)
-            renderer = optRenderer;
-        else if (status == EntryTableModel.BOOLEAN)
-          renderer = getDefaultRenderer(Boolean.class);
-        else renderer = defRenderer;
-        //Util.pr("("+row+","+column+"). "+status+" "+renderer.toString());
-
-        // For MARKED feature:
-        if (tableModel.isMarked(row) && (renderer != incRenderer)) {
-          return markedRenderer;
-        }
-
-        return renderer;
-
-        /*
-        int test = row - 4*(row/4);
-        if (test <= 1)
-            return renderer;
-        else {
-            return renderer.darker();
-            }*/
-    }
-
-    public void scrollTo(int y) {
-        JScrollBar scb = sp.getVerticalScrollBar();
-        scb.setValue(y*scb.getUnitIncrement(1));
-    }
-
-    public BibtexEntry[] getSelectedEntries() {
-        BibtexEntry[] bes = null;
-        int[] rows = getSelectedRows();
-        //int[] cols = getSelectedColumns();
-
-        // Entries are selected if only the first or multiple
-        // columns are selected.
-        //if (((cols.length == 1) && (cols[0] == 0)) ||
-        //(cols.length > 1)) { // entryTable.getColumnCount())) {
-        if (rows.length > 0) {
-            bes = new BibtexEntry[rows.length];
-            for (int i=0; i<rows.length; i++) {
-                bes[i] = tableModel.db.getEntryById(tableModel.getIdForRow(rows[i]));
-            }
-        }
-        return bes;
-    }
-
-
-    // The following classes define the renderers used to render required
-    // and optional fields in the table. The purpose of these renderers is
-    // to visualize which fields are needed for each entry.
-   private GeneralRenderer defRenderer = new GeneralRenderer(Globals.prefs.getColor("tableBackground"),
-            Globals.prefs.getColor("tableText"), antialiasing),
-        reqRenderer = new GeneralRenderer(Globals.prefs.getColor("tableReqFieldBackground"), Globals.prefs.getColor("tableText"), antialiasing),
-        optRenderer = new GeneralRenderer(Globals.prefs.getColor("tableOptFieldBackground"), Globals.prefs.getColor("tableText"), antialiasing),
-        incRenderer = new IncompleteRenderer(this, antialiasing),
-            //new Renderer(GUIGlobals.tableIncompleteEntryBackground),
-            //Globals.lang("This entry is incomplete")),
-        grayedOutRenderer = new GeneralRenderer(Globals.prefs.getColor("grayedOutBackground"),
-                                         Globals.prefs.getColor("grayedOutText"), antialiasing),
-        veryGrayedOutRenderer = new GeneralRenderer(Globals.prefs.getColor("veryGrayedOutBackground"),
-                                             Globals.prefs.getColor("veryGrayedOutText"), antialiasing),
-        markedRenderer = new GeneralRenderer(Globals.prefs.getColor("markedEntryBackground"),
-                Globals.prefs.getColor("tableText"), antialiasing);
-
-    class IncompleteRenderer extends GeneralRenderer {
-        public IncompleteRenderer(JTable table, boolean antialiasing) {
-            super(Globals.prefs.getColor("incompleteEntryBackground"), antialiasing);
-        }
-        protected void setValue(Object value) {
-            super.setValue(value);
-            super.setToolTipText(Globals.lang("This entry is incomplete"));
-        }
-    }
-
-    /* public TableCellRenderer iconRenderer = new IconCellRenderer();
-        //new JTableButtonRenderer(getDefaultRenderer(JButton.class));
-    class IconCellRenderer extends DefaultTableCellRenderer {
-        protected void setValue(Object value) {
-            if (value instanceof Icon) {
-                setIcon((Icon)value);
-                super.setValue(null);
-            } else {
-                setIcon(null);
-                super.setValue(value);
-            }
-        }
-    }
-
-
-   class JTableButtonRenderer implements TableCellRenderer {
-      private TableCellRenderer __defaultRenderer;
-
-      public JTableButtonRenderer(TableCellRenderer renderer) {
-        __defaultRenderer = renderer;
-      }
-
-      public Component getTableCellRendererComponent(JTable table, Object value,
-                                                     boolean isSelected,
-                                                     boolean hasFocus,
-                                                     int row, int column)
-      {
-        if(value instanceof Component)
-          return (Component)value;
-        return __defaultRenderer.getTableCellRendererComponent(
-      table, value, isSelected, hasFocus, row, column);
-      }
-    }*/
-
-
-    public void ensureVisible(int row) {
-        JScrollBar vert = sp.getVerticalScrollBar();
-        int y = row*getRowHeight();
-        if ((y < vert.getValue()) || (y > vert.getValue()+vert.getVisibleAmount()))
-            scrollToCenter(row, 1);
-    }
-
-        public void scrollToCenter( int rowIndex, int vColIndex) {
-        if (!(this.getParent() instanceof JViewport)) {
-            return;
-        }
-
-        JViewport viewport = (JViewport)this.getParent();
-
-        // This rectangle is relative to the table where the
-        // northwest corner of cell (0,0) is always (0,0).
-        Rectangle rect = this.getCellRect(rowIndex, vColIndex, true);
-
-        // The location of the view relative to the table
-        Rectangle viewRect = viewport.getViewRect();
-
-         // Translate the cell location so that it is relative
-        // to the view, assuming the northwest corner of the
-        // view is (0,0).
-        rect.setLocation(rect.x-viewRect.x, rect.y-viewRect.y);
-
-        // Calculate location of rect if it were at the center of view
-        int centerX = (viewRect.width-rect.width)/2;
-        int centerY = (viewRect.height-rect.height)/2;
-
-        // Fake the location of the cell so that scrollRectToVisible
-        // will move the cell to the center
-        if (rect.x < centerX) {
-            centerX = -centerX;
-        }
-        if (rect.y < centerY) {
-            centerY = -centerY;
-        }
-        rect.translate(centerX, centerY);
-
-        // Scroll the area into view.
-        viewport.scrollRectToVisible(rect);
-
-        revalidate();
-        repaint();
-    }
-
-  /**
-   * updateFont
-   */
-  public void updateFont() {
-      setFont(GUIGlobals.CURRENTFONT);
-      setRowHeight(GUIGlobals.TABLE_ROW_PADDING+GUIGlobals.CURRENTFONT.getSize());
-  }
-
-  public void updateUI() {
-      super.updateUI();
-      setUI(new CustomTableUI());
-  }
-
-
-
-  class CustomTableUI extends BasicTableUI {
-    public void installUI(JComponent c) {
-      super.installUI(c);
-      c.remove(rendererPane);
-      rendererPane = new CustomCellRendererPane();
-      c.add(rendererPane);
-    }
-
-    /**
-     * Overrides paintComponent to NOT clone the Graphics
-     * passed in and NOT validate the Component passed in.
-     * This is done for performance reasons.
-     */
-    private class CustomCellRendererPane extends CellRendererPane {
-        private Rectangle tmpRect = new Rectangle();
-
-        public void repaint() {
-        }
-
-        public void repaint(int x, int y, int width, int height) {
-        }
-
-        public void paintComponent(Graphics g, Component c, Container p,
-                                   int x, int y, int w, int h,
-                                   boolean shouldValidate) {
-          if (c == null) {
-            if (p != null) {
-              Color oldColor = g.getColor();
-              g.setColor(p.getBackground());
-              g.fillRect(x, y, w, h);
-              g.setColor(oldColor);
-            }
-            return;
-          }
-          if (c.getParent() != this) {
-            this.add(c);
-          }
-
-          c.setBounds(x, y, w, h);
-
-          boolean wasDoubleBuffered = false;
-          JComponent jc = (c instanceof JComponent) ? (JComponent)c : null;
-          if (jc != null && jc.isDoubleBuffered()) {
-            wasDoubleBuffered = true;
-            jc.setDoubleBuffered(false);
-          }
-
-          // Don't create a new Graphics, reset the clip and translate
-          // the origin.
-          Rectangle clip = g.getClipBounds(tmpRect);
-          g.clipRect(x, y, w, h);
-          g.translate(x, y);
-          c.paint(g);
-          g.translate(-x, -y);
-          g.setClip(clip.x, clip.y, clip.width, clip.height);
-          if (wasDoubleBuffered) {
-            jc.setDoubleBuffered(true);
-          }
-          c.setBounds(-w, -h, 0, 0);
-        }
-      }
-
-    }
-
-}
-
diff --git a/src/java/net/sf/jabref/EntryTableModel.java b/src/java/net/sf/jabref/EntryTableModel.java
deleted file mode 100644
index bd7263a..0000000
--- a/src/java/net/sf/jabref/EntryTableModel.java
+++ /dev/null
@@ -1,592 +0,0 @@
-/*
- Copyright (C) 2003 Nizar N. Batada, Morten O. Alver
-
- All programs in this directory and
- subdirectories are published under the GNU General Public License as
- described below.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or (at
- your option) any later version.
-
- This program is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- USA
-
- Further information about the GNU GPL is available at:
- http://www.gnu.org/copyleft/gpl.ja.html
-
- */
-
-package net.sf.jabref;
-
-import javax.swing.*;
-import javax.swing.table.*;
-import net.sf.jabref.export.LatexFieldFormatter;
-import java.util.*;
-
-public class EntryTableModel
-    extends AbstractTableModel {
-
-  BibtexDatabase db;
-  BasePanel panel;
-  JabRefFrame frame;
-  String[] columns; // Contains the current column names.
-  private EntrySorter sorter;
-  private int visibleRows = 0;
-
-
-  // Testing something:
-  Object[][] allCache = null;
-
-  //private Object[] entryIDs; // Temporary
-
-  // Constants used to define how a cell should be rendered.
-  public static final int REQUIRED = 1, OPTIONAL = 2,
-      REQ_STRING = 1,
-      REQ_NUMBER = 2,
-      OPT_STRING = 3,
-      OTHER = 3,
-      BOOLEAN = 4,
-      //PDF_COL = 1, // The column displaying icons for linked pdfs.
-      ICON_COL = 8; // Constant to indicate that an icon cell renderer should be used.
-  public static final String[]
-      PDF = {"pdf", "ps"},
-      URL_ = {"url", "doi"},
-        CITESEER = {"citeseerurl"};
-
-  public int padleft = -1; // padleft indicates how many columns (starting from left) are
-  // special columns (number column or icon column).
-  private HashMap iconCols = new HashMap();
-  int[] nameCols = null;
-  boolean showShort, namesNatbib, namesLastOnly;                               //MK:
-  boolean namesAsIs, namesFf, namesLf, abbr_names;              //MK:
-
-    //ImageIcon pdfIcon = new ImageIcon(GUIGlobals.pdfSmallIcon);
-
-  public EntryTableModel(JabRefFrame frame_,
-                         BasePanel panel_,
-                         BibtexDatabase db_) {
-    panel = panel_;
-    frame = frame_;
-    db = db_;
-
-    columns = Globals.prefs
-        .getStringArray("columnNames"); // This must be done again if the column
-    // preferences get changed.
-
-    remap();
-  }
-
-  /* This is the old getColumnName().
-   * This function now returns the field name
-   * with the original lower/upper case of the field name */
-  public String getFieldName(int col) {
-    if (col == 0) {
-      return GUIGlobals.NUMBER_COL;
-    }
-    else if (getIconTypeForColumn(col) != null) {
-      return getIconTypeForColumn(col)[0];
-    }
-    return columns[col - padleft];
-  }
-
-  public String getColumnName(int col) {
-      if (col == 0) {
-      return GUIGlobals.NUMBER_COL;
-    }
-    else if (getIconTypeForColumn(col) != null) {
-      return "";
-    }
-    else // try to find an alternative fieldname (for display)
-    {
-       String disName = BibtexFields.getFieldDisplayName(columns[col - padleft]) ;
-       if ( disName != null)
-       {
-         return disName ;
-       }
-    }
-    return Util.nCase(columns[col - padleft]);
-  }
-
-  public void showAllEntries() {
-    visibleRows = sorter.getEntryCount();
-    }
-
-  public void setRowCount(int rows) {
-    visibleRows = rows;
-    }
-
-  public int getRowCount() {
-    //Util.pr("rc "+sorter.getEntryCount());
-    //return sorter.getEntryCount();
-      return visibleRows;
-    //entryIDs.length;  // Temporary?
-  }
-
-  public int getColumnCount() {
-    return padleft + columns.length;
-  }
-
-  public Class getColumnClass(int column) {
-
-    //return (getIconTypeForColumn(column) != null ? Icon.class : String.class);
-      if (column == 0)
-      return Boolean.class;
-      else
-      return (getIconTypeForColumn(column) != null ? JLabel.class : String.class);
-  }
-
-  public Object getValueAt_(int row, int col) {
-      return allCache[row][col];
-  }
-
-  public void updateAllCache() {
-      /*long start = System.currentTimeMillis();
-      int rows = getRowCount();
-      int cols = getColumnCount();
-      allCache = new Object[rows][cols];
-      for (int row=0; row<rows; row++)
-          for (int col=0; col<cols; col++)
-              allCache[row][col] = getValueAt_old(row, col);
-      Globals.logger("Time spent: "+(System.currentTimeMillis()-start));*/
-  }
-
-  public Object getValueAt(int row, int col) {
-    // Return the field named frame.prefs.columnNames[col] from the Entry
-    // corresponding to the row.
-    Object o;
-    BibtexEntry be = sorter.getEntryAt(row);
-    String[] iconType = getIconTypeForColumn(col); // If non-null, indicates an icon column's type.
-    if (col == 0) {
-        o = "" + (row + 1);
-    }
-/*      if (!isComplete(row)) {
-              //JLabel incomplete = new JLabel("" + (row + 1),GUIGlobals.incompleteLabel.getIcon(), JLabel.RIGHT);
-        //JLabel incomplete = new JLabel("" + (row + 1));
-        //incomplete.setToolTipText(Globals.lang("This entry is incomplete"));
-        //return incomplete;
-      } else
-*/
-
-    else if (iconType != null) {
-      int hasField = -1;
-      for (int i=iconType.length-1; i>= 0; i--)
-        if (hasField(row, iconType[i]))
-          hasField = i;
-      if (hasField < 0)
-        return null;
-
-      // Ok, so we are going to display an icon. Find out which one, and return it:
-      return GUIGlobals.getTableIcon(iconType[hasField]);
-    }
-    //  if (col == 1)
-    //  o = be.getType().getName();
-    //else {
-    else if (columns[col - padleft].equals(GUIGlobals.TYPE_HEADER)) {
-      o = be.getType().getName();
-    }
-    //else if (columns[col-PADLEFT].equals(GUIGlobals.NUMBER_COL)) {
-    //  o = ""+(row+1);
-    //}
-    else {
-
-    //MK:vvv
-    o = null; if (showShort) o = be.getField("short"+columns[col-padleft]);   //MK:vvv
-       if (o==null) {
-         o = be.getField(columns[col - padleft]);
-         for (int i = 0; i < nameCols.length; i++) {
-           if (col - padleft == nameCols[i]) {
-             if (o == null) { return null; }
-             if (namesAsIs) return o;
-             if (namesNatbib) o = AuthorList.fixAuthor_Natbib((String)o);
-             else if (namesLastOnly) o = AuthorList.fixAuthor_lastNameOnlyCommas((String)o);
-             else if (namesFf) o = AuthorList.fixAuthor_firstNameFirstCommas((String) o, abbr_names);
-             else if (namesLf) o = AuthorList.fixAuthor_lastNameFirstCommas((String) o, abbr_names);
-
-             return o;
- //            if (!namesAsIs) {
- //              if (namesFf) {
- //                return ImportFormatReader.fixAuthor_firstNameFirst( (String) o);
- //              }
- //              else {
- //                return ImportFormatReader.fixAuthor_lastNameFirst( (String)o);
- //              }
- //            }
-  //MK:^^^
-          }
-     }
-       }
-    }
-    /*if (o != null) {
-        String processed = Globals.getCached((String)o);
-        if (processed == null) {
-            StringBuffer sb = new StringBuffer("");//"<html>");
-            sb.append((String)o);
-            //sb.append("</html>");
-            processed = sb.toString();
-            Globals.cache((String)o, processed);
-            o = processed;
-        } else
-            o = processed;
-
-
-    }*/
-    return o;
-  }
-
-  /**
-   * This method returns a string array indicating the types of icons to be displayed in the given column.
-   * It returns null if the column is not an icon column, and thereby also serves to identify icon
-   * columns.
-   */
-  public String[] getIconTypeForColumn(int col) {
-    Object o = iconCols.get(new Integer(col));
-    if (o != null)
-      return (String[])o;
-    else
-      return null;
-  }
-
-  public int getCellStatus(int row, int col) {
-    //if ((col == 0)  || (col == 1)) return OTHER;
-    if (col == 0) {
-      return BOOLEAN;
-    }
-    if (getIconTypeForColumn(col) != null) {
-      return ICON_COL;
-    }
-
-    BibtexEntryType type = (db.getEntryById(getIdForRow(row)))
-        .getType();
-    if (columns[col - padleft].equals(BibtexFields.KEY_FIELD)
-        || type.isRequired(columns[col - padleft])) {
-      return REQUIRED;
-    }
-    if (type.isOptional(columns[col - padleft])) {
-      return OPTIONAL;
-    }
-    return OTHER;
-  }
-
-  public boolean isComplete(int row) {
-    BibtexEntry be = db.getEntryById(getIdForRow(row));
-    return (be != null ? be.hasAllRequiredFields() : false);
-  }
-
-  public boolean hasCrossRef(int row) {
-    BibtexEntry be = db.getEntryById(getIdForRow(row));
-    return (be.getField("crossref") != null);
-  }
-
-  public boolean nonZeroField(int row, String field) {
-    // Returns true iff the entry has a nonzero value in its
-    // 'search' field.
-    BibtexEntry be = db.getEntryById(getIdForRow(row));
-    if (be == null)
-        return false; // TODO: JZ: I think this should never happen, but it does
-    String o = (String) (be.getField(field));
-    return ( (o != null) && !o.equals("0"));
-  }
-
-  public boolean hasField(int row, String field) {
-    // Returns true iff the entry has a nonzero value in its
-    // 'search' field.
-    BibtexEntry be = db.getEntryById(getIdForRow(row));
-    return ((be != null) && (be.getField(field) != null));
-  }
-
-  private void updateSorter() {
-
-    // Set the icon columns, indicating the number of special columns to the left.
-    // We add those that are enabled in preferences.
-    iconCols.clear();
-    int coln = 1;
-    if (Globals.prefs.getBoolean("pdfColumn"))
-      iconCols.put(new Integer(coln++), PDF);
-    if (Globals.prefs.getBoolean("urlColumn"))
-      iconCols.put(new Integer(coln++), URL_);
-    if (Globals.prefs.getBoolean("citeseerColumn"))
-        iconCols.put(new Integer(coln++), CITESEER);
-
-    // Add 1 to the number of icon columns to get padleft.
-    padleft = 1+iconCols.size();
-
-    // Set up the int[] nameCols, to mark which columns should be
-    // treated as lists of names. This is to provide a correct presentation
-    // of names as efficiently as possible.
-    Vector tmp = new Vector(2, 1);
-    for (int i = 0; i < columns.length; i++) {
-      if (columns[i].equals("author")
-          || columns[i].equals("editor")) {
-        tmp.add(new Integer(i));
-      }
-    }
-    nameCols = new int[tmp.size()];
-    for (int i = 0; i < nameCols.length; i++) {
-      nameCols[i] = ( (Integer) tmp.elementAt(i)).intValue();
-    }
-    showShort = Globals.prefs.getBoolean("showShort");        //MK:
-    namesNatbib = Globals.prefs.getBoolean("namesNatbib");    //MK:
-    namesLastOnly = Globals.prefs.getBoolean("namesLastOnly");
-
-    namesAsIs = Globals.prefs.getBoolean("namesAsIs");
-    abbr_names = Globals.prefs.getBoolean("abbrAuthorNames"); //MK:
-    namesFf = Globals.prefs.getBoolean("namesFf");
-    namesLf = !(namesAsIs || namesFf || namesNatbib || namesLastOnly); // None of the above.
-        //namesLastOnly = Globals.prefs.getBoolean("namesLastOnly");
-    // Build a vector of prioritized search objectives,
-    // then pick the 3 first.
-    List fields = new ArrayList(6),
-        directions = new ArrayList(6),
-        binary = new ArrayList(6); // Signifies whether the sort criterion should only separate on/off or
-                                    // also sort within set field values.
-
-    // For testing MARKED feature. With this IF clause, the marked entries will only float to the top when
-    // no sorting/grouping reordering is active.
-    if  (!panel.sortingBySearchResults && !panel.sortingByCiteSeerResults && !panel.sortingByGroup) {
-        fields.add(BibtexFields.MARKED);
-        directions.add(Boolean.TRUE);
-        binary.add(Boolean.FALSE);
-    }
-    if (panel.sortingByGroup) {
-      // Group search has the highest priority if active.
-      fields.add(BibtexFields.GROUPSEARCH);
-      directions.add(Boolean.TRUE);
-        binary.add(Boolean.FALSE);
-    }
-    if (panel.sortingBySearchResults) {
-      // Normal search has priority over regular sorting.
-      fields.add(BibtexFields.SEARCH);
-      directions.add(Boolean.TRUE);
-        binary.add(Boolean.FALSE);
-    }
-    if(panel.sortingByCiteSeerResults) {
-        fields.add("citeseercitationcount");
-        directions.add(Boolean.TRUE);
-        binary.add(Boolean.FALSE);
-    }
-
-    // Then the sort options:
-    directions.add(Boolean.valueOf(frame.prefs.getBoolean("priDescending")));
-    directions.add(Boolean.valueOf(frame.prefs.getBoolean("secDescending")));
-    directions.add(Boolean.valueOf(frame.prefs.getBoolean("terDescending")));
-    fields.add(frame.prefs.get("priSort"));
-    fields.add(frame.prefs.get("secSort"));
-    fields.add(frame.prefs.get("terSort"));
-    binary.add(Boolean.valueOf(Globals.prefs.getBoolean("priBinary"))); // TRUE if we are sorting on an icon.
-    binary.add(Boolean.FALSE);
-    binary.add(Boolean.FALSE);
-
-    // Remove the old sorter as change listener for the database:
-    if (sorter != null)
-    db.removeDatabaseChangeListener(sorter);
-
-    // Then pick the up to four highest ranking ones, and go.
-      int piv = Math.min(directions.size()-1, 3);
-      Comparator comp = new EntryComparator(
-              ((Boolean)binary.get(piv)).booleanValue(),
-              ((Boolean)directions.get(piv)).booleanValue(),
-              (String)fields.get(piv));
-      piv--;
-      while (piv >= 0) {
-          // Loop down towards the highest ranking criterion, wrapping new sorters around the
-          // ones we have:
-          String field = (String)fields.get(piv);
-          if (field.equals(BibtexFields.MARKED)) {
-                comp = new MarkedComparator(comp);
-          }
-          else
-            comp = new EntryComparator(
-                  ((Boolean)binary.get(piv)).booleanValue(),
-                  ((Boolean)directions.get(piv)).booleanValue(),
-                  field,
-                  comp);
-          piv--;
-      }
-
-      sorter = db.getSorter(comp);
-
-
-  }
-
-    /**
-     * Remaps and resorts the table model.
-     */
-    public void remap() {
-    updateSorter();
-    showAllEntries(); // Update the visible row count.
-        updateAllCache();
-    fireTableDataChanged();
-
-    }
-
-    /**
-     * Remaps and resorts the table model, and restricts the row number
-     * as directed.
-     */
-    public void remap(int rows) {
-    updateSorter();
-    setRowCount(rows);
-        updateAllCache();
-    fireTableDataChanged();
-    }
-
-    /**
-     * Quick remap of the table model. Sufficient for all operations except
-     * those that require a changed sort regime.
-     */
-    public void update() {
-    sorter.index();
-    showAllEntries();
-        updateAllCache();
-    fireTableDataChanged();
-
-    }
-
-    /**
-     * Quick remap of the table model. Sufficient for all operations except
-     * those that require a changed sort regime.
-     * Restricts the row number as directed.
-     */
-    public void update(int rows) {
-    sorter.index();
-    setRowCount(rows);
-        updateAllCache();
-    fireTableDataChanged();
-    }
-
-  public boolean isCellEditable(int row, int col) {
-    if (!Globals.prefs.getBoolean("allowTableEditing"))
-      return false;
-
-    if (col < padleft) {
-      return false;
-    }
-    // getColumnClass will throw a NullPointerException if there is no
-    // entry in FieldTypes.GLOBAL_FIELD_TYPES for the column.
-    try {
-      if (!getFieldName(col).equals(GUIGlobals.TYPE_HEADER)) {
-
-//	    getColumnClass(col);
-        return true;
-      }
-      else {
-        return false;
-      }
-    }
-    catch (NullPointerException ex) {
-      return false;
-    }
-  }
-
-  public void setValueAt(Object value, int row, int col) {
-    // Called by the table cell editor when the user has edited a
-    // field. From here the edited value is stored.
-
-    BibtexEntry be = db.getEntryById(getIdForRow(row));
-    boolean set = false;
-    String toSet = null,
-        fieldName = getFieldName(col),
-        text;
-    if (value != null) {
-      text = value.toString();
-      if (text.length() > 0) {
-        toSet = text;
-        Object o;
-        if ( ( (o = be.getField(fieldName)) == null)
-            || ( (o != null)
-                && !o.toString().equals(toSet))) {
-          set = true;
-        }
-      }
-      else if (be.getField(fieldName) != null) {
-        set = true;
-      }
-    }
-    if (set) {
-      try {
-        if (toSet != null) {
-          (new LatexFieldFormatter()).format
-              (toSet, fieldName);
-        }
-
-        // Store this change in the UndoManager to facilitate undo.
-        Object oldVal = be.getField(fieldName);
-        panel.undoManager.addEdit
-            (new net.sf.jabref.undo.UndoableFieldChange
-             (be, fieldName.toLowerCase(), oldVal, toSet));
-        // .. ok.
-
-        be.setField(fieldName, toSet);
-        panel.markBaseChanged();
-        //panel.updateViewToSelected();
-        //panel.updateEntryEditorIfShowing();
-        // Should the table also be scheduled for repaint?
-      }
-      catch (IllegalArgumentException ex) {
-        //frame.output("Invalid field format. Use '#' only in pairs wrapping "
-        //	  +"string names.");
-        frame.output("Invalid field format: " + ex.getMessage());
-      }
-    }
-  }
-
-   /**
-    * Returns the internal ID of the entry at the given row.
-    * @param number The row number.
-    * @return The ID for the entry at the given row.
-    */
-  public String getIdForRow(int number) {
-    // Return the name of the Entry corresponding to the row. The
-    // Entry will be retrieved from a DatabaseQuery. This is just
-    // a temporary implementation.
-    return sorter.getIdAt(number);
-    //entryIDs[number].toString();
-  }
-
-    /**
-     * Returns the entry currently displayed at the given row.
-     * @param row The row.
-     * @return The entry at the given row.
-     */
-  public BibtexEntry getEntryForRow(int row) {
-      return sorter.getEntryAt(row);
-  }
-
-  public int getNumberFromName(String name) {
-    // Not very fast. Intended for use only in highlighting erronous
-    // entry if save fails.
-    int res = -1, i = 0;
-    while ( (i < sorter.getEntryCount()) && (res < 0)) {
-      if (name.equals(sorter.getIdAt(i))) {
-        res = i;
-      }
-      i++;
-    }
-    return res;
-  }
-
-    /**
-     * Returns true iff the entry's Globals.MARKED field contains the
-     * current user's wrapped username.
-     * @param row The table row where the entry is.
-     * @return true if the MARKED field contains the wrapped username.
-     */
-    public boolean isMarked(int row) {
-        BibtexEntry be = db.getEntryById(getIdForRow(row));
-        if (be == null)
-            return false;
-        return Util.isMarked(be);
-
-    }
-
-
-}
diff --git a/src/java/net/sf/jabref/FieldComparator.java b/src/java/net/sf/jabref/FieldComparator.java
index 3b93347..ddded3b 100644
--- a/src/java/net/sf/jabref/FieldComparator.java
+++ b/src/java/net/sf/jabref/FieldComparator.java
@@ -46,7 +46,8 @@ public class FieldComparator implements Comparator {
 		        f1 = AuthorList.fixAuthorForAlphabetization((String)f1);
 	        if (f2 != null)
 		        f2 = AuthorList.fixAuthorForAlphabetization((String)f2);
-	    }
+            //System.out.println(".. "+f1);
+        }
         else if (isTypeHeader) {
           // Sort by type.
           f1 = e1.getType().getName();
@@ -58,7 +59,7 @@ public class FieldComparator implements Comparator {
 	    if (f1 == null) return multiplier;
 
 	    int result = 0;
-
+        //System.out.println(f1);
 	    if ((f1 instanceof Integer) && (f2 instanceof Integer)) {
 		    result = -(((Integer) f1).compareTo((Integer) f2));
 	    } else if (f2 instanceof Integer) {
@@ -70,7 +71,8 @@ public class FieldComparator implements Comparator {
     	} else {
     		String ours = ((String) f1).toLowerCase(),
     	    	theirs = ((String) f2).toLowerCase();
-    		result = ours.compareTo(theirs);
+            //System.out.println(ours);
+            result = ours.compareTo(theirs);
     	}
 
         return result*multiplier;
diff --git a/src/java/net/sf/jabref/Globals.java b/src/java/net/sf/jabref/Globals.java
index f7e3fe6..15a73ae 100644
--- a/src/java/net/sf/jabref/Globals.java
+++ b/src/java/net/sf/jabref/Globals.java
@@ -33,7 +33,6 @@ import java.util.logging.* ;
 import java.util.logging.Filter ;
 
 import java.awt.* ;
-import java.nio.charset.Charset;
 import javax.swing.* ;
 
 import net.sf.jabref.collab.* ;
@@ -205,8 +204,8 @@ public class Globals {
     }
     catch (MissingResourceException ex) {
       translation = key;
-      //logger("Warning: could not get translation for \""
-      //                   + key + "\"");
+      logger("Warning: could not get translation for \""
+                         + key + "\"");
     }
     if ((translation != null) && (translation.length() != 0)) {
       translation = translation.replaceAll("_", " ");
@@ -369,49 +368,55 @@ public class Globals {
     /*    public static void setupKeyBindings(JabRefPreferences prefs) {
     }*/
 
-  public static String getNewFile(JFrame owner, JabRefPreferences prefs,
+
+    public static String[] getMultipleFiles(JFrame owner,
+                                          File directory, String extension,
+                                          boolean updateWorkingdirectory) {
+
+        OpenFileFilter off = null;
+        if (extension == null)
+          off = new OpenFileFilter();
+        else if (!extension.equals(NONE))
+          off = new OpenFileFilter(extension);
+        return (String[])getNewFileImpl(owner, directory, extension, null, off,
+                JFileChooser.OPEN_DIALOG, updateWorkingdirectory, false, true);
+    }
+
+  public static String getNewFile(JFrame owner,
                                   File directory, String extension,
                                   int dialogType,
                                   boolean updateWorkingDirectory) {
-    return getNewFile(owner, prefs, directory, extension, null, dialogType,
+    return getNewFile(owner, directory, extension, null, dialogType,
                       updateWorkingDirectory, false);
   }
 
 
-  public static String getNewFile(JFrame owner, JabRefPreferences prefs,
+  public static String getNewFile(JFrame owner,
                                   File directory, String extension,
                                   String description,
                                   int dialogType,
                                   boolean updateWorkingDirectory) {
-    return getNewFile(owner, prefs, directory, extension, description, dialogType,
+    return getNewFile(owner, directory, extension, description, dialogType,
                       updateWorkingDirectory, false);
   }
 
 
-  public static String getNewFile(JFrame owner, JabRefPreferences prefs,
-                                  File directory, String extension, OpenFileFilter off,
-                                  int dialogType,
-                                  boolean updateWorkingDirectory) {
-    return getNewFile(owner, prefs, directory, extension, null, off, dialogType,
-                      updateWorkingDirectory, false);
-  }
-
-  public static String getNewDir(JFrame owner, JabRefPreferences prefs,
+  public static String getNewDir(JFrame owner,
                                  File directory, String extension,
                                  int dialogType, boolean updateWorkingDirectory) {
-    return getNewFile(owner, prefs, directory, extension, null, dialogType,
+    return getNewFile(owner, directory, extension, null, dialogType,
                       updateWorkingDirectory, true);
   }
 
-  public static String getNewDir(JFrame owner, JabRefPreferences prefs,
+  public static String getNewDir(JFrame owner,
                                  File directory, String extension,
                                  String description,
                                  int dialogType, boolean updateWorkingDirectory) {
-    return getNewFile(owner, prefs, directory, extension, description, dialogType,
+    return getNewFile(owner, directory, extension, description, dialogType,
                       updateWorkingDirectory, true);
   }
 
-  private static String getNewFile(JFrame owner, JabRefPreferences prefs,
+  private static String getNewFile(JFrame owner,
                                    File directory, String extension,
                                    String description,
                                    int dialogType,
@@ -425,76 +430,88 @@ public class Globals {
     else if (!extension.equals(NONE))
       off = new OpenFileFilter(extension);
 
-    return getNewFile(owner, prefs, directory, extension, description, off, dialogType, updateWorkingDirectory, dirOnly);
+    return (String)getNewFileImpl(owner, directory, extension, description, off,
+            dialogType, updateWorkingDirectory, dirOnly, false);
   }
 
-  private static String getNewFile(JFrame owner, JabRefPreferences prefs,
-                                   File directory, String extension,
-                                   String description,
-                                   OpenFileFilter off,
-                                   int dialogType,
-                                   boolean updateWorkingDirectory,
-                                   boolean dirOnly) {
+  private static Object getNewFileImpl(JFrame owner,
+                                       File directory, String extension,
+                                       String description,
+                                       OpenFileFilter off,
+                                       int dialogType,
+                                       boolean updateWorkingDirectory,
+                                       boolean dirOnly,
+                                       boolean multipleSelection) {
+
+      if (ON_MAC) {
+          return getNewFileForMac(owner, directory, extension, dialogType,
+                  updateWorkingDirectory, dirOnly, off);
+      }
 
-    if (ON_MAC) {
-      return getNewFileForMac(owner, directory, extension, dialogType,
-                              updateWorkingDirectory, dirOnly, off);
-    }
+      JFileChooser fc = null;
+      try {
+          fc = new JabRefFileChooser(directory);
+      } catch (InternalError errl) {
+          // This try/catch clause was added because a user reported an
+          // InternalError getting thrown on WinNT, presumably because of a
+          // bug in JGoodies Windows PLAF. This clause can be removed if the
+          // bug is fixed, but for now we just resort to the native file
+          // dialog, using the same method as is always used on Mac:
+          return getNewFileForMac(owner, directory, extension, dialogType,
+                  updateWorkingDirectory, dirOnly, off);
+      }
 
-    JFileChooser fc = null;
-    try {
-        fc = new JabRefFileChooser(directory);
-    } catch (InternalError errl) {
-        // This try/catch clause was added because a user reported an
-        // InternalError getting thrown on WinNT, presumably because of a
-        // bug in JGoodies Windows PLAF. This clause can be removed if the
-        // bug is fixed, but for now we just resort to the native file
-        // dialog, using the same method as is always used on Mac:
-        return getNewFileForMac(owner, directory, extension, dialogType,
-                                updateWorkingDirectory, dirOnly, off);
-    }
+      if (dirOnly) {
+          fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
 
-    if (dirOnly) {
-      fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
+      }
 
-    }
-    fc.addChoosableFileFilter(off);
-    fc.setDialogType(dialogType);
-    int dialogResult = JFileChooser.CANCEL_OPTION ;
-    if (dialogType == JFileChooser.OPEN_DIALOG) {
-      dialogResult = fc.showOpenDialog(owner);
-    }
-    else if (dialogType == JFileChooser.SAVE_DIALOG){
-      dialogResult = fc.showSaveDialog(owner);
-    }
-    else {
-      dialogResult = fc.showDialog(owner, description);
-    }
+      fc.setMultiSelectionEnabled(multipleSelection);
+
+      fc.addChoosableFileFilter(off);
+      fc.setDialogType(dialogType);
+      int dialogResult = JFileChooser.CANCEL_OPTION;
+      if (dialogType == JFileChooser.OPEN_DIALOG) {
+          dialogResult = fc.showOpenDialog(owner);
+      } else if (dialogType == JFileChooser.SAVE_DIALOG) {
+          dialogResult = fc.showSaveDialog(owner);
+      } else {
+          dialogResult = fc.showDialog(owner, description);
+      }
 
-     // the getSelectedFile method returns a valid fileselection
-     // (if something is selected) indepentently from dialog return status
-    if (dialogResult != JFileChooser.APPROVE_OPTION)
-      return null ;
+      // the getSelectedFile method returns a valid fileselection
+      // (if something is selected) indepentently from dialog return status
+      if (dialogResult != JFileChooser.APPROVE_OPTION)
+          return null;
 
-    // okay button
-    File selectedFile = fc.getSelectedFile();
-    if (selectedFile == null) { // cancel
-      return null;
-    }
+      // okay button
+      File selectedFile = fc.getSelectedFile();
+      if (selectedFile == null) { // cancel
+          return null;
+      }
 
-    // If this is a save dialog, and the user has not chosen "All files" as filter
-    // we enforce the given extension. But only if extension is not null.
-    if ((extension != null) && (dialogType == JFileChooser.SAVE_DIALOG) && (fc.getFileFilter() == off) &&
-        !off.accept(selectedFile)) {
+      // If this is a save dialog, and the user has not chosen "All files" as filter
+      // we enforce the given extension. But only if extension is not null.
+      if ((extension != null) && (dialogType == JFileChooser.SAVE_DIALOG) && (fc.getFileFilter() == off) &&
+              !off.accept(selectedFile)) {
 
-      // add the first extension if there are multiple extensions
-      selectedFile = new File(selectedFile.getPath() + extension.split("[, ]+",0)[0]);
-    }
+          // add the first extension if there are multiple extensions
+          selectedFile = new File(selectedFile.getPath() + extension.split("[, ]+", 0)[0]);
+      }
 
-    if (updateWorkingDirectory) {
-      prefs.put("workingDirectory", selectedFile.getPath());
-    }
-    return selectedFile.getAbsolutePath();
+      if (updateWorkingDirectory) {
+          prefs.put("workingDirectory", selectedFile.getPath());
+      }
+
+      if (!multipleSelection)
+        return selectedFile.getAbsolutePath();
+      else {
+          File[] files = fc.getSelectedFiles();
+          String[] filenames = new String[files.length];
+          for (int i=0; i<files.length; i++)
+            filenames[i] = files[i].getAbsolutePath();
+          return filenames;
+      }
   }
 
   private static String getNewFileForMac(JFrame owner,
@@ -568,54 +585,255 @@ public class Globals {
 
 
 
-    HTMLCHARS.put("\"a", "ä");
-    HTMLCHARS.put("\"A", "Ä");
-    HTMLCHARS.put("\"e", "ë");
-    HTMLCHARS.put("\"E", "Ë");
-    HTMLCHARS.put("\"i", "ï");
-    HTMLCHARS.put("\"I", "Ï");
-    HTMLCHARS.put("\"o", "ö");
-    HTMLCHARS.put("\"O", "Ö");
-    HTMLCHARS.put("\"u", "ü");
-    HTMLCHARS.put("\"U", "Ü");
-    HTMLCHARS.put("`a", "à");
-    HTMLCHARS.put("`A", "À");
-    HTMLCHARS.put("`e", "è");
-    HTMLCHARS.put("`E", "È");
-    HTMLCHARS.put("`i", "ì");
-    HTMLCHARS.put("`I", "Ì");
-    HTMLCHARS.put("`o", "ò");
-    HTMLCHARS.put("`O", "Ò");
-    HTMLCHARS.put("`u", "ù");
-    HTMLCHARS.put("`U", "Ù");
-    HTMLCHARS.put("'e", "é");
-    HTMLCHARS.put("'E", "É");
-    HTMLCHARS.put("'i", "í");
-    HTMLCHARS.put("'I", "Í");
-    HTMLCHARS.put("'o", "ó");
-    HTMLCHARS.put("'O", "Ó");
-    HTMLCHARS.put("'u", "ú");
-    HTMLCHARS.put("'U", "Ú");
-    HTMLCHARS.put("'a", "á");
-    HTMLCHARS.put("'A", "Á");
-    HTMLCHARS.put("^a", "ô");
-    HTMLCHARS.put("^A", "Ô");
-    HTMLCHARS.put("^o", "ô");
-    HTMLCHARS.put("^O", "Ô");
-    HTMLCHARS.put("^u", "û");
-    HTMLCHARS.put("^U", "Û");
-    HTMLCHARS.put("^e", "ê");
-    HTMLCHARS.put("^E", "Ê");
-    HTMLCHARS.put("^i", "î");
-    HTMLCHARS.put("^I", "Î");
-    HTMLCHARS.put("~o", "õ");
-    HTMLCHARS.put("~O", "Õ");
-    HTMLCHARS.put("~n", "ñ");
-    HTMLCHARS.put("~N", "Ñ");
-    HTMLCHARS.put("~a", "ã");
-    HTMLCHARS.put("~A", "Ã");
-    HTMLCHARS.put("cc", "ç");
-    HTMLCHARS.put("cC", "Ç");
+//    HTMLCHARS.put("\"a", "ä");
+//    HTMLCHARS.put("\"A", "Ä");
+//    HTMLCHARS.put("\"e", "ë");
+//    HTMLCHARS.put("\"E", "Ë");
+//    HTMLCHARS.put("\"i", "ï");
+//    HTMLCHARS.put("\"I", "Ï");
+//    HTMLCHARS.put("\"o", "ö");
+//    HTMLCHARS.put("\"O", "Ö");
+//    HTMLCHARS.put("\"u", "ü");
+//    HTMLCHARS.put("\"U", "Ü");
+//    HTMLCHARS.put("`a", "à");
+//    HTMLCHARS.put("`A", "À");
+//    HTMLCHARS.put("`e", "è");
+//    HTMLCHARS.put("`E", "È");
+//    HTMLCHARS.put("`i", "ì");
+//    HTMLCHARS.put("`I", "Ì");
+//    HTMLCHARS.put("`o", "ò");
+//    HTMLCHARS.put("`O", "Ò");
+//    HTMLCHARS.put("`u", "ù");
+//    HTMLCHARS.put("`U", "Ù");
+//    HTMLCHARS.put("'e", "é");
+//    HTMLCHARS.put("'E", "É");
+//    HTMLCHARS.put("'i", "í");
+//    HTMLCHARS.put("'I", "Í");
+//    HTMLCHARS.put("'o", "ó");
+//    HTMLCHARS.put("'O", "Ó");
+//    HTMLCHARS.put("'u", "ú");
+//    HTMLCHARS.put("'U", "Ú");
+//    HTMLCHARS.put("'a", "á");
+//    HTMLCHARS.put("'A", "Á");
+//    HTMLCHARS.put("^a", "ô");
+//    HTMLCHARS.put("^A", "Ô");
+//    HTMLCHARS.put("^o", "ô");
+//    HTMLCHARS.put("^O", "Ô");
+//    HTMLCHARS.put("^u", "û");
+//    HTMLCHARS.put("^U", "Û");
+//    HTMLCHARS.put("^e", "ê");
+//    HTMLCHARS.put("^E", "Ê");
+//    HTMLCHARS.put("^i", "î");
+//    HTMLCHARS.put("^I", "Î");
+//    HTMLCHARS.put("~o", "õ");
+//    HTMLCHARS.put("~O", "Õ");
+//    HTMLCHARS.put("~n", "ñ");
+//    HTMLCHARS.put("~N", "Ñ");
+//    HTMLCHARS.put("~a", "ã");
+//    HTMLCHARS.put("~A", "Ã");
+//    HTMLCHARS.put("cc", "ç");
+//    HTMLCHARS.put("cC", "Ç");
+
+
+      // Following character definitions contributed by Ervin Kolenovic:
+      // HTML named entities from #192 - #255 (UNICODE Latin-1)
+       HTMLCHARS.put("`A", "À");    // #192
+       HTMLCHARS.put("'A", "Á");    // #193
+       HTMLCHARS.put("^A", "Â");     // #194
+       HTMLCHARS.put("~A", "Ã");    // #195
+       HTMLCHARS.put("\"A", "Ä");     // #196
+       HTMLCHARS.put("AA", "Å");     // #197
+       HTMLCHARS.put("AE", "Æ");     // #198
+       HTMLCHARS.put("cC", "Ç");    // #199
+       HTMLCHARS.put("`E", "È");    // #200
+       HTMLCHARS.put("'E", "É");    // #201
+       HTMLCHARS.put("^E", "Ê");     // #202
+       HTMLCHARS.put("\"E", "Ë");     // #203
+       HTMLCHARS.put("`I", "Ì");    // #204
+       HTMLCHARS.put("'I", "Í");    // #205
+       HTMLCHARS.put("^I", "Î");     // #206
+       HTMLCHARS.put("\"I", "Ï");     // #207
+       HTMLCHARS.put("DH", "Ð");       // #208
+       HTMLCHARS.put("~N", "Ñ");    // #209
+       HTMLCHARS.put("`O", "Ò");    // #210
+       HTMLCHARS.put("'O", "Ó");    // #211
+       HTMLCHARS.put("^O", "Ô");     // #212
+       HTMLCHARS.put("~O", "Õ");    // #213
+       HTMLCHARS.put("\"O", "Ö");     // #214
+       // According to ISO 8859-1 the "\times" symbol should be placed here (#215).
+       // Omitting this, because it is a mathematical symbol.
+       HTMLCHARS.put("O", "&OSlash;");     // #216
+       HTMLCHARS.put("`U", "Ù");    // #217
+       HTMLCHARS.put("'U", "Ú");    // #218
+       HTMLCHARS.put("^U", "Û");     // #219
+       HTMLCHARS.put("\"U", "Ü");     // #220
+       HTMLCHARS.put("'Y", "Ý");    // #221
+       HTMLCHARS.put("TH", "Þ");     // #222
+       HTMLCHARS.put("ss", "ß");     // #223
+       HTMLCHARS.put("`a", "à");    // #224
+       HTMLCHARS.put("'a", "á");    // #225
+       HTMLCHARS.put("^a", "â");     // #226
+       HTMLCHARS.put("~a", "ã");    // #227
+       HTMLCHARS.put("\"a", "ä");     // #228
+       HTMLCHARS.put("aa", "å");     // #229
+       HTMLCHARS.put("ae", "æ");     // #230
+       HTMLCHARS.put("cc", "ç");    // #231
+       HTMLCHARS.put("`e", "è");    // #232
+       HTMLCHARS.put("'e", "é");    // #233
+       HTMLCHARS.put("^e", "ê");     // #234
+       HTMLCHARS.put("\"e", "ë");     // #235
+       HTMLCHARS.put("`i", "ì");    // #236
+       HTMLCHARS.put("'i", "í");    // #237
+       HTMLCHARS.put("^i", "î");     // #238
+       HTMLCHARS.put("\"i", "ï");     // #239
+       HTMLCHARS.put("dh", "ð");       // #240
+       HTMLCHARS.put("~n", "ñ");    // #241
+       HTMLCHARS.put("`o", "ò");    // #242
+       HTMLCHARS.put("'o", "ó");    // #243
+       HTMLCHARS.put("^o", "ô");     // #244
+       HTMLCHARS.put("~o", "õ");    // #245
+       HTMLCHARS.put("\"o", "ö");     // #246
+       // According to ISO 8859-1 the "\div" symbol should be placed here (#247).
+       // Omitting this, because it is a mathematical symbol.
+       HTMLCHARS.put("o", "ø");     // #248
+       HTMLCHARS.put("`u", "ù");    // #249
+       HTMLCHARS.put("'u", "ú");    // #250
+       HTMLCHARS.put("^u", "û");     // #251
+       HTMLCHARS.put("\"u", "ü");     // #252
+       HTMLCHARS.put("'y", "ý");    // #253
+       HTMLCHARS.put("th", "þ");     // #254
+       HTMLCHARS.put("\"y", "ÿ");     // #255
+
+       // HTML special characters without names (UNICODE Latin Extended-A), indicated by UNICODE number
+       HTMLCHARS.put("=A", "Ā");      // "Amacr"
+       HTMLCHARS.put("=a", "ā");      // "amacr"
+       HTMLCHARS.put("uA", "Ă");      // "Abreve"
+       HTMLCHARS.put("ua", "ă");      // "abreve"
+       HTMLCHARS.put("kA", "Ą");      // "Aogon"
+       HTMLCHARS.put("ka", "ą");      // "aogon"
+       HTMLCHARS.put("'C", "Ć");      // "Cacute"
+       HTMLCHARS.put("'c", "ć");      // "cacute"
+       HTMLCHARS.put("^C", "Ĉ");      // "Ccirc"
+       HTMLCHARS.put("^c", "ĉ");      // "ccirc"
+       HTMLCHARS.put(".C", "Ċ");      // "Cdot"
+       HTMLCHARS.put(".c", "ċ");      // "cdot"
+       HTMLCHARS.put("vC", "Č");      // "Ccaron"
+       HTMLCHARS.put("vc", "č");      // "ccaron"
+       HTMLCHARS.put("vD", "Ď");      // "Dcaron"
+       // Symbol #271 (d�) has no special Latex command
+       HTMLCHARS.put("DJ", "Đ");      // "Dstrok"
+       HTMLCHARS.put("dj", "đ");      // "dstrok"
+       HTMLCHARS.put("=E", "Ē");      // "Emacr"
+       HTMLCHARS.put("=e", "ē");      // "emacr"
+       HTMLCHARS.put("uE", "Ĕ");      // "Ebreve"
+       HTMLCHARS.put("ue", "ĕ");      // "ebreve"
+       HTMLCHARS.put(".E", "Ė");      // "Edot"
+       HTMLCHARS.put(".e", "ė");      // "edot"
+       HTMLCHARS.put("kE", "Ę");      // "Eogon"
+       HTMLCHARS.put("ke", "ę");      // "eogon"
+       HTMLCHARS.put("vE", "Ě");      // "Ecaron"
+       HTMLCHARS.put("ve", "ě");      // "ecaron"
+       HTMLCHARS.put("^G", "Ĝ");      // "Gcirc"
+       HTMLCHARS.put("^g", "ĝ");      // "gcirc"
+       HTMLCHARS.put("uG", "Ğ");      // "Gbreve"
+       HTMLCHARS.put("ug", "ğ");      // "gbreve"
+       HTMLCHARS.put(".G", "Ġ");      // "Gdot"
+       HTMLCHARS.put(".g", "ġ");      // "gdot"
+       HTMLCHARS.put("cG", "Ģ");      // "Gcedil"
+       HTMLCHARS.put("'g", "ģ");      // "gacute"
+       HTMLCHARS.put("^H", "Ĥ");      // "Hcirc"
+       HTMLCHARS.put("^h", "ĥ");      // "hcirc"
+       HTMLCHARS.put("Hstrok", "Ħ");  // "Hstrok"
+       HTMLCHARS.put("hstrok", "ħ");  // "hstrok"
+       HTMLCHARS.put("~I", "Ĩ");      // "Itilde"
+       HTMLCHARS.put("~i", "ĩ");      // "itilde"
+       HTMLCHARS.put("=I", "Ī");      // "Imacr"
+       HTMLCHARS.put("=i", "ī");      // "imacr"
+       HTMLCHARS.put("uI", "Ĭ");      // "Ibreve"
+       HTMLCHARS.put("ui", "ĭ");      // "ibreve"
+       HTMLCHARS.put("kI", "Į");      // "Iogon"
+       HTMLCHARS.put("ki", "į");      // "iogon"
+       HTMLCHARS.put(".I", "İ");      // "Idot"
+       HTMLCHARS.put("i", "ı");       // "inodot"
+       // Symbol #306 (IJ) has no special Latex command
+       // Symbol #307 (ij) has no special Latex command
+       HTMLCHARS.put("^J", "Ĵ");      // "Jcirc"
+       HTMLCHARS.put("^j", "ĵ");      // "jcirc"
+       HTMLCHARS.put("cK", "Ķ");      // "Kcedil"
+       HTMLCHARS.put("ck", "ķ");      // "kcedil"
+       // Symbol #312 (k) has no special Latex command
+       HTMLCHARS.put("'L", "Ĺ");      // "Lacute"
+       HTMLCHARS.put("'l", "ĺ");      // "lacute"
+       HTMLCHARS.put("cL", "Ļ");      // "Lcedil"
+       HTMLCHARS.put("cl", "ļ");      // "lcedil"
+       // Symbol #317 (L�) has no special Latex command
+       // Symbol #318 (l�) has no special Latex command
+       HTMLCHARS.put("Lmidot", "Ŀ");      // "Lmidot"
+       HTMLCHARS.put("lmidot", "ŀ");      // "lmidot"
+       HTMLCHARS.put("L", "Ł");      // "Lstrok"
+       HTMLCHARS.put("l", "ł");      // "lstrok"
+       HTMLCHARS.put("'N", "Ń");      // "Nacute"
+       HTMLCHARS.put("'n", "ń");      // "nacute"
+       HTMLCHARS.put("cN", "Ņ");      // "Ncedil"
+       HTMLCHARS.put("cn", "ņ");      // "ncedil"
+       HTMLCHARS.put("vN", "Ň");      // "Ncaron"
+       HTMLCHARS.put("vn", "ň");      // "ncaron"
+       // Symbol #329 (�n) has no special Latex command
+       HTMLCHARS.put("NG", "Ŋ");      // "ENG"
+       HTMLCHARS.put("ng", "ŋ");      // "eng"
+       HTMLCHARS.put("=O", "Ō");      // "Omacr"
+       HTMLCHARS.put("=o", "ō");      // "omacr"
+       HTMLCHARS.put("uO", "Ŏ");      // "Obreve"
+       HTMLCHARS.put("uo", "ŏ");      // "obreve"
+       HTMLCHARS.put("HO", "Ő");      // "Odblac"
+       HTMLCHARS.put("Ho", "ő");      // "odblac"
+       HTMLCHARS.put("OE", "Œ");      // "OElig"
+       HTMLCHARS.put("oe", "œ");      // "oelig"
+       HTMLCHARS.put("'R", "Ŕ");      // "Racute"
+       HTMLCHARS.put("'r", "ŕ");      // "racute"
+       HTMLCHARS.put("cR", "Ŗ");      // "Rcedil"
+       HTMLCHARS.put("cr", "ŗ");      // "rcedil"
+       HTMLCHARS.put("vR", "Ř");      // "Rcaron"
+       HTMLCHARS.put("vr", "ř");      // "rcaron"
+       HTMLCHARS.put("'S", "Ś");      // "Sacute"
+       HTMLCHARS.put("'s", "ś");      // "sacute"
+       HTMLCHARS.put("^S", "Ŝ");      // "Scirc"
+       HTMLCHARS.put("^s", "ŝ");      // "scirc"
+       HTMLCHARS.put("cS", "Ş");      // "Scedil"
+       HTMLCHARS.put("cs", "ş");      // "scedil"
+       HTMLCHARS.put("vS", "Š");      // "Scaron"
+       HTMLCHARS.put("vs", "š");      // "scaron"
+       HTMLCHARS.put("cT", "Ţ");      // "Tcedil"
+       HTMLCHARS.put("ct", "ţ");      // "tcedil"
+       HTMLCHARS.put("vT", "Ť");      // "Tcaron"
+       // Symbol #357 (t�) has no special Latex command
+       HTMLCHARS.put("Tstrok", "Ŧ");  // "Tstrok"
+       HTMLCHARS.put("tstrok", "ŧ");  // "tstrok"
+       HTMLCHARS.put("~U", "Ũ");      // "Utilde"
+       HTMLCHARS.put("~u", "ũ");      // "utilde"
+       HTMLCHARS.put("=U", "Ū");      // "Umacr"
+       HTMLCHARS.put("=u", "ū");      // "umacr"
+       HTMLCHARS.put("uU", "Ŭ");      // "Ubreve"
+       HTMLCHARS.put("uu", "ŭ");      // "ubreve"
+       HTMLCHARS.put("rU", "Ů");      // "Uring"
+       HTMLCHARS.put("ru", "ů");      // "uring"
+       HTMLCHARS.put("HU", "Ű");      // "Odblac"
+       HTMLCHARS.put("Hu", "ű");      // "odblac"
+       HTMLCHARS.put("kU", "Ų");      // "Uogon"
+       HTMLCHARS.put("ku", "ų");      // "uogon"
+       HTMLCHARS.put("^W", "Ŵ");      // "Wcirc"
+       HTMLCHARS.put("^w", "ŵ");      // "wcirc"
+       HTMLCHARS.put("^Y", "Ŷ");      // "Ycirc"
+       HTMLCHARS.put("^y", "ŷ");      // "ycirc"
+       HTMLCHARS.put("\"Y", "Ÿ");     // "Yuml"
+       HTMLCHARS.put("'Z", "Ź");      // "Zacute"
+       HTMLCHARS.put("'z", "ź");      // "zacute"
+       HTMLCHARS.put(".Z", "Ż");      // "Zdot"
+       HTMLCHARS.put(".z", "ż");      // "zdot"
+       HTMLCHARS.put("vZ", "Ž");      // "Zcaron"
+       HTMLCHARS.put("vz", "ž");      // "zcaron"
+       // Symbol #383 (f) has no special Latex command
+
 
     XML_CHARS.put("\\{\\\\\\\"\\{a\\}\\}", "&#x00E4;");
     XML_CHARS.put("\\{\\\\\\\"\\{A\\}\\}", "&#x00C4;");
@@ -841,7 +1059,7 @@ public class Globals {
     RTFCHARS.put("\"e", "\\'eb");
     RTFCHARS.put("\"i", "\\'ef");
     RTFCHARS.put("\"o", "\\'f6");
-    RTFCHARS.put("\"u", "\\'fc");
+    RTFCHARS.put("\"u", "\\uc0\\u252");
     RTFCHARS.put("~n", "\\'f1");
     RTFCHARS.put("`A", "\\'c0");
     RTFCHARS.put("`E", "\\'c8");
@@ -863,6 +1081,203 @@ public class Globals {
     RTFCHARS.put("\"I", "\\'cf");
     RTFCHARS.put("\"O", "\\'d6");
     RTFCHARS.put("\"U", "\\'dc");
+    // Use UNICODE characters for RTF-Chars which can not be found in the standard codepage
+
+    //  RTFCHARS.put("`A", "\\uc0\\u192");     // "Agrave" exists in standard codepage  
+      RTFCHARS.put("'A", "\\uc0\\u193");     // "Aacute"
+//  RTFCHARS.put("^A", "\\uc0\\u194");     // "Acirc"  exists in standard codepage
+      RTFCHARS.put("~A", "\\uc0\\u195");     // "Atilde"
+//  RTFCHARS.put("\"A", "\\uc0\\u196");    // "Auml"   exists in standard codepage
+      RTFCHARS.put("AA", "\\uc0\\u197");     // "Aring"
+      RTFCHARS.put("AE", "\\uc0\\u198");     // "AElig"
+      RTFCHARS.put("cC", "\\uc0\\u199");     // "Ccedil"
+//  RTFCHARS.put("`E", "\\uc0\\u200");     // "Egrave" exists in standard codepage
+      RTFCHARS.put("'E", "\\uc0\\u201");     // "Eacute"
+//  RTFCHARS.put("^E", "\\uc0\\u202");     // "Ecirc"  exists in standard codepage
+//  RTFCHARS.put("\"E", "\\uc0\\u203");    // "Euml"   exists in standard codepage
+//  RTFCHARS.put("`I", "\\uc0\\u204");     // "Igrave" exists in standard codepage
+      RTFCHARS.put("'I", "\\uc0\\u205");     // "Iacute"
+//  RTFCHARS.put("^I", "\\uc0\\u206");     // "Icirc"  exists in standard codepage
+//  RTFCHARS.put("\"I", "\\uc0\\u207");    // "Iuml"   exists in standard codepage
+      RTFCHARS.put("DH", "\\uc0\\u208");     // "ETH"
+      RTFCHARS.put("~N", "\\uc0\\u209");     // "Ntilde"
+//  RTFCHARS.put("`O", "\\uc0\\u210");     // "Ograve" exists in standard codepage
+      RTFCHARS.put("'O", "\\uc0\\u211");     // "Oacute"
+//  RTFCHARS.put("^O", "\\uc0\\u212");     // "Ocirc"  exists in standard codepage
+      RTFCHARS.put("~O", "\\uc0\\u213");     // "Otilde"
+//  RTFCHARS.put("\"O", "\\uc0\\u214");    // "Ouml"   exists in standard codepage
+      // According to ISO 8859-1 the "\times" symbol should be placed here (#215).
+      // Omitting this, because it is a mathematical symbol.
+      RTFCHARS.put("O", "\\uc0\\u216");      // "OSlash"
+//  RTFCHARS.put("`U", "\\uc0\\u217");     // "Ugrave"  exists in standard codepage
+      RTFCHARS.put("'U", "\\uc0\\u218");     // "Uacute"
+//  RTFCHARS.put("^U", "\\uc0\\u219");     // "Ucirc"   exists in standard codepage
+//  RTFCHARS.put("\"U", "\\uc0\\u220");    // "Uuml"    exists in standard codepage
+      RTFCHARS.put("'Y", "\\uc0\\u221");     // "Yacute"
+      RTFCHARS.put("TH", "\\uc0\\u222");     // "THORN"
+      RTFCHARS.put("ss", "\\uc0\\u223");     // "szlig"
+//  RTFCHARS.put("`a", "\\uc0\\u224");     // "agrave"  exists in standard codepage
+      RTFCHARS.put("'a", "\\uc0\\u225");     // "aacute"
+//  RTFCHARS.put("^a", "\\uc0\\u226");     // "acirc"   exists in standard codepage
+      RTFCHARS.put("~a", "\\uc0\\u227");     // "atilde"
+//  RTFCHARS.put("\"a", "\\uc0\\u228");    // "auml"    exists in standard codepage
+      RTFCHARS.put("aa", "\\uc0\\u229");     // "aring"
+      RTFCHARS.put("ae", "\\uc0\\u230");     // "aelig"
+      RTFCHARS.put("cc", "\\uc0\\u231");     // "ccedil"
+//  RTFCHARS.put("`e", "\\uc0\\u232");     // "egrave"  exists in standard codepage
+      RTFCHARS.put("'e", "\\uc0\\u233");     // "eacute"
+//  RTFCHARS.put("^e", "\\uc0\\u234");     // "ecirc"   exists in standard codepage
+//  RTFCHARS.put("\"e", "\\uc0\\u235");    // "euml"    exists in standard codepage
+//  RTFCHARS.put("`i", "\\uc0\\u236");     // "igrave"  exists in standard codepage
+      RTFCHARS.put("'i", "\\uc0\\u237");     // "iacute"
+//  RTFCHARS.put("^i", "\\uc0\\u238");     // "icirc"   exists in standard codepage
+//  RTFCHARS.put("\"i", "\\uc0\\u239");    // "iuml"    exists in standard codepage
+      RTFCHARS.put("dh", "\\uc0\\u240");     // "eth"
+//  RTFCHARS.put("~n", "\\uc0\\u241");     // "ntilde"  exists in standard codepage
+//  RTFCHARS.put("`o", "\\uc0\\u242");     // "ograve"  exists in standard codepage
+      RTFCHARS.put("'o", "\\uc0\\u243");     // "oacute"
+//  RTFCHARS.put("^o", "\\uc0\\u244");     // "ocirc"   exists in standard codepage
+      RTFCHARS.put("~o", "\\uc0\\u245");     // "otilde"
+//  RTFCHARS.put("\"o", "\\uc0\\u246");    // "ouml"    exists in standard codepage
+      // According to ISO 8859-1 the "\div" symbol should be placed here (#247).
+      // Omitting this, because it is a mathematical symbol.
+      RTFCHARS.put("o", "\\uc0\\u248");       // "oslash"
+//  RTFCHARS.put("`u", "\\uc0\\u249");      // "ugrave"  exists in standard codepage
+      RTFCHARS.put("'u", "\\uc0\\u250");      // "uacute"
+//  RTFCHARS.put("^u", "\\uc0\\u251");      // "ucirc"   exists in standard codepage
+//  RTFCHARS.put("\"u", "\\uc0\\u252");     // "uuml"    exists in standard codepage
+      RTFCHARS.put("'y", "\\uc0\\u253");      // "yacute"
+      RTFCHARS.put("th", "\\uc0\\u254");      // "thorn"
+      RTFCHARS.put("\"y", "\\uc0\\u255");     // "yuml"
+
+      RTFCHARS.put("=A", "\\uc0\\u256");      // "Amacr"
+      RTFCHARS.put("=a", "\\uc0\\u257");      // "amacr"
+      RTFCHARS.put("uA", "\\uc0\\u258");      // "Abreve"
+      RTFCHARS.put("ua", "\\uc0\\u259");      // "abreve"
+      RTFCHARS.put("kA", "\\uc0\\u260");      // "Aogon"
+      RTFCHARS.put("ka", "\\uc0\\u261");      // "aogon"
+      RTFCHARS.put("'C", "\\uc0\\u262");      // "Cacute"
+      RTFCHARS.put("'c", "\\uc0\\u263");      // "cacute"
+      RTFCHARS.put("^C", "\\uc0\\u264");      // "Ccirc"
+      RTFCHARS.put("^c", "\\uc0\\u265");      // "ccirc"
+      RTFCHARS.put(".C", "\\uc0\\u266");      // "Cdot"
+      RTFCHARS.put(".c", "\\uc0\\u267");      // "cdot"
+      RTFCHARS.put("vC", "\\uc0\\u268");      // "Ccaron"
+      RTFCHARS.put("vc", "\\uc0\\u269");      // "ccaron"
+      RTFCHARS.put("vD", "\\uc0\\u270");      // "Dcaron"
+      // Symbol #271 (d�) has no special Latex command
+      RTFCHARS.put("DJ", "\\uc0\\u272");      // "Dstrok"
+      RTFCHARS.put("dj", "\\uc0\\u273");      // "dstrok"
+      RTFCHARS.put("=E", "\\uc0\\u274");      // "Emacr"
+      RTFCHARS.put("=e", "\\uc0\\u275");      // "emacr"
+      RTFCHARS.put("uE", "\\uc0\\u276");      // "Ebreve"
+      RTFCHARS.put("ue", "\\uc0\\u277");      // "ebreve"
+      RTFCHARS.put(".E", "\\uc0\\u278");      // "Edot"
+      RTFCHARS.put(".e", "\\uc0\\u279");      // "edot"
+      RTFCHARS.put("kE", "\\uc0\\u280");      // "Eogon"
+      RTFCHARS.put("ke", "\\uc0\\u281");      // "eogon"
+      RTFCHARS.put("vE", "\\uc0\\u282");      // "Ecaron"
+      RTFCHARS.put("ve", "\\uc0\\u283");      // "ecaron"
+      RTFCHARS.put("^G", "\\uc0\\u284");      // "Gcirc"
+      RTFCHARS.put("^g", "\\uc0\\u285");      // "gcirc"
+      RTFCHARS.put("uG", "\\uc0\\u286");      // "Gbreve"
+      RTFCHARS.put("ug", "\\uc0\\u287");      // "gbreve"
+      RTFCHARS.put(".G", "\\uc0\\u288");      // "Gdot"
+      RTFCHARS.put(".g", "\\uc0\\u289");      // "gdot"
+      RTFCHARS.put("cG", "\\uc0\\u290");      // "Gcedil"
+      RTFCHARS.put("'g", "\\uc0\\u291");      // "gacute"
+      RTFCHARS.put("^H", "\\uc0\\u292");      // "Hcirc"
+      RTFCHARS.put("^h", "\\uc0\\u293");      // "hcirc"
+      RTFCHARS.put("Hstrok", "\\uc0\\u294");  // "Hstrok"
+      RTFCHARS.put("hstrok", "\\uc0\\u295");  // "hstrok"
+      RTFCHARS.put("~I", "\\uc0\\u296");      // "Itilde"
+      RTFCHARS.put("~i", "\\uc0\\u297");      // "itilde"
+      RTFCHARS.put("=I", "\\uc0\\u298");      // "Imacr"
+      RTFCHARS.put("=i", "\\uc0\\u299");      // "imacr"
+      RTFCHARS.put("uI", "\\uc0\\u300");      // "Ibreve"
+      RTFCHARS.put("ui", "\\uc0\\u301");      // "ibreve"
+      RTFCHARS.put("kI", "\\uc0\\u302");      // "Iogon"
+      RTFCHARS.put("ki", "\\uc0\\u303");      // "iogon"
+      RTFCHARS.put(".I", "\\uc0\\u304");      // "Idot"
+      RTFCHARS.put("i", "\\uc0\\u305");       // "inodot"
+      // Symbol #306 (IJ) has no special Latex command
+      // Symbol #307 (ij) has no special Latex command
+      RTFCHARS.put("^J", "\\uc0\\u308");      // "Jcirc"
+      RTFCHARS.put("^j", "\\uc0\\u309");      // "jcirc"
+      RTFCHARS.put("cK", "\\uc0\\u310");      // "Kcedil"
+      RTFCHARS.put("ck", "\\uc0\\u311");      // "kcedil"
+      // Symbol #312 (k) has no special Latex command
+      RTFCHARS.put("'L", "\\uc0\\u313");      // "Lacute"
+      RTFCHARS.put("'l", "\\uc0\\u314");      // "lacute"
+      RTFCHARS.put("cL", "\\uc0\\u315");      // "Lcedil"
+      RTFCHARS.put("cl", "\\uc0\\u316");      // "lcedil"
+      // Symbol #317 (L�) has no special Latex command
+      // Symbol #318 (l�) has no special Latex command
+      RTFCHARS.put("Lmidot", "\\uc0\\u319");  // "Lmidot"
+      RTFCHARS.put("lmidot", "\\uc0\\u320");  // "lmidot"
+      RTFCHARS.put("L", "\\uc0\\u321");      // "Lstrok"
+      RTFCHARS.put("l", "\\uc0\\u322");      // "lstrok"
+      RTFCHARS.put("'N", "\\uc0\\u323");      // "Nacute"
+      RTFCHARS.put("'n", "\\uc0\\u324");      // "nacute"
+      RTFCHARS.put("cN", "\\uc0\\u325");      // "Ncedil"
+      RTFCHARS.put("cn", "\\uc0\\u326");      // "ncedil"
+      RTFCHARS.put("vN", "\\uc0\\u327");      // "Ncaron"
+      RTFCHARS.put("vn", "\\uc0\\u328");      // "ncaron"
+      // Symbol #329 (�n) has no special Latex command
+      RTFCHARS.put("NG", "\\uc0\\u330");      // "ENG"
+      RTFCHARS.put("ng", "\\uc0\\u331");      // "eng"
+      RTFCHARS.put("=O", "\\uc0\\u332");      // "Omacr"
+      RTFCHARS.put("=o", "\\uc0\\u333");      // "omacr"
+      RTFCHARS.put("uO", "\\uc0\\u334");      // "Obreve"
+      RTFCHARS.put("uo", "\\uc0\\u335");      // "obreve"
+      RTFCHARS.put("HO", "\\uc0\\u336");      // "Odblac"
+      RTFCHARS.put("Ho", "\\uc0\\u337");      // "odblac"
+      RTFCHARS.put("OE", "\\uc0\\u338");      // "OElig"
+      RTFCHARS.put("oe", "\\uc0\\u339");      // "oelig"
+      RTFCHARS.put("'R", "\\uc0\\u340");      // "Racute"
+      RTFCHARS.put("'r", "\\uc0\\u341");      // "racute"
+      RTFCHARS.put("cR", "\\uc0\\u342");      // "Rcedil"
+      RTFCHARS.put("cr", "\\uc0\\u343");      // "rcedil"
+      RTFCHARS.put("vR", "\\uc0\\u344");      // "Rcaron"
+      RTFCHARS.put("vr", "\\uc0\\u345");      // "rcaron"
+      RTFCHARS.put("'S", "\\uc0\\u346");      // "Sacute"
+      RTFCHARS.put("'s", "\\uc0\\u347");      // "sacute"
+      RTFCHARS.put("^S", "\\uc0\\u348");      // "Scirc"
+      RTFCHARS.put("^s", "\\uc0\\u349");      // "scirc"
+      RTFCHARS.put("cS", "\\uc0\\u350");      // "Scedil"
+      RTFCHARS.put("cs", "\\uc0\\u351");      // "scedil"
+      RTFCHARS.put("vS", "\\uc0\\u352");      // "Scaron"
+      RTFCHARS.put("vs", "\\uc0\\u353");      // "scaron"
+      RTFCHARS.put("cT", "\\uc0\\u354");      // "Tcedil"
+      RTFCHARS.put("ct", "\\uc0\\u355");      // "tcedil"
+      RTFCHARS.put("vT", "\\uc0\\u356");      // "Tcaron"
+      // Symbol #357 (t�) has no special Latex command
+      RTFCHARS.put("Tstrok", "\\uc0\\u358");  // "Tstrok"
+      RTFCHARS.put("tstrok", "\\uc0\\u359");  // "tstrok"
+      RTFCHARS.put("~U", "\\uc0\\u360");      // "Utilde"
+      RTFCHARS.put("~u", "\\uc0\\u361");      // "utilde"
+      RTFCHARS.put("=U", "\\uc0\\u362");      // "Umacr"
+      RTFCHARS.put("=u", "\\uc0\\u363");      // "umacr"
+      RTFCHARS.put("uU", "\\uc0\\u364");      // "Ubreve"
+      RTFCHARS.put("uu", "\\uc0\\u365");      // "ubreve"
+      RTFCHARS.put("rU", "\\uc0\\u366");      // "Uring"
+      RTFCHARS.put("ru", "\\uc0\\u367");      // "uring"
+      RTFCHARS.put("HU", "\\uc0\\u368");      // "Odblac"
+      RTFCHARS.put("Hu", "\\uc0\\u369");      // "odblac"
+      RTFCHARS.put("kU", "\\uc0\\u370");      // "Uogon"
+      RTFCHARS.put("ku", "\\uc0\\u371");      // "uogon"
+      RTFCHARS.put("^W", "\\uc0\\u372");      // "Wcirc"
+      RTFCHARS.put("^w", "\\uc0\\u373");      // "wcirc"
+      RTFCHARS.put("^Y", "\\uc0\\u374");      // "Ycirc"
+      RTFCHARS.put("^y", "\\uc0\\u375");      // "ycirc"
+      RTFCHARS.put("\"Y", "\\uc0\\u376");     // "Yuml"
+      RTFCHARS.put("'Z", "\\uc0\\u377");      // "Zacute"
+      RTFCHARS.put("'z", "\\uc0\\u378");      // "zacute"
+      RTFCHARS.put(".Z", "\\uc0\\u379");      // "Zdot"
+      RTFCHARS.put(".z", "\\uc0\\u380");      // "zdot"
+      RTFCHARS.put("vZ", "\\uc0\\u381");      // "Zcaron"
+      RTFCHARS.put("vz", "\\uc0\\u382");      // "zcaron"
+      // Symbol #383 (f) has no special Latex command
 
     //XML_CHARS.put("\\u00E1", "&#x00E1;");
   }
diff --git a/src/java/net/sf/jabref/JabRef.java b/src/java/net/sf/jabref/JabRef.java
index 0e46812..76aca03 100644
--- a/src/java/net/sf/jabref/JabRef.java
+++ b/src/java/net/sf/jabref/JabRef.java
@@ -42,7 +42,7 @@ import javax.swing.*;
 
 import com.jgoodies.looks.plastic.Plastic3DLookAndFeel;
 import com.jgoodies.looks.windows.WindowsLookAndFeel;
-import com.jgoodies.looks.FontPolicy;
+
 
 //import javax.swing.UIManager;
 //import javax.swing.UIDefaults;
@@ -550,11 +550,10 @@ public class JabRef {
 
                 // Set font sizes if we are using a JGoodies look and feel.
                 /*if ((lnf != null) && (lnf instanceof Plastic3DLookAndFeel)) {
-
                     //MetalLookAndFeel.setCurrentTheme(new
                     // com.jgoodies.plaf.plastic.theme.SkyBluer());
                     Plastic3DLookAndFeel plLnf = (Plastic3DLookAndFeel) lnf;
-                    Plastic3DLookAndFeel.setFontPolicy();
+                    //Plastic3DLookAndFeel.setFontPolicy();
                     //Plastic3DLookAndFeel.setFontPolicy(FontPolicy.);
                     //plLnf.setFontSizeHints(new FontSizeHints(fontSizes, fontSizes,
                     //        fontSizes, fontSizes));
diff --git a/src/java/net/sf/jabref/JabRefFrame.java b/src/java/net/sf/jabref/JabRefFrame.java
index 7b3689f..ba1678f 100644
--- a/src/java/net/sf/jabref/JabRefFrame.java
+++ b/src/java/net/sf/jabref/JabRefFrame.java
@@ -324,14 +324,14 @@ public class JabRefFrame
     public GroupSelector groupSelector;
 
   // The menus for importing/appending other formats
-  JMenu importMenu = subMenu("Import and append"),
-      importNewMenu = subMenu("Import"),
+  JMenu importMenu = subMenu("Import into current database"),
+      importNewMenu = subMenu("Import into new database"),
       exportMenu = subMenu("Export"),
       customExportMenu = subMenu("Custom export"),
       newDatabaseMenu = subMenu("New database" );
 
   // Other submenus
-  JMenu checkAndFix = subMenu("Find And Fix") ;
+  JMenu checkAndFix = subMenu("Scan database...");
 
 
   // The action for adding a new entry of unspecified type.
@@ -1020,7 +1020,7 @@ public JabRefPreferences prefs() {
     //=====================================
     file.add(quit);
     mb.add(file);
-    edit.add(test);
+    //edit.add(test);
     edit.add(undo);
     edit.add(redo);
     edit.addSeparator();
@@ -1069,19 +1069,24 @@ public JabRefPreferences prefs() {
     tools.add(incrementalSearch);
     tools.add(replaceAll);
 
-    // [kiar] I think we should group these festures
-    tools.add(checkAndFix) ;
-     checkAndFix.add( dupliCheck);
-     checkAndFix.add( strictDupliCheck);
-     checkAndFix.add( makeKeyAction);
-     checkAndFix.add( integrityCheckAction) ;
+    tools.add( makeKeyAction);
+
+     // [kiar] I think we should group these festures
+     tools.add(checkAndFix) ;
+     checkAndFix.add(dupliCheck);
+     checkAndFix.add(strictDupliCheck);
+     checkAndFix.add(autoSetPdf);
+     checkAndFix.add(autoSetPs);
+     checkAndFix.add(integrityCheckAction) ;
+
+
 
     tools.addSeparator();
     tools.add(manageSelectors);
     tools.add(emacsPushAction);
     tools.add(lyxPushAction);
     tools.add(winEdtPushAction);
-    tools.add(latexEditorPushAction);
+    //tools.add(latexEditorPushAction);
     //tools.add(fetchAuthorMedline);
     tools.addSeparator();
     tools.add(openFile);
@@ -1090,8 +1095,6 @@ public JabRefPreferences prefs() {
     tools.add(newSubDatabaseAction);
 
       tools.addSeparator();
-      tools.add(autoSetPdf);
-      tools.add(autoSetPs);
       tools.add(abbreviateIso);
       tools.add(abbreviateMedline);
       tools.add(unabbreviate);
@@ -2113,7 +2116,7 @@ class FetchCiteSeerAction
       importMenu.removeAll();
 
       // Add a menu item for autodetecting import format:
-      importMenu.add(new ImportUnknownMenuItem(ths, intoNew));
+      importMenu.add(new ImportMenuItem(ths, intoNew));
 
       // Add custom importers
       importMenu.addSeparator();
@@ -2128,7 +2131,7 @@ class FetchCiteSeerAction
         // Put in all formatters registered in ImportFormatReader:
         for (Iterator i=customImporters.iterator(); i.hasNext();) {
             ImportFormat imFo = (ImportFormat)i.next();
-            submenu.add(new ImportMenuItem(ths, imFo, intoNew));
+            submenu.add(new ImportMenuItem(ths, intoNew, imFo));
         }
       }
 
@@ -2138,42 +2141,11 @@ class FetchCiteSeerAction
       // Put in all formatters registered in ImportFormatReader:
       for (Iterator i=Globals.importFormatReader.getBuiltInInputFormats().iterator(); i.hasNext();) {
           ImportFormat imFo = (ImportFormat)i.next();
-          importMenu.add(new ImportMenuItem(ths, imFo, intoNew));
+          importMenu.add(new ImportMenuItem(ths, intoNew, imFo));
       }
   }
 
 
-  //
-  // simply opens up a jfilechooser dialog and gets a filename
-  // returns null if user selects cancel
-  // it should also do a check perhaps to see if
-  // file exists and is readable?
-  //
-
-  public String getNewFile() {
-
-    return Globals.getNewFile(ths, prefs, new File(prefs.get("workingDirectory")),
-                              null, JFileChooser.OPEN_DIALOG, false);
-
-    /*JFileChooser fc;
-    if (prefs.get("workingDirectory") == null) {
-      fc = new JabRefFileChooser(new File(System.getProperty("user.home"))); //cwd));
-    }
-    else {
-      fc = new JabRefFileChooser(new File(prefs.get("workingDirectory"))); //cwd));
-    }
-
-    fc.addChoosableFileFilter(new OpenFileFilter());
-    fc.setDialogType(JFileChooser.OPEN_DIALOG);
-    fc.showOpenDialog(null);
-    File selectedFile = fc.getSelectedFile();
-    if (selectedFile == null) { // cancel
-      return null;
-    }
-    prefs.put("workingDirectory", selectedFile.getPath());
-    return selectedFile.getAbsolutePath();*/
-  }
-
     public FileHistory getFileHistory() {
         return fileHistory;
     }
@@ -2232,7 +2204,7 @@ class FetchCiteSeerAction
               //    must provide a Reader for the layout definition.
               // 2. The preferred extension for the layout format.
               // 3. The name of the file to use.
-              final String chosenFile = Globals.getNewFile(ths, prefs, new File(prefs.get("workingDirectory")),
+              final String chosenFile = Globals.getNewFile(ths, new File(prefs.get("workingDirectory")),
                       extension, JFileChooser.SAVE_DIALOG, false);
               final String exportName = lfFileName;
               if (chosenFile == null)
@@ -2405,8 +2377,8 @@ class SaveSessionAction
       // 2. The preferred extension for the layout format.
       // 3. The name of the file to use.
       File outFile;
-      String chosenFile = Globals.getNewFile(ths, prefs,
-                                             new File(prefs.get("workingDirectory")),
+      String chosenFile = Globals.getNewFile(ths,
+              new File(prefs.get("workingDirectory")),
                                              extension,
                                              JFileChooser.SAVE_DIALOG, false);
 
@@ -2570,7 +2542,7 @@ class SaveSessionAction
             putValue(NAME, "Tab-separated file");
         }
         public void actionPerformed(ActionEvent e) {
-            String chosenFile = Globals.getNewFile(ths, prefs, new File(prefs.get("workingDirectory")), ".csv",
+            String chosenFile = Globals.getNewFile(ths, new File(prefs.get("workingDirectory")), ".csv",
                                                    JFileChooser.SAVE_DIALOG, true);
             if (chosenFile == null)
                 return;
diff --git a/src/java/net/sf/jabref/JabRefPreferences.java b/src/java/net/sf/jabref/JabRefPreferences.java
index 1a0f58a..6e5199a 100644
--- a/src/java/net/sf/jabref/JabRefPreferences.java
+++ b/src/java/net/sf/jabref/JabRefPreferences.java
@@ -297,8 +297,9 @@ public class JabRefPreferences {
 
         defaults.put("personalJournalList", null);
         defaults.put("externalJournalLists", null);
-
         defaults.put("citeCommand", "cite");
+        defaults.put("floatMarkedEntries", Boolean.TRUE);
+        
         //defaults.put("tempDir", System.getProperty("java.io.tmpdir"));
         //Util.pr(System.getProperty("java.io.tempdir"));
 
diff --git a/src/java/net/sf/jabref/MergeDialog.java b/src/java/net/sf/jabref/MergeDialog.java
index 99d3fd2..0d56060 100644
--- a/src/java/net/sf/jabref/MergeDialog.java
+++ b/src/java/net/sf/jabref/MergeDialog.java
@@ -19,7 +19,7 @@ public class MergeDialog extends JDialog {
   JPanel jPanel2 = new JPanel();
   JButton ok = new JButton();
   JButton Cancel = new JButton();
-  TitledBorder titledBorder1;
+  //TitledBorder titledBorder1;
   JCheckBox entries = new JCheckBox();
   JCheckBox strings = new JCheckBox();
   GridBagLayout gridBagLayout1 = new GridBagLayout();
@@ -28,7 +28,11 @@ public class MergeDialog extends JDialog {
 
   boolean okPressed = false;
 
-  public MergeDialog(JabRefFrame frame, String title, boolean modal) {
+    public boolean isOkPressed() {
+        return okPressed;
+    }
+
+    public MergeDialog(JabRefFrame frame, String title, boolean modal) {
     super(frame, title, modal);
     try {
       jbInit(frame);
@@ -44,13 +48,13 @@ public class MergeDialog extends JDialog {
   }
 
   private void jbInit(JabRefFrame parent) {
-      titledBorder1 = new TitledBorder(BorderFactory.createLineBorder(new Color(153, 153, 153),2),Globals.lang("Options"));
+    //  titledBorder1 = new TitledBorder(BorderFactory.createLineBorder(new Color(153, 153, 153),2),Globals.lang("Options"));
     panel1.setLayout(borderLayout1);
     ok.setText(Globals.lang("Ok"));
     ok.addActionListener(new MergeDialog_ok_actionAdapter(this));
     Cancel.setText(Globals.lang("Cancel"));
     Cancel.addActionListener(new MergeDialog_Cancel_actionAdapter(this));
-    jPanel1.setBorder(titledBorder1);
+    jPanel1.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
     jPanel1.setLayout(gridBagLayout1);
     entries.setToolTipText("");
     entries.setSelected(true);
@@ -61,7 +65,6 @@ public class MergeDialog extends JDialog {
     selector.setText(Globals.lang("Import word selector definitions"));
     this.setModal(true);
     this.setResizable(false);
-    this.setTitle("Import database");
     getContentPane().add(panel1);
     panel1.add(jPanel2, BorderLayout.SOUTH);
     jPanel2.add(ok, null);
diff --git a/src/java/net/sf/jabref/PrefsDialog3.java b/src/java/net/sf/jabref/PrefsDialog3.java
index f9950b6..785586d 100644
--- a/src/java/net/sf/jabref/PrefsDialog3.java
+++ b/src/java/net/sf/jabref/PrefsDialog3.java
@@ -180,7 +180,7 @@ public class PrefsDialog3 extends JDialog {
     exportPrefs.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
             String filename = Globals.getNewFile
-            (frame, _prefs, new File(System.getProperty("user.home")),
+            (frame, new File(System.getProperty("user.home")),
              ".xml", JFileChooser.SAVE_DIALOG, false);
             if (filename == null)
             return;
@@ -206,7 +206,7 @@ public class PrefsDialog3 extends JDialog {
     importPrefs.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
             String filename = Globals.getNewFile
-            (frame, _prefs, new File(System.getProperty("user.home")),
+            (frame, new File(System.getProperty("user.home")),
              ".xml", JFileChooser.OPEN_DIALOG, false);
             if (filename == null)
             return;
diff --git a/src/java/net/sf/jabref/RightClickMenu.java b/src/java/net/sf/jabref/RightClickMenu.java
index 7f2e8a8..fdfcced 100644
--- a/src/java/net/sf/jabref/RightClickMenu.java
+++ b/src/java/net/sf/jabref/RightClickMenu.java
@@ -46,6 +46,9 @@ public class RightClickMenu extends JPopupMenu
         groupRemoveMenu = new JMenu(Globals.lang("Remove from group")),
         groupMoveMenu = new JMenu("Assign exclusively to group"), // JZTODO lyrics
         typeMenu = new JMenu(Globals.lang("Change entry type"));
+    JCheckBoxMenuItem
+        floatMarked = new JCheckBoxMenuItem(Globals.lang("Float marked entries"),
+            Globals.prefs.getBoolean("floatMarkedEntries"));
 
     public RightClickMenu(BasePanel panel_, MetaData metaData_) {
         panel = panel_;
@@ -187,6 +190,13 @@ public class RightClickMenu extends JPopupMenu
                 }
             });
         addSeparator(); // for "add/move/remove to/from group" entries (appended here)
+
+        floatMarked.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                Globals.prefs.putBoolean("floatMarkedEntries", floatMarked.isSelected());
+                panel.mainTable.refreshSorting(); // Bad remote access
+            }
+        });
     }
 
     /**
@@ -235,6 +245,10 @@ public class RightClickMenu extends JPopupMenu
       insertNodes(groupAddMenu,metaData.getGroups(),bes,true,false);
       insertNodes(groupMoveMenu,metaData.getGroups(),bes,true,true);
       insertNodes(groupRemoveMenu,metaData.getGroups(),bes,false,false);
+
+        addSeparator();
+        floatMarked.setSelected(Globals.prefs.getBoolean("floatMarkedEntries"));
+        add(floatMarked);
     }
 
     /**
diff --git a/src/java/net/sf/jabref/SplashScreen.java~ b/src/java/net/sf/jabref/SplashScreen.java~
deleted file mode 100644
index af7fc4b..0000000
--- a/src/java/net/sf/jabref/SplashScreen.java~
+++ /dev/null
@@ -1,110 +0,0 @@
-package net.sf.jabref;
-
-//import javax.swing.*;
-import java.awt.*;
-import java.awt.event.*;
-import java.net.URL;
-
-/**
- * <p>Title: </p>
- * <p>Description: </p>
- * <p>Copyright: Copyright (c) 2003</p>
- * <p>Company: </p>
- * @author not attributable
- * @version 1.0
- */
-
-public class SplashScreen extends Window {
-    private Image splashImage;
-    private boolean paintCalled = false;
-    
-    public SplashScreen(Frame owner) {
-        super(owner);
-        URL imageURL = SplashScreen.class.getResource("/images/jabref-2.0-splash.png");
-        splashImage = Toolkit.getDefaultToolkit().createImage(imageURL);
-
-        // Load the image
-        MediaTracker mt = new MediaTracker(this);
-        mt.addImage(splashImage,0);
-        try {
-            mt.waitForID(0);
-        } catch(InterruptedException ie) {}
-
-                                                                                
-        // Center the window on the screen.
-        int imgWidth = splashImage.getWidth(this);
-        int imgHeight = splashImage.getHeight(this);  
-
-        setSize(imgWidth, imgHeight);
-        Dimension screenDim = Toolkit.getDefaultToolkit().getScreenSize();
-        setLocation(
-            (screenDim.width - imgWidth) / 2,
-            (screenDim.height - imgHeight) / 2
-        );
-
-    }
-    
-    
-    /**
-     * Updates the display area of the window.
-     */
-    public void update(Graphics g) {
-        // Note: Since the paint method is going to draw an
-        // image that covers the complete area of the component we
-        // do not fill the component with its background color
-        // here. This avoids flickering.
-
-        g.setColor(getForeground());
-        paint(g);
-    }
-    /**
-     * Paints the image on the window.
-     */
-
-    public void paint(Graphics g) {
-        g.drawImage(splashImage, 0, 0, this);
-
-        // Notify method splash that the window
-        // has been painted.
-        if (! paintCalled) {
-            paintCalled = true;
-            synchronized (this) { notifyAll(); }
-        }
-    }
-    
-      /**
-     * Constructs and displays a SplashWindow.<p>
-     * This method is useful for startup splashs.
-     * Dispose the returned frame to get rid of the splash window.<p>
-     *
-     * @param splashImage The image to be displayed.
-     * @return Returns the frame that owns the SplashWindow.
-     */
-
-    public static Frame splash() {
-        Frame f = new Frame();
-        SplashScreen w = new SplashScreen(f);
-
-        // Show the window.
-        w.setVisible(true);
-        w.toFront();
-
-        // Note: To make sure the user gets a chance to see the
-        // splash window we wait until its paint method has been
-        // called at least once by the AWT event dispatcher thread.
-
-        // sebwills adds: However, just in case the paint method never gets called
-        // (e.g. if the splashscreen is completely obscured by an 'always on top'
-        // window of some other application), we time-out after 5 seconds.
-        if (! EventQueue.isDispatchThread()) {
-            synchronized (w) {
-                if (! w.paintCalled) {
-                    try { 
-                        w.wait(5000);
-                    } catch (InterruptedException e) {}
-                }
-            }
-        }
-        return f;
-    }
-}
diff --git a/src/java/net/sf/jabref/TablePrefsTab.java b/src/java/net/sf/jabref/TablePrefsTab.java
index a9e8db0..d96b1ef 100644
--- a/src/java/net/sf/jabref/TablePrefsTab.java
+++ b/src/java/net/sf/jabref/TablePrefsTab.java
@@ -15,7 +15,7 @@ import net.sf.jabref.gui.ColorSetupPanel;
 class TablePrefsTab extends JPanel implements PrefsTab {
 
     JabRefPreferences _prefs;
-    private JCheckBox autoResizeMode, priDesc, secDesc, terDesc,
+    private JCheckBox autoResizeMode, priDesc, secDesc, terDesc, floatMarked,
     pdfColumn, urlColumn, citeseerColumn;
     private JRadioButton namesAsIs, namesFf, namesFl, namesNatbib, abbrNames, noAbbrNames, lastNamesOnly;
     private JComboBox
@@ -52,6 +52,8 @@ class TablePrefsTab extends JPanel implements PrefsTab {
         urlColumn = new JCheckBox(Globals.lang("Show URL/DOI column"));
         citeseerColumn = new JCheckBox(Globals.lang("Show CiteSeer column"));
 
+        floatMarked = new JCheckBox(Globals.lang("Float marked entries"));
+
         priField = new JTextField(10);
         secField = new JTextField(10);
         terField = new JTextField(10);
@@ -148,6 +150,9 @@ class TablePrefsTab extends JPanel implements PrefsTab {
     builder.append(pan);
     builder.append(builder2.getPanel());
     builder.nextLine();
+    builder.append(pan);
+    builder.append(floatMarked);
+    builder.nextLine();
     builder.appendSeparator(Globals.lang("General"));
     builder.append(pan); builder.append(autoResizeMode); builder.nextLine();
 
@@ -196,6 +201,8 @@ class TablePrefsTab extends JPanel implements PrefsTab {
     secDesc.setSelected(_prefs.getBoolean("secDescending"));
     terDesc.setSelected(_prefs.getBoolean("terDescending"));
 
+        floatMarked.setSelected(_prefs.getBoolean("floatMarkedEntries"));
+
         abbrNames.setEnabled(!namesNatbib.isSelected());
         lastNamesOnly.setEnabled(!namesNatbib.isSelected());
         noAbbrNames.setEnabled(!namesNatbib.isSelected());
@@ -229,6 +236,8 @@ class TablePrefsTab extends JPanel implements PrefsTab {
         _prefs.put("priSort", priField.getText().toLowerCase().trim());
         _prefs.put("secSort", secField.getText().toLowerCase().trim());
         _prefs.put("terSort", terField.getText().toLowerCase().trim());
+
+        _prefs.putBoolean("floatMarkedEntries", floatMarked.isSelected());
     // updatefont
     }
 
diff --git a/src/java/net/sf/jabref/export/CustomExportDialog.java b/src/java/net/sf/jabref/export/CustomExportDialog.java
index a54f8bd..badec9f 100644
--- a/src/java/net/sf/jabref/export/CustomExportDialog.java
+++ b/src/java/net/sf/jabref/export/CustomExportDialog.java
@@ -34,7 +34,6 @@ import java.io.File;
 import net.sf.jabref.JabRefFrame;
 import net.sf.jabref.Util;
 import net.sf.jabref.Globals;
-import net.sf.jabref.GUIGlobals;
 
 /**
  * Dialog for creating or modifying custom exports.
@@ -42,20 +41,20 @@ import net.sf.jabref.GUIGlobals;
 class CustomExportDialog extends JDialog {
 
     JTextField
-	name = new JTextField(60),
-	layoutFile = new JTextField(60),
-	extension = new JTextField(60);
+    name = new JTextField(60),
+    layoutFile = new JTextField(60),
+    extension = new JTextField(60);
     JLabel
-	nl = new JLabel(Globals.lang("Export name")+":"),
-	nr = new JLabel(Globals.lang("Main layout file")+":"),
-	nf = new JLabel(Globals.lang("File extension")+":");
+    nl = new JLabel(Globals.lang("Export name")+":"),
+    nr = new JLabel(Globals.lang("Main layout file")+":"),
+    nf = new JLabel(Globals.lang("File extension")+":");
     JButton
         ok = new JButton(Globals.lang("Ok")),
         cancel = new JButton(Globals.lang("Cancel")),
         browse = new JButton(Globals.lang("Browse"));
     JPanel
-	main = new JPanel(),
-	opt = new JPanel();
+    main = new JPanel(),
+    opt = new JPanel();
     private boolean ok_pressed = false;
     private Vector groups;
     private int index;
@@ -76,69 +75,69 @@ class CustomExportDialog extends JDialog {
 
 
     public CustomExportDialog(JabRefFrame parent_) {
-	super(parent_, Globals.lang("Edit custom export"), true);
-	parent = parent_;
-	//groups = groups_;
-	//index = index_;
-	/*if (index >= 0) {
-	    // Group entry already exists.
-	    try {
-		oldField = (String)groups.elementAt(index);
-		field.setText(oldField);
-		oldName = (String)groups.elementAt(index+1);
-		name.setText(oldName);
-		oldRegexp = (String)groups.elementAt(index+2);
-		regexp.setText(oldRegexp);
-
-		// We disable these text fields, since changing field
-		// or regexp would leave the entries added to the
-		// group hanging.
-		field.setEnabled(false);
-		regexp.setEnabled(false);
-	    } catch (ArrayIndexOutOfBoundsException ex) {
-	    }
-	} else
-	    field.setText(defaultField);
-*/
-	ActionListener okListener = new ActionListener() {
-		public void actionPerformed(ActionEvent e) {
-
-		    // Check that there are no empty strings.
-		    if ((layoutFile.getText().equals("")) ||
-			(name.getText().equals("")) ||
-			(extension.getText().equals("")) ||
+    super(parent_, Globals.lang("Edit custom export"), true);
+    parent = parent_;
+    //groups = groups_;
+    //index = index_;
+    /*if (index >= 0) {
+            // Group entry already exists.
+            try {
+            oldField = (String)groups.elementAt(index);
+            field.setText(oldField);
+            oldName = (String)groups.elementAt(index+1);
+            name.setText(oldName);
+            oldRegexp = (String)groups.elementAt(index+2);
+            regexp.setText(oldRegexp);
+
+            // We disable these text fields, since changing field
+            // or regexp would leave the entries added to the
+            // group hanging.
+            field.setEnabled(false);
+            regexp.setEnabled(false);
+            } catch (ArrayIndexOutOfBoundsException ex) {
+            }
+        } else
+            field.setText(defaultField);
+    */
+    ActionListener okListener = new ActionListener() {
+        public void actionPerformed(ActionEvent e) {
+
+            // Check that there are no empty strings.
+            if ((layoutFile.getText().equals("")) ||
+            (name.getText().equals("")) ||
+            (extension.getText().equals("")) ||
                         (!layoutFile.getText().endsWith(".layout"))) {
-			//JOptionPane.showMessageDialog
-			//    (parent, Globals.lang("You must provide a name, a search "
-			//			  +"string and a field name for this group."),
-			//			  Globals.lang("Create group"),
-			//     JOptionPane.ERROR_MESSAGE);
-			return;
-		    }
-
-		    // Handling of : and ; must also be done.
-
-		    ok_pressed = true;
-		    dispose();
-		}
-	    };
-	ok.addActionListener(okListener);
-	name.addActionListener(okListener);
-	layoutFile.addActionListener(okListener);
-	extension.addActionListener(okListener);
-
-	AbstractAction cancelAction = new AbstractAction() {
+            //JOptionPane.showMessageDialog
+            //    (parent, Globals.lang("You must provide a name, a search "
+            //			  +"string and a field name for this group."),
+            //			  Globals.lang("Create group"),
+            //     JOptionPane.ERROR_MESSAGE);
+            return;
+            }
+
+            // Handling of : and ; must also be done.
+
+            ok_pressed = true;
+            dispose();
+        }
+        };
+    ok.addActionListener(okListener);
+    name.addActionListener(okListener);
+    layoutFile.addActionListener(okListener);
+    extension.addActionListener(okListener);
+
+    AbstractAction cancelAction = new AbstractAction() {
           public void actionPerformed(ActionEvent e) {
               dispose();
-		}
-	    };
+        }
+        };
 
-	cancel.addActionListener(cancelAction);
+    cancel.addActionListener(cancelAction);
 
         browse.addActionListener(new ActionListener() {
           public void actionPerformed(ActionEvent e) {
             File directory = new File(Globals.prefs.get("exportWorkingDirectory"));
-            String chosenStr = Globals.getNewFile(parent, Globals.prefs, directory, ".layout",
+            String chosenStr = Globals.getNewFile(parent, directory, ".layout",
                                              JFileChooser.OPEN_DIALOG, false);
             if (chosenStr == null) return;
             File chosen = new File(chosenStr);
@@ -154,45 +153,45 @@ class CustomExportDialog extends JDialog {
         ActionMap am = main.getActionMap();
         InputMap im = main.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
         im.put(parent.prefs().getKey("Close dialog"), "close");
-	am.put("close", cancelAction);
-
-
-	// Layout starts here.
-	main.setLayout(gbl);
-	//opt.setLayout(gbl);
-	main.setBorder(BorderFactory.createTitledBorder
-		       (BorderFactory.createEtchedBorder(),
-			Globals.lang("Export properties")));
-
-	// Main panel:
-	con.weightx = 0;
-	con.gridwidth = 1;
-	con.insets = new Insets(3, 5, 3, 5);
-	con.anchor = GridBagConstraints.EAST;
-	con.fill = GridBagConstraints.NONE;
-	con.gridx = 0;
-	con.gridy = 0;
-	gbl.setConstraints(nl, con);
-	main.add(nl);
-	con.gridy = 1;
-	gbl.setConstraints(nr, con);
-	main.add(nr);
-	con.gridy = 2;
-	gbl.setConstraints(nf, con);
-	main.add(nf);
+    am.put("close", cancelAction);
+
+
+    // Layout starts here.
+    main.setLayout(gbl);
+    //opt.setLayout(gbl);
+    main.setBorder(BorderFactory.createTitledBorder
+               (BorderFactory.createEtchedBorder(),
+            Globals.lang("Export properties")));
+
+    // Main panel:
+    con.weightx = 0;
+    con.gridwidth = 1;
+    con.insets = new Insets(3, 5, 3, 5);
+    con.anchor = GridBagConstraints.EAST;
+    con.fill = GridBagConstraints.NONE;
+    con.gridx = 0;
+    con.gridy = 0;
+    gbl.setConstraints(nl, con);
+    main.add(nl);
+    con.gridy = 1;
+    gbl.setConstraints(nr, con);
+    main.add(nr);
+    con.gridy = 2;
+    gbl.setConstraints(nf, con);
+    main.add(nf);
 
         con.gridwidth = 2;
         con.weightx = 1;
-	con.anchor = GridBagConstraints.WEST;
-	con.fill = GridBagConstraints.HORIZONTAL;
-	con.gridy = 0;
-	con.gridx = 1;
-	gbl.setConstraints(name, con);
-	main.add(name);
-	con.gridy = 1;
+    con.anchor = GridBagConstraints.WEST;
+    con.fill = GridBagConstraints.HORIZONTAL;
+    con.gridy = 0;
+    con.gridx = 1;
+    gbl.setConstraints(name, con);
+    main.add(name);
+    con.gridy = 1;
         con.gridwidth = 1;
         gbl.setConstraints(layoutFile, con);
-	main.add(layoutFile);
+    main.add(layoutFile);
         con.gridx = 2;
         con.weightx = 0;
         gbl.setConstraints(browse, con);
@@ -200,35 +199,35 @@ class CustomExportDialog extends JDialog {
         con.weightx = 1;
         con.gridwidth = 2;
         con.gridx = 1;
-	con.gridy = 2;
-	gbl.setConstraints(extension, con);
-	main.add(extension);
-
-       	// Option buttons:
-	con.gridx = GridBagConstraints.RELATIVE;
-	con.gridy = GridBagConstraints.RELATIVE;
-	con.weightx = 1;
-	con.gridwidth = 1;
-	con.anchor = GridBagConstraints.EAST;
-	con.fill = GridBagConstraints.NONE;
-	//gbl.setConstraints(ok, con);
-	opt.add(ok);
-	con.anchor = GridBagConstraints.WEST;
-	con.gridwidth = GridBagConstraints.REMAINDER;
-	//gbl.setConstraints(cancel, con);
-	opt.add(cancel);
-
-	getContentPane().add(main, BorderLayout.CENTER);
-	getContentPane().add(opt, BorderLayout.SOUTH);
-
-	//pack();
-	setSize(600, 170);
+    con.gridy = 2;
+    gbl.setConstraints(extension, con);
+    main.add(extension);
+
+           // Option buttons:
+    con.gridx = GridBagConstraints.RELATIVE;
+    con.gridy = GridBagConstraints.RELATIVE;
+    con.weightx = 1;
+    con.gridwidth = 1;
+    con.anchor = GridBagConstraints.EAST;
+    con.fill = GridBagConstraints.NONE;
+    //gbl.setConstraints(ok, con);
+    opt.add(ok);
+    con.anchor = GridBagConstraints.WEST;
+    con.gridwidth = GridBagConstraints.REMAINDER;
+    //gbl.setConstraints(cancel, con);
+    opt.add(cancel);
+
+    getContentPane().add(main, BorderLayout.CENTER);
+    getContentPane().add(opt, BorderLayout.SOUTH);
+
+    //pack();
+    setSize(600, 170);
 
         Util.placeDialog(this, parent);
     }
 
     public boolean okPressed() {
-	return ok_pressed;
+    return ok_pressed;
     }
 
     public int index() { return index; }
diff --git a/src/java/net/sf/jabref/export/ExpandEndnoteFilters.java b/src/java/net/sf/jabref/export/ExpandEndnoteFilters.java
index 1efc72a..de668ec 100644
--- a/src/java/net/sf/jabref/export/ExpandEndnoteFilters.java
+++ b/src/java/net/sf/jabref/export/ExpandEndnoteFilters.java
@@ -33,7 +33,7 @@ public class ExpandEndnoteFilters extends MnemonicAwareAction implements Worker
     
     public void actionPerformed(ActionEvent e) {
         
-        String filename = Globals.getNewFile(frame, Globals.prefs, new File(System.getProperty("user.home")), ".zip", 
+        String filename = Globals.getNewFile(frame, new File(System.getProperty("user.home")), ".zip",
                 JFileChooser.SAVE_DIALOG, false); 
         
         if (filename == null)
diff --git a/src/java/net/sf/jabref/export/FileActions.java b/src/java/net/sf/jabref/export/FileActions.java
index 1737b15..e4ac079 100644
--- a/src/java/net/sf/jabref/export/FileActions.java
+++ b/src/java/net/sf/jabref/export/FileActions.java
@@ -739,7 +739,8 @@ public class FileActions
             }
 
             List comparators = new ArrayList();
-            comparators.add(new CrossRefEntryComparator());
+            if (isSaveOperation)
+                comparators.add(new CrossRefEntryComparator());
             comparators.add(new FieldComparator(pri, priD));
             comparators.add(new FieldComparator(sec, secD));
             comparators.add(new FieldComparator(ter, terD));
diff --git a/src/java/net/sf/jabref/export/layout/LayoutEntry.java b/src/java/net/sf/jabref/export/layout/LayoutEntry.java
index fb5ede4..3b7f1cb 100755
--- a/src/java/net/sf/jabref/export/layout/LayoutEntry.java
+++ b/src/java/net/sf/jabref/export/layout/LayoutEntry.java
@@ -40,7 +40,7 @@ import net.sf.jabref.Globals;
  * DOCUMENT ME!
  *
  * @author $author$
- * @version $Revision: 1.9 $
+ * @version $Revision: 1.10 $
  */
 public class LayoutEntry
 {
@@ -192,6 +192,7 @@ public class LayoutEntry
 
     public String doLayout(BibtexEntry bibtex, BibtexDatabase database)
     {
+
         if (type == LayoutHelper.IS_LAYOUT_TEXT)
         {
             return text;
@@ -207,6 +208,7 @@ public class LayoutEntry
 
             if (field == null)
             {
+
                 return null;
             }
             else
@@ -219,6 +221,8 @@ public class LayoutEntry
         else if ((type == LayoutHelper.IS_FIELD_START) ||
                 	(type == LayoutHelper.IS_GROUP_START))
         {
+
+
             String field = getField(bibtex, text, database);
             //String field = (String) bibtex.getField(text);
 
@@ -332,6 +336,7 @@ public class LayoutEntry
         //		else if (type == LayoutHelper.IS_OPTION_FIELD_PARAM)
         //		{
         //		}
+
         return "";
     }
 
@@ -437,8 +442,17 @@ public class LayoutEntry
     
     private String getField(BibtexEntry bibtex, String field, BibtexDatabase database) {
 
-      String res = (String)bibtex.getField(field);
-        
+        // Change: Morten Alver, May 23, 2006. Formatter argument uses this method to
+        // resolve field values. We need this part to resolve \bibtextype correctly in
+        // constructs like \format[ToLowerCase]{\bibtextype}:
+        if (field.equals("bibtextype"))
+        {
+            return bibtex.getType().getName();
+        }
+        // end change Morten Alver
+
+        String res = (String)bibtex.getField(field);
+
         if ((res != null) && (database != null))
         res = database.resolveForStrings(res);
 
diff --git a/src/java/net/sf/jabref/export/layout/format/AuthorAndsCommaReplacer.java b/src/java/net/sf/jabref/export/layout/format/AuthorAndsCommaReplacer.java
index 10615e4..eaa8a3d 100644
--- a/src/java/net/sf/jabref/export/layout/format/AuthorAndsCommaReplacer.java
+++ b/src/java/net/sf/jabref/export/layout/format/AuthorAndsCommaReplacer.java
@@ -38,7 +38,7 @@ public class AuthorAndsCommaReplacer implements LayoutFormatter {
 			break;
 		}
 
-		return s;
+        return s;
 
 	}
 }
diff --git a/src/java/net/sf/jabref/export/layout/format/AuthorLastFirstAbbreviator.java b/src/java/net/sf/jabref/export/layout/format/AuthorLastFirstAbbreviator.java
index 2eedef6..9212691 100644
--- a/src/java/net/sf/jabref/export/layout/format/AuthorLastFirstAbbreviator.java
+++ b/src/java/net/sf/jabref/export/layout/format/AuthorLastFirstAbbreviator.java
@@ -23,10 +23,10 @@ public class AuthorLastFirstAbbreviator implements LayoutFormatter {
 	public String format(String fieldText) 
 	{
 
-		String[] authors = fieldText.split(" and ");
+        String[] authors = fieldText.split(" and ");
 
 		String abbrev = getAbbreviations(authors);
-		return (abbrev==null ? "" : abbrev);
+        return (abbrev==null ? "" : abbrev);
 
 	}
 				
diff --git a/src/java/net/sf/jabref/export/layout/format/RTFChars.java b/src/java/net/sf/jabref/export/layout/format/RTFChars.java
index eee15ce..0b6d7b1 100644
--- a/src/java/net/sf/jabref/export/layout/format/RTFChars.java
+++ b/src/java/net/sf/jabref/export/layout/format/RTFChars.java
@@ -7,9 +7,9 @@ public class RTFChars implements LayoutFormatter {
 
 
   public String format(String field) {
+    
     int i;
     field = firstFormat(field);
-
     StringBuffer sb = new StringBuffer("");
     StringBuffer currentCommand = null;
     char c;
@@ -20,6 +20,7 @@ public class RTFChars implements LayoutFormatter {
         sb.append('\\');
         escaped = false;
       }
+
       else if (c == '\\') {
         escaped = true;
         incommand = true;
@@ -108,7 +109,7 @@ public class RTFChars implements LayoutFormatter {
   }
 
   private String firstFormat(String s) {
-    return s.replaceAll("&|\\\\&","&");//.replaceAll("--", "—");
+    return s;//s.replaceAll("&|\\\\&","&");//.replaceAll("--", "—");
   }
 
   private IntAndString getPart(String text, int i) {
diff --git a/src/java/net/sf/jabref/export/layout/format/ToLowerCase.java b/src/java/net/sf/jabref/export/layout/format/ToLowerCase.java
index 7545e0c..0e26f82 100755
--- a/src/java/net/sf/jabref/export/layout/format/ToLowerCase.java
+++ b/src/java/net/sf/jabref/export/layout/format/ToLowerCase.java
@@ -4,8 +4,8 @@
 //  Language: Java
 //  Compiler: JDK 1.4
 //  Authors:  Egon Willighagen
-//  Version:  $Revision: 1.2 $
-//            $Date: 2004/05/02 16:25:43 $
+//  Version:  $Revision: 1.3 $
+//            $Date: 2006/05/23 21:25:49 $
 //            $Author: mortenalver $
 //
 //  Copyright (c) Egon Willighagen
@@ -29,7 +29,7 @@ import net.sf.jabref.export.layout.LayoutFormatter;
  * Remove brackets formatter.
  *
  * @author $author$
- * @version $Revision: 1.2 $
+ * @version $Revision: 1.3 $
  */
 public class ToLowerCase implements LayoutFormatter
 {
@@ -37,8 +37,7 @@ public class ToLowerCase implements LayoutFormatter
 
     public String format(String fieldText)
     {
-        String fieldEntry = fieldText.toLowerCase();
-       return fieldEntry;
+        return fieldText.toLowerCase();
     }
 }
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/src/java/net/sf/jabref/external/ExternalFilePanel.java b/src/java/net/sf/jabref/external/ExternalFilePanel.java
index 735529c..c6b7689 100644
--- a/src/java/net/sf/jabref/external/ExternalFilePanel.java
+++ b/src/java/net/sf/jabref/external/ExternalFilePanel.java
@@ -13,7 +13,6 @@ import java.io.File;
 import java.io.IOException;
 import java.net.URL;
 import java.net.MalformedURLException;
-import java.util.Vector;
 
 /**
  * Created by IntelliJ IDEA.
@@ -119,7 +118,7 @@ public class ExternalFilePanel extends JPanel {
         }
 
         String chosenFile =
-                Globals.getNewFile(frame, Globals.prefs, new File(dir), "."+fieldName,
+                Globals.getNewFile(frame, new File(dir), "."+fieldName,
                         JFileChooser.OPEN_DIALOG, false);
 
         if (chosenFile != null) {
diff --git a/src/java/net/sf/jabref/groups/EntryTableTransferHandler.java b/src/java/net/sf/jabref/groups/EntryTableTransferHandler.java
index adcdb54..b7a66e9 100644
--- a/src/java/net/sf/jabref/groups/EntryTableTransferHandler.java
+++ b/src/java/net/sf/jabref/groups/EntryTableTransferHandler.java
@@ -28,7 +28,6 @@ import java.awt.event.InputEvent;
 
 import javax.swing.*;
 
-import net.sf.jabref.EntryTable;
 import net.sf.jabref.gui.MainTable;
 
 public class EntryTableTransferHandler extends TransferHandler {
diff --git a/src/java/net/sf/jabref/gui/EntryCustomizationDialog2.java b/src/java/net/sf/jabref/gui/EntryCustomizationDialog2.java
index 454813a..0d7bd58 100644
--- a/src/java/net/sf/jabref/gui/EntryCustomizationDialog2.java
+++ b/src/java/net/sf/jabref/gui/EntryCustomizationDialog2.java
@@ -87,8 +87,8 @@ public class EntryCustomizationDialog2 extends JDialog implements ListSelectionL
         //right.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), Globals.lang("Fields")));
         right.setBorder(BorderFactory.createEtchedBorder());
         ok = new JButton("OK");
-        cancel = new JButton("Cancel");
-        apply = new JButton("Apply");
+        cancel = new JButton(Globals.lang("Cancel"));
+        apply = new JButton(Globals.lang("Apply"));
         ok.addActionListener(this);
         apply.addActionListener(this);
         cancel.addActionListener(this);
diff --git a/src/java/net/sf/jabref/gui/ImportInspectionDialog.java b/src/java/net/sf/jabref/gui/ImportInspectionDialog.java
index 69e84f8..d0c21f0 100644
--- a/src/java/net/sf/jabref/gui/ImportInspectionDialog.java
+++ b/src/java/net/sf/jabref/gui/ImportInspectionDialog.java
@@ -229,7 +229,7 @@ public class ImportInspectionDialog extends JDialog {
      *
      * @param entries
      */
-    public void addEntries(List entries) {
+    public void addEntries(Collection entries) {
 
         for (Iterator i = entries.iterator(); i.hasNext();) {
             BibtexEntry entry = (BibtexEntry) i.next();
diff --git a/src/java/net/sf/jabref/gui/MainTable.java b/src/java/net/sf/jabref/gui/MainTable.java
index 137cb50..7bea404 100644
--- a/src/java/net/sf/jabref/gui/MainTable.java
+++ b/src/java/net/sf/jabref/gui/MainTable.java
@@ -41,11 +41,15 @@ public class MainTable extends JTable {
     private Comparator searchComparator, groupComparator,
             markingComparator = new IsMarkedComparator();
     private Matcher searchMatcher, groupMatcher;
-    public static final int REQUIRED = 1
-    ,
-    OPTIONAL = 2
-    ,
-    OTHER = 3;
+
+    // Constants used to define how a cell should be rendered.
+    public static final int REQUIRED = 1, OPTIONAL = 2,
+      REQ_STRING = 1,
+      REQ_NUMBER = 2,
+      OPT_STRING = 3,
+      OTHER = 3,
+      BOOLEAN = 4,
+      ICON_COL = 8; // Constant to indicate that an icon cell renderer should be used.
 
     static {
         updateRenderers();
@@ -96,7 +100,10 @@ public class MainTable extends JTable {
 
     public void refreshSorting() {
         sortedForMarking.getReadWriteLock().writeLock().lock();
-        sortedForMarking.setComparator(markingComparator);
+        if (Globals.prefs.getBoolean("floatMarkedEntries"))
+            sortedForMarking.setComparator(markingComparator);
+        else
+            sortedForMarking.setComparator(null);
         sortedForMarking.getReadWriteLock().writeLock().unlock();
         sortedForSearch.getReadWriteLock().writeLock().lock();
         sortedForSearch.setComparator(searchComparator);
@@ -202,11 +209,11 @@ public class MainTable extends JTable {
             }
         }
         else if (tableColorCodes) {
-            if (status == EntryTableModel.REQUIRED)
+            if (status == REQUIRED)
                 renderer = reqRenderer;
-            else if (status == EntryTableModel.OPTIONAL)
+            else if (status == OPTIONAL)
                 renderer = optRenderer;
-            else if (status == EntryTableModel.BOOLEAN)
+            else if (status == BOOLEAN)
                 renderer = getDefaultRenderer(Boolean.class);
         }
 
diff --git a/src/java/net/sf/jabref/imports/AppendDatabaseAction.java b/src/java/net/sf/jabref/imports/AppendDatabaseAction.java
new file mode 100644
index 0000000..78b6f0b
--- /dev/null
+++ b/src/java/net/sf/jabref/imports/AppendDatabaseAction.java
@@ -0,0 +1,187 @@
+package net.sf.jabref.imports;
+
+import net.sf.jabref.imports.ParserResult;
+import net.sf.jabref.imports.OpenDatabaseAction;
+import net.sf.jabref.*;
+import net.sf.jabref.groups.GroupTreeNode;
+import net.sf.jabref.groups.AllEntriesGroup;
+import net.sf.jabref.groups.ExplicitGroup;
+import net.sf.jabref.groups.AbstractGroup;
+import net.sf.jabref.undo.NamedCompound;
+import net.sf.jabref.undo.UndoableInsertEntry;
+import net.sf.jabref.undo.UndoableInsertString;
+
+import javax.swing.*;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.Enumeration;
+import java.util.List;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: alver
+ * Date: May 18, 2006
+ * Time: 9:49:02 PM
+ * To change this template use File | Settings | File Templates.
+ */
+public class AppendDatabaseAction extends BaseAction {
+    private JabRefFrame frame;
+    private BasePanel panel;
+    private List filesToOpen = new ArrayList();
+
+    public AppendDatabaseAction(JabRefFrame frame, BasePanel panel) {
+        this.frame = frame;
+        this.panel = panel;
+    }
+
+    public void action() {
+
+        filesToOpen.clear();
+        final MergeDialog md = new MergeDialog(frame, Globals.lang("Append database"), true);
+        Util.placeDialog(md, panel);
+        md.setVisible(true);
+        if (md.isOkPressed()) {
+            String[] chosen = Globals.getMultipleFiles(frame, new File(Globals.prefs.get("workingDirectory")),
+                    null, false);
+          //String chosenFile = Globals.getNewFile(frame, new File(Globals.prefs.get("workingDirectory")),
+          //                                       null, JFileChooser.OPEN_DIALOG, false);
+          if(chosen == null)
+            return;
+          for (int i=0; i<chosen.length; i++)
+            filesToOpen.add(new File(chosen[i]));
+
+            // Run the actual open in a thread to prevent the program
+            // locking until the file is loaded.
+            (new Thread() {
+                public void run() {
+                    openIt(md.importEntries(), md.importStrings(),
+                            md.importGroups(), md.importSelectorWords());
+                }
+            }).start();
+            //frame.getFileHistory().newFile(panel.fileToOpen.getPath());
+        }
+
+      }
+
+    void openIt(boolean importEntries, boolean importStrings,
+                boolean importGroups, boolean importSelectorWords) {
+        if (filesToOpen.size() == 0)
+            return;
+        for (Iterator i = filesToOpen.iterator(); i.hasNext();) {
+            File file = (File)i.next();
+            try {
+                Globals.prefs.put("workingDirectory", file.getPath());
+                // Should this be done _after_ we know it was successfully opened?
+                String encoding = Globals.prefs.get("defaultEncoding");
+                ParserResult pr = OpenDatabaseAction.loadDatabase(file, encoding);
+                mergeFromBibtex(frame, panel, pr, importEntries, importStrings,
+                        importGroups, importSelectorWords);
+                panel.output(Globals.lang("Imported from database") + " '" + file.getPath() + "'");
+            } catch (Throwable ex) {
+                ex.printStackTrace();
+                JOptionPane.showMessageDialog
+                        (panel, ex.getMessage(),
+                                "Open database", JOptionPane.ERROR_MESSAGE);
+            }
+        }
+    }
+
+    public static void mergeFromBibtex(JabRefFrame frame, BasePanel panel, ParserResult pr,
+                                boolean importEntries, boolean importStrings,
+                                boolean importGroups, boolean importSelectorWords)
+              throws KeyCollisionException {
+
+          BibtexDatabase fromDatabase = pr.getDatabase();
+          ArrayList appendedEntries = new ArrayList();
+          ArrayList originalEntries = new ArrayList();
+        BibtexDatabase database = panel.database();
+          BibtexEntry originalEntry;
+          NamedCompound ce = new NamedCompound(Globals.lang("Append database"));
+          MetaData meta = new MetaData(pr.getMetaData(), pr.getDatabase());
+
+          if (importEntries) { // Add entries
+              Iterator i = fromDatabase.getKeySet().iterator();
+              while (i.hasNext()) {
+                  originalEntry = fromDatabase.getEntryById((String) i.next());
+                  BibtexEntry be = (BibtexEntry) (originalEntry.clone());
+                  be.setId(Util.createNeutralId());
+                  database.insertEntry(be);
+                  appendedEntries.add(be);
+                  originalEntries.add(originalEntry);
+                  ce.addEdit(new UndoableInsertEntry(database, be, panel));
+              }
+          }
+
+          if (importStrings) {
+              BibtexString bs;
+              int pos = 0;
+              Iterator i = fromDatabase.getStringKeySet().iterator();
+              for (; i.hasNext();) {
+                  bs = (BibtexString) (fromDatabase.getString(i.next()).clone());
+                  if (!database.hasStringLabel(bs.getName())) {
+                      //pos = toDatabase.getStringCount();
+                      database.addString(bs);
+                      ce.addEdit(new UndoableInsertString(panel, database, bs));
+                  }
+              }
+          }
+
+          if (importGroups) {
+              GroupTreeNode newGroups = meta.getGroups();
+              if (newGroups != null) {
+
+                  // ensure that there is always only one AllEntriesGroup
+                  if (newGroups.getGroup() instanceof AllEntriesGroup) {
+                      // create a dummy group
+                      ExplicitGroup group = new ExplicitGroup("Imported",
+                              AbstractGroup.INDEPENDENT); // JZTODO lyrics
+                      newGroups.setGroup(group);
+                      for (int i = 0; i < appendedEntries.size(); ++i)
+                          group.addEntry((BibtexEntry) appendedEntries.get(i));
+                  }
+
+                  // groupsSelector is always created, even when no groups
+                  // have been defined. therefore, no check for null is
+                  // required here
+                  frame.groupSelector.addGroups(newGroups, ce);
+                  // for explicit groups, the entries copied to the mother fromDatabase have to
+                  // be "reassigned", i.e. the old reference is removed and the reference
+                  // to the new fromDatabase is added.
+                  GroupTreeNode node;
+                  ExplicitGroup group;
+                  BibtexEntry entry;
+                  for (Enumeration e = newGroups.preorderEnumeration(); e.hasMoreElements();) {
+                      node = (GroupTreeNode) e.nextElement();
+                      if (!(node.getGroup() instanceof ExplicitGroup))
+                          continue;
+                      group = (ExplicitGroup) node.getGroup();
+                      for (int i = 0; i < originalEntries.size(); ++i) {
+                          entry = (BibtexEntry) originalEntries.get(i);
+                          if (group.contains(entry)) {
+                              group.removeEntry(entry);
+                              group.addEntry((BibtexEntry) appendedEntries.get(i));
+                          }
+                      }
+                  }
+                  frame.groupSelector.revalidateGroups();
+              }
+          }
+
+          if (importSelectorWords) {
+              Iterator i = meta.iterator();
+              while (i.hasNext()) {
+                  String s = (String) i.next();
+                  if (s.startsWith(Globals.SELECTOR_META_PREFIX)) {
+                      panel.metaData().putData(s, meta.getData(s));
+                  }
+              }
+          }
+
+          ce.end();
+          panel.undoManager.addEdit(ce);
+          panel.markBaseChanged();
+      }
+
+
+}
diff --git a/src/java/net/sf/jabref/imports/BibtexParser.java b/src/java/net/sf/jabref/imports/BibtexParser.java
index ad37e2e..b8dff0d 100644
--- a/src/java/net/sf/jabref/imports/BibtexParser.java
+++ b/src/java/net/sf/jabref/imports/BibtexParser.java
@@ -249,10 +249,10 @@ public class BibtexParser
                     boolean duplicateKey = _db.insertEntry(be);
                     if (duplicateKey) // JZTODO lyrics
                       _pr.addWarning(Globals.lang("duplicate BibTeX key")+": "+be.getCiteKey()
-                              + " (" + "Grouping may not work for this entry." + ")");
+                              + " (" + Globals.lang("grouping may not work for this entry") + ")");
                     else if (be.getCiteKey() == null || be.getCiteKey().equals("")) {
                         _pr.addWarning(Globals.lang("empty BibTeX key")+": "+be.getAuthorTitleYear(40)
-                                + " (" + "Grouping may not work for this entry." + ")");
+                                + " (" + Globals.lang("grouping may not work for this entry") + ")");
                     }
                 }
 
@@ -429,6 +429,11 @@ public class BibtexParser
             }
             if (c == '"')
             {
+                StringBuffer text = parseQuotedFieldExactly();
+                value.append(fieldContentParser.format(text));
+                /*
+
+                The following code doesn't handle {"} correctly:
                 // value is a string
                 consume('"');
 
@@ -445,7 +450,7 @@ public class BibtexParser
                 }
 
                 consume('"');
-
+                */
             }
             else if (c == '{') {
                 // Value is a string enclosed in brackets. There can be pairs
@@ -714,6 +719,38 @@ public class BibtexParser
         return value;
     }
 
+    private StringBuffer parseQuotedFieldExactly() throws IOException
+    {
+
+        StringBuffer value = new StringBuffer();
+
+        consume('"');
+
+        int brackets = 0;
+
+        while (!((peek() == '"') && (brackets == 0)))
+        {
+
+            int j = read();
+            if ((j == -1) || (j == 65535))
+            {
+                throw new RuntimeException("Error in line "+line
+                                           +": EOF in mid-string");
+            }
+            else if (j == '{')
+                brackets++;
+            else if (j == '}')
+                brackets--;
+
+            value.append((char) j);
+
+        }
+
+        consume('"');
+
+        return value;
+    }
+
     private void consume(char expected) throws IOException
     {
         int c = read();
diff --git a/src/java/net/sf/jabref/imports/EndnoteImporter.java b/src/java/net/sf/jabref/imports/EndnoteImporter.java
index 6da95fc..d52d361 100644
--- a/src/java/net/sf/jabref/imports/EndnoteImporter.java
+++ b/src/java/net/sf/jabref/imports/EndnoteImporter.java
@@ -88,9 +88,10 @@ public class EndnoteImporter extends ImportFormat {
         Type = "";
         Editor = "";
         boolean IsEditedBook = false;
-        String[] fields = entries[i].substring(1).split("\n%");
+        String[] fields = entries[i].trim().substring(1).split("\n%");
         //String lastPrefix = "";
         for (int j = 0; j < fields.length; j++){
+
         if (fields[j].length() < 3) continue;
 
         /*
@@ -107,7 +108,9 @@ public class EndnoteImporter extends ImportFormat {
            */
 
         String prefix = fields[j].substring(0, 1);
+
         String val = fields[j].substring(2);
+
         if (prefix.equals("A")){
             if (Author.equals("")) Author = val;
             else Author += " and " + val;
@@ -177,8 +180,8 @@ public class EndnoteImporter extends ImportFormat {
         }
 
         //fixauthorscomma
-        if (!Author.equals("")) hm.put("author", AuthorList.fixAuthor_lastNameFirst(Author));
-        if (!Editor.equals("")) hm.put("editor", AuthorList.fixAuthor_lastNameFirst(Editor));
+        if (!Author.equals("")) hm.put("author", fixAuthor(Author));
+        if (!Editor.equals("")) hm.put("editor", fixAuthor(Editor));
         BibtexEntry b = new BibtexEntry(BibtexFields.DEFAULT_BIBTEXENTRY_ID, Globals
                         .getEntryType(Type)); // id assumes an existing database so don't
         // create one here
@@ -191,4 +194,26 @@ public class EndnoteImporter extends ImportFormat {
 
     }
 
+    /**
+     * We must be careful about the author names, since they can be presented differently
+     * by different sources. Normally each %A tag brings one name, and we get the authors
+     * separated by " and ". This is the correct behaviour.
+     * One source lists the names separated by comma, with a comma at the end. We can detect
+     * this format and fix it.
+     * @param s The author string
+     * @return The fixed author string
+     */
+    private String fixAuthor(String s) {
+        int index = s.indexOf(" and ");
+        if (index >= 0)
+            return AuthorList.fixAuthor_lastNameFirst(s);
+        // Look for the comma at the end:
+        index = s.lastIndexOf(",");
+        if (index == s.length()-1) {
+            String mod = s.substring(0, s.length()-1).replaceAll(", ", " and ");
+            return AuthorList.fixAuthor_lastNameFirst(mod);
+        } else
+            return AuthorList.fixAuthor_lastNameFirst(s);
+    }
+
 }
diff --git a/src/java/net/sf/jabref/imports/HTMLConverter.java b/src/java/net/sf/jabref/imports/HTMLConverter.java
index 6bf30f5..45669cf 100644
--- a/src/java/net/sf/jabref/imports/HTMLConverter.java
+++ b/src/java/net/sf/jabref/imports/HTMLConverter.java
@@ -42,7 +42,7 @@ public class HTMLConverter implements LayoutFormatter {
         // Have just read the < character that starts the tag.
         int index = text.indexOf(';', position);
         if ((index > position) && (index-position < MAX_CHAR_LENGTH)) {
-            //System.out.println("Removed code: "+text.substring(position, index));
+            System.out.println("Removed code: "+text.substring(position, index));
             return index+1; // Just skip the tag.
         } else return position; // Don't do anything.
     }
@@ -51,7 +51,7 @@ public class HTMLConverter implements LayoutFormatter {
         // Have just read the < character that starts the tag.
         int index = text.indexOf('>', position);
         if ((index > position) && (index-position < MAX_TAG_LENGTH)) {
-            //System.out.println("Removed tag: "+text.substring(position, index));
+            System.out.println("Removed tag: "+text.substring(position, index));
             return index+1; // Just skip the tag.
         } else return position; // Don't do anything.
     }
diff --git a/src/java/net/sf/jabref/imports/IEEEXploreFetcher.java b/src/java/net/sf/jabref/imports/IEEEXploreFetcher.java
index 54c1f97..c4116b3 100644
--- a/src/java/net/sf/jabref/imports/IEEEXploreFetcher.java
+++ b/src/java/net/sf/jabref/imports/IEEEXploreFetcher.java
@@ -91,7 +91,7 @@ public class IEEEXploreFetcher implements Runnable, EntryFetcher {
     }
 
     public String getHelpPage() {
-        return "IEEEXplorerHelp.html";
+        return "IEEEXploreHelp.html";
     }
 
     public String getKeyName() {
@@ -405,7 +405,8 @@ public class IEEEXploreFetcher implements Runnable, EntryFetcher {
             throw new IOException(Globals.lang("Could not parse number of hits"));
         String substring = page.substring(ind, Math.min(ind+42, page.length()));
         Matcher m = pattern.matcher(substring);
-        m.find();
+        if (!m.find())
+            return 0;
         if (m.groupCount() >= 1) {
             try {
                 return Integer.parseInt(m.group(1));
diff --git a/src/java/net/sf/jabref/imports/ImportCustomizationDialog.java b/src/java/net/sf/jabref/imports/ImportCustomizationDialog.java
index 9080059..f170726 100644
--- a/src/java/net/sf/jabref/imports/ImportCustomizationDialog.java
+++ b/src/java/net/sf/jabref/imports/ImportCustomizationDialog.java
@@ -112,9 +112,9 @@ public class ImportCustomizationDialog extends JDialog {
     addFromFolderButton.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        CustomImportList.Importer importer = prefs.customImports.new Importer();  
-       importer.setBasePath( Globals.getNewDir(frame, prefs, new File(prefs.get("workingDirectory")), "",
+       importer.setBasePath( Globals.getNewDir(frame, new File(prefs.get("workingDirectory")), "",
            Globals.lang("Select Classpath of New Importer"), JFileChooser.CUSTOM_DIALOG, false) );
-       String chosenFileStr = Globals.getNewFile(frame, prefs, importer.getBasePath(), ".class",
+       String chosenFileStr = Globals.getNewFile(frame, importer.getBasePath(), ".class",
            Globals.lang("Select new ImportFormat Subclass"), JFileChooser.CUSTOM_DIALOG, false);
        if (chosenFileStr != null) {
          try {
@@ -124,6 +124,9 @@ public class ImportCustomizationDialog extends JDialog {
          } catch (Exception exc) {           
            exc.printStackTrace();
            JOptionPane.showMessageDialog(frame, Globals.lang("Could not instantiate %0 %1", chosenFileStr + ":\n", exc.getMessage()));
+         } catch (NoClassDefFoundError exc) {
+           exc.printStackTrace();
+           JOptionPane.showMessageDialog(frame, Globals.lang("Could not instantiate %0 %1. Have you chosen the correct package path?", chosenFileStr + ":\n", exc.getMessage()));           
          }
 
          addOrReplaceImporter(importer);
@@ -137,7 +140,7 @@ public class ImportCustomizationDialog extends JDialog {
 
     addFromJarButton.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
-       String basePath = Globals.getNewFile(frame, prefs, new File(prefs.get("workingDirectory")), ".zip,.jar",
+       String basePath = Globals.getNewFile(frame, new File(prefs.get("workingDirectory")), ".zip,.jar",
            Globals.lang("Select a Zip-archive"), JFileChooser.CUSTOM_DIALOG, false);
        ZipFile zipFile = null;
        if (basePath != null) {
@@ -145,8 +148,13 @@ public class ImportCustomizationDialog extends JDialog {
            zipFile = new ZipFile(new File(basePath), ZipFile.OPEN_READ);
          } catch (IOException exc) {
            exc.printStackTrace();
-           JOptionPane.showMessageDialog(frame, Globals.lang("Could not open %0 %1", basePath + ":\n", exc.getMessage()));
+           JOptionPane.showMessageDialog(frame, Globals.lang("Could not open %0 %1", basePath + ":\n", exc.getMessage()) 
+                                              + "\n" + Globals.lang("Have you chosen the correct package path?"));
            return;         
+         } catch (NoClassDefFoundError exc) {
+           exc.printStackTrace();
+           JOptionPane.showMessageDialog(frame, Globals.lang("Could not instantiate %0 %1", basePath + ":\n", exc.getMessage())
+                                              + "\n" + Globals.lang("Have you chosen the correct package path?"));           
          }
        }
          
diff --git a/src/java/net/sf/jabref/imports/ImportMenuItem.java b/src/java/net/sf/jabref/imports/ImportMenuItem.java
index d841eb1..9442e4f 100644
--- a/src/java/net/sf/jabref/imports/ImportMenuItem.java
+++ b/src/java/net/sf/jabref/imports/ImportMenuItem.java
@@ -1,105 +1,277 @@
 package net.sf.jabref.imports;
 
-import javax.swing.*;
-import java.awt.event.*;
-import java.io.IOException;
-import java.io.File;
-
 import net.sf.jabref.*;
+import net.sf.jabref.undo.NamedCompound;
+import net.sf.jabref.undo.UndoableInsertEntry;
 import net.sf.jabref.gui.ImportInspectionDialog;
 
+import javax.swing.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.HashMap;
+
+public class ImportMenuItem extends JMenuItem implements ActionListener {
 
-public class ImportMenuItem extends JMenuItem implements ActionListener,
-        ImportInspectionDialog.CallBack {
-    
-    ImportFormat importer;
     JabRefFrame frame;
     boolean openInNew;
+    MyWorker worker = null;
+    ImportFormat importer;
+
+    public ImportMenuItem(JabRefFrame frame, boolean openInNew) {
+        this(frame, openInNew, null);
+    }
 
-    public ImportMenuItem(JabRefFrame frame, ImportFormat importer, boolean openInNew) {
-    	super(importer.getFormatName());
-    	this.frame = frame;
-    	this.importer = importer;
-    	this.openInNew = openInNew;
-      this.setToolTipText( importer.getDescription() );
-    	addActionListener(this);
+    public ImportMenuItem(JabRefFrame frame, boolean openInNew, ImportFormat importer) {
+        super(importer != null ? importer.getFormatName()
+                : Globals.lang("Autodetect format"));
+        this.importer = importer;
+        this.frame = frame;
+        this.openInNew = openInNew;
+        addActionListener(this);
     }
 
     public void actionPerformed(ActionEvent e) {
-    	MyWorker worker = new MyWorker();
-    	worker.init();
-    	worker.getWorker().run();
-    	worker.getCallBack().update();
+        worker = new MyWorker();
+        worker.init();
+        worker.getWorker().run();
+        worker.getCallBack().update();
     }
 
-    class MyWorker extends AbstractWorker {
-    	String filename = null, formatName = null;
-    	java.util.List entries = null;
-    	boolean fileOk = false;
-    	public void init() {
-  	    filename = Globals.getNewFile(frame, Globals.prefs, new File(Globals.prefs.get("workingDirectory")),
-          importer.getExtensions(), JFileChooser.OPEN_DIALOG, false);
-  	    if ((filename != null) && !(new File(filename)).exists()) {
-      		JOptionPane.showMessageDialog(frame, Globals.lang("File not found")+": '"+filename+"'",
-					      Globals.lang("Import failed"), JOptionPane.ERROR_MESSAGE);
-	    }
-	    else if (filename != null) {
-    		frame.block();
-    		frame.output(Globals.lang("Importing file")+": '"+filename+"'");
-    		fileOk = true;
-            Globals.prefs.put("workingDirectory", filename);
+    class MyWorker extends AbstractWorker implements ImportInspectionDialog.CallBack {
+        String[] filenames = null, formatName = null;
+        ParserResult bibtexResult = null; // Contains the merged import results
+        boolean fileOk = false;
+
+        public void init() {
+            filenames = Globals.getMultipleFiles(frame,
+                    new File(Globals.prefs.get("workingDirectory")),
+                    (importer != null ? importer.getExtensions() : null), true);
+
+            /*if ((filenames != null) && !(new File(filename)).exists()) {
+               JOptionPane.showMessageDialog(frame, Globals.lang("File not found") + ": '" + filename + "'",
+                       Globals.lang("Error"), JOptionPane.ERROR_MESSAGE);
+           } else*/
+            if ((filenames != null) && (filenames.length > 0)) {
+                frame.block();
+                frame.output(Globals.lang("Starting import"));
+                //frame.output(Globals.lang("Importing file") + ": '" + filename + "'");
+                fileOk = true;
+
+                Globals.prefs.put("workingDirectory", filenames[0]);
+            }
+
         }
-	    
-	}
-	public void run() {
-	    if (!fileOk)
-		return;
-	    
-	    try {
-		entries = Globals.importFormatReader.importFromFile(importer, filename);
-		if (entries != null)
-		    ImportFormatReader.purgeEmptyEntries(entries);
-	    } catch (IOException ex) {
-		ex.printStackTrace();
-	    }
-	}
-	public void update() {
-	    if (!fileOk)
-		return;
-
-	    if (entries != null) {
-            BasePanel panel = null;
-            if (!openInNew) {
-                panel = (BasePanel)frame.getTabbedPane().getSelectedComponent();
+
+        public void run() {
+            if (!fileOk)
+                return;
+
+            // We import all files and collect their results:
+            List imports = new ArrayList();
+            for (int i = 0; i < filenames.length; i++) {
+                String filename = filenames[i];
+                if (importer != null)
+                    // Specific importer:
+                    try {
+                        imports.add(new Object[] { importer.getFormatName(),
+                                Globals.importFormatReader.importFromFile(importer, filename)});
+                    } catch (IOException e) {
+                        // No entries found...
+                    }
+                else
+                    // Unknown format:
+                    imports.add(Globals.importFormatReader.importUnknownFormat(filename));
+
             }
 
-            frame.addImportedEntries(panel, entries, filename, openInNew, ImportMenuItem.this);
-            
+            // Ok, done. Then try to gather in all we have found. Since we might have found
+            // one or more bibtex results, it's best to gather them in a BibtexDatabase.
+            bibtexResult = mergeImportResults(imports);
+
+        }
+
+        public void update() {
+            if (!fileOk)
+                return;
 
-	    } else {
-		JOptionPane.showMessageDialog(frame, Globals.lang("No entries found. Please make sure you are "
+            // TODO: undo is not handled properly here, except for the entries added by
+            //  the import inspection dialog.
+            if (bibtexResult != null) {
+                if (!openInNew) {
+                    final BasePanel panel = (BasePanel) frame.getTabbedPane().getSelectedComponent();
+                    BibtexDatabase toAddTo = panel.database();
+                    // Use the import inspection dialog if it is enabled in preferences, and
+                    // (there are more than one entry or the inspection dialog is also enabled
+                    // for single entries):
+                    if (Globals.prefs.getBoolean("useImportInspectionDialog") &&
+                            (Globals.prefs.getBoolean("useImportInspectionDialogForSingle")
+                                    || (bibtexResult.getDatabase().getEntryCount() > 1))) {
+                        ImportInspectionDialog diag = new ImportInspectionDialog(frame, panel,
+                                BibtexFields.DEFAULT_INSPECTION_FIELDS,
+                                Globals.lang("Import"), openInNew);
+                        diag.addEntries(bibtexResult.getDatabase().getEntries());
+                        diag.addCallBack(this);
+                        diag.entryListComplete();
+                        Util.placeDialog(diag, frame);
+                        diag.setVisible(true);
+                        diag.toFront();
+                    } else {
+                        NamedCompound ce = new NamedCompound(Globals.lang("Import entries"));
+                        for (Iterator i = bibtexResult.getDatabase().getEntries().iterator();
+                             i.hasNext();) {
+                            BibtexEntry entry = (BibtexEntry) i.next();
+                            try {
+                                toAddTo.insertEntry(entry);
+                                ce.addEdit(new UndoableInsertEntry(toAddTo, entry, panel));
+                            } catch (KeyCollisionException e) {
+                                e.printStackTrace();
+                            }
+                        }
+                        ce.end();
+                        panel.undoManager.addEdit(ce);
+                    }
+
+                }
+
+                else {
+                    frame.addTab(bibtexResult.getDatabase(), bibtexResult.getFile(),
+                            bibtexResult.getMetaData(), Globals.prefs.get("defaultEncoding"), true);
+                    done(bibtexResult.getDatabase().getEntryCount());
+                }
+
+
+            } else {
+                if (importer == null)
+                    frame.output(Globals.lang("Could not find a suitable import format."));
+                else
+                    JOptionPane.showMessageDialog(frame, Globals.lang("No entries found. Please make sure you are "
 								  +"using the correct import filter."), Globals.lang("Import failed"),
 					      JOptionPane.ERROR_MESSAGE);
-		frame.output("");
-	    }
-	    frame.unblock();
-	    
-	}
-    }
+            }
+            frame.unblock();
+        }
+
+        public void done(int entriesImported) {
+            final BasePanel panel = (BasePanel) frame.getTabbedPane().getSelectedComponent();
+            BibtexDatabase toAddTo = panel.database();
+            /*
+            // Add the strings, if any:
+            for (Iterator i = bibtexResult.getDatabase().getStringKeySet().iterator(); i.hasNext();) {
+                BibtexString s = bibtexResult.getDatabase().getString(i.next());
+                try {
+                    toAddTo.addString(s);
+                } catch (KeyCollisionException e) {
+                    e.printStackTrace();
+                }
+
+            }
 
-    public void done(int entriesImported) {
-        frame.output(Globals.lang("Imported entries")+": "+entriesImported);
-    }
 
-    public void cancelled() {
-        frame.output(Globals.lang("%0 import cancelled.", importer.getFormatName()));
+            if ((panel != null) && (bibtexResult.getDatabase().getEntryCount() == 1)) {
+                SwingUtilities.invokeLater(new Runnable() {
+                    public void run() {
+                        panel.highlightEntry((BibtexEntry)
+                                bibtexResult.getDatabase().getEntries().
+                                        iterator().next());
+                    }
+                });
+
+
+            }
+            */
+            if (worker.bibtexResult != null) {
+                frame.output(Globals.lang("Imported entries") + ": " + entriesImported);
+                //        + "  " + Globals.lang("Format used") + ": " + worker.formatName);
+            }
+        }
+
+        public void cancelled() {
+            frame.output(Globals.lang("Import cancelled."));
+        }
+
+
+        // This method is called by the dialog when the user has cancelled or
+        // signalled a stop. It is expected that any long-running fetch operations
+        // will stop after this method is called.
+        public void stopFetching() {
+            // No process to stop.
+        }
     }
 
 
-    // This method is called by the dialog when the user has cancelled or
-    // signalled a stop. It is expected that any long-running fetch operations
-    // will stop after this method is called.
-    public void stopFetching() {
-        // No process to stop.
+
+    public static ParserResult mergeImportResults(List imports) {
+        BibtexDatabase database = new BibtexDatabase();
+        ParserResult directParserResult = null;
+        boolean anythingUseful = false;
+
+        for (Iterator iterator = imports.iterator(); iterator.hasNext();) {
+            Object[] o = (Object[]) iterator.next();
+            if (o[1] instanceof List) {
+                List entries = (List) o[1];
+                anythingUseful = anythingUseful | (entries.size() > 0);
+                for (Iterator j = entries.iterator(); j.hasNext();) {
+                    BibtexEntry entry = (BibtexEntry) j.next();
+                    try {
+                        entry.setId(Util.createNeutralId());
+                        database.insertEntry(entry);
+                    } catch (KeyCollisionException e) {
+                        e.printStackTrace();
+                    }
+                }
+            } else if (o[1] instanceof ParserResult) {
+                // Bibtex result. We must merge it into our main base.
+                ParserResult pr = (ParserResult) o[1];
+
+                anythingUseful = anythingUseful
+                        || ((pr.getDatabase().getEntryCount() > 0) || (pr.getDatabase().getStringCount() > 0));
+
+                // Record the parserResult, as long as this is the first bibtex result:
+                if (directParserResult == null) {
+                    directParserResult = pr;
+                }
+
+                // Merge entries:
+                for (Iterator j = pr.getDatabase().getEntries().iterator(); j.hasNext();) {
+                    BibtexEntry entry = (BibtexEntry) j.next();
+                    try {
+                        database.insertEntry(entry);
+                    } catch (KeyCollisionException e) {
+                        e.printStackTrace(); // This should never happen
+                    }
+                }
+                // Merge strings:
+                for (Iterator j = pr.getDatabase().getStringKeySet().iterator(); j.hasNext();) {
+                    BibtexString bs = (BibtexString)
+                            (pr.getDatabase().getString(j.next()).clone());
+
+                    try {
+                        database.addString(bs);
+                    } catch (KeyCollisionException e) {
+                        // This means a duplicate string name exists, so it's not
+                        // a very exceptional situation. We should maybe give a warning...?
+                    }
+                }
+
+            }
+        }
+
+        if (!anythingUseful)
+            return null;
+
+        if ((imports.size() == 1) && (directParserResult != null)) {
+            return directParserResult;
+        } else {
+
+            ParserResult pr = new ParserResult(database, new HashMap(), new HashMap());
+            return pr;
+
+        }
     }
+
 }
diff --git a/src/java/net/sf/jabref/imports/ImportUnknownMenuItem.java b/src/java/net/sf/jabref/imports/ImportUnknownMenuItem.java
deleted file mode 100644
index ff33adb..0000000
--- a/src/java/net/sf/jabref/imports/ImportUnknownMenuItem.java
+++ /dev/null
@@ -1,126 +0,0 @@
-package net.sf.jabref.imports;
-
-import net.sf.jabref.*;
-import net.sf.jabref.gui.ImportInspectionDialog;
-
-import javax.swing.*;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.io.File;
-
-public class ImportUnknownMenuItem extends JMenuItem implements ActionListener,
-        ImportInspectionDialog.CallBack {
-    
-    JabRefFrame frame;
-    boolean openInNew;
-    MyWorker worker = null;
-
-    public ImportUnknownMenuItem(JabRefFrame frame, boolean openInNew) {
-	super(Globals.lang("Autodetect format"));
-	this.frame = frame;
-	this.openInNew = openInNew;
-	addActionListener(this);
-    }
-
-    public void actionPerformed(ActionEvent e) {
-	worker = new MyWorker();
-	worker.init();
-	worker.getWorker().run();
-	worker.getCallBack().update();
-    }
-
-    class MyWorker extends AbstractWorker {
-	String filename = null, formatName = null;
-	java.util.List entries = null;
-	ParserResult bibtexResult = null; // Used for a parsed Bibtex database, if that is the
-	// correct format. Must be handled differently, because it can contain metadata and strings.
-	boolean fileOk = false;
-	public void init() {
-	    filename = frame.getNewFile();
-	    if ((filename != null) && !(new File(filename)).exists()) {
-		JOptionPane.showMessageDialog(frame, Globals.lang("File not found")+": '"+filename+"'",
-					      Globals.lang("Error"), JOptionPane.ERROR_MESSAGE);
-	    }
-	    else if (filename != null) {
-		frame.block();
-		frame.output(Globals.lang("Importing file")+": '"+filename+"'");
-		fileOk = true;
-        Globals.prefs.put("workingDirectory", filename);
-        }
-	    
-	}
-	public void run() {
-	    if (!fileOk)
-		return;
-	    
-	    //try {
-		Object[] o = Globals.importFormatReader.importUnknownFormat(filename);
-		formatName = (String)o[0];
-		if (o[1] instanceof java.util.List)
-		    entries = (java.util.List)o[1];
-		else if (o[1] instanceof ParserResult)
-		    bibtexResult = (ParserResult)o[1];
-	    //} catch (IOException ex) {
-		//ex.printStackTrace();
-	    //}
-	}
-	public void update() {
-	    if (!fileOk)
-		return;
-	    
-	    if (entries != null) {
-            BasePanel panel = null;
-            if (!openInNew) {
-                panel = (BasePanel)frame.getTabbedPane().getSelectedComponent();
-            }
-            frame.addImportedEntries(panel, entries, filename, openInNew, ImportUnknownMenuItem.this);
-            
-
-	    }
-	    else if (bibtexResult != null) {
-            if (!openInNew) {
-                BasePanel panel = (BasePanel)frame.getTabbedPane().getSelectedComponent();
-                try {
-                    panel.mergeFromBibtex(bibtexResult, true, true, false, false);
-                    frame.output(Globals.lang("Imported from database")+" '"+filename+"'");
-                } catch (KeyCollisionException e) {
-                    e.printStackTrace();
-                }
-
-            } else {
-		        frame.addTab(bibtexResult.getDatabase(), bibtexResult.getFile(),
-			        bibtexResult.getMetaData(), Globals.prefs.get("defaultEncoding"), true);
-		        frame.output(Globals.lang("Opened database") + " '" + filename +
-			        "' " + Globals.lang("with") + " " +
-			        bibtexResult.getDatabase() .getEntryCount() + " " +
-			        Globals.lang("entries") + ".");
-            }
-
-	    }
-	    else
-		frame.output(Globals.lang("Could not find a suitable import format."));
-	    frame.unblock();
-	}
-    }
-
-    public void done(int entriesImported) {
-        if (worker.entries != null) {
-            frame.output(Globals.lang("Imported entries")+": "+entriesImported
-    			     +"  "+Globals.lang("Format used")+": "+worker.formatName);
-        }
-    }
-
-    public void cancelled() {
-        frame.output(Globals.lang("Import cancelled."));
-    }
-
-
-    // This method is called by the dialog when the user has cancelled or
-    // signalled a stop. It is expected that any long-running fetch operations
-    // will stop after this method is called.
-    public void stopFetching() {
-        // No process to stop.
-    }
-
-
-}
diff --git a/src/java/net/sf/jabref/imports/MedlineFetcher.java b/src/java/net/sf/jabref/imports/MedlineFetcher.java
index 3f886df..358b4ac 100644
--- a/src/java/net/sf/jabref/imports/MedlineFetcher.java
+++ b/src/java/net/sf/jabref/imports/MedlineFetcher.java
@@ -270,8 +270,8 @@ public class MedlineFetcher extends SidePaneComponent implements Runnable,
                                             Integer.toString(result.count));
 
             // for strCount ...
-            if(strCount.equals(""))
-                    return;
+            if((strCount == null) || strCount.equals(""))
+                return;
             int count;
         try {
             count = Integer.parseInt(strCount);
diff --git a/src/java/net/sf/jabref/imports/MedlineHandler.java b/src/java/net/sf/jabref/imports/MedlineHandler.java
index 15b19fc..2085efd 100644
--- a/src/java/net/sf/jabref/imports/MedlineHandler.java
+++ b/src/java/net/sf/jabref/imports/MedlineHandler.java
@@ -1,5 +1,8 @@
 package net.sf.jabref.imports;
 import java.util.ArrayList;
+import java.util.TreeSet;
+import java.util.Iterator;
+
 import org.xml.sax.*;
 import org.xml.sax.helpers.*;
 import net.sf.jabref.*;
@@ -49,7 +52,11 @@ public class MedlineHandler extends DefaultHandler
     String series="",editor="",booktitle="",type="article",key="",address="",
 		pubmedid="",doi="",pii="";
     ArrayList authors=new ArrayList();
+    TreeSet descriptors = new TreeSet(); // To gather keywords
     int rowNum=0;
+
+    private static final String KEYWORD_SEPARATOR = "; ";
+
     public ArrayList getItems(){ return bibitems;}
 
     public MedlineHandler(){
@@ -146,11 +153,14 @@ public class MedlineHandler extends DefaultHandler
 				}
 			}
 			
-			// Sort keywords and remove duplicates. Add pubmedid as keyword (user request)
-            StringBuffer sb = new StringBuffer(Util.sortWordsAndRemoveDuplicates(keywords));
-            if (sb.length()>0)
-                sb.append(", ");
-            sb.append(pubmedid);
+			// Build a string from the collected keywords:
+            StringBuffer sb = new StringBuffer();
+            for (Iterator iterator = descriptors.iterator(); iterator.hasNext();) {
+                String s = (String) iterator.next();
+                sb.append(s);
+                if (iterator.hasNext())
+                    sb.append(KEYWORD_SEPARATOR);
+            }
             keywords = sb.toString();
             
 			BibtexEntry b=new BibtexEntry(Util.createNeutralId(),//Globals.DEFAULT_BIBTEXENTRY_ID,
@@ -192,7 +202,7 @@ public class MedlineHandler extends DefaultHandler
 			title="";
 			journal="";
 			keywords ="";
-			doi=""; pii="";
+            doi=""; pii="";
 			year="";
 			forename="";
 			lastName="";
@@ -200,7 +210,8 @@ public class MedlineHandler extends DefaultHandler
 			pubmedid="";
 			month="";volume="";lastname="";initials="";number="";page="";medlineID="";url="";
 			MedlineDate="";
-		}
+            descriptors.clear();
+        }
 
 		else if(localName.equals("ArticleTitle")){inTitle=false;}
 		else if(localName.equals("PubDate")){inPubDate=false;}
@@ -261,7 +272,9 @@ public class MedlineHandler extends DefaultHandler
 		else if(inMedlineID){medlineID += new String(data,start,length);}
 		else if(inURL){url += new String(data,start,length);}
 		else if(inPubMedID){pubmedid = new String(data,start,length);}
-		else if(inDescriptorName) keywords += new String(data,start,length) + ", ";
+		else if(inDescriptorName)
+            descriptors.add(new String(data,start,length));
+            //keywords += new String(data,start,length) + ", ";
 		else if(inForename){
 			forename += new String(data,start,length);
 			//System.out.println("IN FORENAME: " + forename);
diff --git a/src/java/net/sf/jabref/imports/OpenDatabaseAction.java b/src/java/net/sf/jabref/imports/OpenDatabaseAction.java
index 6e9188f..d60e803 100644
--- a/src/java/net/sf/jabref/imports/OpenDatabaseAction.java
+++ b/src/java/net/sf/jabref/imports/OpenDatabaseAction.java
@@ -24,32 +24,42 @@ public class OpenDatabaseAction extends MnemonicAwareAction {
     }
 
     public void actionPerformed(ActionEvent e) {
-        File fileToOpen = null;
+        List filesToOpen = new ArrayList();
+        //File fileToOpen = null;
 
         if (showDialog) {
 
-            String chosenFile = Globals.getNewFile(frame, Globals.prefs, new File(Globals.prefs.get("workingDirectory")), ".bib",
+            String[] chosen = Globals.getMultipleFiles(frame, new File(Globals.prefs.get("workingDirectory")), ".bib",
+                    true);
+            if (chosen != null) for (int i=0; i<chosen.length; i++)
+                filesToOpen.add(new File(chosen[i]));
+
+            /*
+            String chosenFile = Globals.getNewFile(frame,
+                    new File(Globals.prefs.get("workingDirectory")), ".bib",
                     JFileChooser.OPEN_DIALOG, true);
 
             if (chosenFile != null) {
                 fileToOpen = new File(chosenFile);
-            }
+            }*/
         } else {
             Util.pr(NAME);
             Util.pr(e.getActionCommand());
-            fileToOpen = new File(Util.checkName(e.getActionCommand()));
+            filesToOpen.add(new File(Util.checkName(e.getActionCommand())));
         }
 
         // Run the actual open in a thread to prevent the program
         // locking until the file is loaded.
-        if (fileToOpen != null) {
-            final File theFile = fileToOpen;
+        if (filesToOpen.size() > 0) {
+            final List theFiles = Collections.unmodifiableList(filesToOpen);
             (new Thread() {
                 public void run() {
-                    openIt(theFile, true);
+                    for (Iterator i=theFiles.iterator(); i.hasNext();)
+                        openIt((File)i.next(), true);
                 }
             }).start();
-            frame.getFileHistory().newFile(fileToOpen.getPath());
+            for (Iterator i=theFiles.iterator(); i.hasNext();)
+                frame.getFileHistory().newFile(((File)i.next()).getPath());
         }
     }
 
diff --git a/src/java/net/sf/jabref/journals/ManageJournalsPanel.java b/src/java/net/sf/jabref/journals/ManageJournalsPanel.java
index 9d3478d..e733bba 100644
--- a/src/java/net/sf/jabref/journals/ManageJournalsPanel.java
+++ b/src/java/net/sf/jabref/journals/ManageJournalsPanel.java
@@ -145,7 +145,7 @@ public class ManageJournalsPanel extends JPanel{
                 File old = null;
                 if (!newNameTf.getText().equals(""))
                     old = new File(newNameTf.getText());
-                String name = Globals.getNewFile(frame, Globals.prefs, old, null, JFileChooser.SAVE_DIALOG, false);
+                String name = Globals.getNewFile(frame, old, null, JFileChooser.SAVE_DIALOG, false);
                 if (name != null) {
                     if ((old != null) && (tableModel.getRowCount() > 0)) {
                     }
@@ -159,7 +159,7 @@ public class ManageJournalsPanel extends JPanel{
                 File old = null;
                 if (!personalFile.getText().equals(""))
                     old = new File(personalFile.getText());
-                String name = Globals.getNewFile(frame, Globals.prefs, old, null, JFileChooser.OPEN_DIALOG, false);
+                String name = Globals.getNewFile(frame, old, null, JFileChooser.OPEN_DIALOG, false);
                 if (name != null) {
                     if ((old != null) && (tableModel.getRowCount() > 0)) {
                     }
@@ -382,7 +382,7 @@ public class ManageJournalsPanel extends JPanel{
             File toFile;
             try {
                 URL url = new URL(chosen);
-                String toName = Globals.getNewFile(frame, Globals.prefs, new File(System.getProperty("user.home")),
+                String toName = Globals.getNewFile(frame, new File(System.getProperty("user.home")),
                         null, JFileChooser.SAVE_DIALOG, false);
                 if (toName == null)
                     return;
@@ -411,10 +411,10 @@ public class ManageJournalsPanel extends JPanel{
         public void actionPerformed(ActionEvent e) {
             String chosen = null;
             if (dir)
-                chosen = Globals.getNewDir(frame, Globals.prefs, new File(comp.getText()), Globals.NONE,
+                chosen = Globals.getNewDir(frame, new File(comp.getText()), Globals.NONE,
                         JFileChooser.OPEN_DIALOG, false);
             else
-                chosen = Globals.getNewFile(frame, Globals.prefs, new File(comp.getText()), Globals.NONE,
+                chosen = Globals.getNewFile(frame, new File(comp.getText()), Globals.NONE,
                         JFileChooser.OPEN_DIALOG, false);
             if (chosen != null) {
                 File newFile = new File(chosen);
diff --git a/src/java/net/sf/jabref/wizard/auximport/gui/FromAuxDialog.java b/src/java/net/sf/jabref/wizard/auximport/gui/FromAuxDialog.java
index b8663ba..dbdd407 100644
--- a/src/java/net/sf/jabref/wizard/auximport/gui/FromAuxDialog.java
+++ b/src/java/net/sf/jabref/wizard/auximport/gui/FromAuxDialog.java
@@ -387,8 +387,8 @@ public class FromAuxDialog
     public void actionPerformed( ActionEvent e )
     {
       String chosen = null ;
-      chosen = Globals.getNewFile( _frame, Globals.prefs,
-                                   new File( comp.getText() ),
+      chosen = Globals.getNewFile( _frame,
+              new File( comp.getText() ),
                                    ".aux",
                                    JFileChooser.OPEN_DIALOG, false ) ;
       if ( chosen != null )
diff --git a/src/resource/JabRef_de.properties b/src/resource/JabRef_de.properties
index 788fa62..e5a16a3 100644
--- a/src/resource/JabRef_de.properties
+++ b/src/resource/JabRef_de.properties
@@ -1,4 +1,6 @@
-#! created/edited by Popeye version 0.5 sunshine (popeye.sourceforge.net)
+#!
+#! created/edited by Popeye version 0.54 (popeye.sourceforge.net)
+#! encoding:ISO-8859-1
 
 !This_is_a_simple_copy_and_paste_dialog._First_load_or_paste_some_text_into_the_text_input_area._After_that,_you_can_mark_text_and_assign_it_to_a_bibtex_field.=Dies_ist_ein_einfacher_Copy_&_Paste-Dialog._Nachdem_Text_in_das_Texteingabefeld_geladen_oder_kopiert_wurde,_k\u00f6nnen_Sie_Textteile_markieren_und_ihnen_ein_BibTeX-Feld_zuordnen.
 
@@ -381,8 +383,6 @@ Copy_\cite{BibTeX_key}=Kopiere_\cite{BibTeX-Key}
 
 Copy_BibTeX_key=BibTeX-Key_kopieren
 
-Copy_cite{BibTeX_key}=Kopiere_cite{BibTeX-Key}
-
 Copy_to_clipboard=Text_in_Zwischenablage_kopieren
 
 Could_not_call_executable=Konnte_das_Programm_nicht_aufrufen
@@ -620,8 +620,6 @@ Empty_database=Leere_Datei
 
 empty_database=leere_Datenbank
 
-Enable source_editing=Quellbearbeitung_aktivieren
-
 Enable_source_editing=Bearbeiten_von_Sourcecode_zulassen
 
 Endnote=Endnote
@@ -983,8 +981,6 @@ Include_abstracts=Abstracts_ber\u00fccksichtigen
 
 Include_subgroups=Untergruppen_ber\u00fccksichtigen
 
-Include_subgroups:_When_selected,_view_entries_contained_in_this_group_or_its_subgroups=Untergruppen_ber\u00fccksichtigen:_Wenn_ausgew\u00e4hlt,_werden_Eintr\u00e4ge_dieser_Gruppe_und_ihrer_Untergruppen_angezeigt
-
 Include_subgroups\:_When_selected,_view_entries_contained_in_this_group_or_its_subgroups=Untergruppen_ber\u00fccksichtigen\:_Wenn_ausgew\u00e4hlt,_werden_Eintr\u00e4ge_dieser_Gruppe_und_ihrer_Untergruppen_angezeigt
 
 Incremental=Direkt
@@ -995,8 +991,6 @@ Incremental_search_failed._Repeat_to_search_from_top.=Direkte_Suche_fehlgeschlag
 
 Independent=Unabh\u00E4ngig
 
-Independent_group:_When_selected,_view_only_this_group's_entries=Unabh\u00e4ngige_Gruppen:_Wenn_ausgew\u00e4hlt,_werden_nur_die_Eintr\u00e4ge_dieser_Gruppe_angezeigt
-
 Independent_group\:_When_selected,_view_only_this_group's_entries=Unabh\u00e4ngige_Gruppen\:_Wenn_ausgew\u00e4hlt,_werden_nur_die_Eintr\u00e4ge_dieser_Gruppe_angezeigt
 
 Initially_show_groups_tree_expanded=Baumansicht_der_Gruppen_standardm\u00e4\u00dfig_aufklappen
@@ -1009,8 +1003,6 @@ Insert=einf\u00FCgen
 
 Insert_rows=Zeilen_einf\u00FCgen
 
-Insert_selected_citations_into_LyX=Ausgew\u00e4hlte_Literaturangaben_in_LyX_einf\u00fcgen
-
 Insert_selected_citations_into_LyX/Kile=Ausgew\u00E4hlte_Literaturangaben_in_LyX/Kile_einf\u00FCgen
 
 Insert_selected_citations_into_WinEdt=Ausgew\u00E4hlte_Literaturangaben_in_WinEdt_einf\u00FCgen
@@ -1193,8 +1185,6 @@ Name=Name
 
 Natbib_style=Natbib-Stil
 
-Ne_entries_imported.=Keine_Eintr\u00e4ge_importiert.
-
 nested_aux_files=referenzierte_AUX_Dateien
 
 New=Neu
@@ -1503,8 +1493,6 @@ Reference_database=Referenz-Datenbank
 # The next two lines are used like in "References found: 1  Number of references to fetch?"
 References_found=Literaturangaben_gefunden
 
-Refine_supergroup:_When_selected,_view_entries_contained_in_both_this_group_and_its_supergroup=Obergruppe_verfeinern:_Wenn_ausgew\u00e4hlt,_werden_Eintr\u00e4ge_aus_dieser_Gruppe_und_ihrer_\u00fcbergeordneten_Gruppe_angezeigt
-
 Refine_supergroup\:_When_selected,_view_entries_contained_in_both_this_group_and_its_supergroup=Obergruppe_verfeinern\:_Wenn_ausgew\u00e4hlt,_werden_Eintr\u00e4ge_aus_dieser_Gruppe_und_ihrer_\u00fcbergeordneten_Gruppe_angezeigt
 
 Refresh_view=Ansicht_aktualisieren
@@ -2095,4 +2083,10 @@ You_must_set_both_BibTeX_key_and_%0_directory=Sie_m\u00FCssen_sowohl_den_BibTeX-
 You_must_set_both_bibtex_key_and_PDF_directory=Sie_m\u00fcssen_sowohl_den_BibTeX-Key,_als_auch_das_PDF-Verzeichnis_angeben
 
 Your_new_key_bindings_have_been_stored.=Ihre_neuen_Tastenk\u00FCrzel_wurden_gespeichert.
+Float_marked_entries=
+Starting_import=
+Output=
+Exceptions=
+Program_output=
 
+grouping_may_not_work_for_this_entry=
diff --git a/src/resource/JabRef_en.properties b/src/resource/JabRef_en.properties
index 9c693e8..2343649 100644
--- a/src/resource/JabRef_en.properties
+++ b/src/resource/JabRef_en.properties
@@ -1,4 +1,6 @@
-#! created/edited by Popeye version 0.5 sunshine (popeye.sourceforge.net)
+#!
+#! created/edited by Popeye version 0.54 (popeye.sourceforge.net)
+#! encoding:ISO-8859-1
 
 !This_is_a_simple_copy_and_paste_dialog._First_load_or_paste_some_text_into_the_text_input_area._After_that,_you_can_mark_text_and_assign_it_to_a_bibtex_field.=!This_is_a_simple_copy_and_paste_dialog._First_load_or_paste_some_text_into_the_text_input_area._After_that,_you_can_mark_text_and_assign_it_to_a_bibtex_field.
 
@@ -379,8 +381,6 @@ Copy_\cite{BibTeX_key}=Copy_cite\{BibTeX_key}
 
 Copy_BibTeX_key=Copy_BibTeX_key
 
-Copy_cite{BibTeX_key}=Copy_cite{BibTeX_key}
-
 Copy_to_clipboard=Copy_to_clipboard
 
 Could_not_call_executable=Could_not_call_executable
@@ -613,8 +613,6 @@ Empty_database=Empty_database
 
 empty_database=empty_database
 
-Enable source_editing=Enable source_editing
-
 Enable_source_editing=Enable_source_editing
 
 Endnote=Endnote
@@ -979,8 +977,6 @@ Include_abstracts=Include_abstracts
 
 Include_subgroups=Include_subgroups
 
-Include_subgroups:_When_selected,_view_entries_contained_in_this_group_or_its_subgroups=Include_subgroups:_When_selected,_view_entries_contained_in_this_group_or_its_subgroups
-
 Include_subgroups\:_When_selected,_view_entries_contained_in_this_group_or_its_subgroups=Include_subgroups:_When_selected,_view_entries_contained_in_this_group_or_its_subgroups
 
 Incremental=Incremental
@@ -991,8 +987,6 @@ Incremental_search_failed._Repeat_to_search_from_top.=Incremental_search_failed.
 
 Independent=Independent
 
-Independent_group:_When_selected,_view_only_this_group's_entries=Independent_group:_When_selected,_view_only_this_group's_entries
-
 Independent_group\:_When_selected,_view_only_this_group's_entries=Independent_group:_When_selected,_view_only_this_group's_entries
 
 Initially_show_groups_tree_expanded=Initially_show_groups_tree_expanded
@@ -1005,8 +999,6 @@ Insert=Insert
 
 Insert_rows=Insert_rows
 
-Insert_selected_citations_into_LyX=Insert_selected_citations_into_LyX
-
 Insert_selected_citations_into_LyX/Kile=Insert_selected_citations_into_LyX/Kile
 
 Insert_selected_citations_into_WinEdt=Insert_selected_citations_into_WinEdt
@@ -1189,8 +1181,6 @@ Name=Name
 
 Natbib_style=Natbib_style
 
-Ne_entries_imported.=No_entries_imported.
-
 nested_aux_files=nested_aux_files
 
 New=New
@@ -1499,8 +1489,6 @@ Reference_database=Reference_database
 # The next two lines are used like in "References found: 1  Number of references to fetch?"
 References_found=References_found
 
-Refine_supergroup:_When_selected,_view_entries_contained_in_both_this_group_and_its_supergroup=Refine_supergroup:_When_selected,_view_entries_contained_in_both_this_group_and_its_supergroup
-
 Refine_supergroup\:_When_selected,_view_entries_contained_in_both_this_group_and_its_supergroup=Refine_supergroup:_When_selected,_view_entries_contained_in_both_this_group_and_its_supergroup
 
 Refresh_view=Refresh_view
@@ -1941,7 +1929,7 @@ This_operation_requires_all_selected_entries_to_have_BibTex_keys_defined.=This_o
 
 This_operation_requires_one_or_more_entries_to_be_selected.=This_operation_requires_one_or_more_entries_to_be_selected.
 
-To_set_up,_go_to_<B>Tools_->_Manage_journal_abbreviations</B>=To_set_up,_go_to_<B>Tools_->_Manage_journal_abbreviations</B>
+To_set_up,_go_to_<B>Tools_->_Manage_journal_abbreviations</B>=To_set_up,_go_to_<B>Options_->_Manage_journal_abbreviations</B>
 
 Toggle_abbreviation=Toggle_abbreviation
 
@@ -2091,4 +2079,10 @@ You_must_set_both_BibTeX_key_and_%0_directory=You_must_set_both_BibTeX_key_and_%
 You_must_set_both_bibtex_key_and_PDF_directory=You_must_set_both_bibtex_key_and_PDF_directory
 
 Your_new_key_bindings_have_been_stored.=Your_new_key_bindings_have_been_stored.
+Float_marked_entries=Float_marked_entries
+Starting_import=Starting_import
+Output=Output
+Exceptions=Exceptions
+Program_output=Program_output
 
+grouping_may_not_work_for_this_entry=grouping_may_not_work_for_this_entry
\ No newline at end of file
diff --git a/src/resource/JabRef_fr.properties b/src/resource/JabRef_fr.properties
index d7a2405..ff0ce79 100644
--- a/src/resource/JabRef_fr.properties
+++ b/src/resource/JabRef_fr.properties
@@ -1,5 +1,5 @@
 #!
-#! created/edited by Popeye version 0.53a (popeye.sourceforge.net)
+#! created/edited by Popeye version 0.54 (popeye.sourceforge.net)
 #! encoding:ISO-8859-1
 
 !This_is_a_simple_copy_and_paste_dialog._First_load_or_paste_some_text_into_the_text_input_area._After_that,_you_can_mark_text_and_assign_it_to_a_bibtex_field.=!Ceci_est_simplement_une_fen\u00eatre_de_copier-coller._Commencez_par_charger_ou_coller_du_texte_dans_la_zone_de_saisie_de_texte._Ensuite,_vous_pouvez_s\u00e9lectionner_des_portions_de_texte_et_les_attribuer_\u00e0_des_champs_BibTeX.
@@ -286,7 +286,7 @@ Downloading...=T\u00E9l\u00E9chargement...
 Due_to_the_duplicate_BibTeX_key,_the_groups_assignment(s)_for_this_entryncannot_be_restored_correctly_when_reopening_this_database._It_is_recommendednthat_you_have_JabRef_generate_a_unique_key_now_to_prevent_this_problem.=A_cause_de_la_clef_BibTeX_dupliqu\u00e9e,_les_assignations_de_groupes_de_cette_entr\u00e9e_ne_pourront_pas_\u00eatre_restaur\u00e9e_correctement_\u00e0_la_r\u00e9ouverture_de_cette_base_de_donn\u00e9es._Il_est_recommand\u00e9_de_demand\u00e9_\u00e0_JabRef_de_g\u00e9n\u0 [...]
 dummy=nul
 Duplicate_BibTeX_key=Dupliquer_la_clef_BibTeX
-duplicate_BibTeX_key=dupliquer_la_clef_BibTeX
+duplicate_BibTeX_key=Clef_BibTeX_dupliqu\u00E9e
 Duplicate_BibTeX_key.=Dupliquer_la_clef_BibTeX.
 duplicate_BibTeX_key.=dupliquer_la_clef_BibTeX.
 Duplicate_BibTeX_key._Grouping_may_not_work_for_this_entry.=Clef_BibTeX_dupliqu\u00e9e._Les_groupes_pourraient_ne_pas_fonctionner_pour_cette_entr\u00e9e.
@@ -309,7 +309,7 @@ Edit_preamble=Editer_le_pr\u00E9ambule
 Edit_strings=Editer_les_cha\u00EEnes
 empty_BibTeX_key=Clef_BibTeX_vide
 Empty_BibTeX_key.=Clef_BibTeX_vide.
-Empty_BibTeX_key._Grouping_may_not_work_for_this_entry.=Vider_la_clef_BibTeX._La_gestion_des_groupes_pourrait_ne_plus_fonctionner_pour_cette_entr\u00e9e.
+Empty_BibTeX_key._Grouping_may_not_work_for_this_entry.=Clef_BibTeX_vide._La_gestion_des_groupes_pourrait_ne_plus_fonctionner_pour_cette_entr\u00e9e.
 Empty_database=Base_vide
 empty_database=base_vide
 Enable_source_editing=Autoriser_l'\u00e9dition_du_source
@@ -345,7 +345,7 @@ Error_in_line=Erreur_\u00E0_la_ligne
 Error_messages=Messages_d'erreur
 Error_opening_file=Erreur_lors_de_l'ouverture_du_fichier
 Error_setting_field=Erreur_de_configuration_du_champ
-Existing_file=Fermeture_du_fichier_en_cours
+Existing_file=Fichier_existant
 exists._Overwrite?=existe._Ecraser_le_fichier ?
 exists._Overwrite_file?=existe._Ecraser_le_fichier ?
 Exit=Quitter
@@ -437,6 +437,7 @@ Gray_out_non-matching_entries=Griser_les_entr\u00E9es_non_correspondantes
 Group_definitions_have_been_converted_to_JabRef_1.7_format.=Les_d\u00E9finitions_des_groupes_ont_\u00E9t\u00E9_converties_au_format_JabRef_1.7
 Group_name=Nom_du_groupe_
 Group_properties=Propri\u00E9t\u00E9s_du_groupe
+Grouping_may_not_work_for_this_entry.=La_gestion_des_groupes_pourrait_ne_pas_fonctionner_pour_cette_entr\u00e9e.
 Groups=Groupes
 Harvard_RTF=Harvard_RTF
 Have_you_chosen_the_correct_package_path?=Avez-vous_choisi_le_bon_chemin_pour_le_paquetage_?
@@ -972,7 +973,7 @@ This_makes_JabRef_look_up_each_%0_link_and_check_if_the_file_exists._If_not,_you
 This_operation_cannot_work_on_multiple_rows.=Cette_op\u00E9ration_ne_peut_pas_\u00EAtre_effectu\u00E9e_sur_plusieurs_lignes.
 This_operation_requires_all_selected_entries_to_have_BibTex_keys_defined.=Cette_op\u00e9ration_n\u00e9cessite_que_toutes_les_entr\u00e9es_s\u00e9lectionn\u00e9es_aient_des_clefs_BibTeX_d\u00e9finies
 This_operation_requires_one_or_more_entries_to_be_selected.=Cette_op\u00e9ration_n\u00e9cessite_qu'une_ou_plusieurs_entr\u00e9es_soient_s\u00e9lectionn\u00e9es.
-To_set_up,_go_to_<B>Tools_->_Manage_journal_abbreviations</B>=Pour_configurer,_voir_<B>Outils_->_G\u00e9rer_les_abr\u00e9viations_de_journaux</B>
+To_set_up,_go_to_<B>Tools_->_Manage_journal_abbreviations</B>=Pour_configurer,_voir_<B>Options_->_G\u00e9rer_les_abr\u00e9viations_de_journaux</B>
 Toggle_abbreviation=Afficher/Masquer_l'abr\u00e9viation
 Toggle_entry_preview=Afficher/Masquer_l'aper\u00E7u
 Toggle_groups_interface=Afficher/Masquer_l'interface_des_groupes
@@ -1048,3 +1049,10 @@ You_must_select_at_least_one_row_to_perform_this_operation.=Vous_devez_s\u00E9le
 You_must_set_both_BibTeX_key_and_%0_directory=Vous_devez_d\u00E9finir_\u00E0_la_fois_la_clef_BibTeX_et_le_r\u00E9pertoire_%0
 You_must_set_both_bibtex_key_and_PDF_directory=You_must_set_both_bibtex_key_and_PDF_directory
 Your_new_key_bindings_have_been_stored.=Votre_nouvelle_affectation_de_touche_a_\u00E9t\u00E9_sauvegard\u00E9e
+Float_marked_entries=Entr\u00e9es_marqu\u00e9es_flottantes
+Starting_import=D\u00e9but_d'importation
+Output=Sortie
+Exceptions=Exceptions
+Program_output=Sortie_du_programme
+
+grouping_may_not_work_for_this_entry=Les_groupes_pourraient_ne_pas_fonctionner_pour_cette_entr\u00e9e.
diff --git a/src/resource/JabRef_it.properties b/src/resource/JabRef_it.properties
index 4c3acd5..ae49d76 100644
--- a/src/resource/JabRef_it.properties
+++ b/src/resource/JabRef_it.properties
@@ -1,5 +1,5 @@
 #!
-#! created/edited by Popeye version 0.53a (popeye.sourceforge.net)
+#! created/edited by Popeye version 0.54 (popeye.sourceforge.net)
 #! encoding:ISO-8859-1
 
 !This_is_a_simple_copy_and_paste_dialog._First_load_or_paste_some_text_into_the_text_input_area._After_that,_you_can_mark_text_and_assign_it_to_a_bibtex_field.=!Questo_\u00e8_un_semplice_dialogo_taglia_e_copia._Prima_inserisci_o_incolla_del_testo_nell'area_di_input._Quindi_puoi_evidenziare_il_testo_ed_assegnarlo_ad_un_campo_BibTeX.
@@ -1073,3 +1073,10 @@ You_must_select_at_least_one_row_to_perform_this_operation.=Selezionare_almeno_u
 You_must_set_both_BibTeX_key_and_%0_directory=Definire_sia_la_chiave_BibTex,_sia_la_cartella_%0
 You_must_set_both_bibtex_key_and_PDF_directory=Definire_sia_la_chiave_BibTex,_sia_la_cartella_PDF
 Your_new_key_bindings_have_been_stored.=La_nuova_assegnazione_di_tasti_\u00e8_stata_salvata.
+Float_marked_entries=
+Starting_import=
+Output=
+Exceptions=
+Program_output=
+
+grouping_may_not_work_for_this_entry=
\ No newline at end of file
diff --git a/src/resource/JabRef_no.properties b/src/resource/JabRef_no.properties
index 5067e33..52319c3 100644
--- a/src/resource/JabRef_no.properties
+++ b/src/resource/JabRef_no.properties
@@ -1,5 +1,5 @@
 #!
-#! created/edited by Popeye version 0.53a (popeye.sourceforge.net)
+#! created/edited by Popeye version 0.54 (popeye.sourceforge.net)
 #! encoding:ISO-8859-1
 
 !This_is_a_simple_copy_and_paste_dialog._First_load_or_paste_some_text_into_the_text_input_area._After_that,_you_can_mark_text_and_assign_it_to_a_bibtex_field.=Dette_er_et_enkelt_klipp-og-lim-vindu._F\u00F8rst_last_inn_eller_kopier_tekst_til_inndatafeltet._Deretter_kan_du_merke_tekst_og_tildele_den_til_et_BibTeX-felt.
@@ -1049,3 +1049,10 @@ You_must_select_at_least_one_row_to_perform_this_operation.=Du_m\u00E5_velge_min
 You_must_set_both_BibTeX_key_and_%0_directory=Du_m\u00E5_sette_b\u00E5de_BibTeX-n\u00F8kkel_og_%0-katalog
 You_must_set_both_bibtex_key_and_PDF_directory=You_must_set_both_bibtex_key_and_PDF_directory
 Your_new_key_bindings_have_been_stored.=Dine_nye_hurtigtaster_har_blitt_lagret.
+Float_marked_entries=
+Starting_import=
+Output=
+Exceptions=
+Program_output=
+
+grouping_may_not_work_for_this_entry=gruppering_kan_feile_for_denne_enheten
diff --git a/src/resource/Menu_de.properties b/src/resource/Menu_de.properties
index 976119d..5be77a3 100644
--- a/src/resource/Menu_de.properties
+++ b/src/resource/Menu_de.properties
@@ -1,4 +1,6 @@
-#! created/edited by Popeye version 0.5 sunshine (popeye.sourceforge.net)
+#!
+#! created/edited by Popeye version 0.54 (popeye.sourceforge.net)
+#! encoding:ISO-8859-1
 
 Abbreviate_journal_names_(ISO)=Zeitschriftennamen_abk\u00fcrzen_(&ISO)
 
@@ -16,7 +18,7 @@ Close_database=Datei_s&chlie\u00DFen
 
 Copy=&Kopieren
 
-Copy_\cite{BibTeX_key}=\c&ite{BibTeX_key}_kopieren
+Copy_\\cite{BibTeX_key}=\\c&ite{BibTeX_key}_kopieren
 
 Copy_BibTeX_key=&BibTeX_key_kopieren
 
@@ -68,10 +70,6 @@ Highlight_groups_matching_all_selected_entries=Gruppen_mit_&allen_ausgew\u00e4hl
 
 Highlight_groups_matching_any_selected_entry=G&ruppen_mit_einem_der_ausgew\u00e4hlten_Eintr\u00e4ge_markieren
 
-Import=I&mportieren
-
-Import_and_append=&Importieren_und_anh\u00E4ngen
-
 Import_Fields_from_CiteSeer=Felder_von_&CiteSeer_importieren
 
 Incremental_search=&Weitersuchen
@@ -185,4 +183,8 @@ Unmark_entries=Markierung_a&ufheben
 Unpack_EndNote_filter_set=&EndNote_Filter-Set_entpacken
 
 View=&Ansicht
+Web_search=
+Import_into_new_database=
+Import_into_current_database=
 
+Scan_database...=
\ No newline at end of file
diff --git a/src/resource/Menu_en.properties b/src/resource/Menu_en.properties
index e997828..10b4a56 100644
--- a/src/resource/Menu_en.properties
+++ b/src/resource/Menu_en.properties
@@ -1,5 +1,5 @@
 #!
-#! created/edited by Popeye version 0.53a (popeye.sourceforge.net)
+#! created/edited by Popeye version 0.54 (popeye.sourceforge.net)
 #! encoding:ISO-8859-1
 Abbreviate_journal_names_(ISO)=Abbreviate_journal_names_(ISO)
 Abbreviate_journal_names_(MEDLINE)=Abbreviate_journal_names_(MEDLINE)
@@ -9,7 +9,7 @@ Autogenerate_BibTeX_keys=&Autogenerate_BibTeX_keys
 BibTeX=&BibTeX
 Close_database=&Close_database
 Copy=C&opy
-Copy_\cite{BibTeX_key}=Copy_\c&ite{BibTeX_key}
+Copy_\\cite{BibTeX_key}=Copy_\\c&ite{BibTeX_key}
 Copy_BibTeX_key=Copy_&BibTeX_key
 Custom_export=Custom_e&xport
 Custom_importers=Custom_importers
@@ -37,8 +37,6 @@ Help=&Help
 Help_contents=Help_&contents
 Highlight_groups_matching_all_selected_entries=Highlight_groups_matching_all_selected_entries
 Highlight_groups_matching_any_selected_entry=Highlight_groups_matching_any_selected_entry
-Import=&Import
-Import_and_append=I&mport_and_append
 Import_Fields_from_CiteSeer=Import_fields_from_&CiteSeer
 Incremental_search=&Incremental_search
 
@@ -102,3 +100,8 @@ Unmark_all=Unmark_a&ll
 Unmark_entries=U&nmark_entries
 Unpack_EndNote_filter_set=Unpack_&EndNote_filter_set
 View=&View
+Web_search=Web_search
+Import_into_new_database=Import_into_new_database
+Import_into_current_database=Import_into_current_database
+
+Scan_database...=S&can_database...
\ No newline at end of file
diff --git a/src/resource/Menu_fr.properties b/src/resource/Menu_fr.properties
index 21e1ad0..e290ceb 100644
--- a/src/resource/Menu_fr.properties
+++ b/src/resource/Menu_fr.properties
@@ -1,5 +1,5 @@
 #!
-#! created/edited by Popeye version 0.53a (popeye.sourceforge.net)
+#! created/edited by Popeye version 0.54 (popeye.sourceforge.net)
 #! encoding:ISO-8859-1
 Abbreviate_journal_names_(ISO)=Abr\u00e9ger_les_noms_de_journaux_(IS&O)
 Abbreviate_journal_names_(MEDLINE)=Abr\u00e9ger_les_noms_de_journaux_(MEDLI&NE)
@@ -9,7 +9,7 @@ Autogenerate_BibTeX_keys=Cr\u00E9ation_&automatique_des_cl\u00E9s_BibTeX
 BibTeX=&BibTeX
 Close_database=&Fermer_la_base
 Copy=Co&pier
-Copy_\cite{BibTeX_key}=Copier_\c&ite{cl\u00e9_BibTeX}
+Copy_\\cite{BibTeX_key}=Copier_\\c&ite{cl\u00e9_BibTeX}
 Copy_BibTeX_key=Copier_la_cl\u00E9_&BibTeX
 Custom_export=E&xportation_personnalis\u00E9e
 Custom_importers=Custom_importers
@@ -22,13 +22,10 @@ Edit_entry=&Editer_l'entr\u00E9e
 Edit_preamble=Editer_le_&pr\u00E9ambule
 Edit_strings=Editer_les_c&ha\u00EEnes
 Export=&Exporter
-
 Export_selected_entries_to_clipboard=Exporter_les_entr\u00E9es_s\u00E9lectionn\u00E9es_vers_le_presse-papiers
 Fetch_citations_from_CiteSeer=Recherche_de_citations_dans_&CiteSeer
 Fetch_CiteSeer=Recherche_Cit&eSeer
 Fetch_Medline=Recherche_&Medline
-
-# Menu names
 File=&Fichier
 Find_And_Fix=Cherche_et_r\u00e9pare
 Find_and_remove_exact_duplicates=Chercher_et_&supprimer_les_doublons_identiques
@@ -37,8 +34,6 @@ Help=Ai&de
 Help_contents=&Contenu_de_l'aide
 Highlight_groups_matching_all_selected_entries=Surligner_les_groupes_correspondant_\u00e0_&toutes_les_entr\u00e9es_s\u00e9lectionn\u00e9es
 Highlight_groups_matching_any_selected_entry=Surligner_les_groupes_correspondant_\u00e0_au_moins_&une_des_entr\u00e9es_s\u00e9lectionn\u00e9es
-Import=&Importer
-Import_and_append=I&mporter_et_joindre
 Import_Fields_from_CiteSeer=Importer_les_champs_depuis_&CiteSeer
 Incremental_search=Recherche_&incr\u00E9mentale
 
@@ -46,29 +41,24 @@ Insert_selected_citations_into_Emacs=Ins\u00E9rer_les_citations_s\u00E9lectionn\
 Insert_selected_citations_into_LatexEditor=Ins\u00e9rer_les_citations_s\u00e9lectionn\u00e9es_dans_LatexEditor
 Insert_selected_citations_into_LyX/Kile=Envoyer_les_citations_s\u00E9lectionn\u00E9es_dans_&LyX/Kile
 Insert_selected_citations_into_WinEdt=Envoyer_les_citations_s\u00E9lectionn\u00E9es_dans_&WinEdt
-Integrity_check=&V\u00E9rification_d'int\u00E9grit\u00E9
-# Help
+Integrity_check=V\u00E9rification_d'int\u00E9grit\u00E9
 JabRef_help=&Aide_de_JabRef
 Load_session=&Charger_session
 Manage_content_selectors=&G\u00E9rer_les_s\u00E9lecteurs_de_contenu
 Manage_custom_exports=&G\u00E9rer_les_exportations_personnalis\u00E9es
 Manage_custom_imports=G\u00E9rer_les_&importations_personnalis\u00E9es
 Mark_entries=Etiqueter_des_&entr\u00E9es
-# File menu
 New_database=&Nouvelle_base
-# Bibtex
 New_entry=N&ouvelle_entr\u00E9e
 New_entry...=&Nouvelle_entr\u00E9e...
 New_entry_from_plain_text=Nouvelle_entr\u00E9e_depuis_&texte_brut
 New_subdatabase_based_on_AUX_file=Nouveau_Fichier_BibTeX_depuis_fichier_AU&X
-# View
 Next_tab=Onglet_&suivant
 Open_database=&Ouvrir_base
 Open_PDF_or_PS=Ouvrir_&PDF_ou_PS
 Open_URL_or_DOI=Ouvrir_&URL_ou_DOI
 Options=Opt&ions
 Paste=C&oller
-# Options
 Preferences=&Pr\u00E9f\u00E9rences
 Previous_tab=Onglet_&pr\u00E9c\u00E9dent
 Quit=&Quitter
@@ -79,7 +69,6 @@ Save_database=&Sauvegarder_la_base
 Save_database_as_...=S&auvegarder_la_base_sous_...
 Save_selected_as_...=Sauvegarder_la_s\u00E9&lection_sous_...
 Save_session=Sau&ver_session
-# Tools
 Search=&Recherche
 Search_IEEEXplore=Recherche_IEEEXplore
 Select_all=&Tout_s\u00E9lectionner
@@ -89,15 +78,18 @@ Sort_tabs=Trier_les_onglets
 Switch_preview_layout=Pr\u00E9&visualiser_la_mise_en_page
 Synchronize_PDF_links=Synchroniser_les_liens_PD&F
 Synchronize_PS_links=Synchroniser_les_liens_P&S
-# Export menu
 Tab-separated_file=Fichier_-_s\u00E9paration_par_&tabulation
 Toggle_entry_preview=&Afficher/masquer_l'aper\u00E7u
 Toggle_groups_interface=Afficher/masquer_l'interface_des_&groupes
 Tools=&Outils
 Unabbreviate_journal_names=D\u00e9&velopper_les_noms_de_journaux
-# Edit
 Undo=&Annuler
 Unmark_all=To&ut_d\u00E9s\u00E9tiqueter
 Unmark_entries=&D\u00E9s\u00E9tiqueter_des_entr\u00E9es
 Unpack_EndNote_filter_set=D\u00E9compacter_la_s\u00E9rie_de_filtres_&EndNote
 View=&Affichage
+Web_search=&Recherche_internet
+Import_into_new_database=Importer_dans_une_nouvelle_base
+Import_into_current_database=Importer_dans_la_base_courante
+
+Scan_database...=
\ No newline at end of file
diff --git a/src/resource/Menu_it.properties b/src/resource/Menu_it.properties
index d396438..0b78da1 100644
--- a/src/resource/Menu_it.properties
+++ b/src/resource/Menu_it.properties
@@ -1,5 +1,5 @@
 #!
-#! created/edited by Popeye version 0.53a (popeye.sourceforge.net)
+#! created/edited by Popeye version 0.54 (popeye.sourceforge.net)
 #! encoding:ISO-8859-1
 Abbreviate_journal_names_(ISO)=Abbrevia_nomi_delle_riviste_(ISO)
 Abbreviate_journal_names_(MEDLINE)=Abbrevia_nomi_delle_riviste_(MEDLINE)
@@ -9,7 +9,7 @@ Autogenerate_BibTeX_keys=Genera_&automaticamente_le_chiavi_BibTeX
 BibTeX=&BibTeX
 Close_database=C&hiudi_il_database
 Copy=&Copia
-Copy_\cite{BibTeX_key}=Co&pia_\cite{chiave_BibTeX}
+Copy_\\cite{BibTeX_key}=Co&pia_\\cite{chiave_BibTeX}
 Copy_BibTeX_key=C&opia_chiave
 Custom_export=Es&portazione_personalizzata
 Custom_importers=&Filtri_di_importazione_personalizzati
@@ -37,8 +37,6 @@ Help=&Aiuto
 Help_contents=&Contenuto_dell'aiuto
 Highlight_groups_matching_all_selected_entries=&Evidenzia_i_gruppi_corrispondenti_a_tutte_le_righe_selezionate
 Highlight_groups_matching_any_selected_entry=Evi&denzia_i_gruppi_corrispondenti_alle_righe_selezionate
-Import=&Importa
-Import_and_append=I&mporta_e_aggiungi
 Import_Fields_from_CiteSeer=&Importa_campi_da_CiteSeer
 Incremental_search=Ricerca_&incrementale
 
@@ -101,3 +99,8 @@ Unmark_all=Rim&uovi_tutte_le_evidenziazioni
 Unmark_entries=&Rimuovi_evidenziazione
 Unpack_EndNote_filter_set=Decompattare_l'insieme_di_filtri_&EndNote
 View=&Visualizza
+Web_search=
+Import_into_new_database=
+Import_into_current_database=
+
+Scan_database...=
\ No newline at end of file
diff --git a/src/resource/Menu_no.properties b/src/resource/Menu_no.properties
index 5e4ea48..67b9dc1 100644
--- a/src/resource/Menu_no.properties
+++ b/src/resource/Menu_no.properties
@@ -1,5 +1,5 @@
 #!
-#! created/edited by Popeye version 0.53a (popeye.sourceforge.net)
+#! created/edited by Popeye version 0.54 (popeye.sourceforge.net)
 #! encoding:ISO-8859-1
 Abbreviate_journal_names_(ISO)=Forkort_journalnavn_(ISO)
 Abbreviate_journal_names_(MEDLINE)=Forkort_journalnavn_(MEDLINE)
@@ -9,7 +9,7 @@ Autogenerate_BibTeX_keys=&Autogenerer_BibTeX-n\u00F8kler
 BibTeX=&BibTeX
 Close_database=L&ukk_database
 Copy=K&opier
-Copy_\cite{BibTeX_key}=Kopier_\c&ite{BibTeX-n\u00f8kkel}
+Copy_\\cite{BibTeX_key}=Kopier_\\c&ite{BibTeX-n\u00f8kkel}
 Copy_BibTeX_key=Kopier_&BibTeX-n\u00F8kkel
 Custom_export=E&ksterne_eksportfiltre
 Custom_importers=Custom_importers
@@ -37,8 +37,6 @@ Help=&Hjelp
 Help_contents=&Oversikt_over_hjelpefiler
 Highlight_groups_matching_all_selected_entries=Uthev_grupper_som_inneholder_alle_valgte_enheter
 Highlight_groups_matching_any_selected_entry=Uthev_grupper_som_inneholder_minst_en_av_de_valgte_enhetene
-Import=&Importer
-Import_and_append=I&mporter_til_\u00E5pen_database
 Import_Fields_from_CiteSeer=Importer_felter_fra_&CiteSeer
 Incremental_search=&Inkrementelt_s\u00F8k
 Insert_selected_citations_into_Emacs=Send_valgte_enheter_til_Emacs
@@ -100,3 +98,8 @@ Unmark_all=F&jern_merking_fra_alle
 Unmark_entries=&Fjern_merking
 Unpack_EndNote_filter_set=Pakk_ut_&EndNote-filtersett
 View=&Vis
+Web_search=
+Import_into_new_database=
+Import_into_current_database=
+
+Scan_database...=&Unders\u00F8k_database
\ No newline at end of file
diff --git a/src/resource/build.properties b/src/resource/build.properties
index fecc300..d3d36ea 100644
--- a/src/resource/build.properties
+++ b/src/resource/build.properties
@@ -1,3 +1,3 @@
-builddate=May 9 2006
-build=107
-version=2.1 beta
\ No newline at end of file
+builddate=June 29 2006
+build=99
+version=2.1 beta 2
\ No newline at end of file
diff --git a/src/resource/layout/harvard/harvard.begin.layout b/src/resource/layout/harvard/harvard.begin.layout
index 610023a..92c728c 100644
--- a/src/resource/layout/harvard/harvard.begin.layout
+++ b/src/resource/layout/harvard/harvard.begin.layout
@@ -1,3 +1,3 @@
-{\\rtf1\\ansi\\ansicpg1252\\uc1 \\deff0\\deflang1031\\deflangfe1031{\\fonttbl{\\f0\\froman\\fcharset0\\fprq2{\\*\\panose 02020603050405020304}Times New Roman;}{\\f28\\froman\\fcharset238\\fprq2 Times New Roman CE;}{\\f29\\froman\\fcharset204\\fprq2 Times New Roman Cyr;}
-{\\f31\\froman\\fcharset161\\fprq2 Times New Roman Greek;}{\\f32\\froman\\fcharset162\\fprq2 Times New Roman Tur;}{\\f33\\froman\\fcharset177\\fprq2 Times New Roman (Hebrew);}{\\f34\\froman\\fcharset178\\fprq2 Times New Roman (Arabic);}
-{\\f35\\froman\\fcharset186\\fprq2 Times New Roman Baltic;}}{
+{\\rtf1\\ansi\\ansicpg1251\\uc1\\deff0\\stshfdbch0\\stshfloch0\\stshfhich0\\stshfbi0\\deflang1049\\deflangfe1049{\\fonttbl{\\f0\\froman\\fcharset204\\fprq2{\\*\\panose 02020603050405020304}Times New Roman;}{\\f39\\froman\\fcharset0\\fprq2 Times New Roman;}
+{\\f37\\froman\\fcharset238\\fprq2 Times New Roman CE;}{\\f40\\froman\\fcharset161\\fprq2 Times New Roman Greek;}{\\f41\\froman\\fcharset162\\fprq2 Times New Roman Tur;}{\\f42\\froman\\fcharset177\\fprq2 Times New Roman (Hebrew);}
+{\\f43\\froman\\fcharset178\\fprq2 Times New Roman (Arabic);}{\\f44\\froman\\fcharset186\\fprq2 Times New Roman Baltic;}{\\f45\\froman\\fcharset163\\fprq2 Times New Roman (Vietnamese);}}{
diff --git a/src/txt/README b/src/txt/README
index cf52910..87b9af5 100644
--- a/src/txt/README
+++ b/src/txt/README
@@ -1,6 +1,6 @@
 
-JabRef 2.1 beta
----------------
+JabRef 2.1 beta 2
+-----------------
 
 
 Introduction:
@@ -80,6 +80,17 @@ If you choose languages other than English, some or all help pages may
 appear in your chosen languages.
 
 Change log:
+2.1b2   - Added option to toggle floating of marked entries to the top of the table.
+        - Added option to open, append and import multiple BibTeX files.
+        - Improved support for LaTeX special characters in HTML and RTF representations.
+        - Fixed bug that made entry selection get lost when an edit modifies the entry's
+          position in the main table.
+        - Fixed bug in BibTeXML export (entry type name missing in tag).
+        - Fixed name handling in (non-compliant) Endnote files giving all author names
+          on the same line.
+        - Fixed problem with keyword handling in Medline import.
+        - Fixed (harmless) NullPointerException when medline fetch is cancelled.
+        - Fixed bug in parser that made {"} illegal in fields quoted with ".
 2.1b    - Known issue: font sizes cannot be changed, but should follow OS settings on
           Windows and Mac.
         - Known issue: some HTML may be handled inappropriately when downloading from
diff --git a/src/txt/README b/src/txt/README~
similarity index 97%
copy from src/txt/README
copy to src/txt/README~
index cf52910..a24343c 100644
--- a/src/txt/README
+++ b/src/txt/README~
@@ -80,6 +80,17 @@ If you choose languages other than English, some or all help pages may
 appear in your chosen languages.
 
 Change log:
+2.1b2   - Added option to toggle floating of marked entries to the top of the table.
+        - Added option to open, append and import multiple BibTeX files.
+        - Improved support for LaTeX special characters in HTML and RTF representations.
+        - Fixed bug that made entry selection get lost when an edit modifies the entry's
+          position in the main table.
+        - Fixed bug in BibTeXML export (entry type name missing in tag).
+        - Fixed name handling in (non-compliant) Endnote files giving all author names
+          on the same line.
+        - Fixed problem with keyword handling in Medline import.
+        - Fixed (harmless) NullPointerException when medline fetch is cancelled.
+        - Fixed bug in parser that made {"} illegal in fields quoted with ".
 2.1b    - Known issue: font sizes cannot be changed, but should follow OS settings on
           Windows and Mac.
         - Known issue: some HTML may be handled inappropriately when downloading from

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/jabref.git



More information about the pkg-java-commits mailing list