Load /tmp/tmp.vLkhE21434/jabref-2.1-src into r331/tags/upstream/2.1-src upstream/2.1
authorgregor herrmann <gregoa@debian.org>
Thu, 10 Aug 2006 19:37:49 +0000 (19:37 -0000)
committergregor herrmann <gregoa@debian.org>
Thu, 10 Aug 2006 19:37:49 +0000 (19:37 -0000)
debian/jabref/branches/upstream/current.

258 files changed:
.classpath [new file with mode: 0644]
.cvsignore [new file with mode: 0644]
build.number
build.xml
lib/looks-2.0.1.jar [deleted file]
lib/looks-2.0.4.jar [new file with mode: 0644]
src/help/About.html
src/help/CiteSeerHelp.html
src/help/GroupsHelp.html
src/help/IEEEXploreHelp.html
src/help/MedlineHelp.html
src/help/de/About.html
src/help/fr/About.html
src/help/fr/CiteSeerHelp.html
src/help/fr/IEEEXploreHelp.html
src/help/fr/MedlineHelp.html
src/images/Close.gif [deleted file]
src/images/CopyKey.gif [deleted file]
src/images/Hourglass.png [deleted file]
src/images/JabRef-Logo-small.gif [deleted file]
src/images/JabRef-Logo.icns
src/images/JabRef-icon-48.png [new file with mode: 0644]
src/images/JabRef-icon.png
src/images/JabRef-icon.svg [new file with mode: 0644]
src/images/absIcon.png [deleted file]
src/images/addtsk_tsk.gif [deleted file]
src/images/backward_nav.gif [deleted file]
src/images/close_view.gif [deleted file]
src/images/completeItem.png [deleted file]
src/images/configure2.png [deleted file]
src/images/contents2.png [deleted file]
src/images/copy_edit.gif [deleted file]
src/images/crystal_16/1downarrow.png [new file with mode: 0755]
src/images/crystal_16/1leftarrow.png [new file with mode: 0755]
src/images/crystal_16/1rightarrow.png [new file with mode: 0755]
src/images/crystal_16/1uparrow.png [new file with mode: 0755]
src/images/crystal_16/Icons.properties [new file with mode: 0644]
src/images/crystal_16/Icons.properties~ [new file with mode: 0644]
src/images/crystal_16/JabRef-icon.png [new file with mode: 0644]
src/images/crystal_16/absIcon.png [new file with mode: 0644]
src/images/crystal_16/advancedsettings.png [new file with mode: 0755]
src/images/crystal_16/agt_internet.png [new file with mode: 0755]
src/images/crystal_16/agt_internet_small.png [new file with mode: 0644]
src/images/crystal_16/button_ok.png [new file with mode: 0755]
src/images/crystal_16/cancel.png [new file with mode: 0755]
src/images/crystal_16/contents2.png [new file with mode: 0644]
src/images/crystal_16/documentinfo.png [new file with mode: 0755]
src/images/crystal_16/doismall.png [new file with mode: 0644]
src/images/crystal_16/duplicate.png [new file with mode: 0644]
src/images/crystal_16/edit.png [new file with mode: 0755]
src/images/crystal_16/edit_add.png [new file with mode: 0755]
src/images/crystal_16/edit_remove.png [new file with mode: 0755]
src/images/crystal_16/editcopy.png [new file with mode: 0755]
src/images/crystal_16/editcut.png [new file with mode: 0755]
src/images/crystal_16/editpaste.png [new file with mode: 0755]
src/images/crystal_16/emacs.png [new file with mode: 0644]
src/images/crystal_16/fileclose.png [new file with mode: 0644]
src/images/crystal_16/fileclose2.png [new file with mode: 0644]
src/images/crystal_16/fileimport.png [new file with mode: 0755]
src/images/crystal_16/filenew.png [new file with mode: 0755]
src/images/crystal_16/fileopen.png [new file with mode: 0755]
src/images/crystal_16/filesave.png [new file with mode: 0755]
src/images/crystal_16/filesaveas.png [new file with mode: 0755]
src/images/crystal_16/genIcon.png [new file with mode: 0644]
src/images/crystal_16/gg_ignored.png [new file with mode: 0755]
src/images/crystal_16/groupIncluding.png [new file with mode: 0644]
src/images/crystal_16/groupRefining.png [new file with mode: 0644]
src/images/crystal_16/groupsHighlightAll.png [new file with mode: 0644]
src/images/crystal_16/groupsHighlightAny.png [new file with mode: 0644]
src/images/crystal_16/help.png [new file with mode: 0755]
src/images/crystal_16/ikon.gif [new file with mode: 0644]
src/images/crystal_16/ikon.png [new file with mode: 0644]
src/images/crystal_16/integrity.png [new file with mode: 0644]
src/images/crystal_16/lyx2.png [new file with mode: 0644]
src/images/crystal_16/mark.png [new file with mode: 0644]
src/images/crystal_16/optIcon.png [new file with mode: 0644]
src/images/crystal_16/pdf-document.png [new file with mode: 0755]
src/images/crystal_16/preamble.png [new file with mode: 0644]
src/images/crystal_16/ps.png [new file with mode: 0755]
src/images/crystal_16/queue.png [new file with mode: 0644]
src/images/crystal_16/redo.png [new file with mode: 0755]
src/images/crystal_16/reload.png [new file with mode: 0755]
src/images/crystal_16/reqIcon.png [new file with mode: 0644]
src/images/crystal_16/run.png [new file with mode: 0755]
src/images/crystal_16/search.png [new file with mode: 0755]
src/images/crystal_16/status_unknown.png [new file with mode: 0755]
src/images/crystal_16/strings.png [new file with mode: 0644]
src/images/crystal_16/text_bottom.png [new file with mode: 0755]
src/images/crystal_16/trash.png [new file with mode: 0755]
src/images/crystal_16/undo.png [new file with mode: 0755]
src/images/crystal_16/unmark.png [new file with mode: 0644]
src/images/crystal_16/viewsource.gif [new file with mode: 0644]
src/images/crystal_16/winedt.png [new file with mode: 0644]
src/images/crystal_16/wizard.png [new file with mode: 0644]
src/images/crystal_16/wwwciteseer.png [new file with mode: 0644]
src/images/cut_edit.gif [deleted file]
src/images/defaults_ps.gif [deleted file]
src/images/delete_edit.gif [deleted file]
src/images/doismall.png [deleted file]
src/images/duplicate.png [deleted file]
src/images/editcopy.png [deleted file]
src/images/editcut.png [deleted file]
src/images/editdelete.png [deleted file]
src/images/editpaste.png [deleted file]
src/images/edittsk_tsk.gif [deleted file]
src/images/emacs.png [deleted file]
src/images/exclamation.gif [deleted file]
src/images/fileclose.png [deleted file]
src/images/fileclose2.png [deleted file]
src/images/fldr_obj.gif [deleted file]
src/images/forward_nav.gif [deleted file]
src/images/g_icon.gif [deleted file]
src/images/genIcon.png [deleted file]
src/images/goto.png [deleted file]
src/images/groupIncluding.png [deleted file]
src/images/groupRefining.png [deleted file]
src/images/groupsHighlightAll.png [deleted file]
src/images/groupsHighlightAny.png [deleted file]
src/images/incomplete.png [deleted file]
src/images/integrity.png [deleted file]
src/images/lyx2.png [deleted file]
src/images/mark.png [deleted file]
src/images/messageFail.png [deleted file]
src/images/messageInfo.png [deleted file]
src/images/messageWarn.png [deleted file]
src/images/minus.gif [deleted file]
src/images/newBibFile.png [deleted file]
src/images/new_page.gif [deleted file]
src/images/new_wiz.gif [deleted file]
src/images/next_nav.gif [deleted file]
src/images/o_icon.gif [deleted file]
src/images/optIcon.png [deleted file]
src/images/paste_edit.gif [deleted file]
src/images/pdf.png [deleted file]
src/images/pdf_small.gif [deleted file]
src/images/plus.gif [deleted file]
src/images/postscript.png [deleted file]
src/images/preamble.png [deleted file]
src/images/prev_nav.gif [deleted file]
src/images/preview.png [deleted file]
src/images/queue.png [deleted file]
src/images/r_icon.gif [deleted file]
src/images/redo_edit.gif [deleted file]
src/images/refresh_nav.gif [deleted file]
src/images/reqIcon.png [deleted file]
src/images/run.png [deleted file]
src/images/save_edit.gif [deleted file]
src/images/saveas_edit.gif [deleted file]
src/images/search.gif [deleted file]
src/images/showerr_tsk.gif [deleted file]
src/images/splash-2.1.png [new file with mode: 0644]
src/images/splash-2.1beta.png [deleted file]
src/images/strings.png [deleted file]
src/images/toc_closed.gif [deleted file]
src/images/undo_edit.gif [deleted file]
src/images/unmark.png [deleted file]
src/images/up_nav.gif [deleted file]
src/images/view.gif [deleted file]
src/images/viewsource.gif [deleted file]
src/images/window_nofullscreen.png [deleted file]
src/images/winedt.png [deleted file]
src/images/wizard.png [deleted file]
src/images/wrongItem.png [deleted file]
src/images/www.png [deleted file]
src/images/wwwciteseer.png [deleted file]
src/java/net/sf/jabref/AdvancedTab.java
src/java/net/sf/jabref/AppearancePrefsTab.java
src/java/net/sf/jabref/BasePanel.java
src/java/net/sf/jabref/BibtexEntry.java
src/java/net/sf/jabref/BibtexFields.java
src/java/net/sf/jabref/BrowseAction.java
src/java/net/sf/jabref/DuplicateResolverDialog.java
src/java/net/sf/jabref/EntryCustomizationDialog.java
src/java/net/sf/jabref/EntryEditor.java
src/java/net/sf/jabref/EntryEditorTab.java
src/java/net/sf/jabref/EntryTypeDialog.java
src/java/net/sf/jabref/FieldContentSelector.java
src/java/net/sf/jabref/FieldTextArea.java
src/java/net/sf/jabref/FieldTextMenu.java
src/java/net/sf/jabref/GUIGlobals.java
src/java/net/sf/jabref/GeneralTab.java
src/java/net/sf/jabref/Globals.java
src/java/net/sf/jabref/Globals.java~ [new file with mode: 0644]
src/java/net/sf/jabref/HelpAction.java
src/java/net/sf/jabref/HelpDialog.java
src/java/net/sf/jabref/JabRef.java
src/java/net/sf/jabref/JabRefFrame.java
src/java/net/sf/jabref/JabRefPreferences.java
src/java/net/sf/jabref/PreambleEditor.java
src/java/net/sf/jabref/PrefsDialog3.java
src/java/net/sf/jabref/RightClickMenu.java
src/java/net/sf/jabref/SearchManager2.java
src/java/net/sf/jabref/SidePaneComponent.java
src/java/net/sf/jabref/SidePaneHeader.java
src/java/net/sf/jabref/SplashScreen.java
src/java/net/sf/jabref/SplashScreen.java~ [new file with mode: 0644]
src/java/net/sf/jabref/StringDialog.java
src/java/net/sf/jabref/TabLabelPattern.java
src/java/net/sf/jabref/TableColumnsTab.java
src/java/net/sf/jabref/about/NewAboutAction.java
src/java/net/sf/jabref/collab/FileUpdatePanel.java
src/java/net/sf/jabref/export/CustomExportDialog.java
src/java/net/sf/jabref/export/ExportCustomizationDialog.java
src/java/net/sf/jabref/export/SaveSession.java
src/java/net/sf/jabref/export/layout/format/AuthorAbbreviator.java
src/java/net/sf/jabref/export/layout/format/AuthorLastFirstAbbreviator.java
src/java/net/sf/jabref/export/layout/format/HTMLChars.java
src/java/net/sf/jabref/external/ExternalFilePanel.java
src/java/net/sf/jabref/external/PushToEmacs.java
src/java/net/sf/jabref/external/PushToLyx.java
src/java/net/sf/jabref/external/PushToWinEdt.java
src/java/net/sf/jabref/groups/AbstractGroup.java
src/java/net/sf/jabref/groups/EntryTableTransferHandler.java
src/java/net/sf/jabref/groups/GroupSelector.java
src/java/net/sf/jabref/groups/GroupTreeCellRenderer.java
src/java/net/sf/jabref/groups/GroupsPrefsTab.java
src/java/net/sf/jabref/groups/SearchGroup.java
src/java/net/sf/jabref/gui/EntryCustomizationDialog2.java
src/java/net/sf/jabref/gui/FieldSetComponent.java
src/java/net/sf/jabref/gui/GenFieldsCustomizer.java
src/java/net/sf/jabref/gui/ImportInspectionDialog.java
src/java/net/sf/jabref/gui/MainTable.java
src/java/net/sf/jabref/imports/AppendDatabaseAction.java
src/java/net/sf/jabref/imports/BibtexParser.java
src/java/net/sf/jabref/imports/CiteSeerFetcher.java
src/java/net/sf/jabref/imports/CiteSeerFetcherPanel.java
src/java/net/sf/jabref/imports/GeneralFetcher.java
src/java/net/sf/jabref/imports/IEEEXploreFetcher.java
src/java/net/sf/jabref/imports/ImportCustomizationDialog.java
src/java/net/sf/jabref/imports/ImportFormatReader.java
src/java/net/sf/jabref/imports/ImportMenuItem.java
src/java/net/sf/jabref/imports/IsiImporter.java
src/java/net/sf/jabref/imports/MedlineFetcher.java
src/java/net/sf/jabref/imports/OpenDatabaseAction.java
src/java/net/sf/jabref/imports/RisImporter.java
src/java/net/sf/jabref/journals/ManageJournalsPanel.java
src/java/net/sf/jabref/labelPattern/LabelPatternUtil.java
src/java/net/sf/jabref/net/URLDownload.java
src/java/net/sf/jabref/wizard/auximport/AuxSubGenerator.java
src/java/net/sf/jabref/wizard/auximport/gui/FromAuxDialog.java
src/java/net/sf/jabref/wizard/integrity/gui/IntegrityMessagePanel.java
src/java/net/sf/jabref/wizard/text/gui/TextInputDialog.java
src/java/tests/net/sf/jabref/export/layout/format/AuthorLastFirstAbbreviatorTester.java
src/resource/Icons.properties [new file with mode: 0644]
src/resource/JabRef_de.properties
src/resource/JabRef_en.properties
src/resource/JabRef_fr.properties
src/resource/JabRef_it.properties
src/resource/JabRef_no.properties
src/resource/Menu_fr.properties
src/resource/Menu_it.properties
src/resource/build.properties
src/resource/journalList.txt [deleted file]
src/resource/log4j.properties [deleted file]
src/txt/README
src/txt/README~ [deleted file]
src/txt/apache-license.txt [deleted file]
src/txt/cpl-v10.html [deleted file]

diff --git a/.classpath b/.classpath
new file mode 100644 (file)
index 0000000..a0c016f
--- /dev/null
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+       <classpathentry kind="src" path="src/java"/>
+       <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+       <classpathentry kind="lib" path="lib/aelfred-1.2.jar"/>
+       <classpathentry kind="lib" path="lib/antlr.jar"/>
+       <classpathentry kind="lib" path="lib/ccl.jar"/>
+       <classpathentry kind="lib" path="lib/jalopy-1.0b10.jar"/>
+       <classpathentry kind="lib" path="lib/jalopy-ant-0.6.1.jar"/>
+       <classpathentry kind="lib" path="lib/javancss.jar"/>
+       <classpathentry kind="lib" path="lib/jaxen-core-1.0-fcs.jar"/>
+       <classpathentry kind="lib" path="lib/jaxp-1.2.jar"/>
+       <classpathentry kind="lib" path="lib/jdom-1.0b8.jar"/>
+       <classpathentry kind="lib" path="lib/log4j-1.2.6.jar"/>
+       <classpathentry kind="lib" path="lib/looks-1.2.2.jar"/>
+       <classpathentry kind="lib" path="lib/oro-2.0.6.jar"/>
+       <classpathentry kind="lib" path="lib/plastic-1.2.1.jar"/>
+       <classpathentry kind="lib" path="lib/sax-2.0.1.jar"/>
+       <classpathentry kind="lib" path="lib/saxpath-1.0-fcs.jar"/>
+       <classpathentry kind="lib" path="lib/vizant.jar"/>
+       <classpathentry kind="lib" path="lib/spin.jar"/>
+       <classpathentry kind="var" path="JUNIT_HOME/junit.jar"/>
+       <classpathentry kind="lib" path="lib/pmd-2.0.jar"/>
+       <classpathentry kind="lib" path="lib/forms-1.0.4.jar"/>
+       <classpathentry kind="lib" path="lib/junit.jar"/>
+       <classpathentry kind="lib" path="lib/log4j-1.2.9.jar"/>
+       <classpathentry kind="output" path="build"/>
+</classpath>
diff --git a/.cvsignore b/.cvsignore
new file mode 100644 (file)
index 0000000..0a53838
--- /dev/null
@@ -0,0 +1,15 @@
+bak
+build
+.classpath
+.project
+work.jpx
+work.refactor
+.#build.xml.1.38
+.#jabref.log.1.2
+ini
+jabref.log
+jabref.log.lck
+build.number
+classes
+jabref.jpx
+jabref.oif
index 34ffcd85d15b49399a5a796016408e09b603f202..691512d2b393df62a812c19c6d7a89f3173f1eba 100644 (file)
@@ -1,3 +1,3 @@
 #Build Number for ANT. Do not edit!
-#Thu Jun 29 22:30:13 CEST 2006
-build.number=100
+#Wed Aug 09 18:35:54 CEST 2006
+build.number=570
index d7cc82a55321a47bcdf5e1d6a7a26730226ed52f..36b8b76aa6b39fccf8939489e134198edf866477 100644 (file)
--- a/build.xml
+++ b/build.xml
@@ -22,8 +22,8 @@
    Compiler: Ant
    Authors:  Joerg K. Wegner, wegnerj@informatik.uni-tuebingen.de
              Morten O. Alver
-   Version:  $Revision: 1.61 $
-             $Date: 2006/06/29 19:59:18 $
+   Version:  $Revision: 1.62 $
+             $Date: 2006/07/25 19:56:36 $
              $Author: mortenalver $
 
    modified:
@@ -46,7 +46,7 @@
 
         <!-- some version information -->
         <property name="jabref.bin" value="jabref" />
-        <property name="jabref.version" value="2.1 beta 2" />
+        <property name="jabref.version" value="2.1" />
         <property name="jabref.placeholder.version" value="@version@" /> <!-- used by replace task -->
 
 
             <!--<pathelement location="${library.directory}/commons-httpclient-2.0.jar" />
             <pathelement location="${library.directory}/commons-logging.jar" />-->
             <pathelement location="${library.directory}/antlr.jar" />
-            <pathelement location="${library.directory}/looks-2.0.1.jar" />
+            <pathelement location="${library.directory}/looks-2.0.4.jar" />
             <pathelement location="${library.directory}/forms-1.0.4.jar" />
             <pathelement location="${library.directory}/spin-1.4.jar" />
             <pathelement location="${library.directory}/glazedlists-1.5.0_java14.jar" />
         <classpath>
             <pathelement location="${build.lib}/jabref.jar"/>
             <pathelement location="${library.directory}/antlr.jar" />
-            <pathelement location="${library.directory}/looks-2.0.1.jar" />
+            <pathelement location="${library.directory}/looks-2.0.4.jar" />
             <pathelement location="${library.directory}/forms-1.0.4.jar" />
             <pathelement location="${library.directory}/spin.jar" />
             <pathelement location="${library.directory}/glazedlists-1.5.0_java14.jar" />
           <classpath>
             <pathelement location="${build.lib}/jabref.jar"/>
             <pathelement location="${library.directory}/antlr.jar" />
-            <pathelement location="${library.directory}/looks-2.0.1.jar" />
+            <pathelement location="${library.directory}/looks-2.0.4.jar" />
             <pathelement location="${library.directory}/forms-1.0.4.jar" />
             <pathelement location="${library.directory}/spin-1.4.jar" />
             <pathelement location="${library.directory}/glazedlists-1.5.0_java14.jar" />
           <classpath>
             <pathelement location="${build.lib}/jabref.jar"/>
             <pathelement location="${library.directory}/antlr.jar" />
-            <pathelement location="${library.directory}/looks-2.0.1.jar" />
+            <pathelement location="${library.directory}/looks-2.0.4.jar" />
             <pathelement location="${library.directory}/forms-1.0.4.jar" />
             <pathelement location="${library.directory}/spin-1.4.jar" />
             <pathelement location="${library.directory}/glazedlists-1.5.0_java14.jar" />
         <target name="compile">
                 <mkdir dir="${build.classes}" />
                 <!--deprecation="on"-->
-                <javac debug="on" deprecation="on" destdir="${build.classes}" source="1.4" target="1.4">
+                <javac debug="off" deprecation="on" destdir="${build.classes}" source="1.4" target="1.4">
                         <src path="${java.dir}"/>
                         <exclude name="tests/**"/>
                         <classpath>
                                 <!--<pathelement location="${library.directory}/commons-httpclient-2.0.jar" />
                                 <pathelement location="${library.directory}/commons-logging.jar" />-->
                                 <pathelement location="${library.directory}/antlr.jar" />
-                                <pathelement location="${library.directory}/looks-2.0.1.jar" />
+                                <pathelement location="${library.directory}/looks-2.0.4.jar" />
                                 <pathelement location="${library.directory}/forms-1.0.4.jar" />
                                 <pathelement location="${library.directory}/spin-1.4.jar" />
                                 <pathelement location="${library.directory}/glazedlists-1.5.0_java14.jar" />
                                 <!--<pathelement location="${library.directory}/commons-httpclient-2.0.jar" />
                                 <pathelement location="${library.directory}/commons-logging.jar" />-->
                                 <pathelement location="${library.directory}/antlr.jar" />
-                                <pathelement location="${library.directory}/looks-2.0.1.jar" />
+                                <pathelement location="${library.directory}/looks-2.0.4.jar" />
                                 <pathelement location="${library.directory}/spin-1.4.jar" />
                         </classpath>
                 </javac>
         <target name="osx">
                 <mkdir dir="${build.classes}" />
 
-                <javac srcdir="${osx.dir}" debug="on" destdir="${build.classes}" target="1.4">
+                <javac srcdir="${osx.dir}" debug="off" destdir="${build.classes}" target="1.4">
                 </javac>
         </target>
 
                 <mkdir dir="${build.images}" />
                 <copy todir="${build.images}">
                         <fileset dir="${images.dir}">
-                                <include name="*" />
+                                <include name="**" />
                         </fileset>
                 </copy>
 
@@ -411,7 +411,7 @@ version=${jabref.version}</echo>
                 <unjar src="${library.directory}/commons-logging.jar" dest="${build.tmp}" />-->
                 <unjar src="${library.directory}/antlr.jar" dest="${build.tmp}" />
                 <!--                <unjar src="${library.directory}/plastic-1.2.1.jar" dest="${build.classes}" />-->
-                <unjar src="${library.directory}/looks-2.0.1.jar" dest="${build.tmp}" />
+                <unjar src="${library.directory}/looks-2.0.4.jar" dest="${build.tmp}" />
                 <unjar src="${library.directory}/forms-1.0.4.jar" dest="${build.tmp}" />
                 <unjar src="${library.directory}/spin-1.4.jar" dest="${build.tmp}" />
                 <unjar src="${library.directory}/glazedlists-1.5.0_java14.jar" dest="${build.tmp}" />
@@ -546,8 +546,8 @@ Number (CCN)           maintenance
                                 <!--<pathelement location="${library.directory}/commons-httpclient-2.0.jar" />
                                 <pathelement location="${library.directory}/commons-logging.jar" />-->
                                 <pathelement location="${library.directory}/antlr.jar" />
-                                <pathelement location="${library.directory}/looks-2.0.1.jar" />
-                                <pathelement location="${library.directory}/looks-2.0.1.jar" />
+                                <pathelement location="${library.directory}/looks-2.0.4.jar" />
+                                <pathelement location="${library.directory}/looks-2.0.4.jar" />
                                 <pathelement location="${library.directory}/spin-1.4.jar" />
                         </classpath>
 
diff --git a/lib/looks-2.0.1.jar b/lib/looks-2.0.1.jar
deleted file mode 100644 (file)
index e969b64..0000000
Binary files a/lib/looks-2.0.1.jar and /dev/null differ
diff --git a/lib/looks-2.0.4.jar b/lib/looks-2.0.4.jar
new file mode 100644 (file)
index 0000000..e852c9d
Binary files /dev/null and b/lib/looks-2.0.4.jar differ
index 59a599fd7f9f16002f105443a4e72ce06295a9d4..9a8810177e6603bb1ab0dbaffabfd7540c45841a 100755 (executable)
@@ -6,58 +6,63 @@
 <H1>JabRef version @version@ </H1>
 
 (c) 2006
+<p>
+<img src="/images/JabRef-icon-48.png"></img>
 
 
 <P>
-JabRef is freely distributable under the terms of the
-<a href="License.html">GNU Public License</a>, version 2.
+JabRef is freely distributable under the terms of the GNU
+<a href="License.html">General Public License</a>, version 2.
 
 <H2>Developers:</H2>
-Morten O. Alver<BR>
-Nizar N. Batada<BR>
-Michel Baylac<BR>
-Guillaume Gardey<BR>
-Cyrille d'Haese<BR>
-Raik Nagel<BR>
-Ellen Reitmayr<BR>
-Andreas Rudert<BR>
-Michael Spiegel<BR>
-Ulrik Stervbo<BR>
-Dominik Wa&szlig;enhoven<BR>
-Joerg K. Wegner<BR>
-Michael Wrighton<BR>
-Egon Willighagen <BR>
-J&ouml;rg Zieren<BR>
+Morten O. Alver,
+Nizar N. Batada,
+Michel Baylac,
+Guillaume Gardey,
+Cyrille d'Haese,
+Raik Nagel,
+Ellen Reitmayr,
+Andreas Rudert,
+Michael Spiegel,
+Ulrik Stervbo,
+Dominik Wa&szlig;enhoven,
+Joerg K. Wegner,
+Michael Wrighton,
+Egon Willighagen,
+J&ouml;rg Zieren
 
 <H2>Contributions from:</H2>
-Kolja Brix<BR>
-Fr&eacute;d&eacute;ric Darboux<BR>
-Fabrice Dessaint<BR>
-Nathan Dunn<BR>
-Brian Van Essen<br>
-Alexis Gallagher<BR>
-Sascha Hunold<BR>
-Bernd Kalbfuss<BR>
-Martin K&auml;hmer<BR>
-Ervin Kolenovic<BR>
-Jeffrey Kuhn<BR>
-Alex Montgomery<BR>
-John Relph<BR>
-Moritz Ringler<BR>
-Andreas Rudert<BR>
-Rudolf Seemann<BR>
-Toralf Senger<br>
-Mike Smoot<BR>
-Martin Stolle<BR>
-David Weitzman<BR>
-Seb Wills<BR>
+Kolja Brix,
+Fr&eacute;d&eacute;ric Darboux,
+Fabrice Dessaint,
+Nathan Dunn,
+Brian Van Essen,
+Alexis Gallagher,
+Sascha Hunold,
+Bernd Kalbfuss,
+Martin K&auml;hmer,
+Ervin Kolenovic,
+Krzysztof A. Ko&#347;ciuszkiewicz,
+Jeffrey Kuhn,
+Alex Montgomery,
+Christopher Oezbek,
+John Relph,
+Moritz Ringler,
+Andreas Rudert,
+Rudolf Seemann,
+Toralf Senger,
+Mike Smoot,
+Martin Stolle,
+David Weitzman,
+Seb Wills,
+John Zedlewski
 
 <H2>Thanks to:</H2>
-Samin Muhammad Ridwanul Karim<BR>
-Stefan Robert<BR>
+Samin Muhammad Ridwanul Karim,
+Stefan Robert
 
 <H2>Third-party software used:</H2>
