[jabref] 266/459: [svn-upgrade] Integrating new upstream version, jabref (2.6+ds)

gregor herrmann gregoa at debian.org
Thu Sep 15 20:40:38 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 9bca9ae87b335966ae6fe42d5a05eed6cab51afc
Author: gregor herrmann <gregoa at debian.org>
Date:   Thu Apr 15 17:37:51 2010 +0000

    [svn-upgrade] Integrating new upstream version, jabref (2.6+ds)
---
 build.number                                       |   4 +-
 build.xml                                          |   8 +-
 src/help/ACMPortalHelp.html                        |  12 +-
 src/help/Contents.html                             |   1 +
 src/help/CustomEntriesHelp.html                    |  14 +-
 src/help/CustomExports.html                        |   7 +-
 src/help/IEEEXploreHelp.html                       |  10 +-
 src/help/fr/ACMPortalHelp.html                     |  22 +-
 src/help/fr/BaseFrameHelp.html                     |   2 +-
 src/help/fr/Contents.html                          |   3 +-
 src/help/fr/CustomEntriesHelp.html                 |  22 +-
 src/help/fr/CustomExports.html                     |   8 +-
 src/help/fr/IEEEXploreHelp.html                    |  17 +-
 src/help/fr/JSTOR.html                             |   2 +-
 src/help/fr/LabelPatterns.html                     |   8 +-
 src/help/fr/RevisionHistory.html                   |  97 ++-
 src/images/splash-2.5beta.svg                      | 299 --------
 src/images/{splash-2.5.svg => splash-2.6.svg}      |  71 +-
 src/images/splash-2.6beta.svg                      | 299 --------
 src/images/splash.png                              | Bin 175305 -> 172722 bytes
 src/images/splashBackground.png                    | Bin 0 -> 157549 bytes
 src/java/gnu/dtools/ritopt/OptionMenu.java         |   4 +-
 src/java/net/sf/jabref/BasePanel.java              |  18 +-
 src/java/net/sf/jabref/BibtexEntry.java            |   2 +-
 src/java/net/sf/jabref/BibtexEntryType.java        |  33 +-
 src/java/net/sf/jabref/CustomEntryType.java        | 142 +++-
 src/java/net/sf/jabref/EntryEditor.java            |  34 +-
 src/java/net/sf/jabref/ExternalTab.java            |  34 +-
 src/java/net/sf/jabref/FieldTextMenu.java          |   2 +-
 src/java/net/sf/jabref/HelpAction.java             |  11 +-
 src/java/net/sf/jabref/HelpContent.java            |  12 +-
 src/java/net/sf/jabref/HelpDialog.java             |  12 +-
 src/java/net/sf/jabref/JabRef.java                 |  10 +-
 src/java/net/sf/jabref/JabRefFrame.java            |   3 +-
 src/java/net/sf/jabref/JabRefPreferences.java      |  32 +-
 src/java/net/sf/jabref/MergeDialog.java            |   4 -
 src/java/net/sf/jabref/PrefsDialog3.java           |   2 +
 src/java/net/sf/jabref/TableColumnsTab.java        |   2 +-
 src/java/net/sf/jabref/Util.java                   |  58 +-
 .../net/sf/jabref/collab/FileUpdateMonitor.java    |   5 +-
 .../net/sf/jabref/export/CustomExportList.java     |  11 +-
 .../export/OpenDocumentSpreadsheetCreator.java     |  21 +-
 .../net/sf/jabref/export/SaveDatabaseAction.java   |   6 +-
 .../sf/jabref/export/layout/format/Replace.java    |   7 +-
 .../jabref/export/layout/format/WrapFileLinks.java |   6 +-
 src/java/net/sf/jabref/external/FindFullText.java  |   6 +-
 src/java/net/sf/jabref/groups/GroupTreeNode.java   |   5 +
 .../sf/jabref/gui/EntryCustomizationDialog2.java   |  12 +-
 src/java/net/sf/jabref/gui/FileListEditor.java     |   4 +-
 .../sf/jabref/gui/MainTableSelectionListener.java  |  29 +-
 .../net/sf/jabref/gui/SearchResultsDialog.java     |   4 +-
 .../net/sf/jabref/imports/ACMPortalFetcher.java    |  73 +-
 src/java/net/sf/jabref/imports/GeneralFetcher.java |   7 +-
 src/java/net/sf/jabref/imports/HTMLConverter.java  |  77 +-
 .../net/sf/jabref/imports/IEEEXploreFetcher.java   | 773 ++++++++++-----------
 src/java/net/sf/jabref/imports/OAI2Fetcher.java    |   2 +-
 src/java/net/sf/jabref/sql/DBConnectDialog.java    |   2 +-
 src/resource/JabRef_da.properties                  |  13 +-
 src/resource/JabRef_de.properties                  |  11 +-
 src/resource/JabRef_en.properties                  |  13 +-
 src/resource/JabRef_fr.properties                  |   9 +-
 src/resource/JabRef_it.properties                  |   9 +-
 src/resource/JabRef_nl.properties                  |  13 +-
 src/resource/JabRef_no.properties                  | 252 +++----
 src/resource/JabRef_tr.properties                  |  13 +-
 src/resource/JabRef_zh.properties                  |  13 +-
 src/resource/JabRef_zh.properties.UTF8             |  11 +-
 src/resource/Menu_no.properties                    |  16 +-
 src/resource/Menu_tr.properties                    |  12 +-
 src/resource/build.properties                      |   6 +-
 src/txt/CHANGELOG                                  |  17 +
 src/txt/README                                     |   4 +-
 src/txt/TODO                                       |   1 -
 73 files changed, 1267 insertions(+), 1517 deletions(-)

diff --git a/build.number b/build.number
index c46966c..bafe691 100644
--- a/build.number
+++ b/build.number
@@ -1,3 +1,3 @@
 #Build Number for ANT. Do not edit!
-#Sun Mar 07 13:57:35 CET 2010
-build.number=173
+#Tue Apr 13 17:49:31 CEST 2010
+build.number=310
diff --git a/build.xml b/build.xml
index 6692d7b..17d52f1 100644
--- a/build.xml
+++ b/build.xml
@@ -22,8 +22,8 @@
    Compiler: Ant
    Authors:  Joerg K. Wegner, wegnerj at informatik.uni-tuebingen.de
              Morten O. Alver
-   Version:  $Revision: 3196 $
-             $Date: 2010-03-02 16:55:38 +0100 (Tue, 02 Mar 2010) $
+   Version:  $Revision: 3254 $
+             $Date: 2010-04-10 13:24:44 +0200 (Sat, 10 Apr 2010) $
              $Author: mortenalver $
 
    modified:
@@ -47,7 +47,7 @@
      +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-->
 
 	<!-- some version information -->
-	<property name="jabref.version" value="2.6b3" />
+	<property name="jabref.version" value="2.6" />
 	<property name="jabref.placeholder.version" value="@version@" />
 	<!-- used by replace task -->
 
@@ -108,7 +108,7 @@
 	<fileset id="jarsFileset" dir="${lib.dir}">
 		<include name="antlr.jar" />
 		<include name="antlr-3.0b5.jar" />
-		<include name="looks-2.2.0.jar" />
+		<include name="looks-2.3.1.jar" />
 		<include name="forms-1.1.0.jar" />
 		<include name="spin.jar" />
 		<include name="glazedlists-1.7.0_java15.jar" />
diff --git a/src/help/ACMPortalHelp.html b/src/help/ACMPortalHelp.html
index 296df30..88a1887 100644
--- a/src/help/ACMPortalHelp.html
+++ b/src/help/ACMPortalHelp.html
@@ -17,14 +17,16 @@
     <p>To start a search, enter the words of your query, and press
     <b>Enter</b> or the <b>Fetch</b> button.</p>
 
-	<p>This causes a significantly larger
-    amount of network queries, so to avoid excessive pressure on
+    <p>You may choose which database to search and you may opt to download the abstracts along with the cite information for each entry, by checking the <b>Include abstracts</b> checkbox.</p>
+
+	<p>To avoid excessive pressure on
     the ACM Portal web site, JabRef will refuse to download
     entries for more than a given number.
 	</p>
 
-    <p>You may choose which database to search and you may opt to download the abstracts along with the cite
-    information for each entry, by checking the <b>Include
-    abstracts</b> checkbox.</p>
+	<p>At this point, frequent connections to ACM Portal will get your IP banned for hours. So JabRef will wait 5 seconds between each connection and the download process will be very slow.
+	</p>
+
+	<p>Please email Aaron Chen <b>nextAaron at gmail.com</b> for any suggestions.</p>
 </body>
 </html>
diff --git a/src/help/Contents.html b/src/help/Contents.html
index a4f13c6..759ad80 100755
--- a/src/help/Contents.html
+++ b/src/help/Contents.html
@@ -55,6 +55,7 @@
       <li><a href="IEEEXploreHelp.html">Fetching entries from <em>IEEExplore</em></a></li>
       <li><a href="MedlineHelp.html">Fetching entries from <em>Medline</em></a></li>
       <li><a href="JSTOR.html"><em>JStor</em> search</a></li>
+      <li><a href="Spires.html"><em>ScienceDirect</em> search</a></li>
       <li><a href="Spires.html"><em>Spires</em> search</a></li>
       <li><a href="SQLExport.html">Export to an External SQL Database</a></li>
       <li><a href="XMPHelp.html">XMP metadata support in JabRef</a></li>
diff --git a/src/help/CustomEntriesHelp.html b/src/help/CustomEntriesHelp.html
index 67dd3ea..307a570 100644
--- a/src/help/CustomEntriesHelp.html
+++ b/src/help/CustomEntriesHelp.html
@@ -68,11 +68,13 @@
     and click the arrow buttons to move it up or down in the
     list.</p>
 
-    <p>There is one limitation to customizing entry types; certain
-    types have an and/or condition in their required fields. For
-    instance, a <em>book</em> entry is complete with either the
-    <em>author</em> or the <em>editor</em> field, or both. This
-    type of condition cannot be represented in a customized
-    entry.</p>
+    <h3>Either/or fields</h3>
+    <p>Certain entry types have an either-or condition in their
+    required fields. For instance, a <em>book</em> entry is complete
+    with either the <em>author</em> or the <em>editor</em> field, or
+    both. To indicate such a condition in a custom entry type, you should
+    add a field named as the set of alternative fields separated by slashes,
+    for instance <em>author/editor</em> indicates the condition mentioned above for
+    the <em>book</em> entry type.</p>
 </body>
 </html>
diff --git a/src/help/CustomExports.html b/src/help/CustomExports.html
index 781dbbb..2fd5fce 100644
--- a/src/help/CustomExports.html
+++ b/src/help/CustomExports.html
@@ -379,9 +379,10 @@
         To use this formatter, a two-part argument must be given. The parts are
         separated by a comma. To indicate the comma character, use an escape
         sequence: \,<br> <br>
-        The first part is the regular expression to search for. The regular expression
-        is written normally, without extra escape sequences for backslashes. A description
-        of Java regular expressions can be found at:<br>
+        The first part is the regular expression to search for. Remember that any commma
+        character must be preceded by a backslash, and consequently a literal backslash must
+        be written as a pair of backslashes. A description of Java regular expressions can be
+        found at:<br>
          http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html
          <br> <br>
         The second part is the text to replace all matches with.</li>
diff --git a/src/help/IEEEXploreHelp.html b/src/help/IEEEXploreHelp.html
index 5e6b16e..d477b11 100644
--- a/src/help/IEEEXploreHelp.html
+++ b/src/help/IEEEXploreHelp.html
@@ -22,10 +22,10 @@
 
     <p>You may opt to download the abstracts along with the cite
     information for each entry, by checking the <b>Include
-    abstracts</b> checkbox. This causes a significantly larger
-    amount of network queries, so to avoid excessive pressure on
-    the IEEEXplore web site, JabRef will refuse to download
-    abstracts for searches returning more than a given number of
-    hits.</p>
+    abstracts</b> checkbox. This will NOT cause more network queries.</p>
+
+    <p>The option to download BibTeX citations directly from IEEEXplore is not working yet.</p>
+
+    <p>Please email Aaron Chen <b>nextAaron at gmail.com</b> for any suggestions.</p>
 </body>
 </html>
diff --git a/src/help/fr/ACMPortalHelp.html b/src/help/fr/ACMPortalHelp.html
index fed2b95..2bd5b2f 100644
--- a/src/help/fr/ACMPortalHelp.html
+++ b/src/help/fr/ACMPortalHelp.html
@@ -21,12 +21,22 @@
     <p>Pour démarrer la recherche, entrer les mots de votre requête et appuyer sur 
     <b>Entrée</b> ou sur le bouton <b>Rechercher</b>.</p>
 
-	  <p>Cela cause une quantité relativement grande de requêtes réseau. Pour éviter de mettre
-	  une pression excessive sur le site internet du portail ACM, JabRef refusera de télécharger
-	  plus qu'un certain nombre d'entrées.</p>
+    <p>Vous pouvez choisir la base de données sur laquelle portera la recherche.
+    Vous pouvez décider de télécharger les résumés
+    avec les autres informations de chaque entrée en validant la
+    case à cocher <b>Inclure les résumés</b>.</p>
+    
+    <p>Pour éviter de mettre une pression excessive sur le site internet du
+    portail ACM, JabRef refusera de télécharger
+    plus qu'un certain nombre d'entrées.</p>
 
-    <p>Vous pouvez choisir la base de données sur laquelle portera la recherche. Vous pouvez décider
-    de télécharger les résumés avec les autres informations de chaque entrée en validant la case à cocher
-    <b>Inclure les résumés</b>.</p>
+    <p>À ce moment, des connexions fréquentes au portail ACM vont causer
+    l'interdiction de votre adresse IP pour plusieurs heures. Aussi, JabRef attendra
+    5 secondes entre chaque connexion, et le processus de téléchargement
+    sera très lent.</p>
+
+    <p>Pour toute suggestion, envoyez s'il vous plaît
+    un courriel à Aaron Chen <b>nextAaron at gmail.com</b>.</p>    
+    
 </body>
 </html>
diff --git a/src/help/fr/BaseFrameHelp.html b/src/help/fr/BaseFrameHelp.html
index 47351c4..e51ac9f 100644
--- a/src/help/fr/BaseFrameHelp.html
+++ b/src/help/fr/BaseFrameHelp.html
@@ -48,7 +48,7 @@
         colonne pour l'ajouter, l'inverser ou l'enlever comme
         critère de tri auxiliaire. Vous pouvez ajouter un
         nombre arbitraire de critères auxiliaires, mais uniquement
-        trois niveaux seront mémorisés pour
+        trois niveaux seront mémorisés pour
         le démarrage suivant de JabRef.</li>
 
         <li>Vous pouvez ajuster la largeur des colonnes en faisant
diff --git a/src/help/fr/Contents.html b/src/help/fr/Contents.html
index e7eb00e..f70180f 100644
--- a/src/help/fr/Contents.html
+++ b/src/help/fr/Contents.html
@@ -11,7 +11,7 @@
       <li><a href="JabRefHelp.html">Informations générales</a></li>
       <li><a href="BaseFrameHelp.html">La fenêtre principale de JabRef</a></li>
       <li><a href="EntryEditorHelp.html">Éditeur d'entrées</a></li>
-      <li><a href="Autosave.html">Sauvegarde automatique<</a></li>
+      <li><a href="Autosave.html">Sauvegarde automatique</a></li>
     </ul>
 
     <h2>Champs</h2>
@@ -55,6 +55,7 @@
       <li><a href="IEEEXploreHelp.html">Récupération des entrées depuis <em>IEEExplore</em></a></li>
       <li><a href="MedlineHelp.html">Récupération des entrées depuis <em>Medline</em></a></li>
       <li><a href="JSTOR.html">Récupération des entrées depuis <em>JStor</em></a></li>
+      <li><a href="ScienceDirect.html">Récupération des entrées depuis <em>ScienceDirect</em></a></li>
       <li><a href="Spires.html">Récupération des entrées depuis <em>Spires</em></a></li>
       <li><a href="SQLExport.html">Exporter vers une base de données SQL externe</a></li>
       <li><a href="XMPHelp.html">Support des métadonnées XMP dans JabRef</a></li>
diff --git a/src/help/fr/CustomEntriesHelp.html b/src/help/fr/CustomEntriesHelp.html
index 71e73eb..94b5ea7 100644
--- a/src/help/fr/CustomEntriesHelp.html
+++ b/src/help/fr/CustomEntriesHelp.html
@@ -87,12 +87,20 @@
     <p>Pour changer l'ordre des champs, sélectionner le nom
     d'un champ et cliquer sur les boutons en forme de
     flèches pour le déplacer vers le haut ou vers le
-    bas de la liste. Il y a une limitation à la
-    personnalisation des entrées ; certains types ont
-    une condition "et/ou" dans les champs requis. Par exemple, une
-    entrée <em>book</em> est complète lorsque au
-    moins un des champs <em>author</em> ou <em>editor</em> est
-    rempli. Ce type de condition ne peut pas être introduite
-    dans une entrée personnalisée.</p>
+    bas de la liste.</p> 
+    
+    <h3>Les champs et/ou </h3>
+    <p>Certains types d'entrées ont une condition et/ou
+    dans leurs champs requis. Par exemple, une entrée <em>book</em>
+    est complète quand au moins un des champs <em>author</em> ou
+    <em>editor</em> est rempli.
+    Pour indiquer une telle condition dans un type d'entrée
+    personnalisé, vous devez ajouter un champ nommé
+    par une série de champs alternatifs séparés
+    par des slashs (/), comme par exemple <em>author/editor</em>
+    pour indiquer la condition mentionnée ci-dessus
+    pour l'entrée de type <em>book</em>.</p>
+    
+    
 </body>
 </html>
diff --git a/src/help/fr/CustomExports.html b/src/help/fr/CustomExports.html
index 6b9f322..f2a41c2 100644
--- a/src/help/fr/CustomExports.html
+++ b/src/help/fr/CustomExports.html
@@ -319,7 +319,7 @@
         <li><code>AuthorLF_FF</code> : formate
         les champs author/editor avec le nom de famille en premier pour le
         premier auteur et le prénom en premier pour les auteurs restants.
-        Renvoie les noms séparés par des "and".</li>
+        Renvoie les noms séparés par des "and".</li>
 
         <li><code>AuthorLF_FFAbbr</code> : comme <code>AuthorLF_FF</code>,
         mais abrège les prénoms.</li>
@@ -443,8 +443,10 @@
         Pour utiliser ce formateur, un argument en deux parties doit être fourni. Les parties sont
         séparées par une virgule. Pour indiquer le caractère virgule, utilisez la séquence
         d'échappement : \,<br>
-        La première partie est l'expression régulière à rechercher. L'expression régulière
-        s'écrit normalement, sans séquence d'échappement supplémentaire pour les anti-slash ("backslashes"). Une description
+        La première partie est l'expression régulière à rechercher. 
+        Notez bien que toute virgule doit y être précédée par un antislash,
+        et, qu'en conséquence, un antislash dans l'expression régulière
+        recherchée y est représenté par une paire d'anti-slash. Une description
         des expression régulières de Java peut être trouvée à :<br>
          http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html<br>
         La seconde partie est le texte qui remplace tous les correspondances.</li>
diff --git a/src/help/fr/IEEEXploreHelp.html b/src/help/fr/IEEEXploreHelp.html
index f14b7da..b35c404 100644
--- a/src/help/fr/IEEEXploreHelp.html
+++ b/src/help/fr/IEEEXploreHelp.html
@@ -26,12 +26,15 @@
     <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.</p>
+    résumés</b>. Cela ne créera PAS de
+    requêtes réseau supplémentaires.</p>
+
+    <p>L'option de téléchargement direct de
+    citations BibTeX à partir de IEEEXplore ne
+    fonctionne pas encore.</p>
+
+    <p>Pour toute suggestion, envoyez s'il vous plaît
+    un courriel à Aaron Chen <b>nextAaron at gmail.com</b>.</p>    
+    
 </body>
 </html>
diff --git a/src/help/fr/JSTOR.html b/src/help/fr/JSTOR.html
index 307a58b..f3896ee 100644
--- a/src/help/fr/JSTOR.html
+++ b/src/help/fr/JSTOR.html
@@ -5,7 +5,7 @@
 
   <h1>Recherche JStor</h1>
   
