[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