-JabRef uses JGoodies Looks 1.2.2 and JGoodies Forms 1.0.4, distributed by JGoodies
+JabRef uses JGoodies Looks 2.0.4 and JGoodies Forms 1.0.5, distributed by JGoodies
 (<code>http://www.jgoodies.com</code>) under the terms of the BSD License (see
 <code>http://www.opensource.org/licenses/bsd-license.html</code> for details).
 <P>
@@ -66,7 +71,7 @@ Lentzsch, which are distributed under <A HREF="jgoodies.html">these terms</A>.
 
 <P>
 Command line options are parsed using RitOpt (<code>http://ritopt.sourceforge.net</code>). RitOpt
-is distributed under the terms of the <a href="License.html">GNU Public License</a>,
+is distributed under the terms of the GNU <a href="License.html">General Public License</a>,
 version 2.
 <P>
 JabRef uses the ANTLR parser generator for interpreting search strings. ANTLR is
@@ -75,28 +80,19 @@ licensing terms.
 <p>
 For table presentation and filtering, JabRef uses the Glazed Lists library
     (<code>http://publicobject.com/glazedlists</code>), which is
-    distributed under the Lesser GNU Public License.
+    distributed under the Lesser General Public License.
 <P>
 JabRef also uses the threading library Spin 1.3.1, which is distributed under the terms of
-the Lesser GNU Public License.
+the Lesser General Public License.
 
 <P>
 Some GUI components from the Microba library are used, it is licensed under a BSD style license.
 See <code>http://sourceforge.net/projects/microba/</code> for more informations.
-<P>
-This product includes software developed by the Apache Software
-Foundation (http://www.apache.org/). The libraries Commons Logging and
-Commons HTTP Client are distributed by The Jakarta Project
-(<code>http://jakarta.apache.org</code>) under the Apache Software
-License, Version 1.1. See the enclosed file
-<code>apache-license.txt</code> or
-<code>http://opensource.org/licenses/apachepl.php</code> for details.
 
 <P>
-Some icons are by us, but most are either from the Eclipse project (<code>http://www.eclipse.org</code>),
-distributed under the <a href="cpl-v10.html">Common Public License</a>, and from the QIcons package
-(<code>http://qt.osdn.org.ua</code>), which is distributed under the terms of the
-<a href="License.html">GNU Public License</a>.
+The majority of icons are from the Crystal Clear icon set by Everaldo
+(<code>http://www.everaldo.com</code>), which is distributed under the
+    terms of the Lesser General Public License.
 
 </CENTER>
 </BODY>
index 032c36192b37915c4891d85ff2c5a84fd505910f..4c33cb1b9667ea332c63da043e7f79ab2b79575a 100644 (file)
@@ -5,6 +5,11 @@
 
 <H1>Importing From CiteSeer</H1>
 
+
+CiteSeer is a scientific literature digital library and search engine
+that focuses primarily on the literature in computer and information
+science.
+
 <H2>Importing An Entry From CiteSeer</H2>
 
 JabRef can download information about a particular citation from the CiteSeer database.
index 9e3a9808863e91a3f77c2aec03755f726fbb94c8..732716829a6a4227156d360a6d0e56910be3fc87 100644 (file)
@@ -132,124 +132,4 @@ The <b>Refresh</b> button updates the entry table to reflect the current groups
 
 If a refining group is a subgroup of a group that includes its subgroups -- the refining group's siblings --, these siblings are ignored when the refining group is selected.
 
-Selecting a group shows the entries contained in that group. Selecting multiple groups shows the entries contained in any group (union) or those contained in all groups (intersection), depending on the current settings. All this is explained in detail below.
-<p>
-Group definitions are database-specific; they are saved as a <tt>@COMMENT</tt> block in the <tt>.bib</tt>-file and are shared among all users. (Future versions of JabRef might support user-dependent groups.)
-
-<H2>Interface</H2>
-
-The groups interface is shown in the side pane on the left of the screen. It can be toggled on or off by pressing <tt>CTRL-SHIFT-G</tt> or by the groups button in the toolbar. The interface has several buttons, but most functions are accessed via a context ("right-click") menu. Drag and Drop is also supported.
-<p>
-
-<table cellspacing=0 cellpadding=5 border=0 bgcolor=#c0ffc0>
-<tr><td>
-<h2>Some quick examples</h2>
-
-You might want to...
-
-<h3>...just create a group and assign some entries to it</h3>
-
-Ensure that the groups interface is visible. Press the <b>New Group</b> button, enter a name for the group, then press OK, leaving all values at their defaults. Now select the entries to be assigned to the group and use Drag and Drop to the group, or the option <b>Add to group</b> in the context menu. Finally select the group to see its content (which should be the entries you just assigned).
-
-<h3>...use the <tt>keywords</tt> field to group the entries</h3>
-
-Ensure that the groups interface is visible. Press the <b>New Group</b> button, enter a name for the group, and select the option to dynamically group entries by searching a field for a keyword. Enter the keyword to search for, then click OK. Finally select the group to see its content (which should be all entries whose <tt>keywords</tt> field contains the keyword you specified).
-
-<h3>...use a free-form search expression to define a group</h3>
-
-Ensure that the groups interface is visible. Press the <b>New Group</b> button, enter a name for the group, and select the option to dynamically group entries by a free-form search expression. Enter <tt>author=smith</tt> as a search expression (replace <tt>smith</tt> with a name that actually occurs in your database) and click <b>OK</b>. Finally select the group to see its content (which should be all entries whose <tt>author</tt> field contains the name you specified).
-
-<h3>...combine multiple groups</h3>
-
-Create two different groups (e.g. as described above). Click the <b>Settings</b> button and make sure that <b>Union</b> is selected. Now select both groups. You should see all entries contained in any of the two groups. Click <b>Settings</b> again and select <b>Intersection</b>. Now you should see only those entries contained in both groups (which might be none at all, or exactly the same entries as before in case both groups contain the same entries).
-
-<h3>...identify overlapping groups</h3>
-
-JabRef allows you to easily identify groups that overlap with the currently selected groups (i.e. that contain at least one entry that is also contained in the currently selected groups). Click <b>Settings</b> and activate the option to highlight overlapping groups. Then select a group that overlaps with other groups. The other groups should be highlighted.
-
-</tr></td>
-</table>
-<p>
-
-<H2>Types of groups</H2>
-
-In JabRef 1.8 there are four different types of groups:
-
-<ol>
-<li> The group <b>All Entries</b>, which -- as the name suggests -- contains all entries, is always present and cannot be edited or removed.
-<li> <b>Static groups</b> behave like directories on disk and contain only those entries that you explicitly assign to them.
-<li> <b>Dynamic groups based on keyword search</b> contain entries in which a certain BibTeX field (e.g. <tt>keywords</tt>) contains a certain keyword (e.g. <tt>electrical</tt>). This method does not require manual assignment of entries, but uses information that is already present in the database. If all entries in your database have suitable keywords in their <tt>keywords</tt> field, using this type of group might be the best choice.
-<li> <b>Dynamic groups based on free-form search expressions</b> contain entries that match a specified search expression, using the same syntax as the <a href="SearchHelp.html">search panel</a> on the side pane. This <a href="SearchHelp.html#advanced">syntax</a> supports logical operators (<tt>AND</tt>, <tt>OR</tt>, <tt>NOT</tt>) and allows to specify one or more BibTeX fields to search, facilitating more flexible group definitions than a keyword search (e.g. <tt>author=smith and title=electrical</tt>).
-</ol>
-
-Every group that you create is of one of the last three types. The group editing dialog, which is invoked by double-clicking on a group, shows a short description of the selected/edited group in plain English.
-
-<H2>Groups structure, creating and removing groups</H2>
-
-Just like directories, groups are structured like a tree, with the group <b>All Entries</b> at the root. By right-clicking on a group you can add a new group to the tree, either at the same level as the selected group or as a subgroup of it. The <b>New Group</b> button lets you create a new subgroup of the group <b>All Entries</b>, regardless of the currently selected group(s). The context menu also allows to remove groups and/or subgroups, to sort subgroups alphabetically, or to move groups to a different location in the tree. The latter can also be done by Drag and Drop, with the restriction that Drag and Drop does not support changing the order of a group's subgroups.
-<p>
-Undo and redo is supported for all edits.
-
-<H3>Static groups</h3>
-
-Static groups are populated only by explicit manual assignment of entries. After creating a static group you select the entries to be assigned to it, and use either Drag and Drop or the main table's context menu to perform the assignment. To remove entries from a static group, select them and use the main table's context menu. There are no options to be configured.
-<p>
-This method of grouping requires that all entries have a unique BibTeX key. In case of missing or duplicate BibTeX keys, the assignment of the affected entries cannot be correctly restored in future sessions.
-
-<H3>Dynamic groups</h3>
-
-The content of a dynamic group is defined by a logical condition. Only entries that meet this condition are contained in the group. This method uses the information stored in the database itself, and updates dynamically whenever the database changes.
-<p>
-Two types of conditions can be used:
-<dl>
-<dt><b>Searching a field for a keyword</b></dt>
-<dd>
-This method groups entries in which a specified BibTeX field (e.g. <tt>keywords</tt>) contains a specified search term (e.g. <tt>electrical</tt>). Obviously, for this to work, the grouping field must be present in every entry, and its content must be accurate. The above example would group all entries referring to something electrical. Using the field <tt>author</tt> allows to group entries by a certain author, etc. The search can either be done as a plain-text or a regular expression search. In the former case, JabRef allows to manually assign/remove entries to/from the group by simply appending/removing the search term to/from the content of the grouping field. This makes sense only for the <tt>keywords</tt> field or for self-defined fields, but obviously not for fields like <tt>author</tt> or <tt>year</tt>.
-</dd>
-<dt><b>Using a free-form search expression</b></dt>
-<dd>
-This is similar to the above, but rather than search a single field for a single search term, the <a href="SearchHelp.html#advanced">search expression syntax</a> can be used, which supports logical operators (<tt>AND</tt>, <tt>OR</tt>, <tt>NOT</tt>) and allows to search multiple BibTeX fields. For example, the search expression <tt>keywords=regression and not keywords=linear</tt> groups entries concerned with non-linear regression.
-</dd>
-</dl>
-
-In the groups view, dynamic groups are shown in <i>italics</i> by default. This can be turned off in the preferences.
-
-<h3>Hierarchical context</h3>
-
-By default, a group is <b>independent</b> of its position in the groups tree: When selected, only the group's contents are shown. However, especially when using dynamic groups, it is often useful to define a subgroup that <b>refines its supergroup</b>, i.e., when selected, entries contained in both groups are displayed. For example, create a supergroup containing entries with the keyword <tt>distribution</tt> and a subgroup containing entries with the keyword <tt>gauss</tt> that refines this supergroup. Selecting the subgroup now displays entries that match both conditions, i.e. are concerned with Gaussian distributions. By adding another refining subgroup for <tt>laplace</tt> to the original supergroup, the grouping can easily be extended. In the groups tree, refining groups have a special icon (this can be turned off in the preferences).
-<p>
-The logical complement to a refining group is a group that <b>includes its subgroups</b>, i.e. when selected, not only the group's own entries, but also its subgroups' entries are shown. In the groups tree, this type of group has a special icon (this can be turned off in the preferences).
-
-<h2>Viewing a group's entries, combining multiple groups</H2>
-
-Selecting a group shows the entries contained in that group by highlighting them and, depending on the settings (accessible by clicking the <b>Settings</b> button), moving them to the top of the list and/or selecting them. These options are identical to those available for the regular search.
-<p>
-When multiple groups are selected, either the union or the intersection of their content is shown, depending on the current settings. This allows to quickly combine multiple conditions, e.g. if you have a static group <tt>Extremely Important</tt> to which you assign all extremely important entries, you can view the extremely important entries in any other group by selecting both groups (this requires to have <b>Intersection</b> selected in the settings).
-
-<h2>Groups and searching</h2>
-
-When viewing the contents of the selected group(s), a search can be performed within these contents using the regular search facility.
-
-<h2>Highlighting overlapping groups</h2>
-
-The <b>Settings</b> button offers an option to highlight overlapping groups. If this is activated, upon selection of one or more groups, all groups that contain at least one of the entries contained in the currently selected group(s) are highlighted. This quickly identifies overlap between the groups' contents. You might, for example, create a group <tt>To Read</tt> that contains all entries which you plan to read. Now, whenever you select any group, the group <tt>To Read</tt> is highlighted if the selected group contains entries that you plan to read.
-
-<h2>Advanced features</h2>
-
-After mastering the grouping concepts described above, the following advanced features might come in handy.
-
-<h3>Automatically creating dynamic groups</h3>
-
-By clicking the <b>Automatically create groups for database</b> button, you can quickly create a set of groups appropriate for your database. This feature will gather all words found in a specific field of your choice, and create a group for each word. This is useful for instance if your database contains suitable keywords for all entries. By autogenerating groups based on the <tt>keywords</tt> field, you should have a basic set of groups at no cost.
-<p>
-You can also specify characters to ignore, for instance commas used between keywords. These will be treated as separators between words, and not part of them. This step is important for combined keywords such as <tt>laplace distribution</tt> to be recognized as a single semantic unit. (You cannot use this option to remove complete words. Instead, delete the unwanted groups manually after they were created automatically.)
-
-<h3>Refreshing the groups view</h3>
-
-The <b>Refresh</b> button updates the entry table to reflect the current groups selection. This is usually done automatically, but in rare occasions (e.g. after a group-related undo/redo) a manual refresh is required.
-
-<h3>Mixing refining groups with including groups</h3>
-
-If a refining group is a subgroup of a group that includes its subgroups -- the refining group's siblings --, these siblings are ignored when the refining group is selected.
-
 </HTML> 
\ No newline at end of file
index 43f2130d5a75d2a200237415b775ccea0ad0b7b0..78deac07524bd3a9523c490ee31c4425a4474e0d 100644 (file)
@@ -5,6 +5,9 @@
 
 <H1>Search IEEEXplore</H1>
 
+IEEEXplore delivers access to technical literature in electrical engineering,
+computer science, and electronics.
+<p>
 JabRef can download citations from the IEEEXplore database.
 To use this feature, choose <b>Web search -> Search IEEEXplore</b>,
 and the search interface will appear in the side pane.
index 55eaa5a14701cf2868e1834ebea4d58d1bf7f27f..5b97f19e560a16698919c90c580922565ae922d2 100644 (file)
@@ -5,6 +5,10 @@
 
 <H1>Fetching Medline entries</H1>
 
+MEDLINE is the U.S. National Library of Medicine's premier bibliographic database.
+It contains references to journal articles in life sciences
+with a concentration on biomedicine.
+<P>
 JabRef can download citations from the Medline database.
 To use this feature, choose <b>Web search -> Fetch Medline</b>,
 and the Medline interface will appear in the side pane.
index 8bd20ff92c426d55896a17e62b4db8dd9b8b09a4..2bfe7ed0e4a6b555e4f788fcd96c44e150252bd7 100644 (file)
@@ -7,71 +7,76 @@
 <h1>JabRef Version @version@</h1>
 
 (c) 2006
+<p>
+<img src="/images/JabRef-icon-48.png"></img>
 
 
 <p>
-JabRef ist frei verf&uuml;gbar unter den Bedingungen der
-<a href="License.html">Gnu Public License</a>.
+JabRef ist frei verf&uuml;gbar unter den Bedingungen der GNU
+<a href="License.html">General Public License</a>.
 
 </p><h2>Entwickler:</h2>
-Morten O. Alver<br>
-Nizar N. Batada<br>
-Michel Baylac<br>
-Guillaume Gardey<br>
-Cyrille d'Haese<br>
-Raik Nagel<br>
-Ellen Reitmayr<br>
-Andreas Rudert<br>
-Michael Spiegel<br>
-Ulrik Stervbo<br>
-Dominik Wa&szlig;enhoven<br>
-Joerg K. Wegner<br>
-Michael Wrighton<br>
-Egon Willighagen <br>
-J&ouml;rg Zieren<br>
+Morten O. Alver,
+Nizar N. Batada,
+Michel Baylac,
+Guillaume Gardey,
+Cyrille d'Haese,
+Raik Nagel,
+Ellen Reitmayr,
+Andreas Rudert,
+Michael Spiegel,
+Ulrik Stervbo,
+Dominik Wa&szlig;enhoven,
+Joerg K. Wegner,
+Michael Wrighton,
+Egon Willighagen,
+J&ouml;rg Zieren
 
 <h2>Beitr&auml;ge von:</h2>
-Kolja Brix<br>
-Fr&eacute;d&eacute;ric Darboux<br>
-Fabrice Dessaint<br>
-Nathan Dunn<br>
-Brian van Essen<br>
-Alexis Gallagher<br>
-Sascha Hunold<br>
-Bernd Kalbfuss<br>
-Martin K&auml;hmer<br>
-Ervin Kolenovic<BR>
-Jeffrey Kuhn<br>
-Alex Montgomery<br>
-John Relph<br>
-Moritz Ringler<br>
-Rudolf Seemann<br>
-Toralf Senger<br>    
-Mike Smoot<br>
-Martin Stolle<br>
-David Weitzman<br>
-Seb Wills<br>
-
+Kolja Brix,
+Fr&eacute;d&eacute;ric Darboux,
+Fabrice Dessaint,
+Nathan Dunn,
+Brian van Essen,
+Alexis Gallagher,
+Sascha Hunold,
+Bernd Kalbfuss,
+Martin K&auml;hmer,
+Ervin Kolenovic,
+Krzysztof A. Ko&#347;ciuszkiewicz,
+Jeffrey Kuhn,
+Alex Montgomery,
+Christopher Oezbek,
+John Relph,
+Moritz Ringler,
+Rudolf Seemann,
+Toralf Senger,
+Mike Smoot,
+Martin Stolle,
+David Weitzman,
+Seb Wills,
+John Zedlewski
+    
 <h2>Dank an:</h2>
-Samin Muhammad Ridwanul Karim<br>
-Stefan Robert<br>
+Samin Muhammad Ridwanul Karim,
+Stefan Robert
 
 <h2>Benutzte Fremdsoftware:</h2>
-JabRef benutzt JGoodies Looks 1.2.2 und JGoodiesForms 1.0.4, das von JGoodies (<code>http://www.jgoodies.com</code>) unter den Bedingungen der BSD License vertrieben wird (siehe <code>http://www.opensource.org/licenses/bsd-license.html</code> f&uuml;r n&auml;here Einzelheiten dieser Lizenz).
+JabRef benutzt JGoodies Looks 2.0.4 und JGoodiesForms 1.0.5, das von JGoodies (<code>http://www.jgoodies.com</code>) unter den Bedingungen der BSD License vertrieben wird (siehe <code>http://www.opensource.org/licenses/bsd-license.html</code> f&uuml;r n&auml;here Einzelheiten dieser Lizenz).
 <p>
 Au&szlig;erdem werden zwei zust&auml;tzliche Klassen
 (SimpleInternalFrame and UIFSplitPane) von Karsten Lentzsch benutzt,
 die unter <a href="jgoodies.html">diesen Bedingungen</a> vertrieben werden.
 </p><p>
-Kommandozeilenbefehle werden geparst mit RitOpt (<code>http://ritopt.sourceforge.net</code>), das unter den Bedingungen der <a href="License.html">GNU Public License</a> (Version 2) verf&uuml;gbar ist.
+Kommandozeilenbefehle werden geparst mit RitOpt (<code>http://ritopt.sourceforge.net</code>), das unter den Bedingungen der GNU <a href="License.html">General Public License</a> (Version 2) verf&uuml;gbar ist.
 </p><p>
 JabRef verwendet f&uuml;r die Suche den ANTLR Parser Generator. ANTLR ist public domain software - siehe <code>http://www.antlr.org/license.html</code> f&uuml;r die Lizenzbedingungen.
 </p><p>
 F&uuml;r die Darstellung und Filterung der Tabelle benutzt JabRef die Glazed Lists library
-    (<code>http://publicobject.com/glazedlists</code>), die unter den Bedingungen der Lesser GNU Public License vertrieben wird.
+    (<code>http://publicobject.com/glazedlists</code>), die unter den Bedingungen der Lesser General Public License vertrieben wird.
 </p><p>
 JabRef benutzt dar&uuml;ber hinaus die "threading library" Spin 1.3.1,
-die unter den Bedingungen der LGPL (Lesser GNU Public License)
+die unter den Bedingungen der LGPL (Lesser General Public License)
 vertrieben wird.<br>
 </p>
 <p>F&uuml;r die einfache Auswahl und den Umgang mit Datumsangaben
@@ -80,9 +85,9 @@ einer BSD Lizenz vertrieben, siehe auch <code>http://sourceforge.net/projects/mi
 f&uuml;r eine genauere Beschreibung.
 
 </p><p>
-Dieses Produkt beinhaltet Software, die von der Apache Software Foundation (<code>http://www.apache.org</code>) entwickelt wurde. Die Bibliotheken "Commons Logging" und "Commons HTTP Client" werden von The Jakarta Project (<code>http://jakarta.apache.org</code>) unter der Apache Software Lizenz (Version 1.1) vertrieben (siehe die beigelegte Datei <code>apache-license.txt</code> oder <code>http://opensource.org/licenses/apachepl.php</code> f&uuml;r n&auml;here Einzelheiten dieser Lizenz).
-</p><p>
-Einige Icons sind von uns, aber die meisten stammen vom Eclipse Projekt (<code>http://www.eclipse.org</code>), das unter den Bedingungen der <a href="cpl-v10.html">Common Public License</a> vertrieben wird, sowie vom QIcons Paket (<code>http://qt.osdn.org.ua</code>), das unter den Bedingungen der <a href="License.html">GNU Public License</a> vertrieben wird.
+The majority of icons are from the Crystal Clear icon set by Everaldo
+(<code>http://www.everaldo.com</code>), which is distributed under the
+    terms of the Lesser General Public License.
 
 </p></center>
 </body></html>
\ No newline at end of file
index 794c8b664b10c3e8dba9fe95e68f4dae8cc87c71..b891a3475c7ef2ac2cdeceea918f5f0de1ba3dd0 100644 (file)
@@ -6,86 +6,88 @@
 <H1>JabRef version @version@</H1>
 
 (c) 2006
+<p>
+<img src="/images/JabRef-icon-48.png"></img>
 
 
 <P>
-JabRef est librement distribuable selon les termes de la 
-<a href="License.html">GNU Public License</a>, version 2.
+JabRef est librement distribuable selon les termes de la GNU
+<a href="../License.html">General Public License</a>, version 2.
 
 <H2>D&eacute;veloppeurs&nbsp;:</H2>
-Morten O. Alver<BR>
-Nizar N. Batada<BR>
-Michel Baylac<BR>
-Guillaume Gardey<BR>
-Cyrille d'Haese<BR>
-Raik Nagel<BR>
-Ellen Reitmayr<BR>
-Andreas Rudert<BR>    
-Michael Spiegel<BR>
-Ulrik Stervbo<BR>
-Dominik Wa&szlig;enhoven<BR>
-Joerg K. Wegner<BR>
-Michael Wrighton<BR>
-Egon Willighagen <BR>
-J&ouml;rg Zieren<BR>
+Morten O. Alver,
+Nizar N. Batada,
+Michel Baylac,
+Guillaume Gardey,
+Cyrille d'Haese,
+Raik Nagel,
+Ellen Reitmayr,
+Andreas Rudert,
+Michael Spiegel,
+Ulrik Stervbo,
+Dominik Wa&szlig;enhoven,
+Joerg K. Wegner,
+Michael Wrighton,
+Egon Willighagen,
+J&ouml;rg Zieren
 
 <H2>Contributions de&nbsp;:</H2>
-Kolja Brix<BR>
-Fr&eacute;d&eacute;ric Darboux<BR>
-Fabrice Dessaint<BR>
-Nathan Dunn<BR>
-Brian Van Essen<br>
-Alexis Gallagher<BR>
-Sascha Hunold<BR>
-Bernd Kalbfuss<BR>
-Martin K&auml;hmer<BR>
-Ervin Kolenovic<BR>
-Jeffrey Kuhn<BR>
-Alex Montgomery<BR>
-John Relph<BR>
-Moritz Ringler<BR>
-Rudolf Seemann<BR>
-Toralf Senger<br>    
-Mike Smoot<BR>
-Martin Stolle<BR>
-David Weitzman<BR>
-Seb Wills<BR>
+Kolja Brix,
+Fr&eacute;d&eacute;ric Darboux,
+Fabrice Dessaint,
+Nathan Dunn,
+Brian Van Essen,
+Alexis Gallagher,
+Sascha Hunold,
+Bernd Kalbfuss,
+Martin K&auml;hmer,
+Ervin Kolenovic,
+Krzysztof A. Ko&#347;ciuszkiewicz,
+Jeffrey Kuhn,
+Alex Montgomery,
+Christopher Oezbek,
+John Relph,
+Moritz Ringler,
+Rudolf Seemann,
+Toralf Senger,
+Mike Smoot,
+Martin Stolle,
+David Weitzman,
+Seb Wills,
+John Zedlewski
 
 <H2>Remerciements &agrave;&nbsp;:</H2>
-Samin Muhammad Ridwanul Karim<BR>
-Stefan Robert<BR>
+Samin Muhammad Ridwanul Karim,
+Stefan Robert
 
 <H2>Logiciels tiers utilis&eacute;s&nbsp;:</H2>
-JabRef utilise JGoodies Looks 1.2.2 et JGoodies Forms 1.0.4, distribu&eacute;s par JGoodies
+JabRef utilise JGoodies Looks 2.0.4 et JGoodies Forms 1.0.5 distribu&eacute;s par JGoodies
 (<code>http://www.jgoodies.com</code>) selon les termes de la License BSD (voir
 <code>http://www.opensource.org/licenses/bsd-license.html</code> pour plus de d&eacute;tails).
 <P>
 Deux classes additionnelles sont aussi incluses (SimpleInternalFrame et UIFSplitPane), de Karsten
-Lentzsch, qui sont distribu&eacute;es sous <A HREF="jgoodies.html">ces termes</A>.
+Lentzsch, qui sont distribu&eacute;es sous <A HREF="../jgoodies.html">ces termes</A>.
 
 <P>
 Les options de la ligne de commande sont trait&eacute;es en utilisant RitOpt (<code>http://ritopt.sourceforge.net</code>). RitOpt
-est distribu&eacute;e selon les termes de la  <a href="License.html">GNU Public License</a>,
+est distribu&eacute;e selon les termes de la GNU <a href="../License.html">General Public License</a>,
 version 2.
 <P>
 JabRef utilise le g&eacute;n&eacute;rateur d'analyseur syntaxique ANTLR pour interpr&eacute;ter les cha&icirc;nes de recherche. ANTLR est un logiciel du domaine public
  - voir <code>http://www.antlr.org/license.html</code> pour les termes de la license.
 <p>
 Pour la pr&eacute;sentation de la table et le filtrage, JabRef utilise la biblioth&egrave;que Glazed Lists
-(<code>http://publicobject.com/glazedlists</code>), qui est distribu&eacute;e sous la license "Lesser GNU Public License".
+(<code>http://publicobject.com/glazedlists</code>), qui est distribu&eacute;e sous la license "Lesser General Public License".
 <P>
 JabRef utilise aussi la biblioth&egrave;que de threading Spin 1.3.1, qui est distribu&eacute;e selon les termes de la Lesser GNU Public License.
+
 <P>
-Ce produit inclut des logiciels d&eacute;velopp&eacute;s par Apache Software
-Foundation (http://www.apache.org/). Les biblioth&egrave;ques Commons Logging et
-Commons HTTP Client sont distribu&eacute;es par The Jakarta Project
-(<code>http://jakarta.apache.org</code>) sous la License Apache Software, Version 1.1. Voir le fichier inclus
-<code>apache-license.txt</code> ou
-<code>http://opensource.org/licenses/apachepl.php</code> pour plus de d&eacute;tails.
+Certains composants de l'interface graphique de la bibliothèque Microba sont utilisés. Elle est distribuée sous une license de type BSD. Voir <code>http://sourceforge.net/projects/microba/</code> pour plus d'informations.
 
 <P>
-Certains ic&ocirc;nes sont de notre facture, mais la plupart viennent soit du projet Eclipse  (<code>http://www.eclipse.org</code>),
-distribu&eacute;s sous la <a href="cpl-v10.html">Common Public License</a>, soit du paquetage  QIcons (<code>http://qt.osdn.org.ua</code>), qui est distribu&eacute; selon les termes de la <a href="License.html">GNU Public License</a>.
+La majorité des icônes proviennent de l'ensemble d'icônes Crystal Clear par Everaldo
+(<code>http://www.everaldo.com</code>), qui est distribuée sous les termes de la
+Lesser General Public License.
 
 </CENTER>
 </BODY>
index ec5efd766243a29b3bb640264a987c30046bf323..6aad68a5a1904688c30b58aca18c4675c43b452c 100644 (file)
@@ -5,6 +5,14 @@
 <basefont size="4" color="#2F4958" face="arial">
 
 <h1>R&eacute;cup&eacute;ration depuis CiteSeer</h1>
+
+
+CiteSeer est une biblioth&egrave;que num&eacute;rique et un moteur de
+recherche qui s'int&eacute;resse principalement &agrave; la
+litt&eacute;rature scientifique en informatique et science de
+l'information.
+
+
 <h2>R&eacute;cup&eacute;ration d'une entr&eacute;e depuis CiteSeer</h2>
 
 <p>
index 00857002bcb51c47874156469e0cd1a28d04414b..a57019016f58878fccf1bd14a453c953ec2b63fa 100644 (file)
@@ -5,8 +5,10 @@
 
 <H1>Recherche IEEEXplore</H1>
 
+IEEEXplore permet l'acc&egrave;s &agrave; de la litterature technique
+en g&eacute;nie &eacute;lectrique, informatique et &eacute;lectronique.
+<p>
 JabRef peut t&eacute;l&eacute;charger des citations &agrave; partir de la base de donn&eacute;es IEEEXplore.
-
 Pour utiliser cette fonction, s&eacute;lectionner <b>Recherche internet -> Recherche IEEEXplore</b>
 fera appara&icirc;tre l'interface de recherche dans le panneau lat&eacute;ral.
 <P>
@@ -21,7 +23,7 @@ vous seront retourn&eacute;s.
 <p>
 Vous pouvez choisir de t&eacute;l&eacute;charger les r&eacute;sum&eacute;s avec les informations de citation pour chaque
 entr&eacute;e en cochant la case <b>Inclure les r&eacute;sum&eacute;s</b>. Comme cela entra&icirc;ne une
-quantit&eacute; importante de requ&ecirc;tes r&eacute;seau, afin d'&eacute;viter une pression excessive 
+quantit&eacute; importante de requ&ecirc;tes r&eacute;seau, afin d'&eacute;viter une pression excessive
 sur le site internet IEEExplore, Jabref refusera de t&eacute;l&eacute;charger les r&eacute;sum&eacute;s
 pour les recherches retournant plus qu'un nombre donn&eacute; de r&eacute;sultats.
 
index 2704a50d5bac842d6aee41bb4164edd2fd2bb1e9..93022c2eec2774b3a699959f16a7ffd675ca65a2 100644 (file)
@@ -6,6 +6,11 @@
 
 <h1>R&eacute;cup&eacute;ration d'entr&eacute;es depuis Medline</h1>
 
+MEDLINE est la principale base de donn&eacute;es bibliographique de la
+bibliothèque nationale de m&eacute;decine des Etats-Unis.
+Elle contient des r&eacute;f&eacute;rences &agrave; des articles de journaux
+sur les sciences de la vie avec une spécialisation
+sur la biom&eacute;decine.
 <p>
 JabRef peut t&eacute;l&eacute;charger des citations depuis la base de donn&eacute;es Medline. Pour r&eacute;aliser cette op&eacute;ration, s&eacute;lectionnez <b>Recherche internet -> Recherche Medline</b> et vous verrez appara&icirc;tre l'interface de Medline dans le panneau lat&eacute;ral.
 </p>
diff --git a/src/images/Close.gif b/src/images/Close.gif
deleted file mode 100644 (file)
index f53ee93..0000000
Binary files a/src/images/Close.gif and /dev/null differ
diff --git a/src/images/CopyKey.gif b/src/images/CopyKey.gif
deleted file mode 100755 (executable)
index f81c64a..0000000
Binary files a/src/images/CopyKey.gif and /dev/null differ
diff --git a/src/images/Hourglass.png b/src/images/Hourglass.png
deleted file mode 100644 (file)
index d93cadd..0000000
Binary files a/src/images/Hourglass.png and /dev/null differ
diff --git a/src/images/JabRef-Logo-small.gif b/src/images/JabRef-Logo-small.gif
deleted file mode 100644 (file)
index 2efd2e0..0000000
Binary files a/src/images/JabRef-Logo-small.gif and /dev/null differ
index 7f30a507bb870b64bbff09c9b5638d40609486a3..ff51d59dbc987f15569f99e029dea5a45624662c 100644 (file)
Binary files a/src/images/JabRef-Logo.icns and b/src/images/JabRef-Logo.icns differ
diff --git a/src/images/JabRef-icon-48.png b/src/images/JabRef-icon-48.png
new file mode 100644 (file)
index 0000000..ed424d7
Binary files /dev/null and b/src/images/JabRef-icon-48.png differ
index 4ea527b7d48038170111b32a502291177b4e5163..ca11220391501b12e76afaf39622899e87562090 100644 (file)
Binary files a/src/images/JabRef-icon.png and b/src/images/JabRef-icon.png differ
diff --git a/src/images/JabRef-icon.svg b/src/images/JabRef-icon.svg
new file mode 100644 (file)
index 0000000..1204858
--- /dev/null
@@ -0,0 +1,207 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="744.09448819"
+   height="1052.3622047"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.44"
+   sodipodi:docbase="/home/alver/Documents"
+   sodipodi:docname="jabrefIkon.svg">
+  <defs
+     id="defs4">
+    <linearGradient
+       id="linearGradient2915">
+      <stop
+         id="stop2917"
+         offset="0"
+         style="stop-color:white;stop-opacity:1;" />
+      <stop
+         id="stop2919"
+         offset="1"
+         style="stop-color:#dadce0;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2909">
+      <stop
+         id="stop2911"
+         offset="0"
+         style="stop-color:white;stop-opacity:1;" />
+      <stop
+         id="stop2913"
+         offset="1"
+         style="stop-color:#cfd1d7;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2897">
+      <stop
+         style="stop-color:#dadee7;stop-opacity:1;"
+         offset="0"
+         id="stop2899" />
+      <stop
+         style="stop-color:#1e68c6;stop-opacity:1;"
+         offset="1"
+         id="stop2901" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2889">
+      <stop
+         style="stop-color:#e0e4ee;stop-opacity:1;"
+         offset="0"
+         id="stop2891" />
+      <stop
+         style="stop-color:#e0e4ee;stop-opacity:0;"
+         offset="1"
+         id="stop2893" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2915"
+       id="linearGradient2971"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.115225,0,0,1,-1.889007,46.1244)"
+       x1="329.18756"
+       y1="289.87192"
+       x2="598.66205"
+       y2="548.62866" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2909"
+       id="linearGradient2974"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.082601,0,0,1,-1.374219,40)"
+       x1="145.45497"
+       y1="332.74286"
+       x2="326.12537"
+       y2="576.18854" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2909"
+       id="linearGradient2983"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(8.119652e-2,0,0,7.966468e-2,422.1323,954.272)"
+       x1="145.45497"
+       y1="332.74286"
+       x2="326.12537"
+       y2="576.18854" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2915"
+       id="linearGradient2985"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(8.119652e-2,0,0,7.966468e-2,424.2434,954.7598)"
+       x1="329.18756"
+       y1="289.87192"
+       x2="598.66205"
+       y2="548.62866" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2909"
+       id="linearGradient3878"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.824753e-2,0,0,3.538487e-2,403.2956,1005.814)"
+       x1="145.45497"
+       y1="332.74286"
+       x2="326.12537"
+       y2="576.18854" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2915"
+       id="linearGradient3880"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.863231e-2,4.140938e-3,-3.672702e-3,3.351102e-2,404.9189,1005.265)"
+       x1="329.18756"
+       y1="289.87192"
+       x2="598.66205"
+       y2="548.62866" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="50"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="21.286454"
+     inkscape:cx="416.46054"
+     inkscape:cy="31.511436"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:guide-bbox="false"
+     showguides="true"
+     inkscape:window-width="1118"
+     inkscape:window-height="944"
+     inkscape:window-x="0"
+     inkscape:window-y="0" />
+  <metadata
+     id="metadata7">
+    <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
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <rect
+       style="opacity:1;fill:#4f5f8f;fill-opacity:1"
+       id="rect2905"
+       width="716.55713"
+       height="730.3371"
+       x="10.717734"
+       y="89.297173" />
+    <path
+       style="fill:url(#linearGradient2974);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 122.04224,150.95548 C 208.65029,150.95548 286.97046,184.73542 286.97046,184.73542 C 286.97046,184.73542 372.48612,237.27117 327.52453,611.24332 C 314.57556,683.68157 250.81542,747.98797 172.90939,747.98797 C 95.003363,747.98797 50.24884,702.05483 50.24884,648.46615 C 119.867,694.3993 168.69957,681.54848 189.48514,672.96384 C 199.45516,668.84613 251.63441,636.1731 257.44572,548.94433 C 264.07602,449.42251 247.50026,297.84312 122.04224,150.95548 z "
+       id="path1972"
+       sodipodi:nodetypes="cccscssc" />
+    <path
+       style="fill:url(#linearGradient2971);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.05348015px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 322.49657,164.88378 C 533.15821,196.83799 712.94701,311.87314 516.81377,452.47165 C 462.33232,497.20754 627.59274,671.35798 692.97048,751.2435 C 544.0545,717.69157 402.40271,580.28849 400.58666,476.43731 C 398.77062,401.34492 516.81377,393.35637 516.81377,347.02276 C 516.81377,300.68916 344.28916,262.34411 322.49657,164.88378 z "
+       id="path1993"
+       sodipodi:nodetypes="cccc" />
+    <rect
+       style="opacity:1;fill:#4f5f8f;fill-opacity:1"
+       id="rect3872"
+       width="24.96747"
+       height="24.892717"
+       x="403.74191"
+       y="1008.134"
+       inkscape:export-xdpi="173.03"
+       inkscape:export-ydpi="173.03"
+       inkscape:export-filename="/home/alver/div/smalltheme/jabrefIkon-48.png" />
+    <path
+       style="fill:url(#linearGradient3878);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 407.84626,1010.4236 C 410.90607,1010.4236 413.43489,1010.4972 413.43489,1010.4972 C 413.43489,1010.4972 416.50376,1012.7951 414.91528,1026.0281 C 414.45779,1028.5913 412.2052,1030.8669 409.45284,1030.8669 C 406.70046,1030.8669 405.11931,1029.2413 405.11931,1027.3453 C 407.95995,1028.6292 410.06622,1027.9794 410.80057,1027.6755 C 411.15281,1027.5298 412.46165,1026.9172 412.43944,1023.8236 C 412.38788,1016.6442 413.08837,1015.0847 407.84626,1010.4236 z "
+       id="path3874"
+       sodipodi:nodetypes="cccscssc"
+       inkscape:export-filename="/home/alver/div/smalltheme/jabrefIkon-48.png"
+       inkscape:export-xdpi="173.03"
+       inkscape:export-ydpi="173.03" />
+    <path
+       style="fill:url(#linearGradient3880);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.05348015px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 415.71976,1010.449 C 423.13477,1010.8154 428.70544,1016.8245 421.39485,1020.8079 C 419.34326,1022.1048 424.42839,1028.5544 426.39975,1031.4741 C 421.3644,1029.7968 416.96212,1024.6664 417.28063,1021.1794 C 417.49352,1018.6562 421.61195,1018.8269 421.78212,1017.2742 C 421.95228,1015.7216 419.07637,1015.8865 415.71976,1010.449 z "
+       id="path3876"
+       sodipodi:nodetypes="ccccsc"
+       inkscape:export-filename="/home/alver/div/smalltheme/jabrefIkon-48.png"
+       inkscape:export-xdpi="173.03"
+       inkscape:export-ydpi="173.03" />
+  </g>
+</svg>
diff --git a/src/images/absIcon.png b/src/images/absIcon.png
deleted file mode 100644 (file)
index f249fda..0000000
Binary files a/src/images/absIcon.png and /dev/null differ
diff --git a/src/images/addtsk_tsk.gif b/src/images/addtsk_tsk.gif
deleted file mode 100644 (file)
index dad7260..0000000
Binary files a/src/images/addtsk_tsk.gif and /dev/null differ
diff --git a/src/images/backward_nav.gif b/src/images/backward_nav.gif
deleted file mode 100644 (file)
index 740419b..0000000
Binary files a/src/images/backward_nav.gif and /dev/null differ
diff --git a/src/images/close_view.gif b/src/images/close_view.gif
deleted file mode 100644 (file)
index 1aca259..0000000
Binary files a/src/images/close_view.gif and /dev/null differ
diff --git a/src/images/completeItem.png b/src/images/completeItem.png
deleted file mode 100644 (file)
index 5eeadc7..0000000
Binary files a/src/images/completeItem.png and /dev/null differ
diff --git a/src/images/configure2.png b/src/images/configure2.png
deleted file mode 100644 (file)
index 9df41c4..0000000
Binary files a/src/images/configure2.png and /dev/null differ
diff --git a/src/images/contents2.png b/src/images/contents2.png
deleted file mode 100644 (file)
index 2d94894..0000000
Binary files a/src/images/contents2.png and /dev/null differ
diff --git a/src/images/copy_edit.gif b/src/images/copy_edit.gif
deleted file mode 100644 (file)
index 4274b07..0000000
Binary files a/src/images/copy_edit.gif and /dev/null differ
diff --git a/src/images/crystal_16/1downarrow.png b/src/images/crystal_16/1downarrow.png
new file mode 100755 (executable)
index 0000000..2dd28e9
Binary files /dev/null and b/src/images/crystal_16/1downarrow.png differ
diff --git a/src/images/crystal_16/1leftarrow.png b/src/images/crystal_16/1leftarrow.png
new file mode 100755 (executable)
index 0000000..5b07c5e
Binary files /dev/null and b/src/images/crystal_16/1leftarrow.png differ
diff --git a/src/images/crystal_16/1rightarrow.png b/src/images/crystal_16/1rightarrow.png
new file mode 100755 (executable)
index 0000000..70cfd5f
Binary files /dev/null and b/src/images/crystal_16/1rightarrow.png differ
diff --git a/src/images/crystal_16/1uparrow.png b/src/images/crystal_16/1uparrow.png
new file mode 100755 (executable)
index 0000000..c6bd1fb
Binary files /dev/null and b/src/images/crystal_16/1uparrow.png differ
diff --git a/src/images/crystal_16/Icons.properties b/src/images/crystal_16/Icons.properties
new file mode 100644 (file)
index 0000000..f68961f
--- /dev/null
@@ -0,0 +1,69 @@
+jabrefIcon=JabRef-icon.png
+#jabrefIcon=ikon.gif
+about=JabRef-icon.png
+
+new=filenew.png
+open=fileopen.png
+loadSession=fileimport.png
+save=filesave.png
+saveAs=filesaveas.png
+copy=editcopy.png
+paste=editpaste.png
+cut=editcut.png
+undo=undo.png
+redo=redo.png
+refresh=reload.png
+left=1leftarrow.png
+right=1rightarrow.png
+up=1uparrow.png
+down=1downarrow.png
+add=edit_add.png
+remove=edit_remove.png
+delete=trash.png
+edit=edit.png
+help=help.png
+helpSmall=help.png
+helpContents=contents2.png
+search=search.png
+incSearch=search.png
+toggleSearch=search.png
+complete=button_ok.png
+wrong=cancel.png
+makeKey=wizard.png
+psSmall=ps.png
+pdfSmall=pdf-document.png
+openFile=pdf-document.png
+preferences=advancedsettings.png
+openUrl=agt_internet.png
+www=agt_internet.png
+wwwSmall=agt_internet_small.png
+medline=agt_internet.png
+integrityWarn=status_unknown.png
+integrityInfo=documentinfo.png
+integrityFail=gg_ignored.png
+
+togglePreview=text_bottom.png
+toggleGroups=queue.png
+editPreamble=preamble.png
+editStrings=strings.png
+emacs=emacs.png
+lyx=lyx2.png
+winedt=winedt.png
+required=reqIcon.png
+optional=optIcon.png
+general=genIcon.png
+abstract=absIcon.png
+source=viewsource.gif
+duplicate=duplicate.png
+autoGroup=run.png
+markEntries=mark.png
+unmarkEntries=unmark.png
+citeseer=wwwciteseer.png
+doiSmall=doismall.png
+groupsHighlightAny=groupsHighlightAny.png
+groupsHighlightAll=groupsHighlightAll.png
+close=fileclose.png
+close2=fileclose2.png
+integrityCheck=integrity.png
+groupIncluding=groupIncluding.png
+groupRefining=groupRefining.png
diff --git a/src/images/crystal_16/Icons.properties~ b/src/images/crystal_16/Icons.properties~
new file mode 100644 (file)
index 0000000..bc48561
--- /dev/null
@@ -0,0 +1,69 @@
+#jabrefIcon=JabRef-icon.png
+jabrefIcon=ikon.gif
+about=JabRef-icon.png
+
+new=filenew.png
+open=fileopen.png
+loadSession=fileimport.png
+save=filesave.png
+saveAs=filesaveas.png
+copy=editcopy.png
+paste=editpaste.png
+cut=editcut.png
+undo=undo.png
+redo=redo.png
+refresh=reload.png
+left=1leftarrow.png
+right=1rightarrow.png
+up=1uparrow.png
+down=1downarrow.png
+add=edit_add.png
+remove=edit_remove.png
+delete=trash.png
+edit=edit.png
+help=help.png
+helpSmall=help.png
+helpContents=contents2.png
+search=search.png
+incSearch=search.png
+toggleSearch=search.png
+complete=button_ok.png
+wrong=cancel.png
+makeKey=wizard.png
+psSmall=ps.png
+pdfSmall=pdf-document.png
+openFile=pdf-document.png
+preferences=advancedsettings.png
+openUrl=agt_internet.png
+www=agt_internet.png
+wwwSmall=agt_internet_small.png
+medline=agt_internet.png
+integrityWarn=status_unknown.png
+integrityInfo=documentinfo.png
+integrityFail=gg_ignored.png
+
+togglePreview=text_bottom.png
+toggleGroups=queue.png
+editPreamble=preamble.png
+editStrings=strings.png
+emacs=emacs.png
+lyx=lyx2.png
+winedt=winedt.png
+required=reqIcon.png
+optional=optIcon.png
+general=genIcon.png
+abstract=absIcon.png
+source=viewsource.gif
+duplicate=duplicate.png
+autoGroup=run.png
+markEntries=mark.png
+unmarkEntries=unmark.png
+citeseer=wwwciteseer.png
+doiSmall=doismall.png
+groupsHighlightAny=groupsHighlightAny.png
+groupsHighlightAll=groupsHighlightAll.png
+close=fileclose.png
+close2=fileclose2.png
+integrityCheck=integrity.png
+groupIncluding=groupIncluding.png
+groupRefining=groupRefining.png
diff --git a/src/images/crystal_16/JabRef-icon.png b/src/images/crystal_16/JabRef-icon.png
new file mode 100644 (file)
index 0000000..ca11220
Binary files /dev/null and b/src/images/crystal_16/JabRef-icon.png differ
diff --git a/src/images/crystal_16/absIcon.png b/src/images/crystal_16/absIcon.png
new file mode 100644 (file)
index 0000000..f249fda
Binary files /dev/null and b/src/images/crystal_16/absIcon.png differ
diff --git a/src/images/crystal_16/advancedsettings.png b/src/images/crystal_16/advancedsettings.png
new file mode 100755 (executable)
index 0000000..0c9faff
Binary files /dev/null and b/src/images/crystal_16/advancedsettings.png differ
diff --git a/src/images/crystal_16/agt_internet.png b/src/images/crystal_16/agt_internet.png
new file mode 100755 (executable)
index 0000000..6ce9ffe
Binary files /dev/null and b/src/images/crystal_16/agt_internet.png differ
diff --git a/src/images/crystal_16/agt_internet_small.png b/src/images/crystal_16/agt_internet_small.png
new file mode 100644 (file)
index 0000000..284c81d
Binary files /dev/null and b/src/images/crystal_16/agt_internet_small.png differ
diff --git a/src/images/crystal_16/button_ok.png b/src/images/crystal_16/button_ok.png
new file mode 100755 (executable)
index 0000000..46710a0
Binary files /dev/null and b/src/images/crystal_16/button_ok.png differ
diff --git a/src/images/crystal_16/cancel.png b/src/images/crystal_16/cancel.png
new file mode 100755 (executable)
index 0000000..e9920bf
Binary files /dev/null and b/src/images/crystal_16/cancel.png differ
diff --git a/src/images/crystal_16/contents2.png b/src/images/crystal_16/contents2.png
new file mode 100644 (file)
index 0000000..2d94894
Binary files /dev/null and b/src/images/crystal_16/contents2.png differ
diff --git a/src/images/crystal_16/documentinfo.png b/src/images/crystal_16/documentinfo.png
new file mode 100755 (executable)
index 0000000..1e49965
Binary files /dev/null and b/src/images/crystal_16/documentinfo.png differ
diff --git a/src/images/crystal_16/doismall.png b/src/images/crystal_16/doismall.png
new file mode 100644 (file)
index 0000000..3c9595b
Binary files /dev/null and b/src/images/crystal_16/doismall.png differ
diff --git a/src/images/crystal_16/duplicate.png b/src/images/crystal_16/duplicate.png
new file mode 100644 (file)
index 0000000..5599a18
Binary files /dev/null and b/src/images/crystal_16/duplicate.png differ
diff --git a/src/images/crystal_16/edit.png b/src/images/crystal_16/edit.png
new file mode 100755 (executable)
index 0000000..cd77c30
Binary files /dev/null and b/src/images/crystal_16/edit.png differ
diff --git a/src/images/crystal_16/edit_add.png b/src/images/crystal_16/edit_add.png
new file mode 100755 (executable)
index 0000000..269aaa6
Binary files /dev/null and b/src/images/crystal_16/edit_add.png differ
diff --git a/src/images/crystal_16/edit_remove.png b/src/images/crystal_16/edit_remove.png
new file mode 100755 (executable)
index 0000000..2c8b19d
Binary files /dev/null and b/src/images/crystal_16/edit_remove.png differ
diff --git a/src/images/crystal_16/editcopy.png b/src/images/crystal_16/editcopy.png
new file mode 100755 (executable)
index 0000000..8a227f8
Binary files /dev/null and b/src/images/crystal_16/editcopy.png differ
diff --git a/src/images/crystal_16/editcut.png b/src/images/crystal_16/editcut.png
new file mode 100755 (executable)
index 0000000..edd1844
Binary files /dev/null and b/src/images/crystal_16/editcut.png differ
diff --git a/src/images/crystal_16/editpaste.png b/src/images/crystal_16/editpaste.png
new file mode 100755 (executable)
index 0000000..06ea9df
Binary files /dev/null and b/src/images/crystal_16/editpaste.png differ
diff --git a/src/images/crystal_16/emacs.png b/src/images/crystal_16/emacs.png
new file mode 100644 (file)
index 0000000..c86092f
Binary files /dev/null and b/src/images/crystal_16/emacs.png differ
diff --git a/src/images/crystal_16/fileclose.png b/src/images/crystal_16/fileclose.png
new file mode 100644 (file)
index 0000000..033326f
Binary files /dev/null and b/src/images/crystal_16/fileclose.png differ
diff --git a/src/images/crystal_16/fileclose2.png b/src/images/crystal_16/fileclose2.png
new file mode 100644 (file)
index 0000000..c1e5f4d
Binary files /dev/null and b/src/images/crystal_16/fileclose2.png differ
diff --git a/src/images/crystal_16/fileimport.png b/src/images/crystal_16/fileimport.png
new file mode 100755 (executable)
index 0000000..32baf9c
Binary files /dev/null and b/src/images/crystal_16/fileimport.png differ
diff --git a/src/images/crystal_16/filenew.png b/src/images/crystal_16/filenew.png
new file mode 100755 (executable)
index 0000000..bfe1d06
Binary files /dev/null and b/src/images/crystal_16/filenew.png differ
diff --git a/src/images/crystal_16/fileopen.png b/src/images/crystal_16/fileopen.png
new file mode 100755 (executable)
index 0000000..037c2da
Binary files /dev/null and b/src/images/crystal_16/fileopen.png differ
diff --git a/src/images/crystal_16/filesave.png b/src/images/crystal_16/filesave.png
new file mode 100755 (executable)
index 0000000..f6e3175
Binary files /dev/null and b/src/images/crystal_16/filesave.png differ
diff --git a/src/images/crystal_16/filesaveas.png b/src/images/crystal_16/filesaveas.png
new file mode 100755 (executable)
index 0000000..4ce047f
Binary files /dev/null and b/src/images/crystal_16/filesaveas.png differ
diff --git a/src/images/crystal_16/genIcon.png b/src/images/crystal_16/genIcon.png
new file mode 100644 (file)
index 0000000..5bedaa2
Binary files /dev/null and b/src/images/crystal_16/genIcon.png differ
diff --git a/src/images/crystal_16/gg_ignored.png b/src/images/crystal_16/gg_ignored.png
new file mode 100755 (executable)
index 0000000..98674ef
Binary files /dev/null and b/src/images/crystal_16/gg_ignored.png differ
diff --git a/src/images/crystal_16/groupIncluding.png b/src/images/crystal_16/groupIncluding.png
new file mode 100644 (file)
index 0000000..6f2bd08
Binary files /dev/null and b/src/images/crystal_16/groupIncluding.png differ
diff --git a/src/images/crystal_16/groupRefining.png b/src/images/crystal_16/groupRefining.png
new file mode 100644 (file)
index 0000000..2ba0a26
Binary files /dev/null and b/src/images/crystal_16/groupRefining.png differ
diff --git a/src/images/crystal_16/groupsHighlightAll.png b/src/images/crystal_16/groupsHighlightAll.png
new file mode 100644 (file)
index 0000000..374c20e
Binary files /dev/null and b/src/images/crystal_16/groupsHighlightAll.png differ
diff --git a/src/images/crystal_16/groupsHighlightAny.png b/src/images/crystal_16/groupsHighlightAny.png
new file mode 100644 (file)
index 0000000..e1f73a5
Binary files /dev/null and b/src/images/crystal_16/groupsHighlightAny.png differ
diff --git a/src/images/crystal_16/help.png b/src/images/crystal_16/help.png
new file mode 100755 (executable)
index 0000000..b580f51
Binary files /dev/null and b/src/images/crystal_16/help.png differ
diff --git a/src/images/crystal_16/ikon.gif b/src/images/crystal_16/ikon.gif
new file mode 100644 (file)
index 0000000..c7b5ea3
Binary files /dev/null and b/src/images/crystal_16/ikon.gif differ
diff --git a/src/images/crystal_16/ikon.png b/src/images/crystal_16/ikon.png
new file mode 100644 (file)
index 0000000..94df09b
Binary files /dev/null and b/src/images/crystal_16/ikon.png differ
diff --git a/src/images/crystal_16/integrity.png b/src/images/crystal_16/integrity.png
new file mode 100644 (file)
index 0000000..4343947
Binary files /dev/null and b/src/images/crystal_16/integrity.png differ
diff --git a/src/images/crystal_16/lyx2.png b/src/images/crystal_16/lyx2.png
new file mode 100644 (file)
index 0000000..4162b77
Binary files /dev/null and b/src/images/crystal_16/lyx2.png differ
diff --git a/src/images/crystal_16/mark.png b/src/images/crystal_16/mark.png
new file mode 100644 (file)
index 0000000..fc64fc1
Binary files /dev/null and b/src/images/crystal_16/mark.png differ
diff --git a/src/images/crystal_16/optIcon.png b/src/images/crystal_16/optIcon.png
new file mode 100644 (file)
index 0000000..64562b3
Binary files /dev/null and b/src/images/crystal_16/optIcon.png differ
diff --git a/src/images/crystal_16/pdf-document.png b/src/images/crystal_16/pdf-document.png
new file mode 100755 (executable)
index 0000000..c83e300
Binary files /dev/null and b/src/images/crystal_16/pdf-document.png differ
diff --git a/src/images/crystal_16/preamble.png b/src/images/crystal_16/preamble.png
new file mode 100644 (file)
index 0000000..3b5eb35
Binary files /dev/null and b/src/images/crystal_16/preamble.png differ
diff --git a/src/images/crystal_16/ps.png b/src/images/crystal_16/ps.png
new file mode 100755 (executable)
index 0000000..f3556c5
Binary files /dev/null and b/src/images/crystal_16/ps.png differ
diff --git a/src/images/crystal_16/queue.png b/src/images/crystal_16/queue.png
new file mode 100644 (file)
index 0000000..d75a53b
Binary files /dev/null and b/src/images/crystal_16/queue.png differ
diff --git a/src/images/crystal_16/redo.png b/src/images/crystal_16/redo.png
new file mode 100755 (executable)
index 0000000..23d2725
Binary files /dev/null and b/src/images/crystal_16/redo.png differ
diff --git a/src/images/crystal_16/reload.png b/src/images/crystal_16/reload.png
new file mode 100755 (executable)
index 0000000..dfb9feb
Binary files /dev/null and b/src/images/crystal_16/reload.png differ
diff --git a/src/images/crystal_16/reqIcon.png b/src/images/crystal_16/reqIcon.png
new file mode 100644 (file)
index 0000000..5d2439c
Binary files /dev/null and b/src/images/crystal_16/reqIcon.png differ
diff --git a/src/images/crystal_16/run.png b/src/images/crystal_16/run.png
new file mode 100755 (executable)
index 0000000..8a07377
Binary files /dev/null and b/src/images/crystal_16/run.png differ
diff --git a/src/images/crystal_16/search.png b/src/images/crystal_16/search.png
new file mode 100755 (executable)
index 0000000..593a566
Binary files /dev/null and b/src/images/crystal_16/search.png differ
diff --git a/src/images/crystal_16/status_unknown.png b/src/images/crystal_16/status_unknown.png
new file mode 100755 (executable)
index 0000000..fd49f31
Binary files /dev/null and b/src/images/crystal_16/status_unknown.png differ
diff --git a/src/images/crystal_16/strings.png b/src/images/crystal_16/strings.png
new file mode 100644 (file)
index 0000000..8717f06
Binary files /dev/null and b/src/images/crystal_16/strings.png differ
diff --git a/src/images/crystal_16/text_bottom.png b/src/images/crystal_16/text_bottom.png
new file mode 100755 (executable)
index 0000000..cd9bcf7
Binary files /dev/null and b/src/images/crystal_16/text_bottom.png differ
diff --git a/src/images/crystal_16/trash.png b/src/images/crystal_16/trash.png
new file mode 100755 (executable)
index 0000000..dcf0b77
Binary files /dev/null and b/src/images/crystal_16/trash.png differ
diff --git a/src/images/crystal_16/undo.png b/src/images/crystal_16/undo.png
new file mode 100755 (executable)
index 0000000..8bc08fa
Binary files /dev/null and b/src/images/crystal_16/undo.png differ
diff --git a/src/images/crystal_16/unmark.png b/src/images/crystal_16/unmark.png
new file mode 100644 (file)
index 0000000..553ad17
Binary files /dev/null and b/src/images/crystal_16/unmark.png differ
diff --git a/src/images/crystal_16/viewsource.gif b/src/images/crystal_16/viewsource.gif
new file mode 100644 (file)
index 0000000..3ef9a2e
Binary files /dev/null and b/src/images/crystal_16/viewsource.gif differ
diff --git a/src/images/crystal_16/winedt.png b/src/images/crystal_16/winedt.png
new file mode 100644 (file)
index 0000000..320320b
Binary files /dev/null and b/src/images/crystal_16/winedt.png differ
diff --git a/src/images/crystal_16/wizard.png b/src/images/crystal_16/wizard.png
new file mode 100644 (file)
index 0000000..2474c19
Binary files /dev/null and b/src/images/crystal_16/wizard.png differ
diff --git a/src/images/crystal_16/wwwciteseer.png b/src/images/crystal_16/wwwciteseer.png
new file mode 100644 (file)
index 0000000..82c8038
Binary files /dev/null and b/src/images/crystal_16/wwwciteseer.png differ
diff --git a/src/images/cut_edit.gif b/src/images/cut_edit.gif
deleted file mode 100644 (file)
index eb948b9..0000000
Binary files a/src/images/cut_edit.gif and /dev/null differ
diff --git a/src/images/defaults_ps.gif b/src/images/defaults_ps.gif
deleted file mode 100644 (file)
index 5e1e78a..0000000
Binary files a/src/images/defaults_ps.gif and /dev/null differ
diff --git a/src/images/delete_edit.gif b/src/images/delete_edit.gif
deleted file mode 100644 (file)
index 6f64766..0000000
Binary files a/src/images/delete_edit.gif and /dev/null differ
diff --git a/src/images/doismall.png b/src/images/doismall.png
deleted file mode 100644 (file)
index 3c9595b..0000000
Binary files a/src/images/doismall.png and /dev/null differ
diff --git a/src/images/duplicate.png b/src/images/duplicate.png
deleted file mode 100644 (file)
index 5599a18..0000000
Binary files a/src/images/duplicate.png and /dev/null differ
diff --git a/src/images/editcopy.png b/src/images/editcopy.png
deleted file mode 100644 (file)
index 313bd9b..0000000
Binary files a/src/images/editcopy.png and /dev/null differ
diff --git a/src/images/editcut.png b/src/images/editcut.png
deleted file mode 100644 (file)
index af88212..0000000
Binary files a/src/images/editcut.png and /dev/null differ
diff --git a/src/images/editdelete.png b/src/images/editdelete.png
deleted file mode 100644 (file)
index d073c87..0000000
Binary files a/src/images/editdelete.png and /dev/null differ
diff --git a/src/images/editpaste.png b/src/images/editpaste.png
deleted file mode 100644 (file)
index cba1f23..0000000
Binary files a/src/images/editpaste.png and /dev/null differ
diff --git a/src/images/edittsk_tsk.gif b/src/images/edittsk_tsk.gif
deleted file mode 100644 (file)
index a1ca3e7..0000000
Binary files a/src/images/edittsk_tsk.gif and /dev/null differ
diff --git a/src/images/emacs.png b/src/images/emacs.png
deleted file mode 100644 (file)
index c86092f..0000000
Binary files a/src/images/emacs.png and /dev/null differ
diff --git a/src/images/exclamation.gif b/src/images/exclamation.gif
deleted file mode 100644 (file)
index 586ed8e..0000000
Binary files a/src/images/exclamation.gif and /dev/null differ
diff --git a/src/images/fileclose.png b/src/images/fileclose.png
deleted file mode 100644 (file)
index 033326f..0000000
Binary files a/src/images/fileclose.png and /dev/null differ
diff --git a/src/images/fileclose2.png b/src/images/fileclose2.png
deleted file mode 100644 (file)
index c1e5f4d..0000000
Binary files a/src/images/fileclose2.png and /dev/null differ
diff --git a/src/images/fldr_obj.gif b/src/images/fldr_obj.gif
deleted file mode 100644 (file)
index a9c7773..0000000
Binary files a/src/images/fldr_obj.gif and /dev/null differ
diff --git a/src/images/forward_nav.gif b/src/images/forward_nav.gif
deleted file mode 100644 (file)
index 7a1511d..0000000
Binary files a/src/images/forward_nav.gif and /dev/null differ
diff --git a/src/images/g_icon.gif b/src/images/g_icon.gif
deleted file mode 100755 (executable)
index 3f4f73f..0000000
Binary files a/src/images/g_icon.gif and /dev/null differ
diff --git a/src/images/genIcon.png b/src/images/genIcon.png
deleted file mode 100644 (file)
index 5bedaa2..0000000
Binary files a/src/images/genIcon.png and /dev/null differ
diff --git a/src/images/goto.png b/src/images/goto.png
deleted file mode 100644 (file)
index 58cc31c..0000000
Binary files a/src/images/goto.png and /dev/null differ
diff --git a/src/images/groupIncluding.png b/src/images/groupIncluding.png
deleted file mode 100644 (file)
index 6f2bd08..0000000
Binary files a/src/images/groupIncluding.png and /dev/null differ
diff --git a/src/images/groupRefining.png b/src/images/groupRefining.png
deleted file mode 100644 (file)
index 2ba0a26..0000000
Binary files a/src/images/groupRefining.png and /dev/null differ
diff --git a/src/images/groupsHighlightAll.png b/src/images/groupsHighlightAll.png
deleted file mode 100644 (file)
index 374c20e..0000000
Binary files a/src/images/groupsHighlightAll.png and /dev/null differ
diff --git a/src/images/groupsHighlightAny.png b/src/images/groupsHighlightAny.png
deleted file mode 100644 (file)
index e1f73a5..0000000
Binary files a/src/images/groupsHighlightAny.png and /dev/null differ
diff --git a/src/images/incomplete.png b/src/images/incomplete.png
deleted file mode 100644 (file)
index e77ff14..0000000
Binary files a/src/images/incomplete.png and /dev/null differ
diff --git a/src/images/integrity.png b/src/images/integrity.png
deleted file mode 100644 (file)
index 4343947..0000000
Binary files a/src/images/integrity.png and /dev/null differ
diff --git a/src/images/lyx2.png b/src/images/lyx2.png
deleted file mode 100644 (file)
index 4162b77..0000000
Binary files a/src/images/lyx2.png and /dev/null differ
diff --git a/src/images/mark.png b/src/images/mark.png
deleted file mode 100644 (file)
index fc64fc1..0000000
Binary files a/src/images/mark.png and /dev/null differ
diff --git a/src/images/messageFail.png b/src/images/messageFail.png
deleted file mode 100644 (file)
index 474f63f..0000000
Binary files a/src/images/messageFail.png and /dev/null differ
diff --git a/src/images/messageInfo.png b/src/images/messageInfo.png
deleted file mode 100644 (file)
index ecdc991..0000000
Binary files a/src/images/messageInfo.png and /dev/null differ
diff --git a/src/images/messageWarn.png b/src/images/messageWarn.png
deleted file mode 100755 (executable)
index 55a6f01..0000000
Binary files a/src/images/messageWarn.png and /dev/null differ
diff --git a/src/images/minus.gif b/src/images/minus.gif
deleted file mode 100644 (file)
index a81eba1..0000000
Binary files a/src/images/minus.gif and /dev/null differ
diff --git a/src/images/newBibFile.png b/src/images/newBibFile.png
deleted file mode 100644 (file)
index a669555..0000000
Binary files a/src/images/newBibFile.png and /dev/null differ
diff --git a/src/images/new_page.gif b/src/images/new_page.gif
deleted file mode 100644 (file)
index 41c3958..0000000
Binary files a/src/images/new_page.gif and /dev/null differ
diff --git a/src/images/new_wiz.gif b/src/images/new_wiz.gif
deleted file mode 100644 (file)
index bf683ca..0000000
Binary files a/src/images/new_wiz.gif and /dev/null differ
diff --git a/src/images/next_nav.gif b/src/images/next_nav.gif
deleted file mode 100644 (file)
index 8392f33..0000000
Binary files a/src/images/next_nav.gif and /dev/null differ
diff --git a/src/images/o_icon.gif b/src/images/o_icon.gif
deleted file mode 100755 (executable)
index 22cd977..0000000
Binary files a/src/images/o_icon.gif and /dev/null differ
diff --git a/src/images/optIcon.png b/src/images/optIcon.png
deleted file mode 100644 (file)
index 64562b3..0000000
Binary files a/src/images/optIcon.png and /dev/null differ
diff --git a/src/images/paste_edit.gif b/src/images/paste_edit.gif
deleted file mode 100644 (file)
index 75e0ab2..0000000
Binary files a/src/images/paste_edit.gif and /dev/null differ
diff --git a/src/images/pdf.png b/src/images/pdf.png
deleted file mode 100644 (file)
index d5eab07..0000000
Binary files a/src/images/pdf.png and /dev/null differ
diff --git a/src/images/pdf_small.gif b/src/images/pdf_small.gif
deleted file mode 100644 (file)
index 2228bc9..0000000
Binary files a/src/images/pdf_small.gif and /dev/null differ
diff --git a/src/images/plus.gif b/src/images/plus.gif
deleted file mode 100644 (file)
index c123ba7..0000000
Binary files a/src/images/plus.gif and /dev/null differ
diff --git a/src/images/postscript.png b/src/images/postscript.png
deleted file mode 100644 (file)
index 5065c98..0000000
Binary files a/src/images/postscript.png and /dev/null differ
diff --git a/src/images/preamble.png b/src/images/preamble.png
deleted file mode 100644 (file)
index 3b5eb35..0000000
Binary files a/src/images/preamble.png and /dev/null differ
diff --git a/src/images/prev_nav.gif b/src/images/prev_nav.gif
deleted file mode 100644 (file)
index 9b278e6..0000000
Binary files a/src/images/prev_nav.gif and /dev/null differ
diff --git a/src/images/preview.png b/src/images/preview.png
deleted file mode 100644 (file)
index a8aa6b3..0000000
Binary files a/src/images/preview.png and /dev/null differ
diff --git a/src/images/queue.png b/src/images/queue.png
deleted file mode 100644 (file)
index d75a53b..0000000
Binary files a/src/images/queue.png and /dev/null differ
diff --git a/src/images/r_icon.gif b/src/images/r_icon.gif
deleted file mode 100755 (executable)
index 5fea573..0000000
Binary files a/src/images/r_icon.gif and /dev/null differ
diff --git a/src/images/redo_edit.gif b/src/images/redo_edit.gif
deleted file mode 100644 (file)
index 01ce578..0000000
Binary files a/src/images/redo_edit.gif and /dev/null differ
diff --git a/src/images/refresh_nav.gif b/src/images/refresh_nav.gif
deleted file mode 100644 (file)
index a063c23..0000000
Binary files a/src/images/refresh_nav.gif and /dev/null differ
diff --git a/src/images/reqIcon.png b/src/images/reqIcon.png
deleted file mode 100644 (file)
index 5d2439c..0000000
Binary files a/src/images/reqIcon.png and /dev/null differ
diff --git a/src/images/run.png b/src/images/run.png
deleted file mode 100644 (file)
index 3662b07..0000000
Binary files a/src/images/run.png and /dev/null differ
diff --git a/src/images/save_edit.gif b/src/images/save_edit.gif
deleted file mode 100644 (file)
index 698d9a2..0000000
Binary files a/src/images/save_edit.gif and /dev/null differ
diff --git a/src/images/saveas_edit.gif b/src/images/saveas_edit.gif
deleted file mode 100644 (file)
index 76549a1..0000000
Binary files a/src/images/saveas_edit.gif and /dev/null differ
diff --git a/src/images/search.gif b/src/images/search.gif
deleted file mode 100644 (file)
index 6dc3ebe..0000000
Binary files a/src/images/search.gif and /dev/null differ
diff --git a/src/images/showerr_tsk.gif b/src/images/showerr_tsk.gif
deleted file mode 100644 (file)
index c2bfdd6..0000000
Binary files a/src/images/showerr_tsk.gif and /dev/null differ
diff --git a/src/images/splash-2.1.png b/src/images/splash-2.1.png
new file mode 100644 (file)
index 0000000..1ddced9
Binary files /dev/null and b/src/images/splash-2.1.png differ
diff --git a/src/images/splash-2.1beta.png b/src/images/splash-2.1beta.png
deleted file mode 100644 (file)
index 4304131..0000000
Binary files a/src/images/splash-2.1beta.png and /dev/null differ
diff --git a/src/images/strings.png b/src/images/strings.png
deleted file mode 100644 (file)
index 8717f06..0000000
Binary files a/src/images/strings.png and /dev/null differ
diff --git a/src/images/toc_closed.gif b/src/images/toc_closed.gif
deleted file mode 100644 (file)
index e5bc046..0000000
Binary files a/src/images/toc_closed.gif and /dev/null differ
diff --git a/src/images/undo_edit.gif b/src/images/undo_edit.gif
deleted file mode 100644 (file)
index 570c61c..0000000
Binary files a/src/images/undo_edit.gif and /dev/null differ
diff --git a/src/images/unmark.png b/src/images/unmark.png
deleted file mode 100644 (file)
index 553ad17..0000000
Binary files a/src/images/unmark.png and /dev/null differ
diff --git a/src/images/up_nav.gif b/src/images/up_nav.gif
deleted file mode 100644 (file)
index 6877784..0000000
Binary files a/src/images/up_nav.gif and /dev/null differ
diff --git a/src/images/view.gif b/src/images/view.gif
deleted file mode 100644 (file)
index 6d8d1be..0000000
Binary files a/src/images/view.gif and /dev/null differ
diff --git a/src/images/viewsource.gif b/src/images/viewsource.gif
deleted file mode 100644 (file)
index 3ef9a2e..0000000
Binary files a/src/images/viewsource.gif and /dev/null differ
diff --git a/src/images/window_nofullscreen.png b/src/images/window_nofullscreen.png
deleted file mode 100644 (file)
index 6383f31..0000000
Binary files a/src/images/window_nofullscreen.png and /dev/null differ
diff --git a/src/images/winedt.png b/src/images/winedt.png
deleted file mode 100644 (file)
index 320320b..0000000
Binary files a/src/images/winedt.png and /dev/null differ
diff --git a/src/images/wizard.png b/src/images/wizard.png
deleted file mode 100644 (file)
index 2474c19..0000000
Binary files a/src/images/wizard.png and /dev/null differ
diff --git a/src/images/wrongItem.png b/src/images/wrongItem.png
deleted file mode 100644 (file)
index 8b2f1eb..0000000
Binary files a/src/images/wrongItem.png and /dev/null differ
diff --git a/src/images/www.png b/src/images/www.png
deleted file mode 100644 (file)
index 8ee63b8..0000000
Binary files a/src/images/www.png and /dev/null differ
diff --git a/src/images/wwwciteseer.png b/src/images/wwwciteseer.png
deleted file mode 100644 (file)
index 82c8038..0000000
Binary files a/src/images/wwwciteseer.png and /dev/null differ
index b58afa0804cd0def2e859f06797344452cd81646..0a686c1fb5e0fb79c7f80d59e8507a6858251cf4 100644 (file)
@@ -19,7 +19,7 @@ public class AdvancedTab extends JPanel implements PrefsTab {
     JPanel pan = new JPanel(),
         lnf = new JPanel();
     JLabel lab;
-    JCheckBox useDefault, useRemoteServer;
+    JCheckBox useDefault, useRemoteServer, useNativeFileDialogOnMac;
     JTextField className, remoteServerPort;
     JButton def1 = new JButton(Globals.lang("Default")),
         def2 = new JButton(Globals.lang("Default"));
@@ -34,9 +34,10 @@ public class AdvancedTab extends JPanel implements PrefsTab {
 
 
     remoteHelp = new HelpAction(diag, GUIGlobals.remoteHelp, "Help",
-                GUIGlobals.helpSmallIconFile);
+                GUIGlobals.getIconUrl("helpSmall"));
     useDefault = new JCheckBox(Globals.lang("Use other look and feel"));
     useRemoteServer = new JCheckBox(Globals.lang("Listen for remote operation on port")+":");
+    useNativeFileDialogOnMac = new JCheckBox(Globals.lang("Use native file dialog"));
     remoteServerPort = new JTextField();
     className = new JTextField(50);
     final JTextField clName = className;
@@ -51,32 +52,35 @@ public class AdvancedTab extends JPanel implements PrefsTab {
          "");
     DefaultFormBuilder builder = new DefaultFormBuilder(layout);
     JPanel pan = new JPanel();
-    builder.appendSeparator(Globals.lang("Look and feel"));
-    JLabel lab = new JLabel(Globals.lang("Default look and feel")+": "
-             +(Globals.ON_WIN ? GUIGlobals.windowsDefaultLookAndFeel :
-               GUIGlobals.linuxDefaultLookAndFeel));
-    builder.nextLine();
-    builder.append(pan);
-    builder.append(lab);
-    builder.nextLine();
-    builder.append(pan);
-    builder.append(useDefault);
-    builder.nextLine();
-    builder.append(pan);
-    JPanel pan2 = new JPanel();
-    lab = new JLabel(Globals.lang("Class name")+":");
-    pan2.add(lab);
-    pan2.add(className);
-    builder.append(pan2);
-    builder.nextLine();
-    builder.append(pan);
-    lab = new JLabel(Globals.lang("Note that you must specify the fully qualified class name for the look and feel,"));
-    builder.append(lab);
-    builder.nextLine();
-    builder.append(pan);
-    lab = new JLabel(Globals.lang("and the class must be available in your classpath next time you start JabRef."));
-    builder.append(lab);
-    builder.nextLine();
+
+    if (!Globals.ON_MAC) {
+        builder.appendSeparator(Globals.lang("Look and feel"));
+        JLabel lab = new JLabel(Globals.lang("Default look and feel")+": "
+                 +(Globals.ON_WIN ? GUIGlobals.windowsDefaultLookAndFeel :
+                   GUIGlobals.linuxDefaultLookAndFeel));
+        builder.nextLine();
+        builder.append(pan);
+        builder.append(lab);
+        builder.nextLine();
+        builder.append(pan);
+        builder.append(useDefault);
+        builder.nextLine();
+        builder.append(pan);
+        JPanel pan2 = new JPanel();
+        lab = new JLabel(Globals.lang("Class name")+":");
+        pan2.add(lab);
+        pan2.add(className);
+        builder.append(pan2);
+        builder.nextLine();
+        builder.append(pan);
+        lab = new JLabel(Globals.lang("Note that you must specify the fully qualified class name for the look and feel,"));
+        builder.append(lab);
+        builder.nextLine();
+        builder.append(pan);
+        lab = new JLabel(Globals.lang("and the class must be available in your classpath next time you start JabRef."));
+        builder.append(lab);
+        builder.nextLine();
+    }
     builder.appendSeparator(Globals.lang("Remote operation"));
     builder.nextLine();
     builder.append(new JPanel());
@@ -86,6 +90,14 @@ public class AdvancedTab extends JPanel implements PrefsTab {
     p.add(remoteHelp.getIconButton());
     builder.append(p);
 
+    if (Globals.ON_MAC) {
+        builder.nextLine();
+        builder.appendSeparator(Globals.lang("Mac file dialog"));
+        builder.nextLine();
+        builder.append(new JPanel());
+        builder.append(useNativeFileDialogOnMac);
+    }
+
     pan = builder.getPanel();
     pan.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
     setLayout(new BorderLayout());
@@ -102,11 +114,13 @@ public class AdvancedTab extends JPanel implements PrefsTab {
     useRemoteServer.setSelected(_prefs.getBoolean("useRemoteServer"));
     oldPort = _prefs.getInt("remoteServerPort");
     remoteServerPort.setText(String.valueOf(oldPort));
+        useNativeFileDialogOnMac.setSelected(Globals.prefs.getBoolean("useNativeFileDialogOnMac"));
     }
 
     public void storeSettings() {
         _prefs.putBoolean("useDefaultLookAndFeel", !useDefault.isSelected());
         _prefs.put("lookAndFeel", className.getText());
+        _prefs.putBoolean("useNativeFileDialogOnMac", useNativeFileDialogOnMac.isSelected());
         try {
             int port = Integer.parseInt(remoteServerPort.getText());
             if (port != oldPort) {
index 2b4d4eb6928f46de18de17dc8503b5903a6b9d07..3b4e6a2cfc94d2f9dcce47fa4bd7288f82f12bd6 100644 (file)
@@ -13,13 +13,14 @@ import net.sf.jabref.gui.ColorSetupPanel;
 class AppearancePrefsTab extends JPanel implements PrefsTab {
 
     JabRefPreferences _prefs;
-    private JCheckBox colorCodes, antialias;
+    private JCheckBox colorCodes, antialias, overrideFonts;//, useCustomIconTheme;
     private GridBagLayout gbl = new GridBagLayout();
     private JButton fontButton = new JButton(Globals.lang("Set table font"));
     private ColorSetupPanel colorPanel = new ColorSetupPanel();
     private Font font = GUIGlobals.CURRENTFONT;
     private int oldMenuFontSize;
-    private JTextField fontSize;
+    private boolean oldOverrideFontSize;
+    private JTextField fontSize;//, customIconThemeFile;
 
     /**
      * Customization of appearance parameters.
@@ -31,14 +32,17 @@ class AppearancePrefsTab extends JPanel implements PrefsTab {
          setLayout(new BorderLayout());
 
         // Font sizes:
-        fontSize = new JTextField();
+        fontSize = new JTextField(5);
 
 
         colorCodes = new JCheckBox(Globals.lang
                    ("Color codes for required and optional fields"));
         antialias = new JCheckBox(Globals.lang
                   ("Use antialiasing font"));
+        overrideFonts = new JCheckBox(Globals.lang("Override default font settings"));
 
+        //useCustomIconTheme = new JCheckBox(Globals.lang("Use custom icon theme"));
+        //customIconThemeFile = new JTextField();
         FormLayout layout = new FormLayout
                 ("1dlu, 8dlu, left:pref, 4dlu, fill:pref, 4dlu, fill:60dlu, 4dlu, fill:pref",
                         "");
@@ -52,16 +56,29 @@ class AppearancePrefsTab extends JPanel implements PrefsTab {
         p1.add(fontSize);
         builder.append(p1);
         builder.nextLine();
-        builder.append(antialias);
+        builder.append(overrideFonts);
         builder.nextLine();
         builder.appendSeparator(Globals.lang("Table appearance"));
+        builder.append(antialias);
+        builder.nextLine();
         builder.append(colorCodes);
         builder.nextLine();
         builder.append(fontButton);
         builder.nextLine();
         builder.append(colorPanel);
-
-
+        /*builder.appendSeparator(Globals.lang("Custom icon theme"));
+        builder.append(useCustomIconTheme);
+        builder.nextLine();
+        JPanel p2 = new JPanel();
+        lab = new JLabel(Globals.lang("Custom icon theme file")+":");
+        p2.add(lab);
+        p2.add(customIconThemeFile);
+        BrowseAction browse = new BrowseAction(null, customIconThemeFile, false);
+        JButton browseBut = new JButton(Globals.lang("Browse"));
+        browseBut.addActionListener(browse);
+        p2.add(browseBut);
+        builder.append(p2);
+          */
 
     JPanel upper = new JPanel(),
         sort = new JPanel(),
@@ -73,6 +90,11 @@ class AppearancePrefsTab extends JPanel implements PrefsTab {
         iconCol.setLayout(gbl);
 
 
+    overrideFonts.addActionListener(new ActionListener() {
+        public void actionPerformed(ActionEvent e) {
+            fontSize.setEnabled(overrideFonts.isSelected());
+        }
+    });
 
     fontButton.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
@@ -106,7 +128,11 @@ class AppearancePrefsTab extends JPanel implements PrefsTab {
         antialias.setSelected(_prefs.getBoolean("antialias"));
         fontSize.setText("" + _prefs.getInt("menuFontSize"));
         oldMenuFontSize = _prefs.getInt("menuFontSize");
-
+        overrideFonts.setSelected(_prefs.getBoolean("overrideDefaultFonts"));
+        oldOverrideFontSize = overrideFonts.isSelected();
+        fontSize.setEnabled(overrideFonts.isSelected());
+        //useCustomIconTheme.setSelected(_prefs.getBoolean("useCustomIconTheme"));
+        //customIconThemeFile.setText(_prefs.get("customIconThemeFile"));
         colorPanel.setValues();
     }
 
@@ -122,11 +148,13 @@ class AppearancePrefsTab extends JPanel implements PrefsTab {
         _prefs.put("fontFamily", font.getFamily());
         _prefs.putInt("fontStyle", font.getStyle());
         _prefs.putInt("fontSize", font.getSize());
+        _prefs.putBoolean("overrideDefaultFonts", overrideFonts.isSelected());
         GUIGlobals.CURRENTFONT = font;
         colorPanel.storeSettings();
         try {
             int size = Integer.parseInt(fontSize.getText());
-            if (size != oldMenuFontSize) {
+            if ((overrideFonts.isSelected() != oldOverrideFontSize) ||
+                    (size != oldMenuFontSize)) {
                 _prefs.putInt("menuFontSize", size);
                 JOptionPane.showMessageDialog(null, Globals.lang("You have changed the menu and label font size. "
                         + "You must restart JabRef for this to come into effect."), Globals.lang("Changed font settings"),
index bebddea58e963fb5eedddf98ee6b92bd3249d5ed..e6b1ff759ab58a81062e18d6550819111c6eecd1 100644 (file)
@@ -275,9 +275,10 @@ public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListe
 
         // The action for saving a database.
         actions.put("save", new AbstractWorker() {
-            private boolean success = false;
+            private boolean success = false, cancelled = false;
             public void init() throws Throwable {
                 success = false;
+                cancelled = false;
                 if (file == null)
                     runCommand("saveAs");
                 else {
@@ -324,12 +325,17 @@ public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListe
                     frame.setTabTitle(BasePanel.this, file.getName());
                     frame.output(Globals.lang("Saved database")+" '"
                              +file.getPath()+"'.");
-                } else {
+                } else if (!cancelled) {
                     frame.output(Globals.lang("Save failed"));
                 }
             }
 
             public void run() {
+                if (file == null) {
+                    cancelled = true;
+                    return;
+                }
+
                 try {
                     // If the option is set, autogenerate keys for all entries that are
                     // lacking keys, before saving:
@@ -1553,7 +1559,8 @@ public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListe
         MainTableFormat tableFormat = new MainTableFormat(this);
         tableFormat.updateTableFormat();
         //EventTableModel tableModel = new EventTableModel(sortedList, tableFormat);
-        mainTable = new MainTable(/*tableModel, */tableFormat, searchFilterList);
+        mainTable = new MainTable(/*tableModel, */tableFormat, searchFilterList, frame);
+        
         selectionListener = new MainTableSelectionListener(this, mainTable);
         mainTable.updateFont();
         mainTable.addSelectionListener(selectionListener);
index b5f14096ae79217ce58362c4c11b94b843dc3d74..002635ae2806b885feab5c3b7710d8fbcdb30231 100644 (file)
@@ -201,7 +201,11 @@ public class BibtexEntry
     }
 
     /**
-     * Sets the given field to the given value.
+     * Sets a number of fields simultaneously. The given HashMap contains field
+     * names as keys, each mapped to the value to set.
+     * WARNING: this method does not notify change listeners, so it should *NOT*
+     * be used for entries that are being displayed in the GUI. Furthermore, it
+     * does not check values for content, so e.g. empty strings will be set as such.
      */
     public void setField(HashMap fields){
         _fields.putAll(fields);
index 280f1325ff0bd6e4f6e1b817e0678859548a739a..c226ab61bf51ba21aa5f0a9b7e2f19073e73d6e5 100644 (file)
@@ -198,7 +198,7 @@ public class BibtexFields
 
     dummy =  new BibtexSingleField( MARKED, false) ;
     dummy.setPrivate();
-    dummy.setWriteable(false);
+    dummy.setWriteable(true); // This field must be written to file!
     dummy.setDisplayable(false);
     add(dummy) ;
 
index b62b17bd278a2d5bde0044ae56ce79b51995fa93..95261b01660d54fd47a62050fb3c6a671419e4f4 100644 (file)
@@ -10,7 +10,8 @@ import java.io.File;
  */
 public class BrowseAction extends AbstractAction implements ActionListener {
 
-    JFrame frame;
+    JFrame frame=null;
+    //JDialog dialog=null;
     JTextField comp;
     boolean dir;
 
@@ -22,6 +23,14 @@ public class BrowseAction extends AbstractAction implements ActionListener {
 
     }
 
+    /*public BrowseAction(JDialog dialog, JTextField tc, boolean dir) {
+        super(Globals.lang("Browse"));
+        this.dialog = dialog;
+        this.dir = dir;
+        comp = tc;
+
+    } */
+
     public void actionPerformed(ActionEvent e) {
         String chosen = null;
         if (dir)
index 6f0f55f7364d9cd4a6ac5fa5dd7b9b48a4cbfee1..eba19618fe840ebc2ad2ba281481ec662fbf9ec1 100644 (file)
@@ -27,6 +27,9 @@ public class DuplicateResolverDialog extends JDialog {
         KEEP_UPPER = 1,
         KEEP_LOWER = 2,
         BREAK      = 5,  // close
+        IMPORT_AND_DELETE_OLD = 1,
+        IMPORT_AND_KEEP_OLD = 0,
+        DO_NOT_IMPORT = 2,
         DUPLICATE_SEARCH = 1,
         IMPORT_CHECK = 2,
     INSPECTION = 3;
@@ -47,9 +50,19 @@ public class DuplicateResolverDialog extends JDialog {
     boolean block = true;
     TitleLabel lab;
 
-  public DuplicateResolverDialog(JabRefFrame frame, BibtexEntry one, BibtexEntry two, int type) {
-    super(frame, Globals.lang("Possible duplicate entries"), true);
+  public DuplicateResolverDialog(JFrame frame, BibtexEntry one, BibtexEntry two, int type) {
+      super(frame, Globals.lang("Possible duplicate entries"), true);
+      init(one, two, type);
+      Util.placeDialog(this, frame);
+  }
+
+    public DuplicateResolverDialog(JDialog frame, BibtexEntry one, BibtexEntry two, int type) {
+        super(frame, Globals.lang("Possible duplicate entries"), true);
+        init(one, two, type);
+        Util.placeDialog(this, frame);
+    }
 
+    private void init(BibtexEntry one, BibtexEntry two, int type) {
       switch (type) {
           case DUPLICATE_SEARCH:
               first = new JButton(Globals.lang("Keep upper"));
@@ -88,8 +101,8 @@ public class DuplicateResolverDialog extends JDialog {
     con.gridwidth = GridBagConstraints.REMAINDER;
     con.weightx = 1;
     con.weighty = 0;
-    lab = new TitleLabel(Globals.lang((type==DUPLICATE_SEARCH)?"":
-                                  "Entry in current database"));
+    lab = new TitleLabel((type==DUPLICATE_SEARCH) ? "" :
+                                  Globals.lang("Entry in current database"));
     gbl.setConstraints(lab, con);
     main.add(lab);
     con.weighty = 1;
@@ -99,8 +112,8 @@ public class DuplicateResolverDialog extends JDialog {
     main.add(sp);
     con.weighty = 0;
     con.insets = new Insets(10,10,0,10);
-    lab = new TitleLabel(Globals.lang((type==DUPLICATE_SEARCH)?"":
-                                  "Entry in import"));
+    lab = new TitleLabel((type==DUPLICATE_SEARCH) ? "" :
+                                  Globals.lang("Entry in import"));
     gbl.setConstraints(lab, con);
     main.add(lab);
     con.weighty = 1;
@@ -170,7 +183,7 @@ public class DuplicateResolverDialog extends JDialog {
 
 
     both.requestFocus();
-    Util.placeDialog(this, frame);
+
   }
 
   private void setSourceView(BibtexEntry one, BibtexEntry two) {
@@ -206,11 +219,26 @@ public boolean isBlocking() {
     return status;
   }
 
-  public static int resolveDuplicate(JabRefFrame frame, BibtexEntry one, BibtexEntry two) {
+  public static int resolveDuplicate(JFrame frame, BibtexEntry one, BibtexEntry two) {
+    DuplicateResolverDialog drd = new DuplicateResolverDialog(frame, one, two,
+                                                              DUPLICATE_SEARCH);
+    drd.setVisible(true); // drd.show(); -> deprecated since 1.5
+    return drd.getSelected();
+  }
+
+  public static int resolveDuplicate(JDialog frame, BibtexEntry one, BibtexEntry two) {
     DuplicateResolverDialog drd = new DuplicateResolverDialog(frame, one, two,
                                                               DUPLICATE_SEARCH);
     drd.setVisible(true); // drd.show(); -> deprecated since 1.5
     return drd.getSelected();
   }
 
+  public static int resolveDuplicateInImport(JabRefFrame frame, BibtexEntry existing,
+                                           BibtexEntry imported) {
+    DuplicateResolverDialog drd = new DuplicateResolverDialog(frame, existing, imported,
+                                                              IMPORT_CHECK);
+    drd.setVisible(true); // drd.show(); -> deprecated since 1.5
+    return drd.getSelected();
+  }
+
 }
index 5b7aabbdd6b574a005cebe37ffce24359aa16653..dcaaf906aa046915e396779ed2d7c24b9bd1a58b 100644 (file)
@@ -68,7 +68,7 @@ class EntryCustomizationDialog extends JDialog implements ItemListener
        super(parent,Globals.lang("Customize entry types"), false);
        this.parent = parent;
        help = new HelpAction(parent.helpDiag, GUIGlobals.customEntriesHelp,
-                             "Help", GUIGlobals.helpSmallIconFile);
+                             "Help", GUIGlobals.getIconUrl("helpSmall"));
        setTypeSelection();
        //setSize(440,400);
        initialize();
index 0857133d7f3943414cd47cad0b8000d67b4453cb..6aacd67ed63b48bb86dd4880a809b293e18774b7 100644 (file)
@@ -171,7 +171,7 @@ public class EntryEditor extends JPanel implements VetoableChangeListener {
         fieldList = java.util.Arrays.asList(fields);
     reqPan = new EntryEditorTab(fieldList, this, true, Globals.lang("Required fields"));
     tabbed.addTab(Globals.lang("Required fields"),
-          new ImageIcon(GUIGlobals.showReqIconFile), reqPan.getPane(),
+          GUIGlobals.getImage("required"), reqPan.getPane(),
           Globals.lang("Show required fields"));
     tabs.add(reqPan);
     //}
@@ -180,7 +180,7 @@ public class EntryEditor extends JPanel implements VetoableChangeListener {
         optPan = new EntryEditorTab(java.util.Arrays.asList(entry.getOptionalFields()),
                 this, false, Globals.lang("Optional fields"));
         tabbed.addTab(Globals.lang("Optional fields"),
-              new ImageIcon(GUIGlobals.showOptIconFile), optPan.getPane(),
+              GUIGlobals.getImage("optional"), optPan.getPane(),
               Globals.lang("Show optional fields"));
         tabs.add(optPan);
     }
@@ -189,14 +189,14 @@ public class EntryEditor extends JPanel implements VetoableChangeListener {
     for (int i=0; i<tabList.getTabCount(); i++) {
         EntryEditorTab newTab = new EntryEditorTab(tabList.getTabFields(i),
                 this, false, tabList.getTabName(i));
-        tabbed.addTab(tabList.getTabName(i), new ImageIcon(GUIGlobals.showGenIconFile), newTab.getPane());
+        tabbed.addTab(tabList.getTabName(i), GUIGlobals.getImage("general"), newTab.getPane());
         tabs.add(newTab);
     }
 
     srcPanel.setName(Globals.lang("BibTeX source"));
     if (Globals.prefs.getBoolean("showSource")) {
         tabbed.addTab(Globals.lang("BibTeX source"),
-              new ImageIcon(GUIGlobals.sourceIconFile), srcPanel,
+              GUIGlobals.getImage("source"), srcPanel,
               Globals.lang("Show/edit BibTeX source"));
         tabs.add(srcPanel);
     }
@@ -636,18 +636,25 @@ public class EntryEditor extends JPanel implements VetoableChangeListener {
    */
   public synchronized void switchTo(BibtexEntry be) {
       if (entry == be)
-        return;
+          return;
 
-        //Util.pr("EntryEditor.switchTo(BibtexEntry): "+entry.getCiteKey());
-        //Util.pr("::EntryEditor.switchTo(BibtexEntry): "+this.type.getName());
+      //Util.pr("EntryEditor.switchTo(BibtexEntry): "+entry.getCiteKey());
+      //Util.pr("::EntryEditor.switchTo(BibtexEntry): "+this.type.getName());
       storeCurrentEdit();
-         entry = be;
-        updateAllFields();
-        validateAllFields();
-        updateSource();
-        panel.showing = be;
 
-    }
+      // Remove this instance as property listener for the entry:
+      entry.removePropertyChangeListener(this);
+      // Register as property listener for the new entry:
+      be.addPropertyChangeListener(this);
+      
+      entry = be;
+
+      updateAllFields();
+      validateAllFields();
+      updateSource();
+      panel.showing = be;
+
+  }
 
   /**
    * Returns false if the contents of the source panel has not been validated,
@@ -925,7 +932,7 @@ public class EntryEditor extends JPanel implements VetoableChangeListener {
 
     class DeleteAction extends AbstractAction {
     public DeleteAction() {
-      super(Globals.lang("Delete"), new ImageIcon(GUIGlobals.removeIconFile));
+      super(Globals.lang("Delete"), GUIGlobals.getImage("delete"));
       putValue(SHORT_DESCRIPTION, Globals.lang("Delete entry"));
     }
 
@@ -946,7 +953,7 @@ public class EntryEditor extends JPanel implements VetoableChangeListener {
 
   class CloseAction extends AbstractAction {
     public CloseAction() {
-      super(Globals.lang("Close window"), new ImageIcon(GUIGlobals.closeIconFile));
+      super(Globals.lang("Close window"), GUIGlobals.getImage("close"));
       putValue(SHORT_DESCRIPTION, Globals.lang("Close window"));
     }
 
@@ -962,7 +969,7 @@ public class EntryEditor extends JPanel implements VetoableChangeListener {
 
   class CopyKeyAction extends AbstractAction {
     public CopyKeyAction() {
-      super("Copy BibTeX key to clipboard", new ImageIcon(GUIGlobals.copyKeyIconFile));
+      super("Copy BibTeX key to clipboard");
       putValue(SHORT_DESCRIPTION, "Copy BibTeX key to clipboard (Ctrl-K)");
 
       //putValue(MNEMONIC_KEY, GUIGlobals.copyKeyCode);
@@ -1158,7 +1165,7 @@ public class EntryEditor extends JPanel implements VetoableChangeListener {
 
   class NextEntryAction extends AbstractAction {
     public NextEntryAction() {
-      super(Globals.lang("Next entry"), new ImageIcon(GUIGlobals.downIconFile));
+      super(Globals.lang("Next entry"), GUIGlobals.getImage("down"));
 
       putValue(SHORT_DESCRIPTION, Globals.lang("Next entry"));
     }
@@ -1184,7 +1191,7 @@ public class EntryEditor extends JPanel implements VetoableChangeListener {
 
   class PrevEntryAction extends AbstractAction {
     public PrevEntryAction() {
-      super(Globals.lang("Previous entry"), new ImageIcon(GUIGlobals.upIconFile));
+      super(Globals.lang("Previous entry"), GUIGlobals.getImage("up"));
 
       putValue(SHORT_DESCRIPTION, Globals.lang("Previous entry"));
     }
@@ -1214,7 +1221,7 @@ public class EntryEditor extends JPanel implements VetoableChangeListener {
     BibtexEntry selectedEntry;
 
     public GenerateKeyAction(JabRefFrame parentFrame) {
-      super(Globals.lang("Generate BibTeX key"), new ImageIcon(GUIGlobals.genKeyIconFile));
+      super(Globals.lang("Generate BibTeX key"), GUIGlobals.getImage("makeKey"));
       parent = parentFrame;
 
       //            selectedEntry = newEntry ;
@@ -1253,7 +1260,7 @@ public class EntryEditor extends JPanel implements VetoableChangeListener {
 
   class UndoAction extends AbstractAction {
     public UndoAction() {
-      super("Undo", new ImageIcon(GUIGlobals.undoIconFile));
+      super("Undo", GUIGlobals.getImage("undo"));
       putValue(SHORT_DESCRIPTION, "Undo");
     }
 
@@ -1267,7 +1274,7 @@ public class EntryEditor extends JPanel implements VetoableChangeListener {
 
   class RedoAction extends AbstractAction {
     public RedoAction() {
-      super("Undo", new ImageIcon(GUIGlobals.redoIconFile));
+      super("Undo", GUIGlobals.getImage("redo"));
       putValue(SHORT_DESCRIPTION, "Redo");
     }
 
index 23d0500f5ff76fe2f8754fbfd5d523144c59cb38..4cb6ac918c2ee0efae1d34986685d2be74386c5c 100644 (file)
@@ -197,12 +197,13 @@ public class EntryEditorTab {
     }
 
     public void validateAllFields() {
-        for (Iterator i=editors.keySet().iterator(); i.hasNext();) {
-            String field = (String)i.next();
-            FieldEditor ed = (FieldEditor)editors.get(field);
-        if (((Component)ed).hasFocus())
-            ed.setBackground(GUIGlobals.activeEditor);
-        else
+        for (Iterator i = editors.keySet().iterator(); i.hasNext();) {
+            String field = (String) i.next();
+            FieldEditor ed = (FieldEditor) editors.get(field);
+            ed.setEnabled(true);
+            if (((Component) ed).hasFocus())
+                ed.setBackground(GUIGlobals.activeEditor);
+            else
                 ed.setBackground(GUIGlobals.validFieldBackground);
         }
     }
index dad1619b1ae2c9a5fd3fe7c31d5978e2011e3886..a5ea89f925727dba563b310a6ed993ec4bc1678c 100644 (file)
@@ -27,6 +27,8 @@ http://www.gnu.org/copyleft/gpl.ja.html
 
 package net.sf.jabref;
 
+import com.jgoodies.forms.builder.ButtonBarBuilder;
+
 import javax.swing.*;
 import java.awt.event.*;
 import java.awt.*;
@@ -71,22 +73,25 @@ public class EntryTypeDialog extends JDialog implements ActionListener {
        getContentPane().setLayout(new BorderLayout());
        JPanel pan = new JPanel();
        getContentPane().add(pan, BorderLayout.CENTER);
-       JPanel lower = new JPanel();
+       JPanel buttons = new JPanel();
        JButton // ok = new JButton("Ok"),
            cancel = new JButton(Globals.lang("Cancel"));
        //ok.addActionListener(this);
        cancel.addActionListener(this);
 
-        //pan.setBackground(GUIGlobals.lightGray);
-        //lower.setBackground(GUIGlobals.lightGray);
-       // Make ESC close dialog, equivalent to clicking Cancel.
+    // Make ESC close dialog, equivalent to clicking Cancel.
        cancel.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW)
            .put(baseFrame_.prefs.getKey("Close dialog"), "close");
        cancel.getActionMap().put("close", cancelAction);
 
-       //lower.add(ok);
-       lower.add(cancel);
-       getContentPane().add(lower, BorderLayout.SOUTH);
+       //buttons.add(ok);
+    ButtonBarBuilder bb = new ButtonBarBuilder(buttons);
+    //buttons.setBorder(BorderFactory.createEmptyBorder(2,2,2,2));
+    bb.addGlue();
+    bb.addGridded(cancel);
+    bb.addGlue();
+
+    getContentPane().add(buttons, BorderLayout.SOUTH);
        GridBagLayout gbl = new GridBagLayout();
        pan.setLayout(gbl);
        GridBagConstraints con = new GridBagConstraints();
@@ -116,7 +121,7 @@ public class EntryTypeDialog extends JDialog implements ActionListener {
                      (BorderFactory.createEtchedBorder(),
                       Globals.lang("Entry types")));
        //pan.setBackground(Color.white);
-       //lower.setBackground(Color.white);
+       //buttons.setBackground(Color.white);
        pack();
        setResizable(false);
     }
index 79359e5a0194a679bd08f049eec3de87e450b9e7..babd23b0da2cb9bb9857cb1b9e523d4791a72265 100644 (file)
@@ -33,6 +33,7 @@ import java.util.Vector;
 import javax.swing.*;
 
 import com.jgoodies.forms.layout.Sizes;
+import com.jgoodies.looks.Options;
 
 public class FieldContentSelector extends JComponent implements ActionListener {
 
@@ -62,8 +63,8 @@ public class FieldContentSelector extends JComponent implements ActionListener {
      *            insertion.
      */
     public FieldContentSelector(JabRefFrame frame, BasePanel panel,
-            Dialog owner, FieldEditor editor, MetaData data,
-            AbstractAction action, boolean horizontalLayout) {
+                                Dialog owner, FieldEditor editor, MetaData data,
+                                AbstractAction action, boolean horizontalLayout) {
         m_editor = editor;
         m_metaData = data;
         m_action = action;
@@ -80,8 +81,8 @@ public class FieldContentSelector extends JComponent implements ActionListener {
      *            insertion.
      */
     public FieldContentSelector(JabRefFrame frame, BasePanel panel,
-            Frame owner, FieldEditor editor, MetaData data,
-            AbstractAction action, boolean horizontalLayout) {
+                                Frame owner, FieldEditor editor, MetaData data,
+                                AbstractAction action, boolean horizontalLayout) {
         m_editor = editor;
         m_metaData = data;
         m_action = action;
@@ -97,7 +98,10 @@ public class FieldContentSelector extends JComponent implements ActionListener {
         //list.setEditable(true);
 
         list.setMaximumRowCount(35);
-
+        // Set the width of the popup independent of the size of th box itself:
+        list.putClientProperty(
+            Options.COMBO_POPUP_PROTOTYPE_DISPLAY_VALUE_KEY,
+            "The longest text in the combo popup menu. And even longer.");
         /*
          * list.getInputMap().put(Globals.prefs.getKey("Select value"),
          * "enter"); list.getActionMap().put("enter", new EnterAction());
index 979ea67f2c8a1bc9da824b888c5d8f1c4df12584..6df527907186b4043ef037d3055bcf0cff5135bf 100644 (file)
@@ -190,4 +190,9 @@ public class FieldTextArea extends JTextArea implements FieldEditor, KeyListener
 
     public void keyTyped(KeyEvent event) {
     }
+
+/*    public void setText(String t) {
+        super.setText(t);    //To change body of overridden methods use File | Settings | File Templates.
+        Thread.dumpStack();
+    }*/
 }
index 4db91656f03230b8a31ed420431afb93d28db9be..f1a83d339521066ed1a4456deddc0b87f0e453f0 100644 (file)
@@ -153,7 +153,8 @@ public class FieldTextMenu implements MouseListener
   {
     public PasteAction()
     {
-      super("Paste from clipboard", "Paste from clipboard", GUIGlobals.pasteIconFile);
+      super("Paste from clipboard", "Paste from clipboard",
+              GUIGlobals.getIconUrl("paste"));
     }
 
     public void actionPerformed(ActionEvent e)
@@ -178,7 +179,7 @@ public class FieldTextMenu implements MouseListener
   {
     public CopyAction()
     {
-      super("Copy to clipboard", "Copy to clipboard", GUIGlobals.copyIconFile);
+      super("Copy to clipboard", "Copy to clipboard", GUIGlobals.getIconUrl("copy"));
     }
 
     public void actionPerformed(ActionEvent e)
index 5a6ce258ff546c5b9165346bdee2d816ea151814..9697025675e36ed94c57c6ac440ce78eb7d423c6 100644 (file)
@@ -34,9 +34,11 @@ import java.awt.*;
 import java.util.*;
 //import java.util.List;
 import java.net.URL;
+import java.net.MalformedURLException;
 import javax.swing.*;
-import java.io.FileInputStream;
 import java.io.InputStream;
+import java.io.IOException;
+import java.io.File;
 
 public class GUIGlobals {
 
@@ -117,9 +119,10 @@ public class GUIGlobals {
 
     static HashMap tableIcons = new HashMap(); // Contains table icon mappings. Set up
     // further below.
-    public static JLabel incompleteLabel; // JLabel with icon signaling an incomplete entry.
     public static Color activeEditor = new Color(230, 230, 255);
 
+    static HashMap iconMap;
+
     public static JLabel getTableIcon(String fieldType) {
         Object o = tableIcons.get(fieldType);
         if (o == null) {
@@ -129,88 +132,6 @@ public class GUIGlobals {
     }
 
 
-  public static URL
-
-          openIconFile = GUIGlobals.class.getResource(pre + "fldr_obj.gif"),
-          editIconFile = GUIGlobals.class.getResource(pre + "edittsk_tsk.gif"),
-          saveIconFile = GUIGlobals.class.getResource(pre + "save_edit.gif"),
-          saveAsIconFile = GUIGlobals.class.getResource(pre + "saveas_edit.gif"),
-          prefsIconFile = GUIGlobals.class.getResource(pre + "configure2.png"),
-          newIconFile = GUIGlobals.class.getResource(pre + "new_page.gif"),
-          undoIconFile = GUIGlobals.class.getResource(pre + "undo_edit.gif"),
-          redoIconFile = GUIGlobals.class.getResource(pre + "redo_edit.gif"),
-          preambleIconFile = GUIGlobals.class.getResource(pre + "preamble.png"),
-          addIconFile = GUIGlobals.class.getResource(pre + "plus.gif"),
-          delRowIconFile = GUIGlobals.class.getResource(pre + "minus.gif"),
-          showReqIconFile = GUIGlobals.class.getResource(pre + "reqIcon.png"),
-          showOptIconFile = GUIGlobals.class.getResource(pre + "optIcon.png"),
-          showGenIconFile = GUIGlobals.class.getResource(pre + "absIcon.png"),
-          showAbsIconFile = GUIGlobals.class.getResource(pre + "genIcon.png"),
-          sourceIconFile = GUIGlobals.class.getResource(pre + "viewsource.gif"),
-          copyIconFile = GUIGlobals.class.getResource(pre + "copy_edit.gif"),
-          cutIconFile = GUIGlobals.class.getResource(pre + "cut_edit.gif"),
-          copyKeyIconFile = GUIGlobals.class.getResource(pre + "copy_edit.gif"),
-          genKeyIconFile = GUIGlobals.class.getResource(pre + "wizard.png"),
-          lyxIconFile = GUIGlobals.class.getResource(pre + "lyx2.png"),
-          backIconFile = GUIGlobals.class.getResource(pre + "backward_nav.gif"),
-          forwardIconFile = GUIGlobals.class.getResource(pre + "forward_nav.gif"),
-          contentsIconFile = GUIGlobals.class.getResource(pre + "toc_closed.gif"),
-          removeIconFile = GUIGlobals.class.getResource(pre + "delete_edit.gif"),
-          upIconFile = GUIGlobals.class.getResource(pre + "prev_nav.gif"),
-          downIconFile = GUIGlobals.class.getResource(pre + "next_nav.gif"),
-          stringsIconFile = GUIGlobals.class.getResource(pre + "strings.png"),
-          groupsIconFile = GUIGlobals.class.getResource(pre + "queue.png"),
-          groupsHighlightMatchingAnyFile = GUIGlobals.class.getResource(pre + "groupsHighlightAny.png"),
-          groupsHighlightMatchingAllFile = GUIGlobals.class.getResource(pre + "groupsHighlightAll.png"),
-          closeIconFile = GUIGlobals.class.getResource(pre + "fileclose.png"),
-          close2IconFile = GUIGlobals.class.getResource(pre + "fileclose2.png"),
-          refreshSmallIconFile = GUIGlobals.class.getResource(pre + "refresh_nav.gif"),
-          helpSmallIconFile = GUIGlobals.class.getResource(pre + "view.gif"),
-          helpIconFile = GUIGlobals.class.getResource(pre + "view.gif"),
-          aboutIcon = GUIGlobals.class.getResource(pre + "view.gif"),
-          helpContentsIconFile = GUIGlobals.class.getResource(pre + "contents2.png"),
-          newSmallIconFile = GUIGlobals.class.getResource(pre + "new_page.gif"),
-          pasteIconFile = GUIGlobals.class.getResource(pre + "paste_edit.gif"),
-          editEntryIconFile = GUIGlobals.class.getResource(pre + "DocumentDraw.gif"),
-          searchIconFile = GUIGlobals.class.getResource(pre + "search.gif"),
-          previewIconFile = GUIGlobals.class.getResource(pre + "preview.png"),
-          autoGroupIcon = GUIGlobals.class.getResource(pre + "addtsk_tsk.gif"),
-          wwwIcon = GUIGlobals.class.getResource(pre + "www.png"),
-          wwwCiteSeerIcon = GUIGlobals.class.getResource(pre + "wwwciteseer.png"),
-          fetchMedlineIcon = GUIGlobals.class.getResource(pre + "goto.png"),
-          fetchHourglassIcon = GUIGlobals.class.getResource(pre + "Hourglass.png"),
-          pdfIcon = GUIGlobals.class.getResource(pre + "pdf.png"),
-          pdfSmallIcon = GUIGlobals.class.getResource(pre + "pdf_small.gif"),
-          sheetIcon = GUIGlobals.class.getResource(pre + "defaults_ps.gif"),
-          doiIcon = GUIGlobals.class.getResource(pre + "doi.png"),
-          doiSmallIcon = GUIGlobals.class.getResource(pre + "doismall.png"),
-          psIcon = GUIGlobals.class.getResource(pre + "postscript.png"),
-          incompleteIcon = GUIGlobals.class.getResource(pre + "exclamation.gif"),
-          winEdtIcon = GUIGlobals.class.getResource(pre + "winedt.png"),
-          jabreflogo = GUIGlobals.class.getResource(pre + "JabRef-icon.png"),
-          completeTagIcon = GUIGlobals.class.getResource(pre + "completeItem.png"),
-          wrongTagIcon = GUIGlobals.class.getResource(pre + "wrongItem.png"),
-          clearInputArea = GUIGlobals.class.getResource(pre + "new_page.gif"),
-          markIcon = GUIGlobals.class.getResource(pre + "mark.png"),
-          unmarkIcon = GUIGlobals.class.getResource(pre + "unmark.png"),
-          newBibFile = GUIGlobals.class.getResource(pre + "newBibFile.png"),
-          integrityCheck = GUIGlobals.class.getResource(pre + "integrity.png"),
-          integrityInfo = GUIGlobals.class.getResource(pre + "messageInfo.png"),
-          integrityWarn = GUIGlobals.class.getResource(pre + "messageWarn.png"),
-          integrityFail = GUIGlobals.class.getResource(pre + "messageFail.png"),
-          duplicateIcon = GUIGlobals.class.getResource(pre + "duplicate.png"),
-          emacsIcon = GUIGlobals.class.getResource(pre + "emacs.png");
-
-  public static ImageIcon
-          groupRefiningIcon = new ImageIcon(GUIGlobals.class.getResource(pre +"groupRefining.png")),
-          groupIncludingIcon = new ImageIcon(GUIGlobals.class.getResource(pre +"groupIncluding.png")),
-          groupRegularIcon = null;
-
-    /*public static incompleteEntryIcon = new ImageIcon(incompleteIcon);
-    static {
-      incompleteEntryIcon.setTool
-    }*/
-
 // Help files (in HTML format):
   public static String
       baseFrameHelp = "BaseFrameHelp.html",
@@ -315,6 +236,123 @@ public class GUIGlobals {
 
   }
 
+    /**
+     * Read either the default icon theme, or a custom one. If loading of the custom theme
+     * fails, try to fall back on the default theme.
+     */
+    public static void setUpIconTheme() {
+        String defaultPrefix = "/images/crystal_16/", prefix = defaultPrefix;
+
+        URL defaultResource = GUIGlobals.class.getResource(prefix+"Icons.properties");
+        URL resource = defaultResource;
+
+      if (Globals.prefs.getBoolean("useCustomIconTheme")) {
+          String filename = Globals.prefs.get("customIconThemeFile");
+          if (filename != null)
+              try {
+                  File file = new File(filename);
+                  String parent = file.getParentFile().getAbsolutePath();
+                  prefix = "file://"+parent+System.getProperty("file.separator");
+                  resource = new URL("file://"+file.getAbsolutePath());
+              } catch (MalformedURLException e) {
+                  e.printStackTrace();
+              }
+      }
+      try {
+          iconMap = readIconThemeFile(resource, prefix);
+      } catch (IOException e) {
+          System.err.println(Globals.lang("Unable to read icon theme file")+" '"+
+            resource.toString()+"'");
+          // If we were trying to load a custom theme, try the default one as a fallback:
+          if (resource != defaultResource)
+              try {
+                  iconMap = readIconThemeFile(defaultResource, defaultPrefix);
+              } catch (IOException e2) {
+                  System.err.println(Globals.lang("Unable to read default icon theme."));
+              }
+
+      }
+
+
+  }
+
+    /**
+     * Looks up the URL for the image representing the given function, in the resource
+     * file listing images.
+     * @param name The name of the icon, such as "open", "save", "saveAs" etc.
+     * @return The URL to the actual image to use.
+     */
+    public static URL getIconUrl(String name) {
+        if (iconMap.containsKey(name)) {
+            String path = (String)iconMap.get(name);
+            URL url = GUIGlobals.class.getResource(path);
+            if (url == null)
+                // This may be a resource outside of the jar file, so we try a general URL:
+                try {
+                    url = new URL(path);
+                } catch (MalformedURLException e) {
+                    url = null;
+                }
+            if (url == null)
+                System.err.println(Globals.lang("Could not find image file")+" '"+path+"'");
+            return url;
+        }
+        else return null;
+    }
+
+    /**
+     * Constructs an ImageIcon for the given function, using the image specified in
+     * the resource files resource/Icons_en.properties.
+     * @param name The name of the icon, such as "open", "save", "saveAs" etc.
+     * @return The ImageIcon for the function.
+     */
+    public static ImageIcon getImage(String name) {
+        URL u = getIconUrl(name);
+        return u != null ? new ImageIcon(getIconUrl(name)) : null;
+    }
+
+    /**
+     * Read a typical java property file into a HashMap. Currently doesn't support escaping
+     * of the '=' character - it simply looks for the first '=' to determine where the key ends.
+     * Both the key and the value is trimmed for whitespace at the ends.
+     * @param file The URL to read information from.
+     * @param prefix A String to prefix to all values read. Can represent e.g. the directory
+     * where icon files are to be found.
+     * @return A HashMap containing all key-value pairs found.
+     * @throws IOException
+     */
+    private static HashMap readIconThemeFile(URL file, String prefix) throws IOException {
+        HashMap map = new HashMap();
+        InputStream in = null;
+        try {
+            in = file.openStream();
+            StringBuffer buffer = new StringBuffer();
+            int c;
+            while ((c = in.read()) != -1)
+                buffer.append((char)c);
+            String[] lines = buffer.toString().split("\n");
+            String directory = null;
+            for (int i=0; i<lines.length; i++) {
+                String line = lines[i].trim();
+                int index = line.indexOf("=");
+                if (index >= 0) {
+                    String key = line.substring(0, index).trim();
+                    String value = prefix+line.substring(index+1).trim();
+                    map.put(key, value);
+                }
+            }
+        } catch (IOException ex) {
+            throw ex;
+        } finally {
+            try {
+                if (in != null) in.close();
+            } catch (IOException ex) {
+                ex.printStackTrace();
+            }
+        }
+        return map;
+    }
+
   /** returns the path to language independent help files */
   public static String getLocaleHelpPath()
   {
@@ -334,22 +372,20 @@ public class GUIGlobals {
   public static void init() {
     typeNameFont = new Font("arial", Font.ITALIC+Font.BOLD, 24);
     fieldNameFont = new Font("arial", Font.ITALIC+Font.BOLD, 14);
-    incompleteLabel = new JLabel(new ImageIcon(GUIGlobals.incompleteIcon));
-    incompleteLabel.setToolTipText(Globals.lang("Entry is incomplete"));
     JLabel lab;
-    lab = new JLabel(new ImageIcon(pdfIcon));
+    lab = new JLabel(getImage("pdfSmall"));
     lab.setToolTipText(Globals.lang("Open")+" PDF");
     tableIcons.put("pdf", lab);
-    lab = new JLabel(new ImageIcon(wwwIcon));
+    lab = new JLabel(getImage("wwwSmall"));
     lab.setToolTipText(Globals.lang("Open")+" URL");
     tableIcons.put("url", lab);
-    lab = new JLabel(new ImageIcon(wwwCiteSeerIcon));
+    lab = new JLabel(getImage("citeseer"));
     lab.setToolTipText(Globals.lang("Open")+" CiteSeer URL");
     tableIcons.put("citeseerurl", lab);
-    lab = new JLabel(new ImageIcon(doiSmallIcon));
+    lab = new JLabel(getImage("doiSmall"));
     lab.setToolTipText(Globals.lang("Open")+" DOI "+Globals.lang("web link"));
     tableIcons.put("doi", lab);
-    lab = new JLabel(new ImageIcon(psIcon));
+    lab = new JLabel(getImage("psSmall"));
     lab.setToolTipText(Globals.lang("Open")+" PS");
     tableIcons.put("ps", lab);
 
index 1b6c9adf88b2999d87ae16a5cbde51e0ca891001..978b56d99d5531b62364e5b8e905768859337bcd 100644 (file)
@@ -66,9 +66,9 @@ public class GeneralTab extends JPanel implements PrefsTab {
         timeStampFormat = new JTextField();
         timeStampField = new JTextField();
         ownerHelp = new HelpAction(frame.helpDiag, GUIGlobals.ownerHelp,
-                "Help", GUIGlobals.helpSmallIconFile);
+                "Help", GUIGlobals.getIconUrl("helpSmall"));
         timeStampHelp = new HelpAction(frame.helpDiag, GUIGlobals.timeStampHelp, "Help",
-                GUIGlobals.helpSmallIconFile);
+                GUIGlobals.getIconUrl("helpSmall"));
         inspectionWarnDupli = new JCheckBox(Globals.lang("Warn about unresolved duplicates when closing inspection window"));
 
         Insets marg = new Insets(0,12,3,0);
@@ -101,7 +101,7 @@ public class GeneralTab extends JPanel implements PrefsTab {
                         "pref, 6dlu, pref, 6dlu, pref, 6dlu, pref, 6dlu, pref, 6dlu, "
                         +"pref, 6dlu, pref, 6dlu, pref, 6dlu, pref, 6dlu, pref, 6dlu, "
                         +"pref, 6dlu, pref, 6dlu, pref, 6dlu, pref, 6dlu, pref, 6dlu, "
-                                    +"pref, 6dlu, pref, 6dlu, pref");
+                                    +"pref, 6dlu, pref, 6dlu, pref, 6dlu, pref");
         DefaultFormBuilder builder = new DefaultFormBuilder(layout);
         CellConstraints cc = new CellConstraints();
         builder.addSeparator(Globals.lang("File"), cc.xyw(1,1, 5));
@@ -128,12 +128,12 @@ public class GeneralTab extends JPanel implements PrefsTab {
         builder.add(defSource, cc.xy(2, 19));
         builder.addSeparator(Globals.lang("Miscellaneous"), cc.xyw(1, 21, 5));
         builder.add(useImportInspector, cc.xy(2, 23));
-        builder.add(useImportInspectorForSingle, cc.xy(4, 23));
-        builder.add(inspectionWarnDupli, cc.xy(4, 25));
-        builder.add(ctrlClick, cc.xy(2, 27));
-        builder.add(confirmDelete, cc.xy(2, 29));
-        builder.add(keyDuplicateWarningDialog, cc.xy(2, 31));
-        builder.add(keyEmptyWarningDialog, cc.xy(2, 33));
+        builder.add(useImportInspectorForSingle, cc.xy(2, 25));
+        builder.add(inspectionWarnDupli, cc.xy(2, 27));
+        builder.add(ctrlClick, cc.xy(2, 29));
+        builder.add(confirmDelete, cc.xy(2, 31));
+        builder.add(keyDuplicateWarningDialog, cc.xy(2, 33));
+        builder.add(keyEmptyWarningDialog, cc.xy(2, 35));
         // Create a new panel with its own FormLayout for the last items:
         FormLayout layout2 = new FormLayout
                 ("left:pref, 8dlu, fill:60dlu, 4dlu, left:pref, 4dlu, fill:60dlu, 4dlu, fill:pref", "");
@@ -163,7 +163,7 @@ public class GeneralTab extends JPanel implements PrefsTab {
         builder2.append(lab);
         builder2.append(encodings);
 
-        builder.add(builder2.getPanel(), cc.xyw(2, 35, 3));
+        builder.add(builder2.getPanel(), cc.xyw(2, 37, 3));
 
 
         JPanel pan = builder.getPanel();
index 15a73ae64d0eb31f311f40ac2ecd47e81c57db2a..9e036e7631e7584651f2ec69f0bf01418282bdb4 100644 (file)
@@ -204,8 +204,10 @@ public class Globals {
     }
     catch (MissingResourceException ex) {
       translation = key;
-      logger("Warning: could not get translation for \""
-                         + key + "\"");
+      
+      //Thread.dumpStack();  // For debugging
+      /*logger("Warning: could not get translation for \""
+                         + key + "\"");*/
     }
     if ((translation != null) && (translation.length() != 0)) {
       translation = translation.replaceAll("_", " ");
@@ -378,8 +380,14 @@ public class Globals {
           off = new OpenFileFilter();
         else if (!extension.equals(NONE))
           off = new OpenFileFilter(extension);
-        return (String[])getNewFileImpl(owner, directory, extension, null, off,
+        Object o = getNewFileImpl(owner, directory, extension, null, off,
                 JFileChooser.OPEN_DIALOG, updateWorkingdirectory, false, true);
+        String[] toReturn;
+        if (o instanceof String[])
+            toReturn = (String[])o;
+        else toReturn = new String[] {(String)o};
+
+        return toReturn;
     }
 
   public static String getNewFile(JFrame owner,
@@ -443,9 +451,10 @@ public class Globals {
                                        boolean dirOnly,
                                        boolean multipleSelection) {
 
-      if (ON_MAC) {
+      if (ON_MAC && prefs.getBoolean("useNativeFileDialogOnMac")) {
+
           return getNewFileForMac(owner, directory, extension, dialogType,
-                  updateWorkingDirectory, dirOnly, off);
+                updateWorkingDirectory, dirOnly, off);
       }
 
       JFileChooser fc = null;
@@ -470,7 +479,7 @@ public class Globals {
 
       fc.addChoosableFileFilter(off);
       fc.setDialogType(dialogType);
-      int dialogResult = JFileChooser.CANCEL_OPTION;
+      int dialogResult;
       if (dialogType == JFileChooser.OPEN_DIALOG) {
           dialogResult = fc.showOpenDialog(owner);
       } else if (dialogType == JFileChooser.SAVE_DIALOG) {
@@ -522,6 +531,7 @@ public class Globals {
                                          FilenameFilter filter) {
 
     FileDialog fc = new FileDialog(owner);
+    
     //fc.setFilenameFilter(filter);
     if (directory != null) {
       fc.setDirectory(directory.getParent());
diff --git a/src/java/net/sf/jabref/Globals.java~ b/src/java/net/sf/jabref/Globals.java~
new file mode 100644 (file)
index 0000000..9dc3ac8
--- /dev/null
@@ -0,0 +1,1324 @@
+/* (C) 2003 Nizar N. Batada, Morten O. Alver
+
+ All programs in this directory and
+ subdirectories are published under the GNU General Public License as
+ described below.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or (at
+ your option) any later version.
+
+ This program is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ USA
+
+ Further information about the GNU GPL is available at:
+ http://www.gnu.org/copyleft/gpl.ja.html
+
+ */
+package net.sf.jabref;
+
+import java.io.* ;
+import java.nio.charset.Charset;
+import java.util.* ;
+import java.util.List;
+import java.util.logging.* ;
+import java.util.logging.Filter ;
+
+import java.awt.* ;
+import javax.swing.* ;
+
+import net.sf.jabref.collab.* ;
+import net.sf.jabref.imports.* ;
+import net.sf.jabref.util.* ;
+import net.sf.jabref.journals.JournalAbbreviations;
+
+public class Globals {
+
+  public static int SHORTCUT_MASK,// = Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();
+      FUTURE_YEAR = 2050, // Needs to give a year definitely in the future. Used for guessing the
+                          // year field when parsing textual data.  :-)
+
+      STANDARD_EXPORT_COUNT = 5, // The number of standard export formats.
+      METADATA_LINE_LENGTH = 70; // The line length used to wrap metadata.
+
+  private static String resourcePrefix = "resource/JabRef",
+                        menuResourcePrefix = "resource/Menu",
+                        integrityResourcePrefix = "resource/IntegrityMessage";
+  private static final String buildInfos = "/resource/build.properties" ;
+  public static final String additionalFields = "/resource/fields/fields.xml" ;  // some extra field definitions
+  private static String logfile = "jabref.log";
+  public static ResourceBundle messages, menuTitles, intMessages ;
+  public static FileUpdateMonitor fileUpdateMonitor = new FileUpdateMonitor();
+    public static ImportFormatReader importFormatReader = new ImportFormatReader();
+
+  public static ErrorConsole errorConsole;
+
+   public static String VERSION,
+                       BUILD,
+                       BUILD_DATE ;
+
+  static
+  {
+    TBuildInfo bi = new TBuildInfo(buildInfos) ;
+    VERSION = bi.getBUILD_VERSION() ;
+    BUILD = bi.getBUILD_NUMBER() ;
+    BUILD_DATE = bi.getBUILD_DATE() ;
+
+      // TODO: Error console initialization here. When should it be used?
+      errorConsole = ErrorConsole.getInstance();
+  }
+
+
+
+  //public static ResourceBundle preferences = ResourceBundle.getBundle("resource/defaultPrefs");
+  public static Locale locale;
+  public static final String FILETYPE_PREFS_EXT = "_dir",
+      SELECTOR_META_PREFIX = "selector_",
+      LAYOUT_PREFIX = "/resource/layout/",
+      MAC = "Mac OS X",
+      DOI_LOOKUP_PREFIX = "http://dx.doi.org/",
+      NONE = "_non__",
+      FORMATTER_PACKAGE = "net.sf.jabref.export.layout.format.";
+  public static float duplicateThreshold = 0.75f;
+  private static Handler consoleHandler = new java.util.logging.ConsoleHandler();
+  public static String[] ENCODINGS,
+      ALL_ENCODINGS = //(String[]) Charset.availableCharsets().keySet().toArray(new String[]{});
+          new String[] {"ISO8859_1", "UTF8", "UTF-16", "ASCII",
+              "Cp1250", "Cp1251", "Cp1252", "Cp1253", "Cp1254", "Cp1257",
+              "JIS", "SJIS", "EUC-JP",      // Added Japanese encodings.
+              "Big5", "Big5_HKSCS", "GBK",
+              "ISO8859_2", "ISO8859_3", "ISO8859_4", "ISO8859_5", "ISO8859_6",
+              "ISO8859_7", "ISO8859_8", "ISO8859_9", "ISO8859_13", "ISO8859_15"};
+
+  // String array that maps from month number to month string label:
+  public static String[] MONTHS = new String[] {"jan", "feb", "mar", "apr", "may", "jun",
+          "jul", "aug", "sep", "oct", "nov", "dec"};
+
+  // Map that maps from month string labels to
+  public static Map MONTH_STRINGS = new HashMap();
+  static {
+      MONTH_STRINGS.put("jan", "January");
+      MONTH_STRINGS.put("feb", "February");
+      MONTH_STRINGS.put("mar", "March");
+      MONTH_STRINGS.put("apr", "April");
+      MONTH_STRINGS.put("may", "May");
+      MONTH_STRINGS.put("jun", "June");
+      MONTH_STRINGS.put("jul", "July");
+      MONTH_STRINGS.put("aug", "August");
+      MONTH_STRINGS.put("sep", "September");
+      MONTH_STRINGS.put("oct", "October");
+      MONTH_STRINGS.put("nov", "November");
+      MONTH_STRINGS.put("dec", "December");
+
+      // Build list of encodings, by filtering out all that are not supported
+      // on this system:
+      List encodings = new ArrayList();
+      for (int i=0; i<ALL_ENCODINGS.length; i++) {
+          if (Charset.isSupported(ALL_ENCODINGS[i]))
+            encodings.add(ALL_ENCODINGS[i]);
+      }
+      ENCODINGS = (String[])encodings.toArray(new String[0]);
+
+  }
+
+
+  public static GlobalFocusListener focusListener = new GlobalFocusListener();
+  public static JabRefPreferences prefs = null;
+ public static HelpDialog helpDiag = null;
+  public static String osName = System.getProperty("os.name", "def");
+  public static boolean ON_MAC = (osName.equals(MAC)),
+      ON_WIN = osName.startsWith("Windows");
+
+
+  public static String[] SKIP_WORDS = {"a", "an", "the", "for", "on"};
+    public static SidePaneManager sidePaneManager;
+  public static final String NEWLINE = System.getProperty("line.separator");
+    public static final boolean UNIX_NEWLINE = NEWLINE.equals("\n"); // true if we have unix newlines.
+
+    public static final String BIBTEX_STRING = "__string";
+    // "Fieldname" to indicate that a field should be treated as a bibtex string. Used when writing database to file.
+
+    public static void logger(String s) {
+    Logger.global.info(s);
+  }
+
+  public static void turnOffLogging() { // only log exceptions
+    Logger.global.setLevel(java.util.logging.Level.SEVERE);
+  }
+
+  // should be only called once
+  public static void turnOnConsoleLogging() {
+    Logger.global.addHandler(consoleHandler);
+
+  }
+
+
+
+  public static void turnOnFileLogging() {
+    Logger.global.setLevel(java.util.logging.Level.ALL);
+    java.util.logging.Handler handler;
+    handler = new ConsoleHandler();
+    /*try {
+      handler = new FileHandler(logfile); // this will overwrite
+    }
+    catch (IOException e) { //can't open log file so use console
+        e.printStackTrace();
+
+    } */
+    Logger.global.addHandler(handler);
+
+    handler.setFilter(new Filter() { // select what gets logged
+      public boolean isLoggable(LogRecord record) {
+        return true;
+      }
+    });
+  }
+
+  public static void setLanguage(String language, String country) {
+    locale = new Locale(language, country);
+    messages = ResourceBundle.getBundle(resourcePrefix, locale);
+    menuTitles = ResourceBundle.getBundle(menuResourcePrefix, locale);
+    intMessages = ResourceBundle.getBundle(integrityResourcePrefix, locale);
+    Locale.setDefault(locale);
+    javax.swing.JComponent.setDefaultLocale(locale);
+  }
+
+
+  public static JournalAbbreviations journalAbbrev;
+
+
+  public static String lang(String key, String[] params) {
+    String translation = null;
+    try {
+      if (Globals.messages != null) {
+        translation = Globals.messages.getString(key.replaceAll(" ", "_"));
+      }
+    }
+    catch (MissingResourceException ex) {
+      translation = key;
+      
+      //Thread.dumpStack();  // For debugging
+      logger("Warning: could not get translation for \""
+                         + key + "\"");
+    }
+    if ((translation != null) && (translation.length() != 0)) {
+      translation = translation.replaceAll("_", " ");
+      StringBuffer sb = new StringBuffer();
+      boolean b = false;
+      char c;
+      for (int i = 0; i < translation.length(); ++i) {
+          c = translation.charAt(i);
+          if (c == '%') {
+              b = true;
+          } else {
+              if (!b) {
+                  sb.append(c);
+              } else {
+                  b = false;
+                  try {
+                      int index = Integer.parseInt(String.valueOf(c));
+                      if (params != null && index >= 0 && index <= params.length)
+                          sb.append(params[index]);
+                  } catch (NumberFormatException e) {
+                      // append literally (for quoting) or insert special symbol
+                      switch (c) {
+                      case 'c': // colon
+                          sb.append(':');
+                          break;
+                      case 'e': // equal
+                          sb.append('=');
+                          break;
+                      default: // anything else, e.g. %
+                          sb.append(c);
+                      }
+                  }
+              }
+          }
+      }
+      return sb.toString();
+    }
+    return key;
+  }
+
+  public static String lang(String key) {
+      return lang(key, (String[])null);
+  }
+
+  public static String lang(String key, String s1) {
+      return lang(key, new String[]{s1});
+  }
+
+  public static String lang(String key, String s1, String s2) {
+      return lang(key, new String[]{s1, s2});
+  }
+
+  public static String lang(String key, String s1, String s2, String s3) {
+      return lang(key, new String[]{s1, s2, s3});
+  }
+
+  public static String menuTitle(String key) {
+    String translation = null;
+    try {
+      if (Globals.messages != null) {
+        translation = Globals.menuTitles.getString(key.replaceAll(" ", "_"));
+      }
+    }
+    catch (MissingResourceException ex) {
+      translation = key;
+
+      //System.err.println("Warning: could not get menu item translation for \""
+      //                   + key + "\"");
+
+    }
+    if ((translation != null) && (translation.length() != 0)) {
+      return translation.replaceAll("_", " ");
+    }
+    else {
+      return key;
+    }
+  }
+
+  public static String getIntegrityMessage(String key)
+  {
+    String translation = null;
+    try {
+      if (Globals.intMessages != null) {
+        translation = Globals.intMessages.getString(key);
+      }
+    }
+    catch (MissingResourceException ex) {
+      translation = key;
+
+//      System.err.println("Warning: could not get menu item translation for \""
+//                         + key + "\"");
+    }
+    if ((translation != null) && (translation.length() != 0)) {
+      return translation ;
+    }
+    else {
+      return key;
+    }
+  }
+
+
+  //============================================================
+  // Using the hashmap of entry types found in BibtexEntryType
+  //============================================================
+  public static BibtexEntryType getEntryType(String type) {
+    // decide which entryType object to return
+    Object o = BibtexEntryType.ALL_TYPES.get(type);
+    if (o != null) {
+      return (BibtexEntryType) o;
+    }
+    else {
+      return BibtexEntryType.OTHER;
+    }
+    /*
+      if(type.equals("article"))
+        return BibtexEntryType.ARTICLE;
+      else if(type.equals("book"))
+        return BibtexEntryType.BOOK;
+      else if(type.equals("inproceedings"))
+        return BibtexEntryType.INPROCEEDINGS;
+     */
+  }
+
+    /**
+     * This method provides the correct opening brace to use when writing a field
+     * to BibTeX format.
+     * @return A String containing the braces to use.
+     */
+    public static String getOpeningBrace() {
+        return "{";
+        /*
+            As of version 2.0, storing all fields with double braces is no longer supported, because
+            it causes problems with e.g. the author field.
+
+        if (prefs.getBoolean("autoDoubleBraces"))
+            return "{{";
+        else
+            return "{";
+        */
+    }
+
+    /**
+     * This method provides the correct closing brace to use when writing a field
+     * to BibTeX format.
+     * @return A String containing the braces to use.
+     */
+    public static String getClosingBrace() {
+        return "}";
+        /*
+            As of version 2.0, storing all fields with double braces is no longer supported, because
+            it causes problems with e.g. the author field.
+
+        if (prefs.getBoolean("autoDoubleBraces"))
+            return "}}";
+        else
+        */
+
+    }
+
+    /*    public static void setupKeyBindings(JabRefPreferences prefs) {
+    }*/
+
+
+    public static String[] getMultipleFiles(JFrame owner,
+                                          File directory, String extension,
+                                          boolean updateWorkingdirectory) {
+
+        OpenFileFilter off = null;
+        if (extension == null)
+          off = new OpenFileFilter();
+        else if (!extension.equals(NONE))
+          off = new OpenFileFilter(extension);
+        Object o = getNewFileImpl(owner, directory, extension, null, off,
+                JFileChooser.OPEN_DIALOG, updateWorkingdirectory, false, true);
+        String[] toReturn;
+        if (o instanceof String[])
+            toReturn = (String[])o;
+        else toReturn = new String[] {(String)o};
+
+        return toReturn;
+    }
+
+  public static String getNewFile(JFrame owner,
+                                  File directory, String extension,
+                                  int dialogType,
+                                  boolean updateWorkingDirectory) {
+    return getNewFile(owner, directory, extension, null, dialogType,
+                      updateWorkingDirectory, false);
+  }
+
+
+  public static String getNewFile(JFrame owner,
+                                  File directory, String extension,
+                                  String description,
+                                  int dialogType,
+                                  boolean updateWorkingDirectory) {
+    return getNewFile(owner, directory, extension, description, dialogType,
+                      updateWorkingDirectory, false);
+  }
+
+
+  public static String getNewDir(JFrame owner,
+                                 File directory, String extension,
+                                 int dialogType, boolean updateWorkingDirectory) {
+    return getNewFile(owner, directory, extension, null, dialogType,
+                      updateWorkingDirectory, true);
+  }
+
+  public static String getNewDir(JFrame owner,
+                                 File directory, String extension,
+                                 String description,
+                                 int dialogType, boolean updateWorkingDirectory) {
+    return getNewFile(owner, directory, extension, description, dialogType,
+                      updateWorkingDirectory, true);
+  }
+
+  private static String getNewFile(JFrame owner,
+                                   File directory, String extension,
+                                   String description,
+                                   int dialogType,
+                                   boolean updateWorkingDirectory,
+                                   boolean dirOnly) {
+
+    OpenFileFilter off = null;
+
+    if (extension == null)
+      off = new OpenFileFilter();
+    else if (!extension.equals(NONE))
+      off = new OpenFileFilter(extension);
+
+    return (String)getNewFileImpl(owner, directory, extension, description, off,
+            dialogType, updateWorkingDirectory, dirOnly, false);
+  }
+
+  private static Object getNewFileImpl(JFrame owner,
+                                       File directory, String extension,
+                                       String description,
+                                       OpenFileFilter off,
+                                       int dialogType,
+                                       boolean updateWorkingDirectory,
+                                       boolean dirOnly,
+                                       boolean multipleSelection) {
+
+      if (ON_MAC && prefs.getBoolean("useNativeFileDialogOnMac")) {
+
+          return getNewFileForMac(owner, directory, extension, dialogType,
+                updateWorkingDirectory, dirOnly, off);
+      }
+
+      JFileChooser fc = null;
+      try {
+          fc = new JabRefFileChooser(directory);
+      } catch (InternalError errl) {
+          // This try/catch clause was added because a user reported an
+          // InternalError getting thrown on WinNT, presumably because of a
+          // bug in JGoodies Windows PLAF. This clause can be removed if the
+          // bug is fixed, but for now we just resort to the native file
+          // dialog, using the same method as is always used on Mac:
+          return getNewFileForMac(owner, directory, extension, dialogType,
+                  updateWorkingDirectory, dirOnly, off);
+      }
+
+      if (dirOnly) {
+          fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
+
+      }
+
+      fc.setMultiSelectionEnabled(multipleSelection);
+
+      fc.addChoosableFileFilter(off);
+      fc.setDialogType(dialogType);
+      int dialogResult;
+      if (dialogType == JFileChooser.OPEN_DIALOG) {
+          dialogResult = fc.showOpenDialog(owner);
+      } else if (dialogType == JFileChooser.SAVE_DIALOG) {
+          dialogResult = fc.showSaveDialog(owner);
+      } else {
+          dialogResult = fc.showDialog(owner, description);
+      }
+
+      // the getSelectedFile method returns a valid fileselection
+      // (if something is selected) indepentently from dialog return status
+      if (dialogResult != JFileChooser.APPROVE_OPTION)
+          return null;
+
+      // okay button
+      File selectedFile = fc.getSelectedFile();
+      if (selectedFile == null) { // cancel
+          return null;
+      }
+
+      // If this is a save dialog, and the user has not chosen "All files" as filter
+      // we enforce the given extension. But only if extension is not null.
+      if ((extension != null) && (dialogType == JFileChooser.SAVE_DIALOG) && (fc.getFileFilter() == off) &&
+              !off.accept(selectedFile)) {
+
+          // add the first extension if there are multiple extensions
+          selectedFile = new File(selectedFile.getPath() + extension.split("[, ]+", 0)[0]);
+      }
+
+      if (updateWorkingDirectory) {
+          prefs.put("workingDirectory", selectedFile.getPath());
+      }
+
+      if (!multipleSelection)
+        return selectedFile.getAbsolutePath();
+      else {
+          File[] files = fc.getSelectedFiles();
+          String[] filenames = new String[files.length];
+          for (int i=0; i<files.length; i++)
+            filenames[i] = files[i].getAbsolutePath();
+          return filenames;
+      }
+  }
+
+  private static String getNewFileForMac(JFrame owner,
+                                         File directory, String extensions,
+                                         int dialogType,
+                                         boolean updateWorkingDirectory,
+                                         boolean dirOnly,
+                                         FilenameFilter filter) {
+
+    FileDialog fc = new FileDialog(owner);
+    
+    //fc.setFilenameFilter(filter);
+    if (directory != null) {
+      fc.setDirectory(directory.getParent());
+    }
+    if (dialogType == JFileChooser.OPEN_DIALOG) {
+      fc.setMode(FileDialog.LOAD);
+    }
+    else {
+      fc.setMode(FileDialog.SAVE);
+    }
+
+    fc.setVisible(true); // fc.show(); -> deprecated since 1.5
+
+    if (fc.getFile() != null) {
+      Globals.prefs.put("workingDirectory", fc.getDirectory() + fc.getFile());
+      return fc.getDirectory() + fc.getFile();
+    }
+    else {
+      return null;
+    }
+  }
+
+
+  public static String SPECIAL_COMMAND_CHARS = "\"`^~'c";
+  public static HashMap HTML_CHARS = new HashMap(),
+          HTMLCHARS = new HashMap(),
+      XML_CHARS = new HashMap(),
+      ASCII2XML_CHARS = new HashMap(),
+      UNICODE_CHARS = new HashMap(),
+      RTFCHARS = new HashMap(),
+        URL_CHARS = new HashMap();
+  static {
+
+      //System.out.println(journalAbbrev.getAbbreviatedName("Journal of Fish Biology", true));
+      //System.out.println(journalAbbrev.getAbbreviatedName("Journal of Fish Biology", false));
+      //System.out.println(journalAbbrev.getFullName("Aquaculture Eng."));
+      /*for (Iterator i=journalAbbrev.fullNameIterator(); i.hasNext();) {
+          String s = (String)i.next();
+          System.out.println(journalAbbrev.getFullName(s)+" : "+journalAbbrev.getAbbreviatedName(s, true));
+      } */
+
+    // Start the thread that monitors file time stamps.
+    //Util.pr("Starting FileUpdateMonitor thread. Globals line 293.");
+    fileUpdateMonitor.start();
+
+    try {
+      SHORTCUT_MASK = Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();
+    } catch (Throwable t) {
+
+    }
+
+      // Special characters in URLs need to be replaced to ensure that the URL
+      // opens properly on all platforms:
+      URL_CHARS.put("<", "%3c");
+      URL_CHARS.put(">", "%3e");
+      URL_CHARS.put("(", "%28");
+      URL_CHARS.put(")", "%29");
+      URL_CHARS.put(" ", "%20");
+      URL_CHARS.put("&", "%26");
+      URL_CHARS.put("$", "%24");
+
+
+
+//    HTMLCHARS.put("\"a", "&auml;");
+//    HTMLCHARS.put("\"A", "&Auml;");
+//    HTMLCHARS.put("\"e", "&euml;");
+//    HTMLCHARS.put("\"E", "&Euml;");
+//    HTMLCHARS.put("\"i", "&iuml;");
+//    HTMLCHARS.put("\"I", "&Iuml;");
+//    HTMLCHARS.put("\"o", "&ouml;");
+//    HTMLCHARS.put("\"O", "&Ouml;");
+//    HTMLCHARS.put("\"u", "&uuml;");
+//    HTMLCHARS.put("\"U", "&Uuml;");
+//    HTMLCHARS.put("`a", "&agrave;");
+//    HTMLCHARS.put("`A", "&Agrave;");
+//    HTMLCHARS.put("`e", "&egrave;");
+//    HTMLCHARS.put("`E", "&Egrave;");
+//    HTMLCHARS.put("`i", "&igrave;");
+//    HTMLCHARS.put("`I", "&Igrave;");
+//    HTMLCHARS.put("`o", "&ograve;");
+//    HTMLCHARS.put("`O", "&Ograve;");
+//    HTMLCHARS.put("`u", "&ugrave;");
+//    HTMLCHARS.put("`U", "&Ugrave;");
+//    HTMLCHARS.put("'e", "&eacute;");
+//    HTMLCHARS.put("'E", "&Eacute;");
+//    HTMLCHARS.put("'i", "&iacute;");
+//    HTMLCHARS.put("'I", "&Iacute;");
+//    HTMLCHARS.put("'o", "&oacute;");
+//    HTMLCHARS.put("'O", "&Oacute;");
+//    HTMLCHARS.put("'u", "&uacute;");
+//    HTMLCHARS.put("'U", "&Uacute;");
+//    HTMLCHARS.put("'a", "&aacute;");
+//    HTMLCHARS.put("'A", "&Aacute;");
+//    HTMLCHARS.put("^a", "&ocirc;");
+//    HTMLCHARS.put("^A", "&Ocirc;");
+//    HTMLCHARS.put("^o", "&ocirc;");
+//    HTMLCHARS.put("^O", "&Ocirc;");
+//    HTMLCHARS.put("^u", "&ucirc;");
+//    HTMLCHARS.put("^U", "&Ucirc;");
+//    HTMLCHARS.put("^e", "&ecirc;");
+//    HTMLCHARS.put("^E", "&Ecirc;");
+//    HTMLCHARS.put("^i", "&icirc;");
+//    HTMLCHARS.put("^I", "&Icirc;");
+//    HTMLCHARS.put("~o", "&otilde;");
+//    HTMLCHARS.put("~O", "&Otilde;");
+//    HTMLCHARS.put("~n", "&ntilde;");
+//    HTMLCHARS.put("~N", "&Ntilde;");
+//    HTMLCHARS.put("~a", "&atilde;");
+//    HTMLCHARS.put("~A", "&Atilde;");
+//    HTMLCHARS.put("cc", "&ccedil;");
+//    HTMLCHARS.put("cC", "&Ccedil;");
+
+
+      // Following character definitions contributed by Ervin Kolenovic:
+      // HTML named entities from #192 - #255 (UNICODE Latin-1)
+       HTMLCHARS.put("`A", "&Agrave;");    // #192
+       HTMLCHARS.put("'A", "&Aacute;");    // #193
+       HTMLCHARS.put("^A", "&Acirc;");     // #194
+       HTMLCHARS.put("~A", "&Atilde;");    // #195
+       HTMLCHARS.put("\"A", "&Auml;");     // #196
+       HTMLCHARS.put("AA", "&Aring;");     // #197
+       HTMLCHARS.put("AE", "&AElig;");     // #198
+       HTMLCHARS.put("cC", "&Ccedil;");    // #199
+       HTMLCHARS.put("`E", "&Egrave;");    // #200
+       HTMLCHARS.put("'E", "&Eacute;");    // #201
+       HTMLCHARS.put("^E", "&Ecirc;");     // #202
+       HTMLCHARS.put("\"E", "&Euml;");     // #203
+       HTMLCHARS.put("`I", "&Igrave;");    // #204
+       HTMLCHARS.put("'I", "&Iacute;");    // #205
+       HTMLCHARS.put("^I", "&Icirc;");     // #206
+       HTMLCHARS.put("\"I", "&Iuml;");     // #207
+       HTMLCHARS.put("DH", "&ETH;");       // #208
+       HTMLCHARS.put("~N", "&Ntilde;");    // #209
+       HTMLCHARS.put("`O", "&Ograve;");    // #210
+       HTMLCHARS.put("'O", "&Oacute;");    // #211
+       HTMLCHARS.put("^O", "&Ocirc;");     // #212
+       HTMLCHARS.put("~O", "&Otilde;");    // #213
+       HTMLCHARS.put("\"O", "&Ouml;");     // #214
+       // According to ISO 8859-1 the "\times" symbol should be placed here (#215).
+       // Omitting this, because it is a mathematical symbol.
+       HTMLCHARS.put("O", "&OSlash;");     // #216
+       HTMLCHARS.put("`U", "&Ugrave;");    // #217
+       HTMLCHARS.put("'U", "&Uacute;");    // #218
+       HTMLCHARS.put("^U", "&Ucirc;");     // #219
+       HTMLCHARS.put("\"U", "&Uuml;");     // #220
+       HTMLCHARS.put("'Y", "&Yacute;");    // #221
+       HTMLCHARS.put("TH", "&THORN;");     // #222
+       HTMLCHARS.put("ss", "&szlig;");     // #223
+       HTMLCHARS.put("`a", "&agrave;");    // #224
+       HTMLCHARS.put("'a", "&aacute;");    // #225
+       HTMLCHARS.put("^a", "&acirc;");     // #226
+       HTMLCHARS.put("~a", "&atilde;");    // #227
+       HTMLCHARS.put("\"a", "&auml;");     // #228
+       HTMLCHARS.put("aa", "&aring;");     // #229
+       HTMLCHARS.put("ae", "&aelig;");     // #230
+       HTMLCHARS.put("cc", "&ccedil;");    // #231
+       HTMLCHARS.put("`e", "&egrave;");    // #232
+       HTMLCHARS.put("'e", "&eacute;");    // #233
+       HTMLCHARS.put("^e", "&ecirc;");     // #234
+       HTMLCHARS.put("\"e", "&euml;");     // #235
+       HTMLCHARS.put("`i", "&igrave;");    // #236
+       HTMLCHARS.put("'i", "&iacute;");    // #237
+       HTMLCHARS.put("^i", "&icirc;");     // #238
+       HTMLCHARS.put("\"i", "&iuml;");     // #239
+       HTMLCHARS.put("dh", "&eth;");       // #240
+       HTMLCHARS.put("~n", "&ntilde;");    // #241
+       HTMLCHARS.put("`o", "&ograve;");    // #242
+       HTMLCHARS.put("'o", "&oacute;");    // #243
+       HTMLCHARS.put("^o", "&ocirc;");     // #244
+       HTMLCHARS.put("~o", "&otilde;");    // #245
+       HTMLCHARS.put("\"o", "&ouml;");     // #246
+       // According to ISO 8859-1 the "\div" symbol should be placed here (#247).
+       // Omitting this, because it is a mathematical symbol.
+       HTMLCHARS.put("o", "&oslash;");     // #248
+       HTMLCHARS.put("`u", "&ugrave;");    // #249
+       HTMLCHARS.put("'u", "&uacute;");    // #250
+       HTMLCHARS.put("^u", "&ucirc;");     // #251
+       HTMLCHARS.put("\"u", "&uuml;");     // #252
+       HTMLCHARS.put("'y", "&yacute;");    // #253
+       HTMLCHARS.put("th", "&thorn;");     // #254
+       HTMLCHARS.put("\"y", "&yuml;");     // #255
+
+       // HTML special characters without names (UNICODE Latin Extended-A), indicated by UNICODE number
+       HTMLCHARS.put("=A", "&#256;");      // "Amacr"
+       HTMLCHARS.put("=a", "&#257;");      // "amacr"
+       HTMLCHARS.put("uA", "&#258;");      // "Abreve"
+       HTMLCHARS.put("ua", "&#259;");      // "abreve"
+       HTMLCHARS.put("kA", "&#260;");      // "Aogon"
+       HTMLCHARS.put("ka", "&#261;");      // "aogon"
+       HTMLCHARS.put("'C", "&#262;");      // "Cacute"
+       HTMLCHARS.put("'c", "&#263;");      // "cacute"
+       HTMLCHARS.put("^C", "&#264;");      // "Ccirc"
+       HTMLCHARS.put("^c", "&#265;");      // "ccirc"
+       HTMLCHARS.put(".C", "&#266;");      // "Cdot"
+       HTMLCHARS.put(".c", "&#267;");      // "cdot"
+       HTMLCHARS.put("vC", "&#268;");      // "Ccaron"
+       HTMLCHARS.put("vc", "&#269;");      // "ccaron"
+       HTMLCHARS.put("vD", "&#270;");      // "Dcaron"
+       // Symbol #271 (d´) has no special Latex command
+       HTMLCHARS.put("DJ", "&#272;");      // "Dstrok"
+       HTMLCHARS.put("dj", "&#273;");      // "dstrok"
+       HTMLCHARS.put("=E", "&#274;");      // "Emacr"
+       HTMLCHARS.put("=e", "&#275;");      // "emacr"
+       HTMLCHARS.put("uE", "&#276;");      // "Ebreve"
+       HTMLCHARS.put("ue", "&#277;");      // "ebreve"
+       HTMLCHARS.put(".E", "&#278;");      // "Edot"
+       HTMLCHARS.put(".e", "&#279;");      // "edot"
+       HTMLCHARS.put("kE", "&#280;");      // "Eogon"
+       HTMLCHARS.put("ke", "&#281;");      // "eogon"
+       HTMLCHARS.put("vE", "&#282;");      // "Ecaron"
+       HTMLCHARS.put("ve", "&#283;");      // "ecaron"
+       HTMLCHARS.put("^G", "&#284;");      // "Gcirc"
+       HTMLCHARS.put("^g", "&#285;");      // "gcirc"
+       HTMLCHARS.put("uG", "&#286;");      // "Gbreve"
+       HTMLCHARS.put("ug", "&#287;");      // "gbreve"
+       HTMLCHARS.put(".G", "&#288;");      // "Gdot"
+       HTMLCHARS.put(".g", "&#289;");      // "gdot"
+       HTMLCHARS.put("cG", "&#290;");      // "Gcedil"
+       HTMLCHARS.put("'g", "&#291;");      // "gacute"
+       HTMLCHARS.put("^H", "&#292;");      // "Hcirc"
+       HTMLCHARS.put("^h", "&#293;");      // "hcirc"
+       HTMLCHARS.put("Hstrok", "&#294;");  // "Hstrok"
+       HTMLCHARS.put("hstrok", "&#295;");  // "hstrok"
+       HTMLCHARS.put("~I", "&#296;");      // "Itilde"
+       HTMLCHARS.put("~i", "&#297;");      // "itilde"
+       HTMLCHARS.put("=I", "&#298;");      // "Imacr"
+       HTMLCHARS.put("=i", "&#299;");      // "imacr"
+       HTMLCHARS.put("uI", "&#300;");      // "Ibreve"
+       HTMLCHARS.put("ui", "&#301;");      // "ibreve"
+       HTMLCHARS.put("kI", "&#302;");      // "Iogon"
+       HTMLCHARS.put("ki", "&#303;");      // "iogon"
+       HTMLCHARS.put(".I", "&#304;");      // "Idot"
+       HTMLCHARS.put("i", "&#305;");       // "inodot"
+       // Symbol #306 (IJ) has no special Latex command
+       // Symbol #307 (ij) has no special Latex command
+       HTMLCHARS.put("^J", "&#308;");      // "Jcirc"
+       HTMLCHARS.put("^j", "&#309;");      // "jcirc"
+       HTMLCHARS.put("cK", "&#310;");      // "Kcedil"
+       HTMLCHARS.put("ck", "&#311;");      // "kcedil"
+       // Symbol #312 (k) has no special Latex command
+       HTMLCHARS.put("'L", "&#313;");      // "Lacute"
+       HTMLCHARS.put("'l", "&#314;");      // "lacute"
+       HTMLCHARS.put("cL", "&#315;");      // "Lcedil"
+       HTMLCHARS.put("cl", "&#316;");      // "lcedil"
+       // Symbol #317 (L´) has no special Latex command
+       // Symbol #318 (l´) has no special Latex command
+       HTMLCHARS.put("Lmidot", "&#319;");      // "Lmidot"
+       HTMLCHARS.put("lmidot", "&#320;");      // "lmidot"
+       HTMLCHARS.put("L", "&#321;");      // "Lstrok"
+       HTMLCHARS.put("l", "&#322;");      // "lstrok"
+       HTMLCHARS.put("'N", "&#323;");      // "Nacute"
+       HTMLCHARS.put("'n", "&#324;");      // "nacute"
+       HTMLCHARS.put("cN", "&#325;");      // "Ncedil"
+       HTMLCHARS.put("cn", "&#326;");      // "ncedil"
+       HTMLCHARS.put("vN", "&#327;");      // "Ncaron"
+       HTMLCHARS.put("vn", "&#328;");      // "ncaron"
+       // Symbol #329 (´n) has no special Latex command
+       HTMLCHARS.put("NG", "&#330;");      // "ENG"
+       HTMLCHARS.put("ng", "&#331;");      // "eng"
+       HTMLCHARS.put("=O", "&#332;");      // "Omacr"
+       HTMLCHARS.put("=o", "&#333;");      // "omacr"
+       HTMLCHARS.put("uO", "&#334;");      // "Obreve"
+       HTMLCHARS.put("uo", "&#335;");      // "obreve"
+       HTMLCHARS.put("HO", "&#336;");      // "Odblac"
+       HTMLCHARS.put("Ho", "&#337;");      // "odblac"
+       HTMLCHARS.put("OE", "&#338;");      // "OElig"
+       HTMLCHARS.put("oe", "&#339;");      // "oelig"
+       HTMLCHARS.put("'R", "&#340;");      // "Racute"
+       HTMLCHARS.put("'r", "&#341;");      // "racute"
+       HTMLCHARS.put("cR", "&#342;");      // "Rcedil"
+       HTMLCHARS.put("cr", "&#343;");      // "rcedil"
+       HTMLCHARS.put("vR", "&#344;");      // "Rcaron"
+       HTMLCHARS.put("vr", "&#345;");      // "rcaron"
+       HTMLCHARS.put("'S", "&#346;");      // "Sacute"
+       HTMLCHARS.put("'s", "&#347;");      // "sacute"
+       HTMLCHARS.put("^S", "&#348;");      // "Scirc"
+       HTMLCHARS.put("^s", "&#349;");      // "scirc"
+       HTMLCHARS.put("cS", "&#350;");      // "Scedil"
+       HTMLCHARS.put("cs", "&#351;");      // "scedil"
+       HTMLCHARS.put("vS", "&#352;");      // "Scaron"
+       HTMLCHARS.put("vs", "&#353;");      // "scaron"
+       HTMLCHARS.put("cT", "&#354;");      // "Tcedil"
+       HTMLCHARS.put("ct", "&#355;");      // "tcedil"
+       HTMLCHARS.put("vT", "&#356;");      // "Tcaron"
+       // Symbol #357 (t´) has no special Latex command
+       HTMLCHARS.put("Tstrok", "&#358;");  // "Tstrok"
+       HTMLCHARS.put("tstrok", "&#359;");  // "tstrok"
+       HTMLCHARS.put("~U", "&#360;");      // "Utilde"
+       HTMLCHARS.put("~u", "&#361;");      // "utilde"
+       HTMLCHARS.put("=U", "&#362;");      // "Umacr"
+       HTMLCHARS.put("=u", "&#363;");      // "umacr"
+       HTMLCHARS.put("uU", "&#364;");      // "Ubreve"
+       HTMLCHARS.put("uu", "&#365;");      // "ubreve"
+       HTMLCHARS.put("rU", "&#366;");      // "Uring"
+       HTMLCHARS.put("ru", "&#367;");      // "uring"
+       HTMLCHARS.put("HU", "&#368;");      // "Odblac"
+       HTMLCHARS.put("Hu", "&#369;");      // "odblac"
+       HTMLCHARS.put("kU", "&#370;");      // "Uogon"
+       HTMLCHARS.put("ku", "&#371;");      // "uogon"
+       HTMLCHARS.put("^W", "&#372;");      // "Wcirc"
+       HTMLCHARS.put("^w", "&#373;");      // "wcirc"
+       HTMLCHARS.put("^Y", "&#374;");      // "Ycirc"
+       HTMLCHARS.put("^y", "&#375;");      // "ycirc"
+       HTMLCHARS.put("\"Y", "&#376;");     // "Yuml"
+       HTMLCHARS.put("'Z", "&#377;");      // "Zacute"
+       HTMLCHARS.put("'z", "&#378;");      // "zacute"
+       HTMLCHARS.put(".Z", "&#379;");      // "Zdot"
+       HTMLCHARS.put(".z", "&#380;");      // "zdot"
+       HTMLCHARS.put("vZ", "&#381;");      // "Zcaron"
+       HTMLCHARS.put("vz", "&#382;");      // "zcaron"
+       // Symbol #383 (f) has no special Latex command
+
+
+    XML_CHARS.put("\\{\\\\\\\"\\{a\\}\\}", "&#x00E4;");
+    XML_CHARS.put("\\{\\\\\\\"\\{A\\}\\}", "&#x00C4;");
+    XML_CHARS.put("\\{\\\\\\\"\\{e\\}\\}", "&#x00EB;");
+    XML_CHARS.put("\\{\\\\\\\"\\{E\\}\\}", "&#x00CB;");
+    XML_CHARS.put("\\{\\\\\\\"\\{i\\}\\}", "&#x00EF;");
+    XML_CHARS.put("\\{\\\\\\\"\\{I\\}\\}", "&#x00CF;");
+    XML_CHARS.put("\\{\\\\\\\"\\{o\\}\\}", "&#x00F6;");
+    XML_CHARS.put("\\{\\\\\\\"\\{O\\}\\}", "&#x00D6;");
+    XML_CHARS.put("\\{\\\\\\\"\\{u\\}\\}", "&#x00FC;");
+    XML_CHARS.put("\\{\\\\\\\"\\{U\\}\\}", "&#x00DC;");
+
+    XML_CHARS.put("\\{\\\\\\`\\{e\\}\\}", "&#x00E8;");
+    XML_CHARS.put("\\{\\\\\\`\\{E\\}\\}", "&#x00C8;");
+    XML_CHARS.put("\\{\\\\\\`\\{i\\}\\}", "&#x00EC;");
+    XML_CHARS.put("\\{\\\\\\`\\{I\\}\\}", "&#x00CC;");
+    XML_CHARS.put("\\{\\\\\\`\\{o\\}\\}", "&#x00F2;");
+    XML_CHARS.put("\\{\\\\\\`\\{O\\}\\}", "&#x00D2;");
+    XML_CHARS.put("\\{\\\\\\`\\{u\\}\\}", "&#x00F9;");
+    XML_CHARS.put("\\{\\\\\\`\\{U\\}\\}", "&#x00D9;");
+    XML_CHARS.put("\\{\\\\\\'\\{e\\}\\}", "&#x00E9;");
+    XML_CHARS.put("\\{\\\\\\\uFFFD\\{E\\}\\}", "&#x00C9;");
+    XML_CHARS.put("\\{\\\\\\\uFFFD\\{i\\}\\}", "&#x00ED;");
+    XML_CHARS.put("\\{\\\\\\\uFFFD\\{I\\}\\}", "&#x00CD;");
+    XML_CHARS.put("\\{\\\\\\\uFFFD\\{o\\}\\}", "&#x00F3;");
+    XML_CHARS.put("\\{\\\\\\\uFFFD\\{O\\}\\}", "&#x00D3;");
+    XML_CHARS.put("\\{\\\\\\\uFFFD\\{u\\}\\}", "&#x00FA;");
+    XML_CHARS.put("\\{\\\\\\\uFFFD\\{U\\}\\}", "&#x00DA;");
+    XML_CHARS.put("\\{\\\\\\\uFFFD\\{a\\}\\}", "&#x00E1;");
+    XML_CHARS.put("\\{\\\\\\\uFFFD\\{A\\}\\}", "&#x00C1;");
+
+    XML_CHARS.put("\\{\\\\\\^\\{o\\}\\}", "&#x00F4;");
+    XML_CHARS.put("\\{\\\\\\^\\{O\\}\\}", "&#x00D4;");
+    XML_CHARS.put("\\{\\\\\\^\\{u\\}\\}", "&#x00F9;");
+    XML_CHARS.put("\\{\\\\\\^\\{U\\}\\}", "&#x00D9;");
+    XML_CHARS.put("\\{\\\\\\^\\{e\\}\\}", "&#x00EA;");
+    XML_CHARS.put("\\{\\\\\\^\\{E\\}\\}", "&#x00CA;");
+    XML_CHARS.put("\\{\\\\\\^\\{i\\}\\}", "&#x00EE;");
+    XML_CHARS.put("\\{\\\\\\^\\{I\\}\\}", "&#x00CE;");
+    XML_CHARS.put("\\{\\\\\\~\\{o\\}\\}", "&#x00F5;");
+    XML_CHARS.put("\\{\\\\\\~\\{O\\}\\}", "&#x00D5;");
+    XML_CHARS.put("\\{\\\\\\~\\{n\\}\\}", "&#x00F1;");
+    XML_CHARS.put("\\{\\\\\\~\\{N\\}\\}", "&#x00D1;");
+    XML_CHARS.put("\\{\\\\\\~\\{a\\}\\}", "&#x00E3;");
+    XML_CHARS.put("\\{\\\\\\~\\{A\\}\\}", "&#x00C3;");
+
+
+    XML_CHARS.put("\\{\\\\\\\"a\\}", "&#x00E4;");
+    XML_CHARS.put("\\{\\\\\\\"A\\}", "&#x00C4;");
+    XML_CHARS.put("\\{\\\\\\\"e\\}", "&#x00EB;");
+    XML_CHARS.put("\\{\\\\\\\"E\\}", "&#x00CB;");
+    XML_CHARS.put("\\{\\\\\\\"i\\}", "&#x00EF;");
+    XML_CHARS.put("\\{\\\\\\\"I\\}", "&#x00CF;");
+    XML_CHARS.put("\\{\\\\\\\"o\\}", "&#x00F6;");
+    XML_CHARS.put("\\{\\\\\\\"O\\}", "&#x00D6;");
+    XML_CHARS.put("\\{\\\\\\\"u\\}", "&#x00FC;");
+    XML_CHARS.put("\\{\\\\\\\"U\\}", "&#x00DC;");
+
+    XML_CHARS.put("\\{\\\\\\`e\\}", "&#x00E8;");
+    XML_CHARS.put("\\{\\\\\\`E\\}", "&#x00C8;");
+    XML_CHARS.put("\\{\\\\\\`i\\}", "&#x00EC;");
+    XML_CHARS.put("\\{\\\\\\`I\\}", "&#x00CC;");
+    XML_CHARS.put("\\{\\\\\\`o\\}", "&#x00F2;");
+    XML_CHARS.put("\\{\\\\\\`O\\}", "&#x00D2;");
+    XML_CHARS.put("\\{\\\\\\`u\\}", "&#x00F9;");
+    XML_CHARS.put("\\{\\\\\\`U\\}", "&#x00D9;");
+    XML_CHARS.put("\\{\\\\\\'e\\}", "&#x00E9;");
+    XML_CHARS.put("\\{\\\\\\'E\\}", "&#x00C9;");
+    XML_CHARS.put("\\{\\\\\\'i\\}", "&#x00ED;");
+    XML_CHARS.put("\\{\\\\\\'I\\}", "&#x00CD;");
+    XML_CHARS.put("\\{\\\\\\'o\\}", "&#x00F3;");
+    XML_CHARS.put("\\{\\\\\\'O\\}", "&#x00D3;");
+    XML_CHARS.put("\\{\\\\\\'u\\}", "&#x00FA;");
+    XML_CHARS.put("\\{\\\\\\'U\\}", "&#x00DA;");
+    XML_CHARS.put("\\{\\\\\\'a\\}", "&#x00E1;");
+    XML_CHARS.put("\\{\\\\\\'A\\}", "&#x00C1;");
+
+    XML_CHARS.put("\\{\\\\\\^a\\}", "&#x00F4;");
+    XML_CHARS.put("\\{\\\\\\^A\\}", "&#x00D4;");
+    XML_CHARS.put("\\{\\\\\\^o\\}", "&#x00F4;");
+    XML_CHARS.put("\\{\\\\\\^O\\}", "&#x00D4;");
+    XML_CHARS.put("\\{\\\\\\^u\\}", "&#x00F9;");
+    XML_CHARS.put("\\{\\\\\\^U\\}", "&#x00D9;");
+    XML_CHARS.put("\\{\\\\\\^e\\}", "&#x00EA;");
+    XML_CHARS.put("\\{\\\\\\^E\\}", "&#x00CA;");
+    XML_CHARS.put("\\{\\\\\\^i\\}", "&#x00EE;");
+    XML_CHARS.put("\\{\\\\\\^I\\}", "&#x00CE;");
+    XML_CHARS.put("\\{\\\\\\~o\\}", "&#x00F5;");
+    XML_CHARS.put("\\{\\\\\\~O\\}", "&#x00D5;");
+    XML_CHARS.put("\\{\\\\\\~n\\}", "&#x00F1;");
+    XML_CHARS.put("\\{\\\\\\~N\\}", "&#x00D1;");
+    XML_CHARS.put("\\{\\\\\\~a\\}", "&#x00E3;");
+    XML_CHARS.put("\\{\\\\\\~A\\}", "&#x00C3;");
+
+    ASCII2XML_CHARS.put("<", "&lt;");
+    ASCII2XML_CHARS.put("\"", "&quot;");
+    ASCII2XML_CHARS.put(">", "&gt;");
+
+
+    UNICODE_CHARS.put("\u00C0", "A");
+    UNICODE_CHARS.put("\u00C1", "A");
+    UNICODE_CHARS.put("\u00C2", "A");
+    UNICODE_CHARS.put("\u00C3", "A");
+    UNICODE_CHARS.put("\u00C4", "A");
+    UNICODE_CHARS.put("\u00C5", "Aa");
+    UNICODE_CHARS.put("\u00C6", "Ae");
+    UNICODE_CHARS.put("\u00C7", "C");
+    UNICODE_CHARS.put("\u00C8", "E");
+    UNICODE_CHARS.put("\u00C9", "E");
+    UNICODE_CHARS.put("\u00CA", "E");
+    UNICODE_CHARS.put("\u00CB", "E");
+    UNICODE_CHARS.put("\u00CC", "I");
+    UNICODE_CHARS.put("\u00CD", "I");
+    UNICODE_CHARS.put("\u00CE", "I");
+    UNICODE_CHARS.put("\u00CF", "I");
+    UNICODE_CHARS.put("\u00D0", "D");
+    UNICODE_CHARS.put("\u00D1", "N");
+    UNICODE_CHARS.put("\u00D2", "O");
+    UNICODE_CHARS.put("\u00D3", "O");
+    UNICODE_CHARS.put("\u00D4", "O");
+    UNICODE_CHARS.put("\u00D5", "O");
+    UNICODE_CHARS.put("\u00D6", "Oe");
+    UNICODE_CHARS.put("\u00D8", "Oe");
+    UNICODE_CHARS.put("\u00D9", "U");
+    UNICODE_CHARS.put("\u00DA", "U");
+    UNICODE_CHARS.put("\u00DB", "U");
+    UNICODE_CHARS.put("\u00DC", "Ue"); // U umlaut ..
+    UNICODE_CHARS.put("\u00DD", "Y");
+    UNICODE_CHARS.put("\u00DF", "ss");
+    UNICODE_CHARS.put("\u00E0", "a");
+    UNICODE_CHARS.put("\u00E1", "a");
+    UNICODE_CHARS.put("\u00E2", "a");
+    UNICODE_CHARS.put("\u00E3", "a");
+    UNICODE_CHARS.put("\u00E4", "ae");
+    UNICODE_CHARS.put("\u00E5", "aa");
+    UNICODE_CHARS.put("\u00E6", "ae");
+    UNICODE_CHARS.put("\u00E7", "c");
+    UNICODE_CHARS.put("\u00E8", "e");
+    UNICODE_CHARS.put("\u00E9", "e");
+    UNICODE_CHARS.put("\u00EA", "e");
+    UNICODE_CHARS.put("\u00EB", "e");
+    UNICODE_CHARS.put("\u00EC", "i");
+    UNICODE_CHARS.put("\u00ED", "i");
+    UNICODE_CHARS.put("\u00EE", "i");
+    UNICODE_CHARS.put("\u00EF", "i");
+    UNICODE_CHARS.put("\u00F0", "o");
+    UNICODE_CHARS.put("\u00F1", "n");
+    UNICODE_CHARS.put("\u00F2", "o");
+    UNICODE_CHARS.put("\u00F3", "o");
+    UNICODE_CHARS.put("\u00F4", "o");
+    UNICODE_CHARS.put("\u00F5", "o");
+    UNICODE_CHARS.put("\u00F6", "oe");
+    UNICODE_CHARS.put("\u00F8", "oe");
+    UNICODE_CHARS.put("\u00F9", "u");
+    UNICODE_CHARS.put("\u00FA", "u");
+    UNICODE_CHARS.put("\u00FB", "u");
+    UNICODE_CHARS.put("\u00FC", "ue"); // u umlaut...
+    UNICODE_CHARS.put("\u00FD", "y");
+    UNICODE_CHARS.put("\u00FF", "y");
+    UNICODE_CHARS.put("\u0100", "A");
+    UNICODE_CHARS.put("\u0101", "a");
+    UNICODE_CHARS.put("\u0102", "A");
+    UNICODE_CHARS.put("\u0103", "a");
+    UNICODE_CHARS.put("\u0104", "A");
+    UNICODE_CHARS.put("\u0105", "a");
+    UNICODE_CHARS.put("\u0106", "C");
+    UNICODE_CHARS.put("\u0107", "c");
+    UNICODE_CHARS.put("\u0108", "C");
+    UNICODE_CHARS.put("\u0109", "c");
+    UNICODE_CHARS.put("\u010A", "C");
+    UNICODE_CHARS.put("\u010B", "c");
+    UNICODE_CHARS.put("\u010C", "C");
+    UNICODE_CHARS.put("\u010D", "c");
+    UNICODE_CHARS.put("\u010E", "D");
+    UNICODE_CHARS.put("\u010F", "d");
+    UNICODE_CHARS.put("\u0110", "D");
+    UNICODE_CHARS.put("\u0111", "d");
+    UNICODE_CHARS.put("\u0112", "E");
+    UNICODE_CHARS.put("\u0113", "e");
+    UNICODE_CHARS.put("\u0114", "E");
+    UNICODE_CHARS.put("\u0115", "e");
+    UNICODE_CHARS.put("\u0116", "E");
+    UNICODE_CHARS.put("\u0117", "e");
+    UNICODE_CHARS.put("\u0118", "E");
+    UNICODE_CHARS.put("\u0119", "e");
+    UNICODE_CHARS.put("\u011A", "E");
+    UNICODE_CHARS.put("\u011B", "e");
+    UNICODE_CHARS.put("\u011C", "G");
+    UNICODE_CHARS.put("\u011D", "g");
+    UNICODE_CHARS.put("\u011E", "G");
+    UNICODE_CHARS.put("\u011F", "g");
+    UNICODE_CHARS.put("\u0120", "G");
+    UNICODE_CHARS.put("\u0121", "g");
+    UNICODE_CHARS.put("\u0122", "G");
+    UNICODE_CHARS.put("\u0123", "g");
+    UNICODE_CHARS.put("\u0124", "H");
+    UNICODE_CHARS.put("\u0125", "h");
+    UNICODE_CHARS.put("\u0127", "h");
+    UNICODE_CHARS.put("\u0128", "I");
+    UNICODE_CHARS.put("\u0129", "i");
+    UNICODE_CHARS.put("\u012A", "I");
+    UNICODE_CHARS.put("\u012B", "i");
+    UNICODE_CHARS.put("\u012C", "I");
+    UNICODE_CHARS.put("\u012D", "i");
+    //UNICODE_CHARS.put("\u0100", "");
+
+    RTFCHARS.put("`a", "\\'e0");
+    RTFCHARS.put("`e", "\\'e8");
+    RTFCHARS.put("`i", "\\'ec");
+    RTFCHARS.put("`o", "\\'f2");
+    RTFCHARS.put("`u", "\\'f9");
+    RTFCHARS.put("?a", "\\'e1");
+    RTFCHARS.put("?e", "\\'e9");
+    RTFCHARS.put("?i", "\\'ed");
+    RTFCHARS.put("?o", "\\'f3");
+    RTFCHARS.put("?u", "\\'fa");
+    RTFCHARS.put("^a", "\\'e2");
+    RTFCHARS.put("^e", "\\'ea");
+    RTFCHARS.put("^i", "\\'ee");
+    RTFCHARS.put("^o", "\\'f4");
+    RTFCHARS.put("^u", "\\'fa");
+    RTFCHARS.put("\"a", "\\'e4");
+    RTFCHARS.put("\"e", "\\'eb");
+    RTFCHARS.put("\"i", "\\'ef");
+    RTFCHARS.put("\"o", "\\'f6");
+    RTFCHARS.put("\"u", "\\uc0\\u252");
+    RTFCHARS.put("~n", "\\'f1");
+    RTFCHARS.put("`A", "\\'c0");
+    RTFCHARS.put("`E", "\\'c8");
+    RTFCHARS.put("`I", "\\'cc");
+    RTFCHARS.put("`O", "\\'d2");
+    RTFCHARS.put("`U", "\\'d9");
+    RTFCHARS.put("?A", "\\'c1");
+    RTFCHARS.put("?E", "\\'c9");
+    RTFCHARS.put("?I", "\\'cd");
+    RTFCHARS.put("?O", "\\'d3");
+    RTFCHARS.put("?U", "\\'da");
+    RTFCHARS.put("^A", "\\'c2");
+    RTFCHARS.put("^E", "\\'ca");
+    RTFCHARS.put("^I", "\\'ce");
+    RTFCHARS.put("^O", "\\'d4");
+    RTFCHARS.put("^U", "\\'db");
+    RTFCHARS.put("\"A", "\\'c4");
+    RTFCHARS.put("\"E", "\\'cb");
+    RTFCHARS.put("\"I", "\\'cf");
+    RTFCHARS.put("\"O", "\\'d6");
+    RTFCHARS.put("\"U", "\\'dc");
+    // Use UNICODE characters for RTF-Chars which can not be found in the standard codepage
+
+    //  RTFCHARS.put("`A", "\\uc0\\u192");     // "Agrave" exists in standard codepage  
+      RTFCHARS.put("'A", "\\uc0\\u193");     // "Aacute"
+//  RTFCHARS.put("^A", "\\uc0\\u194");     // "Acirc"  exists in standard codepage
+      RTFCHARS.put("~A", "\\uc0\\u195");     // "Atilde"
+//  RTFCHARS.put("\"A", "\\uc0\\u196");    // "Auml"   exists in standard codepage
+      RTFCHARS.put("AA", "\\uc0\\u197");     // "Aring"
+      RTFCHARS.put("AE", "\\uc0\\u198");     // "AElig"
+      RTFCHARS.put("cC", "\\uc0\\u199");     // "Ccedil"
+//  RTFCHARS.put("`E", "\\uc0\\u200");     // "Egrave" exists in standard codepage
+      RTFCHARS.put("'E", "\\uc0\\u201");     // "Eacute"
+//  RTFCHARS.put("^E", "\\uc0\\u202");     // "Ecirc"  exists in standard codepage
+//  RTFCHARS.put("\"E", "\\uc0\\u203");    // "Euml"   exists in standard codepage
+//  RTFCHARS.put("`I", "\\uc0\\u204");     // "Igrave" exists in standard codepage
+      RTFCHARS.put("'I", "\\uc0\\u205");     // "Iacute"
+//  RTFCHARS.put("^I", "\\uc0\\u206");     // "Icirc"  exists in standard codepage
+//  RTFCHARS.put("\"I", "\\uc0\\u207");    // "Iuml"   exists in standard codepage
+      RTFCHARS.put("DH", "\\uc0\\u208");     // "ETH"
+      RTFCHARS.put("~N", "\\uc0\\u209");     // "Ntilde"
+//  RTFCHARS.put("`O", "\\uc0\\u210");     // "Ograve" exists in standard codepage
+      RTFCHARS.put("'O", "\\uc0\\u211");     // "Oacute"
+//  RTFCHARS.put("^O", "\\uc0\\u212");     // "Ocirc"  exists in standard codepage
+      RTFCHARS.put("~O", "\\uc0\\u213");     // "Otilde"
+//  RTFCHARS.put("\"O", "\\uc0\\u214");    // "Ouml"   exists in standard codepage
+      // According to ISO 8859-1 the "\times" symbol should be placed here (#215).
+      // Omitting this, because it is a mathematical symbol.
+      RTFCHARS.put("O", "\\uc0\\u216");      // "OSlash"
+//  RTFCHARS.put("`U", "\\uc0\\u217");     // "Ugrave"  exists in standard codepage
+      RTFCHARS.put("'U", "\\uc0\\u218");     // "Uacute"
+//  RTFCHARS.put("^U", "\\uc0\\u219");     // "Ucirc"   exists in standard codepage
+//  RTFCHARS.put("\"U", "\\uc0\\u220");    // "Uuml"    exists in standard codepage
+      RTFCHARS.put("'Y", "\\uc0\\u221");     // "Yacute"
+      RTFCHARS.put("TH", "\\uc0\\u222");     // "THORN"
+      RTFCHARS.put("ss", "\\uc0\\u223");     // "szlig"
+//  RTFCHARS.put("`a", "\\uc0\\u224");     // "agrave"  exists in standard codepage
+      RTFCHARS.put("'a", "\\uc0\\u225");     // "aacute"
+//  RTFCHARS.put("^a", "\\uc0\\u226");     // "acirc"   exists in standard codepage
+      RTFCHARS.put("~a", "\\uc0\\u227");     // "atilde"
+//  RTFCHARS.put("\"a", "\\uc0\\u228");    // "auml"    exists in standard codepage
+      RTFCHARS.put("aa", "\\uc0\\u229");     // "aring"
+      RTFCHARS.put("ae", "\\uc0\\u230");     // "aelig"
+      RTFCHARS.put("cc", "\\uc0\\u231");     // "ccedil"
+//  RTFCHARS.put("`e", "\\uc0\\u232");     // "egrave"  exists in standard codepage
+      RTFCHARS.put("'e", "\\uc0\\u233");     // "eacute"
+//  RTFCHARS.put("^e", "\\uc0\\u234");     // "ecirc"   exists in standard codepage
+//  RTFCHARS.put("\"e", "\\uc0\\u235");    // "euml"    exists in standard codepage
+//  RTFCHARS.put("`i", "\\uc0\\u236");     // "igrave"  exists in standard codepage
+      RTFCHARS.put("'i", "\\uc0\\u237");     // "iacute"
+//  RTFCHARS.put("^i", "\\uc0\\u238");     // "icirc"   exists in standard codepage
+//  RTFCHARS.put("\"i", "\\uc0\\u239");    // "iuml"    exists in standard codepage
+      RTFCHARS.put("dh", "\\uc0\\u240");     // "eth"
+//  RTFCHARS.put("~n", "\\uc0\\u241");     // "ntilde"  exists in standard codepage
+//  RTFCHARS.put("`o", "\\uc0\\u242");     // "ograve"  exists in standard codepage
+      RTFCHARS.put("'o", "\\uc0\\u243");     // "oacute"
+//  RTFCHARS.put("^o", "\\uc0\\u244");     // "ocirc"   exists in standard codepage
+      RTFCHARS.put("~o", "\\uc0\\u245");     // "otilde"
+//  RTFCHARS.put("\"o", "\\uc0\\u246");    // "ouml"    exists in standard codepage
+      // According to ISO 8859-1 the "\div" symbol should be placed here (#247).
+      // Omitting this, because it is a mathematical symbol.
+      RTFCHARS.put("o", "\\uc0\\u248");       // "oslash"
+//  RTFCHARS.put("`u", "\\uc0\\u249");      // "ugrave"  exists in standard codepage
+      RTFCHARS.put("'u", "\\uc0\\u250");      // "uacute"
+//  RTFCHARS.put("^u", "\\uc0\\u251");      // "ucirc"   exists in standard codepage
+//  RTFCHARS.put("\"u", "\\uc0\\u252");     // "uuml"    exists in standard codepage
+      RTFCHARS.put("'y", "\\uc0\\u253");      // "yacute"
+      RTFCHARS.put("th", "\\uc0\\u254");      // "thorn"
+      RTFCHARS.put("\"y", "\\uc0\\u255");     // "yuml"
+
+      RTFCHARS.put("=A", "\\uc0\\u256");      // "Amacr"
+      RTFCHARS.put("=a", "\\uc0\\u257");      // "amacr"
+      RTFCHARS.put("uA", "\\uc0\\u258");      // "Abreve"
+      RTFCHARS.put("ua", "\\uc0\\u259");      // "abreve"
+      RTFCHARS.put("kA", "\\uc0\\u260");      // "Aogon"
+      RTFCHARS.put("ka", "\\uc0\\u261");      // "aogon"
+      RTFCHARS.put("'C", "\\uc0\\u262");      // "Cacute"
+      RTFCHARS.put("'c", "\\uc0\\u263");      // "cacute"
+      RTFCHARS.put("^C", "\\uc0\\u264");      // "Ccirc"
+      RTFCHARS.put("^c", "\\uc0\\u265");      // "ccirc"
+      RTFCHARS.put(".C", "\\uc0\\u266");      // "Cdot"
+      RTFCHARS.put(".c", "\\uc0\\u267");      // "cdot"
+      RTFCHARS.put("vC", "\\uc0\\u268");      // "Ccaron"
+      RTFCHARS.put("vc", "\\uc0\\u269");      // "ccaron"
+      RTFCHARS.put("vD", "\\uc0\\u270");      // "Dcaron"
+      // Symbol #271 (d´) has no special Latex command
+      RTFCHARS.put("DJ", "\\uc0\\u272");      // "Dstrok"
+      RTFCHARS.put("dj", "\\uc0\\u273");      // "dstrok"
+      RTFCHARS.put("=E", "\\uc0\\u274");      // "Emacr"
+      RTFCHARS.put("=e", "\\uc0\\u275");      // "emacr"
+      RTFCHARS.put("uE", "\\uc0\\u276");      // "Ebreve"
+      RTFCHARS.put("ue", "\\uc0\\u277");      // "ebreve"
+      RTFCHARS.put(".E", "\\uc0\\u278");      // "Edot"
+      RTFCHARS.put(".e", "\\uc0\\u279");      // "edot"
+      RTFCHARS.put("kE", "\\uc0\\u280");      // "Eogon"
+      RTFCHARS.put("ke", "\\uc0\\u281");      // "eogon"
+      RTFCHARS.put("vE", "\\uc0\\u282");      // "Ecaron"
+      RTFCHARS.put("ve", "\\uc0\\u283");      // "ecaron"
+      RTFCHARS.put("^G", "\\uc0\\u284");      // "Gcirc"
+      RTFCHARS.put("^g", "\\uc0\\u285");      // "gcirc"
+      RTFCHARS.put("uG", "\\uc0\\u286");      // "Gbreve"
+      RTFCHARS.put("ug", "\\uc0\\u287");      // "gbreve"
+      RTFCHARS.put(".G", "\\uc0\\u288");      // "Gdot"
+      RTFCHARS.put(".g", "\\uc0\\u289");      // "gdot"
+      RTFCHARS.put("cG", "\\uc0\\u290");      // "Gcedil"
+      RTFCHARS.put("'g", "\\uc0\\u291");      // "gacute"
+      RTFCHARS.put("^H", "\\uc0\\u292");      // "Hcirc"
+      RTFCHARS.put("^h", "\\uc0\\u293");      // "hcirc"
+      RTFCHARS.put("Hstrok", "\\uc0\\u294");  // "Hstrok"
+      RTFCHARS.put("hstrok", "\\uc0\\u295");  // "hstrok"
+      RTFCHARS.put("~I", "\\uc0\\u296");      // "Itilde"
+      RTFCHARS.put("~i", "\\uc0\\u297");      // "itilde"
+      RTFCHARS.put("=I", "\\uc0\\u298");      // "Imacr"
+      RTFCHARS.put("=i", "\\uc0\\u299");      // "imacr"
+      RTFCHARS.put("uI", "\\uc0\\u300");      // "Ibreve"
+      RTFCHARS.put("ui", "\\uc0\\u301");      // "ibreve"
+      RTFCHARS.put("kI", "\\uc0\\u302");      // "Iogon"
+      RTFCHARS.put("ki", "\\uc0\\u303");      // "iogon"
+      RTFCHARS.put(".I", "\\uc0\\u304");      // "Idot"
+      RTFCHARS.put("i", "\\uc0\\u305");       // "inodot"
+      // Symbol #306 (IJ) has no special Latex command
+      // Symbol #307 (ij) has no special Latex command
+      RTFCHARS.put("^J", "\\uc0\\u308");      // "Jcirc"
+      RTFCHARS.put("^j", "\\uc0\\u309");      // "jcirc"
+      RTFCHARS.put("cK", "\\uc0\\u310");      // "Kcedil"
+      RTFCHARS.put("ck", "\\uc0\\u311");      // "kcedil"
+      // Symbol #312 (k) has no special Latex command
+      RTFCHARS.put("'L", "\\uc0\\u313");      // "Lacute"
+      RTFCHARS.put("'l", "\\uc0\\u314");      // "lacute"
+      RTFCHARS.put("cL", "\\uc0\\u315");      // "Lcedil"
+      RTFCHARS.put("cl", "\\uc0\\u316");      // "lcedil"
+      // Symbol #317 (L´) has no special Latex command
+      // Symbol #318 (l´) has no special Latex command
+      RTFCHARS.put("Lmidot", "\\uc0\\u319");  // "Lmidot"
+      RTFCHARS.put("lmidot", "\\uc0\\u320");  // "lmidot"
+      RTFCHARS.put("L", "\\uc0\\u321");      // "Lstrok"
+      RTFCHARS.put("l", "\\uc0\\u322");      // "lstrok"
+      RTFCHARS.put("'N", "\\uc0\\u323");      // "Nacute"
+      RTFCHARS.put("'n", "\\uc0\\u324");      // "nacute"
+      RTFCHARS.put("cN", "\\uc0\\u325");      // "Ncedil"
+      RTFCHARS.put("cn", "\\uc0\\u326");      // "ncedil"
+      RTFCHARS.put("vN", "\\uc0\\u327");      // "Ncaron"
+      RTFCHARS.put("vn", "\\uc0\\u328");      // "ncaron"
+      // Symbol #329 (´n) has no special Latex command
+      RTFCHARS.put("NG", "\\uc0\\u330");      // "ENG"
+      RTFCHARS.put("ng", "\\uc0\\u331");      // "eng"
+      RTFCHARS.put("=O", "\\uc0\\u332");      // "Omacr"
+      RTFCHARS.put("=o", "\\uc0\\u333");      // "omacr"
+      RTFCHARS.put("uO", "\\uc0\\u334");      // "Obreve"
+      RTFCHARS.put("uo", "\\uc0\\u335");      // "obreve"
+      RTFCHARS.put("HO", "\\uc0\\u336");      // "Odblac"
+      RTFCHARS.put("Ho", "\\uc0\\u337");      // "odblac"
+      RTFCHARS.put("OE", "\\uc0\\u338");      // "OElig"
+      RTFCHARS.put("oe", "\\uc0\\u339");      // "oelig"
+      RTFCHARS.put("'R", "\\uc0\\u340");      // "Racute"
+      RTFCHARS.put("'r", "\\uc0\\u341");      // "racute"
+      RTFCHARS.put("cR", "\\uc0\\u342");      // "Rcedil"
+      RTFCHARS.put("cr", "\\uc0\\u343");      // "rcedil"
+      RTFCHARS.put("vR", "\\uc0\\u344");      // "Rcaron"
+      RTFCHARS.put("vr", "\\uc0\\u345");      // "rcaron"
+      RTFCHARS.put("'S", "\\uc0\\u346");      // "Sacute"
+      RTFCHARS.put("'s", "\\uc0\\u347");      // "sacute"
+      RTFCHARS.put("^S", "\\uc0\\u348");      // "Scirc"
+      RTFCHARS.put("^s", "\\uc0\\u349");      // "scirc"
+      RTFCHARS.put("cS", "\\uc0\\u350");      // "Scedil"
+      RTFCHARS.put("cs", "\\uc0\\u351");      // "scedil"
+      RTFCHARS.put("vS", "\\uc0\\u352");      // "Scaron"
+      RTFCHARS.put("vs", "\\uc0\\u353");      // "scaron"
+      RTFCHARS.put("cT", "\\uc0\\u354");      // "Tcedil"
+      RTFCHARS.put("ct", "\\uc0\\u355");      // "tcedil"
+      RTFCHARS.put("vT", "\\uc0\\u356");      // "Tcaron"
+      // Symbol #357 (t´) has no special Latex command
+      RTFCHARS.put("Tstrok", "\\uc0\\u358");  // "Tstrok"
+      RTFCHARS.put("tstrok", "\\uc0\\u359");  // "tstrok"
+      RTFCHARS.put("~U", "\\uc0\\u360");      // "Utilde"
+      RTFCHARS.put("~u", "\\uc0\\u361");      // "utilde"
+      RTFCHARS.put("=U", "\\uc0\\u362");      // "Umacr"
+      RTFCHARS.put("=u", "\\uc0\\u363");      // "umacr"
+      RTFCHARS.put("uU", "\\uc0\\u364");      // "Ubreve"
+      RTFCHARS.put("uu", "\\uc0\\u365");      // "ubreve"
+      RTFCHARS.put("rU", "\\uc0\\u366");      // "Uring"
+      RTFCHARS.put("ru", "\\uc0\\u367");      // "uring"
+      RTFCHARS.put("HU", "\\uc0\\u368");      // "Odblac"
+      RTFCHARS.put("Hu", "\\uc0\\u369");      // "odblac"
+      RTFCHARS.put("kU", "\\uc0\\u370");      // "Uogon"
+      RTFCHARS.put("ku", "\\uc0\\u371");      // "uogon"
+      RTFCHARS.put("^W", "\\uc0\\u372");      // "Wcirc"
+      RTFCHARS.put("^w", "\\uc0\\u373");      // "wcirc"
+      RTFCHARS.put("^Y", "\\uc0\\u374");      // "Ycirc"
+      RTFCHARS.put("^y", "\\uc0\\u375");      // "ycirc"
+      RTFCHARS.put("\"Y", "\\uc0\\u376");     // "Yuml"
+      RTFCHARS.put("'Z", "\\uc0\\u377");      // "Zacute"
+      RTFCHARS.put("'z", "\\uc0\\u378");      // "zacute"
+      RTFCHARS.put(".Z", "\\uc0\\u379");      // "Zdot"
+      RTFCHARS.put(".z", "\\uc0\\u380");      // "zdot"
+      RTFCHARS.put("vZ", "\\uc0\\u381");      // "Zcaron"
+      RTFCHARS.put("vz", "\\uc0\\u382");      // "zcaron"
+      // Symbol #383 (f) has no special Latex command
+
+    //XML_CHARS.put("\\u00E1", "&#x00E1;");
+  }
+
+    public static void initializeJournalNames() {
+        journalAbbrev = new JournalAbbreviations();//"/resource/journalList.txt");
+
+        // Read external lists, if any (in reverse order, so the upper lists override the lower):
+        String[] lists = prefs.getStringArray("externalJournalLists");
+        if ((lists != null) && (lists.length > 0)) {
+            for (int i=lists.length-1; i>=0; i--) {
+                try {
+                    journalAbbrev.readJournalList(new File(lists[i]));
+                } catch (FileNotFoundException e) {
+                    // The file couldn't be found... should we tell anyone?
+                    Globals.logger(e.getMessage());
+                }
+            }
+        }
+
+        // Read personal list, if set up:
+        if (prefs.get("personalJournalList") != null) {
+            try {
+                journalAbbrev.readJournalList(new File(prefs.get("personalJournalList")));
+            } catch (FileNotFoundException e) {
+                Globals.logger("Personal journal list file '"+prefs.get("personalJournalList")+
+                    "' not found.");
+            }
+        }
+
+
+    }
+
+}
index 4f26034622576668a8c540fd525145a61dab32aa..a8c9eca6b3f4fc3a5359a7e0b06e23e5085d5473 100644 (file)
@@ -44,14 +44,14 @@ public class HelpAction extends MnemonicAwareAction {
     protected String helpFile;
 
     public HelpAction(HelpDialog diag, String helpFile) {
-       super(new ImageIcon(GUIGlobals.helpIconFile));
+       super(GUIGlobals.getImage("help"));
        putValue(NAME, "Help");
        this.diag = diag;
        this.helpFile = helpFile;
     }
 
     public HelpAction(HelpDialog diag, String helpFile, String tooltip) {
-       super(new ImageIcon(GUIGlobals.helpIconFile));
+       super(GUIGlobals.getImage("help"));
        putValue(NAME, "Help");
        putValue(SHORT_DESCRIPTION, Globals.lang(tooltip));
        this.diag = diag;
@@ -68,7 +68,7 @@ public class HelpAction extends MnemonicAwareAction {
     }
 
     public HelpAction(String title, HelpDialog diag, String helpFile, String tooltip) {
-       super(new ImageIcon(GUIGlobals.helpIconFile));
+       super(GUIGlobals.getImage("help"));
        putValue(NAME, title);
        putValue(SHORT_DESCRIPTION, Globals.lang(tooltip));
        this.diag = diag;
@@ -77,7 +77,7 @@ public class HelpAction extends MnemonicAwareAction {
 
     public HelpAction(String title, HelpDialog diag, String helpFile, String tooltip,
                      KeyStroke key) {
-       super(new ImageIcon(GUIGlobals.helpIconFile));
+       super(GUIGlobals.getImage("help"));
        putValue(NAME, title);
        putValue(SHORT_DESCRIPTION, Globals.lang(tooltip));
        putValue(ACCELERATOR_KEY, key);
index a7f1a5653063ecc59f382fd404a7ee38e61456cb..eb60f75d40b365af8638f622d2d72ed8e18a2051 100644 (file)
@@ -133,7 +133,7 @@ public class HelpDialog extends JDialog implements HyperlinkListener {
 
     class BackAction extends AbstractAction {
        public BackAction() {
-           super("Back", new ImageIcon(GUIGlobals.backIconFile));
+           super("Back", GUIGlobals.getImage("left"));
            //putValue(SHORT_DESCRIPTION, "Show the previous page");
        }
 
@@ -145,7 +145,7 @@ public class HelpDialog extends JDialog implements HyperlinkListener {
 
    class ForwardAction extends AbstractAction {
        public ForwardAction() {
-          super("Forward", new ImageIcon(GUIGlobals.forwardIconFile));
+          super("Forward", GUIGlobals.getImage("right"));
        }
 
        public void actionPerformed(ActionEvent e) {
@@ -156,7 +156,7 @@ public class HelpDialog extends JDialog implements HyperlinkListener {
 
    class ContentsAction extends AbstractAction {
        public ContentsAction() {
-          super("Contents", new ImageIcon(GUIGlobals.contentsIconFile));
+          super("Contents", GUIGlobals.getImage("helpContents"));
        }
 
        public void actionPerformed(ActionEvent e) {
index 76aca033ee0836ff89276b8eb87c6e246bebee05..3d048c4d3fd9eec895e860622a2a024485cda65a 100644 (file)
@@ -30,19 +30,24 @@ import net.sf.jabref.wizard.auximport.*;
 import net.sf.jabref.remote.RemoteListener;
 
 import gnu.dtools.ritopt.*;
-import java.awt.Font;
-import java.awt.Frame;
+import java.awt.*;
 
 import java.io.*;
 import java.io.File;
 
 import java.util.*;
+import java.util.List;
 
 import javax.swing.*;
+import javax.swing.plaf.metal.MetalLookAndFeel;
 
 import com.jgoodies.looks.plastic.Plastic3DLookAndFeel;
+import com.jgoodies.looks.plastic.PlasticLookAndFeel;
 import com.jgoodies.looks.windows.WindowsLookAndFeel;
-
+import com.jgoodies.looks.FontSet;
+import com.jgoodies.looks.FontSets;
+import com.jgoodies.looks.FontPolicy;
+import com.jgoodies.looks.FontPolicies;
 
 //import javax.swing.UIManager;
 //import javax.swing.UIDefaults;
@@ -57,7 +62,7 @@ public class JabRef {
     boolean graphicFailure = false;
 
     StringOption importFile, exportFile, exportPrefs, importPrefs, auxImExport, importToOpenBase;
-    BooleanOption helpO, disableGui, blank, loadSess;
+    BooleanOption helpO, disableGui, blank, loadSess, showVersion;
     /*
     * class StringArrayOption extends ArrayOption { public public void
     * modify(String value) { } public void modify(String[] value) { } public
@@ -135,6 +140,7 @@ public class JabRef {
         disableGui = new BooleanOption();
         blank = new BooleanOption();
         loadSess = new BooleanOption();
+        showVersion = new BooleanOption();
         exportPrefs = new StringOption("jabref_prefs.xml");
         importPrefs = new StringOption("jabref_prefs.xml");
         auxImExport = new StringOption("");
@@ -144,6 +150,8 @@ public class JabRef {
         options.setVersion(GUIGlobals.version);
 
         importFile.setDescription("imopoepuoeu"); //Globals.lang);
+        options.register("version", 'v',
+                Globals.lang("Display version"), showVersion);
         options.register("nogui", 'n',
             Globals.lang("No GUI. Only process command line options."), disableGui);
         options.register("import", 'i',
@@ -174,8 +182,15 @@ public class JabRef {
         setupOptions();
         String[] leftOver = options.process(args);
 
+
+
         //Util.pr(": Options processed");
 
+        if (initialStartup && showVersion.isInvoked()) {
+            options.displayVersion();
+            disableGui.setInvoked(true);
+        }
+
         if (initialStartup && helpO.isInvoked()) {
             System.out.println("jabref [options] [bibtex-file]\n");
             System.out.println(options.getHelp());
@@ -494,6 +509,37 @@ public class JabRef {
         return loaded;
     }
 
+    ParserResult importFiletypeUnknown(String fname) {
+        Object[] o =
+                Globals.importFormatReader.importUnknownFormat(fname
+                        .replaceAll("~", System.getProperty("user.home")));
+        String formatName = (String) o[0];
+
+        if (formatName == null) {
+            System.err.println(Globals.lang("Error opening file") + " '" + fname + "'");
+        } else if (formatName.equals(ImportFormatReader.BIBTEX_FORMAT)) {
+            ParserResult pr = (ParserResult) o[1];
+            return pr;
+        } else {
+            List entries = (java.util.List) o[1];
+            if (entries != null)
+                System.out.println(Globals.lang("Format used") + ": "
+                        + formatName);
+            else
+                System.out.println(Globals.lang(
+                        "Could not find a suitable import format."));
+
+            if (entries != null) {
+                BibtexDatabase base = ImportFormatReader.createDatabase(entries);
+                ParserResult pr = new ParserResult(base, null, new HashMap());
+                return pr;
+            }
+        }
+        
+        // not reached
+        return null;
+    }
+
     public void openWindow(Vector loaded) {
         if (!graphicFailure && !disableGui.isInvoked()) {
             // Call the method performCompatibilityUpdate(), which does any
@@ -501,6 +547,9 @@ public class JabRef {
             // Jabref version.
             Util.performCompatibilityUpdate();
 
+            // Set up custom or default icon theme:
+            GUIGlobals.setUpIconTheme();
+
            // This property is set to make the Mac OSX Java VM move the menu bar to
             // the top
             // of the screen, where Mac users expect it to be.
@@ -512,7 +561,7 @@ public class JabRef {
             // If we are not on Mac, deal with font sizes and LookAndFeels:
             if (!Globals.ON_MAC) {
                 int fontSizes = Globals.prefs.getInt("menuFontSize");
-
+                boolean overrideDefaultFonts = Globals.prefs.getBoolean("overrideDefaultFonts");
                 String defaultLookAndFeel;
 
                 if (Globals.ON_WIN)
@@ -549,20 +598,53 @@ public class JabRef {
                     lnf = (LookAndFeel) objLnf;
 
                 // Set font sizes if we are using a JGoodies look and feel.
-                /*if ((lnf != null) && (lnf instanceof Plastic3DLookAndFeel)) {
-                    //MetalLookAndFeel.setCurrentTheme(new
-                    // com.jgoodies.plaf.plastic.theme.SkyBluer());
-                    Plastic3DLookAndFeel plLnf = (Plastic3DLookAndFeel) lnf;
-                    //Plastic3DLookAndFeel.setFontPolicy();
-                    //Plastic3DLookAndFeel.setFontPolicy(FontPolicy.);
-                    //plLnf.setFontSizeHints(new FontSizeHints(fontSizes, fontSizes,
-                    //        fontSizes, fontSizes));
-                } else if ((lnf != null) && (lnf instanceof WindowsLookAndFeel)) {
-                    //System.out.println("ttt");
-                    //ExtWindowsLookAndFeel plLnf = (ExtWindowsLookAndFeel) lnf;
-                    //plLnf.setFontSizeHints(new FontSizeHints(fontSizes, fontSizes,
-                    //        fontSizes, fontSizes));
-                } */
+                if ((lnf != null) && (lnf instanceof Plastic3DLookAndFeel)) {
+
+                    //UIManager.put("jgoodies.popupDropShadowEnabled", Boolean.TRUE);
+                    MetalLookAndFeel.setCurrentTheme(new
+                     com.jgoodies.looks.plastic.theme.SkyBluer());
+
+                    // Set a "model" icon size, so menu items are evenly spaced even though
+                    // only some items have icons. We load an arbitrary icon and look at
+                    // its size to determine what size to use:
+                    int defaultIconSize = GUIGlobals.getImage("open").getIconWidth();
+                    com.jgoodies.looks.Options.setDefaultIconSize
+                            (new Dimension(defaultIconSize, defaultIconSize));
+
+
+                    if (overrideDefaultFonts) {
+                        FontSet fontSet = FontSets.createDefaultFontSet(
+                            new Font("Tahoma", Font.PLAIN, fontSizes),    // control font
+                            new Font("Tahoma", Font.PLAIN, fontSizes),    // menu font
+                            new Font("Tahoma", Font.BOLD, fontSizes)     // title font
+                            );
+                        FontPolicy fixedPolicy = FontPolicies.createFixedPolicy(fontSet);
+                        Plastic3DLookAndFeel.setFontPolicy(fixedPolicy);
+                    }
+
+                    //Plastic3DLookAndFeel plLnf = (Plastic3DLookAndFeel) lnf;
+                }
+                else if ((lnf != null) && (lnf instanceof WindowsLookAndFeel)) {
+
+                    // Set a "model" icon size, so menu items are evenly spaced even though
+                    // only some items have icons. We load an arbitrary icon and look at
+                    // its size to determine what size to use:
+                    int defaultIconSize = GUIGlobals.getImage("open").getIconWidth();
+                    com.jgoodies.looks.Options.setDefaultIconSize
+                        (new Dimension(defaultIconSize, defaultIconSize));
+
+                    if (overrideDefaultFonts) {
+                        FontSet fontSet = FontSets.createDefaultFontSet(
+                            new Font("Tahoma", Font.PLAIN, fontSizes),    // control font
+                            new Font("Tahoma", Font.PLAIN, fontSizes),    // menu font
+                            new Font("Tahoma", Font.BOLD, fontSizes)     // title font
+                            );
+                        FontPolicy fixedPolicy = FontPolicies.createFixedPolicy(fontSet);
+                        WindowsLookAndFeel.setFontPolicy(fixedPolicy);
+                    }
+                    
+                    //WindowsLookAndFeel plLnf = (WindowsLookAndFeel) lnf;
+                }
 
                 if (lnf != null) {
                     try {
index ba1678f922a510e057ecd44dbda40d4679568f9f..a9da5da26c0956dd36e70cb3fb160b8c778a1043 100644 (file)
@@ -57,6 +57,7 @@ import java.lang.reflect.*;
 import javax.swing.event.*;
 import net.sf.jabref.wizard.integrity.gui.*;
 import net.sf.jabref.groups.GroupSelector;
+import net.sf.jabref.groups.EntryTableTransferHandler;
 import net.sf.jabref.journals.ManageJournalsAction;
 import net.sf.jabref.external.*;
 import com.jgoodies.uif_lite.component.UIFSplitPane;
@@ -95,19 +96,8 @@ public class JabRefFrame
     }
   ToolBar tlb = new ToolBar();
 
-  JMenuBar mb = new JMenuBar();/* {
-    public void paintComponent(Graphics g) {
-      Graphics2D g2 = (Graphics2D)g;
-      g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
-                          RenderingHints.VALUE_ANTIALIAS_ON);
-      g2.setRenderingHint(RenderingHints.KEY_RENDERING,
-                          RenderingHints.VALUE_RENDER_QUALITY);
-      super.paintComponent(g2);
-
-    }
-
-  };*/
-  GridBagLayout gbl = new GridBagLayout();
+  JMenuBar mb = new JMenuBar();
+   GridBagLayout gbl = new GridBagLayout();
   GridBagConstraints con = new GridBagConstraints();
 
   JLabel statusLine = new JLabel("", SwingConstants.LEFT),
@@ -147,55 +137,49 @@ public class JabRefFrame
                             prefs.getKey("Help")),
       contents = new HelpAction("Help contents", helpDiag,
                                 GUIGlobals.helpContents, "Help contents",
-                                GUIGlobals.helpContentsIconFile),
+                                GUIGlobals.getIconUrl("helpContents")),
 /* old about*/
       about = new HelpAction("About JabRef", helpDiag,
                              GUIGlobals.aboutPage, "About JabRef",
-                             GUIGlobals.aboutIcon),
+                             GUIGlobals.getIconUrl("about")),
 /**/
   //    about2 = new NewAboutAction(),
       editEntry = new GeneralAction("edit", "Edit entry",
-                               "Edit entry", GUIGlobals.editIconFile,
+                               "Edit entry",
                                prefs.getKey("Edit entry")),
       save = new GeneralAction("save", "Save database",
-                               "Save database", GUIGlobals.saveIconFile,
+                               "Save database",
                                prefs.getKey("Save database")),
       saveAs = new GeneralAction("saveAs", "Save database as ...",
                                  "Save database as ...",
-                                 GUIGlobals.saveAsIconFile,
                                  prefs.getKey("Save database as ...")),
       saveSelectedAs = new GeneralAction("saveSelectedAs",
                                          "Save selected as ...",
                                          "Save selected as ...",
-                                         GUIGlobals.saveAsIconFile),
+                                         GUIGlobals.getIconUrl("saveAs")),
       nextTab = new ChangeTabAction(true),
       prevTab = new ChangeTabAction(false),
       sortTabs = new SortTabsAction(this),
       undo = new GeneralAction("undo", "Undo", "Undo",
-                               GUIGlobals.undoIconFile,
                                prefs.getKey("Undo")),
       redo = new GeneralAction("redo", "Redo", "Redo",
-                               GUIGlobals.redoIconFile,
                                prefs.getKey("Redo")),
       /*cut = new GeneralAction("cut", "Cut", "Cut",
          GUIGlobals.cutIconFile,
          prefs.getKey("Cut")),*/
       delete = new GeneralAction("delete", "Delete", "Delete",
-                                 GUIGlobals.removeIconFile,
                                  prefs.getKey("Delete")),
       /*copy = new GeneralAction("copy", "Copy", "Copy",
                                GUIGlobals.copyIconFile,
                                prefs.getKey("Copy")),*/
-      copy = new EditAction("copy", GUIGlobals.copyIconFile),
-      paste = new EditAction("paste", GUIGlobals.pasteIconFile),
-      cut = new EditAction("cut", GUIGlobals.cutIconFile),
+      copy = new EditAction("copy", GUIGlobals.getIconUrl("copy")),
+      paste = new EditAction("paste", GUIGlobals.getIconUrl("paste")),
+      cut = new EditAction("cut", GUIGlobals.getIconUrl("cut")),
       mark = new GeneralAction("markEntries", "Mark entries",
                                "Mark entries",
-                               GUIGlobals.markIcon,
                                prefs.getKey("Mark entries")),
        unmark = new GeneralAction("unmarkEntries", "Unmark entries",
                                   "Unmark entries",
-                                  GUIGlobals.unmarkIcon,
                                   prefs.getKey("Unmark entries")),
        unmarkAll = new GeneralAction("unmarkAll", "Unmark all"),
       manageSelectors = new GeneralAction("manageSelectors", "Manage content selectors"),
@@ -203,14 +187,11 @@ public class JabRefFrame
       loadSessionAction = new LoadSessionAction(),
       incrementalSearch = new GeneralAction("incSearch", "Incremental search",
                                             "Start incremental search",
-                                            GUIGlobals.searchIconFile,
                                             prefs.getKey("Incremental search")),
       normalSearch = new GeneralAction("search", "Search", "Search",
-                                       GUIGlobals.searchIconFile,
                                        prefs.getKey("Search")),
-      toggleSearch = new GeneralAction("toggleSearch", "Search", "Toggle search panel",
-                                       GUIGlobals.searchIconFile),
-    //                                       prefs.getKey("Search")),
+      toggleSearch = new GeneralAction("toggleSearch", "Search", "Toggle search panel"),
+
       fetchCiteSeer = new FetchCiteSeerAction(),
       importCiteSeer = new ImportCiteSeerAction(),
       fetchMedline = new FetchMedlineAction(),
@@ -224,7 +205,7 @@ public class JabRefFrame
       mergeDatabaseAction = new GeneralAction("mergeDatabase",
                                               "Append database",
                                               "Append contents from a BibTeX database into the currently viewed database",
-                                              GUIGlobals.openIconFile),
+                                              GUIGlobals.getIconUrl("open")),
       //prefs.getKey("Open")),
       /*remove = new GeneralAction("remove", "Remove", "Remove selected entries",
         GUIGlobals.removeIconFile),*/
@@ -235,36 +216,31 @@ public class JabRefFrame
 
       editPreamble = new GeneralAction("editPreamble", "Edit preamble",
                                        "Edit preamble",
-                                       GUIGlobals.preambleIconFile,
                                        prefs.getKey("Edit preamble")),
       editStrings = new GeneralAction("editStrings", "Edit strings",
                                       "Edit strings",
-                                      GUIGlobals.stringsIconFile,
                                       prefs.getKey("Edit strings")),
       toggleGroups = new GeneralAction("toggleGroups",
                                        "Toggle groups interface",
                                        "Toggle groups interface",
-                                       GUIGlobals.groupsIconFile,
                                        prefs.getKey("Toggle groups interface")),
       togglePreview = new GeneralAction("togglePreview",
                                         "Toggle entry preview",
                                         "Toggle entry preview",
-                                        GUIGlobals.previewIconFile,
                                         prefs.getKey("Toggle entry preview")),
       toggleHighlightAny = new GeneralAction("toggleHighlightGroupsMatchingAny",
                                         "Highlight groups matching any selected entry",
                                         "Highlight groups matching any selected entry",
-                                        GUIGlobals.groupsHighlightMatchingAnyFile),
+                                        GUIGlobals.getIconUrl("groupsHighlightAny")),
       toggleHighlightAll = new GeneralAction("toggleHighlightGroupsMatchingAll",
                                         "Highlight groups matching all selected entries",
                                         "Highlight groups matching all selected entries",
-                                        GUIGlobals.groupsHighlightMatchingAllFile),
+                                        GUIGlobals.getIconUrl("groupsHighlightAll")),
       switchPreview = new GeneralAction("switchPreview",
                                         "Switch preview layout",
                                         prefs.getKey("Switch preview layout")),
        makeKeyAction = new GeneralAction("makeKey", "Autogenerate BibTeX keys",
                                         "Autogenerate BibTeX keys",
-                                        GUIGlobals.genKeyIconFile,
                                         prefs.getKey("Autogenerate BibTeX keys")),
 
       lyxPushAction = new PushToApplicationAction(ths, new PushToLyx()),
@@ -273,11 +249,9 @@ public class JabRefFrame
       latexEditorPushAction = new PushToApplicationAction(ths, new PushToLatexEditor()),
       openFile = new GeneralAction("openFile", "Open PDF or PS",
                                    "Open PDF or PS",
-                                   GUIGlobals.pdfIcon,
                                    prefs.getKey("Open PDF or PS")),
       openUrl = new GeneralAction("openUrl", "Open URL or DOI",
                                   "Open URL or DOI",
-                                  GUIGlobals.wwwIcon,
                                   prefs.getKey("Open URL or DOI")),
       dupliCheck = new GeneralAction("dupliCheck", "Find duplicates"),
       strictDupliCheck = new GeneralAction("strictDupliCheck", "Find and remove exact duplicates"),
@@ -375,7 +349,7 @@ public class JabRefFrame
     //  glassPane.setVisible(true);
 
       setTitle(GUIGlobals.frameTitle);
-    setIconImage(new ImageIcon(GUIGlobals.jabreflogo).getImage());
+    setIconImage(GUIGlobals.getImage("jabrefIcon").getImage());
     setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
     addWindowListener(new WindowAdapter() {
       public void windowClosing(WindowEvent e) {
@@ -664,6 +638,7 @@ public JabRefPreferences prefs() {
   }
 
   private void setupLayout() {
+    tabbedPane.putClientProperty(Options.NO_CONTENT_BORDER_KEY, Boolean.TRUE);
     fillMenu();
     createToolBar();
     getContentPane().setLayout(gbl);
@@ -675,7 +650,7 @@ public JabRefPreferences prefs() {
     con.weightx = 1;
     con.weighty = 0;
     con.gridwidth = GridBagConstraints.REMAINDER;
-    mb.setMinimumSize(mb.getPreferredSize());
+
     //gbl.setConstraints(mb, con);
     //getContentPane().add(mb);
     setJMenuBar(mb);
@@ -736,7 +711,12 @@ public JabRefPreferences prefs() {
     getContentPane().add(status);
 
 
-
+      // Drag and drop for tabbedPane:
+      TransferHandler xfer = new EntryTableTransferHandler(null, this);
+      tabbedPane.setTransferHandler(xfer);
+      tlb.setTransferHandler(xfer);
+      mb.setTransferHandler(xfer);
+      sidePaneManager.getPanel().setTransferHandler(xfer);
   }
 
   private void initLabelMaker() {
@@ -816,37 +796,55 @@ public JabRefPreferences prefs() {
     }
 
     public GeneralAction(String command, String text,
-                         String description, URL icon,
+                         String description, String imageName,
                          KeyStroke key) {
-      super(new ImageIcon(icon));
+      super(GUIGlobals.getImage(imageName));
       this.command = command;
       putValue(NAME, text);
       putValue(ACCELERATOR_KEY, key);
       putValue(SHORT_DESCRIPTION, Globals.lang(description));
     }
 
-    public GeneralAction(String command, String text) {
-      putValue(NAME, text);
-      this.command = command;
-    }
+      public GeneralAction(String command, String text) {
+          putValue(NAME, text);
+          this.command = command;
+      }
 
-    public GeneralAction(String command, String text, KeyStroke key) {
-      this.command = command;
-      putValue(NAME, text);
-      putValue(ACCELERATOR_KEY, key);
-    }
+      public GeneralAction(String command, String text, KeyStroke key) {
+          this.command = command;
+          putValue(NAME, text);
+          putValue(ACCELERATOR_KEY, key);
+      }
 
-    public GeneralAction(String command, String text, String description) {
-      this.command = command;
-      putValue(NAME, text);
-      putValue(SHORT_DESCRIPTION, Globals.lang(description));
-    }
-    public GeneralAction(String command, String text, String description, KeyStroke key) {
+      public GeneralAction(String command, String text, String description) {
+          this.command = command;
+          ImageIcon icon = GUIGlobals.getImage(command);
+          if (icon != null)
+              putValue(SMALL_ICON, icon);
+          putValue(NAME, text);
+          putValue(SHORT_DESCRIPTION, Globals.lang(description));
+      }
+
+      public GeneralAction(String command, String text, String description, KeyStroke key) {
+          this.command = command;
+          ImageIcon icon = GUIGlobals.getImage(command);
+          if (icon != null)
+              putValue(SMALL_ICON, icon);
+          putValue(NAME, text);
+          putValue(SHORT_DESCRIPTION, Globals.lang(description));
+          putValue(ACCELERATOR_KEY, key);
+      }
+
+  /*    public GeneralAction(String command, String text, String description,
+                           URL imageUrl, KeyStroke key) {
       this.command = command;
+        ImageIcon icon = GUIGlobals.getImage(command);
+        if (icon != null)
+            putValue(SMALL_ICON, icon);
       putValue(NAME, text);
       putValue(SHORT_DESCRIPTION, Globals.lang(description));
         putValue(ACCELERATOR_KEY, key);
-    }
+    }*/
 
     public void actionPerformed(ActionEvent e) {
       if (tabbedPane.getTabCount() > 0) {
@@ -899,7 +897,7 @@ public JabRefPreferences prefs() {
 
     public NewEntryAction(KeyStroke key) {
       // This action leads to a dialog asking for entry type.
-      super(new ImageIcon(GUIGlobals.addIconFile));
+      super(GUIGlobals.getImage("add"));
       putValue(NAME, "New entry");
       putValue(ACCELERATOR_KEY, key);
       putValue(SHORT_DESCRIPTION, Globals.lang("New BibTeX entry"));
@@ -1569,7 +1567,7 @@ public JabRefPreferences prefs() {
   class CloseDatabaseAction
       extends MnemonicAwareAction {
     public CloseDatabaseAction() {
-        super(new ImageIcon(GUIGlobals.closeIconFile));
+        super(GUIGlobals.getImage("close"));
         putValue(NAME, "Close database");
         putValue(SHORT_DESCRIPTION,
                  Globals.lang("Close the current database"));
@@ -1630,7 +1628,7 @@ public JabRefPreferences prefs() {
   class NewDatabaseAction
       extends MnemonicAwareAction {
     public NewDatabaseAction() {
-        super(new ImageIcon(GUIGlobals.newIconFile));
+        super(GUIGlobals.getImage("new"));
         putValue(NAME, "New database");
         putValue(SHORT_DESCRIPTION, Globals.lang("New BibTeX database"));
         //putValue(MNEMONIC_KEY, GUIGlobals.newKeyCode);
@@ -1648,7 +1646,7 @@ class ImportCiteSeerAction
         extends MnemonicAwareAction {
 
     public ImportCiteSeerAction() {
-        super(new ImageIcon(GUIGlobals.wwwCiteSeerIcon));
+        super(GUIGlobals.getImage("citeseer"));
         putValue(NAME, "Import Fields from CiteSeer");
         putValue(SHORT_DESCRIPTION, Globals.lang("Import Fields from CiteSeer Database"));
         putValue(ACCELERATOR_KEY, prefs.getKey("Import Fields from CiteSeer")); // Key defined in MenuTitles!
@@ -1727,7 +1725,7 @@ class FetchCiteSeerAction
         extends MnemonicAwareAction {
 
                 public FetchCiteSeerAction() {
-                    super(new ImageIcon(GUIGlobals.wwwCiteSeerIcon));
+                    super(GUIGlobals.getImage("citeseer"));
                     putValue(NAME, "Fetch citations from CiteSeer");
 
                     putValue(SHORT_DESCRIPTION, Globals.lang("Fetch Articles Citing your Database"));
@@ -1801,7 +1799,7 @@ class FetchCiteSeerAction
     {
       public NewSubDatabaseAction()
       {
-        super(new ImageIcon( GUIGlobals.newBibFile));
+        super(GUIGlobals.getImage("new"));
         putValue(NAME, "New subdatabase based on AUX file" );
         putValue( SHORT_DESCRIPTION, Globals.lang( "New BibTeX subdatabase" ) ) ;
             //putValue(MNEMONIC_KEY, GUIGlobals.newKeyCode);
@@ -1840,7 +1838,7 @@ class FetchCiteSeerAction
       public IntegrityCheckAction()
       {
         super(Globals.menuTitle("Integrity check"),
-               new ImageIcon( GUIGlobals.integrityCheck ) ) ;
+               GUIGlobals.getImage("integrityCheck")) ;
                //putValue( SHORT_DESCRIPTION, "integrity" ) ;  //Globals.lang( "integrity" ) ) ;
             //putValue(MNEMONIC_KEY, GUIGlobals.newKeyCode);
       }
@@ -1866,7 +1864,7 @@ class FetchCiteSeerAction
   class FetchMedlineAction
       extends MnemonicAwareAction {
     public FetchMedlineAction() {
-      super(new ImageIcon(GUIGlobals.fetchMedlineIcon));
+      super(GUIGlobals.getImage("medline"));
       putValue(NAME, "Fetch Medline");
       putValue(ACCELERATOR_KEY, prefs.getKey("Fetch Medline"));
       putValue(SHORT_DESCRIPTION, Globals.lang("Fetch Medline by ID"));
@@ -1888,7 +1886,7 @@ class FetchCiteSeerAction
   class CiteSeerPanelAction
       extends MnemonicAwareAction {
     public CiteSeerPanelAction() {
-      super(new ImageIcon(GUIGlobals.fetchMedlineIcon));
+      super(GUIGlobals.getImage("medline"));
       putValue(NAME, "Fetch CiteSeer");
       //System.out.println(Globals.menuTitle("Fetch CiteSeer"));
       putValue(ACCELERATOR_KEY, prefs.getKey("Fetch CiteSeer"));
@@ -1905,34 +1903,13 @@ class FetchCiteSeerAction
 
   }
 
-    /*class FetchAuthorMedlineAction
-      extends AbstractAction {
-    public FetchAuthorMedlineAction() {
-      super(Globals.lang("Fetch Medline by author"),
-            new ImageIcon(GUIGlobals.fetchMedlineIcon));
-      putValue(SHORT_DESCRIPTION, Globals.lang("Fetch Medline by author"));
-    }
-
-    public void actionPerformed(ActionEvent e) {
-      if (tabbedPane.getTabCount() > 0) {
-        for (int i = 0; i < tabbedPane.getTabCount(); i++) {
-          ( (BasePanel) tabbedPane.getComponentAt(i)).sidePaneManager.
-              ensureVisible("fetchAuthorMedline");
-          new FocusRequester(basePanel().medlineFetcher);
-        }
-      }
-    }
-
-    }*/
-
   // The action for opening the preferences dialog.
-
   AbstractAction showPrefs = new ShowPrefsAction();
 
   class ShowPrefsAction
       extends MnemonicAwareAction {
     public ShowPrefsAction() {
-      super(new ImageIcon(GUIGlobals.prefsIconFile));
+      super(GUIGlobals.getImage("preferences"));
       putValue(NAME, "Preferences");
       putValue(SHORT_DESCRIPTION, Globals.lang("Preferences"));
     }
@@ -2306,7 +2283,7 @@ class FetchCiteSeerAction
 class SaveSessionAction
       extends MnemonicAwareAction {
     public SaveSessionAction() {
-      super(new ImageIcon(GUIGlobals.saveIconFile));
+      super(GUIGlobals.getImage("save"));
       putValue(NAME, "Save session");
       putValue(ACCELERATOR_KEY, prefs.getKey("Save session"));
     }
@@ -2415,7 +2392,7 @@ class SaveSessionAction
       extends MnemonicAwareAction {
       boolean running = false;
     public LoadSessionAction() {
-      super(new ImageIcon(GUIGlobals.openIconFile));
+      super(GUIGlobals.getImage("loadSession"));
       putValue(NAME, "Load session");
       putValue(ACCELERATOR_KEY, prefs.getKey("Load session"));
     }
index 6e5199ade4a92eac44e84396604389cd826a6320..1a6d56ff91fe2a2c8a76bd4842e435265a21a25c 100644 (file)
@@ -193,6 +193,9 @@ public class JabRefPreferences {
         defaults.put("generalFields", "crossref;keywords;doi;url;urldate;citeseerurl;"+
                      "pdf;comment;owner");
 
+        defaults.put("useCustomIconTheme", Boolean.FALSE);
+        defaults.put("customIconThemeFile", "/home/alver/div/crystaltheme_16/Icons.properties");
+
     // Entry editor tab 0:
     defaults.put(CUSTOM_TAB_NAME+"_def0", Globals.lang("General"));
         defaults.put(CUSTOM_TAB_FIELDS+"_def0", "crossref;keywords;doi;url;citeseerurl;"+
@@ -211,6 +214,7 @@ public class JabRefPreferences {
         defaults.put("fontFamily", "Times");
         defaults.put("fontStyle", new Integer(java.awt.Font.PLAIN));
         defaults.put("fontSize", new Integer(12));
+        defaults.put("overrideDefaultFonts", Boolean.FALSE);
         defaults.put("menuFontFamily", "Times");
         defaults.put("menuFontStyle", new Integer(java.awt.Font.PLAIN));
         defaults.put("menuFontSize", new Integer(11));
@@ -299,6 +303,8 @@ public class JabRefPreferences {
         defaults.put("externalJournalLists", null);
         defaults.put("citeCommand", "cite");
         defaults.put("floatMarkedEntries", Boolean.TRUE);
+
+        defaults.put("useNativeFileDialogOnMac", Boolean.TRUE);
         
         //defaults.put("tempDir", System.getProperty("java.io.tmpdir"));
         //Util.pr(System.getProperty("java.io.tempdir"));
index 807f1018978fd2c5efceaad31bc9c114b466f31a..ac2e899214e65bf428c450bb50a0a1066f4dedab 100644 (file)
@@ -180,7 +180,7 @@ public class PreambleEditor extends JDialog {
     UndoAction undoAction = new UndoAction();
     class UndoAction extends AbstractAction {
        public UndoAction() {
-           super("Undo", new ImageIcon(GUIGlobals.undoIconFile));
+           super("Undo", GUIGlobals.getImage("undo"));
            putValue(SHORT_DESCRIPTION, "Undo");
        }
        public void actionPerformed(ActionEvent e) {
@@ -193,7 +193,7 @@ public class PreambleEditor extends JDialog {
     RedoAction redoAction = new RedoAction();
     class RedoAction extends AbstractAction {
        public RedoAction() {
-           super("Undo", new ImageIcon(GUIGlobals.redoIconFile));
+           super("Undo", GUIGlobals.getImage("redo"));
            putValue(SHORT_DESCRIPTION, "Redo");
        }
        public void actionPerformed(ActionEvent e) {
index 785586d326eecbc64d7d2cd9444a98bfa742f24f..ff20ac546038b1501af993225337886d01a3ae37 100644 (file)
@@ -37,6 +37,7 @@ import javax.swing.event.*;
 
 import net.sf.jabref.groups.GroupsPrefsTab;
 import net.sf.jabref.gui.MainTable;
+import com.jgoodies.forms.builder.ButtonBarBuilder;
 
 /**
  * Preferences dialog. Contains a TabbedPane, and tabs will be defined
@@ -99,15 +100,13 @@ public class PrefsDialog3 extends JDialog {
     al.add(KEY);
     //al.add(JOU);
     al.add(PRE);
-
+    al.add(ADV);
     main.setLayout(cardLayout);
 
         main.add(new GeneralTab(frame, _prefs), GEN);
-    if (!Globals.ON_MAC) {
-        al.add(ADV);
-        main.add(new AdvancedTab(_prefs, parent.helpDiag), ADV);
-    }
 
+        main.add(new AdvancedTab(_prefs, parent.helpDiag), ADV);
+    
 
 
 
@@ -153,20 +152,21 @@ public class PrefsDialog3 extends JDialog {
     upper.add(two, BorderLayout.WEST);
     upper.add(main, BorderLayout.CENTER);
 
-    // Add all panels to main panel:
-    //for (Iterator i=panels.entrySet().iterator(); i.hasNext();) {
-
-
-    //}
-
+    
         JButton
             ok = new JButton(Globals.lang("Ok")),
             cancel = new JButton(Globals.lang("Cancel"));
         ok.addActionListener(new OkAction());
         CancelAction cancelAction = new CancelAction();
         cancel.addActionListener(cancelAction);
-        lower.add(ok);
-        lower.add(cancel);
+        lower.setBorder(BorderFactory.createEmptyBorder(2,2,2,2));
+        ButtonBarBuilder bb = new ButtonBarBuilder(lower);
+        bb.addGlue();
+        bb.addGridded(ok);
+        bb.addGridded(cancel);
+        bb.addGlue();
+        //lower.add(ok);
+        //lower.add(cancel);
 
         // Key bindings:
         ActionMap am = chooser.getActionMap();
index fdfcced16b10e52399c1c415edd6884d34a04b6a..fe8c9ec0b3023226a5094bac0823fce63d65daa3 100644 (file)
@@ -64,21 +64,21 @@ public class RightClickMenu extends JPopupMenu
 
         addPopupMenuListener(this);
 
-        add(new AbstractAction(Globals.lang("Copy"), new ImageIcon(GUIGlobals.copyIconFile)) {
+        add(new AbstractAction(Globals.lang("Copy"), GUIGlobals.getImage("copy")) {
                 public void actionPerformed(ActionEvent e) {
                     try {
                         panel.runCommand("copy");
                     } catch (Throwable ex) {}
                 }
             });
-        add(new AbstractAction(Globals.lang("Paste"), new ImageIcon(GUIGlobals.pasteIconFile)) {
+        add(new AbstractAction(Globals.lang("Paste"), GUIGlobals.getImage("paste")) {
                 public void actionPerformed(ActionEvent e) {
                     try {
                         panel.runCommand("paste");
                     } catch (Throwable ex) {}
                 }
             });
-        add(new AbstractAction(Globals.lang("Cut"), new ImageIcon(GUIGlobals.cutIconFile)) {
+        add(new AbstractAction(Globals.lang("Cut"), GUIGlobals.getImage("cut")) {
                 public void actionPerformed(ActionEvent e) {
                     try {
                         panel.runCommand("cut");
@@ -86,7 +86,7 @@ public class RightClickMenu extends JPopupMenu
                 }
             });
 
-        add(new AbstractAction(Globals.lang("Delete"), new ImageIcon(GUIGlobals.removeIconFile)) {
+        add(new AbstractAction(Globals.lang("Delete"), GUIGlobals.getImage("delete")) {
                 public void actionPerformed(ActionEvent e) {
                     /*SwingUtilities.invokeLater(new Runnable () {
                         public void run() {*/
@@ -110,14 +110,14 @@ public class RightClickMenu extends JPopupMenu
             addSeparator();
 
         if (multiple) {
-          add(new AbstractAction(Globals.lang("Mark entries"), new ImageIcon(GUIGlobals.markIcon)) {
+          add(new AbstractAction(Globals.lang("Mark entries"), GUIGlobals.getImage("markEntries")) {
             public void actionPerformed(ActionEvent e) {
               try {
                 panel.runCommand("markEntries");
               } catch (Throwable ex) {}
             }
           });
-          add(new AbstractAction(Globals.lang("Unmark entries"), new ImageIcon(GUIGlobals.unmarkIcon)) {
+          add(new AbstractAction(Globals.lang("Unmark entries"), GUIGlobals.getImage("unmarkEntries")) {
             public void actionPerformed(ActionEvent e) {
               try {
                 panel.runCommand("unmarkEntries");
@@ -127,7 +127,7 @@ public class RightClickMenu extends JPopupMenu
           addSeparator();
         } else if (be != null) {
           if (be.getField(BibtexFields.MARKED) == null)
-            add(new AbstractAction(Globals.lang("Mark entry"), new ImageIcon(GUIGlobals.markIcon)) {
+            add(new AbstractAction(Globals.lang("Mark entry"), GUIGlobals.getImage("markEntries")) {
                public void actionPerformed(ActionEvent e) {
                  try {
                    panel.runCommand("markEntries");
@@ -135,7 +135,7 @@ public class RightClickMenu extends JPopupMenu
                }
              });
            else
-             add(new AbstractAction(Globals.lang("Unmark entry"), new ImageIcon(GUIGlobals.unmarkIcon)) {
+             add(new AbstractAction(Globals.lang("Unmark entry"), GUIGlobals.getImage("unmarkEntries")) {
                public void actionPerformed(ActionEvent e) {
                  try {
                    panel.runCommand("unmarkEntries");
@@ -145,7 +145,7 @@ public class RightClickMenu extends JPopupMenu
            addSeparator();
         }
 
-        add(new AbstractAction(Globals.lang("Open PDF or PS"), new ImageIcon(GUIGlobals.pdfIcon)) {
+        add(new AbstractAction(Globals.lang("Open PDF or PS"), GUIGlobals.getImage("openFile")) {
                 public void actionPerformed(ActionEvent e) {
                     try {
                         panel.runCommand("openFile");
@@ -153,7 +153,7 @@ public class RightClickMenu extends JPopupMenu
                 }
             });
 
-            add(new AbstractAction(Globals.lang("Open URL or DOI"), new ImageIcon(GUIGlobals.wwwIcon)) {
+            add(new AbstractAction(Globals.lang("Open URL or DOI"), GUIGlobals.getImage("www")) {
               public void actionPerformed(ActionEvent e) {
                 try {
                   panel.runCommand("openUrl");
@@ -161,7 +161,7 @@ public class RightClickMenu extends JPopupMenu
               }
             });
 
-        add(new AbstractAction(Globals.lang("Copy BibTeX key"), new ImageIcon(GUIGlobals.copyKeyIconFile)) {
+        add(new AbstractAction(Globals.lang("Copy BibTeX key")) {
                 public void actionPerformed(ActionEvent e) {
                     try {
                         panel.runCommand("copyKey");
@@ -169,7 +169,7 @@ public class RightClickMenu extends JPopupMenu
                 }
             });
 
-        add(new AbstractAction(Globals.lang("Copy")+" \\cite{"+Globals.lang("BibTeX key")+"}", new ImageIcon(GUIGlobals.copyKeyIconFile)) {
+        add(new AbstractAction(Globals.lang("Copy")+" \\cite{"+Globals.lang("BibTeX key")+"}") {
                 public void actionPerformed(ActionEvent e) {
                     try {
                         panel.runCommand("copyCiteKey");
@@ -299,13 +299,13 @@ public class RightClickMenu extends JPopupMenu
             if (Globals.prefs.getBoolean("groupShowIcons")) {
                     switch (group.getHierarchicalContext()) {
                     case AbstractGroup.INCLUDING:
-                            menuItem.setIcon(GUIGlobals.groupIncludingIcon);
+                            menuItem.setIcon(GUIGlobals.getImage("groupIncluding"));
                             break;
                     case AbstractGroup.REFINING:
-                            menuItem.setIcon(GUIGlobals.groupRefiningIcon);
+                            menuItem.setIcon(GUIGlobals.getImage("groupRefining"));
                             break;
                     default:
-                            menuItem.setIcon(GUIGlobals.groupRegularIcon);
+                            menuItem.setIcon(GUIGlobals.getImage("groupRegular"));
                                 break;
                     }
             }
index d2a23ef589b72407efbb39a506682ea1a7d3b8ca..f7c936dcc4a96c6cd2fbae409e41153a231f1b14 100644 (file)
@@ -54,11 +54,11 @@ class SearchManager2 extends SidePaneComponent
     //private JabRefFrame frame;
     private JTextField searchField = new JTextField("", 12);
     private JLabel lab = //new JLabel(Globals.lang("Search")+":");
-    new JLabel(new ImageIcon(GUIGlobals.searchIconFile));
+    new JLabel(GUIGlobals.getImage("search"));
     private JPopupMenu settings = new JPopupMenu();
     private JButton openset = new JButton(Globals.lang("Settings"));
     private JButton escape = new JButton(Globals.lang("Clear"));
-    private JButton help = new JButton(new ImageIcon(GUIGlobals.helpIconFile));
+    private JButton help = new JButton(GUIGlobals.getImage("help"));
     /** This button's text will be set later. */
     private JButton search = new JButton();
     private JCheckBoxMenuItem searchReq, searchOpt, searchGen,
@@ -75,7 +75,7 @@ class SearchManager2 extends SidePaneComponent
 
 
     public SearchManager2(JabRefFrame frame, SidePaneManager manager) {
-    super(manager, GUIGlobals.searchIconFile, Globals.lang("Search"));
+    super(manager, GUIGlobals.getIconUrl("search"), Globals.lang("Search"));
 
         this.frame = frame;
     incSearcher = new IncrementalSearcher(Globals.prefs);
@@ -198,7 +198,8 @@ settings.add(select);
             //search.setMargin(margin);
             escape.setMargin(margin);
             openset.setMargin(margin);
-            Dimension butDim = new Dimension(20, 20);
+            int butSize = help.getIcon().getIconHeight() + 5;
+            Dimension butDim = new Dimension(butSize, butSize);
             help.setPreferredSize(butDim);
             help.setMinimumSize(butDim);
             help.setMargin(margin);
index 2c29ef45db42a28f5912a7f8abd9f4bb087cb112..37254d7adaca7eec00b69ea0f35a4cbe63d4fb8b 100644 (file)
@@ -35,7 +35,7 @@ import java.net.URL;
 
 public class SidePaneComponent extends SimpleInternalFrame {
 
-    protected JButton close = new JButton(new ImageIcon(GUIGlobals.closeIconFile));
+    protected JButton close = new JButton(GUIGlobals.getImage("close"));
     protected boolean visible = false;
     protected SidePaneManager manager;
     protected BasePanel panel = null;
index b71d8a20159b002782300956fd445f11f0243c5f..fc6776d91f0cce1b9e859b0404306288f7bbfbc6 100644 (file)
@@ -34,7 +34,7 @@ import java.net.URL;
 
 public class SidePaneHeader extends JPanel implements ActionListener {
 
-  private JButton close = new JButton(new ImageIcon(GUIGlobals.close2IconFile));
+  private JButton close = new JButton(GUIGlobals.getImage("close2"));
     private JLabel nameLabel, imageIcon;
     private SidePaneComponent parent;
     private GridBagLayout gbl = new GridBagLayout();
index 4f5b6da1c27a70d6ba0b70f0aa4092956ad3b2af..46f06a8c629b65520bb24d2cfa2ffba1a186412e 100644 (file)
@@ -20,7 +20,7 @@ public class SplashScreen extends Window {
     
     public SplashScreen(Frame owner) {
         super(owner);
-        URL imageURL = SplashScreen.class.getResource("/images/splash-2.1beta.png");
+        URL imageURL = SplashScreen.class.getResource("/images/splash-2.1.png");
         splashImage = Toolkit.getDefaultToolkit().createImage(imageURL);
 
         // Load the image
diff --git a/src/java/net/sf/jabref/SplashScreen.java~ b/src/java/net/sf/jabref/SplashScreen.java~
new file mode 100644 (file)
index 0000000..4f5b6da
--- /dev/null
@@ -0,0 +1,110 @@
+package net.sf.jabref;
+
+//import javax.swing.*;
+import java.awt.*;
+import java.awt.event.*;
+import java.net.URL;
+
+/**
+ * <p>Title: </p>
+ * <p>Description: </p>
+ * <p>Copyright: Copyright (c) 2003</p>
+ * <p>Company: </p>
+ * @author not attributable
+ * @version 1.0
+ */
+
+public class SplashScreen extends Window {
+    private Image splashImage;
+    private boolean paintCalled = false;
+    
+    public SplashScreen(Frame owner) {
+        super(owner);
+        URL imageURL = SplashScreen.class.getResource("/images/splash-2.1beta.png");
+        splashImage = Toolkit.getDefaultToolkit().createImage(imageURL);
+
+        // Load the image
+        MediaTracker mt = new MediaTracker(this);
+        mt.addImage(splashImage,0);
+        try {
+            mt.waitForID(0);
+        } catch(InterruptedException ie) {}
+
+                                                                                
+        // Center the window on the screen.
+        int imgWidth = splashImage.getWidth(this);
+        int imgHeight = splashImage.getHeight(this);  
+
+        setSize(imgWidth, imgHeight);
+        Dimension screenDim = Toolkit.getDefaultToolkit().getScreenSize();
+        setLocation(
+            (screenDim.width - imgWidth) / 2,
+            (screenDim.height - imgHeight) / 2
+        );
+
+    }
+    
+    
+    /**
+     * Updates the display area of the window.
+     */
+    public void update(Graphics g) {
+        // Note: Since the paint method is going to draw an
+        // image that covers the complete area of the component we
+        // do not fill the component with its background color
+        // here. This avoids flickering.
+
+        g.setColor(getForeground());
+        paint(g);
+    }
+    /**
+     * Paints the image on the window.
+     */
+
+    public void paint(Graphics g) {
+        g.drawImage(splashImage, 0, 0, this);
+
+        // Notify method splash that the window
+        // has been painted.
+        if (! paintCalled) {
+            paintCalled = true;
+            synchronized (this) { notifyAll(); }
+        }
+    }
+    
+      /**
+     * Constructs and displays a SplashWindow.<p>
+     * This method is useful for startup splashs.
+     * Dispose the returned frame to get rid of the splash window.<p>
+     *
+     * @param splashImage The image to be displayed.
+     * @return Returns the frame that owns the SplashWindow.
+     */
+
+    public static Frame splash() {
+        Frame f = new Frame();
+        SplashScreen w = new SplashScreen(f);
+
+        // Show the window.
+        w.setVisible(true);
+        w.toFront();
+
+        // Note: To make sure the user gets a chance to see the
+        // splash window we wait until its paint method has been
+        // called at least once by the AWT event dispatcher thread.
+
+        // sebwills adds: However, just in case the paint method never gets called
+        // (e.g. if the splashscreen is completely obscured by an 'always on top'
+        // window of some other application), we time-out after 5 seconds.
+        if (! EventQueue.isDispatchThread()) {
+            synchronized (w) {
+                if (! w.paintCalled) {
+                    try { 
+                        w.wait(5000);
+                    } catch (InterruptedException e) {}
+                }
+            }
+        }
+        return f;
+    }
+}
index 20fd94267500e10a5433a8e765328f726d8ce123..826db1463b8cba813993948a0ebaf2c263a33913 100644 (file)
@@ -333,7 +333,7 @@ public class StringDialog extends JDialog {
        StringDialog parent;
        public NewStringAction(StringDialog parent) {
            super("New string",
-                 new ImageIcon(GUIGlobals.addIconFile));
+                 GUIGlobals.getImage("add"));
            putValue(SHORT_DESCRIPTION, Globals.lang("New string"));
            this.parent = parent;
        }
@@ -395,7 +395,7 @@ public class StringDialog extends JDialog {
        StringDialog parent;
        public StoreContentAction(StringDialog parent) {
            super("Store string",
-                 new ImageIcon(GUIGlobals.addIconFile));
+                 GUIGlobals.getImage("add"));
            putValue(SHORT_DESCRIPTION, Globals.lang("Store string"));
            this.parent = parent;
        }
@@ -408,7 +408,7 @@ public class StringDialog extends JDialog {
        StringDialog parent;
        public RemoveStringAction(StringDialog parent) {
            super("Remove selected strings",
-                 new ImageIcon(GUIGlobals.removeIconFile));
+                 GUIGlobals.getImage("remove"));
            putValue(SHORT_DESCRIPTION, Globals.lang("Remove selected strings"));
            this.parent = parent;
        }
@@ -523,7 +523,7 @@ public class StringDialog extends JDialog {
     UndoAction undoAction = new UndoAction();
     class UndoAction extends AbstractAction {
        public UndoAction() {
-           super("Undo", new ImageIcon(GUIGlobals.undoIconFile));
+           super("Undo", GUIGlobals.getImage("undo"));
            putValue(SHORT_DESCRIPTION, Globals.lang("Undo"));
        }
        public void actionPerformed(ActionEvent e) {
@@ -536,7 +536,7 @@ public class StringDialog extends JDialog {
     RedoAction redoAction = new RedoAction();
     class RedoAction extends AbstractAction {
        public RedoAction() {
-           super("Undo", new ImageIcon(GUIGlobals.redoIconFile));
+           super("Undo", GUIGlobals.getImage("redo"));
            putValue(SHORT_DESCRIPTION, Globals.lang("Redo"));
        }
        public void actionPerformed(ActionEvent e) {
index 4c1d588837c7a57d7c787c30ed19d8a37f035a21..2a2bb5d7618ffc308a6ed4fba47dc5bff52770d6 100644 (file)
@@ -238,7 +238,7 @@ public class TabLabelPattern extends JPanel implements PrefsTab{
            con.weighty = 0;
            con.anchor = GridBagConstraints.SOUTHEAST;
            con.insets = new Insets( 0,5,0,5 );
-           JButton hlb = new JButton(new ImageIcon(GUIGlobals.helpSmallIconFile));
+           JButton hlb = new JButton(GUIGlobals.getImage("helpSmall"));
            hlb.setToolTipText(Globals.lang("Help on key patterns"));
            gbl.setConstraints( hlb, con );
            add(hlb);
index 007737b4819be3c7dbd9c173229c8ad007caae3a..7cb8951e051e07470142bf5a55bd102d9eccf17c 100644 (file)
@@ -176,7 +176,7 @@ class TableColumnsTab extends JPanel implements PrefsTab {
 
     class DeleteRowAction extends AbstractAction {
         public DeleteRowAction() {
-          super("Delete row", new ImageIcon(GUIGlobals.delRowIconFile));
+          super("Delete row", GUIGlobals.getImage("remove"));
           putValue(SHORT_DESCRIPTION, Globals.lang("Delete rows"));
         }
         public void actionPerformed(ActionEvent e) {
@@ -200,7 +200,7 @@ class TableColumnsTab extends JPanel implements PrefsTab {
 
     class AddRowAction extends AbstractAction {
         public AddRowAction() {
-          super("Add row", new ImageIcon(GUIGlobals.addIconFile));
+          super("Add row", GUIGlobals.getImage("add"));
           putValue(SHORT_DESCRIPTION, Globals.lang("Insert rows"));
         }
         public void actionPerformed(ActionEvent e) {
@@ -227,7 +227,7 @@ class TableColumnsTab extends JPanel implements PrefsTab {
     class UpdateWidthsAction extends AbstractAction {
         public UpdateWidthsAction() {
           //super(Globals.lang("Update to current column widths"));
-          super(Globals.lang("Update to current column widths"), new ImageIcon(GUIGlobals.sheetIcon));
+          super(Globals.lang("Update to current column widths"));
           //putValue(SHORT_DESCRIPTION, Globals.lang("Update to current column widths"));
         }
         public void actionPerformed(ActionEvent e) {
index c57d4b56391e1c042322d345fff7faa03c390251..0f358cae8762cb75c50e06ba4dc791a1f4b93fdf 100644 (file)
@@ -54,7 +54,7 @@ public class NewAboutAction
   public NewAboutAction()
   {
     // This action leads to a dialog asking for entry type.
-    super( new ImageIcon( GUIGlobals.helpIconFile ) ) ;
+    super(GUIGlobals.getImage("about")) ;
     putValue( NAME, "About JabRef" ) ;
 //    putValue( ACCELERATOR_KEY, key ) ;
     putValue( SHORT_DESCRIPTION, Globals.lang( "About JabRef" ) ) ;
index e35d3843bf2d4d4920ebb5deaa3e4f9cd2da0337..6fd4c0d1436f5f2b5da60f74baff2cf129888d8d 100644 (file)
@@ -19,7 +19,7 @@ public class FileUpdatePanel extends SidePaneComponent implements ActionListener
 
   public FileUpdatePanel(JabRefFrame frame, BasePanel panel,
                          SidePaneManager manager, File file, ChangeScanner scanner) {
-    super(manager, GUIGlobals.saveIconFile, Globals.lang("File changed"));
+    super(manager, GUIGlobals.getIconUrl("save"), Globals.lang("File changed"));
     this.panel = panel;
     this.frame = frame;
     this.manager = manager;
index badec9f9603f5574c49fb82fa5ffc055d6c4f077..add23369a85dcfb4dea724a9b90bfb0ca8b97441 100644 (file)
@@ -34,6 +34,8 @@ import java.io.File;
 import net.sf.jabref.JabRefFrame;
 import net.sf.jabref.Util;
 import net.sf.jabref.Globals;
+import com.jgoodies.forms.builder.ButtonBarBuilder;
+import com.jgoodies.forms.layout.Sizes;
 
 /**
  * Dialog for creating or modifying custom exports.
@@ -54,7 +56,7 @@ class CustomExportDialog extends JDialog {
         browse = new JButton(Globals.lang("Browse"));
     JPanel
     main = new JPanel(),
-    opt = new JPanel();
+    buttons = new JPanel();
     private boolean ok_pressed = false;
     private Vector groups;
     private int index;
@@ -158,7 +160,6 @@ class CustomExportDialog extends JDialog {
 
     // Layout starts here.
     main.setLayout(gbl);
-    //opt.setLayout(gbl);
     main.setBorder(BorderFactory.createTitledBorder
                (BorderFactory.createEtchedBorder(),
             Globals.lang("Export properties")));
@@ -203,22 +204,15 @@ class CustomExportDialog extends JDialog {
     gbl.setConstraints(extension, con);
     main.add(extension);
 
-           // Option buttons:
-    con.gridx = GridBagConstraints.RELATIVE;
-    con.gridy = GridBagConstraints.RELATIVE;
-    con.weightx = 1;
-    con.gridwidth = 1;
-    con.anchor = GridBagConstraints.EAST;
-    con.fill = GridBagConstraints.NONE;
-    //gbl.setConstraints(ok, con);
-    opt.add(ok);
-    con.anchor = GridBagConstraints.WEST;
-    con.gridwidth = GridBagConstraints.REMAINDER;
-    //gbl.setConstraints(cancel, con);
-    opt.add(cancel);
-
+    ButtonBarBuilder bb = new ButtonBarBuilder(buttons);
+    buttons.setBorder(BorderFactory.createEmptyBorder(2,2,2,2));
+    bb.addGlue();
+    bb.addGridded(ok);
+    bb.addGridded(cancel);
+    bb.addGlue();
+    
     getContentPane().add(main, BorderLayout.CENTER);
-    getContentPane().add(opt, BorderLayout.SOUTH);
+    getContentPane().add(buttons, BorderLayout.SOUTH);
 
     //pack();
     setSize(600, 170);
index 3cc2aea805817f878e33519cb3071486d1855889..a8ed40337f39eaa3091814b3203106c6fa5b993b 100644 (file)
@@ -9,6 +9,9 @@ import java.awt.event.ActionEvent;
 import javax.swing.table.AbstractTableModel;
 import javax.swing.table.TableColumnModel;
 
+import com.jgoodies.forms.builder.ButtonBarBuilder;
+import com.jgoodies.forms.layout.Sizes;
+
 /**
  * <p>Title: </p>
  * <p>Description: </p>
@@ -27,7 +30,7 @@ public class ExportCustomizationDialog extends JDialog {
       close = new JButton(Globals.lang("Close")),
       help = new JButton(Globals.lang("Help"));
 
-  JPanel options = new JPanel(),
+  JPanel buttons = new JPanel(),
       main = new JPanel();
   JTable table;
 
@@ -115,15 +118,19 @@ public class ExportCustomizationDialog extends JDialog {
     //am.put("close", closeAction);
     main.setLayout(new BorderLayout());
     main.add(sp, BorderLayout.CENTER);
-    options.add(addExport);
-    options.add(modify);
-    options.add(remove);
-    options.add(close);
-    options.add(Box.createHorizontalStrut(5));
-    options.add(help);
+    ButtonBarBuilder bb = new ButtonBarBuilder(buttons);
+    buttons.setBorder(BorderFactory.createEmptyBorder(2,2,2,2));
+    bb.addGlue();
+    bb.addGridded(addExport);
+    bb.addGridded(modify);
+    bb.addGridded(remove);
+    bb.addGridded(close);
+    bb.addUnrelatedGap();
+    bb.addGridded(help);
+    bb.addGlue();
 
     getContentPane().add(main, BorderLayout.CENTER);
-    getContentPane().add(options, BorderLayout.SOUTH);
+    getContentPane().add(buttons, BorderLayout.SOUTH);
     pack();
     Util.placeDialog(this, frame);
     new FocusRequester(table);
index d91a10cf79eb23106ccd045a47bb61172ebb778d..516f4f1f625367e51fabcbd6ec55d12c115d3986 100644 (file)
@@ -47,6 +47,8 @@ public class SaveSession {
     }
 
     public void commit() throws SaveException {
+        if (file == null)
+            return;
         if (file.exists() && backup) {
             String name = file.getName();
             String path = file.getParent();
index bedf0f31ad525b936ae86e9b452f1117f0bd5c05..b77957b8a0e15cbe298b0e8f8de7cde6d386fb1a 100644 (file)
@@ -23,11 +23,16 @@ public class AuthorAbbreviator implements LayoutFormatter {
        public String format(String fieldText) 
        {
 
-               String[] authors = fieldText.split(" and ");
+        // It seems to me that this formatter and AuthorLastFirstAbbreviator
+        // are duplicates. Since the latter was patched to improve handling of
+        // some names, we refer the operation there:
+        return (new AuthorLastFirstAbbreviator()).format(fieldText);
+
+        /*String[] authors = fieldText.split(" and ");
 
                String abbrev = getAbbreviations(authors);
                return abbrev;
-
+        */
        }
                                
        /**
@@ -35,8 +40,7 @@ public class AuthorAbbreviator implements LayoutFormatter {
         * 
         * @param authors List of authors or editors.
         * @return the names abbreviated.
-        * @throws RequiredOrderException
-        * 
+        *
         */
        private String getAbbreviations(String[] authors)
        {
index 921269118edc2e1f87a0d61033ecb1717368321f..32d3256a6b726387cd9d6445779d89ecfa09b193 100644 (file)
-/*
- * Created on 12/10/2004
- */
 package net.sf.jabref.export.layout.format;
 
 import net.sf.jabref.export.layout.LayoutFormatter;
 
 /**
- * 
- * Uses as input the fields (author or editor) in the LastFirst format. 
+ * Uses as input the fields (author or editor) in the LastFirst format.
  * 
  * This formater enables to abbreviate the authors name in the following way:
  * 
- * Ex: Someone, Van Something will be abbreviated as Someone, V. S.
+ * Ex: Someone, Van Something will be abbreviated as Someone, V.S.
  * 
  * @author Carlos Silla
+ * @author Christopher Oezbek <oezi@oezi.de>
+ * 
+ * @version 1.0 Created on 12/10/2004
+ * @version 1.1 Fixed bug
+ *          http://sourceforge.net/tracker/index.php?func=detail&aid=1466924&group_id=92314&atid=600306
  */
 public class AuthorLastFirstAbbreviator implements LayoutFormatter {
 
-       /* (non-Javadoc)
+       /**
         * @see net.sf.jabref.export.layout.LayoutFormatter#format(java.lang.String)
         */
-       public String format(String fieldText) 
-       {
-
-        String[] authors = fieldText.split(" and ");
-
-               String abbrev = getAbbreviations(authors);
-        return (abbrev==null ? "" : abbrev);
-
+       public String format(String fieldText) {
+               try {
+                 return getAbbreviations(fieldText.split(" and "));
+               } catch(Exception e){
+            return fieldText;
+            //return "Author names must be formatted \"Last, First\" or \"Last, Jr., First\" before formatting with AuthorLastFirstAbbreviator";
+               }
        }
-                               
+
        /**
-        * Abbreviates the names in the Last First format.
-        * 
-        * @param authors List of authors or editors.
-        * @return the names abbreviated.
-        * @throws RequiredOrderException
+        * Abbreviates the names in the Last, First or Last, Jr, First format.
         * 
+        * @param authors
+        *            List of authors.
+        * @return The abbreviated names.
         */
-       private String getAbbreviations(String[] authors)
-       {
-               String s = null;
-               
-               try
-               {
-                       verifyProperFormat(authors);
-               
-                       String[] authors_abrv = new String[authors.length];
-
-                       int i = 0;
-
-                       for(i=0; i<authors.length; i++)
-                       {
-                               authors_abrv[i] = getAbbreviation(authors[i]);
-                       }
-
-                       //Faz o merge em um "unico string" usando " and " 
-                       StringBuffer sb = new StringBuffer();
+       private String getAbbreviations(String[] authors) {
+               if (authors.length == 0)
+                       return "";
 
-                       for(i=0; i<authors.length-1; i++)
-                       {
-                sb.append(authors_abrv[i]).append(" and ");
-                       }
-                       sb.append(authors_abrv[i]);
+               /*if (!isProperFormat(authors)) {
+                       return "Author names must be formatted \"Last, First\" or \"Last, Jr., First\" before formatting with AuthorLastFirstAbbreviator";
+               }*/
 
-                        s = new String(sb);            
+               for (int i = 0; i < authors.length; i++) {
+                       authors[i] = getAbbreviation(authors[i]);
                }
-               catch(Exception e)
-               {
-                    e.printStackTrace();
-                    // System.out.println(e);
-                       //System.exit(-1);
+
+               StringBuffer sb = new StringBuffer();
+
+               for (int i = 0; i < authors.length - 1; i++) {
+                       sb.append(authors[i]).append(" and ");
                }
-               
-               return s;
+               sb.append(authors[authors.length - 1]);
+
+               return sb.toString();
        }
 
        /**
-        * Method that verifies if the author names are in the Last First format.
+        * Method that verifies if the author names are in the Last, First or Last,
+        * Jr, First format.
+        * 
+        * If the name contains a space, but does not have the comma it is not in
+        * the appropriate format.
         * 
-        * @param authors List of author or editor names.
-        * @throws Exception
+        * @param authors
+        *            List of authors to verify
         */
-       private void verifyProperFormat(String[] authors) throws Exception 
-       {
-               int i = 0;
-               
-               for(i=0; i<authors.length; i++)
-               {
-                       //If the name contains a space, but does not have the comma it is not in the 
-                        // appropriate format.
-                       if((authors[i].indexOf(' ') >= 0) && (authors[i].lastIndexOf(',')==-1))
-                       {
-                System.out.println(": '"+authors[i]+"'");
-                            Exception e = new Exception("Error: names must be rearranged in Last, First format before formatted with AuthorLastFirstAbbreviator");
-                            e.printStackTrace();
-                            throw e;
+       private boolean isProperFormat(String[] authors) {
+        for (int i = 0; i < authors.length; i++) {
+                       if ((authors[i].indexOf(' ') >= 0)
+                                       && (authors[i].indexOf(',') == -1)) {
+                               return false;
                        }
+
                }
+               return true;
        }
 
        /**
+        * Abbreviates all first names of the author.
         * 
-        * Abbreviates all but the last name of the author.
-        * 
-        * @param string
+        * @param author
         * @return
         */
-       private String getAbbreviation(String string) {
-               String[] author = string.split(", ");
-                
-                // If there is no comma in the name, we return it as it is:
-               if (author.length < 2)
-                    return string;
-                
-               char c;
-               String s;
-               //Gets the name:
-               StringBuffer sb = new StringBuffer(author[0] + ", ");
-               
-               int index = author[1].indexOf(" ");
-               
-               if(index==-1) {
-                       //Its a simple name like van Something, Someone or  Something, Someone:
-                       c  = author[1].charAt(0);
-//                     System.out.println("Char c: " + c + " Name: " + author[1]);
-            sb.append(c).append(".");
+       private String getAbbreviation(String author) {
+
+               String[] parts = author.split(",");
+
+               String last, first;
+
+               switch (parts.length) {
+               case 1:
+                       // If there is no comma in the name, we return it as it is
+                       return author;
+               case 2:
+                       last = parts[0].trim();
+                       first = parts[1].trim();
+                       break;
+               case 3:
+                       last = parts[0].trim();
+                       // jr = author[1];
+                       first = parts[2].trim();
+                       break;
+               default:
+                       throw new IllegalArgumentException("Authorname contained 3 or more commas");
                }
-               else {
-                       //Its a "complex" name like van Something, Someone Something
-                       String[] nameParts = author[1].split(" ");
-                       
-                       int i = 0;
-                       
-                       for(i=0;i<nameParts.length;i++)
-                       {
-                               c = nameParts[i].charAt(0);
-       //                      System.out.println("Char c: " + c + " Name: " + nameParts[i]);
-                sb.append(c).append(".");
-                       }
+
+               StringBuffer sb = new StringBuffer();
+               sb.append(last);
+               sb.append(", ");
+
+               String[] firstNames = first.split(" ");
+               for (int i = 0; i < firstNames.length; i++) {
+                       sb.append(firstNames[i].charAt(0));
+                       sb.append('.');
                }
-               
-               //Replaces each "part of the name" for the corresponding Letter Dot Space format:
-               s = new String(sb);
-               
-               //System.out.println("The Abbreviated name is: " + s);
-               return s;
-       }       
+               return sb.toString();
+       }
 }
index e1165f76f334fe0cda313fc80ee03c4ef1dfb697..f012d608306ee861afb566abaa99359ebd3be3b1 100644 (file)
@@ -49,7 +49,7 @@ public class HTMLChars implements LayoutFormatter {
             //System.out.println("next: "+(char)c);
             String combody;
             if (c == '{') {
-              IntAndString part = getPart(field, i);
+              IntAndString part = getPart(field, i, false);
               i += part.i;
               combody = part.s;
             }
@@ -71,31 +71,62 @@ public class HTMLChars implements LayoutFormatter {
 
       }
       else {
-        //if (!incommand || ((c!='{') && !Character.isWhitespace(c)))
-        testContent: if (!incommand || (!Character.isWhitespace(c) && (c != '{')))
+        String argument = null;
+
+        if (!incommand) {
           sb.append((char)c);
-        else {
+        }
+        else if (Character.isWhitespace(c) || c == '{') {
           // First test if we are already at the end of the string.
-          if (i >= field.length()-1)
-            break testContent;
-
-          if (c == '{') {
-
-            String command = currentCommand.toString();
-            // Then test if we are dealing with a italics or bold command. If so, handle.
-            if (command.equals("emph") || command.equals("textit")) {
-              IntAndString part = getPart(field, i);
-              i += part.i;
-                sb.append("<em>").append(part.s).append("</em>");
-            }
-            else if (command.equals("textbf")) {
-              IntAndString part = getPart(field, i);
-              i += part.i;
-                sb.append("<b>").append(part.s).append("</b>");
-            }
-          } else
-            sb.append((char)c);
-
+          //if (i >= field.length()-1)
+          //  break testContent;
+
+          String command = currentCommand.toString();
+          // Then test if we are dealing with a italics or bold command.
+          // If so, handle.
+          if (command.equals("emph") || command.equals("textit")) {
+            IntAndString part = getPart(field, i, true);
+              
+            i += part.i;
+              sb.append("<em>").append(part.s).append("</em>");
+          }
+          else if (command.equals("textbf")) {
+            IntAndString part = getPart(field, i, true);
+            i += part.i;
+              sb.append("<b>").append(part.s).append("</b>");
+          }
+          else {
+            IntAndString part = getPart(field, i, true);
+            i += part.i; argument = part.s;
+          }
+        }
+        else if (c == '}') {
+          argument = "";
+        }
+        else {
+            /* TODO: this point is reached, apparently, if a command is terminated in a
+             * strange way, such as with "$\omega$". Also, the command "\&" causes us
+             * to get here. The former issue is maybe a little difficult to address, since
+             * it involves the LaTeX math mode. We don't have a complete LaTeX parser, so
+             * maybe it's better to ignore these commands?
+            */
+          //System.err.println("Unreachable code?? '"+field+"'");
+        }
+        if (argument != null) {
+          // handle common case of general latex command
+          String command  = currentCommand.toString();
+          Object result = Globals.HTMLCHARS.get(command+argument);
+          //System.out.print("command: "+command+", arg: "+argument);
+          //System.out.print(", result: ");
+          // If found, then use translated version. If not, then keep the
+          // text of the parameter intact.
+          if (result != null) {
+            //System.out.println((String)result);
+            sb.append((String)result);
+          } else {
+            //System.out.println(argument);
+            sb.append(argument);
+          }
         }
         incommand = false;
         escaped = false;
@@ -110,18 +141,27 @@ public class HTMLChars implements LayoutFormatter {
     return s.replaceAll("&|\\\\&","&amp;").replaceAll("[\\n]{1,}","<p>");//.replaceAll("--", "&mdash;");
   }
 
-  private IntAndString getPart(String text, int i) {
+  private IntAndString getPart(String text, int i, boolean terminateOnEndBraceOnly) {
     char c;
     int count = 0;//, i=index;
     StringBuffer part = new StringBuffer();
-    while ((count >= 0) && (i < text.length())) {
-      i++;
+    // advance to first char and skip wihitespace
+    i++;
+    for ( ; i < text.length() ; ++i) {
+      if (!Character.isWhitespace(text.charAt(i)))
+        break;
+    }
+    // then grab whathever is the first token (counting braces)
+    for ( ; i < text.length() ; ++i) {
       c = text.charAt(i);
-      if (c == '}')
-        count--;
+      if (!terminateOnEndBraceOnly && count == 0 && Character.isWhitespace(c)) {
+        i--; // end argument and leave whitespace for further processing
+        break;
+      }
+      if (c == '}' && --count < 0)
+        break;
       else if (c == '{')
         count++;
-
       part.append((char)c);
     }
     //System.out.println("part: "+part.toString()+"\nformatted: "+format(part.toString()));
index c6b76899ab66b3a00fddeb3b626dfc4436c4c7a3..fc6d0df7b0978db67c0aa3ad901997e8ff60c500 100644 (file)
@@ -149,23 +149,30 @@ public class ExternalFilePanel extends JPanel {
     }
 
 
-    public void downLoadFile(final String fieldName, final FieldEditor editor, final Component parent) {
-        String res =
-                JOptionPane.showInputDialog(parent,
+    public void downLoadFile(final String fieldName,
+                             final FieldEditor editor, final Component parent) {
+
+        String res = JOptionPane.showInputDialog(parent,
                         Globals.lang("Enter URL to download"));
 
         if (res != null) {
             class Downloader extends Thread {
                 String res;
+                BibtexEntry targetEntry = null;
 
                 public Downloader(String res) {
                     this.res = res;
+                    // If this panel belongs in an entry editor, note which entry is
+                    // currently shown:
+                    if (entryEditor != null)
+                        targetEntry = entryEditor.getEntry();
                 }
 
  &nb