-    <p>La recherche JStor s'effectue gràce au projet d'extraction de données de BibSonomy (http://scraper.bibsonomy.org/)
+    <p>La recherche JStor s'effectue gràce au projet d'extraction de données de BibSonomy (http://scraper.bibsonomy.org/)
     pour extraire des informations des page web de JStor.</p>
 
     <p>L'aide ci-dessous a été copiée depuis le site web de JStor et pourrait changer avec JSTor :</p>
diff --git a/src/help/fr/LabelPatterns.html b/src/help/fr/LabelPatterns.html
index f93b962..04d6de6 100644
--- a/src/help/fr/LabelPatterns.html
+++ b/src/help/fr/LabelPatterns.html
@@ -47,10 +47,10 @@
         ajouté.<br /></li>
                 
         <li><b>[<code>authorsAlpha</code>]</b> : correspond au style
-        BibTeX "alpha". Un auteur : les trois premières lettres du nom.
-        Deux à quatre auteurs : Les premières lettres des noms, concaténées.
-        Plus de quatre auterus : Les premières lettres des noms des trois
-        premiers auteurs, concaténées, avec un "+" à la fin.<br /></li>
+        BibTeX "alpha". Un auteur : les trois premières lettres du nom.
+        Deux à quatre auteurs : Les premières lettres des noms, concaténées.
+        Plus de quatre auterus : Les premières lettres des noms des trois
+        premiers auteurs, concaténées, avec un "+" à la fin.<br /></li>
 
         <li><b>[<code>authIniN</code>]</b> : Les N
         premières lettres (ou moins) du nom de chacun des
diff --git a/src/help/fr/RevisionHistory.html b/src/help/fr/RevisionHistory.html
index 05e95e1..f1cc96a 100644
--- a/src/help/fr/RevisionHistory.html
+++ b/src/help/fr/RevisionHistory.html
@@ -5,6 +5,101 @@
 
   <h1>Historique des révisions (en anglais)</h1>
 
+    <h3>Version 2.6beta3</h3>
+
+        <li>Added ScienceDirect entry fetcher that utilizes the BibSonomy scraper.</li>
+        <li>Changed non-native file dialog setting so files cannot be renamed. This prevents
+          accidentally entering rename mode when trying to enter directory. Can be enabled
+          again in Options -> Preferences -> Advanced.</li>
+        <li>Added new JStor fetcher that utilizes the BibSonomy scraper to obtain BibTeX data.</li>
+        <li>Fixed bug in CookieHandlerImpl.</li>
+        <li>Fixed bug; when dragging a file into JabRef and asking to move it to the file
+          directory, warning will now be given if the destination file already exists. Patch
+          by Alastair Mailer.</li>
+        <li>When dragging a file into JabRef and asking to copy or move it to the file directory,
+          it is now possible to rename to an arbitrary name. Patch by Alastair Mailer.</li>
+        <li>Added "review" field to BibTeXML export.</li>
+        <li>Added Reset button to entry fetchers. Patch by Dennis Hartrampf and Ines Moosdorf.</li>
+        <li>Changed Microsoft Office XML export so "number" rather than "issue" is exported
+          as <b:Issue>, which conforms with import format.</li>
+        <li>Added confirmation dialog that allows saving without backup in cases when
+          backup creation fails.</li>
+        <li>Fixed bug 2938562: using the move/rename feature on a file link could give an
+          absolute link even if the file was put below the main file directory.</li>
+        <li>Fixed bug 2931293: error generating key with [authorsAlpha] for short names.</li>
+        <li>When checking for external modifications, file size is now checked in addition
+          to the time stamp.</li>
+        <li>Fixed handling of maximised state when shutting down and starting up JabRef.
+          Patch by Igor L. Chernyavsky.</li>
+        <li>Fixed bug that prevented correct handling of DOS short file names. Patch
+          by Igor L. Chernyavsky.</li>
+        <li>Added support for KOI8_R character set.</li>
+        <li>Removed DocumentPrinter class, using standard API functions instead. Patch by
+          Tony Mancill.</li>
+        <li>Removed HightlightFilter class, using standard API functions instead. Patch by
+          Tony Mancill.</li>
+        <li>Changed keyboard shortcut for IEEXplorer search to Alt-F8.</li>
+        <li>Disabled JStor search, which doesn't work due to API changes.</li>
+        <li>External file type manager now removes "." prefix in file type extension if the user
+          has typed it that way.</li>
+        <li>Preview panel now defaults to preview layout 1 instead of 2. Switched default layouts.</li>
+        <li>Added IfPlural formatter by Russell Almond. The formatter outputs its first argument
+          if the input field contains " and " and the second one otherwise.</li>
+        <li>Applied patch by Philipp Cordes and Björn Kahlert for improved handling of names by
+          autocompleter. The patch also reorganizes the autocompleter classes.</li>
+        <li>Table will now scroll to keep the currently edited entry visible if an edit leads to
+          the entry getting sorted to a different position.</li>
+        <li>Reworked author and editor handling in Docbook export. Added Docbook XML header.</li>
+        <li>Database will no longer be marked as changed after accepting external changes, unless one or
+          more changes were not accepted before merging, and unless database was already marked as
+          changed.</li>
+        <li>Fixed bug: undesired autocompletion when saving file.</li>
+        <li>Fixed bug: entry editor doesn't appear when new entry is added while a filtering search or
+          group selection is active.</li>
+        <li>Fixed bug in writing of metadata on Windows. For certain metadata lengths newlines would be
+          messed up after the metadata comment in a bib file.</li>
+        <li>Search dialog now automatically previews first hit, and hides preview if there are no hits.</li>
+
+    <h3>Version 2.6beta2</h3>
+
+        <li>Added export formatter "Default" which takes a single argument. Outputs the string to format
+          unchanged if it is non-empty, otherwise outputs the argument.</li>
+        <li>Added option under Options -> Preferences -> General for disabling the strict enforcing of
+          correct BibTeX keys. Disabling this makes it possible to use e.g. umlaut characters in keys.</li>
+        <li>Modified launcher script for Windows installer to give higher heap size limit.</li>
+        <li>Improved autocompletion. All fields with autocompletion which have content selectors will now
+          autocomplete on content selector values. For the "journal" field, the autocompleter will now
+          additionally use entries from the current journal abbreviations list, and will also complete
+          on the entire field up to the cursor rather than just looking at the last word only.</li>
+        <li>Added support for postformatter in Layout. The postformatter will be run after
+          the formatters called from a layout.</li>
+        <li>Improved group autogeneration. Added option to generate groups based on author or editor
+          last names. Autogenerated groups are now alphabetized.</li>
+        <li>Modified Endnote export filter so "--" gets converted to "-" in the "pages" field.</li>
+        <li>Changed keyword groups so they will match on whole words only. E.g. a keyword group for the
+          keyword "can" will no longer match the keyword "scanner".</li>
+        <li>Improved entry type determination and author parsing for some varieties of CSA files.</li>
+        <li>Minor change to Harvard RTF export. Added space after "ed.", and added editor to output for
+          inbook entries.</li>
+        <li>Set limit to the number of displayed characters in group names in groups tree in order to
+          avoid group panel width problems.</li>
+        <li>Changed file link handling so all remote links classified as URL can be opened through
+          the browser. Setting a different file type manually makes JabRef call a remote link using
+          the handler application instead.</li>
+        <li>Modified Endnote/refer import filter to strip "doi:" from the %R field.</li>
+        <li>Modified HTML conversion so single newline is displayed in the preview (and HTML exports) as
+          <br>, while multiple newlines are displayed as <p>.</li>
+        <li>Fixed bug: switching entry editor between entries of different type may result in switching
+          of entry editor tabs.</li>
+        <li>Fixed bug: adding external file link leads to relative path from root directory if file
+          directory is set to an empty string.</li>
+        <li>Fixed error message when a # in a BibTeX string prevents saving. No longer states that the
+          problem is in an entry, but specifies that it is in a string.</li>
+        <li>Fixed bug: ODS export doesn't resolve BibTeX strings.</li>
+        <li>Fixed bug: content selector for "editor" field uses "," instead of " and " as delimiter.</li>
+        <li>Fixed bug: editing source doesn't allow change of entry type.</li>
+        <li>RTFChars formatter now converts --- to \emdash and -- to \endash.</li>
+
     <h3>Version 2.6beta</h3>
 
     <ul>
@@ -26,7 +121,7 @@
             author field.</li>
         <li>Fixed bug in autocompleter. Current suggested completion would be added to the field
             if the user closed the entry editor or mouse clicked on another field.</li>
-        <li>Fixed problem with exporting to some MySql versions. Patch by François Dorin.</li>
+        <li>Fixed problem with exporting to some MySql versions. Patch by François Dorin.</li>
         <li>Fixed bug in handling of LaTeX character sequences - now sequences with = as command
             character (e.g. "\={A}") are recognized.</li>
         <li>Fixed bug: gray out / hide setting in groups panel is overridden on startup
diff --git a/src/images/splash-2.5beta.svg b/src/images/splash-2.5beta.svg
deleted file mode 100644
index e4cd4d7..0000000
--- a/src/images/splash-2.5beta.svg
+++ /dev/null
@@ -1,299 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   inkscape:export-ydpi="90.000000"
-   inkscape:export-xdpi="90.000000"
-   inkscape:export-filename="/home/alver/jabref_head/jabref/src/images/jabref_splash-2.2.png"
-   sodipodi:docname="splash-2.5beta.svg"
-   sodipodi:docbase="/home/alver/jabref_trunk/src/images"
-   inkscape:version="0.46"
-   sodipodi:version="0.32"
-   id="svg2138"
-   height="1052.3622047"
-   width="744.09448819"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape">
-  <defs
-     id="defs2140">
-    <inkscape:perspective
-       sodipodi:type="inkscape:persp3d"
-       inkscape:vp_x="0 : 526.18109 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_z="744.09448 : 526.18109 : 1"
-       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
-       id="perspective2595" />
-    <linearGradient
-       id="linearGradient2974">
-      <stop
-         style="stop-color:#505b77;stop-opacity:1;"
-         offset="0"
-         id="stop2976" />
-      <stop
-         style="stop-color:#596a97;stop-opacity:1;"
-         offset="1"
-         id="stop2978" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient2883">
-      <stop
-         style="stop-color:#c5c1c1;stop-opacity:1;"
-         offset="0"
-         id="stop2885" />
-      <stop
-         style="stop-color:white;stop-opacity:1;"
-         offset="1"
-         id="stop2887" />
-    </linearGradient>
-    <pattern
-       patternTransform="translate(316.0000,1046.362)"
-       id="pattern9054"
-       xlink:href="#pattern9048"
-       inkscape:collect="always" />
-    <marker
-       style="overflow:visible;"
-       id="Arrow2Send"
-       refX="0.0"
-       refY="0.0"
-       orient="auto"
-       inkscape:stockid="Arrow2Send">
-      <path
-         transform="scale(0.3) rotate(180) translate(-5,0)"
-         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
-         style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
-         id="path3046"
-         sodipodi:nodetypes="cccc" />
-    </marker>
-    <pattern
-       id="pattern9048"
-       patternTransform="translate(231.0000,284.3622)"
-       height="428.00000"
-       width="572.00000"
-       patternUnits="userSpaceOnUse">
-      <image
-         transform="translate(-231.0000,-284.3622)"
-         style="opacity:1.0000000;stroke:#000000;stroke-width:5.0000000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000"
-         inkscape:export-ydpi="90.000000"
-         inkscape:export-xdpi="90.000000"
-         inkscape:export-filename="/home/alver/Desktop/bilder/jabref/splash4.png"
-         y="284.36218"
-         x="231.00000"
-         xlink:href="behandlet.png"
-         sodipodi:absref="/home/alver/Desktop/bilder/jabref/behandlet.png"
-         width="572.00000"
-         height="428.00000"
-         id="image9050" />
-    </pattern>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2883"
-       id="radialGradient2889"
-       cx="255.5"
-       cy="330.36218"
-       fx="255.5"
-       fy="330.36218"
-       r="135.88549"
-       gradientTransform="matrix(-0.799579,-5.606082e-2,6.979161e-2,-1.00875,436.7358,677.9388)"
-       gradientUnits="userSpaceOnUse" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2883"
-       id="linearGradient2909"
-       x1="443.79153"
-       y1="351.89935"
-       x2="602.17139"
-       y2="351.89935"
-       gradientUnits="userSpaceOnUse" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2883"
-       id="radialGradient2796"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.799579,-5.606082e-2,6.979161e-2,-1.00875,436.7358,677.9388)"
-       cx="255.5"
-       cy="330.36218"
-       fx="255.5"
-       fy="330.36218"
-       r="135.88549" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2883"
-       id="radialGradient2798"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.799579,-5.606082e-2,6.979161e-2,-1.00875,436.7358,677.9388)"
-       cx="255.5"
-       cy="330.36218"
-       fx="255.5"
-       fy="330.36218"
-       r="135.88549" />
-  </defs>
-  <sodipodi:namedview
-     inkscape:window-y="25"
-     inkscape:window-x="50"
-     inkscape:window-height="768"
-     inkscape:window-width="1280"
-     inkscape:current-layer="layer1"
-     inkscape:document-units="px"
-     inkscape:cy="677.8697"
-     inkscape:cx="238.10531"
-     inkscape:zoom="1"
-     inkscape:pageshadow="2"
-     inkscape:pageopacity="0.0"
-     borderopacity="1.0"
-     bordercolor="#666666"
-     pagecolor="#ffffff"
-     id="base"
-     showgrid="false" />
-  <metadata
-     id="metadata2143">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     id="layer1"
-     inkscape:groupmode="layer"
-     inkscape:label="Layer 1">
-    <rect
-       inkscape:export-ydpi="75.000000"
-       inkscape:export-xdpi="75.000000"
-       inkscape:export-filename="/home/alver/jabref/src/images/splash.png"
-       y="170.36218"
-       x="77.500000"
-       height="432.00000"
-       width="576.00000"
-       id="rect6833"
-       style="opacity:1.0000000;fill:#6b6b75;fill-opacity:1.0000000;stroke:none;stroke-width:5.0000000;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
-    <image
-       id="image1821"
-       height="428"
-       width="572"
-       sodipodi:absref="/home/alver/jabref/src/images/splashBackground.png"
-       xlink:href="splashBackground.png"
-       x="79"
-       y="172.36218"
-       inkscape:export-filename="/home/alver/jabref/src/images/splash.png"
-       inkscape:export-xdpi="75"
-       inkscape:export-ydpi="75" />
-    <flowRoot
-       inkscape:export-ydpi="75.000000"
-       inkscape:export-xdpi="75.000000"
-       inkscape:export-filename="/home/alver/jabref/src/images/splash.png"
-       style="opacity:1.0000000;fill:#635578;fill-opacity:1.0000000;stroke:#b5b5c7;stroke-width:0.48137558;stroke-linejoin:bevel;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
-       transform="matrix(1.875133,0.000000,0.000000,2.542210,-129.6969,-372.8897)"
-       id="flowRoot2189"
-       xml:space="preserve">
-      <flowRegion
-   id="flowRegion2191">
-        <rect
-   style="fill:#635578;fill-opacity:1.0000000;stroke:#b5b5c7;stroke-opacity:1.0000000;stroke-width:0.48137557;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-linejoin:bevel"
-   y="199.10532"
-   x="128.49385"
-   height="127.49445"
-   width="283.51782"
-   id="rect2193" />
-      </flowRegion>
-      <flowPara
-   style="font-size:90.000000px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125.00000%;writing-mode:lr-tb;text-anchor:start;fill:#635578;fill-opacity:1.0000000;stroke:#b5b5c7;stroke-width:0.48137558;stroke-linejoin:bevel;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;font-family:AR PL KaitiM GB"
-   id="flowPara2201">JabRef</flowPara>
-    </flowRoot>    <flowRoot
-       inkscape:export-ydpi="75.000000"
-       inkscape:export-xdpi="75.000000"
-       inkscape:export-filename="/home/alver/jabref/src/images/splash.png"
-       transform="matrix(0.972246,0,0,1.325301,6.054966,-126.1181)"
-       style="font-size:12px;font-style:oblique;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#797580;fill-opacity:1;font-family:Bitstream Vera Sans"
-       id="flowRoot3076"
-       xml:space="preserve"><flowRegion
-         id="flowRegion3078">
-        <rect
-   style="font-size:12px;font-style:oblique;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#797580;fill-opacity:1;font-family:Bitstream Vera Sans"
-   y="514.56494"
-   x="115.50008"
-   height="78.684433"
-   width="506.03476"
-   id="rect3080" />
-      </flowRegion><flowPara
-         id="flowPara1339">This program is distributed under the terms of the General Public License.</flowPara><flowPara
-         id="flowPara1341">Copyright (2003-2009) Morten O. Alver, Nizar Batada and all contributors.</flowPara></flowRoot>    <text
-       inkscape:export-ydpi="75.000000"
-       inkscape:export-xdpi="75.000000"
-       inkscape:export-filename="/home/alver/jabref/src/images/splash.png"
-       transform="scale(0.853347,1.171856)"
-       sodipodi:linespacing="100%"
-       id="text2179"
-       y="450.75409"
-       x="187.49605"
-       style="font-size:43.99980927px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#805b41;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:URW Palladio L"
-       xml:space="preserve"><tspan
-         y="450.75409"
-         x="187.49605"
-         id="tspan2181"
-         sodipodi:role="line">JabRef reference manager</tspan></text>
-    <g
-       id="g2867"
-       transform="matrix(1.14435,0,0,1.103688,-34.88143,-26.75429)"
-       style="fill:#3d3d5f;fill-opacity:1;stroke:url(#radialGradient2889);stroke-width:1.99301183;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       inkscape:export-filename="/home/alver/jabref/src/images/splash.png"
-       inkscape:export-xdpi="75"
-       inkscape:export-ydpi="75">
-      <path
-         inkscape:export-ydpi="57.68"
-         inkscape:export-xdpi="57.68"
-         inkscape:export-filename="/home/alver/Documents/jabrefIkon.png"
-         sodipodi:nodetypes="cccscssc"
-         id="path3874"
-         d="M 157.96931,200.83693 C 195.68133,200.83693 226.84892,201.74266 226.84892,201.74266 C 226.84892,201.74266 264.67261,230.02095 245.09466,392.86816 C 239.45611,424.41127 211.69305,452.41514 177.77033,452.41514 C 143.84738,452.41514 124.35978,432.41027 124.35978,409.07782 C 159.37053,424.87768 185.33022,416.88114 194.38104,413.14131 C 198.72239,411.3483 214.85378,403.80956 214.58004,365.73926 C 213.94457,277.38853 222.57808,258.1971 157.96931,200.83693 z "
-         style="fill:#3d3d5f;fill-opacity:1;fill-rule:evenodd;stroke:url(#radialGradient2796);stroke-width:1.99301183;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
-      <path
-         inkscape:export-ydpi="57.68"
-         inkscape:export-xdpi="57.68"
-         inkscape:export-filename="/home/alver/Documents/jabrefIkon.png"
-         sodipodi:nodetypes="ccccsc"
-         id="path3876"
-         d="M 255.00983,201.1495 C 346.39949,205.65848 415.05774,279.60734 324.95506,328.62763 C 299.6693,344.58746 362.3433,423.95718 386.64022,459.88743 C 324.57976,439.24633 270.32186,376.11089 274.24748,333.19936 C 276.87135,302.14849 327.63081,304.24915 329.72814,285.1414 C 331.82536,266.03489 296.3799,268.06417 255.00983,201.1495 z "
-         style="fill:#3d3d5f;fill-opacity:1;fill-rule:evenodd;stroke:url(#radialGradient2798);stroke-width:1.99301183;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
-    </g>
-    <text
-       xml:space="preserve"
-       style="font-size:57.1212616px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#727888;stroke-width:1.80000031;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;font-family:Nimbus Sans L"
-       x="462.20135"
-       y="426.2529"
-       id="text2911"
-       sodipodi:linespacing="100%"
-       transform="scale(0.917932,1.089405)"
-       inkscape:export-filename="/home/alver/jabref/src/images/splash.png"
-       inkscape:export-xdpi="75"
-       inkscape:export-ydpi="75"><tspan
-         sodipodi:role="line"
-         id="tspan2913"
-         x="462.20135"
-         y="426.2529"
-         style="font-size:119.00263214px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#727888;stroke-width:1.80000031;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;font-family:Bitstream Vera Sans">2.5</tspan></text>
-    <flowRoot
-       xml:space="preserve"
-       id="flowRoot2745"
-       style="font-size:56px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#f91616;fill-opacity:0.65789472;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans Bold"
-       transform="matrix(0.9688007,-0.2478411,0.2478411,0.9688007,-87.20276,118.59483)"
-       inkscape:export-filename="/home/alver/jabref/src/images/splash.png"
-       inkscape:export-xdpi="75"
-       inkscape:export-ydpi="75"><flowRegion
-         id="flowRegion2747"><rect
-           id="rect2749"
-           width="164"
-           height="68"
-           x="482"
-           y="470.36218"
-           style="font-size:56px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#f91616;fill-opacity:0.65789472;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans Bold" /></flowRegion><flowPara
-         id="flowPara2751">beta</flowPara></flowRoot>  </g>
-</svg>
diff --git a/src/images/splash-2.5.svg b/src/images/splash-2.6.svg
similarity index 90%
rename from src/images/splash-2.5.svg
rename to src/images/splash-2.6.svg
index 55e8e0e..2fa9e0f 100644
--- a/src/images/splash-2.5.svg
+++ b/src/images/splash-2.6.svg
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <!-- Created with Inkscape (http://www.inkscape.org/) -->
+
 <svg
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:cc="http://creativecommons.org/ns#"
@@ -12,14 +13,14 @@
    inkscape:export-ydpi="90.000000"
    inkscape:export-xdpi="90.000000"
    inkscape:export-filename="/home/alver/jabref_head/jabref/src/images/jabref_splash-2.2.png"
-   sodipodi:docname="splash-2.5.svg"
-   sodipodi:docbase="/home/alver/jabref_trunk/src/images"
-   inkscape:version="0.46"
+   sodipodi:docname="splash-2.6.svg"
+   inkscape:version="0.47pre3 r22311"
    sodipodi:version="0.32"
    id="svg2138"
    height="1052.3622047"
    width="744.09448819"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.1">
   <defs
      id="defs2140">
     <inkscape:perspective
@@ -77,18 +78,18 @@
        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"
+         sodipodi:absref="/home/alver/jabref/src/images/behandlet.png"
          xlink:href="behandlet.png"
-         sodipodi:absref="/home/alver/Desktop/bilder/jabref/behandlet.png"
-         width="572.00000"
+         id="image9050"
          height="428.00000"
-         id="image9050" />
+         width="572.00000"
+         x="231.00000"
+         y="284.36218"
+         inkscape:export-filename="/home/alver/Desktop/bilder/jabref/splash4.png"
+         inkscape:export-xdpi="90.000000"
+         inkscape:export-ydpi="90.000000"
+         style="opacity:1.0000000;stroke:#000000;stroke-width:5.0000000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000"
+         transform="translate(-231.0000,-284.3622)" />
     </pattern>
     <radialGradient
        inkscape:collect="always"
@@ -134,14 +135,14 @@
        r="135.88549" />
   </defs>
   <sodipodi:namedview
-     inkscape:window-y="25"
+     inkscape:window-y="0"
      inkscape:window-x="0"
-     inkscape:window-height="949"
-     inkscape:window-width="1280"
+     inkscape:window-height="709"
+     inkscape:window-width="1272"
      inkscape:current-layer="layer1"
      inkscape:document-units="px"
      inkscape:cy="677.8697"
-     inkscape:cx="414.10531"
+     inkscape:cx="238.10531"
      inkscape:zoom="1"
      inkscape:pageshadow="2"
      inkscape:pageopacity="0.0"
@@ -149,7 +150,8 @@
      bordercolor="#666666"
      pagecolor="#ffffff"
      id="base"
-     showgrid="false" />
+     showgrid="false"
+     inkscape:window-maximized="0" />
   <metadata
      id="metadata2143">
     <rdf:RDF>
@@ -158,6 +160,7 @@
         <dc:format>image/svg+xml</dc:format>
         <dc:type
            rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
       </cc:Work>
     </rdf:RDF>
   </metadata>
@@ -168,7 +171,7 @@
     <rect
        inkscape:export-ydpi="75.000000"
        inkscape:export-xdpi="75.000000"
-       inkscape:export-filename="/home/alver/jabref_beta/src/images/splash.png"
+       inkscape:export-filename="/home/alver/jabref/src/images/splash.png"
        y="170.36218"
        x="77.500000"
        height="432.00000"
@@ -176,20 +179,20 @@
        id="rect6833"
        style="opacity:1.0000000;fill:#6b6b75;fill-opacity:1.0000000;stroke:none;stroke-width:5.0000000;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
     <image
-       id="image1821"
-       height="428"
-       width="572"
        sodipodi:absref="/home/alver/jabref/src/images/splashBackground.png"
        xlink:href="splashBackground.png"
-       x="79"
-       y="172.36218"
-       inkscape:export-filename="/home/alver/jabref_beta/src/images/splash.png"
+       inkscape:export-ydpi="75"
        inkscape:export-xdpi="75"
-       inkscape:export-ydpi="75" />
+       inkscape:export-filename="/home/alver/jabref/src/images/splash.png"
+       y="172.36218"
+       x="79"
+       width="572"
+       height="428"
+       id="image1821" />
     <flowRoot
        inkscape:export-ydpi="75.000000"
        inkscape:export-xdpi="75.000000"
-       inkscape:export-filename="/home/alver/jabref_beta/src/images/splash.png"
+       inkscape:export-filename="/home/alver/jabref/src/images/splash.png"
        style="opacity:1.0000000;fill:#635578;fill-opacity:1.0000000;stroke:#b5b5c7;stroke-width:0.48137558;stroke-linejoin:bevel;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
        transform="matrix(1.875133,0.000000,0.000000,2.542210,-129.6969,-372.8897)"
        id="flowRoot2189"
@@ -210,7 +213,7 @@
     </flowRoot>    <flowRoot
        inkscape:export-ydpi="75.000000"
        inkscape:export-xdpi="75.000000"
-       inkscape:export-filename="/home/alver/jabref_beta/src/images/splash.png"
+       inkscape:export-filename="/home/alver/jabref/src/images/splash.png"
        transform="matrix(0.972246,0,0,1.325301,6.054966,-126.1181)"
        style="font-size:12px;font-style:oblique;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#797580;fill-opacity:1;font-family:Bitstream Vera Sans"
        id="flowRoot3076"
@@ -225,10 +228,10 @@
    id="rect3080" />
       </flowRegion><flowPara
          id="flowPara1339">This program is distributed under the terms of the General Public License.</flowPara><flowPara
-         id="flowPara1341">Copyright (2003-2008) Morten O. Alver, Nizar Batada and all contributors.</flowPara></flowRoot>    <text
+         id="flowPara1341">Copyright (2003-2010) Morten O. Alver, Nizar Batada and all contributors.</flowPara></flowRoot>    <text
        inkscape:export-ydpi="75.000000"
        inkscape:export-xdpi="75.000000"
-       inkscape:export-filename="/home/alver/jabref_beta/src/images/splash.png"
+       inkscape:export-filename="/home/alver/jabref/src/images/splash.png"
        transform="scale(0.853347,1.171856)"
        sodipodi:linespacing="100%"
        id="text2179"
@@ -244,7 +247,7 @@
        id="g2867"
        transform="matrix(1.14435,0,0,1.103688,-34.88143,-26.75429)"
        style="fill:#3d3d5f;fill-opacity:1;stroke:url(#radialGradient2889);stroke-width:1.99301183;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       inkscape:export-filename="/home/alver/jabref_beta/src/images/splash.png"
+       inkscape:export-filename="/home/alver/jabref/src/images/splash.png"
        inkscape:export-xdpi="75"
        inkscape:export-ydpi="75">
       <path
@@ -272,13 +275,13 @@
        id="text2911"
        sodipodi:linespacing="100%"
        transform="scale(0.917932,1.089405)"
-       inkscape:export-filename="/home/alver/jabref_beta/src/images/splash.png"
+       inkscape:export-filename="/home/alver/jabref/src/images/splash.png"
        inkscape:export-xdpi="75"
        inkscape:export-ydpi="75"><tspan
          sodipodi:role="line"
          id="tspan2913"
          x="462.20135"
          y="426.2529"
-         style="font-size:119.00263214px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#727888;stroke-width:1.80000031;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;font-family:Bitstream Vera Sans">2.5</tspan></text>
+         style="font-size:119.00263214px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#727888;stroke-width:1.80000031;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;font-family:Bitstream Vera Sans">2.6</tspan></text>
   </g>
 </svg>
diff --git a/src/images/splash-2.6beta.svg b/src/images/splash-2.6beta.svg
deleted file mode 100644
index af82162..0000000
--- a/src/images/splash-2.6beta.svg
+++ /dev/null
@@ -1,299 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   inkscape:export-ydpi="90.000000"
-   inkscape:export-xdpi="90.000000"
-   inkscape:export-filename="/home/alver/jabref_head/jabref/src/images/jabref_splash-2.2.png"
-   sodipodi:docname="splash-2.6beta.svg"
-   sodipodi:docbase="/home/alver/jabref_trunk/src/images"
-   inkscape:version="0.46"
-   sodipodi:version="0.32"
-   id="svg2138"
-   height="1052.3622047"
-   width="744.09448819"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape">
-  <defs
-     id="defs2140">
-    <inkscape:perspective
-       sodipodi:type="inkscape:persp3d"
-       inkscape:vp_x="0 : 526.18109 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_z="744.09448 : 526.18109 : 1"
-       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
-       id="perspective2595" />
-    <linearGradient
-       id="linearGradient2974">
-      <stop
-         style="stop-color:#505b77;stop-opacity:1;"
-         offset="0"
-         id="stop2976" />
-      <stop
-         style="stop-color:#596a97;stop-opacity:1;"
-         offset="1"
-         id="stop2978" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient2883">
-      <stop
-         style="stop-color:#c5c1c1;stop-opacity:1;"
-         offset="0"
-         id="stop2885" />
-      <stop
-         style="stop-color:white;stop-opacity:1;"
-         offset="1"
-         id="stop2887" />
-    </linearGradient>
-    <pattern
-       patternTransform="translate(316.0000,1046.362)"
-       id="pattern9054"
-       xlink:href="#pattern9048"
-       inkscape:collect="always" />
-    <marker
-       style="overflow:visible;"
-       id="Arrow2Send"
-       refX="0.0"
-       refY="0.0"
-       orient="auto"
-       inkscape:stockid="Arrow2Send">
-      <path
-         transform="scale(0.3) rotate(180) translate(-5,0)"
-         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
-         style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
-         id="path3046"
-         sodipodi:nodetypes="cccc" />
-    </marker>
-    <pattern
-       id="pattern9048"
-       patternTransform="translate(231.0000,284.3622)"
-       height="428.00000"
-       width="572.00000"
-       patternUnits="userSpaceOnUse">
-      <image
-         transform="translate(-231.0000,-284.3622)"
-         style="opacity:1.0000000;stroke:#000000;stroke-width:5.0000000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000"
-         inkscape:export-ydpi="90.000000"
-         inkscape:export-xdpi="90.000000"
-         inkscape:export-filename="/home/alver/Desktop/bilder/jabref/splash4.png"
-         y="284.36218"
-         x="231.00000"
-         xlink:href="behandlet.png"
-         sodipodi:absref="/home/alver/Desktop/bilder/jabref/behandlet.png"
-         width="572.00000"
-         height="428.00000"
-         id="image9050" />
-    </pattern>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2883"
-       id="radialGradient2889"
-       cx="255.5"
-       cy="330.36218"
-       fx="255.5"
-       fy="330.36218"
-       r="135.88549"
-       gradientTransform="matrix(-0.799579,-5.606082e-2,6.979161e-2,-1.00875,436.7358,677.9388)"
-       gradientUnits="userSpaceOnUse" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2883"
-       id="linearGradient2909"
-       x1="443.79153"
-       y1="351.89935"
-       x2="602.17139"
-       y2="351.89935"
-       gradientUnits="userSpaceOnUse" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2883"
-       id="radialGradient2796"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.799579,-5.606082e-2,6.979161e-2,-1.00875,436.7358,677.9388)"
-       cx="255.5"
-       cy="330.36218"
-       fx="255.5"
-       fy="330.36218"
-       r="135.88549" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2883"
-       id="radialGradient2798"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.799579,-5.606082e-2,6.979161e-2,-1.00875,436.7358,677.9388)"
-       cx="255.5"
-       cy="330.36218"
-       fx="255.5"
-       fy="330.36218"
-       r="135.88549" />
-  </defs>
-  <sodipodi:namedview
-     inkscape:window-y="0"
-     inkscape:window-x="0"
-     inkscape:window-height="768"
-     inkscape:window-width="1272"
-     inkscape:current-layer="layer1"
-     inkscape:document-units="px"
-     inkscape:cy="677.8697"
-     inkscape:cx="238.10531"
-     inkscape:zoom="1"
-     inkscape:pageshadow="2"
-     inkscape:pageopacity="0.0"
-     borderopacity="1.0"
-     bordercolor="#666666"
-     pagecolor="#ffffff"
-     id="base"
-     showgrid="false" />
-  <metadata
-     id="metadata2143">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     id="layer1"
-     inkscape:groupmode="layer"
-     inkscape:label="Layer 1">
-    <rect
-       inkscape:export-ydpi="75.000000"
-       inkscape:export-xdpi="75.000000"
-       inkscape:export-filename="/home/alver/jabref_trunk/src/images/splash.png"
-       y="170.36218"
-       x="77.500000"
-       height="432.00000"
-       width="576.00000"
-       id="rect6833"
-       style="opacity:1.0000000;fill:#6b6b75;fill-opacity:1.0000000;stroke:none;stroke-width:5.0000000;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
-    <image
-       id="image1821"
-       height="428"
-       width="572"
-       sodipodi:absref="/home/alver/jabref/src/images/splashBackground.png"
-       xlink:href="splashBackground.png"
-       x="79"
-       y="172.36218"
-       inkscape:export-filename="/home/alver/jabref_trunk/src/images/splash.png"
-       inkscape:export-xdpi="75"
-       inkscape:export-ydpi="75" />
-    <flowRoot
-       inkscape:export-ydpi="75.000000"
-       inkscape:export-xdpi="75.000000"
-       inkscape:export-filename="/home/alver/jabref_trunk/src/images/splash.png"
-       style="opacity:1.0000000;fill:#635578;fill-opacity:1.0000000;stroke:#b5b5c7;stroke-width:0.48137558;stroke-linejoin:bevel;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
-       transform="matrix(1.875133,0.000000,0.000000,2.542210,-129.6969,-372.8897)"
-       id="flowRoot2189"
-       xml:space="preserve">
-      <flowRegion
-   id="flowRegion2191">
-        <rect
-   style="fill:#635578;fill-opacity:1.0000000;stroke:#b5b5c7;stroke-opacity:1.0000000;stroke-width:0.48137557;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-linejoin:bevel"
-   y="199.10532"
-   x="128.49385"
-   height="127.49445"
-   width="283.51782"
-   id="rect2193" />
-      </flowRegion>
-      <flowPara
-   style="font-size:90.000000px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125.00000%;writing-mode:lr-tb;text-anchor:start;fill:#635578;fill-opacity:1.0000000;stroke:#b5b5c7;stroke-width:0.48137558;stroke-linejoin:bevel;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;font-family:AR PL KaitiM GB"
-   id="flowPara2201">JabRef</flowPara>
-    </flowRoot>    <flowRoot
-       inkscape:export-ydpi="75.000000"
-       inkscape:export-xdpi="75.000000"
-       inkscape:export-filename="/home/alver/jabref_trunk/src/images/splash.png"
-       transform="matrix(0.972246,0,0,1.325301,6.054966,-126.1181)"
-       style="font-size:12px;font-style:oblique;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#797580;fill-opacity:1;font-family:Bitstream Vera Sans"
-       id="flowRoot3076"
-       xml:space="preserve"><flowRegion
-         id="flowRegion3078">
-        <rect
-   style="font-size:12px;font-style:oblique;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#797580;fill-opacity:1;font-family:Bitstream Vera Sans"
-   y="514.56494"
-   x="115.50008"
-   height="78.684433"
-   width="506.03476"
-   id="rect3080" />
-      </flowRegion><flowPara
-         id="flowPara1339">This program is distributed under the terms of the General Public License.</flowPara><flowPara
-         id="flowPara1341">Copyright (2003-2009) 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_trunk/src/images/splash.png"
-       transform="scale(0.853347,1.171856)"
-       sodipodi:linespacing="100%"
-       id="text2179"
-       y="450.75409"
-       x="187.49605"
-       style="font-size:43.99980927px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#805b41;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:URW Palladio L"
-       xml:space="preserve"><tspan
-         y="450.75409"
-         x="187.49605"
-         id="tspan2181"
-         sodipodi:role="line">JabRef reference manager</tspan></text>
-    <g
-       id="g2867"
-       transform="matrix(1.14435,0,0,1.103688,-34.88143,-26.75429)"
-       style="fill:#3d3d5f;fill-opacity:1;stroke:url(#radialGradient2889);stroke-width:1.99301183;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       inkscape:export-filename="/home/alver/jabref_trunk/src/images/splash.png"
-       inkscape:export-xdpi="75"
-       inkscape:export-ydpi="75">
-      <path
-         inkscape:export-ydpi="57.68"
-         inkscape:export-xdpi="57.68"
-         inkscape:export-filename="/home/alver/Documents/jabrefIkon.png"
-         sodipodi:nodetypes="cccscssc"
-         id="path3874"
-         d="M 157.96931,200.83693 C 195.68133,200.83693 226.84892,201.74266 226.84892,201.74266 C 226.84892,201.74266 264.67261,230.02095 245.09466,392.86816 C 239.45611,424.41127 211.69305,452.41514 177.77033,452.41514 C 143.84738,452.41514 124.35978,432.41027 124.35978,409.07782 C 159.37053,424.87768 185.33022,416.88114 194.38104,413.14131 C 198.72239,411.3483 214.85378,403.80956 214.58004,365.73926 C 213.94457,277.38853 222.57808,258.1971 157.96931,200.83693 z "
-         style="fill:#3d3d5f;fill-opacity:1;fill-rule:evenodd;stroke:url(#radialGradient2796);stroke-width:1.99301183;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
-      <path
-         inkscape:export-ydpi="57.68"
-         inkscape:export-xdpi="57.68"
-         inkscape:export-filename="/home/alver/Documents/jabrefIkon.png"
-         sodipodi:nodetypes="ccccsc"
-         id="path3876"
-         d="M 255.00983,201.1495 C 346.39949,205.65848 415.05774,279.60734 324.95506,328.62763 C 299.6693,344.58746 362.3433,423.95718 386.64022,459.88743 C 324.57976,439.24633 270.32186,376.11089 274.24748,333.19936 C 276.87135,302.14849 327.63081,304.24915 329.72814,285.1414 C 331.82536,266.03489 296.3799,268.06417 255.00983,201.1495 z "
-         style="fill:#3d3d5f;fill-opacity:1;fill-rule:evenodd;stroke:url(#radialGradient2798);stroke-width:1.99301183;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
-    </g>
-    <text
-       xml:space="preserve"
-       style="font-size:57.1212616px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#727888;stroke-width:1.80000031;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;font-family:Nimbus Sans L"
-       x="462.20135"
-       y="426.2529"
-       id="text2911"
-       sodipodi:linespacing="100%"
-       transform="scale(0.917932,1.089405)"
-       inkscape:export-filename="/home/alver/jabref_trunk/src/images/splash.png"
-       inkscape:export-xdpi="75"
-       inkscape:export-ydpi="75"><tspan
-         sodipodi:role="line"
-         id="tspan2913"
-         x="462.20135"
-         y="426.2529"
-         style="font-size:119.00263214px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#727888;stroke-width:1.80000031;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;font-family:Bitstream Vera Sans">2.6</tspan></text>
-    <flowRoot
-       xml:space="preserve"
-       id="flowRoot2745"
-       style="font-size:56px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#f91616;fill-opacity:0.65789472;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans Bold"
-       transform="matrix(0.9688007,-0.2478411,0.2478411,0.9688007,-87.20276,118.59483)"
-       inkscape:export-filename="/home/alver/jabref_trunk/src/images/splash.png"
-       inkscape:export-xdpi="75"
-       inkscape:export-ydpi="75"><flowRegion
-         id="flowRegion2747"><rect
-           id="rect2749"
-           width="164"
-           height="68"
-           x="482"
-           y="470.36218"
-           style="font-size:56px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#f91616;fill-opacity:0.65789472;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans Bold" /></flowRegion><flowPara
-         id="flowPara2751">beta</flowPara></flowRoot>  </g>
-</svg>
diff --git a/src/images/splash.png b/src/images/splash.png
index 5b71a8a..2abe8db 100644
Binary files a/src/images/splash.png and b/src/images/splash.png differ
diff --git a/src/images/splashBackground.png b/src/images/splashBackground.png
new file mode 100644
index 0000000..d5a048e
Binary files /dev/null and b/src/images/splashBackground.png differ
diff --git a/src/java/gnu/dtools/ritopt/OptionMenu.java b/src/java/gnu/dtools/ritopt/OptionMenu.java
index 9d4d541..0dd1d17 100644
--- a/src/java/gnu/dtools/ritopt/OptionMenu.java
+++ b/src/java/gnu/dtools/ritopt/OptionMenu.java
@@ -4,7 +4,7 @@ package gnu.dtools.ritopt;
  * OptionMenu.java
  *
  * Version:
- *    $Id: OptionMenu.java 2209 2007-08-01 18:23:38Z coezbek $
+ *    $Id: OptionMenu.java 3243 2010-04-06 16:49:09Z mortenalver $
  */
 
 import java.io.BufferedReader;
@@ -201,7 +201,7 @@ public class OptionMenu implements OptionListener {
 		return;
 	    }
 	    boolean commandEntered = command != null && command.length() > 0;
-	    if ( command.equals( "?" ) ) {
+	    if (commandEntered && command.equals( "?" ) ) {
 		System.err.println( "\t- Options Delimiter" );
 		System.err.println( "\t? Help" );
 		System.err.println( "\t= Run program and return to menu" );
diff --git a/src/java/net/sf/jabref/BasePanel.java b/src/java/net/sf/jabref/BasePanel.java
index 30c4a1e..9940e46 100644
--- a/src/java/net/sf/jabref/BasePanel.java
+++ b/src/java/net/sf/jabref/BasePanel.java
@@ -770,9 +770,8 @@ public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListe
 
         // Run first, in EDT:
         public void init() {
-
                     entries = new ArrayList<BibtexEntry>(Arrays.asList(getSelectedEntries()));
-                    //rows = entryTable.getSelectedRows() ;
+                   //rows = entryTable.getSelectedRows() ;
                     numSelected = entries.size();
 
                     if (entries.size() == 0) { // None selected. Inform the user to select entries first.
@@ -849,6 +848,21 @@ public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListe
             }
             markBaseChanged() ;
             numSelected = entries.size();
+
+////////////////////////////////////////////////////////////////////////////////
+//          Prevent selection loss for autogenerated BibTeX-Keys
+////////////////////////////////////////////////////////////////////////////////
+            for (Iterator<BibtexEntry> i=entries.iterator(); i.hasNext();) {
+               final BibtexEntry bibEntry = i.next();
+               SwingUtilities.invokeLater(new Runnable() {
+                  public void run() {
+                    final int row = mainTable.findEntry( bibEntry );
+                    if (row >= 0 && mainTable.getSelectedRowCount() < entries.size())
+                      mainTable.addRowSelectionInterval(row, row);
+                  }
+               });
+            }
+////////////////////////////////////////////////////////////////////////////////
             output(Globals.lang("Generated BibTeX key for")+" "+
                numSelected+" "+(numSelected!=1 ? Globals.lang("entries")
                                     : Globals.lang("entry")));
diff --git a/src/java/net/sf/jabref/BibtexEntry.java b/src/java/net/sf/jabref/BibtexEntry.java
index ee79f8d..f2e5193 100644
--- a/src/java/net/sf/jabref/BibtexEntry.java
+++ b/src/java/net/sf/jabref/BibtexEntry.java
@@ -106,7 +106,7 @@ public class BibtexEntry
     /**
      * Returns a string describing the required fields for this entry.
      */
-     public String describeRequiredFields()
+    public String describeRequiredFields()
     {
         return _type.describeRequiredFields();
     }
diff --git a/src/java/net/sf/jabref/BibtexEntryType.java b/src/java/net/sf/jabref/BibtexEntryType.java
index 9c5c000..e11241f 100644
--- a/src/java/net/sf/jabref/BibtexEntryType.java
+++ b/src/java/net/sf/jabref/BibtexEntryType.java
@@ -79,7 +79,7 @@ public abstract class BibtexEntryType implements Comparable<BibtexEntryType>
             {
                 return new String[]
                 {
-                    "number", "month", "eid", "note"
+                    "number", "month", "part", "eid", "note"
                 };
             }
 
@@ -170,6 +170,11 @@ public abstract class BibtexEntryType implements Comparable<BibtexEntryType>
                 };
             }
 
+            @Override
+            public String[] getRequiredFieldsForCustomization() {
+                return new String[] {"author/editor", "title", "chapter/pages", "year", "publisher"};
+            }
+
             public String describeRequiredFields()
             {
                 return "TITLE, CHAPTER and/or PAGES, PUBLISHER, YEAR, and an "
@@ -214,6 +219,14 @@ public abstract class BibtexEntryType implements Comparable<BibtexEntryType>
                 };
             }
 
+            public String[] getRequiredFieldsForCustomization()
+            {
+                return new String[]
+                {
+                    "title", "publisher", "year", "author/editor"
+                };
+            }
+
             public String describeRequiredFields()
             {
                 return "TITLE, PUBLISHER, YEAR, and an EDITOR and/or AUTHOR";
@@ -686,6 +699,11 @@ public abstract class BibtexEntryType implements Comparable<BibtexEntryType>
                 };
             }
 
+            @Override
+            public String[] getRequiredFieldsForCustomization() {
+                return new String[] {"title", "organization/institution"};
+            }
+
             public String describeRequiredFields()
             {
                 return "TITLE, ORGANIZATION or INSTITUTION";
@@ -733,10 +751,7 @@ public abstract class BibtexEntryType implements Comparable<BibtexEntryType>
                 return entry.allFieldsPresent(new String[]
                     {
                         "bibtexkey"
-                    }, database) &&
-                ((entry.getField("howpublished") != null) ||
-                (entry.getField("note") != null) ||
-                (entry.getField("url") != null));
+                    }, database);
             }
         };
 
@@ -961,4 +976,12 @@ public abstract class BibtexEntryType implements Comparable<BibtexEntryType>
 	prefs.purgeCustomEntryTypes(number);
     }
 
+    /**
+     * Get an array of the required fields in a form appropriate for the entry customization
+     * dialog - that is, thie either-or fields together and separated by slashes.
+     * @return Array of the required fields in a form appropriate for the entry customization dialog.
+     */
+    public String[] getRequiredFieldsForCustomization() {
+        return getRequiredFields();
+    }
 }
diff --git a/src/java/net/sf/jabref/CustomEntryType.java b/src/java/net/sf/jabref/CustomEntryType.java
index e064da9..0ff2150 100644
--- a/src/java/net/sf/jabref/CustomEntryType.java
+++ b/src/java/net/sf/jabref/CustomEntryType.java
@@ -2,6 +2,7 @@ package net.sf.jabref;
 
 import java.io.IOException;
 import java.io.Writer;
+import java.util.ArrayList;
 
 /**
  * This class is used to represent customized entry types.
@@ -11,23 +12,50 @@ public class CustomEntryType extends BibtexEntryType {
 
     private String name;
     private String[] req, opt;
+    private String[][] reqSets = null; // Sets of either-or required fields, if any
 
     public CustomEntryType(String name_, String[] req_, String[] opt_) {
-	name = name_;
-	req = req_;
-	opt = opt_;
+        name = name_;
+        parseRequiredFields(req_);
+        opt = opt_;
     }
 
     public CustomEntryType(String name_, String reqStr, String optStr) {
-	name = name_;
-	if (reqStr.length() == 0)
-	    req = new String[0];
-	else
-	    req = reqStr.split(";");
-	if (optStr.length() == 0)
-	    opt = new String[0];
-	else
-	    opt = optStr.split(";");	
+        name = name_;
+        if (reqStr.length() == 0)
+            req = new String[0];
+        else {
+            parseRequiredFields(reqStr);
+
+        }
+        if (optStr.length() == 0)
+            opt = new String[0];
+        else
+            opt = optStr.split(";");
+    }
+
+    protected void parseRequiredFields(String reqStr) {
+        String[] parts = reqStr.split(";");
+        parseRequiredFields(parts);
+    }
+
+    protected void parseRequiredFields(String[] parts) {
+        ArrayList<String> fields = new ArrayList<String>();
+        ArrayList<String[]> sets = new ArrayList<String[]>();
+        for (int i = 0; i < parts.length; i++) {
+            String[] subParts = parts[i].split("/");
+            for (int j = 0; j < subParts.length; j++) {
+                fields.add(subParts[j]);
+            }
+            // Check if we have either/or fields:
+            if (subParts.length > 1) {
+                sets.add(subParts);
+            }
+        }
+        req = fields.toArray(new String[fields.size()]);
+        if (sets.size() > 0) {
+            reqSets = sets.toArray(new String[sets.size()][]);
+        }
     }
 
     public String getName() {
@@ -41,6 +69,10 @@ public class CustomEntryType extends BibtexEntryType {
 	return req;
     }
 
+    public String[] getRequiredFieldsForCustomization() {
+        return getRequiredFieldsString().split(";");
+    }
+
     //    public boolean isTemporary
 
     public String describeRequiredFields() {
@@ -61,26 +93,100 @@ public class CustomEntryType extends BibtexEntryType {
 	return sb.toString();
     }
 
+    /**
+     * Check whether this entry's required fields are set, taking crossreferenced entries and
+     * either-or fields into account:
+     * @param entry The entry to check.
+     * @param database The entry's database.
+     * @return True if required fields are set, false otherwise.
+     */
     public boolean hasAllRequiredFields(BibtexEntry entry, BibtexDatabase database) {
-	for (int i=0; i<req.length; i++)
-        if (BibtexDatabase.getResolvedField(req[i], entry, database) == null) return false;
-    	return true;
+        // First check if the bibtex key is set:
+        if (entry.getField(BibtexFields.KEY_FIELD) == null)
+                return false;
+        // Then check other fields:
+        boolean[] isSet = new boolean[req.length];
+        // First check for all fields, whether they are set here or in a crossref'd entry:
+	    for (int i=0; i<req.length; i++)
+            isSet[i] = BibtexDatabase.getResolvedField(req[i], entry, database) != null;
+        // Then go through all fields. If a field is not set, see if it is part of an either-or
+        // set where another field is set. If not, return false:
+    	for (int i=0; i<req.length; i++) {
+            if (!isSet[i]) {
+                if (!isCoupledFieldSet(req[i], entry, database))
+                    return false;
+            }
+        }
+        // Passed all fields, so return true:
+        return true;
     }
 
+    protected boolean isCoupledFieldSet(String field, BibtexEntry entry, BibtexDatabase database) {
+        if (reqSets == null)
+            return false;
+        for (int i=0; i<reqSets.length; i++) {
+            boolean takesPart = false, oneSet = false;
+            for (int j=0; j<reqSets[i].length; j++) {
+                // If this is the field we're looking for, note that the field is part of the set:
+                if (reqSets[i][j].equalsIgnoreCase(field))
+                    takesPart = true;
+                // If it is a different field, check if it is set:
+                else if (BibtexDatabase.getResolvedField(reqSets[i][j], entry, database) != null)
+                    oneSet = true;
+            }
+            // Ths the field is part of the set, and at least one other field is set, return true:
+            if (takesPart && oneSet)
+                return true;
+        }
+        // No hits, so return false:
+        return false;
+    }
+
+    /**
+     * Get a String describing the required field set for this entry type.
+     * @return Description of required field set for storage in preferences or bib file.
+     */
+    public String getRequiredFieldsString() {
+        StringBuilder sb = new StringBuilder();
+        int reqSetsPiv = 0;
+        for (int i=0; i<req.length; i++) {
+            if ((reqSets == null) || (reqSetsPiv == reqSets.length)) {
+                sb.append(req[i]);
+            }
+            else if (req[i].equals(reqSets[reqSetsPiv][0])) {
+                for (int j = 0; j < reqSets[reqSetsPiv].length; j++) {
+                    sb.append(reqSets[reqSetsPiv][j]);
+                    if (j < reqSets[reqSetsPiv].length-1)
+                        sb.append("/");
+                }
+                // Skip next n-1 fields:
+                i += reqSets[reqSetsPiv].length-1;
+                reqSetsPiv++;
+            }
+            else sb.append(req[i]);
+            if (i < req.length-1)
+                sb.append(";");
+
+        }
+        return sb.toString();
+    }
+
+
     public void save(Writer out) throws IOException {
 	out.write("@comment{");
 	out.write(GUIGlobals.ENTRYTYPE_FLAG);
 	out.write(getName());
 	out.write(": req[");
-	StringBuffer sb = new StringBuffer();
+    out.write(getRequiredFieldsString());
+	/*StringBuffer sb = new StringBuffer();
 	for (int i=0; i<req.length; i++) {
 	    sb.append(req[i]);
 	    if (i<req.length-1)
 		sb.append(";");
 	}
-	out.write(sb.toString());
+	out.write(sb.toString());*/
 	out.write("] opt[");
-	sb = new StringBuffer();
+	StringBuilder sb = new StringBuilder();
 	for (int i=0; i<opt.length; i++) {
 	    sb.append(opt[i]);
 	    if (i<opt.length-1)
diff --git a/src/java/net/sf/jabref/EntryEditor.java b/src/java/net/sf/jabref/EntryEditor.java
index 6b4788e..401c3b7 100644
--- a/src/java/net/sf/jabref/EntryEditor.java
+++ b/src/java/net/sf/jabref/EntryEditor.java
@@ -553,6 +553,26 @@ public class EntryEditor extends JPanel implements VetoableChangeListener {
                 String srcString = sw.getBuffer().toString();
                 source.setText(srcString);
                 lastSourceStringAccepted = srcString;
+
+                //////////////////////////////////////////////////////////
+                // Set the current Entry to be selected.
+                // Fixes the bug of losing selection after, e.g.
+                // an autogeneration of a BibTeX key.
+                // - ILC (16/02/2010) -
+                //////////////////////////////////////////////////////////
+                SwingUtilities.invokeLater(new Runnable() {
+                  public void run() {
+                    final int row = panel.mainTable.findEntry(entry);
+                    if (row >= 0) {
+                        if (panel.mainTable.getSelectedRowCount() == 0)
+                            panel.mainTable.setRowSelectionInterval(row, row);
+                        //scrollTo(row);
+                        panel.mainTable.ensureVisible(row);
+                    }
+                  }
+                });
+                //////////////////////////////////////////////////////////
+
             } catch (IOException ex) {
                 source.setText(ex.getMessage() + "\n\n" +
                                         Globals.lang("Correct the entry, and "
@@ -851,13 +871,14 @@ public class EntryEditor extends JPanel implements VetoableChangeListener {
             // panel.entryTable.repaint();
             // panel.refreshTable();
             panel.markBaseChanged();
-
+///////////////////////////////////////////////////////
             SwingUtilities.invokeLater(new Runnable() {
                 public void run() {
                     final int row = panel.mainTable.findEntry(entry);
                     if (row >= 0) {
-                        if (panel.mainTable.getSelectedRowCount() == 0)
-                            panel.mainTable.setRowSelectionInterval(row, row);
+                        //if (panel.mainTable.getSelectedRowCount() == 0)
+                        //    panel.mainTable.setRowSelectionInterval(row, row);
+                        //scrollTo(row);
                         panel.mainTable.ensureVisible(row);
                     }
                 }
@@ -1231,7 +1252,7 @@ public class EntryEditor extends JPanel implements VetoableChangeListener {
                 if (accepted) {
                 }
             }
-
+////////////////////////////////////
             // Make sure we scroll to the entry if it moved in the table.
             // Should only be done if this editor is currently showing:
             //System.out.println(getType().getName()+": movingAway="+movingAway+", isShowing="+isShowing());
@@ -1240,8 +1261,9 @@ public class EntryEditor extends JPanel implements VetoableChangeListener {
                     public void run() {
                         final int row = panel.mainTable.findEntry(entry);
                         if (row >= 0) {
-                            if (panel.mainTable.getSelectedRowCount() == 0)
-                                panel.mainTable.setRowSelectionInterval(row, row);
+                            //if (panel.mainTable.getSelectedRowCount() == 0)
+                            //    panel.mainTable.setRowSelectionInterval(row, row);
+                            //scrollTo(row);
                             panel.mainTable.ensureVisible(row);
                         }
                     }
diff --git a/src/java/net/sf/jabref/ExternalTab.java b/src/java/net/sf/jabref/ExternalTab.java
index 5adcde6..e5aaa6b 100644
--- a/src/java/net/sf/jabref/ExternalTab.java
+++ b/src/java/net/sf/jabref/ExternalTab.java
@@ -20,7 +20,7 @@ public class ExternalTab extends JPanel implements PrefsTab {
 
 	JabRefFrame _frame;
 
-	JTextField pdfDir, regExpTextField, fileDir, psDir, pdf, ps, html;
+	JTextField pdfDir, regExpTextField, fileDir, psDir;
             
     JCheckBox runAutoFileSearch;
     JButton editFileTypes;
@@ -39,10 +39,7 @@ public class ExternalTab extends JPanel implements PrefsTab {
 		psDir = new JTextField(25);
 		pdfDir = new JTextField(25);
         fileDir = new JTextField(25);
-        pdf = new JTextField(25);
-		ps = new JTextField(25);
-		html = new JTextField(25);
-		editFileTypes = new JButton(Globals.lang("Manage external file types"));
+        editFileTypes = new JButton(Globals.lang("Manage external file types"));
         runAutoFileSearch = new JCheckBox(Globals.lang("When opening file link, search for matching file if no link is defined"));
         regExpTextField = new JTextField(25);
         useRegExpComboBox = new JRadioButton(Globals.lang("Use Regular Expression Search"));
@@ -128,16 +125,7 @@ public class ExternalTab extends JPanel implements PrefsTab {
 		builder.appendSeparator(Globals.lang("External programs"));
 
 		builder.nextLine();
-		lab = new JLabel(Globals.lang("Path to HTML viewer") + ":");
-		builder.append(pan);
-		builder.append(lab);
-		builder.append(html);
-		browse = new BrowseAction(_frame, html, false);
-		if (Globals.ON_WIN)
-			browse.setEnabled(false);
-		builder.append(new JButton(browse));
-		builder.nextLine();
-
+		
         addSettingsButton(new PushToLyx(), builder);
         addSettingsButton(new PushToEmacs(), builder);
         addSettingsButton(new PushToWinEdt(), builder);
@@ -172,19 +160,6 @@ public class ExternalTab extends JPanel implements PrefsTab {
 		pdfDir.setText(_prefs.get("pdfDirectory"));
 		psDir.setText(_prefs.get("psDirectory"));
         fileDir.setText(_prefs.get(GUIGlobals.FILE_FIELD+"Directory"));
-        if (!Globals.ON_WIN) {
-			pdf.setText(_prefs.get("pdfviewer"));
-			ps.setText(_prefs.get("psviewer"));
-			html.setText(_prefs.get("htmlviewer"));
-		} else {
-			pdf.setText(Globals.lang("Uses default application"));
-			ps.setText(Globals.lang("Uses default application"));
-			html.setText(Globals.lang("Uses default application"));
-			pdf.setEnabled(false);
-			ps.setEnabled(false);
-			html.setEnabled(false);
-		}
-
 
         runAutoFileSearch.setSelected(_prefs.getBoolean("runAutomaticFileSearch"));
 		regExpTextField.setText(_prefs.get(JabRefPreferences.REG_EXP_SEARCH_EXPRESSION_KEY));
@@ -208,9 +183,6 @@ public class ExternalTab extends JPanel implements PrefsTab {
 		_prefs.put("pdfDirectory", pdfDir.getText());
 		_prefs.put("psDirectory", psDir.getText());
         _prefs.put(GUIGlobals.FILE_FIELD+"Directory", fileDir.getText());
-        _prefs.put("pdfviewer", pdf.getText());
-		_prefs.put("psviewer", ps.getText());
-		_prefs.put("htmlviewer", html.getText());
 		_prefs.putBoolean("autolinkExactKeyOnly", matchExactKeyOnly.isSelected());
         _prefs.putBoolean("runAutomaticFileSearch", runAutoFileSearch.isSelected());
     }
diff --git a/src/java/net/sf/jabref/FieldTextMenu.java b/src/java/net/sf/jabref/FieldTextMenu.java
index b08ab33..f2243a0 100644
--- a/src/java/net/sf/jabref/FieldTextMenu.java
+++ b/src/java/net/sf/jabref/FieldTextMenu.java
@@ -221,7 +221,7 @@ public class FieldTextMenu implements MouseListener
         String author;
         String[] authors = in.split("( |,)and ",-1);
         for (int i = 0; i < authors.length; i++){
-            authors[i].trim();
+            authors[i] = authors[i].trim();
         }
         /* determine whether the last author name includes a comma
          * 0 is intentional (consider -1 as alternative) */
diff --git a/src/java/net/sf/jabref/HelpAction.java b/src/java/net/sf/jabref/HelpAction.java
index b5c3c67..81a87b8 100644
--- a/src/java/net/sf/jabref/HelpAction.java
+++ b/src/java/net/sf/jabref/HelpAction.java
@@ -42,6 +42,8 @@ public class HelpAction extends MnemonicAwareAction {
 
 	protected HelpDialog diag;
 
+    protected Class resourceOwner = null;
+
 	protected URL helpfile;
 
 	protected String helpFile;
@@ -94,6 +96,10 @@ public class HelpAction extends MnemonicAwareAction {
 		this.helpFile = helpFile;
 	}
 
+    public void setResourceOwner(Class resourceOwner) {
+        this.resourceOwner = resourceOwner;
+    }
+
 	public JButton getIconButton() {
 		JButton hlp = new JButton(this);
 		hlp.setText(null);
@@ -102,6 +108,9 @@ public class HelpAction extends MnemonicAwareAction {
 	}
 
 	public void actionPerformed(ActionEvent e) {
-		diag.showPage(helpFile);
+        if (resourceOwner == null)
+		    diag.showPage(helpFile);
+        else
+            diag.showPage(helpFile, resourceOwner);
 	}
 }
diff --git a/src/java/net/sf/jabref/HelpContent.java b/src/java/net/sf/jabref/HelpContent.java
index 5828eb2..4d6b61e 100644
--- a/src/java/net/sf/jabref/HelpContent.java
+++ b/src/java/net/sf/jabref/HelpContent.java
@@ -101,7 +101,7 @@ public class HelpContent extends JTextPane {
 		history.removeAllElements();
 	}
 
-	public void setPage(String filename) {
+	public void setPage(String filename, Class resourceOwner) {
 		
 		// Check for anchor
 		int indexOf = filename.indexOf('#');
@@ -119,15 +119,15 @@ public class HelpContent extends JTextPane {
 		String middle = prefs.get("language") + "/";
 		if (middle.equals("en/"))
 			middle = ""; // english in base help dir.
-		
-		URL old = getPage();
+
+        URL old = getPage();
 		try {
 			// First check in specified language
-			URL resource = JabRef.class.getResource(GUIGlobals.helpPre + middle + file);
+			URL resource = resourceOwner.getResource(GUIGlobals.helpPre + middle + file);
             
 			// If not available fallback to english
 			if (resource == null) {
-            	resource = JabRef.class.getResource(GUIGlobals.helpPre + file);
+            	resource = resourceOwner.getResource(GUIGlobals.helpPre + file);
             }
 			
 			// If still not available print a warning
@@ -153,7 +153,7 @@ public class HelpContent extends JTextPane {
 	 */
 	public void setPage(URL url) {
 		File f = new File(url.getPath());
-		setPage(f.getName());
+		setPage(f.getName(), JabRef.class);
 	}
 
 	private void setPageOnly(URL url) {
diff --git a/src/java/net/sf/jabref/HelpDialog.java b/src/java/net/sf/jabref/HelpDialog.java
index 81328de..538988d 100644
--- a/src/java/net/sf/jabref/HelpDialog.java
+++ b/src/java/net/sf/jabref/HelpDialog.java
@@ -38,7 +38,7 @@ import javax.swing.event.HyperlinkListener;
  * This is a non-modal help Dialog. The contents of the help is specified by
  * calling showPage().
  * 
- * @version $Revision: 2209 $ ($Date: 2007-08-01 20:23:38 +0200 (Wed, 01 Aug 2007) $)
+ * @version $Revision: 3225 $ ($Date: 2010-03-17 19:00:21 +0100 (Wed, 17 Mar 2010) $)
  * 
  */
 public class HelpDialog extends JDialog implements HyperlinkListener {
@@ -92,7 +92,11 @@ public class HelpDialog extends JDialog implements HyperlinkListener {
 		back.setEnabled(false);
 	}
 
-	public void showPage(String url) {
+    public void showPage(String url) {
+        showPage(url, JabRef.class);
+    }
+
+	public void showPage(String url, Class resourceOwner) {
 		if (!isVisible()) {
 			Util.placeDialog(this, frame);
 			content.reset();
@@ -102,7 +106,7 @@ public class HelpDialog extends JDialog implements HyperlinkListener {
 			back.setEnabled(true);
 		}
 		forward.setEnabled(false);
-		content.setPage(url);
+		content.setPage(url, resourceOwner);
 		content.requestFocus();
 	}
 
@@ -155,7 +159,7 @@ public class HelpDialog extends JDialog implements HyperlinkListener {
 		}
 
 		public void actionPerformed(ActionEvent e) {
-			content.setPage(GUIGlobals.helpContents);
+			content.setPage(GUIGlobals.helpContents, JabRef.class);
 			back.setEnabled(true);
 		}
 	}
diff --git a/src/java/net/sf/jabref/JabRef.java b/src/java/net/sf/jabref/JabRef.java
index f6fba9f..fb3207c 100644
--- a/src/java/net/sf/jabref/JabRef.java
+++ b/src/java/net/sf/jabref/JabRef.java
@@ -133,9 +133,8 @@ public class JabRef {
 					 * through the socket to another JabRef instance. So we
 					 * assume it's all taken care of, and quit.
 					 */
-					System.out
-							.println(Globals
-									.lang("Arguments passed on to running JabRef instance. Shutting down."));
+					System.out.println(
+                            Globals.lang("Arguments passed on to running JabRef instance. Shutting down."));
 					System.exit(0);
 				}
 			} else {
@@ -397,8 +396,9 @@ public class JabRef {
 
 	if (importPrefs.isInvoked()) {
 	    try {
-		Globals.prefs.importPreferences(importPrefs.getStringValue());
-		BibtexEntryType.loadCustomEntryTypes(Globals.prefs);
+		    Globals.prefs.importPreferences(importPrefs.getStringValue());
+		    BibtexEntryType.loadCustomEntryTypes(Globals.prefs);
+            ExportFormats.initAllExports();
 	    }
 	    catch (IOException ex) {
 		Util.pr(ex.getMessage());
diff --git a/src/java/net/sf/jabref/JabRefFrame.java b/src/java/net/sf/jabref/JabRefFrame.java
index c5e3b80..fd5ae13 100644
--- a/src/java/net/sf/jabref/JabRefFrame.java
+++ b/src/java/net/sf/jabref/JabRefFrame.java
@@ -1172,7 +1172,7 @@ public JabRefPreferences prefs() {
       file.add(close);
       file.add(quit);
       mb.add(file);
-      edit.add(test);
+      //edit.add(test);
       edit.add(undo);
       edit.add(redo);
       edit.addSeparator();
@@ -1272,6 +1272,7 @@ public JabRefPreferences prefs() {
        */
       for (EntryFetcher fetcher : fetchers){
     	  GeneralFetcher generalFetcher = new GeneralFetcher(sidePaneManager, this, fetcher);
+          generalFetcher.setHelpResourceOwner(fetcher.getClass());
     	  web.add(generalFetcher.getAction());
     	  fetcherActions.add(generalFetcher.getAction());
       }
diff --git a/src/java/net/sf/jabref/JabRefPreferences.java b/src/java/net/sf/jabref/JabRefPreferences.java
index 79550bf..ddffb22 100644
--- a/src/java/net/sf/jabref/JabRefPreferences.java
+++ b/src/java/net/sf/jabref/JabRefPreferences.java
@@ -97,6 +97,9 @@ public class JabRefPreferences {
     // Map containing all registered external file types:
     private TreeSet<ExternalFileType> externalFileTypes = new TreeSet<ExternalFileType>();
 
+    public final ExternalFileType HTML_FALLBACK_TYPE =
+            new ExternalFileType("URL", "html", "text/html", "", "www");
+
     // The following field is used as a global variable during the export of a database.
     // By setting this field to the path of the database's default file directory, formatters
     // that should resolve external file paths can access this field. This is an ugly hack
@@ -132,24 +135,24 @@ public class JabRefPreferences {
         prefs = Preferences.userNodeForPackage(JabRef.class);
         
         if (Globals.osName.equals(Globals.MAC)) {
-			defaults.put("pdfviewer", "/Applications/Preview.app");
-			defaults.put("psviewer", "/Applications/Preview.app");
-			defaults.put("htmlviewer", "/Applications/Safari.app");
+			//defaults.put("pdfviewer", "/Applications/Preview.app");
+			//defaults.put("psviewer", "/Applications/Preview.app");
+			//defaults.put("htmlviewer", "/Applications/Safari.app");
             defaults.put("fontFamily", "SansSerif");
 
 		} else if (Globals.osName.toLowerCase().startsWith("windows")) {
-			defaults.put("pdfviewer", "cmd.exe /c start /b");
-			defaults.put("psviewer", "cmd.exe /c start /b");
-			defaults.put("htmlviewer", "cmd.exe /c start /b");
+			//defaults.put("pdfviewer", "cmd.exe /c start /b");
+			//defaults.put("psviewer", "cmd.exe /c start /b");
+			//defaults.put("htmlviewer", "cmd.exe /c start /b");
 			defaults.put("lookAndFeel", "com.jgoodies.looks.windows.WindowsLookAndFeel");
             defaults.put("winEdtPath", "C:\\Program Files\\WinEdt Team\\WinEdt\\WinEdt.exe");
             defaults.put("latexEditorPath", "C:\\Program Files\\LEd\\LEd.exe");
             defaults.put("fontFamily", "Arial");
 
         } else {
-			defaults.put("pdfviewer", "evince");
-			defaults.put("psviewer", "gv");
-			defaults.put("htmlviewer", "firefox");
+			//defaults.put("pdfviewer", "evince");
+			//defaults.put("psviewer", "gv");
+			//defaults.put("htmlviewer", "firefox");
 			defaults.put("lookAndFeel", "com.jgoodies.plaf.plastic.Plastic3DLookAndFeel");
             defaults.put("fontFamily", "SansSerif");
 
@@ -308,6 +311,7 @@ public class JabRefPreferences {
         defaults.put("searchAllBases", Boolean.FALSE);
         defaults.put("defaultLabelPattern", "[auth][year]");
         defaults.put("previewEnabled", Boolean.TRUE);
+        defaults.put("activePreview", 0);
         defaults.put("preview0", "<font face=\"arial\">"
                      +"<b><i>\\bibtextype</i><a name=\"\\bibtexkey\">\\begin{bibtexkey} (\\bibtexkey)</a>"
                      +"\\end{bibtexkey}</b><br>__NEWLINE__"
@@ -946,7 +950,7 @@ public class JabRefPreferences {
     public void storeCustomEntryType(CustomEntryType tp, int number) {
         String nr = ""+number;
         put(CUSTOM_TYPE_NAME+nr, tp.getName());
-        putStringArray(CUSTOM_TYPE_REQ+nr, tp.getRequiredFields());
+        put(CUSTOM_TYPE_REQ+nr, tp.getRequiredFieldsString());//tp.getRequiredFields());
         putStringArray(CUSTOM_TYPE_OPT+nr, tp.getOptionalFields());
 
     }
@@ -1042,7 +1046,8 @@ public class JabRefPreferences {
     /**
      * Look up the external file type registered for this MIME type, if any.
      * @param mimeType The MIME type.
-     * @return The ExternalFileType registered, or null if none.
+     * @return The ExternalFileType registered, or null if none. For the mime type "text/html",
+     *   a valid file type is guaranteed to be returned.
      */
     public ExternalFileType getExternalFileTypeByMimeType(String mimeType) {
         for (Iterator<ExternalFileType> iterator = externalFileTypes.iterator(); iterator.hasNext();) {
@@ -1050,7 +1055,10 @@ public class JabRefPreferences {
             if ((type.getMimeType() != null) && type.getMimeType().equals(mimeType))
                 return type;
         }
-        return null;
+        if (mimeType.equals("text/html"))
+            return HTML_FALLBACK_TYPE;
+        else
+            return null;
     }
 
     /**
diff --git a/src/java/net/sf/jabref/MergeDialog.java b/src/java/net/sf/jabref/MergeDialog.java
index 4af106b..5f6128c 100644
--- a/src/java/net/sf/jabref/MergeDialog.java
+++ b/src/java/net/sf/jabref/MergeDialog.java
@@ -46,10 +46,6 @@ public class MergeDialog extends JDialog {
     }
   }
 
-  public MergeDialog() {
-    this(null, "", false);
-  }
-
   private void jbInit(JabRefFrame parent) {
     //  titledBorder1 = new TitledBorder(BorderFactory.createLineBorder(new Color(153, 153, 153),2),Globals.lang("Options"));
     panel1.setLayout(borderLayout1);
diff --git a/src/java/net/sf/jabref/PrefsDialog3.java b/src/java/net/sf/jabref/PrefsDialog3.java
index 8f1cfa8..ac1c646 100644
--- a/src/java/net/sf/jabref/PrefsDialog3.java
+++ b/src/java/net/sf/jabref/PrefsDialog3.java
@@ -41,6 +41,7 @@ import javax.swing.*;
 import javax.swing.event.ListSelectionEvent;
 import javax.swing.event.ListSelectionListener;
 
+import net.sf.jabref.export.ExportFormats;
 import net.sf.jabref.groups.GroupsPrefsTab;
 import net.sf.jabref.gui.MainTable;
 import net.sf.jabref.gui.FileDialogs;
@@ -201,6 +202,7 @@ public class PrefsDialog3 extends JDialog {
 					prefs.importPreferences(filename);
 					setValues();
 					BibtexEntryType.loadCustomEntryTypes(prefs);
+                    ExportFormats.initAllExports();
 					frame.removeCachedEntryEditors();
                     Globals.prefs.updateEntryEditorTabList();
                 } catch (IOException ex) {
diff --git a/src/java/net/sf/jabref/TableColumnsTab.java b/src/java/net/sf/jabref/TableColumnsTab.java
index bf27e88..797e3c4 100644
--- a/src/java/net/sf/jabref/TableColumnsTab.java
+++ b/src/java/net/sf/jabref/TableColumnsTab.java
@@ -281,7 +281,7 @@ class TableColumnsTab extends JPanel implements PrefsTab {
 	class MoveRowDownAction extends AbstractMoveRowAction {
 		public MoveRowDownAction() {
 			super("Down", GUIGlobals.getImage("down"));
-			putValue(SHORT_DESCRIPTION, Globals.lang("Down up"));
+			putValue(SHORT_DESCRIPTION, Globals.lang("Down"));
 		}
 
 		public void actionPerformed(ActionEvent e) {
diff --git a/src/java/net/sf/jabref/Util.java b/src/java/net/sf/jabref/Util.java
index cc647fe..4a06d4e 100644
--- a/src/java/net/sf/jabref/Util.java
+++ b/src/java/net/sf/jabref/Util.java
@@ -586,25 +586,40 @@ public class Util {
 				link = canonicalLink;
 		}
 
-		String cmdArray[] = new String[2];
 		if (fieldName.equals("url")) { // html
 			try {
 				link = sanitizeUrl(link);
-
+                ExternalFileType fileType = Globals.prefs.getExternalFileTypeByExt("html");
 				if (Globals.ON_MAC) {
-					String[] cmd = { "/usr/bin/open", "-a", Globals.prefs.get("htmlviewer"), link };
+
+                    String[] cmd = ((fileType.getOpenWith() != null) && (fileType.getOpenWith().length() > 0)) ?
+                            new String[] { "/usr/bin/open", "-a", fileType.getOpenWith(), link } :
+                            new String[] { "/usr/bin/open", link };
 					Runtime.getRuntime().exec(cmd);
 				} else if (Globals.ON_WIN) {
-					openFileOnWindows(link, false);
+
+                    if ((fileType.getOpenWith() != null) && (fileType.getOpenWith().length() > 0)) {
+                        // Application is specified. Use it:
+                        openFileWithApplicationOnWindows(link, fileType.getOpenWith());
+                    } else
+                        openFileOnWindows(link, true);
 				} else {
-					cmdArray[0] = Globals.prefs.get("htmlviewer");
-					cmdArray[1] = link;
-					Runtime.getRuntime().exec(cmdArray);
+                    // Use the given app if specified, and the universal "xdg-open" otherwise:
+                    String[] openWith;
+                    if ((fileType.getOpenWith() != null) && (fileType.getOpenWith().length() > 0))
+                        openWith = fileType.getOpenWith().split(" ");
+                    else
+                        openWith = new String[] {"xdg-open"};
+
+                    String[] cmd = new String[openWith.length+1];
+                    System.arraycopy(openWith, 0, cmd, 0, openWith.length);
+                    cmd[cmd.length-1] = link;
+                    Runtime.getRuntime().exec(cmd);
 				}
 
 			} catch (IOException e) {
-				System.err.println("An error occured on the command: "
-					+ Globals.prefs.get("htmlviewer") + " " + link);
+                System.err.println(Globals.lang("Error_opening_file_'%0'.", link));
+                e.printStackTrace();
 			}
 		} else if (fieldName.equals("ps")) {
 			try {
@@ -622,7 +637,8 @@ public class Util {
 					 */
 				} else {
                     ExternalFileType type = Globals.prefs.getExternalFileTypeByExt("ps");
-                    String viewer = type != null ? type.getOpenWith() : Globals.prefs.get("psviewer");
+                    String viewer = type != null ? type.getOpenWith() : "xdg-open";
+                    String[] cmdArray = new String[2];
                     cmdArray[0] = viewer;
 					cmdArray[1] = link;
 					Runtime.getRuntime().exec(cmdArray);
@@ -654,6 +670,7 @@ public class Util {
 				} else {
                     ExternalFileType type = Globals.prefs.getExternalFileTypeByExt("pdf");
                     String viewer = type != null ? type.getOpenWith() : Globals.prefs.get("psviewer");
+                    String[] cmdArray = new String[2];
                     cmdArray[0] = viewer;
 					cmdArray[1] = link;
 					// Process child = Runtime.getRuntime().exec(cmdArray[0]+"
@@ -822,26 +839,7 @@ public class Util {
 
             return false;
             // No file matched the name, or we didn't know the file type.
-			// Perhaps it is an URL thing.
-
-            /* TODO: find out if this fallback option of opening the link in a web browser is
-               TODO: actually necessary. */
-            /*
-            link = sanitizeUrl(link);
-
-			if (Globals.ON_MAC) {
-				String[] cmd = { "/usr/bin/open", "-a", Globals.prefs.get("htmlviewer"), link };
-				Runtime.getRuntime().exec(cmd);
-			} else if (Globals.ON_WIN) {
-				openFileOnWindows(link, false);
-			} else {
-				String[] openWith = Globals.prefs.get("htmlviewer").split(" ");
-                String[] cmdArray = new String[openWith.length+1];
-                System.arraycopy(openWith, 0, cmdArray, 0, openWith.length);
-                cmdArray[cmdArray.length-1] = link;
-                Runtime.getRuntime().exec(cmdArray);
-            }
-            */
+
 		}
 
 
diff --git a/src/java/net/sf/jabref/collab/FileUpdateMonitor.java b/src/java/net/sf/jabref/collab/FileUpdateMonitor.java
index 1a56cd5..913d2ca 100644
--- a/src/java/net/sf/jabref/collab/FileUpdateMonitor.java
+++ b/src/java/net/sf/jabref/collab/FileUpdateMonitor.java
@@ -160,6 +160,7 @@ public class FileUpdateMonitor extends Thread {
       timeStamp = file.lastModified();
       fileSize = file.length();
       tmpFile = getTempFile();
+      tmpFile.deleteOnExit();
       copy();
     }
 
@@ -216,13 +217,13 @@ public class FileUpdateMonitor extends Thread {
       listener.fileRemoved();
     }
 
-    public void finalize() {
+    /*public void finalize() {
       try {
         tmpFile.delete();
       } catch (Throwable e) {
         Globals.logger("Cannot delete temporary file '"+tmpFile.getPath()+"'");
       }
-    }
+    }*/
   }
 
   static synchronized File getTempFile() {
diff --git a/src/java/net/sf/jabref/export/CustomExportList.java b/src/java/net/sf/jabref/export/CustomExportList.java
index 8b416fe..8708f57 100644
--- a/src/java/net/sf/jabref/export/CustomExportList.java
+++ b/src/java/net/sf/jabref/export/CustomExportList.java
@@ -51,13 +51,20 @@ public class CustomExportList {
 		String[] s;
 		while ((s = Globals.prefs.getStringArray("customExportFormat" + i)) != null) {
             ExportFormat format = createFormat(s);
-			formats.put(format.getConsoleName(), format);
-			list.add(s);
+            if (format != null) {
+                formats.put(format.getConsoleName(), format);
+    			list.add(s);
+            } else {
+                System.out.println(Globals.lang("Error initializing custom export format from string '%0'",
+                    Globals.prefs.get("customExportFormat" + i)));
+            }
 			i++;
 		}
 	}
 
     private ExportFormat createFormat(String[] s) {
+        if (s.length < 3)
+            return null;
 		String lfFileName;
 		if (s[1].endsWith(".layout"))
 			lfFileName = s[1].substring(0, s[1].length() - 7);
diff --git a/src/java/net/sf/jabref/export/OpenDocumentSpreadsheetCreator.java b/src/java/net/sf/jabref/export/OpenDocumentSpreadsheetCreator.java
index f14d22a..b2998ef 100644
--- a/src/java/net/sf/jabref/export/OpenDocumentSpreadsheetCreator.java
+++ b/src/java/net/sf/jabref/export/OpenDocumentSpreadsheetCreator.java
@@ -9,6 +9,8 @@ package net.sf.jabref.export;
 import java.io.*;
 import java.net.URL;
 import java.util.Set;
+import java.util.zip.CRC32;
+import java.util.zip.Deflater;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipOutputStream;
 
@@ -41,8 +43,25 @@ public class OpenDocumentSpreadsheetCreator extends ExportFormat {
 
     public static void storeOpenDocumentSpreadsheetFile(File file, InputStream source) throws Exception {
         ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(file)));
+
         try {
+            
+            //addResourceFile("mimetype", "/resource/ods/mimetype", out);
+            ZipEntry ze = new ZipEntry("mimetype");
+            String mime = "application/vnd.oasis.opendocument.spreadsheet";
+            ze.setMethod(ZipEntry.STORED);
+            ze.setSize(mime.length());
+            CRC32 crc = new CRC32();
+            crc.update(mime.getBytes());
+            ze.setCrc(crc.getValue());
+            out.putNextEntry(ze);
+            for (int i=0; i<mime.length(); i++) {
+                out.write(mime.charAt(i));
+            }
+            out.closeEntry();
+
             ZipEntry zipEntry = new ZipEntry("content.xml");
+            //zipEntry.setMethod(ZipEntry.DEFLATED);
             out.putNextEntry(zipEntry);
             int c = -1;
             while ((c = source.read()) >= 0) {
@@ -53,7 +72,7 @@ public class OpenDocumentSpreadsheetCreator extends ExportFormat {
             // Add manifest (required for OOo 2.0) and "meta.xml": These are in the
             // resource/ods directory, and are copied verbatim into the zip file.
             addResourceFile("meta.xml", "/resource/ods/meta.xml", out);
-            addResourceFile("mimetype", "/resource/ods/mimetype", out);
+
             addResourceFile("META-INF/manifest.xml", "/resource/ods/manifest.xml", out);
 
             //zipEntry = new ZipEntry()
diff --git a/src/java/net/sf/jabref/export/SaveDatabaseAction.java b/src/java/net/sf/jabref/export/SaveDatabaseAction.java
index 7c99ad5..885ee0d 100644
--- a/src/java/net/sf/jabref/export/SaveDatabaseAction.java
+++ b/src/java/net/sf/jabref/export/SaveDatabaseAction.java
@@ -173,9 +173,9 @@ public class SaveDatabaseAction extends AbstractWorker {
                 panel.undoManager.markUnchanged();
 
                 if (!AutoSaveManager.deleteAutoSaveFile(panel)) {
-                    System.out.println("Deletion of autosave file failed");
-                } else
-                    System.out.println("Deleted autosave file (if it existed)");
+                    //System.out.println("Deletion of autosave file failed");
+                }/* else
+                    System.out.println("Deleted autosave file (if it existed)");*/
                 // (Only) after a successful save the following
                 // statement marks that the base is unchanged
                 // since last save:
diff --git a/src/java/net/sf/jabref/export/layout/format/Replace.java b/src/java/net/sf/jabref/export/layout/format/Replace.java
index 5fecdd7..dd8a3ee 100644
--- a/src/java/net/sf/jabref/export/layout/format/Replace.java
+++ b/src/java/net/sf/jabref/export/layout/format/Replace.java
@@ -10,9 +10,10 @@ import net.sf.jabref.export.layout.AbstractParamLayoutFormatter;
  * sequence: \,
  * For inserting newlines and tabs in arguments, use \n and \t, respectively.
  *
- * The first part is the regular expression to search for. The regular expression
- * is written normally, without extra escape sequences for backslashes. A description
- * of Java regular expressions can be found at:
+ * The first part is the regular expression to search for. Remember that any commma
+ * character must be preceded by a backslash, and consequently a literal backslash must
+ * be written as a pair of backslashes. A description of Java regular expressions can be
+ * found at:
  *   http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html
  *
  * The second part is the text to replace all matches with.
diff --git a/src/java/net/sf/jabref/export/layout/format/WrapFileLinks.java b/src/java/net/sf/jabref/export/layout/format/WrapFileLinks.java
index 01e39cd..be2f39e 100644
--- a/src/java/net/sf/jabref/export/layout/format/WrapFileLinks.java
+++ b/src/java/net/sf/jabref/export/layout/format/WrapFileLinks.java
@@ -58,7 +58,7 @@ import java.io.IOException;
  * <p/>
  * If the formatter was called with a second argument, the list would be filtered.
  * For instance:
- * \format[WrapFileLinks(\i. \d (\p),,text file)]{\file}
+ * \format[WrapFileLinks(\i. \d (\p),text file)]{\file}
  * <p/>
  * would show only the text file:
  * 1. An early "draft" (/home/john/draft.txt)
@@ -66,12 +66,12 @@ import java.io.IOException;
  * If we wanted this output to be part of an XML styled output, the quotes in the
  * file description could cause problems. Adding two additional arguments to translate
  * the quotes into XML characters solves this:
- * \format[WrapFileLinks(\i. \d (\p),,text file,",")]{\file}
+ * \format[WrapFileLinks(\i. \d (\p),text file,",")]{\file}
  * <p/>
  * would give the following output:
  * 1. An early "draft" (/home/john/draft.txt)
  *
- * Additional pairs of replacements could be added.
+ * Additional pairs of replacements can be added.
  */
 public class WrapFileLinks extends AbstractParamLayoutFormatter {
 
diff --git a/src/java/net/sf/jabref/external/FindFullText.java b/src/java/net/sf/jabref/external/FindFullText.java
index e5d4aff..fcb37be 100644
--- a/src/java/net/sf/jabref/external/FindFullText.java
+++ b/src/java/net/sf/jabref/external/FindFullText.java
@@ -186,13 +186,15 @@ public class FindFullText {
 
         public FindResult(URL url, URL originalUrl) {
             this.url = url;
-            host = originalUrl.getHost();
             this.status = FOUND_PDF;
+            if (originalUrl != null)
+                host = originalUrl.getHost();
         }
         public FindResult(int status, URL originalUrl) {
             this.url = null;
             this.status = status;
-            this.host = originalUrl.getHost();
+            if (originalUrl != null)
+                this.host = originalUrl.getHost();
         }
     }
 
diff --git a/src/java/net/sf/jabref/groups/GroupTreeNode.java b/src/java/net/sf/jabref/groups/GroupTreeNode.java
index f05c26f..b1f8e82 100644
--- a/src/java/net/sf/jabref/groups/GroupTreeNode.java
+++ b/src/java/net/sf/jabref/groups/GroupTreeNode.java
@@ -384,4 +384,9 @@ public class GroupTreeNode extends DefaultMutableTreeNode implements
 		}
 		return true;
 	}
+
+    @Override
+    public int hashCode() {
+        return getGroup().getName().hashCode();
+    }
 }
diff --git a/src/java/net/sf/jabref/gui/EntryCustomizationDialog2.java b/src/java/net/sf/jabref/gui/EntryCustomizationDialog2.java
index 4325a79..c1d261c 100644
--- a/src/java/net/sf/jabref/gui/EntryCustomizationDialog2.java
+++ b/src/java/net/sf/jabref/gui/EntryCustomizationDialog2.java
@@ -21,14 +21,6 @@ import net.sf.jabref.*;
 
 import com.jgoodies.forms.builder.ButtonBarBuilder;
 
-/**
- * NOTAT:
- *    * S?rg for at ting oppdateres riktig ved tillegg av ny type. (velge, unng? at det blir feil innhold i listene).
- *    *
- *
- *
- * @author alver
- */
 public class EntryCustomizationDialog2 extends JDialog implements ListSelectionListener, ActionListener {
 
     protected JabRefFrame frame;
@@ -141,7 +133,7 @@ public class EntryCustomizationDialog2 extends JDialog implements ListSelectionL
         if (rl == null) {
             BibtexEntryType type = BibtexEntryType.getType(s);
             if (type != null) {
-                String[] rf = type.getRequiredFields(),
+                String[] rf = type.getRequiredFieldsForCustomization(),
                         of = type.getOptionalFields();
                 List<String> req, opt;
                 if (rf != null)
@@ -337,7 +329,7 @@ class DefaultListener implements ActionListener {
 
         BibtexEntryType type = BibtexEntryType.getStandardType(lastSelected);
         if (type != null) {
-            String[] rf = type.getRequiredFields(),
+            String[] rf = type.getRequiredFieldsForCustomization(),
                     of = type.getOptionalFields();
             List<String> req, opt;
             if (rf != null)
diff --git a/src/java/net/sf/jabref/gui/FileListEditor.java b/src/java/net/sf/jabref/gui/FileListEditor.java
index cc52dfd..d17c8df 100644
--- a/src/java/net/sf/jabref/gui/FileListEditor.java
+++ b/src/java/net/sf/jabref/gui/FileListEditor.java
@@ -183,7 +183,9 @@ public class FileListEditor extends JTable implements FieldEditor,
         if (row >= 0) {
             FileListEntry entry = tableModel.getEntry(row);
             try {
-                Util.openExternalFileAnyFormat(metaData, entry.getLink(), entry.getType());
+                ExternalFileType type = Globals.prefs.getExternalFileTypeByName(entry.getType().getName());
+                Util.openExternalFileAnyFormat(metaData, entry.getLink(),
+                        type != null ? type : entry.getType());
             } catch (IOException e) {
                 e.printStackTrace();
             }
diff --git a/src/java/net/sf/jabref/gui/MainTableSelectionListener.java b/src/java/net/sf/jabref/gui/MainTableSelectionListener.java
index 89c78e5..b8ce14d 100644
--- a/src/java/net/sf/jabref/gui/MainTableSelectionListener.java
+++ b/src/java/net/sf/jabref/gui/MainTableSelectionListener.java
@@ -27,6 +27,7 @@ import net.sf.jabref.external.ExternalFileMenuItem;
 import ca.odell.glazedlists.EventList;
 import ca.odell.glazedlists.event.ListEvent;
 import ca.odell.glazedlists.event.ListEventListener;
+import net.sf.jabref.external.ExternalFileType;
 
 /**
  * List event, mouse, key and focus listener for the main table that makes up the
@@ -36,7 +37,7 @@ public class MainTableSelectionListener implements ListEventListener<BibtexEntry
         KeyListener, FocusListener {
 
     PreviewPanel[] previewPanel = null;
-    int activePreview = 0;
+    int activePreview = Globals.prefs.getInt("activePreview");
     PreviewPanel preview;
     MainTable table;
     BasePanel panel;
@@ -295,7 +296,7 @@ public class MainTableSelectionListener implements ListEventListener<BibtexEntry
                         return; // There is an icon, but the field is not set.
                     }
 
-                    try {
+                    {
                         // See if this is a simple file link field, or if it is a file-list
                         // field that can specify a list of links:
                         if (fieldName.equals(GUIGlobals.FILE_FIELD)) {
@@ -316,13 +317,28 @@ public class MainTableSelectionListener implements ListEventListener<BibtexEntry
                                 }
                             }
                         } else {
-                            Util.openExternalViewer(panel.metaData(), (String)link, fieldName);
+                            try {
+                                Util.openExternalViewer(panel.metaData(), (String)link, fieldName);
+                            } catch (IOException ex) {
+                                panel.output(Globals.lang("Unable to open link."));
+                            }
+
+                            /*ExternalFileType type = Globals.prefs.getExternalFileTypeByMimeType("text/html");
+                            ExternalFileMenuItem item = new ExternalFileMenuItem
+                                    (panel.frame(), entry, "",
+                                    (String)link, type.getIcon(),
+                                    panel.metaData(), type);
+                            boolean success = item.openLink();
+                            if (!success) {
+                                panel.output(Globals.lang("Unable to open link."));
+                            } */
+                            //Util.openExternalViewer(panel.metaData(), (String)link, fieldName);
                         }
 
                     }
-                    catch (IOException ex) {
-                        panel.output(Globals.lang("Error") + ": " + ex.getMessage());
-                    }
+                    //catch (IOException ex) {
+                    //    panel.output(Globals.lang("Error") + ": " + ex.getMessage());
+                    //}
                 }
 
             }).start();
@@ -436,6 +452,7 @@ public class MainTableSelectionListener implements ListEventListener<BibtexEntry
             activePreview++;
         else
             activePreview = 0;
+        Globals.prefs.putInt("activePreview", activePreview);
         if (previewActive) {
             this.preview = previewPanel[activePreview];
 
diff --git a/src/java/net/sf/jabref/gui/SearchResultsDialog.java b/src/java/net/sf/jabref/gui/SearchResultsDialog.java
index cd274b6..3a2cb0d 100644
--- a/src/java/net/sf/jabref/gui/SearchResultsDialog.java
+++ b/src/java/net/sf/jabref/gui/SearchResultsDialog.java
@@ -89,7 +89,9 @@ public class SearchResultsDialog {
     private void init(String title) {
         diag = new JDialog(frame, title, false);
 
-        preview = new PreviewPanel(null, new MetaData(), Globals.prefs.get("preview1"));
+        int activePreview = Globals.prefs.getInt("activePreview");
+        preview = new PreviewPanel(null, new MetaData(),
+                activePreview == 0 ? Globals.prefs.get("preview0") : Globals.prefs.get("preview1"));
 
         sortedEntries = new SortedList<BibtexEntry>(entries, new EntryComparator(false, true, "author"));
         model = new EventTableModel<BibtexEntry>(sortedEntries,
diff --git a/src/java/net/sf/jabref/imports/ACMPortalFetcher.java b/src/java/net/sf/jabref/imports/ACMPortalFetcher.java
index c843ab3..9f723c5 100644
--- a/src/java/net/sf/jabref/imports/ACMPortalFetcher.java
+++ b/src/java/net/sf/jabref/imports/ACMPortalFetcher.java
@@ -5,7 +5,7 @@
 
 package net.sf.jabref.imports;
 
-import java.awt.BorderLayout;
+import java.awt.GridLayout;
 import java.io.BufferedInputStream;
 import java.io.BufferedReader;
 import java.io.File;
@@ -31,36 +31,30 @@ import net.sf.jabref.GUIGlobals;
 import net.sf.jabref.Globals;
 import net.sf.jabref.OutputPrinter;
 
-/**
- * Created by IntelliJ IDEA.
- * User: alver
- * Date: Mar 25, 2006
- * Time: 1:09:32 PM
- * To change this template use File | Settings | File Templates.
- */
 public class ACMPortalFetcher implements EntryFetcher {
 
 	ImportInspector dialog = null;
 	OutputPrinter status;
-    HTMLConverter htmlConverter = new HTMLConverter();
+    final HTMLConverter htmlConverter = new HTMLConverter();
     private String terms;
     String startUrl = "http://portal.acm.org/";
     String searchUrlPart = "results.cfm?query=";
     String searchUrlPartII = "&dl=";
-    String endUrl = "&coll=Portal&short=1";//&start=";
+    String endUrl = "&coll=Portal&short=0";//&start=";
 
-    private static final int MAX_FETCH = 50; // 20 when short=0
-    private int perPage = MAX_FETCH, hits = 0, unparseable = 0, parsed = 0;
-    private boolean shouldContinue = false;
     private JRadioButton acmButton = new JRadioButton(Globals.lang("The ACM Digital Library"));
     private JRadioButton guideButton = new JRadioButton(Globals.lang("The Guide to Computing Literature"));
-    private JCheckBox fetchAstracts = new JCheckBox(Globals.lang("Include abstracts"), false);
-    private boolean fetchingAbstracts = false;
+    private JCheckBox absCheckBox = new JCheckBox(Globals.lang("Include abstracts"), false);
+    
+    private static final int MAX_FETCH = 20; // 20 when short=0
+    private int perPage = MAX_FETCH, hits = 0, unparseable = 0, parsed = 0;
+    private boolean shouldContinue = false;
+    private boolean fetchAbstract = false;
     private boolean acmOrGuide = false;
 
     Pattern hitsPattern = Pattern.compile(".*Found <b>(\\d+,*\\d*)</b> of.*");
     Pattern maxHitsPattern = Pattern.compile(".*Results \\d+ - \\d+ of (\\d+,*\\d*).*");
-    Pattern risPattern = Pattern.compile(".*(popBibTex.cfm.*)','BibTex'.*");
+    Pattern bibPattern = Pattern.compile(".*(popBibTex.cfm.*)','BibTex'.*");
     Pattern absPattern = Pattern.compile(".*ABSTRACT</A></span>\\s+<p class=\"abstract\">\\s+(.*)");
     
     Pattern fullCitationPattern =
@@ -68,17 +62,18 @@ public class ACMPortalFetcher implements EntryFetcher {
 
     public JPanel getOptionsPanel() {
         JPanel pan = new JPanel();
-        pan.setLayout(new BorderLayout());
+        pan.setLayout(new GridLayout(0,1));
 
-        acmButton.setSelected(true);
+        guideButton.setSelected(true);
         
         ButtonGroup group = new ButtonGroup();
         group.add(acmButton);
         group.add(guideButton);
-        pan.add(fetchAstracts, BorderLayout.NORTH);
-        pan.add(acmButton, BorderLayout.CENTER);
-        pan.add(guideButton, BorderLayout.SOUTH);
-
+        
+        pan.add(absCheckBox);
+        pan.add(acmButton);
+        pan.add(guideButton);
+        
         return pan;
     }
 
@@ -128,13 +123,13 @@ public class ACMPortalFetcher implements EntryFetcher {
             
             if (hits > MAX_FETCH) {
                 status.showMessage(Globals.lang("%0 entries found. To reduce server load, "
-                        +"only %1 will be downloaded.",
+                        +"only %1 will be downloaded. It will be very slow, in order to make ACM happy.",
                                 new String[] {String.valueOf(hits), String.valueOf(MAX_FETCH)}),
                         Globals.lang("Search ACM Portal"), JOptionPane.INFORMATION_MESSAGE);
                 hits = MAX_FETCH;
             }
         
-            fetchingAbstracts = fetchAstracts.isSelected();
+            fetchAbstract = absCheckBox.isSelected();
             //parse(dialog, page, 0, 51);
             //dialog.setProgress(perPage/2, hits);
             parse(dialog, page, 0, 1);
@@ -193,18 +188,21 @@ public class ACMPortalFetcher implements EntryFetcher {
                 parsed++;
             }
             entryNumber++;
-            //break;
+            try {
+            	Thread.sleep(10000);//wait between requests or you will be blocked by ACM
+            } catch (InterruptedException e) {
+            	System.err.println(e.getStackTrace());
+            }
         }
     }
 
-    private BibtexEntry parseEntryBibTeX(String fullCitation, boolean abs)
-        throws IOException
-    {
+    private BibtexEntry parseEntryBibTeX(String fullCitation, boolean abs) throws IOException {
         URL url;
         try {
             url = new URL(startUrl + fullCitation);
         	String page = getResults(url);
-			Matcher bibtexAddr = risPattern.matcher(page);
+			Thread.sleep(10000);//wait between requests or you will be blocked by ACM
+			Matcher bibtexAddr = bibPattern.matcher(page);
 			if (bibtexAddr.find()) {
 				URL bibtexUrl = new URL(startUrl + bibtexAddr.group(1));
 				BufferedReader in = new BufferedReader(new InputStreamReader(bibtexUrl.openStream()));
@@ -222,6 +220,8 @@ public class ACMPortalFetcher implements EntryFetcher {
 						//System.out.println(page);
 					}
 				}
+				
+				Thread.sleep(10000);//wait between requests or you will be blocked by ACM
 				return entry;
 			} else
 				return null;
@@ -234,11 +234,13 @@ public class ACMPortalFetcher implements EntryFetcher {
 		} catch (IOException e) {
 			e.printStackTrace();
 			return null;
+		} catch (InterruptedException e) {
+			e.printStackTrace();
+			return null;
 		}
     }
 
-    private BibtexEntry parseNextEntry(String allText, int startIndex, int entryNumber)
-    {
+    private BibtexEntry parseNextEntry(String allText, int startIndex, int entryNumber) {
         String toFind = new StringBuffer().append("<strong>")
                 .append(entryNumber).append("</strong>").toString();
         int index = allText.indexOf(toFind, startIndex);
@@ -256,10 +258,11 @@ public class ACMPortalFetcher implements EntryFetcher {
 				fullCitationPattern.matcher(text);
 			if (fullCitation.find()) {
 				try {
-					entry = parseEntryBibTeX(fullCitation.group(1), fetchingAbstracts);
-				} catch (IOException e) {
-					e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
-				}
+					Thread.sleep(10000);//wait between requests or you will be blocked by ACM
+					entry = parseEntryBibTeX(fullCitation.group(1), fetchAbstract);
+				} catch (Exception e) {
+					e.printStackTrace();
+				}  
 			} else {
 				System.out.printf("Citation Unmatched %d\n", entryNumber);
 				System.out.printf(text);
diff --git a/src/java/net/sf/jabref/imports/GeneralFetcher.java b/src/java/net/sf/jabref/imports/GeneralFetcher.java
index 6d7320b..22fd2be 100644
--- a/src/java/net/sf/jabref/imports/GeneralFetcher.java
+++ b/src/java/net/sf/jabref/imports/GeneralFetcher.java
@@ -122,6 +122,10 @@ public class GeneralFetcher extends SidePaneComponent implements ActionListener
         tf.addActionListener(this);
     }
 
+    public void setHelpResourceOwner(Class c) {
+        help.setResourceOwner(c);
+    }
+
     public JTextField getTextField() {
         return tf;
     }
@@ -154,7 +158,8 @@ public class GeneralFetcher extends SidePaneComponent implements ActionListener
     class FetcherAction extends AbstractAction {
         public FetcherAction() {
             super(fetcher.getTitle(), new ImageIcon(fetcher.getIcon()));
-            putValue(ACCELERATOR_KEY, Globals.prefs.getKey(fetcher.getKeyName()));
+            if ((fetcher.getKeyName() != null) && (fetcher.getKeyName().length() > 0))
+                putValue(ACCELERATOR_KEY, Globals.prefs.getKey(fetcher.getKeyName()));
         }
         public void actionPerformed(ActionEvent e) {
         	String fetcherTitle = fetcher.getTitle();
diff --git a/src/java/net/sf/jabref/imports/HTMLConverter.java b/src/java/net/sf/jabref/imports/HTMLConverter.java
index 556eb97..46c68e5 100644
--- a/src/java/net/sf/jabref/imports/HTMLConverter.java
+++ b/src/java/net/sf/jabref/imports/HTMLConverter.java
@@ -1,5 +1,10 @@
 package net.sf.jabref.imports;
 
+import java.util.HashMap;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
 import net.sf.jabref.export.layout.LayoutFormatter;
 
 /**
@@ -10,35 +15,79 @@ import net.sf.jabref.export.layout.LayoutFormatter;
  * To change this template use File | Settings | File Templates.
  */
 public class HTMLConverter implements LayoutFormatter {
-
+	private HashMap<String, String> escapedSymbols = new HashMap<String, String>();
+	
+	public HTMLConverter() {
+		super();
+		escapedSymbols.put("“", "``");
+		escapedSymbols.put("”", "''");
+		escapedSymbols.put("‘", "``");
+		escapedSymbols.put("’", "''");
+		escapedSymbols.put(" ", " ");
+		escapedSymbols.put(""", "\"");
+		escapedSymbols.put("&", "&");
+		escapedSymbols.put("<", "<");
+		escapedSymbols.put(">", ">");
+	}
     public String format(String text) {
-
         if (text == null)
             return null;
-        text = text.replaceAll("“", "``");
-        text = text.replaceAll("”", "''");
-        text = text.replaceAll("‘", "`");
-        text = text.replaceAll("’", "'");
         StringBuffer sb = new StringBuffer();
         for (int i=0; i<text.length(); i++) {
 
             int c = text.charAt(i);
 
-            if (c == '&') {
-                i = readHtmlChar(text, sb, i);
-                //sb.append((char)c);
-            } else if (c == '<') {
+            if (c == '<') {
                 i = readTag(text, sb, i);
             } else
                 sb.append((char)c);
 
         }
+        text = sb.toString();
+        Set<String> patterns = escapedSymbols.keySet();
+        for (String pattern: patterns) {
+        	text = text.replaceAll(pattern, escapedSymbols.get(pattern));
+        }
+        
+        Pattern escapedPattern = Pattern.compile("&#([x]*\\d+);");
+        Matcher m = escapedPattern.matcher(text);
+        while (m.find()) {
+        	int num = Integer.decode(m.group(1).replace("x", "#"));
+        	switch (num) {
+        	case 37:
+        		text = text.replaceAll("&#" + m.group(1) + ";", "%");
+        		break;
+        	case 38:
+        		text = text.replaceAll("&#" + m.group(1) + ";", "&");
+        		break;
+        	case 916:
+        		text = text.replaceAll("&#" + m.group(1) + ";", "$\\delta$");
+        		break;
+        	case 956:
+        		text = text.replaceAll("&#" + m.group(1) + ";", "$\\mu$");
+        		break;
+        	case 8208:
+        		text = text.replaceAll("&#" + m.group(1) + ";", "-");
+        		break;
+        	case 8211:
+        		text = text.replaceAll("&#" + m.group(1) + ";", "--");
+        		break;
+        	case 8212:
+        		text = text.replaceAll("&#" + m.group(1) + ";", "---");
+        		break;
+        	case 8217:
+        		text = text.replaceAll("&#" + m.group(1) + ";", "'");
+        		break;
+        	default:
+        		System.err.println("HTML escaped char not converted " + m.group(1) + ": " + Integer.toString(num));
+        	}
+        }
 
-        return sb.toString();
+        return text.trim();
     }
 
-    private final int MAX_TAG_LENGTH = 20;
-    private final int MAX_CHAR_LENGTH = 10;
+    private final int MAX_TAG_LENGTH = 30;
+    /*private final int MAX_CHAR_LENGTH = 10;
 
     private int readHtmlChar(String text, StringBuffer sb, int position) {
         // Have just read the < character that starts the tag.
@@ -48,7 +97,7 @@ public class HTMLConverter implements LayoutFormatter {
             //System.out.println("Removed code: "+text.substring(position, index));
             return index; // Just skip the tag.
         } else return position; // Don't do anything.
-    }
+    }*/
 
     private int readTag(String text, StringBuffer sb, int position) {
         // Have just read the < character that starts the tag.
diff --git a/src/java/net/sf/jabref/imports/IEEEXploreFetcher.java b/src/java/net/sf/jabref/imports/IEEEXploreFetcher.java
index f6a2698..1992b6f 100644
--- a/src/java/net/sf/jabref/imports/IEEEXploreFetcher.java
+++ b/src/java/net/sf/jabref/imports/IEEEXploreFetcher.java
@@ -1,20 +1,28 @@
 package net.sf.jabref.imports;
 
 import java.awt.BorderLayout;
-import java.awt.event.ItemEvent;
-import java.awt.event.ItemListener;
+
+import java.io.BufferedReader;
 import java.io.BufferedInputStream;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.InputStreamReader;
 import java.io.PrintWriter;
+
 import java.net.ConnectException;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.net.URLConnection;
 import java.net.URLEncoder;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
 import java.util.List;
+import java.util.Set;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -24,6 +32,7 @@ import javax.swing.JOptionPane;
 import javax.swing.JPanel;
 import javax.swing.JRadioButton;
 
+import net.sf.jabref.BibtexDatabase;
 import net.sf.jabref.BibtexEntry;
 import net.sf.jabref.BibtexEntryType;
 import net.sf.jabref.GUIGlobals;
@@ -31,88 +40,92 @@ import net.sf.jabref.Globals;
 import net.sf.jabref.OutputPrinter;
 import net.sf.jabref.Util;
 
-
 public class IEEEXploreFetcher implements EntryFetcher {
 
     ImportInspector dialog = null;
 	OutputPrinter status;
-    HTMLConverter htmlConverter = new HTMLConverter();
-    private String terms;
-    String startUrl = "http://ieeexplore.ieee.org";
-    String searchUrlPart = "/search/freesearchresult.jsp?queryText=%28";
-    String endUrl = "%29+%3Cin%3E+metadata&ResultCount=25&ResultStart=";
-    String risUrl = "http://ieeexplore.ieee.org/xpls/citationAct";
-    private int perPage = 25, hits = 0, unparseable = 0, parsed = 0;
-    private boolean shouldContinue = false;
-    private JCheckBox fetchAbstracts = new JCheckBox(Globals.lang("Include abstracts"), false);
-    private boolean fetchingAbstracts = false;
+    final HTMLConverter htmlConverter = new HTMLConverter();
+    
+    private JCheckBox absCheckBox = new JCheckBox(Globals.lang("Include abstracts"), false);
     private JRadioButton htmlButton = new JRadioButton(Globals.lang("HTML parser"));
-    private JRadioButton risButton = new JRadioButton(Globals.lang("RIS importer"));
-    private boolean fetchingRIS = false;
-    private static final int MAX_RIS_FETCH = 25;
+    private JRadioButton bibButton = new JRadioButton(Globals.lang("BibTeX importer"));
+    
+    private static final int MAX_FETCH = 100;
+    private int perPage = MAX_FETCH, hits = 0, unparseable = 0, parsed = 0;
+    private int piv = 0;
+    private boolean shouldContinue = false;
+    private boolean includeAbstract = false;
+    private boolean importBibtex = false;
+    
+    private String terms;
+    private final String startUrl = "http://ieeexplore.ieee.org/search/freesearchresult.jsp?queryText=";
+    private final String endUrl = "&rowsPerPage=" + Integer.toString(perPage) + "&pageNumber=";
+    private String searchUrl;
+    private final String importUrl = "http://ieeexplore.ieee.org/xpls/downloadCitations";
+    
+    private final Pattern hitsPattern = Pattern.compile("([0-9,]+) results");
+    private final Pattern idPattern = Pattern.compile("<input name=\"\" type=\"checkbox\" value=\"\"\\s*" +
+    		"id=\"([0-9]+)\"/>");
+    private final Pattern typePattern = Pattern.compile("<span class=\"type\">\\s*(.+)");
+    private HashMap<String, String> fieldPatterns = new HashMap<String, String>();
+    private final Pattern absPattern = Pattern.compile("<p>\\s*(.+)");
     
-    Pattern hitsPattern = Pattern.compile(".*Your search matched <strong>(\\d+)</strong>.*");
-    Pattern maxHitsPattern = Pattern.compile(".*A maximum of <strong>(\\d+)</strong>.*");
-    Pattern paperEntryPattern = Pattern.compile(".*<strong>(.+)</strong><br>"
-    			+ "\\s+(.+)"
-    			+ "\\s+<A href=.+>(.+)</A><br>"
-    			+ "\\s+(.+)\\s+(.+)\\s+(.+)\\s+(.+).*");
     Pattern stdEntryPattern = Pattern.compile(".*<strong>(.+)</strong><br>"
-    			+ "\\s+(.+)");
-    Pattern volumePattern = Pattern.compile(".*Volume (\\d+), (.+)");
-    Pattern numberPattern = Pattern.compile(".*Issue (\\d+)</a>, (.+)");
-    Pattern partPattern = Pattern.compile(".*Part (\\d+), (.+)");
-    Pattern datePattern = Pattern.compile("(.*)\\s?(\\d{4}).*");
+			+ "\\s+(.+)");
+    
     Pattern publicationPattern = Pattern.compile("(.*), \\d*\\.*\\s?(.*)");
     Pattern proceedingPattern = Pattern.compile("(.*?)\\.?\\s?Proceedings\\s?(.*)");
     Pattern abstractLinkPattern = Pattern.compile(
             "<a href=\"(.+)\" class=\"bodyCopySpaced\">Abstract</a>");
-    String abbrvPattern = ".*[^,] '?\\d+\\)?";
-
-    Pattern ieeeArticleNumberPattern =
-        Pattern.compile("<a href=\".*arnumber=(\\d+).*\">");
+    String abrvPattern = ".*[^,] '?\\d+\\)?";
 
+    Pattern ieeeArticleNumberPattern = Pattern.compile("<a href=\".*arnumber=(\\d+).*\">");
+    
+    public IEEEXploreFetcher() {
+    	super();
+    	
+    	fieldPatterns.put("title", "<a\\s*href=[^<]+>\\s*(.+)\\s*</a>");
+        fieldPatterns.put("author", "<p>\\s+(.+)");
+        fieldPatterns.put("volume", "Volume:\\s*(\\d+)");
+        fieldPatterns.put("number", "Issue:\\s*(\\d+)");
+        //fieldPatterns.put("part", "Part (\\d+), (.+)");
+        fieldPatterns.put("year", "Publication Year:\\s*(\\d{4})");
+        fieldPatterns.put("pages", "Page\\(s\\):\\s*(\\d+)\\s*-\\s*(\\d*)");
+        fieldPatterns.put("doi", "Digital Object Identifier:\\s*<a href=.*>(.+)</a>");
+    }
     public JPanel getOptionsPanel() {
         JPanel pan = new JPanel();
         pan.setLayout(new BorderLayout());
         htmlButton.setSelected(true);
+        htmlButton.setEnabled(false);
+        bibButton.setEnabled(false);
         
         ButtonGroup group = new ButtonGroup();
         group.add(htmlButton);
-        group.add(risButton);
-        pan.add(fetchAbstracts, BorderLayout.NORTH);
+        group.add(bibButton);
+        pan.add(absCheckBox, BorderLayout.NORTH);
         pan.add(htmlButton, BorderLayout.CENTER);
-        pan.add(risButton, BorderLayout.EAST);
-		fetchAbstracts.addItemListener(new ItemListener(){
-      		public void itemStateChanged (ItemEvent event) {
-				if (fetchAbstracts.isSelected()) {
-	        		risButton.setSelected(true);
-        			risButton.setEnabled(false);
-        			htmlButton.setEnabled(false);
-				} else {
-        			risButton.setEnabled(true);
-        			htmlButton.setEnabled(true);
-	        		htmlButton.setSelected(true);
-				}
-      		}
-    	});
+        pan.add(bibButton, BorderLayout.EAST);
+		
         return pan;
     }
 
     public boolean processQuery(String query, ImportInspector dialog, OutputPrinter status) {
         this.dialog = dialog;
         this.status = status;
-        this.terms = query;
+        terms = query;
         piv = 0;
         shouldContinue = true;
         parsed = 0;
         unparseable = 0;
-        String address = makeUrl(0);
+        int pageNumber = 1;
+        
+        searchUrl = makeUrl(pageNumber);//start at page 1
+        
         try {
-            URL url = new URL(address);
-
-            String page = getResults(url);
-
+        	URL url = new URL(searchUrl);
+        	String page = getResults(url);
+            
             if (page.indexOf("You have entered an invalid search") >= 0) {
                 status.showMessage(Globals.lang("You have entered an invalid search '%0'.",
                         terms),
@@ -127,45 +140,38 @@ public class IEEEXploreFetcher implements EntryFetcher {
                 return false;
             }
             
-            if (page.indexOf("No results") >= 0) {
+            if (page.indexOf("No results were found.") >= 0) {
                 status.showMessage(Globals.lang("No entries found for the search string '%0'",
                         terms),
                         Globals.lang("Search IEEEXplore"), JOptionPane.INFORMATION_MESSAGE);
                 return false;
             }
-            hits = getNumberOfHits(page, "Your search matched", hitsPattern);
+            
+            hits = getNumberOfHits(page, "display-status", hitsPattern);
 
-            int maxHits = getNumberOfHits(page, "A maximum of", maxHitsPattern);
 
-            fetchingAbstracts = fetchAbstracts.isSelected();
-            fetchingRIS = risButton.isSelected();
+            includeAbstract = absCheckBox.isSelected();
+            importBibtex = bibButton.isSelected();
             
-            if (hits > maxHits && !fetchingRIS) {
-            	status.showMessage(Globals.lang("Your search matched %0 entries. But "
-                           +"only %1 results are displayed.",
-                                    new String[] {String.valueOf(hits), String.valueOf(maxHits)}),
-                            Globals.lang("Search IEEEXplore"), JOptionPane.INFORMATION_MESSAGE);
-                hits = maxHits;
-            }
-            
-            if (fetchingRIS && hits > MAX_RIS_FETCH) {
+            if (hits > MAX_FETCH) {
             	status.showMessage(Globals.lang("%0 entries found. To reduce server load, "
-                       +"only %1 will be downloaded. Choose the HTML parser for more results.",
-                                new String[] {String.valueOf(hits), String.valueOf(MAX_RIS_FETCH)}),
+                       +"only %1 will be downloaded.",
+                                new String[] {String.valueOf(hits), String.valueOf(MAX_FETCH)}),
                         Globals.lang("Search IEEEXplore"), JOptionPane.INFORMATION_MESSAGE);
-           		hits = MAX_RIS_FETCH;
+           		hits = MAX_FETCH;
             }
 
             parse(dialog, page, 0, 1);
             int firstEntry = perPage;
-            while (shouldContinue && (firstEntry < hits)) {
-                address = makeUrl(firstEntry);
-                page = getResults(new URL(address));
+            while (shouldContinue && firstEntry < hits) {
+            	pageNumber++;
+                searchUrl = makeUrl(pageNumber);
+                page = getResults(new URL(searchUrl));
 
                 if (!shouldContinue)
                     break;
 
-                parse(dialog, page, 0, 1+firstEntry);
+                parse(dialog, page, 0, firstEntry + 1);
                 firstEntry += perPage;
 
             }
@@ -207,37 +213,61 @@ public class IEEEXploreFetcher implements EntryFetcher {
     }
 
     private String makeUrl(int startIndex) {
-        StringBuffer sb = new StringBuffer(startUrl).append(searchUrlPart);
+        StringBuffer sb = new StringBuffer(startUrl);
         sb.append(terms.replaceAll(" ", "+"));
         sb.append(endUrl);
         sb.append(String.valueOf(startIndex));
         return sb.toString();
     }
 
-    int piv = 0;
+    
 
     private void parse(ImportInspector dialog, String text, int startIndex, int firstEntryNumber) {
         piv = startIndex;
         int entryNumber = firstEntryNumber;
-        BibtexEntry entry;
-        while (((entry = parseNextEntry(text, piv, entryNumber)) != null)
-            && (shouldContinue)) {
-            if (entry.getField("title") != null) {
-                dialog.addEntry(entry);
-                dialog.setProgress(parsed+unparseable, hits);
-                parsed++;
-            }
-            entryNumber++;
+        
+        if (importBibtex) {
+			//TODO: Login
+        	ArrayList<String> idSelected = new ArrayList<String>();
+        	String id;
+		 	while ((id = parseNextEntryId(text, piv)) != null && shouldContinue) {
+	        	idSelected.add(id);
+	        	entryNumber++;
+	        }
+		 	try {
+		 		BibtexDatabase dbase = parseBibtexDatabase(idSelected, includeAbstract);
+		 		Collection<BibtexEntry> items = dbase.getEntries();
+		 		Iterator<BibtexEntry> iter = items.iterator();
+		 		while (iter.hasNext()) {
+		 			BibtexEntry entry = iter.next();
+		 			dialog.addEntry(cleanup(entry));
+	                dialog.setProgress(parsed + unparseable, hits);
+	                parsed++;
+		 		}
+		 	} catch (IOException e) {
+		 		e.printStackTrace();
+		 	}
+			//for
+        } else {
+        	BibtexEntry entry;
+	        while (((entry = parseNextEntry(text, piv)) != null) && shouldContinue) {
+	            if (entry.getField("title") != null) {
+	                dialog.addEntry(entry);
+	                dialog.setProgress(parsed + unparseable, hits);
+	                parsed++;
+	            }
+	            entryNumber++;
+	        }
         }
     }
 
-    private BibtexEntry parseEntryRis(String number, boolean abs, boolean isStandard)
-        throws IOException
-    {
+    private BibtexDatabase parseBibtexDatabase(List<String> id, boolean abs) throws IOException {
+    	if (id.isEmpty())
+    		return null;
         URL url;
         URLConnection conn;
         try {
-            url = new URL(risUrl);
+            url = new URL(importUrl);
             conn = url.openConnection();
         } catch (MalformedURLException e) {
             e.printStackTrace();
@@ -247,61 +277,52 @@ public class IEEEXploreFetcher implements EntryFetcher {
         conn.setDoOutput(true);
         conn.setRequestProperty("Content-Type",
                 "application/x-www-form-urlencoded");
+        conn.setRequestProperty("Referer", searchUrl);
         PrintWriter out = new PrintWriter(
                 conn.getOutputStream());
-		String cite = "cite";
-		if (abs == true)
-			cite = "cite_abs";
-        out.write("fileFormate=ris&dlSelect=" + cite + "&arnumber=" +
-                URLEncoder.encode("<arnumber>" + number + "</arnumber>", "UTF-8"));
+
+		String recordIds = "";
+		Iterator<String> iter = id.iterator();
+		while (iter.hasNext()) { 
+	    	recordIds += iter.next() + " ";
+		}
+		recordIds = recordIds.trim();
+		String citation = abs ? "citation-abstract" : "citation-only";
+		
+		String content = "recordIds=" + recordIds.replaceAll(" ", "%20") + "&fromPageName=&citations-format=" + citation + "&download-format=download-bibtex";
+		System.out.println(content);
+        out.write(content);
         out.flush();
         out.close();
-        InputStream inp = conn.getInputStream();
-        List<BibtexEntry> items = new RisImporter().importEntries(inp);
-        inp.close();
-        if (items.size() > 0) {
-            BibtexEntry entry = items.get(0);
-            if (isStandard == true) {
-            	entry.setType(BibtexEntryType.getType("standard"));
-            	entry.setField("organization", "IEEE");
-            	String stdNumber = entry.getField("journal");
-            	String[] parts = stdNumber.split("Std ");
-            	if (parts.length == 2) {
-            		stdNumber = parts[1];
-            		parts = stdNumber.split(", ");
-            		if (parts.length == 2) {
-            			stdNumber = parts[0];
-            			String date = parts[1];
-            			parts = date.split(" ");
-            			if (parts.length == 2) {
-            				entry.setField("month", parts[0]);
-            			}
-            		}
-            		entry.setField("number", stdNumber);
-            	}
-            	entry.clearField("journal");
-            	entry.clearField("booktitle");
-            	
-            	String title = entry.getField("title");
-            	entry.setField("title", title);
-            }
-            return entry;
-        } else
-            return null;
+
+        BufferedReader bufr = new BufferedReader(new InputStreamReader(conn.getInputStream()));
+        StringBuffer sb = new StringBuffer();
+        char[] buffer = new char[256];
+        while(true) {
+            int bytesRead = bufr.read(buffer);
+            if(bytesRead == -1) break;
+            for (int i=0; i<bytesRead; i++)
+                sb.append((char)buffer[i]);
+        }
+        System.out.println(sb.toString());
+        
+        ParserResult results = new BibtexParser(bufr).parse();
+        bufr.close();
+        return results.getDatabase();
     }
 
     private BibtexEntry cleanup(BibtexEntry entry) {
     	if (entry == null)
     		return null;
-    	if (entry.getType().getName() == "Standard")
-    		return entry;
+    	
     	// clean up author
     	String author = (String)entry.getField("author");
     	if (author != null) {
 	    	author = author.replaceAll("\\.", ". ");
 	    	author = author.replaceAll("  ", " ");
 	    	author = author.replaceAll("\\. -", ".-");
-	    	//author = author.replaceAll(",$", "");
+	    	author = author.replaceAll("; ", " and ");
+	    	author = author.replaceAll("[,;]$", "");
 	    	entry.setField("author", author);
     	}
     	// clean up month
@@ -333,321 +354,268 @@ public class IEEEXploreFetcher implements EntryFetcher {
 	    		}
 	    	}
 	    	//date = date.trim();
-	    	// hash or map TODO
 	    	//if (!date.isEmpty()) {
 	    	entry.setField("month", date);
 	    	//}
     	}
     	
     	// clean up pages
-    	String pages = entry.getField("pages");
-    	String [] pageNumbers = pages.split("--");
-    	if (pageNumbers.length == 2) {
-    		if (pageNumbers[0].equals(pageNumbers[1])) {// single page
-    			entry.setField("pages", pageNumbers[0]);
-    		}
+    	String field = "pages";
+    	String pages = entry.getField(field);
+    	if (pages != null) {
+	    	String [] pageNumbers = pages.split("-");
+	    	if (pageNumbers.length == 2) {
+	    		if (pageNumbers[0].equals(pageNumbers[1])) {// single page
+	    			entry.setField(field, pageNumbers[0]);
+	    		} else {
+	    			entry.setField(field, pages.replaceAll("-", "--"));
+	    		}
+	    	}
     	}
     	
     	// clean up publication field
     	BibtexEntryType type = entry.getType();
-    	String sourceField;
+    	String sourceField = "";
 		if (type.getName() == "Article") {
         	sourceField = "journal";
 			entry.clearField("booktitle");
-		} else {
+		} else if (type.getName() == "Inproceedings"){
             sourceField = "booktitle";
 		}
         String fullName = entry.getField(sourceField);
-        if (fullName == null) {
-        	System.err.println("Null publication");
-        	return null;
-        }
-        
-        if (type.getName() == "Article") {
-        	int ind = fullName.indexOf(": Accepted for future publication");
-			if (ind > 0) {
-				fullName = fullName.substring(0, ind);
-				entry.setField("year", "to be published");
-				entry.clearField("month");
-				entry.clearField("pages");
-			}
-	        String[] parts = fullName.split("[\\[\\]]"); //[see also...], [legacy...]
-	        fullName = parts[0];
-	        if (parts.length == 3) {
-				fullName += parts[2];
-			}
-        } else {
-        	fullName = fullName.replace("Conference Proceedings", "Proceedings").replace("Proceedings of", "Proceedings").replace("  ", ". ").replace("Proceedings.", "Proceedings");
-        }
-        
-        Matcher m1 = publicationPattern.matcher(fullName);
-		if (m1.find()) {
-			String prefix = m1.group(2).trim();
-			String postfix = m1.group(1).trim();
-			String abbrv = "";
-			String[] parts = prefix.split("\\. ", 2);
-			if (parts.length == 2) {
-				if (parts[0].matches(abbrvPattern)) {
-					prefix = parts[1];
-					abbrv = parts[0];
+        if (fullName != null) {
+	        if (type.getName() == "Article") {
+	        	int ind = fullName.indexOf(": Accepted for future publication");
+				if (ind > 0) {
+					fullName = fullName.substring(0, ind);
+					entry.setField("year", "to be published");
+					entry.clearField("month");
+					entry.clearField("pages");
+				}
+		        String[] parts = fullName.split("[\\[\\]]"); //[see also...], [legacy...]
+		        fullName = parts[0];
+		        if (parts.length == 3) {
+					fullName += parts[2];
+				}
+	        } else {
+	        	fullName = fullName.replace("Conference Proceedings", "Proceedings").
+	        			replace("Proceedings of", "Proceedings").replace("Proceedings.", "Proceedings");
+	        	fullName = fullName.replaceAll("International", "Int.");
+	        	fullName = fullName.replaceAll("Symposium", "Symp.");
+	        	fullName = fullName.replaceAll("Conference", "Conf.");
+	        	fullName = fullName.replaceAll(" on", " ").replace("  ", " ");
+	        }
+	        
+	        Matcher m1 = publicationPattern.matcher(fullName);
+			if (m1.find()) {
+				String prefix = m1.group(2).trim();
+				String postfix = m1.group(1).trim();
+				String abrv = "";
+				String[] parts = prefix.split("\\. ", 2);
+				if (parts.length == 2) {
+					if (parts[0].matches(abrvPattern)) {
+						prefix = parts[1];
+						abrv = parts[0];
+					} else {
+						prefix = parts[0];
+						abrv = parts[1];
+					}
+				}
+				if (prefix.matches(abrvPattern) == false) {
+					fullName = prefix + " " + postfix + " " + abrv;
+					fullName = fullName.trim();
 				} else {
-					prefix = parts[0];
-					abbrv = parts[1];
+					fullName = postfix + " " + prefix;
 				}
 			}
-			if (prefix.matches(abbrvPattern) == false) {
-				fullName = prefix + " " + postfix + " " + abbrv;
-				fullName = fullName.trim();
-			} else {
-				fullName = postfix + " " + prefix;
-			}
-		}
-		if (type.getName() == "Article") {
-			fullName = fullName.replace("- ", "-"); //IEE Proceedings-
-			
-			fullName = fullName.trim();
-			if (Globals.prefs.getBoolean("useIEEEAbrv")) {
-				String id = Globals.journalAbbrev.getAbbreviatedName(fullName, false);
-				if (id != null)
-					fullName = id;
-			}
-        } else {
-        	
-            Matcher m2 = proceedingPattern.matcher(fullName);
-			if (m2.find()) {
-				String prefix = m2.group(2); 
-				String postfix = m2.group(1).replaceAll("\\.$", "");
-				if (prefix.matches(abbrvPattern) == false) {
-					String abbrv = "";
+			if (type.getName() == "Article") {
+				fullName = fullName.replace("- ", "-"); //IEE Proceedings-
 				
-					String[] parts = postfix.split("\\. ", 2);
-					if (parts.length == 2) {
-						if (parts[0].matches(abbrvPattern)) {
-							postfix = parts[1];
-							abbrv = parts[0];
-						} else {
-							postfix = parts[0];
-							abbrv = parts[1];
+				fullName = fullName.trim();
+				if (Globals.prefs.getBoolean("useIEEEAbrv")) {
+					String id = Globals.journalAbbrev.getAbbreviatedName(fullName, false);
+					if (id != null)
+						fullName = id;
+				}
+	        }
+			if (type.getName() == "Inproceedings") {
+	            Matcher m2 = proceedingPattern.matcher(fullName);
+				if (m2.find()) {
+					String prefix = m2.group(2); 
+					String postfix = m2.group(1).replaceAll("\\.$", "");
+					if (prefix.matches(abrvPattern) == false) {
+						String abrv = "";
+					
+						String[] parts = postfix.split("\\. ", 2);
+						if (parts.length == 2) {
+							if (parts[0].matches(abrvPattern)) {
+								postfix = parts[1];
+								abrv = parts[0];
+							} else {
+								postfix = parts[0];
+								abrv = parts[1];
+							}
 						}
+						fullName = prefix.trim() + " " + postfix.trim() + " " + abrv;
+						
+					} else {
+						fullName = postfix.trim() + " " + prefix.trim();
 					}
-					fullName = prefix.trim() + " " + postfix.trim() + " " + abbrv;
 					
-				} else {
-					fullName = postfix.trim() + " " + prefix.trim();
 				}
 				
-			}
-			
-			fullName = fullName.trim();
-			
-			fullName = fullName.replaceAll("^[tT]he ", "").replaceAll("^\\d{4} ", "").replaceAll("[,.]$", "");
-			String year = entry.getField("year");
-			fullName = fullName.replaceAll(", " + year + "\\.?", "");
-			
-        	if (fullName.contains("Abstract") == false && fullName.contains("Summaries") == false && fullName.contains("Conference Record") == false)
-        		fullName = "Proc. " + fullName;
-			
+				fullName = fullName.trim();
+				
+				fullName = fullName.replaceAll("^[tT]he ", "").replaceAll("^\\d{4} ", "").replaceAll("[,.]$", "");
+				String year = entry.getField("year");
+				fullName = fullName.replaceAll(", " + year + "\\.?", "");
+				
+	        	if (fullName.contains("Abstract") == false && fullName.contains("Summaries") == false && fullName.contains("Conference Record") == false)
+	        		fullName = "Proc. " + fullName;
+	        }
+			entry.setField(sourceField, fullName);
         }
-		
-		entry.setField(sourceField, fullName);
 		return entry;
     }
 
-    private BibtexEntry parseNextEntry(String allText, int startIndex, int entryNumber)
-    {
+    private String parseNextEntryId(String allText, int startIndex) {
+	    int index = allText.indexOf("<div class=\"select", startIndex);
+	    int endIndex = allText.indexOf("</div>", index);
+	    
+	    if (index >= 0 && endIndex > 0) {
+	    	String text = allText.substring(index, endIndex);
+	    	endIndex += 6;
+	    	piv = endIndex;
+	    	//parse id
+	    	Matcher idMatcher = idPattern.matcher(text);
+	    	//add id into a vector
+	    	if (idMatcher.find()) {
+	    		return idMatcher.group(1);
+	    	}
+	    }
+	    return null;
+    }
+    
+    private BibtexEntry parseNextEntry(String allText, int startIndex) {
         BibtexEntry entry = null;
-        String toFind = new StringBuffer().append("<div align=\"left\"><strong>")
-                .append(entryNumber).append(".</strong></div>").toString();
-        int index = allText.indexOf(toFind, startIndex);
-        int endIndex = allText.indexOf("</table>", index+1);
-        if (endIndex < 0)
-            endIndex = allText.length();
-
-        if (index >= 0) {
-            piv = index+1;
-            String text = allText.substring(index, endIndex);
+        
+     	int index = allText.indexOf("<div class=\"detail", piv);
+        int endIndex = allText.indexOf("</div>", index);
+
+        if (index >= 0 && endIndex > 0) {
+        	endIndex += 6;
+        	piv = endIndex;
+        	String text = allText.substring(index, endIndex);
+            
             BibtexEntryType type = null;
             String sourceField = null;
-            if (text.indexOf("JNL") >= 0) {
-                type = BibtexEntryType.getType("article");
-                sourceField = "journal";
-            } else if (text.indexOf("CNF") >= 0){
-                type = BibtexEntryType.getType("inproceedings");
-                sourceField = "booktitle";
-            } else if (text.indexOf("STD") >= 0) {
-                type = BibtexEntryType.getType("standard");
-            } else {
-                System.err.println("Type detection failed.");
-            }
-            if (fetchingRIS == true) {
-				Matcher number =
-					ieeeArticleNumberPattern.matcher(text);
-				if (number.find()) {
-					try {
-						entry = parseEntryRis(number.group(1), fetchingAbstracts, type.getName() == "Standard");
-					} catch (IOException e) {
-						e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
-					}
-				}
-	            if (entry != null) { // fetch successful
-	                // we just need to add DOI, it is not included in RIS.
-	                int pgInd = text.indexOf("Digital Object Identifier ");
-	                if (pgInd >= 0) {
-	                    int fieldEnd = text.indexOf("<br>", pgInd);
-	                    if (fieldEnd >= 0) {
-	                        entry.setField("doi",
-	                            text.substring(pgInd+26, fieldEnd).trim());
-	                    }
-	                }
-	                return cleanup(entry);
-	            }
+            
+            String typeName = "";
+            Matcher typeMatcher = typePattern.matcher(text);
+            if (typeMatcher.find()) {
+	            typeName = typeMatcher.group(1);
+	            if (typeName.equalsIgnoreCase("IEEE Journals") || typeName.equalsIgnoreCase("IEEE Early Access") ||
+	            		typeName.equalsIgnoreCase("IET Journals") || typeName.equalsIgnoreCase("AIP Journals") ||
+					   	typeName.equalsIgnoreCase("AVS Journals") || typeName.equalsIgnoreCase("IBM Journals")) {
+	                type = BibtexEntryType.getType("article");
+	                sourceField = "journal";
+	            } else if (typeName.equalsIgnoreCase("IEEE Conferences") || typeName.equalsIgnoreCase("IET Conferences")) {
+	                type = BibtexEntryType.getType("inproceedings");
+	                sourceField = "booktitle";
+		        } else if (typeName.equalsIgnoreCase("IEEE Standards")) {
+	                type = BibtexEntryType.getType("standard");
+	                sourceField = "number";
+		        } else if (typeName.equalsIgnoreCase("IEEE Educational Courses")) {
+		        	type = BibtexEntryType.getType("Electronic");
+		        	sourceField = "note";
+		        } else if (typeName.equalsIgnoreCase("IEEE Book Chapter")) {
+		        	type = BibtexEntryType.getType("inCollection");
+		        	sourceField = "booktitle";
+		        }
             }
             
-            index = 0;
+            if (type == null) {
+            	type = BibtexEntryType.getType("misc");
+            	sourceField = "note";
+                System.err.println("Type detection failed. Use MISC instead.");
+                unparseable++;
+                System.err.println(text);
+            }
+        
             entry = new BibtexEntry(Util.createNeutralId(), type);
-            if (type.getName() == "Standard") {
-            	Matcher mstd = stdEntryPattern.matcher(text);
-            	if (mstd.find()) {
-            		entry.setField("title", convertHTMLChars(mstd.group(1)));
-            		entry.setField("year", convertHTMLChars(mstd.group(2)));
-            		entry.setField("organization", "IEEE");
-            		return entry;
-            	}
-            	System.err.println("Standard entry parsing failed.");
+            
+            if (typeName.equalsIgnoreCase("IEEE Standards")) {
+            	entry.setField("organization", "IEEE");
             }
-            // Try to set doi:
-            int pgInd = text.indexOf("Digital Object Identifier ");
-            if (pgInd >= 0) {
-                int fieldEnd = text.indexOf("<br>", pgInd);
-                if (fieldEnd >= 0) {
-                    entry.setField("doi", text.substring(pgInd + 26, fieldEnd).trim());
-                }
-                text = text.substring(0, pgInd);
+            
+            if (typeName.equalsIgnoreCase("IEEE Book Chapter")) {
+            	entry.setField("publisher", "IEEE");
             }
-            Matcher m = paperEntryPattern.matcher(text);
-            String tmp;
-            String rest = "";
-            if (m.find()) {
-                // Title:
-                entry.setField("title", convertHTMLChars(m.group(1)));
-                // Author:
-                tmp = convertHTMLChars(m.group(2));
-                if (tmp.charAt(tmp.length()-1) == ';')
-                    tmp= tmp.substring(0, tmp.length()-1);
-                entry.setField("author", tmp.replaceAll(",;", ";").replaceAll("; ", " and ").replaceAll(",$", ""));
-                // Publication:
-                tmp = m.group(3);
-				String fullName = convertHTMLChars(tmp);
-				entry.setField(sourceField, fullName);
-				// Volume, Issue, Part, Month, Year, Pages
-				String misc = m.group(4);
-				for (int i = 5; i < 8; i++) {
-					tmp = m.group(i);
-					if (tmp.startsWith("Page") == false)
-						misc += tmp; 
-					else
-						break;
-				}
-                Matcher ms1 = volumePattern.matcher(misc);
-                if (ms1.find()) {
-                	// Volume:
-                	entry.setField("volume", convertHTMLChars(ms1.group(1)));
-                	misc = ms1.group(2);
-                }
-                
-                Matcher ms2 = numberPattern.matcher(misc);
-                if (ms2.find()) {
-                	// Number:
-                	entry.setField("number", convertHTMLChars(ms2.group(1)));
-                	misc = ms2.group(2);
-                }
-                //System.out.println(misc);
-                Matcher ms3 = partPattern.matcher(misc);
-                if (ms3.find()) {
-                	entry.setField("part", ms3.group(1));
-                	misc = ms3.group(2);
-                }
-                Matcher ms4 = datePattern.matcher(misc);
-                if (ms4.find()) {
-                	// Month:
-                    String month = convertHTMLChars(ms4.group(1)).replaceAll("-", "--");
-                    // Year
-                    String year = ms4.group(2);
-        	    	if (year.length() > 0) {
-        		    	month = month.replaceAll(year, "");
-        		    	entry.setField("year", year);
-        	    	}
-        	    	entry.setField("month", month.trim());
-                } else {
-                  	Matcher ms5 = datePattern.matcher(fullName);
-                	if (ms5.find()) {
-                		entry.setField("year", ms5.group(2));
-                	}
-                }
-            } else {
-                System.err.println("---no structure match---");
-                System.err.println(text);
-                unparseable++;
+            
+            if (typeName.equalsIgnoreCase("IEEE Early Access")) {
+            	entry.setField("note", "Early Access");
             }
-            if (entry == null) {
-            	System.err.println("Parse failed");
-                System.err.println(text);
-            	return null;
+            
+            Set<String> fields = fieldPatterns.keySet();
+            for (String field: fields) {
+            	Matcher fieldMatcher = Pattern.compile(fieldPatterns.get(field)).matcher(text);
+            	if (fieldMatcher.find()) {
+            		entry.setField(field, htmlConverter.format(fieldMatcher.group(1)));
+            		if (field.equals("title") && fieldMatcher.find()) {
+            			String sec_title = htmlConverter.format(fieldMatcher.group(1));
+            			if (entry.getType() == BibtexEntryType.getStandardType("standard")) {
+            				sec_title = sec_title.replaceAll("IEEE Std ", "");
+            			}
+            			entry.setField(sourceField, sec_title);
+            			
+            		}
+            		if (field.equals("pages") && fieldMatcher.groupCount() == 2) {
+            			entry.setField(field, fieldMatcher.group(1) + "-" + fieldMatcher.group(2));
+            		}
+            	}
             }
-            pgInd = text.indexOf("Page(s):");
-            if (pgInd >= 0) {
-                // Try to set pages:
-                rest = text.substring(pgInd+8);
-                pgInd = rest.indexOf("<br>");
-                if (pgInd >= 0) {
-                    tmp = rest.substring(0, pgInd);
-                	pgInd = tmp.indexOf("vol");
-	                if (pgInd >= 0)
-						tmp = tmp.substring(0,pgInd);
-                	pgInd = tmp.indexOf("Vol");
-	                if (pgInd >= 0)
-						tmp = tmp.substring(0,pgInd);
-                    entry.setField("pages", tmp.replaceAll(" - ","--").replaceAll("\\s+", ""));
-                }
-                
+            if (entry.getType() == BibtexEntryType.getStandardType("inproceedings") && entry.getField("author").equals("")) {
+            	entry.setType(BibtexEntryType.getStandardType("proceedings"));
             }
+        
+            if (includeAbstract) {
+            	index = allText.indexOf("<div class=\"abstract RevealContent", piv);
+	            if (index >= 0) {
+	            	endIndex = allText.indexOf("</div>", index) + 6;
+		            piv = endIndex;
+		            
+	            	text = allText.substring(index, endIndex);
+	            	Matcher absMatcher = absPattern.matcher(text);
+	            	if (absMatcher.find()) {
+	            		entry.setField("abstract", absMatcher.group(1));
+	            	}
+	            }
+            }
+        }
+        
+        if (entry == null) {
+        	return null;
+        } else {
             return cleanup(entry);
         }
-        return null;
-    }
-
-    /**
-     * This method must convert HTML style char sequences to normal characters.
-     * @param text The text to handle.
-     * @return The converted text.
-     */
-    private String convertHTMLChars(String text) {
-
-        return htmlConverter.format(text);
     }
 
-
     /**
      * Find out how many hits were found.
      * @param page
      */
     private int getNumberOfHits(String page, String marker, Pattern pattern) throws IOException {
-        
     	int ind = page.indexOf(marker);
-        if (ind < 0)
+        if (ind < 0) {
+        	System.out.println(page);
             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);
-        if (!m.find())
-            return 0;
-        if (m.groupCount() >= 1) {
-            try {
-                return Integer.parseInt(m.group(1));
-            } catch (NumberFormatException ex) {
-                throw new IOException(Globals.lang("Could not parse number of hits"));
-            }
         }
-        throw new IOException(Globals.lang("Could not parse number of hits"));
+        String substring = page.substring(ind, page.length());
+        Matcher m = pattern.matcher(substring);
+        if (m.find())
+            return Integer.parseInt(m.group(1));
+        else
+        	throw new IOException(Globals.lang("Could not parse number of hits"));
     }
 
     /**
@@ -688,25 +656,4 @@ public class IEEEXploreFetcher implements EntryFetcher {
         }
         return sb.toString();
     }
-
-    /**
-     * Download and parse the web page containing an entry's Abstract:
-     * @param link
-     * @return
-     * @throws IOException
-     */
-    public String fetchAbstract(String link) throws IOException {
-        URL url = new URL(link);
-        String page = getResults(url);
-
-        String marker = "Abstract</span><br>";
-        int index = page.indexOf(marker);
-        int endIndex = page.indexOf("</td>", index + 1);
-        if ((index >= 0) && (endIndex > index)) {
-            return new String(page.substring(index + marker.length(), endIndex).trim());
-        }
-
-        return null;
-    }
-
 }
diff --git a/src/java/net/sf/jabref/imports/OAI2Fetcher.java b/src/java/net/sf/jabref/imports/OAI2Fetcher.java
index 3fa0e49..230123c 100644
--- a/src/java/net/sf/jabref/imports/OAI2Fetcher.java
+++ b/src/java/net/sf/jabref/imports/OAI2Fetcher.java
@@ -32,7 +32,7 @@ import org.xml.sax.helpers.DefaultHandler;
  * @author Ulrich Stärk
  * @author Christian Kopf
  * 
- * @version $Revision: 2552 $ ($Date: 2007-12-04 22:58:54 +0100 (Tue, 04 Dec 2007) $)
+ * @version $Revision: 3203 $ ($Date: 2010-03-04 19:05:17 +0100 (Thu, 04 Mar 2010) $)
  * 
  */
 public class OAI2Fetcher implements EntryFetcher {
diff --git a/src/java/net/sf/jabref/sql/DBConnectDialog.java b/src/java/net/sf/jabref/sql/DBConnectDialog.java
index f4a2459..b76bac0 100644
--- a/src/java/net/sf/jabref/sql/DBConnectDialog.java
+++ b/src/java/net/sf/jabref/sql/DBConnectDialog.java
@@ -230,7 +230,7 @@ public class DBConnectDialog extends JDialog {
                       + ", and " + errors[2] + ".";
                 break;
             default:
-                errMsg = errMsg + errors.toString() + ".";
+
         }
 
         return errMsg;
diff --git a/src/resource/JabRef_da.properties b/src/resource/JabRef_da.properties
index 1eb0638..6a4fa32 100644
--- a/src/resource/JabRef_da.properties
+++ b/src/resource/JabRef_da.properties
@@ -737,7 +737,6 @@ Paste_from_clipboard=Inds\u00E6t_fra_udklipsholder
 Pasted=Indsat
 
 Path_to_%0_not_defined=Sti_til_%0_ikke_defineret
-Path_to_HTML_viewer=Sti_til_HTML-l\u00E6ser
 Path_to_LatexEditor_(LEd.exe)=Sti_til_LatexEditor_(LEd.exe)
 Path_to_LyX_pipe=Sti_til_LyX-pipe
 
@@ -1087,7 +1086,6 @@ Use_regular_expressions=Brug_regul\u00E6rudtryk
 Use_the_following_delimiter_character(s)=Brug_f\u00F8lgende_separatortegn
 User_does_not_have_sufficient_privileges.\n=Brugeren_har_Ikke_f\u00F8rn\u00F8dne_rettigheder.\n
 Username_\:=Brugernavn:
-Uses_default_application=Bruger_standardprogram
 Value_cleared_externally=V\u00E6rdi_slettet_eksternt
 Value_set_externally=V\u00E6rdi_sat_eksternt
 verify_that_LyX_is_running_and_that_the_lyxpipe_is_valid=kontroller_at_LyX_k\u00F8rer,_og_at_den_angivne_lyxpipe_stemmer
@@ -1185,7 +1183,6 @@ Search_JSTOR=S\u00F8g_i_JSTOR
 Attempting_SQL_import...=Fors\u00F8ger_SQL-import...
 BibO_RDF=BibO_RDF
 HTML_parser=HTML-fortolker
-RIS_importer=RIS-importfilter
 Move_the_keyboard_focus_to_the_entry_table=Flyt_tastatur-fokus_til_hovedtabellen
 MIME_type=MIME-type
 
@@ -1193,7 +1190,6 @@ This_feature_lets_new_files_be_opened_or_imported_into_an_already_running_instan
 Note_that_these_settings_are_used_for_the_legacy_<b>pdf</b>_and_<b>ps</b>_fields_only.<br>For_most_users,_setting_the_<b>Main_file_directory</b>_above_should_be_sufficient.=Bem\u00E6rk_at_disse_indstillinger_kun_bruges_til_de_for\u00E6ldede_<b>pdf</b>-_og_<b>ps</b>-felter.<br>Det_skulle_v\u00E6re_tilstr\u00E6kkeligt_for_de_fleste_at_benytte_<b>Hovedbibliotek</b>-indstillingen_ovenfor.
 Legacy_file_fields=For\u00E6ldede_fil-felter
 
-%0_entries_found._To_reduce_server_load,_only_%1_will_be_downloaded.=%0_poster_fundet._Kun_%1_vil_blive_hentet_for_at_reducere_server-belastningen.
 This_makes_JabRef_look_up_each_%0_extension_and_check_if_the_file_exists._If_not,_you_will_be_given_options<BR>to_resolve_the_problem.=Dette_f\u00E5r_JabRef_til_at_sl\u00E5_hver_%0-endelse_op_og_tjekke,_om_filen_eksisterer._Hvis_ikke_vil_du_f\u00E5_mulighed_for_at<br>l\u00F8se_problemet.
 
 Run_Fetcher,_e.g._"--fetch=Medline\:cancer"=K\u00F8r_henter,_dvs._"--fetch\=Medline\:cancer"
@@ -1331,7 +1327,10 @@ search_expression\:_<b>=s\u00F8ge-udtryk:_<b>
 Disable_file_renaming_in_non-native_file_dialog=Deaktiver_omd\u00F8bning_af_filer_i_fil-dialogboks
 File_dialog=Fil-dialogboks
 No_entries_found._It_looks_like_you_do_not_have_access_to_search_JStor.=Ingen_poster_fundet._Det_ser_ud_til,_at_du_ikke_har_adgang_til_at_s\u00F8ge_i_JStor.
+Search_ScienceDirect=S\u00F8g_i_ScienceDirect
+Error_while_fetching_from_ScienceDirect=Fejl_under_hentning_fra_ScienceDirect
 
-Reset=
-Search_ScienceDirect=
-Error_while_fetching_from_ScienceDirect=
\ No newline at end of file
+Error_initializing_custom_export_format_from_string_'%0'=
+
+%0_entries_found._To_reduce_server_load,_only_%1_will_be_downloaded._It_will_be_very_slow,_in_order_to_make_ACM_happy.=
+BibTeX_importer=
diff --git a/src/resource/JabRef_de.properties b/src/resource/JabRef_de.properties
index 9193b20..afffccf 100644
--- a/src/resource/JabRef_de.properties
+++ b/src/resource/JabRef_de.properties
@@ -1284,8 +1284,6 @@ Paste_from_clipboard=Aus_der_Zwischenablage_einf\u00FCgen
 Pasted=Eingef\u00FCgt
 Path_to_%0_not_defined=Pfad_zu_%0_nicht_definiert
 
-Path_to_HTML_viewer=Pfad_zum_HTML-Browser
-
 Path_to_LatexEditor_(LEd.exe)=Pfad_zu_LatexEditor_(LEd.exe)
 
 Path_to_LyX_pipe=Pfad_zur_LyX-pipe
@@ -1892,8 +1890,6 @@ Use_the_following_delimiter_character(s)=Folgende(s)_Trennzeichen_benutzen
 User_does_not_have_sufficient_privileges.\n=Der_Benutzer_hat_keine_ausreichenden_Rechte.\n
 Username_\:=Benutzername:
 
-Uses_default_application=Benutze_Standardprogramm
-
 Value_cleared_externally=Wert_extern_gel\u00F6scht
 
 Value_set_externally=Wert_extern_gesetzt
@@ -2018,7 +2014,6 @@ Search_JSTOR=JSTOR_durchsuchen
 Attempting_SQL_import...=Versuche,_SQL_zu_importieren...
 BibO_RDF=BibO_RDF
 HTML_parser=HTML-Parser
-RIS_importer=RIS-Importfilter
 
 Move_the_keyboard_focus_to_the_entry_table=Tastatur-Fokus_auf_die_Tabelle_setzen
 MIME_type=MIME-Typ
@@ -2027,7 +2022,6 @@ This_feature_lets_new_files_be_opened_or_imported_into_an_already_running_instan
 Note_that_these_settings_are_used_for_the_legacy_<b>pdf</b>_and_<b>ps</b>_fields_only.<br>For_most_users,_setting_the_<b>Main_file_directory</b>_above_should_be_sufficient.=Beachten_Sie,_dass_diese_Einstellungen_nur_f\u00FCr_die_obsoleten_<b>pdf</b>-_und_<b>ps</b>-Felder_genutzt_werden.<BR>F\u00FCr_die_meisten_Benutzer_reicht_es_aus,_den_<b>Standard-Verzeichnis_f\u00FCr_Dateien</b>_zu_setzen.
 Legacy_file_fields=Obsolete_Datei-Felder
 
-%0_entries_found._To_reduce_server_load,_only_%1_will_be_downloaded.=%0_Eintr\u00E4ge_gefunden._Um_die_Serverlast_zu_mindern,_werden_nur_%1_heruntergeladen.
 This_makes_JabRef_look_up_each_%0_extension_and_check_if_the_file_exists._If_not,_you_will_be_given_options<BR>to_resolve_the_problem.=JabRef_sucht_nach_jeder_%0-Dateiendung_und_\u00FCberpr\u00FCft,_ob_die_Datei_existiert.<br>Falls_nicht,_erhalten_Sie_Optionen,_um_das_Problem_zu_l\u00F6sen.
 
 Run_Fetcher,_e.g._"--fetch=Medline\:cancer"=Recherche_starten,_z.B._"--fetch=Medline\:cancer"
@@ -2169,3 +2163,8 @@ No_entries_found._It_looks_like_you_do_not_have_access_to_search_JStor.=Keine_Ei
 
 Search_ScienceDirect=ScienceDirect_durchsuchen
 Error_while_fetching_from_ScienceDirect=Fehler_beim_Abrufen_von_ScienceDirect
+
+Error_initializing_custom_export_format_from_string_'%0'=Fehler_beim_Initialisieren_des_externen_Export-Format_aus_der_Zeichenkette_'%0'
+
+%0_entries_found._To_reduce_server_load,_only_%1_will_be_downloaded._It_will_be_very_slow,_in_order_to_make_ACM_happy.=%0_Eintr\u00e4ge_gefunden._Um_die_Serverlast_zu_verringern,_werden_nur_%1_Datens\u00e4tze_heruntergeladen._Es_wird_sehr_langsam_sein,_um_keine_Probleme_mit_ACM_zu_bekommen.
+BibTeX_importer=BibTeX-Import-Filter
diff --git a/src/resource/JabRef_en.properties b/src/resource/JabRef_en.properties
index d395f0a..09f2f3a 100644
--- a/src/resource/JabRef_en.properties
+++ b/src/resource/JabRef_en.properties
@@ -1264,8 +1264,6 @@ Pasted=Pasted
 
 Path_to_%0_not_defined=Path_to_%0_not_defined
 
-Path_to_HTML_viewer=Path_to_HTML_viewer
-
 Path_to_LatexEditor_(LEd.exe)=Path_to_LatexEditor_(LEd.exe)
 
 Path_to_LyX_pipe=Path_to_LyX_pipe
@@ -1870,8 +1868,6 @@ Use_the_following_delimiter_character(s)=Use_the_following_delimiter_character(s
 User_does_not_have_sufficient_privileges.\n=User_does_not_have_sufficient_privileges.\n
 Username_\:=Username:
 
-Uses_default_application=Uses_default_application
-
 Value_cleared_externally=Value_cleared_externally
 
 Value_set_externally=Value_set_externally
@@ -1998,7 +1994,6 @@ Search_JSTOR=Search_JSTOR
 Attempting_SQL_import...=Attempting_SQL_import...
 BibO_RDF=BibO_RDF
 HTML_parser=HTML_parser
-RIS_importer=RIS_importer
 
 Move_the_keyboard_focus_to_the_entry_table=Move_the_keyboard_focus_to_the_entry_table
 MIME_type=MIME_type
@@ -2007,7 +2002,8 @@ This_feature_lets_new_files_be_opened_or_imported_into_an_already_running_instan
 Note_that_these_settings_are_used_for_the_legacy_<b>pdf</b>_and_<b>ps</b>_fields_only.<br>For_most_users,_setting_the_<b>Main_file_directory</b>_above_should_be_sufficient.=Note_that_these_settings_are_used_for_the_legacy_<b>pdf</b>_and_<b>ps</b>_fields_only.<br>For_most_users,_setting_the_<b>Main_file_directory</b>_above_should_be_sufficient.
 Legacy_file_fields=Legacy_file_fields
 
-%0_entries_found._To_reduce_server_load,_only_%1_will_be_downloaded.=%0_entries_found._To_reduce_server_load,_only_%1_will_be_downloaded.
+%0_entries_found._To_reduce_server_load,_only_%1_will_be_downloaded._It_will_be_very_slow,_in_order_to_make_ACM_happy.=%0_entries_found._To_reduce_server_load,_only_%1_will_be_downloaded._It_will_be_very_slow,_in_order_to_make_ACM_happy.
+
 This_makes_JabRef_look_up_each_%0_extension_and_check_if_the_file_exists._If_not,_you_will_be_given_options<BR>to_resolve_the_problem.=This_makes_JabRef_look_up_each_%0_extension_and_check_if_the_file_exists._If_not,_you_will_be_given_options<BR>to_resolve_the_problem.
 Run_Fetcher,_e.g._"--fetch=Medline\:cancer"=Run_Fetcher,_e.g._"--fetch=Medline\:cancer"
 Override_legacy_file_fields=Override_legacy_file_fields
@@ -2152,4 +2148,7 @@ File_dialog=File_dialog
 No_entries_found._It_looks_like_you_do_not_have_access_to_search_JStor.=No_entries_found._It_looks_like_you_do_not_have_access_to_search_JStor.
 
 Search_ScienceDirect=Search_ScienceDirect
-Error_while_fetching_from_ScienceDirect=Error_while_fetching_from_ScienceDirect
\ No newline at end of file
+Error_while_fetching_from_ScienceDirect=Error_while_fetching_from_ScienceDirect
+
+Error_initializing_custom_export_format_from_string_'%0'=Error_initializing_custom_export_format_from_string_'%0'
+BibTeX_importer=BibTeX_importer
diff --git a/src/resource/JabRef_fr.properties b/src/resource/JabRef_fr.properties
index 75d5682..1214acd 100644
--- a/src/resource/JabRef_fr.properties
+++ b/src/resource/JabRef_fr.properties
@@ -8,7 +8,8 @@ _on_entry_number_=_pour_le_num\u00E9ro_d'entr\u00E9e_
 %0_doesn't_contain_the_term_<b>%1</b>=%0_ne_contient_pas_le_terme_<b>%1</b>
 %0_doesn't_match_the_Regular_Expression_<b>%1</b>=%0_ne_correspond_pas_\u00E0_l'expression_r\u00E9guli\u00E8re_<b>%1</b>
 %0_doesn't_match_the_term_<b>%1</b>=%0_ne_correspond_pas_au_terme_<b>%1</b>
-%0_entries_found._To_reduce_server_load,_only_%1_will_be_downloaded.=%0_entr\u00E9es_trouv\u00E9es._Pour_r\u00E9duire_la_charge_du_serveur,_seulement_%1_seront_t\u00E9l\u00E9charg\u00E9es.
+%0_entries_found._To_reduce_server_load,_only_%1_will_be_downloaded._It_will_be_very_slow,_in_order_to_make_ACM_happy.=%0_entr\u00E9es_trouv\u00E9es._Pour_r\u00E9duire_la_charge_du_serveur,_seulement_%1_seront_t\u00E9l\u00E9charg\u00E9es._Cela_sera_tr\u00E8s_lent_pour_ne_pas_poser_de_probl\u00E8me_avec_ACM.
+
 %0_export_successful=%0_:_Exportation_r\u00E9ussie
 %0_field_set=D\u00E9finition_du_champ_%0
 %0_matches_the_Regular_Expression_<b>%1</b>=%0_correspond_\u00E0_l'expression_r\u00E9guli\u00E8re_<b>%1</b>
@@ -733,7 +734,6 @@ Paste_from_clipboard=Coller_depuis_le_presse-papier
 Paste=Coller
 Pasted=Coll\u00E9
 Path_to_%0_not_defined=Chemin_vers_%0_non_d\u00E9fini
-Path_to_HTML_viewer=Chemin_de_l'afficheur_HTML_
 Path_to_LatexEditor_(LEd.exe)=Chemin_vers_LatexEditor_(LEd.exe)_
 Path_to_LyX_pipe=Chemin_du_canal_de_transmission_LyX_
 Path_to_Vim=Chemin_de_Vim_
@@ -846,7 +846,6 @@ Revert_to_original_source=R\u00E9tablir_le_contenu_initial
 Review_changes=Revoir_les_changements
 Review=V\u00E9rification
 Right=Droite
-RIS_importer=Filtres_d'importation_RIS
 RIS=RIS
 root=root
 Run_Fetcher,_e.g._"--fetch\=Medline\:cancer"=Lance_une_recherche,_par._ex._"--fetch=Medline\:cancer"
@@ -1094,7 +1093,6 @@ Use_regular_expressions=Utiliser_les_expressions_r\u00E9guli\u00E8res
 Use_the_following_delimiter_character(s)=Utiliser_le(s)_caract\u00E8re(s)_de_s\u00E9paration_suivant(s)
 User_does_not_have_sufficient_privileges.\n=L'utilisateur_n'a_pas_assez_de_privil\u00E8ges.\n
 Username_\:=Nom_d'utilisateur_:
-Uses_default_application=Utilise_l'application_par_d\u00E9faut
 Value_cleared_externally=Valeur_supprim\u00E9e_externalement
 Value_set_externally=Valeur_param\u00E9tr\u00E9e_externalement_
 verify_that_LyX_is_running_and_that_the_lyxpipe_is_valid=v\u00E9rifier_que_LyX_tourne_et_que_le_canal_de_transmission_LyX_est_valide
@@ -1265,3 +1263,6 @@ No_entries_found._It_looks_like_you_do_not_have_access_to_search_JStor.=Pas_d'en
 
 Search_ScienceDirect=Recherche_ScienceDirect
 Error_while_fetching_from_ScienceDirect=Erreur_lors_de_la_recherche_ScienceDirect_
+
+Error_initializing_custom_export_format_from_string_'%0'=Erreur_lors_de_l'initialisation_du_format_d'exportation_personnalis\u00E9_\u00E0_partir_de_la_cha\u00EEne_'%0'
+BibTeX_importer=Filtres_d'importation_BibTeX
diff --git a/src/resource/JabRef_it.properties b/src/resource/JabRef_it.properties
index 3dce2e8..b1b93a6 100644
--- a/src/resource/JabRef_it.properties
+++ b/src/resource/JabRef_it.properties
@@ -746,7 +746,6 @@ Paste_from_clipboard=Incolla_dagli_appunti
 Pasted=Incollato
 
 Path_to_%0_not_defined=Percorso_per_%0_non_definito
-Path_to_HTML_viewer=Percorso_per_il_visualizzatore_HTML
 
 Path_to_LatexEditor_(LEd.exe)=Percorso_per_LatexEditor_(LEd.exe)
 Path_to_LyX_pipe=Percorso_per_la_pipe_LyX
@@ -1102,7 +1101,6 @@ Use_regular_expressions=Utilizza_espressioni_regolari
 Use_the_following_delimiter_character(s)=Utilizza_i_caratteri_di_delimitazione_seguenti
 User_does_not_have_sufficient_privileges.\n=L'utente_non_ha_privilegi_sufficienti.\n
 Username_\:=Username:
-Uses_default_application=Usa_l'applicazione_predefinita
 Value_cleared_externally=Valore_cancellato_esternamente
 Value_set_externally=Valore_impostato_esternamente
 verify_that_LyX_is_running_and_that_the_lyxpipe_is_valid=verifica_che_LyX_sia_in_esecuzione_e_che_la_lyxpipe_sia_valida
@@ -1203,7 +1201,6 @@ Search_JSTOR=Ricerca_JSTOR
 Attempting_SQL_import...=Tentativo_di_importazione_SQL...
 BibO_RDF=BibO_RDF
 HTML_parser=Parser_HTML
-RIS_importer=Filtro_di_importazione_RIS
 
 Move_the_keyboard_focus_to_the_entry_table=Sposta_il_cursore_nella_tabella_delle_voci
 MIME_type=Tipo_MIME
@@ -1212,7 +1209,6 @@ This_feature_lets_new_files_be_opened_or_imported_into_an_already_running_instan
 Note_that_these_settings_are_used_for_the_legacy_<b>pdf</b>_and_<b>ps</b>_fields_only.<br>For_most_users,_setting_the_<b>Main_file_directory</b>_above_should_be_sufficient.=Si_noti_che_queste_impostazioni_sono_usate_solo_per_i_campi_obsoleti_<B>pdf</B>_e_<B>ps</B>.<BR>Per_la_generalit\u00E0_degli_utenti,_l'impostazione_del_parametro_<B>Cartella_file_principale</B>_dovrebbe_essere_sufficiente.
 Legacy_file_fields=Campi_file_obsoleti
 
-%0_entries_found._To_reduce_server_load,_only_%1_will_be_downloaded.=%0_voci_trovate._Per_ridurre_il_carico_sul_server_verranno_scaricate_solo_%1_voci.
 This_makes_JabRef_look_up_each_%0_extension_and_check_if_the_file_exists._If_not,_you_will_be_given_options<BR>to_resolve_the_problem.=Per_ciascuna_delle_%0_estensioni,_JabRef_verificher\u00E0_l'esistenza_del_file.<BR>In_caso_negativo_proporr\u00E0_delle_opzioni_per_la_risoluzione_del_problema.
 ## Check if the = sign must be escaped. In both sides?
 Run_Fetcher,_e.g._"--fetch=Medline\:cancer"=Lanciare_una_ricerca,_es._"--fetch=Medline\:cancer"
@@ -1354,3 +1350,8 @@ No_entries_found._It_looks_like_you_do_not_have_access_to_search_JStor.=
 
 Search_ScienceDirect=
 Error_while_fetching_from_ScienceDirect=
+
+Error_initializing_custom_export_format_from_string_'%0'=
+
+%0_entries_found._To_reduce_server_load,_only_%1_will_be_downloaded._It_will_be_very_slow,_in_order_to_make_ACM_happy.=
+BibTeX_importer=
diff --git a/src/resource/JabRef_nl.properties b/src/resource/JabRef_nl.properties
index e88b64c..b9e0741 100644
--- a/src/resource/JabRef_nl.properties
+++ b/src/resource/JabRef_nl.properties
@@ -1284,8 +1284,6 @@ Pasted=Geplakt
 
 Path_to_%0_not_defined=
 
-Path_to_HTML_viewer=Pad_naar_HTML-viewer
-
 Path_to_LatexEditor_(LEd.exe)=
 
 Path_to_LyX_pipe=Pad_naar_LyX-pipe
@@ -1892,8 +1890,6 @@ Use_the_following_delimiter_character(s)=Gebruik_volgende_teken(s)_als_scheiding
 User_does_not_have_sufficient_privileges.\n=
 Username_\:=
 
-Uses_default_application=Gebruikt_standaard_applicatie
-
 Value_cleared_externally=Waarde_extern_gewist
 
 Value_set_externally=Waarde_extern_ingesteld
@@ -2025,7 +2021,6 @@ Unable_to_find_full_text_document_in_the_linked_web_page.=
 Connection_error_when_trying_to_find_full_text_document.=
 This_entry_provides_no_URL_or_DOI_links.=
 Full_text_article_download_failed=
-%0_entries_found._To_reduce_server_load,_only_%1_will_be_downloaded.=
 Assign_exclusively_to_group=
 Attempting_SQL_import...=
 Bad_Request_'%0'.=
@@ -2039,7 +2034,6 @@ Move_the_keyboard_focus_to_the_entry_table=
 Note_that_these_settings_are_used_for_the_legacy_<b>pdf</b>_and_<b>ps</b>_fields_only.<br>For_most_users,_setting_the_<b>Main_file_directory</b>_above_should_be_sufficient.=
 Override_legacy_file_fields=
 RIS=
-RIS_importer=
 Run_Fetcher,_e.g._"--fetch\=
 Search_ACM_Portal=
 Search_JSTOR=
@@ -2155,4 +2149,9 @@ File_dialog=
 No_entries_found._It_looks_like_you_do_not_have_access_to_search_JStor.=
 
 Search_ScienceDirect=
-Error_while_fetching_from_ScienceDirect=
\ No newline at end of file
+Error_while_fetching_from_ScienceDirect=
+
+Error_initializing_custom_export_format_from_string_'%0'=
+
+%0_entries_found._To_reduce_server_load,_only_%1_will_be_downloaded._It_will_be_very_slow,_in_order_to_make_ACM_happy.=
+BibTeX_importer=
diff --git a/src/resource/JabRef_no.properties b/src/resource/JabRef_no.properties
index 1e70f4e..e6a416e 100644
--- a/src/resource/JabRef_no.properties
+++ b/src/resource/JabRef_no.properties
@@ -738,7 +738,6 @@ Paste_from_clipboard=Lim_inn_fra_utklippstavle
 Pasted=Limte_inn
 
 Path_to_%0_not_defined=Sti_til_%0_ikke_definert
-Path_to_HTML_viewer=Sti_til_HTML-leser
 Path_to_LatexEditor_(LEd.exe)=Sti_til_LatexEditor_(LEd.exe)
 Path_to_LyX_pipe=Sti_til_LyX-pipe
 
@@ -1086,7 +1085,6 @@ Use_regular_expressions=Bruk_"regular_expressions"
 Use_the_following_delimiter_character(s)=Use_the_following_delimiter_character(s)
 User_does_not_have_sufficient_privileges.\n=Brukereren_har_ikke_tilstrekkelig_med_privilegier.\n
 Username_\:=Brukernavn:
-Uses_default_application=Bruker_standardprogram
 Value_cleared_externally=Verdien_slettet_eksternt
 Value_set_externally=Verdi_satt_eksternt
 verify_that_LyX_is_running_and_that_the_lyxpipe_is_valid=kontroller_at_LyX_kj\u00F8rer,_og_at_den_angitte_lyxpipe_stemmer
@@ -1184,14 +1182,12 @@ Search_JSTOR=S\u00F8k_JSTOR
 Attempting_SQL_import...=Pr\u00F8ver_SQL-import...
 BibO_RDF=BibO_RDF
 HTML_parser=HTML-leser
-RIS_importer=RIS-importfilter
 Move_the_keyboard_focus_to_the_entry_table=Flytt_fokus_til_hovedtabellen
 MIME_type=MIME-type
 This_feature_lets_new_files_be_opened_or_imported_into_an_already_running_instance_of_JabRef<BR>instead_of_opening_a_new_instance._For_instance,_this_is_useful_when_you_open_a_file_in_JabRef<br>from_your_web_browser.<BR>Note_that_this_will_prevent_you_from_running_more_than_one_instance_of_JabRef_at_a_time.=Denne_funksjonen_lar_deg_\u00E5pne_eller_importere_nye_filer_til_en_allerede_kj\u00F8rende_instans_av_JabRef<br>fra_nettleseren_din.<br>Merk_at_dette_vil_hindre_deg_i_\u00E5_kj\u00F8r [...]
 Note_that_these_settings_are_used_for_the_legacy_<b>pdf</b>_and_<b>ps</b>_fields_only.<br>For_most_users,_setting_the_<b>Main_file_directory</b>_above_should_be_sufficient.=Merk_at_disse_instillingene_bare_brukes_for_de_foreldede_<b>pdf</b>-_og_<b>ps</b>-feltene.<br>For_de_fleste_brukerne_er_det_tilstrekkelig_\u00E5_sette_<b>Hovedkatalog_for_filer</b>_ovenfor.
 Legacy_file_fields=Foreldede_linkfelter
 
-%0_entries_found._To_reduce_server_load,_only_%1_will_be_downloaded.=Fant_%0_enheter._For_\u00E5_redusere_belastningen_p\u00E5_tjeneren_vil_bare_%1_enheter_lastes_ned.
 This_makes_JabRef_look_up_each_%0_extension_and_check_if_the_file_exists._If_not,_you_will_be_given_options<BR>to_resolve_the_problem.=Dette_f\u00E5r_JabRef_til_\u00E5_se_p\u00E5_hver_%0-link,_og_sjekke_om_filen_eksisterer._Hvis_ikke_vil_du_f\u00E5_noen<BR>alternativer_for_\u00E5_l\u00F8se_problemet.
 Run_Fetcher,_e.g._"--fetch\=Medline\:cancer"=
 
@@ -1201,133 +1197,137 @@ The_ACM_Digital_Library=ACM_Digital_Library
 
 Use_IEEE_LaTeX_abbreviations=Bruk_IEEE-LaTeX-forkortelser
 The_Guide_to_Computing_Literature=The_Guide_to_Computing_Literature
-Search_ACM_Portal=S\u00C3\u00B8k_ACM-portalen
+Search_ACM_Portal=S\u00B8k_ACM-portalen
 Connection_to_ACM_Portal_failed=Kunne_ikke_opprette_forbindelse_til_ACM-portalen
 
-When_opening_file_link,_search_for_matching_file_if_no_link_is_defined=
-Settings_for_%0=
-Insert_selected_citations_into_Vim=
+When_opening_file_link,_search_for_matching_file_if_no_link_is_defined=Ved_\u00E5pning_av_linke,_s\u00B8k_etter_matchende_fil_hvis_ingen_er_definert
+Settings_for_%0=Innstillinger_for_%0
+Insert_selected_citations_into_Vim=Send_valgte_enheter_til_Vim
 RIS=RIS
-Assign_exclusively_to_group=
-Bad_Request_'%0'.=
-Mark_entries_imported_into_an_existing_database=
-Unmark_all_entries_before_importing_new_entries_into_an_existing_database=
-Forward=
-Back=
-Sort_the_following_fields_as_numeric_fields=
-Error_fetching_from_Citeseer\:\n=
-Line_%0\:_Found_corrupted_BibTeX-key.=
-Line_%0\:_Found_corrupted_BibTeX-key_(contains_whitespaces).=
-Line_%0\:_Found_corrupted_BibTeX-key_(comma_missing).=
-Finished_downloading_full_text_document=
-Unable_to_find_full_text_document_in_the_linked_web_page.=
-Connection_error_when_trying_to_find_full_text_document.=
-This_entry_provides_no_URL_or_DOI_links.=
-Full_text_article_download_failed=
-Down_up=
-Update_to_current_column_order=
-
-Rename_field=
-Set/clear/rename_fields=
-Rename_field_to\:=
-Move_contents_of_a_field_into_a_field_with_a_different_name=
-
-You_can_only_rename_one_field_at_a_time=
-Remove_all_broken_links=
-Cannot_use_port_%0_for_remote_operation;_another_application_may_be_using_it._Try_specifying_another_port.=
-
-Plugin_installer=
-Unable_to_create_plugin_directory=
-Unable_to_copy_file=
-Plugin_installed_successfully._You_must_restart_JabRef_to_load_the_new_plugin.=
-Unable_to_create_user_plugin_directory=
-Plugin_installation_failed.=
-The_same_version_of_this_plugin_is_already_installed.=
-A_newer_version_of_this_plugin_is_already_installed.=
-One_or_more_older_versions_of_this_plugin_is_installed._Delete_old_versions?=
-Old_versions_deleted_successfully.=
-
-Install_plugin=
-Download_plugin=
-Plugin_manager=
-Delete_the_%0_selected_plugins?=
-Delete_plugins=
-Delete_the_selected_plugin?=
-Delete_plugin=
-Enter_download_URL=
-Plugin_name=
-Version=
-Unknown=
-Not_loaded=
-Loaded=
-Could_not_determine_version_of_=
-Install_anyway?=
-
-Looking_for_full_text_document...=
+Assign_exclusively_to_group=Tilordne_eksklusivt_til_gruppe
+Bad_Request_'%0'.=Bad_request_'%0'.
+Mark_entries_imported_into_an_existing_database=Merk_enheter_som_importeres_til_en_eksisterende_database
+Unmark_all_entries_before_importing_new_entries_into_an_existing_database=Fjern_merking_fra_alle_merkede_enheter_f\u00B8r_nye_importeres
+Forward=Fram
+Back=Tilbake
+Sort_the_following_fields_as_numeric_fields=Sorter_de_følgende_feltene_som_tall
+Error_fetching_from_Citeseer\:\n=Feil_ved_nedlasting_fra_Citeseer:\n
+Line_%0\:_Found_corrupted_BibTeX-key.=Linje_%0\:_Fant_ugyldig_BibTeX-n\u00B8kkel.
+Line_%0\:_Found_corrupted_BibTeX-key_(contains_whitespaces).=Linje_%0\:_Fant_ugyldig_BibTeX-n\u00B8kkel_(inneholder_mellomrom).
+Line_%0\:_Found_corrupted_BibTeX-key_(comma_missing).=Linje_%0\:_Fant_ugyldig_BibTeX-n\u00B8kkel_(manglende_komma).
+Finished_downloading_full_text_document=Fullf\u00B8rte_nedlasting_av_fulltekstdokument
+Unable_to_find_full_text_document_in_the_linked_web_page.=Kan_ikke_finne_fulltekstdokument_p\u00E5_den_linkede_websiden.
+Connection_error_when_trying_to_find_full_text_document.=Tilkoblingsfeil_ved_for\u00B8k_p\u00E5_\u00E5_finne_fulltekstdokument
+This_entry_provides_no_URL_or_DOI_links.=Denne_enheten_har_ingen_URL-_eller_DOI-linker
+Full_text_article_download_failed=Kunne_ikke_laste_ned_fulltekstdokument
+Update_to_current_column_order=Oppdater_til_n\u00E5v\u00E6rende_rekkef\u00B8lge_p\u00E5_kolonner
+
+Rename_field=Endre_navn_p\u00E5_felt
+Set/clear/rename_fields=Sett/slett/endre_navn_p\u00E5_felt
+Rename_field_to\:=Endre_navn_p\u00E5_felt_til:
+Move_contents_of_a_field_into_a_field_with_a_different_name=Flytt_innholdet_i_et_felt_til_et_annet_felt
+
+You_can_only_rename_one_field_at_a_time=Du_kan_bare_endre_navn_p\u00E5_ett_felt_av_gangen
+Remove_all_broken_links=Fjern_alle_ugyldige_linker
+Cannot_use_port_%0_for_remote_operation;_another_application_may_be_using_it._Try_specifying_another_port.=Kan_ikke_bruke_port_%0_for_fjernstyring;_den_kan_v\u00E6re_i_bruk_av_et_annet_program._Pr\u00B8v_\u00E5_spesifisere_en_annen_port.
+Plugin_installer=Plugin-installasjon
+Unable_to_create_plugin_directory=Kan_ikke_opprette_pluginkatalog
+Unable_to_copy_file=Kan_ikke_kopiere_fil
+Plugin_installed_successfully._You_must_restart_JabRef_to_load_the_new_plugin.=Installasjon_av_plugin_fullf\u00B8rt._Du_m\u00E5_starte_JabRef_p\u00E5_nytt_for_\u00E5_laste_den_inn.
+Unable_to_create_user_plugin_directory=Kan_ikke_opprette_brukerspesifikk_pluginkatalog
+Plugin_installation_failed.=Installasjon_av_plugin_mislyktes.
+The_same_version_of_this_plugin_is_already_installed.=Samme_versjon_av_denne_plugin'en_er_allerede_installert.
+A_newer_version_of_this_plugin_is_already_installed.=En_nyere_versjon_av_denne_plugin'en_er_allerede_installert.
+One_or_more_older_versions_of_this_plugin_is_installed._Delete_old_versions?=En_eller_flere_versjoner_av_denne_plugin'en_er_installert._Slette_gamle_versjoner?
+Old_versions_deleted_successfully.=Gamle_versjoner_slettet.
+
+Install_plugin=Installer_plugin
+Download_plugin=Last_ned_plugin
+Plugin_manager=Plugin-h\u00E5ndtering
+Delete_the_%0_selected_plugins?=Slette_de_%0_valgte_plugins?
+Delete_plugins=Slett_plugin
+Delete_the_selected_plugin?=Slette_valgt_plugin?
+Delete_plugin=Slett_plugin
+Enter_download_URL=Skriv_inn_URL_for_nedlasting
+Plugin_name=Navn_p\u00E5_plugin
+Version=Versjon
+Unknown=Ukjent
+Not_loaded=Ikke_lastet
+Loaded=Lastet
+Could_not_determine_version_of_=Kunne_ikke_bestemme_versjonsnummer_for_
+Install_anyway?=Installer_likevel?
+
+Looking_for_full_text_document...=Ser_etter_fulltekstdokument...
 Follow_DOI_or_URL_link_and_try_to_locate_PDF_full_text_document=
 Unable_to_find_full_text_article._No_search_algorithm_defined_for_the_'%0'_web_site.=
 Found_pdf_link,_but_received_the_wrong_MIME_type._This_could_indicate_that_you_don't_have_access_to_the_fulltext_article.=
 
-Autosave=
-Prompt_before_recovering_a_database_from_an_autosave_file=
-Autosave_interval_(minutes)=
-Do_you_want_to_recover_the_database_from_the_autosave_file?=
-Recover_from_autosave=
-%0_warnings=
-
-Save_in_current_table_sort_order=
-Export_in_current_table_sort_order=
-Export_ordered_by_author/editor/year=
-Export_entries_in_their_original_order=
-Error_opening_file_'%0'.=
-Autosave_of_file_'%0'=
-Error_opening_autosave_of_'%0'._Trying_to_load_'%0'_instead.=
-
-Plugins_installed_in_your_user_plugin_directory_(%0)\:=
-Plugins_installed_in_other_locations\:=
-Plugins_will_be_deleted_next_time_JabRef_starts_up.=
-Plugin_will_be_deleted_next_time_JabRef_starts_up.=
-Old_plugin_versions_will_be_deleted_next_time_JabRef_starts_up.=
-
-Formatter_not_found\:_%0=
-The_following_formatters_could_not_be_found=
-
-Clear_inputarea=
-Automatically_set_file_links_for_this_entry=
-Could_not_save,_file_locked_by_another_JabRef_instance.=
-File_is_locked_by_another_JabRef_instance.=
-Do_you_want_to_override_the_file_lock?=
-File_locked=
+Autosave=Autolagring
+Prompt_before_recovering_a_database_from_an_autosave_file=Sp\u00B8r_f\u00B8r_en_database_gjenopprettes_fra_autolagret_fil
+Autosave_interval_(minutes)=Intervall_for_autolagring_(minutter)
+Do_you_want_to_recover_the_database_from_the_autosave_file?=Vil_du_gjenopprette_databasen_fra_den_autolagrede_filen?
+Recover_from_autosave=Gjenopprette_fra_autolagret_fil
+%0_warnings=%0_advarsler
+
+Save_in_current_table_sort_order=Lagre_i_n\u00E5v\u00E6rende_sortering
+Export_in_current_table_sort_order=Eksporter_i_n\u00E5v\u00E6rende_sortering
+Export_ordered_by_author/editor/year=Eksporter_sortert_etter_author/editor/year
+Export_entries_in_their_original_order=Eksporter_enheter_i_deres_opprinnelige_rekkef\u00B8lge
+Error_opening_file_'%0'.=Feil_ved_\u00E5pning_av_filen_'%0'.
+Autosave_of_file_'%0'=Autolagring_av_filen_'%0'
+Error_opening_autosave_of_'%0'._Trying_to_load_'%0'_instead.=Feil_ved_\u00E5pning_av_autolagret_versjon_av_'%0'._Pr\u00B8ver_\u00E5_laste_'%0'_i_stedet.
+
+Plugins_installed_in_your_user_plugin_directory_(%0)\:=Plugins_installert_i_din_brukerspesifikke_pluginkatalog_(%0):
+Plugins_installed_in_other_locations\:=Plugins_installert_andre_steder:
+Plugins_will_be_deleted_next_time_JabRef_starts_up.=Plugin'ene_vil_bli_slettet_neste_gang_JabRef_starter.
+Plugin_will_be_deleted_next_time_JabRef_starts_up.=Plugin'en_vil_bli_slettet_neste_gang_JabRef_starter.
+Old_plugin_versions_will_be_deleted_next_time_JabRef_starts_up.=Gamle_versjoner_av_plugins_vil_bli_slettet_neste_gang_JabRef_starter.
+
+Formatter_not_found\:_%0=Fant_ikke_formaterer:_%0
+The_following_formatters_could_not_be_found=Fant ikke f\u00B8lgende_formaterere
+
+Clear_inputarea=T\u00B8m_inputfelt
+Automatically_set_file_links_for_this_entry=Set_fillinker_for_denne_enheten_automatisk
+Could_not_save,_file_locked_by_another_JabRef_instance.=Kunne_ikke_lagre,_filen_er_l\u00E5st_av_en_annen_instans_av_JabRef.
+File_is_locked_by_another_JabRef_instance.=Filen_er_l\u00E5st_av_en_annen_instans_av_JabRef.
+Do_you_want_to_override_the_file_lock?=Vil_du_overstyre_fill\u00E5sen?
+File_locked=Filen_er_l\u00E5st
+
+Metadata_change=Endring_av_metadata
+Changes_have_been_made_to_the_following_metadata_elements=Endringer_er_gjort_for_de_f\u00B8lgende_metadata-elementene
+
+Generate_groups_for_author_last_names=Generer_grupper_for_etternavn_fra_author-feltet
+Generate_groups_for_editor_last_names=Generer_grupper_for_etternavn_fra_editor-feltet
+Generate_groups_from_keywords_in_a_BibTeX_field=Generer_grupper_fra_n\u00B8kkelord_i_et_BibTeX-felt
+Enforce_legal_characters_in_BibTeX_keys=Forby_tegn_i_BibTeX-n\u00B8kler_som_ikke_aksepteres_av_BibTeX
+The_#_character_is_not_allowed_in_BibTeX_strings_unless_escaped_as_in_'\\#'.=Tegnet_#_er_ikke_tillatt_i_BibTeX-n\u00B8kler_hvis_det_ikke_merkes_med_en_backslash_(\\#).
+Before_saving,_please_edit_any_strings_containing_the_#_character.=F\u00B8r_du_lagrer,_vennligst_rediger_strenger_som_inneholder_tegnet_#.
+
+Save_without_backup?=Lagre_uten_backup?
+Unable_to_create_backup=Kan_ikke_lagre_backup?
+
+File_directory_is_not_set_or_does_not_exist.=Filkatalogen_er_ikke_valgt_eller_eksisterer_ikke.
+Move_file_to_file_directory.=Flytt_fil_til_filkatalog.
+Rename_file_to=Endre_navn_p\u00E5_fil_til
+<b>All_Entries</b>_(this_group_cannot_be_edited_or_removed)=<b>Alle_enheter</b>_(denne_gruppen_kan_ikke_endres_eller_slettes)
+</b>_-_static_group=</b>_-_statisk_gruppe
+,_refines_supergroup=,_subset_av_gruppen_over
+,_includes_subgroups=,_inkluderer_gruppen_over
+</b>_-_dynamic_group_(<b>=</b>_-_dynamisk_gruppe_(<b>
+</b>_contains_<b>=</b>_inneholder_<b>
+</b>_-_dynamic_group_(=</b>_-_dynamisk_gruppe_(
+search_expression\:_<b>=s\u00B8keutrykk:_<b>
+
+Disable_file_renaming_in_non-native_file_dialog=Deaktiver_mulighet_for_\u00E5_endre_navn_i_system-fildialog
+File_dialog=Fildialog
+No_entries_found._It_looks_like_you_do_not_have_access_to_search_JStor.=Fant_ingen_enheter._Det_ser_ut_som_om_du_ikke_har_tilgang_til_\u00E5_s\u00B8ke_p\u00E5_JStor.
+
+Search_ScienceDirect=S\u00B8k_ScienceDirect
+Error_while_fetching_from_ScienceDirect=Feil_ved_nedlasting_fra_ScienceDirect
+
+Error_initializing_custom_export_format_from_string_'%0'=Feil_ved_initialisering_av_eksternt_eksportfilter_fra_strengen_'%0'
+
+%0_entries_found._To_reduce_server_load,_only_%1_will_be_downloaded._It_will_be_very_slow,_in_order_to_make_ACM_happy.=Fant_%0_enheter._For_\u00E5_redusere_lasten_p\u00E5_serveren_vil_bare_%1_enheter_bli_lastet_ned._Nedlastingen_vil_g\u00E5_langsomt_for_\u00E5_blidgj\u00B8re_ACM.
+BibTeX_importer=BibTeX-importerer
+Reset=Resett
 Current_tmp_value=
-Metadata_change=
-Changes_have_been_made_to_the_following_metadata_elements=
-
-Generate_groups_for_author_last_names=
-Generate_groups_for_editor_last_names=
-Generate_groups_from_keywords_in_a_BibTeX_field=
-Enforce_legal_characters_in_BibTeX_keys=
-The_#_character_is_not_allowed_in_BibTeX_strings_unless_escaped_as_in_'\\#'.=
-Before_saving,_please_edit_any_strings_containing_the_#_character.=
-
-Save_without_backup?=
-Unable_to_create_backup=
-
-File_directory_is_not_set_or_does_not_exist.=
-Move_file_to_file_directory.=
-Rename_file_to=
-Reset=
-<b>All_Entries</b>_(this_group_cannot_be_edited_or_removed)=
-</b>_-_static_group=
-,_refines_supergroup=
-,_includes_subgroups=
-</b>_-_dynamic_group_(<b>=
-</b>_contains_<b>=
-</b>_-_dynamic_group_(=
-search_expression\:_<b>=
-
-Disable_file_renaming_in_non-native_file_dialog=
-File_dialog=
-No_entries_found._It_looks_like_you_do_not_have_access_to_search_JStor.=
-
-Search_ScienceDirect=
-Error_while_fetching_from_ScienceDirect=
\ No newline at end of file
diff --git a/src/resource/JabRef_tr.properties b/src/resource/JabRef_tr.properties
index ea73297..f56aa96 100644
--- a/src/resource/JabRef_tr.properties
+++ b/src/resource/JabRef_tr.properties
@@ -694,7 +694,6 @@ paste_entry=girdiyi_yap\u0131\u015Ft\u0131r
 Paste_from_clipboard=Panodan_yap\u0131\u015Ft\u0131r
 Pasted=Yap\u0131\u015Ft\u0131r\u0131ld\u0131
 Path_to_%0_not_defined=%0'in_yolu_tan\u0131mlanmam\u0131\u015F
-Path_to_HTML_viewer=HTML_g\u00F6r\u00FCntleyicisinin_yolu
 Path_to_LatexEditor_(LEd.exe)=LatexEditor'\u00FCn_(LEd.exe)_yolu
 Path_to_LyX_pipe=LyX_hatt\u0131n\u0131n_yolu
 Path_to_Vim=Vim'in_yolu
@@ -1029,7 +1028,6 @@ Use_regular_expressions=D\u00FCzenli_ifadeleri_kullan
 Use_the_following_delimiter_character(s)=A\u015Fa\u011F\u0131daki_s\u0131n\u0131rlay\u0131c\u0131_karakter(ler)i_kullan
 User_does_not_have_sufficient_privileges.\n=Kullan\u0131c\u0131_yeterli_yetkiye_sahip_de\u011Fil.\n
 Username_\:=Kullan\u0131c\u0131_ad\u0131_\:
-Uses_default_application=\u00D6ntan\u0131ml\u0131_uygulamay\u0131_kullan
 Value_cleared_externally=De\u011Fer,_haricen_silindi
 Value_set_externally=De\u011Fer,_haricen_atand\u0131
 verify_that_LyX_is_running_and_that_the_lyxpipe_is_valid=LyX'in_\u00E7al\u0131\u015Ft\u0131\u011F\u0131n\u0131_ve_veri_ileti\u015Fim_hatt\u0131n\u0131n_ge\u00E7erli_oldu\u011Funu_teyid_edin
@@ -1120,14 +1118,12 @@ Search_JSTOR=JSTOR'u_ara
 Attempting_SQL_import...=SQL_i\u00E7e_aktar\u0131m\u0131_giri\u015Fiminde_bulunuluyor...
 BibO_RDF=BibO_RDF
 HTML_parser=HTML_ayr\u0131\u015Ft\u0131r\u0131c\u0131
-RIS_importer=RIS_i\u00E7e_aktar\u0131c\u0131
 Move_the_keyboard_focus_to_the_entry_table=Klavye_oda\u011F\u0131n\u0131_girdi_tablosuna_ta\u015F\u0131
 MIME_type=MIME_t\u00FCr\u00FC
 
 This_feature_lets_new_files_be_opened_or_imported_into_an_already_running_instance_of_JabRef<BR>instead_of_opening_a_new_instance._For_instance,_this_is_useful_when_you_open_a_file_in_JabRef<br>from_your_web_browser.<BR>Note_that_this_will_prevent_you_from_running_more_than_one_instance_of_JabRef_at_a_time.=Bu_\u00F6zellik_yeni_dosyalar\u0131n_yeni_bir_oturum_a\u00E7maktansa_halen_\u00E7al\u0131\u015Fmakta_olan_bir<BR>JabRef_oturumu_i\u00E7ine_a\u00E7\u0131lmas\u0131_ya_da_aktr\u0131lmas [...]
 Note_that_these_settings_are_used_for_the_legacy_<b>pdf</b>_and_<b>ps</b>_fields_only.<br>For_most_users,_setting_the_<b>Main_file_directory</b>_above_should_be_sufficient.=Bu_ayarlar\u0131n_eski_s\u00FCr\u00FCm_<b>pdf</b>_ve_<b>ps</b>_alanlar\u0131_i\u00E7in_kullan\u0131ld\u0131\u011F\u0131n\u0131_not_ediniz.<br>\u00C7o\u011Fu_kullan\u0131c\u0131_i\u00E7in_yukar\u0131daki_<b>Ana_dosya_dizini</b>ni_ayarlamak_yeterli_olacakt\u0131r.
 Legacy_file_fields=Eski_s\u00FCr\u00FCm_dosya_alanlar\u0131
-%0_entries_found._To_reduce_server_load,_only_%1_will_be_downloaded.=%0_girdi_bulundu._Sunucu_y\u00FCk\u00FCn\u00FC_azaltmak_i\u00E7in_yaln\u0131zca_%1_indirilecektir.
 This_makes_JabRef_look_up_each_%0_extension_and_check_if_the_file_exists._If_not,_you_will_be_given_options<BR>to_resolve_the_problem.=Bu,_JabRef'in_her_bir_%0_uzant\u0131s\u0131n\u0131_bulup_dosyan\u0131n_var_olup_olmad\u0131\u011F\u0131n\u0131_kontrol_etmesini_sa\u011Flar._E\u011Fer_dosya_yoksa,_sorunu_\u00E7\u00F6zmek_i\u00E7in_se\u00E7enekler<BR>_sunulacakt\u0131r.
 
 Run_Fetcher,_e.g._"--fetch=Getiriciyi_\u00C7al\u0131\u015Ft\u0131r,_\u00D6rnek_"--fetch
@@ -1262,10 +1258,15 @@ search_expression\:_<b>=arama_ifadesi\:_<b>
 Disable_file_renaming_in_non-native_file_dialog=Do\u011Fal_olmayan_dosya_ileti\u015Fim_kutusunda_dosya_yeniden_adland\u0131rmay\u0131_etkisiz_k\u0131l
 File_dialog=Dosya_ileti\u015Fim_kutusu
 No_entries_found._It_looks_like_you_do_not_have_access_to_search_JStor.=Girdi_bulunamad\u0131._JStor_aramak_i\u00E7in_giri\u015F_yekiniz_yok_gibi_g\u00F6r\u00FCn\u00FCyor.
+
+Search_ScienceDirect=ScienceDirect'te_Ara
+Error_while_fetching_from_ScienceDirect=ScienceDirect'ten_getirirken_hata
+
+Error_initializing_custom_export_format_from_string_'%0'='%0'_dizgesinden_\u00F6zelle\u015Ftirilmi\u015F_d\u0131\u015Fa_aktarma_bi\u00E7emi_ilklendirmede_hata
 Reset=S\u0131f\u0131rla
 
 
 Highlight_groups_that_contain_entries_contained_in_any_currently_selected_group=Se\u00E7ili_herhangi_bir_gruptaki_girdileri_i\u00E7eren_gruplar\u0131_i\u015Faretle
 
-Search_ScienceDirect=
-Error_while_fetching_from_ScienceDirect=
\ No newline at end of file
+%0_entries_found._To_reduce_server_load,_only_%1_will_be_downloaded._It_will_be_very_slow,_in_order_to_make_ACM_happy.=
+BibTeX_importer=
diff --git a/src/resource/JabRef_zh.properties b/src/resource/JabRef_zh.properties
index 05ebbe2..714af3d 100644
--- a/src/resource/JabRef_zh.properties
+++ b/src/resource/JabRef_zh.properties
@@ -1261,8 +1261,6 @@ Pasted=\u5B8C\u6210\u7C98\u8D34
 
 Path_to_%0_not_defined=\u5230_%0_\u7684\u8DEF\u5F84\u672A\u5B9A\u4E49
 
-Path_to_HTML_viewer=\u5230_HTML_\u67E5\u770B\u5668\u7684\u8DEF\u5F84
-
 Path_to_LatexEditor_(LEd.exe)=\u5230_LatexEditor_(LEd.exe)_\u7684\u8DEF\u5F84
 
 Path_to_LyX_pipe=\u5230_LyX_\u7BA1\u9053\u7684\u8DEF\u5F84
@@ -1866,8 +1864,6 @@ Use_the_following_delimiter_character(s)=\u4F7F\u7528\u4E0B\u9762\u7684\u5206\u9
 User_does_not_have_sufficient_privileges.\n=\u7528\u6237\u6CA1\u6709\u8DB3\u591F\u7684\u6743\u9650\u3002\n
 Username_\:=\u7528\u6237\u540D:
 
-Uses_default_application=\u4F7F\u7528\u9ED8\u8BA4\u5E94\u7528\u7A0B\u5E8F
-
 Value_cleared_externally=\u5185\u5BB9\u4ECE\u5916\u90E8\u88AB\u6E05\u9664
 
 Value_set_externally=\u5185\u5BB9\u4ECE\u5916\u90E8\u88AB\u8BBE\u7F6E
@@ -1994,7 +1990,6 @@ Search_JSTOR=\u641C\u7D22_JSTOR
 Attempting_SQL_import...=\u5C1D\u8BD5_SQL_\u5BFC\u5165...
 BibO_RDF=BibO_RDF
 HTML_parser=HTML_\u89E3\u6790
-RIS_importer=RIS_\u5BFC\u5165
 
 Move_the_keyboard_focus_to_the_entry_table=\u5C06\u952E\u76D8\u7126\u70B9\u79FB\u52A8\u5230\u8BB0\u5F55\u5217\u8868
 MIME_type=MIME_\u7C7B\u578B
@@ -2003,7 +1998,6 @@ This_feature_lets_new_files_be_opened_or_imported_into_an_already_running_instan
 Note_that_these_settings_are_used_for_the_legacy_<b>pdf</b>_and_<b>ps</b>_fields_only.<br>For_most_users,_setting_the_<b>Main_file_directory</b>_above_should_be_sufficient.=\u6CE8\u610F\uFF1A\u8FD9\u4E9B\u8BBE\u7F6E\u4E3B\u8981\u5E94\u7528\u4E8E\u65E7\u5F0F\u7684_<b>pdf</b>_\u548C_<b>ps</b>_\u57DF\uFF0C\u8FD9\u610F\u5473\u7740\u5982\u679C\u60A8\u4E0D\u77E5\u9053\u5B83\u662F\u4EC0\u4E48\u610F\u601D\uFF0C<BR>\u60A8\u53EF\u4EE5\u5FFD\u89C6\u8BE5\u9009\u9879\u3002\u5BF9\u5927\u90E8\u5206\u75 [...]
 Legacy_file_fields=\u65E7\u5F0F\u6587\u4EF6\u57DF
 
-%0_entries_found._To_reduce_server_load,_only_%1_will_be_downloaded.=\u5171\u627E\u5230_%0_\u6761\u76F8\u5173\u8BB0\u5F55\uFF0C\u4E3A\u51CF\u8F7B\u670D\u52A1\u5668\u8D1F\u62C5\uFF0C\u53EA\u4E0B\u8F7D\u5176\u4E2D\u7684_%1_\u6761\u3002
 This_makes_JabRef_look_up_each_%0_extension_and_check_if_the_file_exists._If_not,_you_will_be_given_options<BR>to_resolve_the_problem.=\u8FD9\u5C06\u4F7F_JabRef_\u4F9D\u636E%0\u6269\u5C55\u540D\u67E5\u627E\u6587\u4EF6\u662F\u5426\u5B58\u5728\uFF0C\u5982\u679C\u627E\u4E0D\u5230\uFF0CJabRef_\u5C06\u63D0\u4F9B\u7ED9\u60A8\u9009\u9879\u6765\u89E3\u51B3\u8FD9\u4E2A\u95EE\u9898\u3002
 Run_Fetcher,_e.g._"--fetch=Medline\:cancer"=\u8FD0\u884C\u6293\u53D6\u5668\uFF0C\u4F8B\u5982_"--fetch=Medline\:cancer"
 Override_legacy_file_fields=\u8DF3\u8FC7\u65E7\u5F0F\u6587\u4EF6\u57DF
@@ -2145,4 +2139,9 @@ File_dialog=
 No_entries_found._It_looks_like_you_do_not_have_access_to_search_JStor.=
 
 Search_ScienceDirect=
-Error_while_fetching_from_ScienceDirect=
\ No newline at end of file
+Error_while_fetching_from_ScienceDirect=
+
+Error_initializing_custom_export_format_from_string_'%0'=
+
+%0_entries_found._To_reduce_server_load,_only_%1_will_be_downloaded._It_will_be_very_slow,_in_order_to_make_ACM_happy.=
+BibTeX_importer=
diff --git a/src/resource/JabRef_zh.properties.UTF8 b/src/resource/JabRef_zh.properties.UTF8
index 9ce7643..4e12bba 100644
--- a/src/resource/JabRef_zh.properties.UTF8
+++ b/src/resource/JabRef_zh.properties.UTF8
@@ -1264,8 +1264,6 @@ Pasted=完成粘贴
 
 Path_to_%0_not_defined=到_%0_的路径未定义
 
-Path_to_HTML_viewer=到_HTML_查看器的路径
-
 Path_to_LatexEditor_(LEd.exe)=到_LatexEditor_(LEd.exe)_的路径
 
 Path_to_LyX_pipe=到_LyX_管道的路径
@@ -1869,8 +1867,6 @@ Use_the_following_delimiter_character(s)=使用下面的分隔符
 User_does_not_have_sufficient_privileges.\n=用户没有足够的权限。\n
 Username_\:=用户名:
 
-Uses_default_application=使用默认应用程序
-
 Value_cleared_externally=内容从外部被清除
 
 Value_set_externally=内容从外部被设置
@@ -1997,7 +1993,6 @@ Search_JSTOR=搜索_JSTOR
 Attempting_SQL_import...=尝试_SQL_导入...
 BibO_RDF=BibO_RDF
 HTML_parser=HTML_解析
-RIS_importer=RIS_导入
 
 Move_the_keyboard_focus_to_the_entry_table=将键盘焦点移动到记录列表
 MIME_type=MIME_类型
@@ -2006,7 +2001,6 @@ This_feature_lets_new_files_be_opened_or_imported_into_an_already_running_instan
 Note_that_these_settings_are_used_for_the_legacy_<b>pdf</b>_and_<b>ps</b>_fields_only.<br>For_most_users,_setting_the_<b>Main_file_directory</b>_above_should_be_sufficient.=注意:这些设置主要应用于旧式的_<b>pdf</b>_和_<b>ps</b>_域,这意味着如果您不知道它是什么意思,<BR>您可以忽视该选项。对大部分用户来说,设置上面的“主文件目录”就足够了。
 Legacy_file_fields=旧式文件域
 
-%0_entries_found._To_reduce_server_load,_only_%1_will_be_downloaded.=共找到_%0_条相关记录,为减轻服务器负担,只下载其中的_%1_条。
 This_makes_JabRef_look_up_each_%0_extension_and_check_if_the_file_exists._If_not,_you_will_be_given_options<BR>to_resolve_the_problem.=这将使_JabRef_依据%0扩展名查找文件是否存在,如果找不到,JabRef_将提供给您选项来解决这个问题。
 Run_Fetcher,_e.g._"--fetch=Medline\:cancer"=运行抓取器,例如_"--fetch=Medline\:cancer"
 Override_legacy_file_fields=覆盖旧式文件域
@@ -2150,3 +2144,8 @@ No_entries_found._It_looks_like_you_do_not_have_access_to_search_JStor.=
 
 Search_ScienceDirect=
 Error_while_fetching_from_ScienceDirect=
+
+Error_initializing_custom_export_format_from_string_'%0'=
+
+%0_entries_found._To_reduce_server_load,_only_%1_will_be_downloaded._It_will_be_very_slow,_in_order_to_make_ACM_happy.=
+BibTeX_importer=
diff --git a/src/resource/Menu_no.properties b/src/resource/Menu_no.properties
index f1be0a9..894dde2 100644
--- a/src/resource/Menu_no.properties
+++ b/src/resource/Menu_no.properties
@@ -131,13 +131,13 @@ Import_from_external_SQL_database=Importer_fra_ekstern_SQL-database
 Focus_entry_table=Flytt_fokus_til_hovedtabell
 Search_ACM_Portal=S\u00F8k_ACM_Portal
 
-Increase_table_font_size=
-Decrease_table_font_size=
-Forward=
-Back=
+Increase_table_font_size=\u00D8k_st\u00F8rrelse_p\u00E5_tabellfont
+Decrease_table_font_size=Reduser_st\u00F8rrelse_p\u00E5_tabellfont
+Forward=Fram
+Back=Tilbake
 
-Manage_plugins=
-Look_up_full_text_document=
-Set/clear/rename_fields=
+Manage_plugins=Pluginh\u00F8ndtering
+Look_up_full_text_document=Finn_fulltekstdokument
+Set/clear/rename_fields=Sett/slett/endre_navn_p\u00F8_felter
 
-Search_ScienceDirect=
\ No newline at end of file
+Search_ScienceDirect=S\u00F8k_ScienceDirect
\ No newline at end of file
diff --git a/src/resource/Menu_tr.properties b/src/resource/Menu_tr.properties
index 442e73b..b393ba5 100644
--- a/src/resource/Menu_tr.properties
+++ b/src/resource/Menu_tr.properties
@@ -70,7 +70,7 @@ Save_database_as_...=Varit&aban\u0131n\u0131_farkl\u0131_kaydet...
 Save_selected_as_...=Se\u00E7imi_fark&l\u0131_kaydet...
 Save_session=Oturumu_kaydet
 Search=A&ra
-Search_IEEEXplore=IEEEXplore'u_ara
+Search_IEEEXplore=IEEEXplore'da_ara
 Select_all=T&\u00FCm\u00FCn\u00FC_se\u00E7
 Set_up_general_fields=&Genel_alanlar\u0131_ayarla
 Show_error_console=Hata_konsolunu_g\u00F6ster
@@ -105,20 +105,20 @@ Open_file=Dosya_a\u00E7
 Plugins=E&klentiler
 Connect_to_external_SQL_database=Harici_SQL_veritaban\u0131na_ba\u011Flan
 Export_to_external_SQL_database=Harici_veritaban\u0131na_aktar
-Search_JSTOR=JSTOR'u_ara
+Search_JSTOR=JSTOR'da_ara
 Fetch_SPIRES=SPIRES'dan_getir
 Fetch_CiteSeer_by_ID=CiteSeer'den_No'yla_getir
-Search_Medline=Medline_Ara
+Search_Medline=Medline'da_Ara
 Import_from_external_SQL_database=Harici_SQL_veritaban\u0131ndan_i\u00E7e_aktar
 Focus_entry_table=Girdi_tablosuna_odaklan
-Search_ACM_Portal=ACM_Portal\u0131'n\u0131_ara
+Search_ACM_Portal=ACM_Portal\u0131'nda_ara
 
 Increase_table_font_size=Tablo_yaz\u0131tipi_boyutunu_artt\u0131r
 Decrease_table_font_size=Tablo_yaz\u0131tipi_boyutunu_azalt
 Forward=\u0130leri
 Back=Geri
 Manage_plugins=Eklentileri_y\u00F6net
-Set/clear/rename_fields=Alanlar\u0131_ata/sil/yeniden_adland\u0131r
 Look_up_full_text_document=Tam_metin_belge_bul
+Set/clear/rename_fields=Alanlar\u0131_ata/sil/yeniden_adland\u0131r
 
-Search_ScienceDirect=
\ No newline at end of file
+Search_ScienceDirect=ScienceDirect'te_Ara
diff --git a/src/resource/build.properties b/src/resource/build.properties
index a35780d..6c65deb 100644
--- a/src/resource/build.properties
+++ b/src/resource/build.properties
@@ -1,3 +1,3 @@
-builddate=March 4 2010
-build=169
-version=2.6b3
\ No newline at end of file
+builddate=April 13 2010
+build=309
+version=2.6
\ No newline at end of file
diff --git a/src/txt/CHANGELOG b/src/txt/CHANGELOG
index 9706d2c..2aa4977 100644
--- a/src/txt/CHANGELOG
+++ b/src/txt/CHANGELOG
@@ -1,3 +1,20 @@
+2.6
+    - Fixed IEEExplorer and ACM fetchers to adapt to web site changes.
+    - Active preview (1 or 2) is now remembered.
+    - Applied patch by Igor L. Chernyavsky. to prevent loss of entry selection after
+      generating key.
+    - Changed OpenDocument Spreadsheet export so the mimetype file is written correctly
+      at the start of the zip file.
+    - Fixed bug when importing preferences: custom export filters would not be updated
+      after import.
+    - Changed help page loading procedure so help pages can be loaded for plugin entry
+      fetchers.
+    - Made it possible to define customized entry types with either-or conditions on
+      required fields, e.g. using a pseudo-field called "author/editor" will indicate
+      that the entry requires either the "author" or the "editor" field set.
+    - Fixed bug: entries of a customized type could be indicated as complete even if
+      BibTeX key was not set.
+    - Changed deletion process for some temporary files to avoid leftover files.
 2.6b3
     - Added ScienceDirect entry fetcher that utilizes the BibSonomy scraper.
     - Changed non-native file dialog setting so files cannot be renamed. This prevents
diff --git a/src/txt/README b/src/txt/README
index f6a8ece..a790c85 100644
--- a/src/txt/README
+++ b/src/txt/README
@@ -1,6 +1,6 @@
 
-JabRef 2.6 beta 3
------------------
+JabRef 2.6
+----------
 
 Introduction:
 
diff --git a/src/txt/TODO b/src/txt/TODO
index b053de6..96193b3 100644
--- a/src/txt/TODO
+++ b/src/txt/TODO
@@ -17,7 +17,6 @@ Morten:
 * Plugins like SVN plugin might need hooks for performing actions before a database is
   closed, and may need the ability to cancel the closing, and to avoid questions about
   saving changes.
-* Revisions merged into trunk after 2.4 release: 2620-2733
 
 * Enable "Open spires entry" ("openSpires" action)? Think about better integration of this?
   Look into which viewer is used.

-- 
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